:root{--ink: #17212b;--muted: #61707f;--paper: #fffdf7;--panel: rgba(255, 255, 255, .88);--line: rgba(23, 33, 43, .14);--sky: #dff4ff;--grass: #cbeeb4;--sun: #ffc857;--coral: #ff6b5f;--teal: #1aa6a6;--blue: #3268c8;--shadow: 0 22px 60px rgba(23, 33, 43, .18)}*{box-sizing:border-box}body{margin:0;min-height:100vh;font-family:Arial,PingFang HK,Microsoft JhengHei,sans-serif;color:var(--ink);background:linear-gradient(180deg,var(--sky) 0 58%,var(--grass) 58% 100%)}button,input,select{font:inherit}.app-shell{min-height:100vh;overflow-x:hidden;position:relative}.screen{display:none;min-height:100vh;padding:28px}.screen.active{display:grid}.setup-screen,.result-screen{place-items:center}.setup-panel,.result-panel{width:min(1120px,100%);min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:clamp(24px,4vw,48px);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.title-group{max-width:780px}.eyebrow{margin:0 0 10px;color:var(--blue);font-size:.95rem;font-weight:800}h1,h2{margin:0;font-size:clamp(2.3rem,6.2vw,6.4rem);line-height:1.02}.setup-screen h1{white-space:nowrap}.intro{color:var(--muted);font-size:clamp(1.05rem,2.1vw,1.45rem);line-height:1.45;margin:18px 0 0}.settings-grid{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:14px;margin:34px 0 18px}fieldset{min-width:0;border:1px solid var(--line);border-radius:8px;background:#ffffffbd;padding:16px}legend{padding:0 8px;font-weight:800}label{display:flex;align-items:center;gap:8px;min-height:34px;color:#233140}input[type=radio]{width:18px;height:18px;accent-color:var(--teal)}.memory-setting{grid-column:1 / -1;padding:12px 16px 16px}.memory-setting.empty{border-color:#ff6b5f9e;background:#fff2ef}.memory-row{display:flex;align-items:center;gap:16px}.memory-toggle{flex:0 0 auto;cursor:pointer}.memory-toggle input{position:absolute;opacity:0;pointer-events:none}.switch-track{position:relative;width:46px;height:26px;flex:0 0 auto;border-radius:999px;background:#a8b1ba;transition:background .18s ease}.switch-track span{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #17212b40;transition:transform .18s ease}.memory-toggle input:checked+.switch-track{background:var(--teal)}.memory-toggle input:checked+.switch-track span{transform:translate(20px)}.memory-toggle input:focus-visible+.switch-track{outline:3px solid rgba(50,104,200,.38);outline-offset:3px}.memory-status{min-width:0;flex:1;color:var(--muted);line-height:1.35}.memory-setting.empty .memory-status{color:#8f2520;font-weight:800}.memory-clear{min-height:40px;padding:0 16px;white-space:nowrap}.memory-clear:disabled{cursor:not-allowed;opacity:.45}select{width:100%;min-height:42px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);padding:0 12px}.support-card,.listen-card,.countdown,.score-chip{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:8px;background:#ffffffc2;padding:14px 16px}.support-card{justify-content:space-between;color:var(--muted)}.support-card strong{color:var(--ink)}.support-card.error{color:#8f2520;border-color:#ff6b5fa6;background:#fff2ef}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}.primary-button,.secondary-button,.icon-button{border:0;border-radius:8px;min-height:48px;cursor:pointer}.primary-button{background:var(--teal);color:#fff;font-weight:900;padding:0 26px;box-shadow:0 12px 24px #1aa6a647}.primary-button:disabled{cursor:not-allowed;opacity:.55;box-shadow:none}.secondary-button{background:#fff;color:var(--ink);border:1px solid var(--line);font-weight:800;padding:0 22px}.library-screen{align-items:start;padding:20px}.library-shell{width:min(1180px,100%);min-width:0;margin:0 auto;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:clamp(22px,4vw,42px);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.library-header{display:flex;align-items:flex-start;gap:18px}.library-header h2{font-size:clamp(2rem,4vw,3.8rem);line-height:1.05}.library-intro{margin:10px 0 0;color:var(--muted);font-size:1.05rem}.library-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:28px 0 18px}.library-stats div{border:1px solid var(--line);border-radius:8px;background:#ffffffc2;padding:16px}.library-stats span,.library-result-summary span{display:block;color:var(--muted);font-size:.9rem}.library-stats strong{display:block;margin-top:4px;font-size:clamp(1.35rem,3vw,2.35rem)}.library-toolbar{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr)) minmax(170px,1fr);align-items:end;gap:12px;padding:16px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#ffffff75}.library-toolbar label{display:grid;align-items:stretch;gap:7px}.library-toolbar label>span{color:var(--muted);font-size:.88rem;font-weight:800}.library-result-summary{min-height:42px;display:flex;flex-direction:column;justify-content:center;padding:0 4px}.library-result-summary strong{margin-top:3px;font-size:1.05rem}.library-groups{min-height:220px}.library-group{padding:24px 0;border-bottom:1px solid var(--line)}.library-group:last-child{border-bottom:0}.library-group>header{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:13px}.library-group h3{margin:0;font-size:1.2rem}.library-group>header span{color:var(--muted);font-weight:800;white-space:nowrap}.library-word-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:9px}.library-word{min-width:0;min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:10px 12px}.library-word strong{min-width:0;overflow-wrap:anywhere;font-size:1.05rem}.library-word span{flex:0 0 auto;border-radius:999px;padding:3px 7px;font-size:.72rem;font-weight:900}.library-word.read{border-color:#1aa6a675;background:#1aa6a614}.library-word.read span{color:#086d6d;background:#1aa6a629}.library-word.unread span{color:#667482;background:#61707f1f}.library-empty{min-height:220px;display:grid;place-items:center;color:var(--muted);text-align:center;font-weight:800}.game-screen{grid-template-rows:auto minmax(0,1fr) auto;gap:16px;padding:18px}.game-topbar,.game-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;z-index:5}.game-topbar p,.listen-card p,.countdown span,.score-chip span{margin:0;color:var(--muted)}.game-topbar strong,.score-chip strong,.countdown strong{font-size:clamp(1.2rem,2.8vw,2.2rem)}.icon-button{width:54px;background:#fff;border:1px solid var(--line);font-size:1.45rem}.arena{position:relative;min-height:0;border:1px solid rgba(23,33,43,.1);border-radius:8px;overflow:hidden;--drop-speed: 0;background:radial-gradient(circle at 18% 18%,rgba(255,200,87,.5),transparent 15%),linear-gradient(180deg,#ffffff73,#ffffff0f)}.arena:after{content:"";position:absolute;left:0;right:0;bottom:0;height:38%;background:linear-gradient(180deg,transparent,rgba(145,214,110,.26)),repeating-linear-gradient(90deg,rgba(23,33,43,.06) 0 2px,transparent 2px 34px);opacity:calc(.18 + var(--drop-speed) * .2);pointer-events:none}.arena.impacting{animation:arenaShake .54s ease both}.speed-lines{position:absolute;inset:36px 0 0;opacity:calc(var(--drop-speed) * .88);pointer-events:none;overflow:hidden}.speed-lines span{position:absolute;top:-24%;width:8px;height:clamp(84px,16vh,170px);border-radius:999px;background:linear-gradient(180deg,transparent,rgba(50,104,200,.26),transparent);animation:speedLineFall calc(.82s - var(--drop-speed) * .38s) linear infinite}.speed-lines span:nth-child(1){left:16%;animation-delay:-.05s}.speed-lines span:nth-child(2){left:29%;height:clamp(110px,19vh,210px);animation-delay:-.22s}.speed-lines span:nth-child(3){left:42%;animation-delay:-.38s}.speed-lines span:nth-child(4){left:58%;height:clamp(120px,22vh,240px);animation-delay:-.16s}.speed-lines span:nth-child(5){left:71%;animation-delay:-.44s}.speed-lines span:nth-child(6){left:84%;height:clamp(96px,18vh,190px);animation-delay:-.29s}.timer-track{position:absolute;top:14px;left:14px;right:14px;height:12px;border-radius:999px;overflow:hidden;background:#ffffff94}.timer-fill{width:100%;height:100%;background:linear-gradient(90deg,var(--teal),var(--sun),var(--coral));transform-origin:left center}.landing-layer,.bomb-layer,.effect-layer{position:absolute;inset:0;pointer-events:none}.landing-layer{z-index:1}.bomb-layer{z-index:2}.effect-layer{z-index:4}.bomb{position:absolute;left:50%;top:7%;--fall-progress: 0;--bomb-width: clamp(112px, 13.5vw, 182px);--word-size: clamp(1.35rem, 3.2vw, 2.75rem);width:var(--bomb-width);transform:translate(-50%);transition:opacity .18s ease;will-change:top,transform;filter:drop-shadow(0 20px 20px rgba(23,33,43,.22));isolation:isolate}.bomb:before{content:"";position:absolute;left:50%;top:-30px;width:clamp(8px,1.1vw,15px);height:calc(36px + var(--fall-progress) * 118px);border-radius:999px;transform:translate(-50%);background:linear-gradient(180deg,#3268c800,#3268c84d,#fff0);opacity:calc(.16 + var(--fall-progress) * .42);filter:blur(1.5px);z-index:-1}.bomb-countdown{position:relative;width:max-content;min-width:68px;margin:0 auto 5px;border-radius:999px;background:#fffffff0;color:#263341;border:2px solid rgba(23,33,43,.18);padding:4px 10px;text-align:center;font-size:clamp(.78rem,1.4vw,1rem);font-weight:900;line-height:1.2;box-shadow:0 5px 12px #17212b24;z-index:2}.bomb-fuse{width:42px;height:34px;margin:0 auto -4px;border-top:8px solid #4b3a2c;border-radius:70% 70% 0 0;transform-origin:center bottom;animation:fuseFlutter .26s ease-in-out infinite alternate}.bomb-fuse:after{content:"";display:block;width:16px;height:16px;margin:-16px auto 0;border-radius:50%;background:var(--sun);box-shadow:0 0 18px #ffc857eb}.bomb-body{display:grid;place-items:center;aspect-ratio:1 / 1;border-radius:50%;background:radial-gradient(circle at 30% 24%,rgba(255,255,255,.42),transparent 18%),#263341;color:#fff;border:8px solid #111820;box-shadow:0 24px 36px #17212b47;padding:22px;animation:bombPulse .72s ease-in-out infinite alternate}.bomb-body span{display:block;max-width:100%;white-space:nowrap;text-align:center;font-size:var(--word-size);font-weight:900;line-height:1.08}.bomb-word-3{--bomb-width: clamp(146px, 16vw, 210px);--word-size: clamp(1.35rem, 2.85vw, 2.55rem)}.bomb-word-4{--bomb-width: clamp(178px, 19vw, 238px);--word-size: clamp(1.3rem, 2.55vw, 2.3rem)}.bomb-word-5{--bomb-width: clamp(204px, 22vw, 270px);--word-size: clamp(1.22rem, 2.3vw, 2.05rem)}.bomb.defused,.bomb.exploded{opacity:0;transform:translate(-50%) scale(.72)}.landing-marker{position:absolute;bottom:12px;width:clamp(78px,9vw,112px);min-height:54px;transform:translate(-50%);display:grid;place-items:center;gap:2px;color:#17212b}.landing-marker:before{content:"";position:absolute;left:50%;bottom:50px;width:2px;height:34vh;transform:translate(-50%);background:linear-gradient(180deg,transparent,rgba(255,107,95,.32))}.landing-dot{width:74px;height:18px;border-radius:50%;background:radial-gradient(circle,rgba(255,107,95,.34),rgba(255,107,95,.08) 58%,transparent 70%);border:2px solid rgba(255,107,95,.52)}.landing-word{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;font-weight:800;color:#17212bb8}.landing-time{min-width:62px;border-radius:999px;background:#ffffffe6;color:#263341;border:1px solid rgba(23,33,43,.14);padding:3px 8px;text-align:center;font-size:.9rem}.landing-marker.urgent .landing-time{background:#fff2ef;color:#9e3029;border-color:#ff6b5f75;animation:urgentPulse .55s ease-in-out infinite alternate}.landing-marker.cleared{opacity:0;transform:translate(-50%) scale(.8);transition:opacity .18s ease,transform .18s ease}.effect-marker{position:absolute;width:min(42vw,360px);aspect-ratio:1 / .68;transform:translate(-50%,-50%);pointer-events:none}.effect-label{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#fff;border-radius:8px;padding:12px 18px;font-size:clamp(1.4rem,3.8vw,3.2rem);font-weight:900;white-space:nowrap;z-index:2}.effect-label.success{background:var(--teal);box-shadow:0 16px 34px #1aa6a657;animation:successPop .76s ease forwards}.effect-label.danger{background:#f04f3f;box-shadow:0 16px 46px #f04f3f75;animation:dangerPop 1.72s ease forwards}.impact-flash,.impact-ring,.impact-smoke{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.impact-flash{width:34%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fff8d9 0 22%,var(--sun) 23% 48%,var(--coral) 49% 68%,transparent 69%);animation:flashBurst .9s ease-out forwards}.impact-ring{width:16%;aspect-ratio:1;border:10px solid rgba(255,107,95,.72);border-radius:50%;animation:shockRing 1s ease-out forwards}.impact-smoke{width:26%;aspect-ratio:1;border-radius:50%;background:#525e693d;filter:blur(2px)}.effect-marker.explosion .smoke-one{animation:smokeLeft 1.95s ease-out forwards}.effect-marker.explosion .smoke-two{width:31%;animation:smokeUp 2.05s ease-out forwards}.effect-marker.explosion .smoke-three{animation:smokeRight 1.95s ease-out forwards}.pulse-dot{width:16px;height:16px;border-radius:50%;background:var(--coral);box-shadow:0 0 #ff6b5f94}.pulse-dot.listening{animation:pulse 1s infinite}.listen-card{min-width:0;flex:1}.listen-card strong{display:block;font-size:clamp(1rem,2vw,1.4rem)}.countdown,.score-chip{flex-direction:column;align-items:flex-start;min-width:118px}.result-panel{position:relative;overflow:hidden}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:28px 0}.result-stats div,.summary-columns article{border:1px solid var(--line);border-radius:8px;background:#ffffffbd;padding:18px}.result-stats span{display:block;color:var(--muted)}.result-stats strong{display:block;margin-top:6px;font-size:clamp(1.5rem,4vw,3rem)}.summary-columns{display:grid;grid-template-columns:1fr 1fr;gap:14px}.summary-columns h3{margin:0 0 12px}.word-tags{display:flex;flex-wrap:wrap;gap:8px;min-height:44px}.word-tags span{display:inline-flex;align-items:center;min-height:34px;border-radius:999px;background:#1aa6a61f;color:#0d7373;font-weight:800;padding:0 12px}.word-tags.muted span{background:#ff6b5f1f;color:#9e3029}.confetti span{position:absolute;top:-18px;width:12px;height:26px;background:var(--sun);animation:fall 2.4s linear infinite}.confetti span:nth-child(1){left:10%;animation-delay:0s}.confetti span:nth-child(2){left:28%;background:var(--teal);animation-delay:.3s}.confetti span:nth-child(3){left:47%;background:var(--coral);animation-delay:.7s}.confetti span:nth-child(4){left:62%;animation-delay:.2s}.confetti span:nth-child(5){left:78%;background:var(--blue);animation-delay:.55s}.confetti span:nth-child(6){left:91%;background:var(--teal);animation-delay:.9s}@keyframes pulse{70%{box-shadow:0 0 0 14px #ff6b5f00}to{box-shadow:0 0 #ff6b5f00}}@keyframes urgentPulse{0%{transform:scale(1)}to{transform:scale(1.08)}}@keyframes speedLineFall{0%{transform:translateY(-32vh);opacity:0}18%{opacity:1}to{transform:translateY(110vh);opacity:0}}@keyframes fuseFlutter{0%{transform:rotate(-6deg) translate(-1px)}to{transform:rotate(7deg) translate(1px)}}@keyframes bombPulse{0%{box-shadow:0 24px 36px #17212b47}to{box-shadow:0 30px 48px #17212b5c}}@keyframes arenaShake{0%,to{transform:translate(0)}18%{transform:translate(-7px,4px)}34%{transform:translate(8px,-3px)}52%{transform:translate(-5px,2px)}70%{transform:translate(4px,-1px)}}@keyframes pop{0%{opacity:0;transform:translate(-50%,-50%) scale(.72)}42%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}to{opacity:0;transform:translate(-50%,-50%) scale(1.24)}}@keyframes successPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.7)}36%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}to{opacity:0;transform:translate(-50%,-78%) scale(1)}}@keyframes dangerPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.62) rotate(-3deg)}28%{opacity:1;transform:translate(-50%,-50%) scale(1.16) rotate(2deg)}to{opacity:1;transform:translate(-50%,-50%) scale(1.04) rotate(0)}}@keyframes flashBurst{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}24%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(2.8)}}@keyframes shockRing{0%{opacity:.9;transform:translate(-50%,-50%) scale(.3)}to{opacity:0;transform:translate(-50%,-50%) scale(4.6)}}@keyframes smokeLeft{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}18%{opacity:1}to{opacity:.18;transform:translate(-180%,-28%) scale(1.9)}}@keyframes smokeUp{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}18%{opacity:1}to{opacity:.16;transform:translate(-50%,-150%) scale(2.1)}}@keyframes smokeRight{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}18%{opacity:1}to{opacity:.18;transform:translate(80%,-18%) scale(1.9)}}@keyframes fall{0%{transform:translateY(0) rotate(0);opacity:0}12%{opacity:1}to{transform:translateY(760px) rotate(430deg);opacity:0}}@media(max-width:980px){.settings-grid,.library-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:660px){.screen{padding:14px}.setup-panel,.result-panel,.library-shell{padding:20px}.setup-screen h1{font-size:clamp(1.7rem,7.6vw,3.7rem)}.settings-grid,.result-stats,.summary-columns{grid-template-columns:1fr}.library-screen{padding:10px}.library-header{gap:12px}.library-header .icon-button{width:46px;min-height:46px;flex:0 0 46px}.library-header h2{font-size:clamp(1.75rem,9vw,2.35rem)}.library-stats{gap:8px;margin-top:22px}.library-stats div{padding:11px}.library-stats span{font-size:.76rem}.library-stats strong{font-size:1.18rem}.library-toolbar{grid-template-columns:1fr;padding:14px 0;background:transparent}.library-result-summary{min-height:36px}.library-word-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.memory-row{align-items:flex-start;flex-wrap:wrap;gap:10px 14px}.memory-status{flex-basis:100%;order:3}.game-screen{padding:10px;gap:10px}.game-topbar,.game-footer{align-items:stretch}.game-footer{flex-direction:column}.countdown{flex-direction:row;justify-content:space-between}}[hidden]{display:none!important}.portal-body{min-height:100vh;background:radial-gradient(circle at 12% 8%,rgba(255,200,87,.42),transparent 22%),linear-gradient(180deg,#e8f7ff 0 46%,#d5efc4)}.login-shell{width:min(1060px,calc(100% - 32px));min-height:100vh;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);align-items:center;gap:clamp(28px,7vw,88px);padding:40px 0}.login-brand h1{margin:0;font-size:clamp(3rem,5.4vw,5.6rem);line-height:.96;letter-spacing:-.045em}.login-title-line{display:block;white-space:nowrap}.login-brand>p:last-child{max-width:600px;color:var(--muted);font-size:1.2rem;line-height:1.6}.login-card,.portal-panel,.portal-header,.subpanel{border:1px solid var(--line);background:#ffffffe6;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.login-card{border-radius:12px;padding:clamp(24px,4vw,42px)}.login-card h2,.portal-panel h2,.action-dialog h2{margin:0;font-size:clamp(1.8rem,4vw,3rem);line-height:1.08}.muted-copy,.field-help,.login-help{color:var(--muted);line-height:1.5}.stack-form{display:grid;gap:16px;margin-top:24px}.stack-form label,.inline-form label,.selection-grid label,.report-filter,.roster-toolbar label{display:grid;gap:7px}.stack-form label>span,.inline-form label>span,.selection-grid label>span,.report-filter>span,.roster-toolbar label>span{font-size:.88rem;font-weight:900;color:var(--muted)}input[type=email],input[type=password],input[type=text],input[type=number],.stack-form input:not([type=radio]):not([type=checkbox]){width:100%;min-height:46px;border:1px solid var(--line);border-radius:8px;padding:0 13px;color:var(--ink);background:#fff}.form-message{min-height:1.5em;margin-top:14px;color:var(--muted);line-height:1.45}.form-message.error,.error-text{color:#9b2f28}.form-message.success{color:#087272;font-weight:800}.dev-helper{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px;border:1px dashed rgba(50,104,200,.4);border-radius:8px;padding:12px}.dev-helper a{color:var(--blue);font-weight:800}.portal-shell{width:min(1240px,calc(100% - 32px));margin:0 auto;padding:24px 0 60px}.portal-header{display:flex;align-items:center;justify-content:space-between;gap:22px;border-radius:12px;padding:22px 26px}.portal-header h1{margin:0;font-size:clamp(1.5rem,3.5vw,2.8rem);line-height:1.1}.portal-header .eyebrow{margin-bottom:5px}.account-strip{display:flex;align-items:center;gap:14px;min-width:0}.account-strip span{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.compact{min-height:38px!important;padding:0 14px!important;font-size:.9rem}.portal-nav{display:flex;gap:6px;margin:18px 0;padding:6px;border:1px solid var(--line);border-radius:10px;background:#ffffffb8;overflow-x:auto}.portal-nav button{border:0;border-radius:7px;padding:10px 16px;background:transparent;color:var(--muted);font-weight:900;white-space:nowrap;cursor:pointer}.portal-nav button.active{background:var(--teal);color:#fff}.portal-panel{display:none;border-radius:12px;padding:clamp(22px,4vw,42px)}.portal-panel.active{display:block}.panel-heading,.report-title{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:26px}.panel-heading .eyebrow,.report-title .eyebrow{margin-bottom:6px}.sync-chip{border-radius:999px;background:#1aa6a61f;color:#087272;padding:8px 12px;font-size:.85rem;font-weight:900;cursor:pointer}.sync-chip.warning{color:#8f3d00;background:#ffc85747}.selection-grid,.management-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.selection-grid{max-width:780px}.play-mode-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(260px,.75fr);gap:16px}.play-mode-card{display:flex;min-width:0;flex-direction:column;align-items:stretch;border:1px solid var(--line);border-radius:10px;background:#f7fbfde0;padding:22px}.play-mode-card h3{margin:0;font-size:clamp(1.35rem,2.4vw,1.9rem)}.play-mode-card .muted-copy{margin:8px 0 18px}.play-mode-tag{width:fit-content;margin:0 0 8px;border-radius:999px;background:#1aa6a61f;color:#087272;padding:5px 9px;font-size:.78rem;font-weight:900}.quick-play-card{border-color:#3268c847;background:#e8f4ffc7}.quick-play-card .play-mode-tag{background:#3268c81f;color:#2859ad}.play-mode-button{width:100%;margin-top:auto}.selection-grid+.play-mode-button{margin-top:18px}.subpanel{border-radius:10px;padding:22px;box-shadow:none;background:#f7fbfde0}.subpanel h3,.report-section h3{margin:0}.roster-toolbar{display:flex;align-items:end;justify-content:space-between;gap:14px;margin:28px 0 12px}.roster-toolbar label{width:min(360px,100%)}.data-list{display:grid;gap:10px}.data-row,.teacher-row,.student-report-card{border:1px solid var(--line);border-radius:9px;background:#ffffffdb;padding:15px}.data-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.data-row div,.teacher-main{min-width:0}.data-row div span,.teacher-main>span{display:block;margin-top:4px;color:var(--muted);font-size:.88rem}.danger-button{border:1px solid rgba(190,60,50,.32);border-radius:8px;background:#fff2ef;color:#932d26;min-height:44px;padding:0 16px;font-weight:900;cursor:pointer}.empty-state,.loading-state{display:grid;place-items:center;min-height:150px;color:var(--muted);text-align:center;font-weight:800}.report-filter,.narrow-form{width:min(520px,100%)}.report-shell{margin-top:22px}.report-title{align-items:end;padding-bottom:16px;border-bottom:1px solid var(--line)}.report-title h3{margin:0;font-size:1.8rem}.report-title>span{color:var(--muted);font-size:.88rem}.metric-grid,.admin-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.metric-grid>div,.admin-summary>div{border:1px solid var(--line);border-radius:9px;background:#fffc;padding:16px}.metric-grid span,.admin-summary span{display:block;color:var(--muted);font-size:.82rem}.metric-grid strong,.admin-summary strong{display:block;margin-top:5px;font-size:1.65rem}.report-section{margin-top:30px}.table-wrap{margin-top:12px;overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:11px 10px;border-bottom:1px solid var(--line);text-align:left}th{color:var(--muted);font-size:.82rem}.review-word-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:9px;margin-top:12px}.review-word-grid>div{border:1px solid var(--line);border-radius:8px;background:#fff;padding:11px}.review-word-grid span{display:block;margin-top:4px;color:var(--muted);font-size:.78rem}.game-app-hidden{display:none}.game-identity-bar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:28px;color:var(--muted)}.result-sync{color:var(--muted);font-weight:800}.inline-form{display:grid;grid-template-columns:minmax(220px,1fr) minmax(220px,1fr) auto;align-items:end;gap:12px}.admin-summary{margin:22px 0}.teacher-row{display:grid;grid-template-columns:minmax(220px,1.2fr) minmax(280px,1fr) auto;align-items:center;gap:18px}.teacher-row.inactive{opacity:.72;background:#f0f2f4e6}.teacher-main>div{display:flex;align-items:center;gap:8px}.status-dot{width:10px;height:10px;border-radius:50%;background:#9aa4ad}.status-dot.active{background:var(--teal)}.teacher-metrics,.row-actions{display:flex;flex-wrap:wrap;gap:7px}.teacher-metrics span{border-radius:999px;background:#61707f1a;padding:5px 8px;color:var(--muted);font-size:.78rem;font-weight:800}.row-actions{justify-content:flex-end}.admin-detail-panel{min-height:500px}.student-report-card header{display:flex;justify-content:space-between;align-items:center;gap:14px}.student-report-card header span,.student-report-card header strong{display:block}.student-report-card .teacher-metrics{margin-top:12px}.action-dialog{width:min(520px,calc(100% - 28px));border:1px solid var(--line);border-radius:12px;padding:26px;box-shadow:var(--shadow)}.action-dialog::backdrop{background:#121c2673}#teacherActionFields{display:grid;gap:12px}@media(max-width:900px){.teacher-row{grid-template-columns:1fr}.row-actions{justify-content:flex-start}}@media(max-width:700px){.login-shell{grid-template-columns:1fr;align-content:center;padding:24px 0}.login-brand h1{font-size:clamp(2.35rem,11.5vw,4.2rem)}.login-brand>p:last-child{font-size:1rem}.portal-shell{width:min(100% - 18px,1240px);padding-top:9px}.portal-header,.panel-heading,.report-title,.roster-toolbar,.student-report-card header{align-items:flex-start;flex-direction:column}.portal-header{padding:18px}.account-strip{width:100%;justify-content:space-between}.portal-nav{margin:10px 0}.portal-panel{padding:20px}.selection-grid,.play-mode-grid,.management-grid,.metric-grid,.admin-summary,.inline-form{grid-template-columns:1fr}.data-row{align-items:flex-start}.game-identity-bar{align-items:flex-start;flex-direction:column}}
