*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#28372e;color:#fff8e9;font-family:system-ui,-apple-system,'Noto Sans KR',sans-serif}button,input,summary{font:inherit}button{min-width:48px;min-height:48px;cursor:pointer;border:1px solid #ffffff30;border-radius:14px;padding:12px 18px;background:#263b32e8;color:#fff8e9;font-weight:700;touch-action:manipulation}button:hover{background:#3c5345}button:disabled{cursor:wait;opacity:.6}button:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid #f7b869;outline-offset:4px}[hidden]{display:none!important}.game{position:fixed;inset:0;height:100dvh;overflow:hidden;background:#856d4f url('assets/title-classroom.png') center 55%/cover no-repeat}#viewport{position:absolute;inset:0;touch-action:none}canvas{display:block;width:100%;height:100%}.screen{position:absolute;inset:0;z-index:5}.title-screen{display:flex;align-items:center;background:linear-gradient(90deg,#132c25df 0%,#152b246e 38%,transparent 70%);padding:max(28px,env(safe-area-inset-top)) max(7vw,env(safe-area-inset-left));}.title-copy{max-width:440px}.eyebrow{text-transform:uppercase;letter-spacing:.23em;font-size:12px;font-weight:700;color:#eac68b;margin:0 0 20px}h1{position:relative;font-size:clamp(64px,8vw,116px);line-height:1.05;letter-spacing:-.075em;margin:0 0 25px;font-weight:900;text-shadow:0 4px 28px #14281d40}h1 span{color:#f2c783}h1 i{font-style:normal;font-size:.5em;vertical-align:top;margin-left:20px;color:#d79479}.subtitle{font-size:15px;line-height:1.9;color:#ede4ce;margin:0 0 30px}.primary{width:100%;display:flex;justify-content:space-between;align-items:center;background:#f1c687;color:#263a30;border:0;border-radius:12px;font-size:17px;min-height:58px}.primary:hover{background:#ffdaa4}.text-button{background:none;border:0;width:100%;font-size:13px;color:#eee3cc;margin-top:7px}#bootStatus{font-size:12px;line-height:1.6;max-width:340px;color:#ffe2bd;margin:10px 0 0}.title-caption{position:absolute;bottom:max(25px,env(safe-area-inset-bottom));right:max(35px,env(safe-area-inset-right));font-size:11px;letter-spacing:.14em;color:#fff4daca}.play-hud{position:absolute;inset:0;z-index:2;pointer-events:none;padding:max(16px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));display:flex;flex-direction:column;justify-content:space-between}.hud-top,.hud-bottom{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.turn-card{display:flex;flex-direction:column;gap:4px;background:#fff7e9ed;color:#293e33;padding:12px 18px;border-radius:14px;box-shadow:0 4px 18px #0001}#turn{font-size:14px;font-weight:800}#count{font-size:10px;color:#6c7264}.play-hud button{pointer-events:auto;box-shadow:0 4px 18px #0001}.hud-bottom{align-items:flex-end}.status-group{max-width:min(560px,65%)}#message{font-size:12px;line-height:1.6;background:#fff8eaed;color:#34483b;border-radius:12px;padding:11px 16px}.power{position:relative;width:110px;height:3px;background:#ffffff50;margin:10px 0 15px 5px}.power i{display:block;height:100%;width:0;background:#e99560}.power span{position:absolute;left:120px;top:-6px;font-size:10px;color:#fff;text-shadow:0 1px 3px #000}.camera{display:flex;gap:8px}.camera button{font-size:12px}#pause[aria-pressed=true]{background:#c97849}.pause-cue{display:none;position:absolute;top:max(96px,calc(env(safe-area-inset-top) + 80px));left:50%;transform:translateX(-50%);font-size:11px;white-space:nowrap;border-radius:30px;padding:9px 14px;background:#e8bb7ee8;color:#3c3728}.paused .pause-cue{display:block}.paused #viewport{cursor:grab}.menu-screen{display:grid;place-items:center;background:#10251fc9;backdrop-filter:blur(9px);padding:max(20px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left))}.menu-card{width:min(430px,100%);max-height:100%;overflow:auto;overscroll-behavior:contain;background:#f8f0e0;color:#2d4237;border-radius:24px;padding:24px;box-shadow:0 20px 90px #0004}.menu-heading{display:flex;align-items:center;justify-content:space-between}.menu-heading .eyebrow{color:#8c7755;margin:0}.menu-heading button{background:transparent;color:#435445;border:0;font-size:26px;padding:0}h2{font-size:28px;letter-spacing:-1px;margin:7px 0 20px}.menu-card .primary{margin-bottom:15px}.menu-card details{border-top:1px solid #2c45321c;padding:0}.menu-card summary{padding:16px 0;font-size:14px;font-weight:750;cursor:pointer;min-height:48px}.menu-card p,.menu-card li{font-size:12px;line-height:1.85;color:#667062}.menu-card ol{padding-left:20px;margin-top:0}.menu-card label{display:flex;justify-content:space-between;font-size:12px}.menu-card input{width:100%;accent-color:#52715c;min-height:40px}.menu-card output{color:#a76f42}.rule-note{background:#ece3cf;padding:10px;border-radius:8px}.menu-actions{display:flex;gap:8px;margin-top:16px}.menu-actions button{flex:1;font-size:12px}#loading{position:absolute;inset:0;z-index:4;display:grid;place-items:center;background:#233d32;color:#fff}.game[data-screen=title] #viewport{visibility:hidden}.game[data-screen=title] .play-hud{display:none}.game[data-screen=play]{background-image:none}.game[data-screen=play] .title-screen{display:none}
@media(max-width:600px){.title-screen{align-items:flex-end;padding:30px 28px max(42px,calc(env(safe-area-inset-bottom) + 28px));background:linear-gradient(0deg,#183026f5 0%,#16302685 55%,#1b2e2310 100%)}.game{background-position:60% center}.title-copy{width:100%;max-width:360px}h1{font-size:72px;margin-bottom:18px}.eyebrow{font-size:10px;margin-bottom:14px}.subtitle{font-size:12px;margin-bottom:20px}.title-caption{display:none}.play-hud{padding: max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}.hud-bottom{flex-direction:column;align-items:stretch;gap:12px}.status-group{max-width:100%}.camera{justify-content:space-between}.camera button{min-height:48px}.power{margin-bottom:5px}#message{font-size:11px;padding:9px 12px}.pause-cue{font-size:9px;padding:8px 10px}.menu-card{padding:18px;border-radius:20px}}
@media(max-height:520px) and (orientation:landscape){.title-screen{align-items:center;padding:20px 6vw;background:linear-gradient(90deg,#132c25e8,transparent)}h1{font-size:50px;margin-bottom:10px}.title-copy{width:285px}.subtitle,.title-caption{display:none}.eyebrow{margin-bottom:10px}.primary{min-height:48px}.text-button{margin-top:0}#bootStatus{font-size:10px;margin-top:0}.hud-bottom{flex-direction:row;align-items:flex-end}.status-group{max-width:60%}.camera{align-items:flex-end}.pause-cue{top:78px}.menu-card{padding:16px 22px}}
@media(prefers-reduced-motion:no-preference){button{transition:background .15s,opacity .15s}.title-copy{animation:arrive .7s ease both}@keyframes arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}}

.out-counts{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11px;font-weight:750;margin-top:3px}.out-counts span:first-child{color:#625c46}.out-counts span:last-child{color:#934e56}.paused .pause-cue{top:max(112px,calc(env(safe-area-inset-top) + 100px))}

.victory-overlay{position:absolute;inset:0;display:grid;place-items:center;padding:24px;pointer-events:none;background:radial-gradient(ellipse at center,#18382bcf 0%,#18382b70 38%,transparent 72%);z-index:3}.chalk-result{position:relative;text-align:center;width:min(520px,100%);padding:28px 24px;color:#fff9df;pointer-events:auto;text-shadow:1px 1px 0 #edf2db80,-1px 0 0 #fff9e24d}.chalk-eyebrow{font-size:11px;letter-spacing:.25em;margin:0 0 12px;color:#e0ddbf}.chalk-result h2{font-family:'Nanum Pen Script','휴먼편지체','Apple SD Gothic Neo',cursive,system-ui;font-size:clamp(38px,7vw,74px);font-weight:800;letter-spacing:-.055em;line-height:1.25;margin:0;transform:rotate(-3deg);color:#fffbe7;text-shadow:1px 0 #fff7d599,-1px 1px #fffdf070,2px 3px 0 #b8d0b530}.chalk-result h2::after{content:'';display:block;position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(9deg,transparent 0 3px,#27463835 3px 4px);mix-blend-mode:multiply}.chalk-stroke{width:80%;height:23px;overflow:visible;transform:rotate(-2deg)}.chalk-stroke path{fill:none;stroke:#e9e5c5;stroke-width:2.3;stroke-linecap:round;stroke-dasharray:26 1 12 2;opacity:.8}.chalk-star{position:absolute;right:3%;top:0;font-size:44px;color:#e8c587;transform:rotate(15deg)}#victoryReason{font-size:13px;line-height:1.7;color:#e9e8d5;margin:10px 0 22px}.chalk-result .primary{max-width:250px;margin:auto;min-height:56px;box-shadow:0 4px 20px #081b2340;pointer-events:auto}.chalk-note{font-size:10px;color:#d5dfcf;margin:12px 0 0}.game.paused:has(.victory-overlay:not([hidden])) .pause-cue{display:none}
@media(prefers-reduced-motion:no-preference){.victory-overlay:not([hidden]) .chalk-result{animation:chalk-arrive .5s ease-out both}.victory-overlay:not([hidden]) .chalk-stroke{animation:chalk-draw .55s .15s ease-out both}@keyframes chalk-arrive{from{opacity:0;transform:scale(.94) translateY(9px)}to{opacity:1;transform:none}}@keyframes chalk-draw{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}}
@media(max-height:520px) and (orientation:landscape){.chalk-result{padding:10px 20px}.chalk-result h2{font-size:42px}.chalk-eyebrow{margin-bottom:3px}.chalk-result .primary{min-height:48px}#victoryReason{margin:5px 0 12px}.chalk-note{margin-top:6px}.chalk-star{font-size:30px}.chalk-stroke{height:14px}}
/* A fullscreen classroom game picker, not a surrounding web page. */
.hub-screen{overflow:auto;padding:max(26px,env(safe-area-inset-top)) max(6vw,env(safe-area-inset-left)) max(24px,env(safe-area-inset-bottom));background:linear-gradient(110deg,#122d27ed,#18342ad9 65%,#18342a88);display:flex;flex-direction:column;justify-content:center;gap:20px}.hub-heading{max-width:880px;width:100%;margin:0 auto}.hub-heading .eyebrow{margin-bottom:12px}.hub-heading h1{font-size:clamp(36px,6vw,70px);margin:0 0 14px;letter-spacing:-.055em}.hub-heading h1 span{display:inline-block;font-size:14px;letter-spacing:.08em;margin-left:22px;vertical-align:middle;color:#e6c99c}.hub-heading p{font-size:14px;color:#ded6bd;margin:0}.game-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;width:100%;max-width:880px;margin:0 auto}.game-tile{min-height:142px;text-align:left;display:flex;flex-direction:column;justify-content:center;gap:8px;background:#f5efde0a;border:1px solid #eee4cd30;border-radius:5px;padding:20px;box-shadow:inset 0 0 0 3px #eee4cd04}.game-tile:disabled{cursor:not-allowed;opacity:.65}.game-tile.ready{background:#ead8b9;color:#263d31;border-color:#f6deb6;box-shadow:0 8px 24px #091c1b35;transform:rotate(-.6deg)}.game-tile.ready:hover{background:#f6e4c7}.tile-icon{font-size:32px;line-height:1;color:#d6bc8e}.ready .tile-icon{color:#8f6050}.tile-name{font-size:18px;font-weight:800}.game-tile small{font-size:12px;font-weight:500;color:#cfccb7}.ready small{color:#53634f}.hub-note{max-width:880px;width:100%;margin:0 auto;color:#c3c8b4;font-size:12px}.back-hub{position:absolute;top:max(18px,env(safe-area-inset-top));left:max(20px,env(safe-area-inset-left));background:#1b3428a8;font-size:13px}.cosmetic-previews{display:flex;gap:20px;justify-content:center;padding:20px 4px}.cosmetic-previews>div{text-align:center}.eraser-preview{width:112px;height:51px;background-color:var(--rubber,#f2ead8);border-radius:7px;box-shadow:inset 0 -9px #00000012,inset 0 3px #ffffff4a,3px 7px 0 #1a2b231a;transform:rotate(-10deg);margin:4px 0 14px;background-image:var(--pattern,none)}.eraser-preview[data-pattern=stripe]{--pattern:repeating-linear-gradient(115deg,transparent 0 13px,#ffffff80 13px 20px)}.eraser-preview[data-pattern=dots]{--pattern:radial-gradient(#ffffffa0 2px,transparent 3px);background-size:14px 14px}.menu-card select{width:100%;min-height:44px;border:1px solid #60736050;border-radius:8px;background:#fff9eb;color:#263b32;padding:8px;margin:6px 0 12px;font:inherit}.menu-card input[type=color]{height:46px;padding:4px;cursor:pointer}.menu-card label{display:block;margin-top:8px}.menu-card details .text-button{color:#44654e;min-height:44px}.cosmetic-previews small{color:#52614b;font-weight:700}
@media(max-width:600px){.hub-screen{justify-content:flex-start;padding-top:max(28px,env(safe-area-inset-top));gap:18px}.hub-heading h1 span{display:block;margin:12px 0 0}.game-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.game-tile{min-height:127px;padding:16px}.tile-name{font-size:15px}.hub-heading h1{font-size:46px}.hub-note{line-height:1.6}.title-copy{padding-top:42px}.title-caption{max-width:75%}}
@media(orientation:landscape) and (max-height:520px){.hub-screen{justify-content:flex-start;padding-top:18px;gap:12px}.hub-heading h1{font-size:32px;margin-bottom:8px}.hub-heading .eyebrow{display:none}.game-tile{min-height:100px;padding:12px}.tile-icon{font-size:23px}.game-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.hub-note{font-size:11px}.back-hub{top:8px;font-size:11px;min-height:40px}.title-copy{padding-top:16px}}
.eraser-preview{background-image:var(--pattern,none),linear-gradient(var(--tint,#ffffff00),var(--tint,#ffffff00)),var(--rubber-texture);background-blend-mode:normal,multiply,normal;background-size:auto,cover,cover}.eraser-preview[data-pattern=stripe]{--pattern:repeating-linear-gradient(115deg,transparent 0 8px,#fff8e84d 8px 10px)}.eraser-preview[data-pattern=dots]{--pattern:radial-gradient(#fff8e84d 1px,transparent 1.3px);background-size:7px 7px,cover,cover}
.cosmetic-swatches{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:6px 0 14px}.cosmetic-swatches button{min-width:0;min-height:44px;border-radius:10px;background:var(--swatch);color:#20342d;padding:8px;font-size:12px;border:1px solid #263a3033}.cosmetic-swatches button:hover{filter:brightness(1.08)}

/* Shared classroom: no alternate room image once the 3D scene is ready. */
.game[data-assets-ready="true"] .hub-screen,.game[data-assets-ready="true"] .title-screen{background:linear-gradient(90deg,rgba(20,34,27,.74),rgba(20,34,27,.12))}
.gomoku-hud{position:absolute;inset:0;pointer-events:none;padding:max(12px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));display:flex;flex-direction:column;justify-content:space-between;color:#fff9dd}.gomoku-hud[hidden]{display:none}.gomoku-hud header{display:flex;justify-content:space-between;gap:12px}.gomoku-hud h2{margin:4px 0;font-size:clamp(20px,4vw,32px)}.gomoku-hud footer{text-align:center;background:rgba(22,41,32,.88);padding:10px;border-radius:16px;align-self:center}.gomoku-hud button{pointer-events:auto;min-height:44px;min-width:64px;margin:3px;border:1px solid #9daf93;background:#314b3b;color:#fff9dd;border-radius:12px;padding:8px 14px}.gomoku-hud #gomokuPlace{background:#e8d596;color:#24362d;font-weight:800}.gomoku-hud button:disabled{opacity:.5}.gomoku-hud p{margin:0 0 6px}.gomoku-hud small{font-size:11px}#travelCue{display:none;position:absolute;bottom:24px;left:50%;transform:translateX(-50%);background:#23372be8;color:#fff5d1;padding:12px 20px;border-radius:24px;pointer-events:none;white-space:nowrap}.transitioning #travelCue{display:block}.transitioning .screen,.transitioning .gomoku-hud,.transitioning .play-hud{visibility:hidden;pointer-events:none}.transitioning #viewport{pointer-events:none}
@media(max-height:500px){.gomoku-hud footer{align-self:flex-end;max-width:210px}.gomoku-hud small{display:none}.gomoku-hud h2{font-size:20px}}

.game[data-assets-ready="true"] #viewport{visibility:visible}

@media (any-pointer:fine){.game[data-game-view="gomoku"] #viewport{cursor:url("assets/chalk-cursor.svg") 4 28,crosshair}}
.gomoku-hud footer{max-width:min(640px,100%)}.gomoku-hud small{display:block;max-width:580px;line-height:1.5}
@media(max-height:500px){.gomoku-hud footer{max-width:230px}.gomoku-hud small{display:none}}
