@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/Inter-variable-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/Inter-variable-latin-ext.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/Inter-variable-cyrillic.woff2) format("woff2");unicode-range:U+0400-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/Inter-variable-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Lexend;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/Lexend-variable-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Lexend;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/Lexend-variable-latin-ext.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Lexend;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/Lexend-variable-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url(/fonts/Nunito-variable-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url(/fonts/Nunito-variable-latin-ext.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url(/fonts/Nunito-variable-cyrillic.woff2) format("woff2");unicode-range:U+0400-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url(/fonts/Nunito-variable-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fredoka;font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/Fredoka-variable-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fredoka;font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/Fredoka-variable-latin-ext.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fredoka;font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/Fredoka-variable-hebrew.woff2) format("woff2");unicode-range:U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}@font-face{font-family:ML-Text;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/NotoSansArabic-variable-arabic.woff2) format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0898-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE9F}@font-face{font-family:ML-Text;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/NotoSansArabic-variable-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:ML-Text;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/NotoSansArabic-variable-latin-ext.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:ML-Text;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/NotoSansDevanagari-variable-devanagari.woff2) format("woff2");unicode-range:U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:ML-Text;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/NotoSansDevanagari-variable-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:ML-Text;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/NotoSansDevanagari-variable-latin-ext.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:ML-Text;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/NotoSansEthiopic-variable-ethiopic.woff2) format("woff2");unicode-range:U+1200-137F,U+1380-1399,U+2D80-2DDF,U+AB00-AB2F,U+1E7E0-1E7FF}@font-face{font-family:ML-Text;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/NotoSansEthiopic-variable-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:ML-Text;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/NotoSansEthiopic-variable-latin-ext.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--bg-app: #FAFBFF;--bg-surface: #FFFFFF;--text-on-primary: #FFFFFF;--bg-surface-alt: #F0F1F5;--bg-inset: #E6E8EE;--surface: var(--bg-surface);--surface-2: var(--bg-surface-alt);--primary: #0074E0;--primary-hover: #005FBC;--primary-light: #E8F1FD;--scaffold: #10B981;--scaffold-hover: #0D9668;--scaffold-light: #ECFDF5;--teal: var(--scaffold);--teal-hover: var(--scaffold-hover);--teal-light: var(--scaffold-light);--accent: #F97316;--accent-hover: #EA580C;--accent-light: #FFF7ED;--amber: var(--accent);--amber-hover: var(--accent-hover);--amber-light: var(--accent-light);--success: #16A34A;--success-light: #DCFCE7;--danger: #DC2626;--danger-light: #FEE2E2;--info: #0284C7;--info-light: #E0F2FE;--suggestion-warmup-bg: #E8F1FD;--suggestion-warmup-text: #0074E0;--suggestion-partner-bg: #F3E8FF;--suggestion-partner-text: #7C3AED;--suggestion-review-bg: #ECFDF5;--suggestion-review-text: #16A34A;--suggestion-writing-bg: #FFF7ED;--suggestion-writing-text: #EA580C;--suggestion-movement-bg: #FCE7F3;--suggestion-movement-text: #DB2777;--text: #111827;--text-secondary: #4B5563;--text-muted: #9CA3AF;--border: #E5E7EB;--border-light: #F3F4F6;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 2px 8px rgba(0, 0, 0, .06);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .08);--radius-sm: 8px;--radius: 10px;--radius-lg: 14px;--tag-radius: 20px;--text-size-term: 1.3rem;--font-weight-heading: 600;--font-body: "Inter", "ML-Text", "Noto Sans", system-ui, sans-serif;--font-student: "Lexend", "ML-Text", "Noto Sans", system-ui, sans-serif;--font-teacher: "Inter", "ML-Text", "Noto Sans", system-ui, sans-serif;--font-heading-young: "Nunito", "ML-Text", system-ui, sans-serif;--font-playful: "Fredoka", "Nunito", system-ui, sans-serif;--touch-min: 44px;--bg-app-gradient: none;--status-active: #22C55E;--status-active-bg: #D1FAE5;--status-idle: #F59E0B;--status-idle-bg: #FEF3C7;--status-offline: #9CA3AF;--status-offline-bg: #F3F4F6;--status-alert: #EF4444;--status-alert-bg: #FEE2E2;--feedback-correct: #16A34A;--feedback-correct-bg: #DCFCE7;--feedback-incorrect: var(--accent);--feedback-incorrect-bg: var(--accent-light);--feedback-celebration: #A855F7;--feedback-celebration-bg: #F3E8FF;--focus-ring: 0 0 0 3px rgba(0, 116, 224, .35);--duration-fast: .15s;--duration-normal: .25s;--duration-slow: .35s;--duration-flip: .6s;--ease-default: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.175, .885, .32, 1.275);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--z-base: 0;--z-raised: 1;--z-dropdown: 10;--z-sticky: 20;--z-drawer: 30;--z-overlay: 40;--z-modal: 50;--z-popover: 60;--z-toast: 70;--z-focus-mode: 80;--z-celebration: 90;--card-bg: var(--bg-surface);--card-border: var(--border);--input-bg: var(--bg-surface);--hover-bg: var(--bg-surface-alt);--secondary: var(--scaffold);--warning: var(--accent);--warning-light: var(--accent-light)}[data-surface=student]{font-family:var(--font-student);--primary: #0074E0;--primary-hover: #005FBC;--primary-light: #E8F1FD;--bg-app: #FAFBFF;--text-muted: #6B6560;--avatar-variant-0: var(--primary);--avatar-variant-1: var(--accent);--avatar-variant-2: var(--scaffold);--avatar-variant-3: #DB2777;--avatar-badge-backing: var(--bg-surface);--student-page-background-color: #0898C4;--student-page-background-image: url(/assets/student-pattern-1x-eEHA6Bul.webp)}@supports (background-image: image-set("a.avif" type("image/avif") 1x)){[data-surface=student]{--student-page-background-image: image-set(url(/assets/student-pattern-1x-D4BmrZPN.avif) type("image/avif") 1x, url(/assets/student-pattern-2x-BVBIt2-F.avif) type("image/avif") 2x, url(/assets/student-pattern-1x-eEHA6Bul.webp) type("image/webp") 1x)}}@media (prefers-contrast: more),(forced-colors: active){[data-surface=student]{--student-page-background-color: var(--bg-app);--student-page-background-image: none}}[data-theme=dark] [data-surface=student],[data-surface=student][data-theme=dark]{--student-page-background-color: var(--bg-app);--student-page-background-image: none}[data-surface=teacher]{font-family:var(--font-teacher);--primary: #1D4ED8;--primary-hover: #1E40AF;--primary-light: #EFF6FF;--bg-app: #F8FAFC;--text-muted: #6B6560;--avatar-variant-0: var(--primary);--avatar-variant-1: var(--accent);--avatar-variant-2: var(--scaffold);--avatar-variant-3: #DB2777;--avatar-badge-backing: var(--bg-surface)}[data-surface=student][data-age-tier=k2]{--radius-sm: 12px;--radius: 16px;--radius-md: 16px;--radius-lg: 20px;--radius-xl: 24px;--tag-radius: 28px;--shadow-md: 0 4px 14px rgba(0, 116, 224, .08);--shadow-lg: 0 6px 20px rgba(0, 116, 224, .1);--text-size-term: 1.8rem;--font-weight-heading: 800;--touch-min: 56px;--btn-min-height: 64px;--btn-min-width: 160px;--btn-font-size: 1.25rem;--body-font-size: 1.25rem;--heading-font-size: 1.75rem;--card-width: 85vw;--card-max-width: 400px;--icon-size: 40px;--icon-stroke: 2.5;--interactive-gap: 24px;--line-height-body: 1.8;--border: #BFDBFE;--border-light: #DBEAFE}[data-surface=student][data-age-tier=g35]{--icon-stroke: 2}[data-surface=student][data-age-tier=g68]{--radius-sm: 4px;--radius: 6px;--radius-md: 6px;--radius-lg: 8px;--tag-radius: 12px;--text-size-term: 1.1rem;--font-weight-heading: 600;--touch-min: 40px;--btn-min-height: 40px;--btn-min-width: 96px;--btn-font-size: .9375rem;--body-font-size: 1rem;--heading-font-size: 1.375rem;--card-width: 300px;--card-max-width: 320px;--icon-size: 24px;--icon-stroke: 1.75;--interactive-gap: 12px;--line-height-body: 1.6;font-family:Inter,ML-Text,Noto Sans,system-ui,sans-serif}.icon-code-btn:active{transform:scale(.92)}.icon-code-btn:hover:not(:disabled){border-color:var(--primary);background:var(--primary-light)}.avatar-btn:active{transform:scale(.92)}.avatar-btn:hover{border-color:var(--primary);background:var(--primary-light)}.avatar-badge{--avatar-ring-width: max(3px, calc(var(--touch-min) / 14));display:inline-flex;align-items:center;justify-content:center;inline-size:var(--avatar-badge-size, 28px);block-size:var(--avatar-badge-size, 28px);flex:0 0 auto;border-radius:50%;border:var(--avatar-ring-width) solid var(--avatar-ring, var(--primary));background:var(--bg-surface);box-sizing:border-box;overflow:hidden;vertical-align:middle}.avatar-badge img{inline-size:100%;block-size:100%;border-radius:50%;object-fit:cover;display:block}.avatar-badge-fallback{font-family:var(--font-playful);font-size:calc(var(--avatar-badge-size, 28px) * .32);line-height:1;color:var(--text);padding-inline:2px;text-align:center;overflow:hidden}.avatar-btn .avatar-badge{pointer-events:none}.student-identity{display:inline-flex;align-items:center;gap:.4rem;vertical-align:middle}.student-identity .avatar-badge{--avatar-ring-width: 3px}.student-name .avatar-badge,.tab-out-alert .avatar-badge{margin-inline-end:.4rem}.tab-out-alert .avatar-badge{box-shadow:0 0 0 var(--avatar-ring-width) var(--avatar-badge-backing)}.tier-student-younger{--radius-sm: 12px;--radius: 16px;--radius-lg: 20px;--tag-radius: 28px;--text-size-term: 1.8rem;--font-weight-heading: 800;--touch-min: 56px;--border: #BFDBFE;--border-light: #DBEAFE}html[lang=ar],html[lang=fa],html[lang=ur],html[lang=ps]{font-size:1.125em}html[lang=zh],html[lang=ja],html[lang=ko]{font-size:1.1em}html:where(:not([lang=ar],[lang=fa],[lang=ur],[lang=ps])) :where([lang=ar],[lang=fa],[lang=ur],[lang=ps]){font-size:1.125em}html:where(:not([lang=ar],[lang=fa],[lang=ur],[lang=ps])) :where([lang=ar],[lang=fa],[lang=ur],[lang=ps]) :where([lang=ar],[lang=fa],[lang=ur],[lang=ps]){font-size:inherit}html:where(:not([lang=zh],[lang=ja],[lang=ko])) :where([lang=zh],[lang=ja],[lang=ko]){font-size:1.1em}html:where(:not([lang=zh],[lang=ja],[lang=ko])) :where([lang=zh],[lang=ja],[lang=ko]) :where([lang=zh],[lang=ja],[lang=ko]){font-size:inherit}:lang(ar),:lang(fa),:lang(ur),:lang(ps){direction:rtl;font-family:ML-Text,Noto Sans Arabic,system-ui,sans-serif;letter-spacing:0!important;line-height:1.8}:lang(he){direction:rtl;font-family:ML-Text,Fredoka,system-ui,sans-serif;line-height:1.7}:lang(zh),:lang(ja),:lang(ko){line-height:1.8}:lang(hi),:lang(mr),:lang(ne){font-family:ML-Text,Noto Sans Devanagari,system-ui,sans-serif;line-height:1.8}:lang(am),:lang(ti){font-family:ML-Text,Noto Sans Ethiopic,system-ui,sans-serif;line-height:1.7}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,ML-Text,Noto Sans,system-ui,sans-serif;background:var(--bg-app);min-height:100vh;color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased}.app{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4{font-weight:700;color:var(--text);line-height:1.3}h1{font-size:1.75rem}h2{font-size:1.375rem}h3{font-size:1.125rem}h4{font-size:1rem}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.container{max-width:800px;margin:0 auto;padding:2rem;width:100%}.page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;position:relative}.page>*{position:relative;z-index:1}.page[data-surface=student]:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background-color:var(--student-page-background-color);background-image:var(--student-page-background-image);background-position:center;background-size:cover;background-repeat:no-repeat}@media print{.page[data-surface=student]:after{display:none}}.page[data-surface=student] :is(.waiting-state,.loading,.game-complete,.game-header,.flashcard-header){background:var(--bg-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.page[data-surface=student] :is(.game-header,.flashcard-header){padding:.625rem .875rem}.page[data-surface=student] .instruction{background:var(--bg-surface);border-radius:var(--radius-lg);padding:.5rem 1rem;margin-inline:auto;width:fit-content;max-width:100%}.page[data-surface=student] .student-crash-body{background:var(--bg-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:1.5rem}.student-crash-reload{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;min-inline-size:12rem;min-block-size:12rem;padding-block:1.5rem;padding-inline:2rem;border:none;border-radius:var(--radius-lg);background:var(--primary);color:var(--text-on-primary);font-family:inherit;font-size:var(--heading-font-size, 1.5rem);font-weight:var(--font-weight-heading);cursor:pointer}.student-crash-reload:hover{background:var(--primary-hover)}.student-crash-reload:focus-visible{outline:3px solid var(--text);outline-offset:3px}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:2.5rem;width:100%;max-width:480px;box-shadow:var(--shadow-md)}.logo{font-size:3rem;text-align:center;margin-bottom:.5rem}.title{font-size:1.75rem;text-align:center;margin-bottom:.5rem;color:var(--text)}.subtitle{text-align:center;color:var(--text-muted);margin-bottom:2rem;font-size:1rem}.form-group{margin-bottom:1.25rem}.form-group label{display:block;margin-bottom:.375rem;font-weight:600;color:var(--text);font-size:.875rem}.input,.textarea,.select{width:100%;padding:.75rem 1rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:1rem;font-family:inherit;transition:border-color .15s ease,box-shadow .15s ease}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.input::placeholder,.textarea::placeholder{color:var(--text-muted)}.textarea{min-height:160px;resize:vertical;line-height:1.6}.select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%234A5568'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;background-size:1rem;padding-inline-end:2.5rem}.code-input{text-transform:uppercase;letter-spacing:.3rem;text-align:center;font-size:1.5rem;font-weight:700;font-family:Fredoka,sans-serif}.btn{width:100%;padding:.75rem 1.5rem;background:var(--primary);border:none;border-radius:var(--radius);color:#fff;font-size:.9375rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background-color .15s ease,box-shadow .15s ease;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;line-height:1.4}.btn:hover:not(:disabled){background:var(--primary-hover);box-shadow:var(--shadow-md)}.btn:active:not(:disabled){box-shadow:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--teal)}.btn-secondary:hover:not(:disabled){background:var(--teal-hover);box-shadow:var(--shadow-md)}.btn-sm{padding:.4rem .875rem;font-size:.8125rem;min-height:var(--touch-min)}.btn-icon{width:36px;height:36px;padding:0;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1rem;transition:background-color .15s ease,border-color .15s ease;color:var(--text-secondary)}.btn-icon:hover{background:var(--bg-surface-alt);border-color:var(--primary)}.btn-icon.danger{color:var(--danger)}.btn-icon.danger:hover{border-color:var(--danger);background:var(--danger-light)}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.dashboard-header .btn{width:auto}.quick-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.75rem;margin-bottom:2rem}.action-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;text-align:center;text-decoration:none;color:var(--text);transition:background-color .15s ease,border-color .15s ease;display:flex;flex-direction:column;align-items:center;gap:.5rem}.action-card:hover{border-color:var(--primary);background:var(--primary-light)}.action-icon{font-size:1.75rem}.lessons-grid{display:grid;gap:.75rem}.lesson-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem;transition:border-color .15s ease}.lesson-card:hover{border-color:var(--primary)}.lesson-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.lesson-header h3{font-size:1.0625rem;color:var(--text)}.term-count{background:var(--teal-light);color:var(--teal);padding:.2rem .625rem;border-radius:999px;font-size:.75rem;font-weight:600}.lesson-terms{display:flex;flex-wrap:wrap;gap:.375rem;margin-bottom:.75rem}.term-tag{background:var(--bg-surface-alt);padding:.2rem .625rem;border-radius:999px;font-size:.8125rem;color:var(--text-secondary)}.term-tag.more{color:var(--teal);font-weight:500}.lesson-meta{font-size:.8125rem;color:var(--text-muted);margin-bottom:.75rem}.lesson-actions{display:flex;gap:.5rem;align-items:center}.lesson-actions .btn{flex:1}.empty-state{text-align:center;padding:3rem;color:var(--text-muted)}.empty-icon{font-size:3rem;margin-bottom:.75rem;opacity:.6}.back-link{color:var(--text-muted);text-decoration:none;font-size:.875rem;display:inline-flex;align-items:center;gap:.25rem;transition:color .15s ease;background:none;border:none;cursor:pointer;font-family:inherit;padding:0}.back-link:hover{color:var(--primary)}.upload-section{display:flex;flex-direction:column;gap:1.5rem}.drop-zone{border:2px dashed var(--border);border-radius:var(--radius-lg);padding:2.5rem 2rem;text-align:center;transition:border-color .15s ease,background-color .15s ease;cursor:pointer}.drop-zone.active{border-color:var(--teal);background:var(--teal-light)}.drop-zone:hover{border-color:var(--text-muted)}.drop-icon{font-size:2.5rem;margin-bottom:.75rem;opacity:.6}.drop-zone h3{color:var(--text);margin-bottom:.5rem}.drop-zone p{color:var(--text-muted);font-size:.875rem}.divider{text-align:center;color:var(--text-muted);position:relative;margin:1.25rem 0;font-size:.875rem}.divider:before,.divider:after{content:"";position:absolute;top:50%;width:40%;height:1px;background:var(--border)}.divider:before{left:0}.divider:after{right:0}.url-input-section label,.paste-section label{display:block;margin-bottom:.5rem;font-weight:600}.url-input-group{display:flex;flex-direction:column;gap:.5rem}.url-input-group .input{width:100%}.url-input-group .btn{width:auto;align-self:flex-end}.terms-editor{margin-top:1.5rem}.terms-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.terms-list{display:flex;flex-direction:column;gap:.5rem}.term-editor-row{display:flex;align-items:center;gap:.75rem;background:var(--bg-surface);padding:.75rem;border-radius:var(--radius);border:1px solid var(--border)}.term-order{display:flex;flex-direction:column;align-items:center;gap:.25rem;min-width:28px}.term-order span{font-size:.75rem;color:var(--text-muted)}.move-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:.25rem;font-size:.875rem;transition:color .15s ease}.move-btn:hover:not(:disabled){color:var(--primary)}.move-btn:disabled{opacity:.3;cursor:not-allowed}.term-input{flex:1}.term-image{width:48px;height:48px;display:flex;align-items:center;justify-content:center}.term-image img{width:100%;height:100%;object-fit:cover;border-radius:var(--radius-sm)}.add-image-btn{background:var(--bg-surface-alt);border:1px dashed var(--border);border-radius:var(--radius-sm);width:100%;height:100%;cursor:pointer;font-size:1.125rem;transition:border-color .15s ease;color:var(--text-muted)}.add-image-btn:hover{border-color:var(--teal)}.delete-term-btn{background:none;border:none;color:var(--text-muted);font-size:1.25rem;cursor:pointer;padding:.25rem .5rem;transition:color .15s ease}.delete-term-btn:hover{color:var(--danger)}.image-preview{position:relative;width:100%;height:100%}.image-preview .remove-image{position:absolute;top:-4px;inset-inline-end:-4px;width:24px;height:24px;min-width:24px;min-height:24px;background:var(--danger);border:none;border-radius:50%;color:#fff;font-size:11px;cursor:pointer;display:flex;align-items:center;justify-content:center}.action-buttons{display:flex;gap:.75rem;margin-top:1.5rem}.action-buttons .btn{flex:1}.editor-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem}.editor-actions{display:flex;gap:.5rem}.editor-actions .btn{width:auto}.editor-layout{display:grid;grid-template-columns:1fr 280px;gap:1.5rem}.editor-main{min-width:0}.preview-panel{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem;height:fit-content;position:sticky;top:1.5rem}.preview-panel h3{font-size:.9375rem;margin-bottom:.75rem}.language-toggles{display:flex;flex-wrap:wrap;gap:.375rem}.language-toggle{display:flex;align-items:center;gap:.375rem;background:var(--bg-surface-alt);padding:.375rem .625rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.8125rem;transition:background-color .15s ease}.language-toggle:hover{background:var(--bg-inset)}.language-toggle input{accent-color:var(--teal)}.preview-results{margin-top:1rem;display:flex;flex-direction:column;gap:.75rem}.preview-term{background:var(--bg-surface-alt);padding:.625rem;border-radius:var(--radius-sm)}.preview-original{font-weight:600;margin-bottom:.25rem;color:var(--text)}.preview-translations{display:flex;flex-direction:column;gap:.125rem}.preview-translation{font-size:.8125rem;color:var(--text-secondary)}.preview-translation .lang-code{font-weight:600;color:var(--teal);margin-inline-end:.375rem}.live-session-page{padding:0}.session-layout{display:grid;grid-template-columns:260px 1fr;min-height:100vh;width:100%}.students-panel{background:var(--bg-surface);border-inline-end:1px solid var(--border);display:flex;flex-direction:column}.panel-header{padding:1.25rem;border-bottom:1px solid var(--border)}.panel-header h3{font-size:.9375rem}.student-list{flex:1;overflow-y:auto;padding:.75rem}.language-group{margin-bottom:1.25rem}.language-header{display:flex;justify-content:space-between;align-items:center;padding:.375rem 0;border-bottom:1px solid var(--border-light);margin-bottom:.375rem}.language-header .count{background:var(--teal-light);color:var(--teal);width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700}.student-item{padding:.5rem;color:var(--text-secondary);font-size:.875rem}.empty-students{text-align:center;padding:2rem;color:var(--text-muted)}.metrics-panel{padding:1.25rem;border-top:1px solid var(--border);background:var(--bg-surface-alt)}.metrics-panel h4{font-size:.875rem;margin-bottom:.75rem;color:var(--text-muted)}.metric{display:flex;justify-content:space-between;padding:.375rem 0;font-size:.875rem}.metric span{color:var(--text-muted)}.metric strong{color:var(--teal)}.session-main{padding:1.5rem;display:flex;flex-direction:column;background:var(--bg-app)}.session-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.session-header h2{font-size:1.375rem;margin-bottom:.375rem}.session-code{display:inline-flex;align-items:center;gap:.5rem;background:var(--bg-surface);padding:.375rem .875rem;border-radius:var(--radius);cursor:pointer;transition:background-color .15s ease;border:1px solid var(--border)}.session-code:hover{background:var(--bg-surface-alt)}.session-code strong{color:var(--primary);font-family:Fredoka,monospace;letter-spacing:.1rem}.expand-hint{font-size:.875rem}.session-controls{display:flex;gap:.5rem}.session-controls .btn{width:auto}.mode-toggle{padding:.625rem 1.25rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-weight:600;cursor:pointer;transition:border-color .15s ease}.mode-toggle:hover{border-color:var(--primary)}.terms-control{flex:1}.terms-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem;color:var(--text-muted);font-size:.875rem}.terms-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}.term-control-card{background:var(--bg-surface);border:2px solid var(--border);border-radius:var(--radius);padding:.875rem;cursor:pointer;transition:border-color .15s ease,background-color .15s ease;position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:.375rem}.term-control-card:hover{border-color:var(--primary)}.term-control-card.active{border-color:var(--success);background:var(--success-light)}.term-control-card .term-image{width:56px;height:56px}.term-control-card .term-text{font-weight:600;font-size:.875rem}.active-indicator{position:absolute;top:.375rem;inset-inline-end:.375rem;color:var(--success);font-weight:700;font-size:.75rem}.terms-hint{text-align:center;color:var(--text-muted);font-size:.8125rem;margin-top:.75rem}.game-controls{margin-top:1.5rem;text-align:center}.game-btn{width:auto;padding:.75rem 1.5rem}.fullscreen-code{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--primary);display:flex;align-items:center;justify-content:center;z-index:var(--z-focus-mode);cursor:pointer}.fullscreen-code .fullscreen-code-back{position:absolute;inset-block-start:1.5rem;inset-inline-start:1.5rem;width:auto;cursor:pointer}.fullscreen-code .fullscreen-code-back:focus-visible{outline:2px solid var(--text-on-primary);outline-offset:2px;box-shadow:var(--focus-ring)}.fullscreen-code .code-display{text-align:center;display:flex;flex-direction:column;align-items:center;gap:1.5rem}.fullscreen-code .code-display h2{font-size:3rem;color:var(--text-on-primary);margin:0}.fullscreen-code .join-url{font-size:2rem;color:var(--text-on-primary);opacity:.7;margin:0}.fullscreen-code .session-code{font-family:Fredoka,monospace;font-size:18vw;font-weight:700;letter-spacing:3vw;color:var(--text-on-primary);background:none;padding:0;border-radius:0;border:none}.fullscreen-code .tap-hint{font-size:1.25rem;color:var(--text-on-primary);opacity:.6;margin-block-start:1.5rem}.fullscreen-content{text-align:center}.fullscreen-content p{font-size:1.75rem;color:var(--text-on-primary);opacity:.7;margin-block-end:.75rem}.fullscreen-content strong{color:var(--text-on-primary)}.giant-code{font-family:Fredoka,monospace;font-size:15vw;font-weight:700;letter-spacing:2vw;color:#fff}.click-hint{font-size:1rem!important;margin-top:1.5rem!important}.student-session{justify-content:flex-start;padding-top:1.5rem}.session-info{display:flex;gap:.5rem;justify-content:center;margin-top:.5rem}.code-badge,.language-badge{padding:.2rem .625rem;border-radius:999px;font-size:.8125rem;font-weight:600}.code-badge{background:var(--primary-light);color:var(--primary)}.language-badge{background:var(--amber-light);color:var(--amber)}.welcome{color:var(--text-muted);margin-top:.5rem}.terms-display{display:grid;gap:.75rem;width:100%;margin-top:1.5rem}.terms-display.standard{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.term-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1rem;display:flex;align-items:center;gap:.75rem;transition:border-color .15s ease}.term-card:hover{border-color:var(--teal)}.term-card.playing{border-color:var(--success);background:var(--success-light)}.term-card .term-image{width:72px;height:72px;border-radius:var(--radius);object-fit:cover}.term-content{flex:1}.term-original{font-size:.8125rem;color:var(--text-muted);margin-bottom:.125rem}.term-translated{font-size:1.125rem;font-weight:700;color:var(--teal)}.play-btn{width:44px;height:44px;border-radius:50%;background:var(--teal);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .15s ease,transform .15s ease;flex-shrink:0;color:#fff}.play-btn:hover{background:var(--teal-hover);transform:scale(1.05)}.play-btn:active{transform:scale(.95)}.play-btn svg:not(.icon){width:18px;height:18px;fill:#fff;margin-inline-start:2px}.play-btn.large{width:72px;height:72px;margin-top:.75rem}.play-btn.large svg:not(.icon){width:32px;height:32px}.waiting-state{text-align:center;padding:3rem 2rem;color:var(--text-muted)}.waiting-icon{display:flex;justify-content:center;margin-block-end:.75rem;animation:pulse 2s ease-in-out infinite;opacity:.6}.waiting-icon img{width:100px;height:100px;border-radius:50%;object-fit:cover}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.session-footer{margin-top:1.5rem;text-align:center}.game-page{padding:1rem}.game-container{width:100%;max-width:800px}.game-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem}.game-header h2{font-size:1.375rem}.game-score{display:flex;gap:1rem;font-size:1.125rem;font-weight:700}.game-score .correct{color:var(--success)}.game-score .incorrect{color:var(--danger)}.feedback{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);padding:1.25rem 2.5rem;border-radius:var(--radius-lg);font-size:1.25rem;font-weight:700;z-index:100;animation:pop .3s ease}.feedback.correct{background:var(--success);color:#fff}.feedback.wrong{background:var(--danger);color:#fff}@keyframes pop{0%{transform:translate(-50%,-50%) scale(.5)}50%{transform:translate(-50%,-50%) scale(1.05)}to{transform:translate(-50%,-50%) scale(1)}}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:.75rem}.game-card{aspect-ratio:1;background:var(--bg-surface);border:2px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:.75rem;transition:border-color .15s ease}.game-card:hover:not(.matched){border-color:var(--primary)}.game-card.selected{border-color:var(--primary);background:var(--primary-light)}.game-card.matched{opacity:.4;cursor:default}.card-word{font-weight:700;font-size:1rem;text-align:center;color:var(--teal)}.card-image{width:100%;height:100%;object-fit:contain;border-radius:var(--radius-sm)}.match-check{color:var(--success);font-size:1.75rem}.game-complete,.game-over{text-align:center;padding:3rem}.celebration{font-size:4rem;margin-bottom:.75rem;animation:bounce .5s ease infinite alternate}@keyframes bounce{0%{transform:translateY(0)}to{transform:translateY(-8px)}}.final-score{display:flex;justify-content:center;gap:2rem;font-size:1.25rem;font-weight:700;margin:1.25rem 0}.game-actions{display:flex;justify-content:center;gap:.75rem;margin-top:1.25rem}.game-actions .btn{width:auto}.game-footer{margin-top:1.5rem;text-align:center}.admin-page{justify-content:flex-start;padding-top:1.5rem}.admin-header{margin-bottom:1.5rem}.admin-tabs{display:flex;gap:0;margin-bottom:1.5rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.tab{flex:1;padding:.625rem .75rem;background:transparent;border:none;color:var(--text-muted);font-weight:600;cursor:pointer;transition:background-color .15s ease,color .15s ease;font-size:.875rem}.tab:hover{color:var(--text);background:var(--bg-surface-alt)}.tab.active{background:var(--primary);color:#fff}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem}.section-header h3{font-size:1.125rem}.section-header .btn{width:auto}.teacher-form{margin-bottom:1.25rem;padding:1.25rem}.teacher-form h4{margin-bottom:.75rem}.form-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin-bottom:.75rem}.form-actions{display:flex;justify-content:flex-end;gap:.5rem}.form-actions .btn{width:auto}.teachers-list{display:flex;flex-direction:column;gap:.5rem}.teacher-row{display:flex;justify-content:space-between;align-items:center;background:var(--bg-surface);padding:.875rem 1rem;border-radius:var(--radius);border:1px solid var(--border)}.teacher-row.inactive{opacity:.55}.teacher-info{display:flex;align-items:center;gap:.75rem}.teacher-name{font-weight:600}.teacher-email{color:var(--text-muted);font-size:.875rem}.status-badge{padding:.2rem .625rem;border-radius:999px;font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em}.status-badge.active{background:var(--success-light);color:var(--success)}.status-badge.inactive{background:var(--danger-light);color:var(--danger)}.teacher-actions{display:flex;gap:.5rem}.health-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.75rem;margin-bottom:1.5rem}.health-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem;text-align:center}.health-icon{font-size:1.75rem;margin-bottom:.375rem;opacity:.7}.health-label{font-size:.8125rem;color:var(--text-muted);margin-bottom:.125rem}.health-value{font-size:1.375rem;font-weight:700;color:var(--primary)}.health-details h4{font-size:.9375rem;margin:1.25rem 0 .75rem;color:var(--text-muted)}.detail-row{display:flex;justify-content:space-between;padding:.625rem 0;border-bottom:1px solid var(--border-light)}.detail-row span{color:var(--text-muted)}.audit-list{display:flex;flex-direction:column;gap:.375rem}.audit-row{display:grid;grid-template-columns:170px 110px 1fr auto;gap:.75rem;padding:.75rem;background:var(--bg-surface);border-radius:var(--radius-sm);font-size:.875rem;align-items:center;border:1px solid var(--border-light)}.audit-time{color:var(--text-muted);font-size:.8125rem}.audit-action{padding:.2rem .5rem;border-radius:4px;font-weight:600;text-transform:capitalize;font-size:.75rem}.audit-action.create{background:var(--success-light);color:var(--success)}.audit-action.update{background:var(--teal-light);color:var(--teal)}.audit-action.delete{background:var(--danger-light);color:var(--danger)}.audit-action.start_session{background:var(--amber-light);color:var(--amber)}.audit-action.end_session{background:var(--bg-surface-alt);color:var(--text-muted)}.audit-action.reset_password{background:var(--primary-light);color:var(--primary)}.audit-action.login{background:var(--teal-light);color:var(--teal)}.audit-action.logout{background:var(--bg-surface-alt);color:var(--text-muted)}.audit-action.invite{background:var(--amber-light);color:var(--amber)}.audit-action.activate{background:var(--success-light);color:var(--success)}.audit-action.disable{background:var(--danger-light);color:var(--danger)}.audit-details{color:var(--text)}.audit-actor{color:var(--text-muted);font-size:.8125rem}.error{background:var(--danger-light);border:1px solid var(--danger);color:var(--danger);padding:.75rem 1rem;border-radius:var(--radius);margin-bottom:1rem;text-align:center;font-size:.875rem;font-weight:500}.loading{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:2rem;color:var(--text-muted)}.spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.link{color:var(--primary);text-decoration:none;font-weight:600;transition:color .15s ease}.link:hover{color:var(--primary-hover);text-decoration:underline}@media (max-width: 900px){.editor-layout{grid-template-columns:1fr}.preview-panel{position:static}.session-layout{grid-template-columns:1fr}.students-panel{display:none}}@media (max-width: 600px){.card{padding:1.5rem}.title{font-size:1.5rem}.form-row{grid-template-columns:1fr}.audit-row{grid-template-columns:1fr;gap:.375rem}.giant-code{font-size:20vw;letter-spacing:3vw}}.login-card{max-width:420px}.login-section{margin:1.5rem 0}.login-section h2{font-size:1.125rem;margin-bottom:.625rem;text-align:center}.login-info{color:var(--text-muted);font-size:.875rem;text-align:center;margin-bottom:1.25rem}.google-btn{display:flex;align-items:center;justify-content:center;gap:.625rem;background:#fff;border:1px solid var(--border);color:var(--text)}.google-btn:hover:not(:disabled){background:var(--bg-surface-alt);box-shadow:var(--shadow-sm)}.google-icon{width:20px;height:20px}.student-link{text-align:center}.student-link p{color:var(--text-muted);margin-bottom:.625rem}.user-bar{display:flex;justify-content:space-between;align-items:center;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:.625rem 1rem;margin-bottom:1.25rem}.user-info{display:flex;align-items:center;gap:.625rem}.user-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover}.user-details{display:flex;flex-direction:column}.user-name{font-weight:600;font-size:.875rem}.user-email{font-size:.75rem;color:var(--text-muted)}.admin-badge{background:var(--amber-light);color:var(--amber);padding:.125rem .5rem;border-radius:4px;font-size:.6875rem;font-weight:700;text-transform:uppercase}.dev-auth-badge{background:var(--accent-light);color:var(--warning);border:1px dashed var(--warning);padding-block:.125rem;padding-inline:.5rem;border-radius:4px;font-size:.6875rem;font-weight:700;text-transform:uppercase;white-space:nowrap}.btn-logout{background:transparent;border:1px solid var(--border);color:var(--text-muted);padding:.4rem .875rem;border-radius:var(--radius);cursor:pointer;font-size:.8125rem;transition:border-color .15s ease,color .15s ease}.btn-logout:hover{border-color:var(--danger);color:var(--danger)}.header-actions{display:flex;gap:.5rem}.invite-section{margin-bottom:1.5rem;max-width:100%}.invite-section h3{margin-bottom:.375rem}.invite-info{color:var(--text-muted);font-size:.875rem;margin-bottom:.75rem}.invite-form{display:flex;gap:.5rem}.invite-form .input{flex:1}.invite-form .btn{width:auto;white-space:nowrap}.success-message{background:var(--success-light);border:1px solid var(--success);color:var(--success);padding:.625rem .875rem;border-radius:var(--radius);margin-bottom:.75rem;font-size:.875rem;font-weight:500}.teacher-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover}.teacher-details{display:flex;flex-direction:column}.teacher-badges{display:flex;gap:.375rem;align-items:center}.pending-badge{background:var(--amber-light);color:var(--amber);padding:.125rem .5rem;border-radius:4px;font-size:.6875rem;font-weight:700}.you-badge{color:var(--teal);font-size:.75rem;margin-inline-start:.375rem}.sessions-list{display:flex;flex-direction:column;gap:.5rem}.session-row{display:grid;grid-template-columns:130px 1fr auto;gap:.75rem;padding:.875rem 1rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);align-items:center}.session-code-col{display:flex;flex-direction:column;gap:.125rem}.session-code{font-family:Fredoka,monospace;font-size:1.125rem;font-weight:700;color:var(--primary);letter-spacing:.1rem}.mode-badge{font-size:.6875rem;padding:.125rem .5rem;border-radius:4px;width:fit-content;font-weight:600}.mode-badge.standard{background:var(--teal-light);color:var(--teal)}.session-info-col{display:flex;flex-direction:column}.session-lesson{font-weight:600}.session-teacher{font-size:.8125rem;color:var(--text-muted)}.session-stats-col{display:flex;flex-direction:column;align-items:flex-end;gap:.125rem}.student-count{font-weight:600;color:var(--success)}.session-time{font-size:.75rem;color:var(--text-muted)}@media (max-width: 768px){.user-bar{flex-direction:column;gap:.75rem;text-align:center}.user-info,.invite-form{flex-direction:column}.session-row{grid-template-columns:1fr;gap:.5rem}.session-stats-col{align-items:flex-start}}.auth-tabs{display:flex;gap:0;margin-bottom:1.25rem;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.auth-tab{flex:1;padding:.625rem .75rem;background:transparent;border:none;color:var(--text-muted);cursor:pointer;font-size:.875rem;font-weight:500;transition:background-color .15s ease,color .15s ease}.auth-tab:hover{background:var(--bg-surface-alt);color:var(--text)}.auth-tab.active{background:var(--primary);color:#fff}.hint{font-size:.8125rem;color:var(--text-muted);text-align:center;margin-top:.75rem}.keywords-section{margin:1.5rem 0}.keywords-list{display:flex;flex-direction:column;gap:.375rem;margin-top:.75rem}.keyword-item{display:flex;align-items:center;gap:.625rem;padding:.625rem .875rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius)}.keyword-order{width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:var(--primary);color:#fff;border-radius:50%;font-size:.75rem;font-weight:600}.keyword-term{flex:1;font-weight:500}.keyword-actions{display:flex;gap:.25rem}.upload-zone{border:2px dashed var(--border);border-radius:var(--radius-lg);padding:2.5rem 2rem;text-align:center;transition:border-color .15s ease,background-color .15s ease}.upload-zone.drag-active{border-color:var(--teal);background:var(--teal-light)}.upload-icon{font-size:2.5rem;margin-bottom:.75rem;opacity:.5}.upload-zone h3{margin-bottom:.375rem}.upload-zone p{color:var(--text-muted);margin-bottom:.75rem}.paste-section{display:flex;flex-direction:column;gap:.75rem}.live-session-page .container{max-width:1200px}.session-info-bar{display:flex;gap:1.5rem;padding:.875rem 1.25rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1.25rem}.info-item{display:flex;flex-direction:column}.info-label{font-size:.6875rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.info-value{font-size:1.125rem;font-weight:600}.info-value.code{font-family:Fredoka,monospace;color:var(--primary);letter-spacing:.1em}.session-content{display:grid;grid-template-columns:1fr 280px;gap:1.25rem}.keywords-panel,.students-panel{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1rem}.panel-actions{display:flex;gap:.5rem}.keywords-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:.375rem}.keyword-btn{padding:.625rem;background:var(--bg-surface);border:2px solid var(--border);border-radius:var(--radius);color:var(--text);cursor:pointer;font-size:.875rem;transition:border-color .15s ease,background-color .15s ease}.keyword-btn:hover{border-color:var(--primary)}.keyword-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.students-list{display:flex;flex-direction:column;gap:.375rem}.student-item{display:flex;justify-content:space-between;padding:.375rem .625rem;background:var(--bg-surface-alt);border-radius:var(--radius-sm)}.student-name{font-weight:600;color:var(--text)}.student-lang{color:var(--teal);font-size:.8125rem;text-transform:uppercase;font-weight:600}.student-session{min-height:100vh}.student-header{display:flex;justify-content:space-between;align-items:center;padding:.875rem 1rem;background:var(--bg-surface);border-bottom:1px solid var(--border)}.mode-indicator{font-size:1.25rem}.waiting-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;text-align:center}.vocabulary-display{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;padding:1rem}.vocab-card{padding:1.5rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);text-align:center;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.vocab-card:hover{border-color:var(--teal);box-shadow:var(--shadow-md)}.vocab-translated{font-size:1.375rem;font-weight:600;color:var(--teal)}.play-btn{margin-top:.75rem;padding:.375rem .875rem;background:var(--teal);border:none;border-radius:var(--radius);font-size:1.125rem;cursor:pointer;color:#fff;transition:background-color .15s ease}.play-btn:hover{background:var(--teal-hover)}@media (max-width: 768px){.session-content{grid-template-columns:1fr}.session-header{flex-direction:column;gap:.75rem}.session-controls{width:100%;flex-wrap:wrap}.session-info-bar{flex-wrap:wrap;gap:.75rem}}.url-section{padding:1.25rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.url-section h3{margin-bottom:.375rem}.section-hint{color:var(--text-muted);font-size:.875rem;margin-bottom:.75rem}.fixed-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.loading-overlay{flex-direction:column;background:#f7f5f2eb;z-index:1000}.loading-overlay p{margin-top:.75rem;color:var(--text-secondary);font-weight:500}.flashcard-page{background:var(--bg-app)}.flashcard-header{display:flex;justify-content:space-between;align-items:center;padding:.875rem 1rem;margin-bottom:.75rem}.back-btn{background:var(--bg-surface);border:1px solid var(--border);color:var(--text);padding:.4rem .875rem;border-radius:var(--radius);cursor:pointer;font-size:.875rem;font-weight:500;transition:border-color .15s ease}.back-btn:hover{border-color:var(--primary)}.progress-info{font-weight:600;color:var(--text-muted);font-size:.875rem}.score-display{display:flex;gap:.75rem}.score-display .knew{color:var(--success)}.score-display .learning{color:var(--amber)}.progress-bar{height:4px;background:var(--border);border-radius:2px;margin-bottom:1.5rem;overflow:hidden}.progress-fill{height:100%;background:var(--primary);transition:width .3s ease}.flashcard-container{perspective:1000px;max-width:380px;margin:0 auto 1.5rem}.flashcard{width:100%;height:320px;cursor:pointer;transform-style:preserve-3d;transition:transform .5s}.flashcard.flipped{transform:rotateY(180deg)}.flashcard-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d}.flashcard-front,.flashcard-back{position:absolute;width:100%;height:100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 2rem 2.5rem;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.flashcard-front{background:var(--primary);color:#fff;transform:translateZ(1px)}.flashcard-back{background:var(--teal);color:#fff;transform:rotateY(180deg) translateZ(1px)}.card-label{font-size:.75rem;text-transform:uppercase;opacity:.7;margin-bottom:.375rem;letter-spacing:.06em;font-weight:600}.card-term,.card-translation{font-size:1.75rem;font-weight:700;text-align:center}.tap-hint{position:absolute;bottom:.625rem;inset-inline-end:.625rem;font-size:.75rem;opacity:.6}.audio-btn{position:absolute;bottom:.625rem;inset-inline-start:.625rem;padding:.4rem .75rem;background:#fff3;border:none;border-radius:999px;color:#fff;font-size:.8125rem;cursor:pointer;transition:background-color .15s ease}.audio-btn:hover{background:#ffffff59}.answer-buttons{display:flex;gap:.75rem;justify-content:center;margin-top:1.25rem}.btn-incorrect{background:var(--amber);color:#fff}.btn-incorrect:hover:not(:disabled){background:var(--amber-hover)}.btn-correct{background:var(--success);color:#fff}.btn-correct:hover:not(:disabled){background:#237a4e}.instruction{text-align:center;color:var(--text-muted);margin-top:.75rem;font-size:.875rem}.game-complete{text-align:center;padding:2.5rem 1.5rem}.complete-icon{font-size:3rem;margin-bottom:.75rem}.game-complete h2{margin-bottom:1.5rem}.final-score{display:flex;justify-content:center;gap:2.5rem;margin-bottom:1.5rem}.score-item{display:flex;flex-direction:column;align-items:center}.score-label{font-size:.8125rem;color:var(--text-muted);margin-bottom:.125rem}.score-value{font-size:2.25rem;font-weight:700}.score-item.correct .score-value{color:var(--success)}.score-item.incorrect .score-value{color:var(--amber)}.percentage{display:flex;flex-direction:column;align-items:center;margin-bottom:1.5rem}.percentage-value{font-size:3.5rem;font-weight:700;color:var(--primary)}.percentage-label{font-size:.9375rem;color:var(--text-muted)}.complete-actions{display:flex;gap:.75rem;justify-content:center}.game-buttons{display:flex;justify-content:center;gap:.75rem;padding:.75rem;margin-bottom:.75rem}.btn-game{background:var(--primary);border:none;padding:.625rem 1.25rem;font-size:.9375rem}.btn-game:hover:not(:disabled){background:var(--primary-hover);box-shadow:var(--shadow-md)}@media (max-width: 480px){.flashcard{height:240px}.card-term,.card-translation{font-size:1.375rem}.answer-buttons{flex-direction:column}.final-score{gap:1.5rem}.score-value{font-size:1.75rem}.percentage-value{font-size:2.5rem}}.section-actions{display:flex;gap:.5rem;align-items:center}.btn-ai{background:var(--primary);border:none;font-size:.875rem}.btn-ai:hover:not(:disabled){background:var(--primary-hover)}.btn-ai:disabled{opacity:.5}.info-banner{background:var(--primary-light);border:1px solid var(--border);border-inline-start:3px solid var(--primary);padding:.625rem .875rem;border-radius:var(--radius);margin-bottom:.75rem;font-size:.875rem;color:var(--text-secondary)}.info-banner code{background:var(--bg-surface-alt);padding:.0625rem .3125rem;border-radius:3px;font-family:monospace;font-size:.8125rem}.info-banner--warning{background:var(--warning-light);border-inline-start-color:var(--warning)}.keywords-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.75rem;margin-top:.75rem}.keyword-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:.875rem;display:flex;flex-direction:column;gap:.625rem;transition:border-color .15s ease}.keyword-card:hover{border-color:var(--primary)}.keyword-icon-area{width:100%;aspect-ratio:1;border-radius:var(--radius);overflow:hidden;background:var(--bg-surface-alt)}.icon-preview{width:100%;height:100%;position:relative}.icon-preview img{width:100%;height:100%;object-fit:cover}.icon-remove{position:absolute;top:4px;inset-inline-end:4px;width:24px;height:24px;min-width:24px;min-height:24px;border-radius:50%;background:var(--danger);border:none;color:#fff;cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s ease}.icon-preview:hover .icon-remove{opacity:1}.icon-placeholder{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.375rem;border:2px dashed var(--border);border-radius:var(--radius);color:var(--text-muted)}.icon-placeholder-text{font-size:.75rem;color:var(--text-muted)}.icon-actions{display:flex;gap:.375rem}.btn-icon-action{width:30px;height:30px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-surface);cursor:pointer;font-size:.9375rem;display:flex;align-items:center;justify-content:center;transition:background-color .15s ease,border-color .15s ease}.btn-icon-action:hover:not(:disabled){background:var(--primary-light);border-color:var(--primary)}.btn-icon-action:disabled{opacity:.4;cursor:not-allowed}.keyword-info{display:flex;align-items:center;gap:.375rem}.keyword-info .keyword-order{background:var(--bg-surface-alt);padding:.0625rem .4375rem;border-radius:3px;font-size:.6875rem;font-weight:600;color:var(--text-muted)}.keyword-info .keyword-term{font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.keyword-controls{display:flex;justify-content:center;gap:.375rem;padding-top:.375rem;border-top:1px solid var(--border-light)}.keyword-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}.tag-chip{display:inline-block;background-color:var(--bg-surface-alt);color:var(--text-secondary);padding:.25rem .6rem;border-radius:.25rem;font-size:.75rem;font-weight:500;white-space:nowrap;border:1px solid var(--border-light)}.activity-suggestions-section{padding:1.25rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1.5rem}.activity-suggestions-section .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:0;-webkit-user-select:none;user-select:none}.activity-suggestions-section .section-header:hover{opacity:.8}.suggestions-body{margin-top:1rem}.collapse-indicator{display:inline-block;font-size:.65rem;transition:transform .15s ease;color:var(--text-secondary)}.collapse-indicator.expanded{transform:rotate(90deg)}.suggestion-count{display:inline-block;margin-inline-start:.5rem;background:var(--bg-surface-alt);color:var(--text-secondary);font-size:.75rem;font-weight:500;padding:.1rem .5rem;border-radius:1rem}.activity-suggestions-section h3{margin:0;font-size:1rem;font-weight:600;color:var(--text)}.suggestion-error{padding:.75rem 1rem;background:var(--danger-light);color:var(--danger);border:1px solid var(--danger);border-radius:var(--radius-sm);margin-bottom:1rem}.suggestion-error p{margin:0 0 .5rem;font-size:.9rem}.suggestions-empty{padding:1.5rem;text-align:center;color:var(--text-muted);background:var(--bg-app);border-radius:var(--radius-sm)}.suggestions-empty p{margin:0;font-size:.9rem}.suggestions-grouped{display:flex;flex-direction:column;gap:1rem}.suggestion-type-group-header{margin-bottom:.5rem}.suggestion-card{padding:1rem;background:var(--bg-surface-alt);border:1px solid var(--border-light);border-radius:var(--radius-sm)}.suggestion-header{margin-bottom:.5rem}.suggestion-type-badge{display:inline-block;padding:.25rem .5rem;border-radius:.25rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.suggestion-type-badge.type-warm-up{background:var(--suggestion-warmup-bg);color:var(--suggestion-warmup-text)}.suggestion-type-badge.type-partner-work{background:var(--suggestion-partner-bg);color:var(--suggestion-partner-text)}.suggestion-type-badge.type-review{background:var(--suggestion-review-bg);color:var(--suggestion-review-text)}.suggestion-type-badge.type-writing{background:var(--suggestion-writing-bg);color:var(--suggestion-writing-text)}.suggestion-type-badge.type-movement{background:var(--suggestion-movement-bg);color:var(--suggestion-movement-text)}.suggestion-description{margin:.5rem 0;font-size:.9rem;color:var(--text);line-height:1.4}.suggestion-keywords{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.75rem}.keyword-tag{display:inline-block;padding:.2rem .4rem;background:var(--teal-light);color:var(--teal);border-radius:.2rem;font-size:.75rem;white-space:nowrap}.btn-small{padding:.4rem .8rem;font-size:.85rem;background:var(--primary);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background-color .2s ease}.btn-small:hover:not(:disabled){background:var(--primary-hover)}.btn-small:disabled{opacity:.6;cursor:not-allowed}.keywords-list .keyword-item{display:flex;align-items:center;gap:.625rem;padding:.625rem .875rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.375rem}.keywords-list .keyword-order{background:var(--bg-surface-alt);padding:.125rem .4375rem;border-radius:3px;font-size:.75rem;min-width:1.75rem;text-align:center;color:var(--text-muted);font-weight:600}.keywords-list .keyword-term{flex:1}.keywords-list .keyword-actions{display:flex;gap:.25rem}.vocab-card .vocab-icon{width:100px;height:100px;border-radius:var(--radius);overflow:hidden;margin-bottom:.375rem}.vocab-card .vocab-icon img{width:100%;height:100%;object-fit:contain}@media (max-width: 600px){.keywords-grid{grid-template-columns:1fr 1fr}.section-actions{flex-direction:column;align-items:stretch}}.flashcard-icon{width:160px;height:160px;border-radius:var(--radius-lg);object-fit:contain;margin-bottom:.5rem}@media (max-width: 480px){.flashcard-icon{width:120px;height:120px}}.language-toggle-container{position:fixed;bottom:1rem;left:50%;transform:translate(-50%);z-index:100}.language-toggle-btn{display:flex;align-items:center;gap:.5rem;padding:.625rem 1.125rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:999px;color:var(--text);font-size:.875rem;font-weight:600;cursor:pointer;transition:background-color .15s ease,box-shadow .15s ease;box-shadow:var(--shadow-md)}.language-toggle-btn:hover{box-shadow:var(--shadow-lg)}.language-toggle-btn.english{background:var(--primary);border-color:var(--primary);color:#fff}.language-toggle-btn.home{background:var(--teal);border-color:var(--teal);color:#fff}.student-item{display:flex;flex-direction:column;gap:.3rem;padding:.625rem .875rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.375rem;transition:border-color .15s ease}.student-item:hover{border-color:var(--primary)}.student-item-top{display:flex;align-items:center}.student-item-bottom{display:flex;align-items:center;gap:.375rem}.student-name{font-weight:600;font-size:.9375rem;color:var(--text)}.student-lang{font-size:.6875rem;padding:.0625rem .4375rem;background:var(--bg-surface-alt);border-radius:3px;color:var(--text-muted);font-weight:600;text-transform:uppercase}.mode-toggle-btn{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:var(--bg-surface);cursor:pointer;font-size:.9375rem;display:flex;align-items:center;justify-content:center;transition:background-color .15s ease,border-color .15s ease}.mode-toggle-btn:hover,.mode-toggle-btn.standard{border-color:var(--primary);background:var(--primary-light)}.students-panel .panel-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.375rem}.students-panel .panel-actions{display:flex;gap:.375rem}.student-session .container,.flashcard-page .container{padding-bottom:4.5rem}@media (max-width: 480px){.language-toggle-btn{padding:.5rem .875rem;font-size:.8125rem}.student-item{flex-wrap:wrap;gap:.375rem}.mode-toggle-btn{width:28px;height:28px;font-size:.8125rem}}.student-info-col{display:flex;flex-direction:column;gap:.125rem;flex:1}.flashcard-score{font-size:.6875rem;color:var(--text-muted);padding:.125rem .4375rem;background:var(--bg-surface-alt);border-radius:3px;display:inline-block;width:fit-content}.flashcard-score:hover{background:var(--primary-light);color:var(--text-secondary)}@media (max-width: 480px){.flashcard-score{font-size:.625rem}}.manual-section{text-align:center;padding:1.5rem;background:var(--bg-surface);border-radius:var(--radius-lg);border:1px solid var(--border)}.manual-section h3{margin-bottom:.375rem}.keyword-add-row{display:flex;flex-direction:column;gap:.375rem;margin-bottom:.75rem}.keyword-add-row .input{width:100%}.keyword-add-row .btn{white-space:nowrap;align-self:flex-end}.session-actions{display:flex;gap:.375rem;margin-inline-start:auto}.session-row{display:flex;align-items:center;gap:.75rem;padding:.875rem;background:var(--bg-surface);border-radius:var(--radius);margin-bottom:.375rem;border:1px solid var(--border)}.btn-close-session{background:var(--danger);color:#fff;border:none;padding:.2rem .625rem;border-radius:4px;cursor:pointer;font-size:.6875rem;font-weight:600}.btn-close-session:hover{background:#a52828}.active-sessions-section{margin-bottom:1.5rem;padding:1.25rem;background:var(--amber-light);border-radius:var(--radius-lg);border:1px solid var(--amber)}.active-sessions-section h2{margin-bottom:.75rem;display:flex;align-items:center;gap:.5rem;color:var(--text)}.active-session-card{display:flex;justify-content:space-between;align-items:center;padding:.875rem;background:var(--bg-surface);border-radius:var(--radius);margin-bottom:.375rem;border:1px solid var(--border)}.active-session-info{display:flex;flex-direction:column;gap:.125rem}.active-session-title{font-weight:600}.active-session-meta{font-size:.8125rem;color:var(--text-muted)}.active-session-actions{display:flex;gap:.375rem}.recent-session-card{border-color:var(--border-light);background:var(--bg-surface-alt)}.recent-session-card.just-ended{border-color:var(--primary);border-inline-start:4px solid var(--primary);background:var(--primary-light);box-shadow:var(--shadow-md)}.recent-session-langs{display:flex;flex-wrap:wrap;gap:.375rem;margin-block-start:.375rem}.recent-session-langs>span{display:inline-flex;align-items:center;gap:.25rem;padding-block:.125rem;padding-inline:.5rem;border:1px solid var(--border);border-radius:var(--tag-radius);background:var(--bg-surface);color:var(--text-secondary);font-size:.8125rem}.student-actions{display:flex;gap:.375rem;align-items:center}.flashcard-btn{background:var(--amber-light);border:1px solid var(--amber);color:var(--amber);border-radius:var(--radius-sm);padding:.3rem .5rem;cursor:pointer;font-size:.9375rem;transition:background-color .15s ease}.flashcard-btn:hover{background:#fde68a}.btn-flashcard{background:var(--amber-light)!important;border:1px solid var(--amber)!important;color:var(--amber)!important}.btn-flashcard:hover{background:#fde68a!important}.btn-danger{background:var(--danger)}.btn-danger:hover:not(:disabled){background:#a52828;box-shadow:var(--shadow-md)}.btn-accent{background:var(--amber);color:#fff}.btn-accent:hover:not(:disabled){background:var(--amber-hover);box-shadow:var(--shadow-md)}.vocab-flip-wrapper{perspective:800px;height:300px;position:relative;transform:translateZ(0)}.vocab-flip-card{position:absolute;top:0;right:0;bottom:0;left:0;cursor:pointer;transform-style:preserve-3d;transition:transform .5s ease}.vocab-flip-card.flipped{transform:rotateY(180deg)}.vocab-flip-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d}.vocab-flip-front,.vocab-flip-back{position:absolute;width:100%;height:100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:var(--radius-lg);overflow:hidden;transform-style:flat}.vocab-flip-front{background:var(--bg-surface);border:1px solid var(--border);transform:translateZ(1px)}.vocab-flip-front:hover{border-color:var(--teal)}.vocab-flip-back{transform:rotateY(180deg) translateZ(1px);background:var(--teal);border:1px solid var(--teal);display:flex;align-items:center;justify-content:center}.vocab-flip-front .vocab-icon{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:.75rem .75rem 4.5rem;padding-inline-end:3rem;z-index:0}.vocab-flip-front .vocab-icon img{max-width:100%;max-height:100%;object-fit:contain;border-radius:var(--radius)}.vocab-flip-front .vocab-term{position:absolute;bottom:0;inset-inline-start:0;inset-inline-end:52px;padding:.625rem .875rem;font-size:1.5rem;font-weight:700;color:var(--text);background:linear-gradient(to top,#fffffff2 60%,#fff0);line-height:1.2;z-index:1}.vocab-flip-front.no-icon{background:var(--bg-surface-alt);display:flex;align-items:center;justify-content:center}.vocab-flip-front.no-icon .vocab-term{position:static;background:none;text-align:center;font-size:2rem;padding:1.25rem;inset-inline-end:auto;color:var(--text)}.vocab-side-controls{position:absolute;inset-inline-end:0;top:0;display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.625rem}.vocab-flip-front .vocab-side-controls .play-btn{width:40px;height:40px;border-radius:50%;background:var(--teal);border:none;cursor:pointer;font-size:1.125rem;display:flex;align-items:center;justify-content:center;transition:background-color .15s ease,transform .15s ease;box-shadow:var(--shadow-sm);color:#fff}.vocab-flip-front .vocab-side-controls .play-btn:hover{background:var(--teal-hover);transform:scale(1.05)}.flip-hint{font-size:.75rem;color:var(--text-muted);opacity:.6;text-align:center;writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:.5px}.vocab-flip-back .flip-hint{color:#fff9;writing-mode:vertical-rl}.vocab-flip-back .vocab-translated{font-size:1.75rem;font-weight:700;color:#fff;text-align:center;padding:1.25rem;padding-inline-end:3rem}.vocab-flip-back .vocab-side-controls{position:absolute;inset-inline-end:0;top:0;display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.625rem}.vocab-flip-back .vocab-side-controls .play-btn{width:40px;height:40px;border-radius:50%;background:#fff3;border:none;cursor:pointer;font-size:1.125rem;color:#fff;display:flex;align-items:center;justify-content:center;transition:background-color .15s ease;box-shadow:var(--shadow-sm)}.vocab-flip-back .vocab-side-controls .play-btn:hover{background:#ffffff4d}.student-header-actions{display:flex;align-items:center;gap:.375rem}.focus-btn{background:var(--bg-surface);border:1px solid var(--border);color:var(--text);padding:.4rem .875rem;border-radius:var(--radius);cursor:pointer;font-size:.8125rem;font-weight:600;transition:border-color .15s ease}.focus-btn:hover{border-color:var(--primary)}.raise-hand-btn{background:var(--bg-surface);border:1px solid var(--border);color:var(--text);padding:.4rem .875rem;border-radius:var(--radius);cursor:pointer;font-size:.8125rem;font-weight:600;transition:border-color .15s ease,background-color .15s ease}.raise-hand-btn:hover{border-color:var(--primary)}.raise-hand-btn.raised{background:var(--warning-light);border-color:var(--warning);color:var(--warning)}.exit-focus-btn{position:fixed;top:.75rem;inset-inline-end:.75rem;width:32px;height:32px;border-radius:50%;background:var(--bg-surface);border:1px solid var(--border);color:var(--text-muted);font-size:.9375rem;cursor:pointer;z-index:1000;display:flex;align-items:center;justify-content:center;transition:border-color .15s ease,color .15s ease;opacity:.5}.exit-focus-btn:hover{opacity:1;border-color:var(--primary);color:var(--text)}.focus-mode .container{padding-top:2.5rem}.focus-mode .vocabulary-display{padding-top:.75rem}.lang-select{padding:.2rem .4375rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.75rem;cursor:pointer;transition:border-color .15s ease;max-width:130px}.lang-select option{background:var(--bg-surface);color:var(--text)}.lang-select:hover{border-color:var(--primary)}.lang-select.unassigned{border-color:var(--amber);background:var(--amber-light);animation:pulse-border 2s ease-in-out infinite}.lang-select.assigned{border-color:var(--success);background:var(--success-light)}.lang-select.pending{border-color:var(--border);animation:none;cursor:progress;opacity:.85}.lang-select-pending{margin-inline-start:.375rem;font-size:.6875rem;color:var(--text-muted);white-space:nowrap}.lang-select optgroup{background:var(--bg-surface);color:var(--text-muted);font-style:normal}.bulk-assign{display:inline-flex;align-items:center;gap:.375rem}.bulk-assign .lang-select{max-width:150px;min-height:var(--btn-min-height, 32px)}.bulk-assign[aria-busy=true]{opacity:.7}.bulk-assign-count{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;padding-inline:.3125rem;margin-inline-start:.375rem;border-radius:999px;background:var(--amber-light);color:var(--amber);font-size:.6875rem;font-weight:700;line-height:1.25rem}@keyframes pulse-border{0%,to{border-color:var(--amber)}50%{border-color:#d4a843}}@media (max-width: 480px){.vocab-flip-wrapper{height:240px}.vocab-flip-front .vocab-term{font-size:1.25rem}.vocab-flip-front.no-icon .vocab-term{font-size:1.625rem}.vocab-flip-back .vocab-translated{font-size:1.375rem}.student-header-actions{gap:.25rem}.focus-btn,.raise-hand-btn{padding:.3rem .625rem;font-size:.75rem}.lang-select{max-width:110px;font-size:.6875rem}}.tab-out-alerts{position:fixed;top:.75rem;inset-inline-end:.75rem;z-index:1000;display:flex;flex-direction:column;gap:.375rem}.tab-out-alert{background:var(--danger);color:#fff;padding:.625rem 1rem;border-radius:var(--radius);font-size:.875rem;font-weight:500;box-shadow:var(--shadow-lg);animation:slideIn .3s ease,fadeOut .3s ease 4.5s forwards}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.student-item.tabbed-out{border-color:var(--danger);background:var(--danger-light)}.status-badge{font-size:.6875rem;margin-inline-start:.25rem;font-weight:600}.status-badge.focus{color:var(--success)}.status-badge.tabbed-out{color:var(--danger)}.btn-accent{background:var(--amber);color:#fff;border:none;font-weight:600}.btn-accent:hover{background:var(--amber-hover)}.keywords-index-cards{display:flex;flex-wrap:wrap;gap:.5rem;padding:.375rem 0}.keyword-index-card{width:110px;flex-shrink:0;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:.625rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.3rem;transition:border-color .15s ease,background-color .15s ease;text-align:center}.keyword-index-card:hover{border-color:var(--primary)}.keyword-index-card.active{border-color:var(--success);background:var(--success-light)}.index-card-img{width:48px;height:48px;object-fit:contain;border-radius:var(--radius-sm)}.index-card-term{font-weight:600;font-size:.875rem}.index-card-status{font-size:.625rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.keyword-index-card.active .index-card-status{color:var(--success)}.keyword-index-card.appeared{border-color:var(--amber);background:var(--amber-light, rgba(245, 158, 11, .08))}.keyword-index-card.appeared .index-card-status{color:var(--amber)}.keyword-index-card.delivered{border-color:var(--success);background:var(--success-light)}.keyword-index-card.delivered .index-card-status{color:var(--success)}.keyword-freq-badge{display:inline-flex;align-items:center;justify-content:center;font-size:.625rem;font-weight:700;min-width:1.25rem;height:1.25rem;padding:0 .25rem;border-radius:9999px;background:var(--bg-surface-alt);color:var(--text-muted)}.keyword-index-card.appeared .keyword-freq-badge{background:var(--amber);color:#fff}.keyword-index-card.delivered .keyword-freq-badge{background:var(--success);color:#fff}.message-input-bar{display:flex;gap:.375rem;align-items:center;padding:.625rem .875rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.625rem}.message-input-bar .input{flex:1;min-width:0;padding:.5rem .875rem;font-size:.875rem;color:var(--text);background:var(--bg-surface);border:1px solid var(--border)}.message-input-bar .btn{width:auto;flex-shrink:0;padding:.5rem 1rem;font-size:.8125rem;white-space:nowrap}.message-history-panel{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:.875rem;margin-bottom:.625rem;max-height:200px;overflow-y:auto}.message-history-panel h4{margin-bottom:.375rem;font-size:.875rem}.message-history-item{display:flex;justify-content:space-between;align-items:center;padding:.3rem 0;border-bottom:1px solid var(--border-light)}.message-history-item:last-child{border-bottom:none}.message-history-item .message-text{font-size:.8125rem;flex:1}.message-history-item .message-meta{font-size:.6875rem;color:var(--text-muted);white-space:nowrap;margin-inline-start:.625rem}.delivery-mode-bar{display:flex;gap:.375rem;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--border-light);margin-bottom:.5rem}.btn-active{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-active:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.vocab-introduce-card{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);transition:border-color .15s ease}.vocab-introduce-card:hover{border-color:var(--teal)}.vocab-introduce-img{width:56px;height:56px;object-fit:contain;border-radius:var(--radius);flex-shrink:0}.vocab-introduce-terms{display:flex;align-items:center;gap:.375rem;flex-wrap:wrap;flex:1;min-width:0}.vocab-term-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .625rem;border:none;border-radius:var(--radius);font-weight:700;font-size:1.125rem;cursor:pointer;transition:background-color .15s ease,transform .1s ease;line-height:1.2}.vocab-term-btn:active{transform:scale(.97)}.vocab-term-btn .audio-icon{font-size:.875rem;opacity:.6}.vocab-term-english{background:var(--bg-surface-alt);color:var(--text)}.vocab-term-english:hover{background:var(--border)}.vocab-term-native{background:var(--teal);color:#fff}.vocab-term-native:hover{background:var(--teal-hover)}.vocab-term-divider{color:var(--text-muted);font-weight:600}.vocab-introduce-example{font-size:.8rem;color:var(--text-secondary);font-style:italic;padding-inline-start:.625rem;margin-top:-.25rem}.classroom-prompts-bar{display:flex;gap:.375rem;flex-wrap:wrap;align-items:center;padding:.5rem 0}.prompt-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.35rem .625rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-surface);color:var(--text);font-size:.8rem;font-weight:500;cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.prompt-btn:hover{border-color:var(--primary);background:var(--primary-light, #e8f0fe)}.prompt-btn.active{border-color:var(--primary);background:var(--primary);color:#fff}.prompt-btn-icon{font-size:1rem}.prompt-clear-btn{border-color:var(--text-muted);color:var(--text-muted);font-weight:600}.prompt-clear-btn:hover{border-color:var(--danger, #e53935);color:var(--danger, #e53935);background:var(--bg-surface)}.classroom-prompt-overlay{z-index:900;background:#fff8ebeb;animation:promptFadeIn .3s ease}.classroom-prompt-content{display:flex;flex-direction:column;align-items:center;gap:1.5rem;padding:2rem}.classroom-prompt-image{width:min(200px,50vw);height:min(200px,50vw);animation:promptPulse 2.5s ease-in-out infinite}.classroom-prompt-label{font-size:clamp(1.5rem,5vw,2.5rem);font-weight:700;color:var(--text);text-align:center;margin:0}@keyframes promptFadeIn{0%{opacity:0}to{opacity:1}}@keyframes promptPulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.teacher-message-popup{z-index:9999;background:#00000080;animation:popupFadeIn .3s ease}@keyframes popupFadeIn{0%{opacity:0}to{opacity:1}}.teacher-message-card{background:var(--bg-surface);border:2px solid var(--primary);border-radius:var(--radius-lg);padding:0;max-width:420px;width:90%;box-shadow:var(--shadow-lg);overflow:hidden}.teacher-message-countdown-bar{height:3px;background:var(--border-light);width:100%}.countdown-fill{height:100%;background:var(--primary);transition:width 1s linear;border-radius:2px}.teacher-message-text{font-size:1.25rem;font-weight:600;text-align:center;padding:1.25rem 1.25rem .75rem;line-height:1.5;color:var(--text)}.teacher-message-actions{display:flex;justify-content:center;gap:.375rem;padding:0 1.25rem 1.25rem}.msg-history-fab{position:fixed;bottom:1.25rem;inset-inline-end:1.25rem;z-index:900;background:var(--primary);color:#fff;border:none;border-radius:999px;padding:.5rem .875rem;font-size:.8125rem;font-weight:600;cursor:pointer;box-shadow:var(--shadow-lg);transition:background-color .15s ease}.msg-history-fab:hover{background:var(--primary-hover)}.message-history-overlay{z-index:950;background:#0006;align-items:flex-end}.message-history-student-panel{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:1rem;width:100%;max-width:500px;max-height:60vh;overflow-y:auto}.message-history-student-panel h3{margin-bottom:.625rem;font-size:.9375rem}.message-history-student-item{background:var(--bg-surface-alt);border-radius:var(--radius);padding:.625rem;margin-bottom:.375rem}.message-history-student-item p{font-size:.875rem;margin-bottom:.125rem}.message-history-student-meta{display:flex;justify-content:space-between;align-items:center;font-size:.6875rem;color:var(--text-muted)}.wida-badge{display:inline-block;background:var(--teal-light);color:var(--teal);font-size:.6875rem;font-weight:600;padding:.125rem .5rem;border-radius:var(--radius-sm);border:1px solid var(--teal);margin-bottom:.375rem}.hs-session-layout{display:flex;gap:1.25rem;min-height:calc(100vh - 240px)}.hs-left-col{flex:2;display:flex;flex-direction:column;min-width:0}.hs-right-col{flex:1;min-width:280px;max-width:360px;display:flex;flex-direction:column}.hs-transcript-area{display:flex;flex-direction:column;flex:1;min-height:380px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-surface);overflow:hidden}.hs-transcript-toolbar{display:flex;align-items:center;gap:.375rem;padding:.5rem .875rem;border-bottom:1px solid var(--border);background:var(--bg-surface-alt);flex-wrap:wrap;flex-shrink:0}.hs-transcript-toolbar.recording{background:var(--amber-light)}.hs-transcript-toolbar .rec-dot{width:8px;height:8px;border-radius:50%;background:var(--danger);animation:pulse 1.5s infinite;flex-shrink:0}.hs-transcript-toolbar .rec-dot.paused{background:var(--amber);animation:none}.hs-transcript-toolbar .rec-label{font-size:.75rem;color:var(--text-muted);margin-inline-end:auto;font-weight:500}.hs-transcript-toolbar .btn{font-size:.75rem;padding:.25rem .5rem;width:auto}.hs-transcript-toolbar select{font-size:.75rem;padding:.2rem .375rem;border-radius:4px;border:1px solid var(--border);background:var(--bg-surface);color:var(--text)}.hs-transcript-toolbar label{font-size:.75rem;display:flex;align-items:center;gap:.2rem;cursor:pointer;white-space:nowrap;color:var(--text-secondary)}.hs-transcript-toolbar .mic-error{color:var(--danger);font-size:.75rem;width:100%}.hs-transcript-scroll{flex:1;overflow-y:auto;padding:.875rem;line-height:1.8;font-size:.9375rem}.hs-transcript-scroll .segment{margin-bottom:.5rem;display:flex;gap:.375rem}.hs-transcript-scroll .seg-time{font-size:.6875rem;color:var(--text-muted);flex-shrink:0;padding-top:.125rem;min-width:2.75rem;text-align:end;font-weight:500}.hs-transcript-scroll .seg-text{flex:1;color:var(--text)}.hs-transcript-scroll .focus-term{font-weight:700;background:var(--amber-light);color:var(--amber-hover);border-radius:3px;padding:0 3px}.hs-transcript-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-muted);gap:.375rem;padding:2rem}.hs-transcript-empty .empty-icon{font-size:2.25rem;opacity:.35}.hs-transcript-empty p{font-size:.875rem;text-align:center}.hs-tab-bar{display:flex;border-bottom:2px solid var(--border);margin-bottom:0;flex-shrink:0}.hs-tab-bar button{flex:1;padding:.5rem .375rem;font-size:.75rem;font-weight:500;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;color:var(--text-muted);transition:color .15s,border-color .15s;white-space:nowrap}.hs-tab-bar button:hover{color:var(--text)}.hs-tab-bar button.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.hs-tab-content{flex:1;overflow-y:auto;border:1px solid var(--border);border-top:none;border-radius:0 0 var(--radius-lg) var(--radius-lg);background:var(--bg-surface);padding:.875rem}.hs-tab-content .hs-embedded-panel{border:none;padding:0;margin:0;border-radius:0;background:transparent}.hs-students-tab .student-row{display:flex;align-items:center;justify-content:space-between;padding:.375rem 0;border-bottom:1px solid var(--border-light);gap:.375rem}.hs-students-tab .student-row:last-child{border-bottom:none}.hs-students-tab .student-name-col{font-weight:500;font-size:.8125rem;display:flex;align-items:center;gap:.25rem}.hs-students-tab .student-controls{display:flex;align-items:center;gap:.3rem}@media (max-width: 900px){.hs-session-layout{flex-direction:column}.hs-right-col{max-width:none;min-width:0}.hs-transcript-area{min-height:auto;max-height:50vh}}.lesson-config-overlay{z-index:1000;background:#0006;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:1rem}.lesson-config-modal{width:100%;max-width:520px;max-height:90vh;display:flex;flex-direction:column;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden;animation:configSlideIn .2s ease-out}@keyframes configSlideIn{0%{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.lesson-config-header{padding:1.25rem 1.5rem .75rem;border-bottom:1px solid var(--border)}.lesson-config-header h2{font-size:1.25rem;margin:0 0 .25rem}.lesson-config-subtitle{font-size:.8125rem;color:var(--text-muted);margin:0}.lesson-config-body{padding:1rem 1.5rem;overflow-y:auto;flex:1}.lesson-config-intro{font-size:.8125rem;color:var(--text-muted);margin:0 0 1rem}.lesson-config-options{display:flex;flex-direction:column;gap:.25rem}.lesson-config-toggle{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem .875rem;border-radius:var(--radius);background:transparent;border:1px solid transparent;cursor:pointer;transition:background .15s,border-color .15s}.lesson-config-toggle:hover{background:var(--bg-surface-alt);border-color:var(--border)}.lesson-config-toggle-text{display:flex;flex-direction:column;gap:.15rem;flex:1;min-width:0}.lesson-config-toggle-label{font-size:.875rem;font-weight:600;color:var(--text)}.lesson-config-toggle-desc{font-size:.75rem;color:var(--text-muted);line-height:1.35}.lesson-config-languages{flex-direction:column;align-items:stretch;gap:.625rem;cursor:default}.lang-chip-picker{display:flex;flex-wrap:wrap;gap:.375rem}.lang-chip{min-height:var(--btn-min-height, 32px);padding-block:.25rem;padding-inline:.75rem;border:1px solid var(--border);border-radius:999px;background:var(--bg-surface);color:var(--text);font-size:.875rem;line-height:1.3;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.lang-chip:hover{border-color:var(--primary)}.lang-chip.selected{background:var(--primary-light);border-color:var(--primary);color:var(--primary);font-weight:600}.lang-chip:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.lang-chip:disabled{opacity:.45;cursor:not-allowed}.lesson-config-default-language{display:flex;align-items:center;justify-content:space-between;gap:1rem;cursor:default}.lesson-config-default-language .lang-select{max-width:180px;font-size:.8125rem;min-height:var(--btn-min-height, 32px)}.toggle-switch{position:relative;display:inline-flex;align-items:center;width:44px;height:24px;border-radius:12px;border:none;cursor:pointer;flex-shrink:0;transition:background-color .2s;padding:0}.toggle-switch.off{background-color:var(--border)}.toggle-switch.on{background-color:var(--primary)}.toggle-knob{position:absolute;top:2px;inset-inline-start:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .2s}.toggle-switch.on .toggle-knob{transform:translate(20px)}.lesson-config-footer{padding:.875rem 1.5rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:.5rem}.activity-picker-wrapper{position:relative;display:inline-block}.activity-picker-popover{position:absolute;top:calc(100% + .5rem);inset-inline-start:0;z-index:50;width:280px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:.5rem;display:flex;flex-direction:column;gap:.25rem}.activity-picker-item{display:flex;align-items:center;gap:.75rem;padding:.625rem .75rem;border-radius:var(--radius);border:none;background:transparent;cursor:pointer;text-align:start;width:100%;transition:background .15s}.activity-picker-item:hover:not(:disabled){background:var(--primary-light)}.activity-picker-item:disabled{opacity:.5;cursor:not-allowed}.activity-picker-item:disabled .activity-picker-item-name{color:var(--text-muted)}.activity-picker-item-icon{font-size:1.25rem;flex-shrink:0;width:1.75rem;text-align:center}.activity-picker-item-text{display:flex;flex-direction:column;gap:.1rem;min-width:0}.activity-picker-item-name{font-size:.8125rem;font-weight:600;color:var(--text)}.activity-picker-item-desc{font-size:.6875rem;color:var(--text-muted);line-height:1.3}.slide-chips{display:flex;gap:.3rem;flex-wrap:wrap;align-items:center}.slide-chip{display:inline-flex;align-items:center;gap:.2rem;background:var(--primary-light);color:var(--primary);padding:.2rem .5rem;border-radius:var(--tag-radius);font-size:.7rem;font-weight:500;line-height:1}.slide-chip-remove{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:0;font-size:.75rem;line-height:1;display:inline-flex;align-items:center}.slide-chip-remove:hover{color:var(--danger)}.slide-add-wrapper{position:relative;display:inline-flex}.slide-add-btn{background:var(--bg-surface-alt);color:var(--text-muted);border:none;padding:.2rem .4rem;border-radius:var(--tag-radius);font-size:.7rem;font-weight:600;cursor:pointer;line-height:1}.slide-add-btn:hover{background:var(--border)}.slide-add-dropdown{position:absolute;top:calc(100% + .35rem);inset-inline-start:0;z-index:20;min-width:120px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:.35rem}.slide-add-dropdown-header{font-size:.6rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;padding:.2rem .4rem}.slide-add-dropdown-item{display:block;width:100%;background:transparent;border:none;text-align:start;padding:.35rem .5rem;border-radius:var(--radius-sm);font-size:.75rem;color:var(--text);cursor:pointer}.slide-add-dropdown-item:hover{background:var(--primary-light)}.slide-no-slides{font-size:.7rem;color:var(--text-muted);margin-inline-end:.3rem}.slide-tabs{display:flex;gap:.35rem;overflow-x:auto;padding:.5rem 0;border-bottom:1px solid var(--border);margin-bottom:.75rem}.slide-tab{padding:.35rem .7rem;font-size:.78rem;font-weight:500;border:none;border-radius:var(--tag-radius);cursor:pointer;white-space:nowrap;background:var(--bg-surface-alt);color:var(--text-secondary);transition:background .15s,color .15s}.slide-tab:hover{background:var(--border)}.slide-tab.active{background:var(--primary);color:#fff}.slide-selector{margin-bottom:.75rem;padding:.5rem 0;border-bottom:1px solid var(--border)}.slide-selector select{padding:.4rem .75rem;font-size:.8rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-surface);color:var(--text);cursor:pointer;min-width:200px}.language-chooser-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;margin-top:1rem;max-width:400px}.language-chooser-btn{display:flex;align-items:center;gap:.5rem;padding:.625rem .875rem!important;font-size:.9375rem!important;text-align:start}html.simulated-focus body{overflow:hidden}html.simulated-focus .student-header,html.simulated-focus .language-toggle-container,html.simulated-focus .msg-history-fab{display:none}html.simulated-focus .page[data-surface=student]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:var(--bg-app);display:flex;flex-direction:column;justify-content:flex-start;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;min-height:0;padding-block-start:0}html.simulated-focus .page[data-surface=student]:before{content:"Focus Mode";display:block;position:sticky;inset-block-start:0;z-index:var(--z-sticky);align-self:stretch;margin-block-end:1rem;text-align:center;padding:.5rem;background:var(--primary);color:var(--text-on-primary);font-weight:600;font-size:.875rem}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;text-transform:none}.icon{stroke-width:var(--icon-stroke, 2);vertical-align:-.125em;flex-shrink:0}[dir=rtl] .icon-mirror-rtl{transform:scaleX(-1)}.icon-spin{animation:icon-spin 1s linear infinite}@keyframes icon-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.icon-spin{animation:none}}.skip-link{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;z-index:10000;padding:.5rem 1rem;background:var(--primary);color:#fff;font-weight:600;border-radius:0 0 var(--radius) var(--radius)}.skip-link:focus{width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;position:fixed;top:0;left:50%;transform:translate(-50%)}.connection-status{position:fixed;inset-block-start:.5rem;inset-inline-end:.5rem;z-index:var(--z-toast);display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .7rem;border-radius:999px;font-size:.8125rem;font-weight:600;line-height:1.2;border:1px solid var(--border);background:var(--bg-surface);color:var(--text-secondary);box-shadow:var(--shadow-md)}.connection-status-hidden{opacity:0;pointer-events:none;transform:translateY(-4px)}.connection-status[data-state=connected]{color:var(--text);background:var(--success-light);border-color:var(--success-light)}.connection-status[data-state=connected] .connection-status-icon{color:var(--success)}.connection-status[data-state=reconnecting],.connection-status[data-state=connecting]{color:var(--text);background:var(--warning-light);border-color:var(--warning-light)}.connection-status[data-state=reconnecting] .connection-status-icon,.connection-status[data-state=connecting] .connection-status-icon{color:var(--warning)}.connection-status[data-state=offline],.connection-status[data-state=failed]{color:var(--text);background:var(--danger-light);border-color:var(--danger-light)}.connection-status[data-state=offline] .connection-status-icon,.connection-status[data-state=failed] .connection-status-icon{color:var(--danger)}.connection-status-icon{display:inline-flex}.connection-status-retry{margin-inline-start:.35rem;min-block-size:24px;min-inline-size:24px;padding:.15rem .55rem;border-radius:999px;border:1px solid currentColor;background:transparent;color:inherit;font:inherit;cursor:pointer}.connection-status.connection-status-inline{position:static;box-shadow:none}@media (prefers-reduced-motion: no-preference){.connection-status{transition:opacity .2s ease,transform .2s ease}}.socket-error-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-block-end:1rem;padding:.875rem 1rem;border-radius:var(--radius);border:1px solid var(--danger);background:var(--danger-light);color:var(--danger);font-size:.9rem}.socket-error-banner-actions{display:flex;gap:.5rem}.socket-toast-stack{position:fixed;inset-block-end:1rem;inset-inline-end:1rem;z-index:var(--z-toast);display:flex;flex-direction:column;gap:.5rem;max-inline-size:min(360px,calc(100vw - 2rem))}.socket-toast{display:flex;align-items:flex-start;gap:.5rem;padding:.65rem .75rem;border-radius:var(--radius);border:1px solid var(--border);border-inline-start:3px solid var(--warning);background:var(--bg-surface);color:var(--text);box-shadow:var(--shadow-lg);font-size:.85rem}.socket-toast-text{flex:1}.socket-toast-code{display:block;color:var(--text-muted);font-size:.75rem}.socket-toast-dismiss{background:none;border:none;color:var(--text-muted);cursor:pointer;min-block-size:24px;min-inline-size:24px;padding:0 .15rem}.status-badge.reconnecting{color:var(--accent-hover)}.student-item[data-presence=reconnecting]{opacity:.7}@font-face{font-family:Caveat;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/caveat-cyrillic-ext.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Caveat;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/caveat-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Caveat;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/caveat-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Caveat;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/caveat-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-weight:200 600;font-display:swap;src:url(/fonts/fraunces-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:200 600;font-display:swap;src:url(/fonts/fraunces-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:200 600;font-display:swap;src:url(/fonts/fraunces-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(/fonts/jetbrains-mono-cyrillic-ext.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(/fonts/jetbrains-mono-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(/fonts/jetbrains-mono-greek.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(/fonts/jetbrains-mono-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(/fonts/jetbrains-mono-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(/fonts/jetbrains-mono-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}[data-surface=teacher][data-theme=notebook]{--bg-app: #F5F0E6;--bg-surface: #FAF6EC;--bg-surface-alt: #ECE3D2;--bg-inset: #E5DCC2;--surface: var(--bg-surface);--surface-2: var(--bg-surface-alt);--primary: #C1272D;--primary-hover: #8A1C20;--primary-light: #FFF1DC;--text: #1C1A17;--text-secondary: #4A4740;--text-muted: #6B6560;--border: #D8CEB8;--border-light: #ECE3D2;--card-bg: var(--bg-surface);--card-border: var(--border);--radius-sm: 2px;--radius: 2px;--radius-lg: 4px;--tag-radius: 4px;--shadow-sm: 0 1px 0 #D8CEB8;--shadow-md: 1px 3px 6px rgba(28,26,23,.08);--shadow-lg: 2px 6px 16px rgba(28,26,23,.12);--focus-ring: 0 0 0 3px rgba(193,39,45,.35);--paper: #F5F0E6;--paper-raised: #FAF6EC;--paper-sunken: #ECE3D2;--paper-gutter: #E5DCC2;--ink: #1C1A17;--ink-soft: #4A4740;--ink-muted: #8A847A;--marker: #C1272D;--marker-ink: #8A1C20;--ochre: #B8873B;--rule: #D8CEB8;--rule-strong: #BFB59E;--rule-line: rgba(75,155,229,.18);--note-yellow: #F5C842;--note-green: #E8F0E0;--note-peach: #FFF1DC;--note-pink: #F5E2E0;--note-blue: #E0EAF5;--brand-blue: #4B9BE5;--brand-green: #3CA86E;--brand-pink: #E84F8E;--font-display: "Fraunces", "ML-Text", ui-serif, Georgia, serif;--font-hand: "Caveat", "Marker Felt", cursive;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, monospace;background:var(--paper);color:var(--ink);font-family:var(--font-teacher)}[data-surface=teacher][data-theme=notebook] .nb-ruled{background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 31px,var(--rule-line) 31px,var(--rule-line) 32px)}[data-surface=teacher][data-theme=notebook] .nb-tilt{transform:rotate(var(--nb-tilt, 0deg))}@media (prefers-reduced-motion: reduce){[data-surface=teacher][data-theme=notebook] .nb-tilt{transform:none!important}[data-surface=teacher][data-theme=notebook] *{transition:none!important}}
