@font-face{font-family:Vazirmatn;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/vazirmatn-arabic-400-normal-DMZFCm7K.woff2) format("woff2"),url(/assets/vazirmatn-arabic-400-normal-C4W5XURk.woff) format("woff");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:Vazirmatn;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/vazirmatn-latin-ext-400-normal-BdGhO0lm.woff2) format("woff2"),url(/assets/vazirmatn-latin-ext-400-normal-DPxMaNjI.woff) format("woff");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:Vazirmatn;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/vazirmatn-latin-400-normal-BT_DHTc7.woff2) format("woff2"),url(/assets/vazirmatn-latin-400-normal-GKyMcI03.woff) format("woff");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:Vazirmatn;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/vazirmatn-arabic-500-normal-C_lbnnKa.woff2) format("woff2"),url(/assets/vazirmatn-arabic-500-normal-Dqq3-xo3.woff) format("woff");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:Vazirmatn;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/vazirmatn-latin-ext-500-normal-CgxvvVrG.woff2) format("woff2"),url(/assets/vazirmatn-latin-ext-500-normal-4XgegWYb.woff) format("woff");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:Vazirmatn;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/vazirmatn-latin-500-normal-6zZzgpg4.woff2) format("woff2"),url(/assets/vazirmatn-latin-500-normal-Bg_BALlD.woff) format("woff");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:Vazirmatn;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/vazirmatn-arabic-600-normal-CPKvAnd1.woff2) format("woff2"),url(/assets/vazirmatn-arabic-600-normal-CWYTfCgi.woff) format("woff");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:Vazirmatn;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/vazirmatn-latin-ext-600-normal-CyxCUfFz.woff2) format("woff2"),url(/assets/vazirmatn-latin-ext-600-normal-Di8rk35l.woff) format("woff");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:Vazirmatn;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/vazirmatn-latin-600-normal-D-zF-Oec.woff2) format("woff2"),url(/assets/vazirmatn-latin-600-normal-BxJiDPKT.woff) format("woff");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:Vazirmatn;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/vazirmatn-arabic-700-normal-Dge_DOjm.woff2) format("woff2"),url(/assets/vazirmatn-arabic-700-normal-B5nPuCFv.woff) format("woff");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:Vazirmatn;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/vazirmatn-latin-ext-700-normal-BfoXmNMx.woff2) format("woff2"),url(/assets/vazirmatn-latin-ext-700-normal-DMYLqBto.woff) format("woff");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:Vazirmatn;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/vazirmatn-latin-700-normal-9BlbvDRV.woff2) format("woff2"),url(/assets/vazirmatn-latin-700-normal-DrB0PBU6.woff) format("woff");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:Vazirmatn;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/vazirmatn-arabic-800-normal-Bwnt96zj.woff2) format("woff2"),url(/assets/vazirmatn-arabic-800-normal-BH12s3-y.woff) format("woff");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:Vazirmatn;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/vazirmatn-latin-ext-800-normal-BzH3Tiwu.woff2) format("woff2"),url(/assets/vazirmatn-latin-ext-800-normal-HbVXW2Kv.woff) format("woff");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:Vazirmatn;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/vazirmatn-latin-800-normal-e0EQwLmk.woff2) format("woff2"),url(/assets/vazirmatn-latin-800-normal-fM8Xz9cI.woff) format("woff");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}:root{color-scheme:dark;--bg: #0c0d11;--surface-1: #131419;--surface-2: #1a1c22;--surface-3: #23252d;--surface-4: #2c2f38;--stage: #08090b;--scrim: rgb(4 5 8 / .74);--line: #22242c;--line-strong: #31343e;--line-hover: #444856;--text-1: #eceef2;--text-2: #b4b8c3;--text-3: #8d929f;--accent: #8b9cff;--accent-hover: #a5b2ff;--accent-ink: #0b0f2e;--accent-soft: rgb(139 156 255 / .14);--accent-line: rgb(139 156 255 / .36);--accent-text: #b5bfff;--danger: #f27d86;--danger-fill: #c8414e;--danger-fill-hover: #d75460;--danger-soft: rgb(242 125 134 / .13);--danger-line: rgb(242 125 134 / .34);--danger-text: #f7b4ba;--success: #4fc48f;--success-soft: rgb(79 196 143 / .13);--success-line: rgb(79 196 143 / .34);--success-text: #8edcb6;--warning: #e3b55c;--warning-soft: rgb(227 181 92 / .14);--warning-line: rgb(227 181 92 / .34);--warning-text: #f0d49c;--chart-track: #1d1f26;--chart-grid: #24262e;--chart-bar: #8b9cff;--chart-area: rgb(139 156 255 / .16);--net-excellent: #5b8def;--net-good: #2f9f68;--net-poor: #b0801c;--net-lost: #e25a70;--focus: #c3cbff;--font: "Vazirmatn", Tahoma, system-ui, sans-serif;--fs-2xs: .6875rem;--fs-xs: .75rem;--fs-sm: .8125rem;--fs-md: .9375rem;--fs-lg: 1.0625rem;--fs-xl: 1.375rem;--fs-2xl: 1.875rem;--fs-3xl: 2.5rem;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--s-10: 40px;--s-12: 48px;--r-1: 8px;--r-2: 12px;--r-3: 16px;--r-4: 20px;--r-pill: 999px;--sidebar-w: 256px;--tabbar-h: 64px;--content-max: 1240px;--control-h: 44px;--icon-sm: 16px;--icon-md: 20px;--ease: cubic-bezier(.2, 0, 0, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--t-fast: .12s;--t-base: .2s;--t-slow: .32s;--shadow-overlay: 0 24px 64px rgb(0 0 0 / .5), 0 0 0 1px rgb(255 255 255 / .04);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}:root:has(.admin.is-owner){--accent: #cf9bf2;--accent-hover: #dcb4f6;--accent-ink: #220d30;--accent-soft: rgb(207 155 242 / .14);--accent-line: rgb(207 155 242 / .36);--accent-text: #e2c2f8;--chart-bar: #cf9bf2;--chart-area: rgb(207 155 242 / .16);--focus: #e6ccf9}:root:has(.room),:root:has(.rec){--bg: #0a0b0e;--surface-1: #121318;--surface-2: #191b21;--surface-3: #22242b;--surface-4: #2b2e36;--stage: #060709}*,*:before,*:after{box-sizing:border-box}html{background:var(--bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{min-width:320px;min-height:100dvh;margin:0;background:var(--bg);color:var(--text-1);font-family:var(--font);font-size:var(--fs-md);line-height:1.6;font-synthesis:none;-webkit-font-smoothing:antialiased}body:has(.room){overflow:hidden}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.3;font-weight:700;letter-spacing:-.005em}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}a{color:var(--accent-text)}input,select,textarea{font-size:1rem}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}svg{flex:0 0 auto}::selection{background:var(--accent-soft);color:var(--text-1)}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{border:3px solid transparent;border-radius:10px;background:var(--line-strong) padding-box}::-webkit-scrollbar-thumb:hover{background-color:var(--line-hover)}::-webkit-scrollbar-track{background:transparent}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.num{font-variant-numeric:tabular-nums}.ltr{direction:ltr;unicode-bidi:isolate}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.btn{min-height:var(--control-h);display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);padding:0 var(--s-4);border:1px solid transparent;border-radius:var(--r-2);background:transparent;color:var(--text-1);font-size:var(--fs-sm);font-weight:600;line-height:1;text-decoration:none;white-space:nowrap;transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.btn svg{width:var(--icon-sm);height:var(--icon-sm)}.btn:not(:disabled):active{transform:scale(.98)}.btn:disabled{opacity:.45}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:not(:disabled):hover{background:var(--accent-hover)}.btn-secondary{border-color:var(--line-strong);background:var(--surface-2)}.btn-secondary:not(:disabled):hover{border-color:var(--line-hover);background:var(--surface-3)}.btn-ghost{color:var(--text-2)}.btn-ghost:not(:disabled):hover{background:var(--surface-2);color:var(--text-1)}.btn-danger{background:var(--danger-fill);color:#fff}.btn-danger:not(:disabled):hover{background:var(--danger-fill-hover)}.btn-sm{min-height:36px;padding:0 var(--s-3)}.btn-icon{width:var(--control-h);padding:0}.btn-icon.btn-sm{width:36px}.btn-block{width:100%}.btn:not(:disabled):active{background-color:var(--surface-3)}.btn-primary:not(:disabled):active{background-color:var(--accent);filter:brightness(.92)}.field{display:grid;gap:6px;min-width:0}.field-label{color:var(--text-2);font-size:var(--fs-sm);font-weight:600}.field-hint{color:var(--text-3);font-size:var(--fs-xs);line-height:1.6}.input,.select,.textarea{width:100%;min-height:var(--control-h);padding:0 var(--s-3);border:1px solid var(--line-strong);border-radius:var(--r-2);background:var(--surface-2);color:var(--text-1);transition:border-color var(--t-fast) var(--ease)}.textarea{min-height:140px;padding:var(--s-3);line-height:1.7;resize:vertical}.input::placeholder,.textarea::placeholder{color:var(--text-3)}.input:hover,.select:hover,.textarea:hover{border-color:var(--line-hover)}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}.input:disabled{color:var(--text-3)}.input[dir=ltr],.textarea[dir=ltr]{text-align:left}.input-group{display:flex;gap:var(--s-2)}.input-group .input{flex:1}.search{position:relative;display:flex;align-items:center;min-width:0}.search svg{position:absolute;inset-inline-start:var(--s-3);color:var(--text-3);pointer-events:none}.search .input{padding-inline-start:36px}.check{min-height:var(--control-h);display:flex;align-items:center;gap:var(--s-3);font-size:var(--fs-sm);cursor:pointer}.check input{width:18px;height:18px;margin:0;accent-color:var(--accent)}.check-field{grid-column:1 / -1;align-items:flex-start;padding-block:var(--s-2)}.check-field input{margin-block-start:3px;flex:none}.check-field>span{display:grid;gap:var(--s-1)}.alert{display:grid;gap:var(--s-1);padding:var(--s-3);border:1px solid transparent;border-radius:var(--r-2);font-size:var(--fs-sm);line-height:1.7}.alert-danger{border-color:var(--danger-line);background:var(--danger-soft);color:var(--danger-text)}.alert-warning{border-color:var(--warning-line);background:var(--warning-soft);color:var(--warning-text)}.alert-success{border-color:var(--success-line);background:var(--success-soft);color:var(--success-text)}.alert ul{margin:0;padding-inline-start:var(--s-5)}.tabs{display:flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--bg)}.tab{min-height:38px;flex:1;display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);padding:0 var(--s-3);border:0;border-radius:var(--r-pill);background:transparent;color:var(--text-2);font-size:var(--fs-sm);font-weight:600;white-space:nowrap;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.tab:hover{color:var(--text-1)}.tab[aria-selected=true]{background:var(--surface-3);color:var(--text-1);box-shadow:inset 0 0 0 1px var(--line-strong)}.segmented{max-width:100%;display:inline-flex;flex-wrap:wrap;gap:2px;padding:3px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--bg)}.segmented button{min-height:36px;display:inline-flex;align-items:center;gap:6px;padding:0 var(--s-4);border:0;border-radius:var(--r-pill);background:transparent;color:var(--text-2);font-size:var(--fs-sm);font-weight:600;white-space:nowrap;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.segmented button:hover{color:var(--text-1)}.segmented button[aria-checked=true],.segmented button[aria-pressed=true]{background:var(--surface-3);color:var(--text-1);box-shadow:inset 0 0 0 1px var(--line-strong)}.segmented-count{color:var(--text-3);font-size:var(--fs-xs);font-weight:500}.segmented button[aria-pressed=true] .segmented-count{color:var(--text-2)}.badge{min-width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;gap:3px;padding:0 6px;border-radius:10px;background:var(--danger-fill);color:#fff;font-size:var(--fs-xs);font-weight:700;line-height:1}.badge svg{width:12px;height:12px}.badge-warning{background:var(--warning);color:#1e1606}.tag{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:var(--r-pill);background:var(--surface-3);color:var(--text-2);font-size:var(--fs-xs);font-weight:600;white-space:nowrap}.tag-accent{background:var(--accent-soft);color:var(--accent-text)}.tag-success{background:var(--success-soft);color:var(--success-text)}.tag-warning{background:var(--warning-soft);color:var(--warning-text)}.tag-danger{background:var(--danger-soft);color:var(--danger-text)}.tag-muted{background:transparent;border:1px solid var(--line-strong);color:var(--text-3)}.muted{color:var(--text-2);font-size:var(--fs-sm);line-height:1.7}.empty{display:grid;justify-items:center;gap:var(--s-2);padding:var(--s-10) var(--s-5);border:1px dashed var(--line-strong);border-radius:var(--r-4);color:var(--text-2);font-size:var(--fs-sm);text-align:center}.empty strong{color:var(--text-1);font-size:var(--fs-md)}.empty>svg{width:44px;height:44px;margin-bottom:var(--s-1);padding:12px;border-radius:50%;background:var(--surface-2);color:var(--text-3)}.spinner{width:18px;height:18px;border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.page-loading{min-height:100dvh;display:grid;place-content:center;justify-items:center;gap:var(--s-3);color:var(--text-2);font-size:var(--fs-sm)}.dialog-backdrop{position:fixed;z-index:60;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:var(--s-5);background:var(--scrim);animation:fade-in var(--t-base) var(--ease)}.dialog{width:min(100%,440px);max-height:calc(100dvh - 40px);display:flex;flex-direction:column;border:1px solid var(--line-strong);border-radius:var(--r-4);background:var(--surface-1);box-shadow:var(--shadow-overlay);animation:dialog-in var(--t-base) var(--ease-out)}.dialog.is-wide{width:min(100%,640px)}.dialog.is-media{width:min(100%,960px)}.dialog-header{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-4) var(--s-5) var(--s-3)}.dialog-header h2{flex:1;font-size:var(--fs-lg);font-weight:700}.dialog-body{min-height:0;display:grid;gap:var(--s-4);padding:var(--s-2) var(--s-5) var(--s-5);overflow-y:auto}.dialog-footer{display:flex;justify-content:flex-end;gap:var(--s-2);padding:var(--s-4) var(--s-5);border-top:1px solid var(--line)}.dialog-footer .btn{min-width:110px}@keyframes fade-in{0%{opacity:0}}@keyframes dialog-in{0%{opacity:0;transform:translateY(6px) scale(.985)}}@keyframes sheet-in{0%{transform:translateY(24px);opacity:0}}@media(max-width:640px){.dialog-backdrop{align-items:end;padding:0}.dialog,.dialog.is-wide,.dialog.is-media{width:100%;max-height:92dvh;border-width:1px 0 0;border-radius:var(--r-4) var(--r-4) 0 0;padding-bottom:var(--safe-bottom);animation:sheet-in var(--t-base) var(--ease)}.dialog.is-full{height:100dvh;max-height:none;border-radius:0}.dialog-header:before{content:"";position:absolute;inset-inline:0;top:6px;width:36px;height:4px;margin-inline:auto;border-radius:2px;background:var(--line-strong)}.dialog-header{position:relative;padding-top:var(--s-5)}.dialog.is-full .dialog-header:before{display:none}.dialog-footer{flex-wrap:wrap}.dialog-footer .btn{flex:1 1 96px;min-width:0}}.action-list{display:grid;grid-template-columns:minmax(0,1fr);gap:2px;margin:0;padding:0;list-style:none}.action-item{width:100%;min-height:52px;display:flex;align-items:center;gap:var(--s-3);padding:0 var(--s-3);border:0;border-radius:var(--r-2);background:transparent;color:var(--text-1);font-size:var(--fs-md);text-align:start}.action-item svg{width:var(--icon-md);height:var(--icon-md);color:var(--text-2)}.action-item:not(:disabled):hover{background:var(--surface-2)}.action-item:disabled{color:var(--text-3)}.action-item[aria-current=true]{background:var(--accent-soft)}.action-item[aria-current=true] svg{color:var(--accent-text)}.action-item.is-danger,.action-item.is-danger svg{color:var(--danger)}.action-item span:first-of-type{flex:1}.action-item small{color:var(--text-3);font-size:var(--fs-xs)}.conversion-status{display:inline-flex;align-items:center;gap:6px}.conversion-status .spinner{flex:none;width:12px;height:12px}.action-item small.conversion-status.is-failed{color:var(--warning-text)}.toast{position:fixed;z-index:55;inset-inline:var(--s-4);bottom:calc(var(--toast-offset, 24px) + var(--safe-bottom));width:fit-content;max-width:min(calc(100% - 32px),420px);margin-inline:auto;padding:var(--s-3) var(--s-5);border:1px solid var(--line-strong);border-radius:var(--r-pill);background:var(--surface-3);color:var(--text-1);font-size:var(--fs-sm);box-shadow:var(--shadow-overlay);opacity:0;pointer-events:none;transform:translateY(8px);transition:opacity var(--t-base) var(--ease),transform var(--t-base) var(--ease)}.toast.is-visible{opacity:1;transform:none}.avatar{width:36px;height:36px;display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:var(--accent-soft);color:var(--accent-text);font-size:var(--fs-sm);font-weight:700}.inline-loading{display:flex;align-items:center;justify-content:center;gap:var(--s-3);padding:var(--s-8) 0;color:var(--text-2);font-size:var(--fs-sm)}.stack{display:grid;gap:var(--s-4);min-width:0}.stack-sm{display:grid;gap:var(--s-2);min-width:0}.error-fallback{min-width:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--s-2) var(--s-3);padding:var(--s-4);color:var(--text-2);font-size:var(--fs-sm);line-height:1.7;text-align:center}.error-fallback-icon{flex:none;width:20px;height:20px;color:var(--warning)}.error-fallback-text{display:grid;gap:var(--s-1);min-width:0}.error-fallback-text strong{color:var(--text-1);font-weight:600}.error-fallback-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-2)}.error-fallback.is-section,.error-fallback.is-page{flex-direction:column}.error-fallback.is-stage,.error-fallback.is-page{flex-direction:column;min-height:0}.error-fallback.is-page{min-height:100dvh;padding:var(--s-6) var(--s-4)}.error-fallback.is-titlebar,.error-fallback.is-toolbar,.error-fallback.is-cameras{justify-content:flex-start;padding:var(--s-1) var(--s-3);text-align:start}.action-row{display:flex;align-items:center;gap:var(--s-1)}.action-row .action-item{flex:1;min-width:0}.action-row .action-item span:first-of-type{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.split-place{flex:0 0 auto;gap:6px;color:var(--text-2)}.split-place svg{width:15px;height:15px}.split-place.is-active{background:var(--accent-soft);color:var(--accent-text)}.pwa-banner{position:fixed;inset-inline:var(--s-4);inset-block-end:calc(var(--s-4) + var(--safe-bottom));z-index:100;display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);max-inline-size:38rem;margin-inline:auto;padding:var(--s-3) var(--s-4);background:var(--surface-3);border:1px solid var(--line-strong);border-radius:var(--r-3);box-shadow:var(--shadow-overlay);font-size:var(--fs-sm)}.tracking-code{display:block;color:var(--text-2);font-size:var(--fs-xs)}.tracking-code bdi{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.04em;-webkit-user-select:all;user-select:all}.brand-mark{display:block;width:32px;height:32px;flex:0 0 auto;object-fit:contain;-webkit-user-select:none;user-select:none}.brand-name{font-weight:800;letter-spacing:0;unicode-bidi:isolate}.auth{min-height:100dvh;display:grid;place-items:center;padding:calc(var(--s-6) + var(--safe-top)) var(--s-4) calc(var(--s-6) + var(--safe-bottom))}.auth-panel{width:min(100%,380px);display:grid;gap:var(--s-6)}.auth-head{display:grid;gap:var(--s-3)}.auth-head .brand-mark{width:44px;height:44px}.auth-head h1{font-size:var(--fs-2xl);font-weight:800;letter-spacing:-.01em}.auth-head p{color:var(--text-2);font-size:var(--fs-sm);line-height:1.8}.auth-form{display:grid;gap:var(--s-4)}.auth-form .btn-primary{min-height:50px;margin-top:var(--s-1);border-radius:var(--r-2);font-size:var(--fs-md)}.auth-foot{color:var(--text-3);font-size:var(--fs-xs);line-height:1.8}.auth-class{color:var(--text-1);font-weight:800}.auth-guest{display:grid;gap:var(--s-3)}.auth-guest .btn{min-height:48px}.auth-or{display:flex;align-items:center;gap:var(--s-3);color:var(--text-3);font-size:var(--fs-xs)}.auth-or:before,.auth-or:after{content:"";flex:1;height:1px;background:var(--line)}.input-affix{position:relative;display:flex;align-items:center}.input-affix .input{padding-inline-end:48px}.input-affix .input[dir=ltr]{padding-inline:var(--s-3) 48px}.input-affix-button{position:absolute;inset-inline-end:4px;width:40px;height:36px;display:grid;place-items:center;border:0;border-radius:var(--r-1);background:transparent;color:var(--text-3)}.input-affix:has(.input[dir=ltr]) .input-affix-button{inset-inline-end:auto;right:4px}.input-affix-button:hover{background:var(--surface-3);color:var(--text-1)}.input-affix-button svg{width:var(--icon-sm);height:var(--icon-sm)}.auth-aside{display:none}@media(min-width:960px){.auth:has(.auth-aside){grid-template-columns:minmax(0,1.1fr) minmax(420px,1fr);place-items:stretch;padding:var(--s-4);gap:var(--s-4)}.auth:has(.auth-aside) .auth-panel{align-self:center;justify-self:center}.auth:has(.auth-aside) .auth-head .brand-mark{display:none}.auth-aside{order:2;min-height:calc(100dvh - 32px);display:grid;grid-template-rows:auto 1fr auto;gap:var(--s-8);padding:var(--s-8);border:1px solid var(--line);border-radius:var(--r-4);background:var(--surface-1)}.auth-aside-brand{display:flex;align-items:center;gap:var(--s-3);font-weight:700}.auth-aside-copy{display:grid;gap:var(--s-2);max-width:30rem}.auth-aside-copy strong{font-size:var(--fs-3xl);font-weight:800;line-height:1.25;letter-spacing:-.015em;text-wrap:balance}.auth-aside-copy span{color:var(--text-2);font-size:var(--fs-md);line-height:1.8}}.auth-art{width:min(100%,520px);align-self:center;justify-self:center}.auth-art .art-frame{stroke:var(--line-strong);fill:var(--bg)}.auth-art .art-stage{fill:var(--surface-2);stroke:var(--line-strong)}.auth-art .art-soft{fill:var(--surface-3)}.auth-art .art-line{fill:var(--surface-2);stroke:var(--line-strong)}.auth-art .art-accent{fill:var(--accent-soft);stroke:var(--accent-line)}.auth-art .art-cam{fill:var(--surface-2);stroke:var(--line-strong)}.auth-art .art-cam.is-speaking{stroke:var(--success);stroke-width:2}.auth-art .art-ink{stroke:var(--accent);stroke-width:3;stroke-linecap:round;fill:none}.auth-art .art-dot{fill:var(--accent)}.status-panel{justify-items:center;text-align:center}.status-panel .auth-head{justify-items:center}.status-actions{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:var(--s-2)}.shell{min-height:100dvh}.shell-header{position:sticky;top:0;z-index:20;height:calc(64px + var(--safe-top));display:flex;align-items:center;gap:var(--s-5);padding:var(--safe-top) max(var(--s-4),calc((100vw - 1120px)/2)) 0;border-bottom:1px solid var(--line);background:#0c0d11eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.shell-brand{display:flex;align-items:center;gap:var(--s-2);color:var(--text-1);font-weight:700;text-decoration:none}.shell-nav{display:flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface-1)}.shell-nav a{min-height:34px;display:inline-flex;align-items:center;padding:0 var(--s-4);border-radius:var(--r-pill);color:var(--text-2);font-size:var(--fs-sm);font-weight:600;text-decoration:none;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.shell-nav a:hover{color:var(--text-1)}.shell-nav a[aria-current=page]{background:var(--surface-3);color:var(--text-1)}.shell-user{display:flex;align-items:center;gap:var(--s-2);margin-inline-start:auto}.shell-user-name{display:grid;line-height:1.35;text-align:end}.shell-user-name strong{font-size:var(--fs-sm);font-weight:600}.shell-user-name span{color:var(--text-3);font-size:var(--fs-xs)}.page{width:min(100% - 32px,1120px);display:grid;gap:var(--s-6);margin:var(--s-8) auto calc(var(--s-10) + var(--safe-bottom))}.page-head{display:grid;gap:var(--s-1)}.page-head h1{font-size:var(--fs-2xl);font-weight:800;letter-spacing:-.01em}.page-head p{color:var(--text-2);font-size:var(--fs-sm)}@media(max-width:640px){.shell-header{gap:var(--s-2);height:calc(56px + var(--safe-top))}.shell-brand span:last-child,.shell-user-name,.shell-user .avatar{display:none}.shell-nav a{padding-inline:var(--s-3)}.page{margin-top:var(--s-5)}.page-head h1{font-size:var(--fs-xl)}}.home-head{display:grid;gap:var(--s-1)}.home-date{color:var(--text-3);font-size:var(--fs-xs);font-weight:600}.home-head h1{font-size:var(--fs-2xl);font-weight:800;letter-spacing:-.015em;text-wrap:balance}.home-summary{color:var(--text-2);font-size:var(--fs-sm);line-height:1.8}@media(min-width:960px){.home-head h1{font-size:var(--fs-3xl)}}.home-section{display:grid;gap:var(--s-3)}.section-title{display:flex;align-items:center;gap:var(--s-2);color:var(--text-2);font-size:var(--fs-sm);font-weight:700}.section-title .num{min-width:22px;height:22px;display:inline-grid;place-items:center;padding-inline:6px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-3);font-size:var(--fs-xs)}.class-tiles{display:grid;gap:var(--s-3);margin:0;padding:0;list-style:none}@media(min-width:600px){.class-tiles{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}}.class-tile{height:100%;display:grid;grid-template-rows:auto 1fr auto;gap:var(--s-4);padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-4);background:var(--surface-1);transition:border-color var(--t-base) var(--ease),background-color var(--t-base) var(--ease)}.class-tile:hover{border-color:var(--line-strong);background:var(--surface-2)}.class-tile.is-live{border-color:var(--accent-line)}.class-tile-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.class-tile-mark{width:44px;height:44px;display:grid;place-items:center;border-radius:14px;background:var(--surface-3);color:var(--text-1);font-size:var(--fs-lg);font-weight:800}.class-tile.is-live .class-tile-mark{background:var(--accent-soft);color:var(--accent-text)}.class-tile-body{min-width:0;display:grid;align-content:start;gap:2px}.class-tile-body h3{overflow:hidden;font-size:var(--fs-lg);font-weight:700;text-overflow:ellipsis;white-space:nowrap}.class-tile-body p{overflow:hidden;color:var(--text-2);font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap}.class-tile-foot{display:flex;align-items:center;gap:var(--s-1)}.class-tile-enter{flex:1;justify-content:space-between}.class-tile-enter svg{transition:transform var(--t-base) var(--ease)}.class-tile-enter:hover svg{transform:translate(-3px)}.list{margin:0;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:var(--r-4);background:var(--surface-1);list-style:none}.list>li+li{border-top:1px solid var(--line)}.row{min-height:64px;display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);color:inherit;text-decoration:none}a.row:hover{background:var(--surface-2)}a.row:hover .row-go{color:var(--accent-text)}.row-mark{width:40px;height:40px;display:grid;place-items:center;flex:0 0 auto;border-radius:var(--r-2);background:var(--surface-3);color:var(--text-1);font-weight:700}.row-main{min-width:0;flex:1;display:grid;gap:2px}.row-title{overflow:hidden;font-size:var(--fs-md);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.row-meta{overflow:hidden;color:var(--text-2);font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap}.row-go{display:flex;align-items:center;gap:var(--s-1);color:var(--text-2);font-size:var(--fs-sm);font-weight:600;white-space:nowrap}.row-actions{display:flex;align-items:center;gap:var(--s-1)}.row.is-inactive .row-title,.row.is-inactive .row-mark{color:var(--text-3)}@media(max-width:640px){.row{padding-inline:var(--s-3)}.row-go span{display:none}}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}.toolbar .search{flex:1 1 220px}.toolbar .select{width:auto;min-width:140px}.toolbar-actions{display:flex;gap:var(--s-2);margin-inline-start:auto}.list-summary{color:var(--text-3);font-size:var(--fs-xs)}@media(max-width:640px){.toolbar>label:not(.search),.toolbar .select{flex:1 1 100%}.toolbar-actions{width:100%}.toolbar-actions .btn{flex:1}}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3)}@media(max-width:640px){.form-grid{grid-template-columns:1fr}}.picker{display:grid;gap:var(--s-2);min-width:0;margin:0;padding:0;border:0}.picker legend{margin-bottom:var(--s-2);padding:0;color:var(--text-2);font-size:var(--fs-sm);font-weight:600}.picker-tools{display:flex;align-items:center;gap:var(--s-2)}.picker-tools .search{flex:1}.picker-options{max-height:260px;overflow-y:auto;border:1px solid var(--line);border-radius:var(--r-2);background:var(--bg)}.picker-options .check{padding:0 var(--s-3)}.picker-options .check+.check{border-top:1px solid var(--line)}.picker-options .check span{flex:1}.picker-options .check small{color:var(--text-3);font-size:var(--fs-xs)}.picker-options .muted{padding:var(--s-4)}.steps{display:flex;gap:var(--s-2);color:var(--text-3);font-size:var(--fs-xs);font-weight:600}.steps span[aria-current=step]{color:var(--accent-text)}.drop{display:grid;justify-items:center;gap:var(--s-2);padding:var(--s-5);border:1px dashed var(--line-strong);border-radius:var(--r-2);color:var(--text-2);font-size:var(--fs-sm);text-align:center}.drop.is-over{border-color:var(--accent);background:var(--accent-soft)}.preview{max-height:320px;overflow:auto;border:1px solid var(--line);border-radius:var(--r-2)}.preview table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.preview th{position:sticky;top:0;padding:var(--s-2) var(--s-3);border-bottom:1px solid var(--line);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-xs);font-weight:600;text-align:start}.preview td{padding:var(--s-2) var(--s-3);border-bottom:1px solid var(--line);white-space:nowrap}.preview tr:last-child td{border-bottom:0}.preview tr.has-error td{background:var(--danger-soft)}.preview td.ltr{text-align:left}.preview .row-error{color:var(--danger);font-size:var(--fs-xs);white-space:normal}.print-sheet{display:none}@media print{@page{margin:12mm}body{background:#fff}body *{visibility:hidden}.print-sheet,.print-sheet *{visibility:visible}.print-sheet{position:absolute;inset:0 0 auto;display:grid;grid-template-columns:1fr 1fr;gap:6mm;color:#000;font-family:var(--font)}.print-card{padding:4mm 5mm;border:1px dashed #777;break-inside:avoid}.print-card strong{display:block;margin-bottom:2mm;font-size:12pt}.print-card dl{display:grid;grid-template-columns:auto 1fr;gap:1mm 4mm;margin:0;font-size:10pt}.print-card dd{margin:0;font-family:Consolas,monospace;direction:ltr;text-align:left}}@media(max-width:640px){.auth{place-items:start center;padding-top:calc(12dvh + var(--safe-top))}}.recording-group{display:grid;gap:var(--s-2)}.recording-group-title{color:var(--text-2);font-size:var(--fs-sm);font-weight:600}.recording-list{margin:0;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:var(--r-4);background:var(--surface-1);list-style:none}.recording-item{display:grid;grid-template-columns:112px minmax(0,1fr);grid-template-areas:"thumb body" "actions actions";gap:var(--s-3);padding:var(--s-3) var(--s-4)}.recording-item+.recording-item{border-top:1px solid var(--line)}.recording-thumb{grid-area:thumb;position:relative;aspect-ratio:16 / 9;display:grid;place-items:center;border:1px solid var(--line);border-radius:var(--r-2);background:var(--stage);color:var(--text-1);transition:border-color var(--t-fast) var(--ease)}.recording-thumb svg{width:22px;height:22px}.recording-thumb:not(:disabled):hover{border-color:var(--accent);color:var(--accent-text)}.recording-thumb:disabled{color:var(--text-3)}.recording-length{position:absolute;inset-inline-end:4px;bottom:4px;padding:1px 5px;border-radius:4px;background:#000000b8;color:#fff;font-size:.6875rem;line-height:1.5}.recording-body{grid-area:body;min-width:0;display:grid;align-content:start;gap:2px}.recording-title{overflow:hidden;font-size:var(--fs-md);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.recording-meta{overflow:hidden;color:var(--text-2);font-size:var(--fs-xs);text-overflow:ellipsis;white-space:nowrap}.recording-expiry{color:var(--text-3);font-size:var(--fs-xs)}.recording-body .tag{justify-self:start;margin-top:2px}.recording-actions{grid-area:actions;display:flex;gap:var(--s-2)}.recording-actions .btn:not(.btn-icon){flex:1}@media(min-width:640px){.recording-item{grid-template-columns:136px minmax(0,1fr) auto;grid-template-areas:"thumb body actions";align-items:center;gap:var(--s-4);padding-inline:var(--s-5)}.recording-actions .btn:not(.btn-icon){flex:0 0 auto}}.player{display:grid;gap:var(--s-3)}.player-video{width:100%;max-height:70dvh;aspect-ratio:16 / 9;border-radius:var(--r-2);background:#000}.player-meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-2)}.status-actions>:last-child:nth-child(odd){grid-column:1 / -1}.library-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--s-3) var(--s-5)}.library-head .page-head{min-width:0;flex:1 1 320px}.library-actions{display:flex;flex-wrap:wrap;gap:var(--s-2)}.library-back{justify-self:start;display:inline-flex;align-items:center;gap:2px;min-height:32px;margin-bottom:var(--s-1);color:var(--text-2);font-size:var(--fs-sm);font-weight:600;text-decoration:none}.library-back:hover{color:var(--text-1)}.library-back svg{width:var(--icon-sm);height:var(--icon-sm)}.library-section{display:grid;gap:var(--s-2)}.library-title{display:flex;align-items:center;gap:var(--s-2);color:var(--text-2);font-size:var(--fs-sm);font-weight:600}.library-title .num{color:var(--text-3);font-weight:500}.library-row{display:flex;align-items:stretch}.library-row>.row{min-width:0;flex:1}.library-row .row-mark svg{width:var(--icon-md);height:var(--icon-md);color:var(--text-2)}.library-meta>bdi+bdi:before{content:"";display:inline-block;width:1px;height:.75em;margin-inline:var(--s-2);background:var(--line-strong);vertical-align:-.05em}.library-row-actions{display:flex;align-items:center;gap:2px;padding-inline-end:var(--s-2)}.library-row-actions .btn{min-width:44px;min-height:44px}.row-side{min-width:72px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:0 var(--s-3);border-inline-start:1px solid var(--line);color:var(--text-2);font-size:var(--fs-xs);font-weight:600;text-decoration:none}.row-side svg{width:var(--icon-md);height:var(--icon-md)}.row-side:hover{background:var(--surface-2);color:var(--accent-text)}.library-progress{display:grid;gap:var(--s-2);color:var(--text-2);font-size:var(--fs-sm)}.library-progress progress{width:100%;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:2px;background:var(--surface-3);accent-color:var(--accent)}.library-progress progress::-webkit-progress-bar{border-radius:2px;background:var(--surface-3)}.library-progress progress::-webkit-progress-value{border-radius:2px;background:var(--accent)}.library-progress progress::-moz-progress-bar{border-radius:2px;background:var(--accent)}@media(max-width:640px){.library-actions{width:100%}.library-actions .btn{flex:1}.library-row .row-go{display:none}}.viewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;grid-template-rows:auto minmax(0,1fr);background:var(--stage)}.viewer-bar{min-width:0;min-height:calc(56px + var(--safe-top));display:flex;align-items:center;gap:var(--s-2);padding:var(--safe-top) var(--s-3) 0;border-bottom:1px solid var(--line);background:var(--surface-1)}.viewer-title{min-width:0;flex:1;overflow:hidden;font-size:var(--fs-md);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.viewer-pages{flex:0 0 auto}.viewer-stage{position:relative;min-height:0;overflow:hidden}.viewer-state{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;justify-items:center;gap:var(--s-2);padding:var(--s-5);color:var(--text-2);font-size:var(--fs-sm);text-align:center;pointer-events:none}.viewer-state strong{color:var(--text-1);font-size:var(--fs-md);font-weight:600}.viewer .excalidraw .main-menu-trigger,.viewer .excalidraw .disable-view-mode{display:none}.viewer-state,.viewer-tools,.board-error{z-index:5}.viewer-tools{position:absolute;inset-inline-start:var(--s-3);bottom:calc(var(--s-3) + var(--safe-bottom));display:flex;flex-wrap:wrap;gap:var(--s-2)}.board-error{position:absolute;inset-inline:var(--s-3);top:var(--s-3);width:fit-content;margin-inline:auto;padding:var(--s-2) var(--s-3);border:1px solid var(--danger-line);border-radius:var(--r-2);background:var(--surface-2);color:var(--danger-text);font-size:var(--fs-sm)}a.action-item{text-decoration:none}@media(max-width:640px){.viewer-bar{gap:var(--s-1);padding-inline:var(--s-2)}.viewer-download span{display:none}.viewer-download{width:36px;padding:0;justify-content:center}.viewer-pages .btn{width:32px}.viewer-pages .page-count{min-width:48px;padding-inline:4px}}.board-save{display:inline-flex;align-items:center;padding:var(--s-1) var(--s-2);border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-sm);white-space:nowrap}.board-save-retrying,.board-save-refused{color:var(--danger-text);border-color:var(--danger-line)}.board-save-notice{top:calc(var(--s-3) + 3rem)}.notes-view{min-height:100dvh;display:grid;grid-template-rows:auto 1fr;background:var(--bg)}.notes-view .viewer-bar{position:sticky;z-index:5;top:0;flex-wrap:wrap;padding-bottom:var(--s-2)}.notes-body{width:min(100%,920px);display:grid;align-content:start;gap:var(--s-4);margin-inline:auto;padding:var(--s-4) var(--s-4) calc(var(--s-8) + var(--safe-bottom))}.notes-meta{margin:0;font-size:var(--fs-sm);line-height:1.7}.notes-progress{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);color:var(--text-2);font-size:var(--fs-xs)}.notes-progress progress{width:120px;accent-color:var(--accent)}.notes-pages{display:grid;gap:var(--s-5)}.note-page{min-width:0;display:grid;gap:var(--s-2);margin:0}.note-page-title{min-height:36px;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);color:var(--text-1);font-size:var(--fs-sm);font-weight:600}.note-page-title .num{color:var(--text-3)}.note-page-hide{margin-inline-start:auto}.note-page-frame{min-height:180px;display:grid;place-items:center;overflow:hidden;border:1px solid var(--line);border-radius:var(--r-2);background:#fff}.note-page-frame img{display:block;width:100%;height:auto}.note-page-state{display:grid;justify-items:center;gap:var(--s-2);padding:var(--s-6);color:#4b5563;font-size:var(--fs-sm)}.note-page.is-hidden .note-page-frame{opacity:.45}.library-hidden-tag{margin-inline-start:var(--s-2)}@media(max-width:639px){.notes-body{padding-inline:var(--s-3)}.notes-view .viewer-bar .btn-primary{margin-inline-start:auto}}video.viewer-media{display:block;width:100%;height:100%;object-fit:contain;background:var(--stage)}audio.viewer-media{display:block;width:min(560px,calc(100% - 2 * var(--s-4)));margin:var(--s-8) auto 0}.admin{min-height:100dvh}.admin-sidebar{display:none}.admin-topbar{position:sticky;top:0;z-index:20;height:calc(56px + var(--safe-top));display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:var(--safe-top) var(--s-4) 0;border-bottom:1px solid var(--line);background:#0c0d11eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.admin-brand{display:flex;align-items:center;gap:var(--s-2);color:var(--text-1);text-decoration:none}.admin-brand>span:last-child{display:grid;line-height:1.35}.admin-brand strong{font-size:var(--fs-md);font-weight:700}.admin-brand small{color:var(--text-3);font-size:var(--fs-xs)}.admin-main{width:100%;max-width:var(--content-max);min-width:0;display:grid;align-content:start;gap:var(--s-5);margin-inline:auto;padding:var(--s-5) var(--s-4) calc(var(--tabbar-h) + var(--s-8) + var(--safe-bottom))}.admin-tabbar{position:fixed;z-index:30;inset-inline:0;bottom:0;height:calc(var(--tabbar-h) + var(--safe-bottom));display:grid;grid-template-columns:repeat(5,1fr);padding:0 var(--s-1) var(--safe-bottom);border-top:1px solid var(--line);background:#131419f0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.admin-tab{min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:0;background:transparent;color:var(--text-3);font-size:var(--fs-2xs);font-weight:600;text-decoration:none;transition:color var(--t-fast) var(--ease)}.admin-tab svg{width:52px;height:28px;padding:4px 16px;border-radius:var(--r-pill);transition:background-color var(--t-base) var(--ease)}.admin-tab[aria-current=page]{color:var(--text-1)}.admin-tab[aria-current=page] svg{background:var(--accent-soft);color:var(--accent-text)}.admin-tab:active svg{background:var(--surface-3)}@media(min-width:960px){.admin{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr)}.admin-topbar,.admin-tabbar{display:none}.admin-sidebar{position:sticky;top:0;height:100dvh;display:flex;flex-direction:column;gap:var(--s-6);padding:var(--s-5) var(--s-3);border-inline-end:1px solid var(--line);background:var(--bg);overflow-y:auto}.admin-sidebar .admin-brand{padding:var(--s-1) var(--s-2)}.admin-main{padding:var(--s-8) var(--s-10) var(--s-12)}}.admin-nav{display:grid;gap:2px}.admin-nav-item{position:relative;min-height:40px;display:flex;align-items:center;gap:var(--s-3);padding:0 var(--s-3);border-radius:var(--r-2);color:var(--text-2);font-size:var(--fs-sm);font-weight:600;text-decoration:none;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.admin-nav-item svg{width:var(--icon-sm);height:var(--icon-sm);color:var(--text-3);transition:color var(--t-fast) var(--ease)}.admin-nav-item:hover{background:var(--surface-1);color:var(--text-1)}.admin-nav-item[aria-current=page]{background:var(--surface-2);color:var(--text-1)}.admin-nav-item[aria-current=page] svg{color:var(--accent)}.admin-nav-item[aria-current=page]:before{content:"";position:absolute;inset-inline-start:-12px;inset-block:10px;width:3px;border-start-end-radius:3px;border-end-end-radius:3px;background:var(--accent)}.admin-sidebar-foot{display:grid;gap:var(--s-3);margin-top:auto;padding-top:var(--s-4);border-top:1px solid var(--line)}.admin-user{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2);border:1px solid var(--line);border-radius:var(--r-3);background:var(--surface-1)}.admin-user-name{min-width:0;flex:1;display:grid;line-height:1.35}.admin-user-name strong{overflow:hidden;font-size:var(--fs-sm);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.admin-user-name small{color:var(--text-3);font-size:var(--fs-xs)}.page-header{display:grid;gap:var(--s-2)}.page-back{justify-self:start;min-height:32px;display:inline-flex;align-items:center;gap:6px;color:var(--text-2);font-size:var(--fs-sm);font-weight:600;text-decoration:none}.page-back:hover{color:var(--text-1)}.page-back svg{width:var(--icon-sm);height:var(--icon-sm)}.page-header-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--s-3) var(--s-5)}.page-header-text{min-width:0;flex:1 1 320px;display:grid;gap:var(--s-1)}.page-header-text h1{font-size:var(--fs-xl);font-weight:800;letter-spacing:-.01em;text-wrap:balance}.page-header-text p{color:var(--text-2);font-size:var(--fs-sm);line-height:1.7}.page-header-actions{display:flex;flex-wrap:wrap;gap:var(--s-2)}.title-with-tag{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3)}.title-with-tag .tag{font-size:var(--fs-xs)}@media(max-width:639px){.page-header-actions{width:100%}.page-header-actions .btn{flex:1 1 0}}@media(min-width:960px){.page-header-text h1{font-size:var(--fs-2xl)}}.stack-lg{display:grid;gap:var(--s-5);min-width:0}.card{min-width:0;display:grid;align-content:start;gap:var(--s-4);padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-4);background:var(--surface-1)}.card.is-flush{gap:0;padding:0;overflow:hidden}.card.is-flush>.card-head{padding:var(--s-4) var(--s-4) var(--s-3);border-bottom:1px solid var(--line)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);min-height:32px}.card-head h2{font-size:var(--fs-md);font-weight:700}.card-action .muted{padding:2px 10px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-3)}.card-action{display:flex;align-items:center;gap:var(--s-2)}.card-action .muted{font-size:var(--fs-xs)}.card-note{color:var(--text-3);font-size:var(--fs-xs);line-height:1.7}.card-note-padded{margin:0;padding:var(--s-3) var(--s-4);border-block-start:1px solid var(--line)}@media(min-width:640px){.card{padding:var(--s-5)}.card.is-flush>.card-head{padding:var(--s-4) var(--s-5) var(--s-3)}}.dashboard-grid{display:grid;gap:var(--s-4);min-width:0}@media(min-width:1024px){.dashboard-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.dashboard-grid.is-wide-first{grid-template-columns:minmax(0,2fr) minmax(280px,1fr)}}.stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-2)}@media(min-width:1024px){.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s-3)}}.stat-tile{position:relative;min-width:0;display:grid;grid-template-rows:auto auto 1fr auto;align-content:start;gap:var(--s-1);padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-4);background:var(--surface-1)}.stat-label{display:flex;align-items:center;gap:6px;color:var(--text-2);font-size:var(--fs-xs);font-weight:600}.stat-tile:is(.tone-success,.tone-warning,.tone-danger,.tone-accent) .stat-label:before{content:"";width:6px;height:6px;flex:none;border-radius:50%;background:var(--tone)}.stat-tile.tone-success{--tone: var(--success)}.stat-tile.tone-warning{--tone: var(--warning)}.stat-tile.tone-danger{--tone: var(--danger)}.stat-tile.tone-accent{--tone: var(--accent)}.stat-value{font-size:var(--fs-xl);font-weight:800;line-height:1.25;letter-spacing:-.02em}.stat-hint{color:var(--text-3);font-size:var(--fs-xs);line-height:1.6}.stat-tile>.sparkline,.stat-tile>.net-bar-wrap{align-self:end;margin-top:var(--s-2)}.stat-tile>.sparkline{height:28px}.stat-tile>.net-bar-wrap .net-bar{height:6px}@media(min-width:640px){.stat-tile{padding:var(--s-5)}.stat-value{font-size:var(--fs-2xl)}}.score-meter{display:flex;align-items:center;gap:var(--s-3)}.score-meter strong{font-size:var(--fs-3xl);font-weight:800;line-height:1;letter-spacing:-.02em}.score-meter span{display:grid;line-height:1.4}.score-meter small{color:var(--text-3);font-size:var(--fs-xs)}.score-meter b{font-size:var(--fs-sm)}.score-meter.tone-success b{color:var(--success-text)}.score-meter.tone-warning b{color:var(--warning-text)}.score-meter.tone-danger b{color:var(--danger-text)}.kv-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3);margin:0}.kv-grid div{display:grid;gap:2px}.kv-grid dt{color:var(--text-3);font-size:var(--fs-xs)}.kv-grid dd{margin:0;font-size:var(--fs-lg);font-weight:700}.kv-list{display:grid;gap:var(--s-2);margin:0}.kv-list div{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s-1) var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--line)}.kv-list dt{color:var(--text-2);font-size:var(--fs-sm)}.kv-list dd{margin:0;font-size:var(--fs-sm);font-weight:600}.meter{min-width:0;display:inline-flex;align-items:center;gap:var(--s-2);width:100%;max-width:220px}.meter-track{flex:1;min-width:48px;height:6px;overflow:hidden;border-radius:var(--r-pill);background:var(--chart-track)}.meter-fill{display:block;height:100%;border-radius:3px;background:var(--text-3)}.meter-fill.tone-success{background:var(--success)}.meter-fill.tone-warning{background:var(--warning)}.meter-fill.tone-danger{background:var(--danger)}.meter-fill.tone-accent{background:var(--accent)}.meter-value{flex:0 0 auto;min-width:3.5em;color:var(--text-1);font-size:var(--fs-sm);font-weight:600;text-align:end}.tag-default{background:var(--surface-3);color:var(--text-2)}.tag-live{gap:6px;background:var(--danger-soft);color:var(--danger-text)}.live-dot{width:6px;height:6px;border-radius:50%;background:var(--danger);animation:live-pulse 1.6s ease-in-out infinite}@keyframes live-pulse{50%{opacity:.35}}.net-badge{display:inline-flex;align-items:center;gap:6px;color:var(--text-2);font-size:var(--fs-sm);font-weight:600;white-space:nowrap}.net-dot{width:8px;height:8px;border-radius:50%;background:var(--text-3)}.net-score{color:var(--text-3);font-size:var(--fs-xs);font-weight:500}.net-badge.level-excellent .net-dot{background:var(--net-excellent)}.net-badge.level-good .net-dot{background:var(--net-good)}.net-badge.level-fair .net-dot{background:var(--net-poor)}.net-badge.level-poor .net-dot{background:var(--net-lost)}.net-badge.level-unknown{color:var(--text-3);font-weight:500}.net-bar-wrap{display:grid;gap:var(--s-3);min-width:0}.net-bar{display:flex;gap:2px;height:12px;min-width:80px;overflow:hidden;border-radius:var(--r-pill)}.net-segment{min-width:2px;flex-basis:0;height:100%}.net-excellent{background:var(--net-excellent)}.net-good{background:var(--net-good)}.net-poor{background:var(--net-poor)}.net-lost{background:var(--net-lost)}.net-legend{display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-4);margin:0;padding:0;color:var(--text-2);font-size:var(--fs-xs);list-style:none}.net-legend li{display:inline-flex;align-items:center;gap:6px}.net-legend .num{color:var(--text-1);font-weight:600}.net-swatch{width:10px;height:10px;border-radius:3px}.net-legend-extra{padding-inline-start:var(--s-3);border-inline-start:1px solid var(--line)}.chart{min-width:0;margin:0;display:grid;gap:var(--s-2);--gutter: 36px}.chart-lede{color:var(--text-2);font-size:var(--fs-sm)}.chart-lede strong{color:var(--text-1)}.chart-plot{position:relative;height:200px;margin-inline-start:var(--gutter)}.chart-grid{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.chart-grid span{position:absolute;inset-inline:0;height:1px;background:var(--chart-grid)}.chart-grid span:first-child{background:transparent;border-top:1px dashed var(--chart-grid)}.chart-grid span:last-child{background:var(--line-strong)}.chart-grid span:before{content:attr(data-value);position:absolute;inset-inline-start:calc(var(--gutter) * -1);top:-8px;width:calc(var(--gutter) - 8px);color:var(--text-3);font-size:var(--fs-2xs);line-height:1;text-align:end}.chart-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible}[dir=rtl] .chart-svg{transform:scaleX(-1)}.chart-area{fill:var(--chart-area)}.chart-line{fill:none;stroke:var(--chart-bar);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.chart-hits{position:absolute;top:0;right:0;bottom:0;left:0}.chart-hit{position:absolute;inset-block:0;inset-inline-start:calc(var(--x) - 50% / var(--count));width:calc(100% / var(--count));outline:none}.chart-crosshair{position:absolute;inset-block:0;inset-inline-start:50%;width:1px;background:var(--line-hover);opacity:0}.chart-marker{position:absolute;inset-inline-start:50%;top:var(--y);width:10px;height:10px;margin:-5px;border:2px solid var(--surface-1);border-radius:50%;background:var(--chart-bar);opacity:0}.chart-hit:is(:hover,:focus-visible) :is(.chart-crosshair,.chart-marker,.chart-tip){opacity:1}.chart-hit:focus-visible .chart-crosshair{background:var(--focus)}.chart-tip{position:absolute;z-index:3;bottom:calc(100% - var(--y, 100%) + 14px);inset-inline-start:50%;translate:50% 0;display:grid;gap:1px;min-width:max-content;padding:6px 10px;border:1px solid var(--line-strong);border-radius:var(--r-2);background:var(--surface-3);box-shadow:var(--shadow-overlay);font-size:var(--fs-xs);line-height:1.5;text-align:center;opacity:0;pointer-events:none;transition:opacity var(--t-fast) var(--ease)}[dir=ltr] .chart-tip{translate:-50% 0}.chart-tip small{color:var(--text-3);font-size:var(--fs-2xs)}.chart-tip strong{color:var(--text-1);font-size:var(--fs-sm)}.chart-hit:first-child .chart-tip,.chart-column:first-child .chart-tip{inset-inline-start:0;translate:0 0}.chart-hit:last-child .chart-tip,.chart-column:last-child .chart-tip{inset-inline-start:auto;inset-inline-end:0;translate:0 0}.chart-columns{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(var(--count),minmax(0,1fr));gap:2px}.chart-column{position:relative;display:flex;align-items:flex-end;justify-content:center;border-radius:var(--r-1);outline:none}.chart-column:hover,.chart-column:focus-visible{background:var(--surface-2)}.chart-column:focus-visible{box-shadow:inset 0 0 0 2px var(--focus)}.chart-bar{width:min(70%,18px);border-radius:4px 4px 0 0;background:var(--chart-bar);transition:filter var(--t-fast) var(--ease)}.chart-bar.is-zero{height:2px;border-radius:1px;background:var(--line-strong)}.chart-column:is(:hover,:focus-visible) .chart-bar:not(.is-zero){filter:brightness(1.15)}.chart-column .chart-tip{--y: calc(100% - var(--h, 0%));bottom:calc(100% + 6px)}.chart-column:is(:hover,:focus-visible) .chart-tip{opacity:1}.chart-axis{display:grid;grid-template-columns:repeat(var(--count),minmax(0,1fr));margin-inline-start:var(--gutter);color:var(--text-3);font-size:var(--fs-2xs);line-height:1.35;text-align:center}.chart-axis>span{display:grid}.chart-axis>span>span:last-child{color:var(--text-2)}@media(max-width:639px){.chart-axis>span.is-odd{visibility:hidden}.chart-plot{height:168px}}.heatmap-grid{display:grid;grid-template-columns:22px repeat(var(--hours),minmax(0,1fr));gap:3px;direction:rtl}.heatmap-row{display:contents}.heatmap-day,.heatmap-hour{color:var(--text-3);font-size:var(--fs-2xs);line-height:1;text-align:center}.heatmap-day{align-self:center}.heatmap-hour{padding-bottom:4px}.heatmap-cell{height:22px;border-radius:5px;background:color-mix(in oklab,var(--chart-bar) var(--level),var(--surface-2))}.heatmap-cell.is-empty{background:var(--surface-2)}.heatmap-grid .heatmap-cell:hover{outline:2px solid var(--text-1);outline-offset:1px}.heatmap-legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-top:var(--s-2);color:var(--text-3);font-size:var(--fs-2xs)}.heatmap-legend .heatmap-cell{width:12px;height:12px;border-radius:3px}.heatmap-legend-max{margin-inline-start:auto;color:var(--text-2)}@media(max-width:639px){.heatmap-hour.is-minor{visibility:hidden}.heatmap-grid{gap:2px}.heatmap-grid .heatmap-cell{height:18px;border-radius:4px}}.rank-bars{display:grid;gap:var(--s-3);margin:0;padding:0;list-style:none}.rank-bars li{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:end;gap:var(--s-3)}.rank-index{color:var(--text-3);font-size:var(--fs-xs);line-height:1.6}.rank-main{min-width:0;display:grid;gap:6px}.rank-label{min-width:0;display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-2)}.rank-label strong{overflow:hidden;font-size:var(--fs-sm);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.rank-label small{flex:none;color:var(--text-3);font-size:var(--fs-xs)}.rank-link{color:inherit;text-decoration:none}.rank-link:hover{color:var(--accent-text)}.rank-track{height:6px;overflow:hidden;border-radius:var(--r-pill);background:var(--chart-track)}.rank-fill{display:block;height:100%;border-radius:var(--r-pill);background:var(--chart-bar)}.rank-value{min-width:3.6em;font-size:var(--fs-sm);font-weight:700;text-align:end}.filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);min-width:0}.filter-bar .search{flex:1 1 240px}.field-inline{min-width:0;flex:0 1 240px}@media(max-width:639px){.field-inline{flex:1 1 100%}}.load-more{justify-self:center;min-width:200px}.note-row{display:flex;align-items:flex-start;gap:var(--s-2)}.note-row svg{margin-top:3px}.alert-live{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent-text)}.error-block{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-2)}.session-list ul{margin:0;padding:0;list-style:none}.session-list li+li{border-top:1px solid var(--line)}.session-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"main extra" "time time" "attendance network";align-items:center;gap:var(--s-2) var(--s-3);padding:var(--s-3) var(--s-4);color:inherit;text-decoration:none}a.session-row:hover{background:var(--surface-2)}a.session-row:hover .row-chevron{color:var(--accent-text)}.session-row-head{display:none}.session-row>span{min-width:0;display:grid;gap:2px}.session-row small{overflow:hidden;color:var(--text-3);font-size:var(--fs-xs);text-overflow:ellipsis;white-space:nowrap}.session-cell-main{grid-area:main}.session-cell-main strong{overflow:hidden;font-size:var(--fs-md);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.session-cell-time{grid-area:time;display:flex!important;flex-wrap:wrap;align-items:baseline;gap:0 var(--s-2)!important;color:var(--text-2);font-size:var(--fs-sm)}.session-cell-attendance{grid-area:attendance;justify-items:start}.session-cell-network{grid-area:network;justify-items:end}.session-cell-extra{grid-area:extra;display:flex!important;align-items:center;gap:var(--s-3)!important;color:var(--text-3)}.icon-count{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs)}.icon-count svg{width:14px;height:14px}.row-chevron{width:var(--icon-sm);height:var(--icon-sm);color:var(--text-3)}@media(min-width:900px){.session-row{grid-template-columns:minmax(0,1.6fr) minmax(0,1.2fr) minmax(0,1.5fr) minmax(0,1fr) 96px;grid-template-areas:"main time attendance network extra";gap:var(--s-4);padding:var(--s-3) var(--s-5)}.session-row-head{display:grid;min-height:40px;padding-block:var(--s-2);border-bottom:1px solid var(--line);color:var(--text-3);font-size:var(--fs-xs);font-weight:600}.session-row-head>span:nth-child(1){grid-area:main}.session-row-head>span:nth-child(2){grid-area:time}.session-row-head>span:nth-child(3){grid-area:attendance}.session-row-head>span:nth-child(4){grid-area:network}.session-row-head>span:nth-child(5){grid-area:extra}.session-cell-time{display:grid!important;gap:2px!important;color:var(--text-1)}.session-cell-network{justify-items:start}.session-cell-extra{justify-content:flex-end}}.report-live{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-3)}.report-live .btn{flex-shrink:0}.report-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--s-3)}.report-heading{margin-inline-end:auto;font-size:var(--fs-md);font-weight:700;align-self:center}.report-sort{display:grid;gap:var(--s-1);min-width:180px}.report-empty{padding:var(--s-5)}.report-note{font-size:var(--fs-xs);line-height:1.8}.report-tags{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1)}.attention-list{display:grid;gap:0;margin:0;padding:0;list-style:none}.attention-list li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-2) var(--s-3);padding-block:var(--s-3);border-bottom:1px solid var(--line)}.attention-list li:first-child{padding-block-start:0}.attention-list li:last-child{padding-block-end:0;border-bottom:0}.attention-list strong{font-weight:600}@media(max-width:640px){.report-toolbar>.segmented,.report-sort{flex:1 1 100%}}.table-wrap{min-width:0;overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.data-table th{padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--line);color:var(--text-3);font-size:var(--fs-xs);font-weight:600;text-align:start;white-space:nowrap}.data-table td{padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--line);vertical-align:middle}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover td{background:var(--surface-2)}.data-table tr.is-inactive td{color:var(--text-3)}.data-table a{color:var(--text-1);text-decoration:none}.data-table a:hover{color:var(--accent-text)}.data-table .cell-wide{min-width:180px}.cell-person{display:grid;gap:1px}.cell-person strong{font-weight:600}.cell-person small{color:var(--text-3);font-size:var(--fs-xs)}@media(max-width:767px){.data-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.data-table,.data-table tbody,.data-table tr,.data-table td{display:block}.data-table tr{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-2) var(--s-3);padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--line)}.data-table tr:last-child{border-bottom:0}.data-table tbody tr:hover td{background:transparent}.data-table td{min-width:0;padding:0;border:0}.data-table td:before{content:attr(data-label);display:block;margin-bottom:2px;color:var(--text-3);font-size:.6875rem;font-weight:600}.data-table td:first-child{grid-column:1 / -1}.data-table td:first-child:before{display:none}.data-table td.cell-wide{grid-column:1 / -1;min-width:0}.table-wrap{overflow-x:visible}}.register-marks{display:flex;flex-wrap:wrap;gap:3px;max-width:520px}.register-mark,.register-number{width:22px;height:22px;display:inline-grid;place-items:center;flex:0 0 auto;border-radius:5px;font-size:11px;font-weight:700;line-height:1}.register-number{height:auto;color:var(--text-3);font-size:10px;font-weight:600}.register-mark.is-present{background:var(--success-soft);color:var(--success-text)}.register-mark.is-late,.register-mark.is-left_early{background:var(--warning-soft);color:var(--warning-text)}.register-mark.is-absent{background:var(--danger-soft);color:var(--danger-text)}.register-mark.is-online{background:var(--success);color:var(--bg)}.register-mark.is-left{background:var(--surface-3);color:var(--text-1)}.register-mark.is-not_joined{border:1px solid var(--line-strong);color:var(--text-3)}.register-mark.is-none{color:var(--text-3)}.register-legend{display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-4);margin:0;padding:0;color:var(--text-2);font-size:var(--fs-xs);list-style:none}.register-legend li{display:inline-flex;align-items:center;gap:6px}.register-table td{vertical-align:top}.register-alert{color:var(--danger-text);font-weight:700}.live-panel{display:grid;gap:var(--s-3);padding:var(--s-4);border:1px solid var(--danger-line);border-radius:var(--r-4);background:var(--surface-1)}.live-panel-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3)}.live-panel-head h2{font-size:var(--fs-md)}.live-list{display:grid;gap:var(--s-2);margin:0;padding:0;list-style:none}@media(min-width:768px){.live-list{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}}.live-item{min-height:60px;display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);border:1px solid var(--line);border-radius:var(--r-3);background:var(--surface-2);color:inherit;text-decoration:none}.live-item:hover{border-color:var(--line-strong);background:var(--surface-3)}.live-item>svg{color:var(--text-3)}.live-item-main{min-width:0;flex:1;display:grid}.live-item-main strong{overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.live-item-main small{color:var(--text-3);font-size:var(--fs-xs)}.live-item-count{display:grid;justify-items:center;font-size:var(--fs-lg);font-weight:700;line-height:1.2}.live-item-count small{color:var(--text-3);font-size:.6875rem;font-weight:500}.compact-list{display:grid;margin:0;padding:0;list-style:none}.compact-list li+li{border-top:1px solid var(--line)}.compact-link{min-height:52px;display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) 0;color:inherit;text-decoration:none}.compact-link:hover strong{color:var(--accent-text)}.compact-main{min-width:0;flex:1;display:grid}.compact-main strong{overflow:hidden;font-size:var(--fs-sm);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.compact-main small{color:var(--text-3);font-size:var(--fs-xs)}.avatar-sm{width:30px;height:30px;font-size:var(--fs-xs)}.class-grid{display:grid;gap:var(--s-3);margin:0;padding:0;list-style:none}@media(min-width:640px){.class-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}}.class-card{height:100%;display:grid;align-content:start;gap:var(--s-3);padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-4);background:var(--surface-1);color:inherit;text-decoration:none;transition:border-color var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.class-card:hover{border-color:var(--line-strong);background:var(--surface-2)}.class-card.is-archived{color:var(--text-3)}.class-card-head{display:flex;align-items:center;gap:var(--s-3)}.class-card-title{min-width:0;flex:1;display:grid}.class-card-title strong{overflow:hidden;font-size:var(--fs-md);font-weight:700;text-overflow:ellipsis;white-space:nowrap}.class-card-title small{color:var(--text-3);font-size:var(--fs-xs)}.class-card-teachers{overflow:hidden;color:var(--text-2);font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap}.class-card-stats{display:flex;gap:var(--s-5);padding-top:var(--s-3);border-top:1px solid var(--line);color:var(--text-3);font-size:var(--fs-xs)}.class-card-stats strong{color:var(--text-1);font-size:var(--fs-md)}.chip-list{display:flex;flex-wrap:wrap;gap:var(--s-2);margin:0;padding:0;list-style:none}.chip{min-height:36px;display:inline-flex;align-items:center;gap:var(--s-2);padding:0 var(--s-3);border:1px solid var(--line-strong);border-radius:18px;color:var(--text-1);font-size:var(--fs-sm);font-weight:600;text-decoration:none}.chip small{color:var(--text-3);font-weight:500}.chip:hover{border-color:var(--accent)}.chip.is-archived{color:var(--text-3);border-style:dashed}.row .row-chevron{flex:0 0 auto}a.row:hover .row-chevron{color:var(--accent-text)}.timeline{display:grid;min-width:0}.timeline-axis{display:flex;justify-content:space-between;padding-bottom:var(--s-2);border-bottom:1px solid var(--line);color:var(--text-3);font-size:var(--fs-xs)}.timeline-row{border-bottom:1px solid var(--line)}.timeline-row:last-child{border-bottom:0}.timeline-row summary{display:grid;gap:var(--s-2);padding:var(--s-3) 0;cursor:pointer;list-style:none}.timeline-row summary::-webkit-details-marker{display:none}.timeline-row summary:hover .timeline-name strong{color:var(--accent-text)}.timeline-name{min-width:0;display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-2)}.timeline-name strong{overflow:hidden;font-size:var(--fs-sm);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.timeline-name small{flex:0 0 auto;color:var(--text-3);font-size:var(--fs-xs)}.timeline-track{position:relative;height:12px;border-radius:var(--r-pill);background:var(--chart-track)}.timeline-segment{position:absolute;inset-block:0;border-radius:var(--r-pill);background:var(--chart-bar)}.timeline-segment.is-open{background:var(--success)}.timeline-grace{position:absolute;inset-block:-3px;width:1px;background:var(--warning);opacity:.7}@media(min-width:768px){.timeline-axis{margin-inline-start:232px}.timeline-row summary{grid-template-columns:216px minmax(0,1fr);align-items:center;gap:var(--s-4)}.timeline-name{display:grid;justify-content:start;gap:0}}.interval-list{display:grid;gap:var(--s-1);margin:0 0 var(--s-3);padding:var(--s-2) var(--s-3);border-radius:var(--r-2);background:var(--surface-2);font-size:var(--fs-xs);list-style:none}.interval-list li{display:flex;flex-wrap:wrap;gap:var(--s-1) var(--s-4)}.interval-list li span:first-child{min-width:110px;font-weight:600}.interval-list .muted{font-size:var(--fs-xs)}@media(min-width:768px){.interval-list{margin-inline-start:232px}}.poll-results{display:grid;gap:var(--s-5)}.poll-result{display:grid;gap:var(--s-2)}.poll-result h3{font-size:var(--fs-sm);font-weight:600}.poll-result ul{display:grid;gap:var(--s-2);margin:var(--s-1) 0 0;padding:0;list-style:none}.poll-result li{display:grid;gap:4px}.poll-result .meter{max-width:none}.poll-result .meter-value{min-width:6em}.poll-option-label{color:var(--text-2);font-size:var(--fs-sm)}.audit-feed{margin:0;padding:0;list-style:none}.audit-feed li{display:flex;align-items:flex-start;gap:var(--s-3);padding:var(--s-3) var(--s-4)}.audit-feed li+li{border-top:1px solid var(--line)}.audit-icon{width:32px;height:32px;display:grid;place-items:center;flex:0 0 auto;border-radius:var(--r-2);background:var(--surface-3);color:var(--text-2)}.audit-icon svg{width:var(--icon-sm);height:var(--icon-sm)}.audit-main{min-width:0;flex:1;display:grid;gap:2px}.audit-main strong{font-size:var(--fs-sm);font-weight:600}.audit-main small{color:var(--text-3);font-size:var(--fs-xs);line-height:1.6;overflow-wrap:anywhere}.audit-side{display:grid;justify-items:end;gap:2px;color:var(--text-3);font-size:var(--fs-xs);white-space:nowrap}.audit-link{min-height:24px;display:inline-flex;align-items:center;color:var(--accent-text);font-weight:600;text-decoration:none}@media(min-width:640px){.audit-feed li{padding-inline:var(--s-5)}}.settings-form{display:grid;gap:var(--s-4);max-width:720px}.input-short{max-width:160px}.settings-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--s-3)}.save-note{color:var(--success-text);font-size:var(--fs-sm)}.settings-form+.settings-form{margin-top:var(--s-4)}.feature-list{display:grid;margin:0;padding:0;list-style:none}.feature-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:var(--s-3) 0;border-top:1px solid var(--line)}.feature-row:first-child{border-top:0}.feature-row.is-off{margin:0 calc(var(--s-3) * -1);padding-inline:var(--s-3);border-radius:var(--r-2);background:var(--warning-soft)}.feature-text{display:grid;gap:var(--s-1);min-width:0}.feature-text strong{font-size:var(--fs-sm)}.feature-reason{color:var(--warning-text);font-size:var(--fs-xs);line-height:1.6;overflow-wrap:anywhere}.feature-row .switch{flex:none}.admin-feature-alert{margin-bottom:var(--s-4)}.admin-feature-alert a{color:inherit;font-weight:600}.feature-rollout{color:var(--accent-text);font-size:var(--fs-xs);line-height:1.6;overflow-wrap:anywhere}.feature-rollout-button{justify-self:start;min-height:32px;padding-inline:var(--s-2)}.health-badge{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:2px var(--s-2);border-radius:999px;background:var(--surface-3);color:var(--text-2);font-size:var(--fs-xs);font-weight:600;white-space:nowrap}.health-badge svg{width:14px;height:14px}.health-badge.is-ok{background:var(--success-soft);color:var(--success-text)}.health-badge.is-degraded{background:var(--warning-soft);color:var(--warning-text)}.health-badge.is-down{background:var(--danger-soft);color:var(--danger-text)}.health-badge.is-off,.health-badge.is-unknown{background:transparent;border:1px solid var(--line-strong);color:var(--text-3)}.system-hero,.system-summary{display:grid;gap:var(--s-2);padding:var(--s-4);border:1px solid var(--line);border-inline-start-width:3px;border-radius:var(--r-4);background:var(--surface-1)}.system-hero.is-ok,.system-summary.is-ok{border-inline-start-color:var(--success)}.system-hero.is-degraded,.system-summary.is-degraded{border-inline-start-color:var(--warning)}.system-hero.is-down,.system-summary.is-down{border-inline-start-color:var(--danger);background:var(--danger-soft)}.system-hero{justify-items:start}.system-hero h2{font-size:var(--fs-lg);line-height:1.5}.system-summary{padding:var(--s-3) var(--s-4)}.system-summary-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3)}.system-summary-head strong{flex:1 1 200px;font-size:var(--fs-sm)}.system-problems{display:grid;gap:var(--s-1);margin:0;padding-inline-start:var(--s-5);color:var(--text-2);font-size:var(--fs-sm);line-height:1.7}.sparkline{display:block;width:100%;height:32px;margin-top:var(--s-1);overflow:visible}[dir=rtl] .sparkline{transform:scaleX(-1)}.sparkline polyline{stroke:var(--accent);stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round}.sparkline.tone-danger polyline{stroke:var(--danger)}.sparkline.tone-warning polyline{stroke:var(--warning)}.component-list{display:grid;margin:0;padding:0;list-style:none}.component-row{display:grid;gap:var(--s-1);padding:var(--s-3) var(--s-4);border-top:1px solid var(--line)}.component-row:first-child{border-top:0}.component-row-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.component-row-head strong{min-width:0;font-size:var(--fs-sm);font-weight:600}.component-row p{color:var(--text-2);font-size:var(--fs-sm);line-height:1.7;overflow-wrap:anywhere}.component-row small{display:flex;flex-wrap:wrap;gap:var(--s-1) var(--s-4);color:var(--text-3);font-size:var(--fs-xs)}.resource-list{display:grid;gap:var(--s-3);margin:0}.resource-list div{display:grid;gap:var(--s-1)}.resource-list dt{color:var(--text-3);font-size:var(--fs-xs)}.resource-list dd{margin:0;font-size:var(--fs-sm);font-weight:600}.resource-list .meter{max-width:none}.class-health-row{align-items:center}.class-health-reasons{color:var(--warning-text)}.class-health-recording{flex:none;width:var(--icon-sm);height:var(--icon-sm);color:var(--danger)}.lookup-form{display:flex;flex-wrap:wrap;gap:var(--s-2);margin-top:var(--s-3)}.lookup-form .search{flex:1 1 220px}.log-lines{display:grid;margin:0;padding:0;list-style:none}.log-line{display:grid;gap:var(--s-2);min-width:0;padding:var(--s-3) var(--s-4);border-top:1px solid var(--line)}.log-line:first-child{border-top:0}.log-line-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1) var(--s-3);min-width:0}.log-line-head strong{font-size:var(--fs-sm);font-weight:600;overflow-wrap:anywhere}.log-line-head time,.log-line-head small{color:var(--text-3);font-size:var(--fs-xs)}.log-line-request{color:var(--accent-text);font-size:var(--fs-xs)}.log-line-fields{display:flex;flex-wrap:wrap;gap:var(--s-1) var(--s-4);margin:0;font-size:var(--fs-xs)}.log-line-fields div{display:flex;gap:var(--s-1);min-width:0}.log-line-fields dt{color:var(--text-3)}.log-line-fields dd{margin:0;color:var(--text-2);overflow-wrap:anywhere}.error-row-counts{flex:none;display:grid;justify-items:center;line-height:1.2}.error-row-counts strong{font-size:var(--fs-md)}.error-row-counts small{color:var(--text-3);font-size:.6875rem}.error-row .row-title{overflow-wrap:anywhere;white-space:normal}.error-title{overflow-wrap:anywhere}.error-small-value{font-size:var(--fs-md);overflow-wrap:anywhere}.admin-nav-group{display:grid;gap:2px}.admin-nav-group+.admin-nav-group{margin-top:var(--s-4);padding-top:var(--s-3);border-top:1px solid var(--line)}.admin-nav-heading{padding:0 var(--s-3) var(--s-1);color:var(--text-3);font-size:.6875rem;font-weight:700;letter-spacing:.02em}.admin-more-group+.admin-more-group,.admin-more-group+.action-list{margin-top:var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--line)}.admin-more-group .admin-nav-heading{display:block;padding-inline:0;margin-bottom:var(--s-1)}.participant-list{display:grid;margin:0;padding:0;list-style:none}.participant-row{display:grid;gap:var(--s-2);min-width:0;padding:var(--s-3) var(--s-4);border-top:1px solid var(--line)}.participant-row:first-child{border-top:0}.participant-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3);min-width:0}.participant-name{flex:1 1 160px;display:grid;min-width:0}.participant-name strong{font-size:var(--fs-sm);font-weight:600;overflow-wrap:anywhere}.participant-name a{color:inherit;text-decoration:none}.participant-name a:hover{color:var(--accent-text)}.participant-name small{color:var(--text-3);font-size:var(--fs-xs)}.participant-media{display:flex;flex-wrap:wrap;gap:var(--s-2)}.media-chip{display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:2px var(--s-2);border:1px solid var(--line-strong);border-radius:999px;color:var(--text-3);font-size:var(--fs-xs)}.media-chip svg{width:14px;height:14px}.media-chip.is-on{border-color:transparent;background:var(--success-soft);color:var(--success-text)}.media-chip.is-muted{border-color:transparent;background:var(--surface-3);color:var(--text-2)}.participant-facts{display:flex;flex-wrap:wrap;gap:var(--s-1) var(--s-4);margin:0;font-size:var(--fs-xs)}.participant-facts div{display:flex;gap:var(--s-1);min-width:0}.participant-facts dt{color:var(--text-3)}.participant-facts dd{margin:0;color:var(--text-2);overflow-wrap:anywhere}.participant-actions{display:flex;flex-wrap:wrap;gap:var(--s-2)}.btn.is-danger{color:var(--danger-text)}.setting-list{display:grid;margin:0;padding:0;list-style:none}.setting-row{display:grid;gap:var(--s-2);padding:var(--s-3) 0;border-top:1px solid var(--line)}.setting-row:first-child{border-top:0;padding-top:0}.setting-form{display:grid;gap:var(--s-3)}.setting-text{display:grid;gap:var(--s-1);min-width:0}.setting-text strong{font-size:var(--fs-sm)}.setting-meta{color:var(--accent-text);font-size:var(--fs-xs)}.setting-control{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}.setting-control select.input{max-width:260px}.setting-number{display:inline-flex;align-items:center;gap:var(--s-2)}.setting-number .input{width:120px}.setting-number small{color:var(--text-3);font-size:var(--fs-xs)}@media(min-width:768px){.setting-form{grid-template-columns:minmax(0,1fr) auto;align-items:center}.setting-control{justify-content:flex-end}}.env-list{display:grid;margin:0}.env-list div{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s-1) var(--s-4);padding:var(--s-2) var(--s-4);border-top:1px solid var(--line);font-size:var(--fs-xs)}.env-list div:first-child{border-top:0}.env-list dt{color:var(--text-2);font-weight:600}.env-list dd{margin:0;color:var(--text-1);overflow-wrap:anywhere}.env-secret{display:inline-flex;align-items:center;gap:var(--s-1);color:var(--text-3)!important}.diagnostic-list{display:grid;gap:var(--s-2);margin:0;padding:0;list-style:none}.diagnostic-list li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3)}.diagnostic-list .btn{min-width:140px;justify-content:center}.diagnostic-result{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--s-1) var(--s-2);min-width:0}.diagnostic-result small{color:var(--text-2);font-size:var(--fs-xs);overflow-wrap:anywhere}.log-filter{flex:1 1 280px;margin-top:0}.card-filter{padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--line)}.cell-actions{display:flex;flex-wrap:wrap;gap:var(--s-1);white-space:nowrap}@media(max-width:767px){.data-table td.cell-actions{grid-column:1 / -1}}.stack-trace{max-height:360px;margin:0;overflow:auto;padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-2);background:var(--bg);color:var(--text-2);font-size:var(--fs-xs);line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:639px){.settings-actions .btn{flex:1}}@media(prefers-reduced-motion:reduce){.live-dot{animation:none}}.crumbs{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-2)}.crumbs a,.crumbs>span[aria-hidden]{color:var(--text-3);font-weight:600;text-decoration:none}.crumbs a:hover{color:var(--text-1)}.form-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-3) var(--s-4);padding-bottom:var(--s-1);border-bottom:1px solid var(--line)}.form-tabs{display:flex;gap:var(--s-1)}.form-tab{position:relative;min-height:44px;display:inline-flex;align-items:center;gap:var(--s-2);padding:0 var(--s-4);border:0;background:transparent;color:var(--text-2);font-size:var(--fs-sm);font-weight:700;transition:color var(--t-fast) var(--ease)}.form-tab:after{content:"";position:absolute;inset-inline:var(--s-3);inset-block-end:-2px;height:2px;border-radius:2px;background:var(--accent);transform:scaleX(0);transition:transform var(--t-base) var(--ease)}.form-tab:hover,.form-tab[aria-selected=true]{color:var(--text-1)}.form-tab[aria-selected=true]:after{transform:scaleX(1)}.form-tab-count{min-width:22px;padding:1px 7px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-xs);text-align:center}.form-bar-actions{display:flex;gap:var(--s-2)}.form-layout{display:grid;gap:var(--s-4);align-items:start;min-width:0}.form-main{display:grid;gap:var(--s-4);min-width:0}.form-main [hidden]{display:none}.form-side{min-width:0}.form-main .form-grid{align-items:start;gap:var(--s-4)}.required{color:var(--danger-text)}.accent-text{color:var(--accent)}.kv-list{display:grid;margin:0}.kv-list>div{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3);padding:var(--s-3) 0}.kv-list>div+div{border-top:1px solid var(--line)}.kv-list dt{color:var(--text-3);font-size:var(--fs-sm)}.kv-list dd{margin:0;font-size:var(--fs-sm);font-weight:600;text-align:end}.picker-options.picker-tall{max-height:min(52vh,420px)}@media(max-width:639px){.form-tabs{flex:1 1 100%}.form-tab{flex:1;justify-content:center}.form-bar-actions{flex:1 1 100%}.form-bar-actions .btn{flex:1}}@media(min-width:960px){.form-layout{grid-template-columns:minmax(0,1fr) 300px}.form-side{position:sticky;inset-block-start:var(--s-4)}}.user-form{display:grid;gap:var(--s-4);min-width:0}.user-form [role=tabpanel][hidden]{display:none}.user-form [role=tabpanel]:not([hidden]){animation:rise-in var(--t-slow) var(--ease-out) backwards}.user-form-layout{display:grid;gap:var(--s-4);align-items:start;min-width:0}@media(min-width:1100px){.user-form-layout{grid-template-columns:minmax(0,1fr) 300px}}.form-card{min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:var(--r-4);background:var(--surface-1)}.form-card-head{min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:var(--s-2) var(--s-5);border-bottom:1px solid var(--line)}.form-card-head h2{font-size:var(--fs-md);font-weight:700}.form-card-body{padding:var(--s-5)}.form-columns{display:grid;gap:var(--s-5) var(--s-6)}@media(min-width:720px){.form-columns{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}}.form-column{min-width:0;display:grid;gap:var(--s-5)}.field-label-row{display:flex;align-items:center;gap:6px}.field-required{margin-inline-start:3px;color:var(--danger)}.field-help{position:relative;display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;color:var(--text-3);cursor:help}.field-help svg{width:14px;height:14px}.field-help:hover,.field-help:focus-visible{color:var(--accent-text)}.field-help:after{content:attr(data-tip);position:absolute;z-index:5;bottom:calc(100% + 6px);inset-inline-start:-8px;width:max-content;max-width:260px;padding:8px 12px;border:1px solid var(--line-strong);border-radius:var(--r-2);background:var(--surface-3);box-shadow:var(--shadow-overlay);color:var(--text-1);font-size:var(--fs-xs);font-weight:500;line-height:1.7;opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.field-help:hover:after,.field-help:focus-visible:after{opacity:1;transform:none}.field-error{color:var(--danger-text);font-size:var(--fs-xs)}.field.has-error .input,.field.has-error .select{border-color:var(--danger-line)}.input-affix.has-two .input[dir=ltr]{padding-inline:var(--s-3) 88px}.input-affix-buttons{position:absolute;right:4px;display:flex;gap:2px}.input-affix-buttons .input-affix-button{position:static}.user-history dl{display:grid;margin:0}.user-history dl>div{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);min-height:52px;padding:0 var(--s-5);border-top:1px solid var(--line)}.user-history dl>div:first-child{border-top:0}.user-history dt{display:flex;align-items:center;gap:var(--s-2);color:var(--text-2);font-size:var(--fs-sm)}.user-history dt svg{width:15px;height:15px;color:var(--text-3)}.user-history dd{margin:0;color:var(--text-1);font-size:var(--fs-sm);font-weight:600}.user-history-note{padding:var(--s-3) var(--s-5) var(--s-4);border-top:1px solid var(--line);color:var(--text-3);font-size:var(--fs-xs);line-height:1.7}.form-empty{display:grid;justify-items:center;gap:var(--s-2);padding:var(--s-12) var(--s-5);color:var(--text-2);font-size:var(--fs-sm);text-align:center}.form-empty strong{color:var(--text-1);font-size:var(--fs-md)}.form-empty span:last-child{max-width:34rem;line-height:1.8}.form-empty-art{width:72px;height:72px;display:grid;place-items:center;margin-bottom:var(--s-2);border:1px dashed var(--line-strong);border-radius:22px;background:var(--surface-2);color:var(--text-3)}.form-empty-art svg{width:28px;height:28px}.membership-list,.picker-list{display:grid;margin:0;padding:0;list-style:none}.membership-list li{display:flex;align-items:center;gap:var(--s-3);min-height:64px;padding:var(--s-2) var(--s-3) var(--s-2) var(--s-5);border-top:1px solid var(--line);animation:rise-in var(--t-base) var(--ease-out) backwards}.membership-list li:first-child{border-top:0}.membership-list li.is-archived{color:var(--text-3)}.membership-mark{width:38px;height:38px;display:grid;place-items:center;flex:none;border-radius:12px;background:var(--accent-soft);color:var(--accent-text);font-weight:800}.membership-main{min-width:0;flex:1;display:grid;gap:1px}.membership-main strong{overflow:hidden;font-size:var(--fs-sm);font-weight:700;text-overflow:ellipsis;white-space:nowrap}.membership-main small{overflow:hidden;color:var(--text-3);font-size:var(--fs-xs);text-overflow:ellipsis;white-space:nowrap}.picker-list{max-height:min(52dvh,460px);overflow-y:auto;border:1px solid var(--line);border-radius:var(--r-3)}.picker-list li+li{border-top:1px solid var(--line)}.picker-row{display:flex;align-items:center;gap:var(--s-3);min-height:60px;padding:var(--s-2) var(--s-4);cursor:pointer;transition:background-color var(--t-fast) var(--ease)}.picker-row:hover{background:var(--surface-2)}.picker-row:has(input:checked:not(:disabled)){background:var(--accent-soft)}.picker-row.is-member{cursor:default;opacity:.7}.picker-row input{width:18px;height:18px;flex:none;margin:0;accent-color:var(--accent)}.picker-count{flex:none;color:var(--text-3);font-size:var(--fs-xs)}.form-actions{position:sticky;z-index:10;bottom:calc(var(--tabbar-h) + var(--safe-bottom) + var(--s-2));display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);padding:var(--s-3);border:1px solid var(--line-strong);border-radius:var(--r-4);background:#131419eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.form-actions .btn-primary{min-width:150px}.form-actions-note{margin-inline-start:auto;color:var(--danger-text);font-size:var(--fs-xs)}@media(min-width:960px){.form-actions{bottom:var(--s-4)}}@media(max-width:639px){.form-actions .btn{flex:1}.form-actions-note{flex-basis:100%;margin:0}}.list-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-2) var(--s-4)}.list-head .list-summary{margin:0;margin-inline-start:auto}.select-all{min-height:44px;color:var(--text-2);font-weight:600}.user-item{display:flex;align-items:stretch;transition:background-color var(--t-fast) var(--ease)}.user-item>.row{min-width:0;flex:1}.user-item.is-selected{background:var(--accent-soft)}.row-select{width:52px;display:grid;flex:none;place-items:center;cursor:pointer}.row-select input{width:18px;height:18px;margin:0;accent-color:var(--accent);cursor:pointer}.row-select:hover{background:var(--surface-2)}.row-select+.row{padding-inline-start:0}.bulk-bar{position:sticky;z-index:10;bottom:calc(var(--tabbar-h) + var(--safe-bottom) + var(--s-2));display:grid;gap:var(--s-2);padding:var(--s-3);border:1px solid var(--line-strong);border-radius:var(--r-4);background:#131419eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:rise-in var(--t-base) var(--ease-out) backwards}.bulk-bar-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);font-size:var(--fs-sm)}.bulk-bar-actions{display:flex;flex-wrap:wrap;gap:var(--s-2)}@media(min-width:960px){.bulk-bar{bottom:var(--s-4)}}@media(max-width:639px){.bulk-bar-actions .btn{min-height:44px;flex:1 1 calc(50% - var(--s-2))}}.bulk-summary{margin:0;color:var(--text-2);font-size:var(--fs-sm);line-height:1.8}.media-limits-fields{display:grid;gap:var(--s-3)}.media-limits-fields .input{max-width:160px}.media-limits-search{margin:var(--s-3) 0 var(--s-2);max-width:360px}.media-limits-tags{display:flex;flex-wrap:wrap;gap:var(--s-1)}.media-limit-choice{display:grid;gap:var(--s-2);margin:0;padding:0;border:0;min-width:0}.media-limit-choice select.input{max-width:300px}@media(min-width:600px){.media-limits-fields{grid-template-columns:repeat(3,minmax(0,1fr))}}.plain-severity{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.plain-severity svg{width:12px;height:12px;flex:none}.plain-severity.is-info{background:var(--success-soft);color:var(--success-text)}.plain-severity.is-low{background:var(--surface-2);color:var(--text-2)}.plain-severity.is-medium{background:var(--warning-soft);color:var(--warning-text)}.plain-severity.is-high{background:var(--danger-soft);color:var(--danger-text)}.plain-explanation{min-width:0;border-inline-start:2px solid var(--line);padding-inline-start:var(--s-3)}.plain-explanation.is-medium{border-inline-start-color:var(--warning)}.plain-explanation.is-high{border-inline-start-color:var(--danger)}.plain-explanation>summary{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1) var(--s-2);min-height:32px;cursor:pointer;list-style:none;border-radius:var(--r-2)}.plain-explanation>summary::-webkit-details-marker{display:none}.plain-explanation>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.plain-summary{flex:1 1 16rem;min-width:0;color:var(--text-1);font-size:var(--fs-sm);line-height:1.7}.plain-more{color:var(--accent-text);font-size:var(--fs-xs);font-weight:700}.plain-explanation[open] .plain-more{color:var(--text-3)}.plain-body{display:grid;gap:var(--s-2);padding-block:var(--s-2);color:var(--text-2);font-size:var(--fs-sm);line-height:1.8}.plain-body strong{color:var(--text-1);font-weight:700}.plain-steps{display:grid;gap:var(--s-1);margin:0;padding-inline-start:1.4em}.plain-runbook{color:var(--text-3);font-size:var(--fs-xs)}.plain-explanation-card{border-inline-start:3px solid var(--line)}.plain-explanation-card.is-medium{border-inline-start-color:var(--warning)}.plain-explanation-card.is-high{border-inline-start-color:var(--danger)}.plain-card-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-2)}.plain-card-head h2{font-size:var(--fs-md);font-weight:700}.plain-card-summary{color:var(--text-1);font-size:var(--fs-md);font-weight:600;line-height:1.8}.plain-card-summary+.plain-body{padding-block-start:0}.error-row-plain{display:block;color:var(--text-2);font-size:var(--fs-xs);line-height:1.7}.room{height:100dvh;display:grid;grid-template:"titlebar" auto "toolbar" auto "stage" auto "cameras" auto "panel" minmax(0,1fr) / minmax(0,1fr);background:var(--bg);--toast-offset: 96px}.room-titlebar{grid-area:titlebar;min-width:0;min-height:calc(32px + var(--safe-top));display:flex;align-items:center;gap:var(--s-3);padding:var(--safe-top) var(--s-3) 0;border-bottom:1px solid var(--line);background:var(--bg)}.room-title{min-width:0;flex:1;display:flex;align-items:center;gap:var(--s-2)}.room-title .brand-mark{width:24px;height:24px;flex:0 0 auto}.room-title h1{overflow:hidden;color:var(--text-1);font-size:var(--fs-sm);font-weight:700;text-overflow:ellipsis;white-space:nowrap}.room-title span:last-child:not(.brand-mark){color:var(--text-3);font-size:var(--fs-xs);white-space:nowrap}.room-title span:last-child:not(.brand-mark):before{content:"|";margin-inline-end:var(--s-2);color:var(--line-strong)}.room-status{--status: var(--success);display:inline-flex;align-items:center;flex:0 0 auto;padding-inline:2px}.room-status.is-weak,.room-status.is-reconnecting{--status: var(--warning)}.room-status.is-connecting{--status: var(--text-3)}.room-status.is-reconnecting .room-signal{animation:recording-pulse 1.1s ease-in-out infinite}.room-signal{direction:ltr;height:14px;display:inline-flex;align-items:flex-end;gap:2px}.room-signal i{width:3px;border-radius:1px;background:var(--line-strong);transition:background-color var(--t-base) var(--ease)}.room-signal i:nth-child(1){height:5px}.room-signal i:nth-child(2){height:8px}.room-signal i:nth-child(3){height:11px}.room-signal i:nth-child(4){height:14px}.room-signal i.is-lit{background:var(--status)}.room-clock{display:inline-flex;align-items:center;flex:0 0 auto;gap:5px;color:var(--text-2);font-size:var(--fs-xs)}.room-clock svg{width:14px;height:14px;color:var(--text-3)}.recording-bar{position:relative;flex:0 0 auto}.recording-cluster{--rec: var(--danger);--rec-line: var(--danger-line);--rec-soft: var(--danger-soft);--rec-text: var(--danger-text);height:24px;display:inline-flex;align-items:stretch;border:1px solid var(--rec-line);border-radius:var(--r-pill);background:var(--rec-soft);color:var(--rec-text);font-size:var(--fs-xs);font-weight:600;white-space:nowrap;transition:background var(--t-base) var(--ease),border-color var(--t-base) var(--ease),color var(--t-base) var(--ease)}.recording-cluster.is-paused{--rec: var(--warning);--rec-line: var(--warning-line);--rec-soft: var(--warning-soft);--rec-text: var(--warning-text)}.recording-cluster.is-idle{--rec: var(--text-3);--rec-line: var(--line-strong);--rec-soft: var(--surface-2);--rec-text: var(--text-2)}.recording-cluster.is-stopping{opacity:.75}.recording-pill,.recording-action{position:relative;display:inline-flex;align-items:center;border:0;background:transparent;color:inherit;font:inherit;cursor:pointer;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.recording-pill:after,.recording-action:after{content:"";position:absolute;top:-6px;right:0;bottom:-6px;left:0}.recording-pill:focus-visible,.recording-action:focus-visible{outline:2px solid var(--focus);outline-offset:-3px}.recording-pill{gap:7px;padding:0 10px;border-radius:var(--r-pill)}.recording-cluster:has(.recording-action) .recording-pill{border-start-end-radius:0;border-end-end-radius:0}.recording-pill:hover{background:color-mix(in srgb,var(--rec) 14%,transparent)}.recording-pill:active{transform:scale(.97)}.recording-action{width:28px;justify-content:center;border-inline-start:1px solid var(--rec-line)}.recording-action:last-child{border-start-end-radius:var(--r-pill);border-end-end-radius:var(--r-pill)}.recording-action svg{width:14px;height:14px}.recording-action:hover:not(:disabled){background:color-mix(in srgb,var(--rec) 22%,transparent)}.recording-action:active:not(:disabled){transform:scale(.94)}.recording-action:disabled{opacity:.5;cursor:default}.recording-action.is-stop{color:var(--danger)}.recording-action.is-stop:hover:not(:disabled){background:var(--danger-fill);color:var(--text-1)}.recording-action.is-resume{background:var(--warning);color:var(--bg)}.recording-action.is-resume:hover:not(:disabled){background:color-mix(in srgb,var(--warning) 82%,white)}.recording-time{min-width:3.4ch;color:var(--text-1);font-variant-numeric:tabular-nums;font-weight:500;letter-spacing:.02em;text-align:center}.recording-cluster.is-paused .recording-time{color:var(--warning-text)}.recording-dot{position:relative;width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:var(--rec, var(--danger))}.recording-dot:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:1.5px solid var(--rec, var(--danger));opacity:0}.recording-cluster.is-live .recording-dot:after{animation:recording-ring 2s var(--ease-out) infinite}.recording-cluster.is-starting .recording-dot{animation:recording-pulse 1.1s ease-in-out infinite}.recording-mark{width:13px;height:13px;flex:0 0 auto;color:var(--rec, var(--warning))}.recording-popover .recording-dot.is-idle{--rec: var(--text-3)}.recording-popover .recording-mark{color:var(--warning)}.leave-button{height:28px;display:inline-flex;align-items:center;flex:0 0 auto;gap:6px;padding:0 10px;border:1px solid var(--danger-line);border-radius:var(--r-2);background:var(--danger-soft);color:var(--danger-text);font:inherit;font-size:var(--fs-xs);font-weight:700;white-space:nowrap;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.leave-button svg{width:15px;height:15px;flex:0 0 auto}.leave-button:hover{background:#f17b8438;color:var(--text-1)}.leave-button:active{transform:scale(.97)}@media(max-width:959px),(pointer:coarse){.leave-button{position:relative;height:32px}.leave-button:after{content:"";position:absolute;top:-4px;right:0;bottom:-4px;left:0}}.room-toolbar{grid-area:toolbar;container:toolbar / inline-size;min-width:0;min-height:44px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--s-2);row-gap:2px;padding:4px var(--s-2);border-bottom:1px solid var(--line);background:var(--surface-1)}.toolbar-group{min-width:0;display:flex;align-items:center;gap:4px}.toolbar-media{padding:2px;border-radius:var(--r-3);background:var(--bg);box-shadow:inset 0 0 0 1px var(--line)}.toolbar-media{direction:ltr}.toolbar-divider{width:1px;height:20px;margin-inline:4px;background:var(--line-strong)}.control{position:relative;width:36px;height:36px;display:grid;place-items:center;flex:0 0 auto;padding:0;border:0;border-radius:var(--r-2);background:transparent;color:var(--text-2);transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.control-icon{display:grid;place-items:center}.control-icon svg{width:18px;height:18px}.control:not(:disabled):hover{background:var(--surface-3);color:var(--text-1)}.control:not(:disabled):active{transform:scale(.92)}.control.is-on,.control.is-on:not(:disabled):hover{background:var(--accent);color:var(--accent-ink)}.control.is-on .control-icon{animation:control-on var(--t-slow) var(--ease-out)}@keyframes control-on{0%{transform:scale(.7)}}.control:disabled{color:var(--text-3);opacity:.45}.control[aria-busy=true] .control-icon{opacity:.6}.control-badge{position:absolute;top:-3px;inset-inline-end:-3px;min-width:16px;height:16px;display:grid;place-items:center;padding:0 4px;border:2px solid var(--surface-1);border-radius:8px;background:var(--danger-fill);color:#fff;font-size:9px;font-weight:700;line-height:1;animation:badge-pop var(--t-slow) cubic-bezier(.34,1.56,.64,1)}@keyframes badge-pop{0%{transform:scale(0)}}.control-badge.is-warning{background:var(--warning);color:#1d1606}.session-timer{min-width:44px;color:var(--text-2);font-size:var(--fs-xs);font-weight:600;text-align:center}.session-timer.is-recording{color:var(--danger)}.session-timer.is-recording.is-paused{color:var(--warning)}.control .record-glyph{width:14px;height:14px}.control.is-recording,.control.is-recording:not(:disabled):hover{background:var(--danger-soft);color:var(--danger)}.control.is-recording .record-glyph{border:0;background:var(--danger);animation:recording-pulse 1.3s ease-in-out infinite}.control.is-recording.is-paused .record-glyph{background:var(--warning);animation:none}.toolbar-recording{width:20px;height:34px;display:grid;place-items:center;flex:0 0 auto}.control-upload:disabled{cursor:progress;opacity:1;color:var(--text-1)}.control-upload[aria-busy=true] .control-icon{opacity:1}.control-upload .spinner{width:15px;height:15px}.control-progress{position:absolute;inset-inline:6px;bottom:3px;height:2px;border-radius:1px;background:var(--accent);transform:scaleX(var(--progress, 0));transform-origin:left;transition:transform var(--t-fast) linear}.box-head,.stage-bar{min-height:30px;display:flex;align-items:center;flex:0 0 auto;gap:6px;padding-inline:var(--s-3) 4px;border-bottom:1px solid var(--line);background:var(--surface-1);color:var(--text-2);font-size:var(--fs-xs);font-weight:600}.box-head svg,.stage-bar-title svg{width:14px;height:14px;flex:0 0 auto;color:var(--text-3)}.box-count{margin-inline-start:auto;color:var(--text-3);font-weight:500}.box-head .badge{margin-inline-end:6px}.box-action{width:26px;height:26px;display:grid;place-items:center;flex:0 0 auto;margin-inline-start:auto;padding:0;border:0;border-radius:var(--r-1);background:transparent;color:var(--text-3)}.box-action:hover{background:var(--surface-3);color:var(--text-1)}.box-action svg{width:14px;height:14px}.stage-bar-actions{display:inline-flex;align-items:center;flex:0 0 auto;gap:2px;margin-inline-start:auto}.stage-bar-actions .box-action{margin-inline-start:0}.stage-live{min-height:24px;display:inline-flex;align-items:center;gap:6px;margin-inline-end:4px;padding:0 10px;border:1px solid var(--accent-line);border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent-text);font:inherit;font-size:var(--fs-xs);font-weight:600;white-space:nowrap}.stage-live .live-dot{background:var(--success)}.stage-live.has-news{border-color:var(--warning);color:var(--warning)}.stage-live:hover{background:var(--surface-3)}.stage{grid-area:stage;position:relative;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:var(--surface-1)}.stage-bar-title{min-width:0;display:flex;align-items:center;gap:6px}.stage-bar-title strong{overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.stage-view{position:relative;width:100%;aspect-ratio:16 / 10;max-height:52dvh;display:grid;place-items:center;overflow:hidden;background:var(--stage)}.stage-view video{width:100%;height:100%;display:block;object-fit:contain}.stage-view.is-camera video{object-fit:cover}.stage-empty{max-width:360px;display:grid;justify-items:center;gap:var(--s-2);padding:var(--s-5);color:var(--text-2);font-size:var(--fs-sm);text-align:center}.stage-empty svg{width:28px;height:28px;color:var(--text-3)}.stage-empty strong{color:var(--text-1);font-size:var(--fs-md)}.stage-empty .btn{margin-top:var(--s-2)}.stage-media{width:100%;height:100%;min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto}.stage-media.is-audio{max-width:420px;height:auto;grid-template-rows:none;justify-items:center;gap:var(--s-2);padding:var(--s-5);text-align:center}.stage-media-icon{display:grid;place-items:center;width:56px;height:56px;border:1px solid var(--line-strong);border-radius:50%;background:var(--surface-2);color:var(--accent-text)}.stage-media-icon svg{width:24px;height:24px}.stage-media-title{color:var(--text-1);font-size:var(--fs-md);overflow-wrap:anywhere}.stage-media.is-audio audio{width:100%}.stage-media-status{margin:0;padding:var(--s-1) var(--s-2);color:var(--text-3);font-size:var(--fs-xs);text-align:center}.stage-media.is-video .stage-media-status{border-top:1px solid var(--line);background:var(--surface-1)}.stage-media.is-audio .media-controls{width:100%;border:1px solid var(--line);border-radius:var(--r-3)}.stage-media.is-audio .media-progress{width:100%}.stage-media-icon.is-playing{border-color:var(--accent-line);background:var(--accent-soft)}.media-picture{position:relative;min-height:0;display:grid;place-items:center;overflow:hidden;background:var(--stage)}.media-picture video{width:100%;height:100%;object-fit:contain;cursor:pointer}.media-overlay-play{position:absolute;width:72px;height:72px;display:grid;place-items:center;border:1px solid rgb(255 255 255 / .18);border-radius:50%;background:#08090ba8;color:var(--text-1);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:transform var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.media-overlay-play svg{width:30px;height:30px}.media-overlay-play:hover{background:#08090bd1;transform:scale(1.05)}.media-overlay-play:active{transform:scale(.95)}.media-overlay-play:focus-visible{outline:2px solid var(--focus);outline-offset:3px}.media-paused{position:absolute;inset-block-start:var(--s-3);display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:var(--r-pill);background:#08090bb8;color:var(--text-1);font-size:var(--fs-xs);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.media-controls{display:grid;gap:4px;padding:var(--s-2) var(--s-3);border-top:1px solid var(--line);background:var(--surface-1)}.media-seek,.media-progress{display:flex;align-items:center;gap:var(--s-2)}.media-progress{padding:6px var(--s-3);border-top:1px solid var(--line);background:var(--surface-1)}.stage-media.is-audio .media-progress{border:0;background:transparent;padding-inline:0}.media-time{min-width:3.2em;color:var(--text-2);font-size:var(--fs-xs);text-align:center}.media-range{--progress: 0;min-width:0;flex:1;height:20px;margin:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.media-range:disabled{cursor:default;opacity:.5}.media-range::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(to left,var(--accent) calc(var(--progress) * 100%),var(--surface-4) calc(var(--progress) * 100%))}.media-range::-moz-range-track{height:4px;border-radius:2px;background:var(--surface-4)}.media-range::-moz-range-progress{height:4px;border-radius:2px;background:var(--accent)}.media-range::-webkit-slider-thumb{width:14px;height:14px;margin-top:-5px;border:0;border-radius:50%;background:var(--text-1);-webkit-appearance:none;-moz-appearance:none;appearance:none}.media-range::-moz-range-thumb{width:14px;height:14px;border:0;border-radius:50%;background:var(--text-1)}.media-range:focus-visible{outline:none}.media-range:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px var(--focus)}.media-range:focus-visible::-moz-range-thumb{box-shadow:0 0 0 3px var(--focus)}.media-progress-track{--progress: 0;height:4px;flex:1;border-radius:2px;background:linear-gradient(to left,var(--accent) calc(var(--progress) * 100%),var(--surface-4) calc(var(--progress) * 100%))}.media-buttons{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px var(--s-1)}.media-button{width:40px;height:40px}.media-play{width:44px;height:44px;border-radius:50%}.media-play svg{width:18px;height:18px}.media-volume{display:inline-flex;align-items:center;gap:2px}.media-volume-range{width:84px;flex:0 0 auto}.media-speed-select{min-height:36px;width:auto;padding-inline:10px 26px;font-size:var(--fs-xs)}.media-end{margin-inline-start:auto;gap:6px;color:var(--danger-text)}.media-end svg{width:13px;height:13px}.media-note{display:flex;align-items:center;justify-content:center;gap:6px;margin:0;color:var(--text-3);font-size:var(--fs-2xs)}.media-live{width:6px;height:6px;border-radius:50%;background:var(--text-3)}.media-live.is-live{background:var(--success)}@media(max-width:520px){.media-volume-range{display:none}.media-end{margin-inline-start:0}}.stage-end{display:inline-flex;align-items:center;gap:5px;min-height:28px;margin-inline-end:4px;padding:0 10px;border:1px solid var(--danger-line);border-radius:var(--r-pill);background:transparent;color:var(--danger-text);font:inherit;font-size:var(--fs-xs);font-weight:600;white-space:nowrap;transition:background-color var(--t-fast) var(--ease)}.stage-end svg{width:12px;height:12px}.stage-end:hover{background:var(--danger-soft)}.stage-end:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.stage-beside{gap:5px}.stage-tools{display:flex;justify-content:center;flex:0 0 auto;padding:3px;border-top:1px solid var(--line);background:var(--surface-1)}.stage-chip{display:inline-flex;align-items:center;gap:2px}.stage-chip .btn{min-height:32px}.stage-chip-divider{width:1px;height:18px;margin-inline:4px;background:var(--line-strong)}.stage-pen.is-active,.stage-pen.is-active:not(:disabled):hover{background:var(--accent);color:var(--accent-ink)}.stage-chip .page-count{min-width:64px;padding:3px var(--s-2);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-xs);text-align:center}.page-jump{display:inline-flex;align-items:center;justify-content:center;gap:4px;font:inherit;cursor:pointer;transition:border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}button.page-jump{border-color:var(--line)}.split-document-pages button.page-jump{padding:2px 4px;border:1px solid transparent;border-radius:var(--r-pill);background:none;color:inherit}button.page-jump:hover{border-color:var(--line-strong);color:var(--text-1)}button.page-jump:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.page-jump.is-editing{cursor:text;border-color:var(--accent)}.page-jump-input{width:4ch;min-width:0;padding:0;border:0;background:none;color:var(--text-1);font:inherit;text-align:center;outline:none}.page-jump-input[aria-invalid=true]{color:var(--danger)}.stage-single,.stage-split{position:absolute;top:0;right:0;bottom:0;left:0}.stage-single .split-grid{display:block;position:relative}.stage-single .split-board{position:absolute;top:0;right:0;bottom:0;left:0}.stage-split{container:stage-split / size}.split-grid{--doc-max: calc(100cqh - 33px) ;width:100%;height:100%;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr);grid-template-rows:minmax(0,1fr)}.split-board{position:relative;min-width:0;min-height:0}.split-grid>.error-fallback{position:relative}.split-document{min-width:0;min-height:0;display:flex;flex-direction:column;border-inline-end:1px solid var(--line-strong);background:var(--surface-1)}.split-document-bar{min-height:32px;display:flex;align-items:center;flex:0 0 auto;gap:2px;flex-wrap:wrap;padding-inline:var(--s-2) 2px;border-bottom:1px solid var(--line);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-xs)}.split-document-title{min-width:0;flex:1 1 0;display:flex;align-items:center;gap:6px}.split-document-title svg{width:14px;height:14px;flex:0 0 auto;color:var(--text-3)}.split-document-title strong{overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.split-document-pages,.split-document-actions{display:inline-flex;align-items:center;flex:0 0 auto;gap:2px}.split-document-pages{padding-inline:4px;border-inline:1px solid var(--line)}.split-document-pages .num{min-width:40px;text-align:center;color:var(--text-1)}.split-document-bar .box-action{width:30px;height:30px;margin:0}.split-document-bar .box-action:disabled{opacity:.4;pointer-events:none}.split-document-view{position:relative;flex:1;min-height:0;max-height:var(--doc-max);display:flex;overflow:auto;overscroll-behavior:contain;background:var(--stage)}.split-document-view:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.split-document-view img{display:block;flex:none;width:calc(min(100%,var(--doc-max) * var(--aspect, .7071)) * var(--zoom, 1));max-width:none;height:auto;margin:auto;-webkit-user-select:none;user-select:none}.split-document-zoom{display:inline-flex;align-items:center;gap:0}.split-document-zoom-level{min-width:40px;height:30px;padding:0 2px;border:0;border-radius:var(--r-1);background:transparent;color:var(--text-2);font:inherit;font-weight:600}.split-document-zoom-level:not(:disabled):hover{background:var(--surface-3);color:var(--text-1)}.split-document-zoom-level:disabled{cursor:default}@container stage-split (max-width: 420px){.split-document-zoom-level{display:none}}.split-document-view .pdf-progress,.split-document-view .stage-empty{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;height:fit-content}@container stage-split (min-width: 640px) and (orientation: landscape){.split-grid[data-focus=both]:has(.split-document[data-shape=tall]){grid-template-columns:fit-content(50%) minmax(0,1fr)}.split-grid[data-focus=both]:has(.split-document[data-shape=tall]) .split-document-view img{width:calc(min(50cqw,var(--doc-max) * var(--aspect)) * var(--zoom, 1))}.split-grid[data-focus=both]:has(.split-document[data-shape=wide]){--doc-max: calc(45cqh - 33px) ;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.split-grid[data-focus=both]:has(.split-document[data-shape=wide]) .split-document{border-inline-end:0;border-bottom:1px solid var(--line-strong)}.split-grid[data-focus=both]:has(.split-document[data-shape=wide]) .split-document-view{flex:0 1 auto}}@container stage-split (max-width: 639px) or (orientation: portrait){.split-grid{--doc-max: calc(45cqh - 33px) ;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.split-document{border-inline-end:0;border-bottom:1px solid var(--line-strong)}.split-document-view{flex:0 1 auto}}.split-grid[data-focus=board]{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.split-grid[data-focus=board] .split-document{border-inline-end:0;border-bottom:1px solid var(--line-strong)}.split-grid[data-focus=document]{--doc-max: calc(100cqh - 33px) ;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}.split-grid[data-focus=document] .split-document-view{flex:1}.split-grid[data-focus=document] .split-board{display:none}.split-grid[data-focus=document] .split-document{border:0}.board-host{position:absolute;top:0;right:0;bottom:0;left:0}.board-host .excalidraw{--color-primary: var(--accent)}.board-host.is-viewer .excalidraw .layer-ui__wrapper{display:none}.board-host.is-fitting .excalidraw{opacity:0}.board-host .excalidraw .ToolIcon[data-testid=toolbar-freedraw]{display:none}.board-tools{display:contents}.board-host:not(.is-viewer) .excalidraw .App-toolbar>.mobile-toolbar{max-width:calc(100% - 116px)}.board-host:not(.is-viewer) .excalidraw .mobile-toolbar .ToolIcon[data-testid=toolbar-hand]{display:none}.board-host .excalidraw .App-toolbar:has(>.board-tools){flex-direction:row;gap:4px}.board-tools.is-phone{display:flex;flex:0 0 auto;gap:4px;padding-inline-end:4px;border-inline-end:1px solid var(--default-border-color)}.board-tools-icon{fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round}.board-host .excalidraw .ToolIcon__icon .board-tools-icon{width:1em;height:1em}.board-tools-ink{position:absolute;bottom:4px;left:50%;width:12px;height:2px;margin-left:-6px;border-radius:1px}.board-tools-menu{position:absolute;z-index:10;display:grid;grid-template-columns:repeat(4,auto);gap:4px;padding:6px;border-radius:var(--border-radius-lg);background:var(--island-bg-color);box-shadow:var(--shadow-island)}.pdf-host{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;overflow:hidden}.pdf-host canvas{display:block;max-width:100%;max-height:100%;background:#fff}.pdf-progress{display:grid;justify-items:center;gap:var(--s-2);color:var(--text-2);font-size:var(--fs-sm)}.panel{grid-area:panel;min-height:0;display:flex;flex-direction:column;border-top:1px solid var(--line);background:var(--surface-1)}.panel-head{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3)}.panel-head .tabs{flex:1}.panel-head .tab{min-height:36px}.panel-head .tab>svg{width:var(--icon-sm);height:var(--icon-sm)}.panel-head .tab[aria-selected=true]{background:var(--surface-3);color:var(--accent-text)}.panel-close{display:none}.panel-body,.box-body{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain;scrollbar-color:var(--line-strong) transparent;scrollbar-width:thin}.panel-camera{position:relative;min-height:116px;max-height:190px;flex:0 1 auto;aspect-ratio:16 / 9;margin:var(--s-3) var(--s-3) 0;overflow:hidden;border:1px solid var(--line-strong);border-radius:var(--r-3);background:var(--stage);transition:border-color var(--t-base) var(--ease),box-shadow var(--t-base) var(--ease)}.panel-camera.is-speaking{border-color:var(--success);box-shadow:0 0 0 1px var(--success)}.panel-camera video{width:100%;height:100%;display:block;object-fit:cover}.panel-camera-footer{position:absolute;inset-inline:var(--s-2);bottom:var(--s-2);display:flex;align-items:center;justify-content:space-between;gap:var(--s-2)}.panel-camera-person{min-width:0;min-height:30px;display:flex;align-items:center;gap:6px;padding:0 10px;border-radius:var(--r-pill);background:#060709b8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--text-1);font-size:var(--fs-xs)}.panel-camera-person>svg{width:15px;height:15px;color:var(--text-2)}.panel-camera-person>svg.is-speaking{color:var(--success)}.panel-camera-person strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-live-badge{color:var(--success);font-size:10px;font-weight:600}.panel-camera-fullscreen{width:36px;height:36px;display:grid;place-items:center;flex:0 0 auto;padding:0;border:0;border-radius:50%;background:#060709b8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--text-1)}.panel-camera-fullscreen:hover{background:var(--surface-3)}.panel-camera-fullscreen svg{width:var(--icon-sm);height:var(--icon-sm)}.panel-camera:fullscreen{width:100%;height:100%;max-height:none;margin:0;border:0;border-radius:0;background:var(--stage)}.panel-camera:fullscreen video{object-fit:contain}.panel-camera:fullscreen .panel-camera-footer{inset-inline:var(--s-5);bottom:var(--s-5)}.panel-camera.is-fullscreen-fallback{position:fixed;z-index:70;top:0;right:0;bottom:0;left:0;width:100vw;height:100dvh;max-height:none;margin:0;border:0;border-radius:0;background:var(--stage)}.panel-camera.is-fullscreen-fallback video{object-fit:contain}.panel-camera.is-fullscreen-fallback .panel-camera-footer{inset-inline:var(--s-5);bottom:calc(var(--s-5) + var(--safe-bottom))}.people-view{padding-top:var(--s-1)}.people-summary{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);padding:var(--s-2) var(--s-4) var(--s-3);color:var(--text-3);font-size:var(--fs-xs)}.people-summary span{display:inline-flex;align-items:center;gap:6px}.presence-dot{width:7px;height:7px;border-radius:50%;background:var(--success)}.people{display:grid;gap:2px;margin:0;padding:0 var(--s-2) var(--s-3);list-style:none}.person{min-height:52px;display:flex;align-items:center;gap:var(--s-2);padding:6px var(--s-2);border:1px solid transparent;border-radius:var(--r-2);transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.person:hover{background:var(--surface-2)}.person.is-speaking{border-color:var(--success-line);background:var(--success-soft)}.person .avatar{transition:box-shadow var(--t-base) var(--ease)}.person.is-speaking .avatar{box-shadow:0 0 0 2px var(--surface-1),0 0 0 4px var(--success)}.person-main{min-width:0;flex:1;display:grid;line-height:1.4}.person-main>span:last-child{color:var(--text-3);font-size:var(--fs-xs)}.person-name-row{min-width:0;display:flex;align-items:center;gap:6px}.person-name-row strong{overflow:hidden;color:var(--text-1);font-size:var(--fs-sm);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.person-access{display:inline-flex;align-items:center;flex:0 0 auto;gap:5px;color:var(--text-3)}.person-access svg{width:var(--icon-sm);height:var(--icon-sm);flex:0 0 auto}.person-mic{color:var(--text-2)}.person-mic.is-off{color:var(--text-3)}.person-mic.is-speaking{color:var(--success)}.person-state{display:flex;align-items:center;gap:var(--s-2);color:var(--text-3)}.person-state svg{width:var(--icon-sm);height:var(--icon-sm)}.person-state .is-hand{color:var(--warning)}.person-menu{flex:0 0 auto}.chat{display:grid;gap:var(--s-3);padding:var(--s-3) var(--s-3) var(--s-4)}.chat-empty{display:grid;justify-items:center;gap:6px;padding:var(--s-8) var(--s-3);color:var(--text-3);font-size:var(--fs-xs);text-align:center}.chat-empty strong{color:var(--text-2);font-size:var(--fs-sm)}.chat-empty-icon{width:38px;height:38px;display:grid;place-items:center;margin-bottom:var(--s-1);border-radius:50%;background:var(--surface-3);color:var(--text-2)}.chat-empty-icon svg{width:18px;height:18px}.message{display:flex;align-items:flex-start;gap:var(--s-2);animation:message-in var(--t-slow) var(--ease-out) backwards}@keyframes message-in{0%{opacity:0;transform:translateY(6px)}}.message.is-own{flex-direction:row-reverse}.message-avatar{width:28px;height:28px;display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:var(--surface-3);color:var(--text-2);font-size:11px;font-weight:700}.message-content{min-width:0;max-width:calc(100% - 36px);display:grid;gap:5px}.message.is-own .message-content{justify-items:end}.message-head{display:flex;align-items:center;gap:var(--s-2);font-size:var(--fs-xs)}.message-head strong{color:var(--text-2);font-weight:600}.message-head time{color:var(--text-3)}.message.is-own .message-head strong{color:var(--accent-text)}.message.is-teacher .message-head strong{color:var(--warning)}.message-role{padding:1px 5px;border-radius:4px;background:var(--warning-soft);color:var(--warning);font-size:10px}.message p{width:fit-content;max-width:100%;padding:7px 12px;border:1px solid var(--line);border-inline-start:2px solid var(--line-strong);border-radius:4px 14px 14px;background:var(--surface-2);color:var(--text-1);font-size:var(--fs-sm);line-height:1.7;overflow-wrap:anywhere}.message.is-teacher p{border-inline-start-color:var(--warning)}.message.is-pending p{border-style:dashed;opacity:.75}.message-status{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);margin-top:3px;color:var(--text-3);font-size:var(--fs-xs)}.message-retry{min-height:24px;padding:0 var(--s-2);border:1px solid var(--line-strong);border-radius:var(--r-1);background:transparent;color:var(--accent-text);font:inherit;cursor:pointer}.message-retry:hover{background:var(--surface-3)}.message-retry:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.service-notice{position:fixed;z-index:64;top:calc(var(--s-3) + var(--safe-top));inset-inline:var(--s-3);width:fit-content;max-width:calc(100% - 24px);margin-inline:auto;padding:var(--s-1) var(--s-3);border:1px solid var(--warning-line);border-radius:var(--r-pill);background:var(--warning-soft);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--warning-text);font-size:var(--fs-xs);line-height:1.6;pointer-events:none}.service-notice.is-standing{top:calc(var(--safe-top) + 32px + 44px + 30px + var(--s-2));display:flex;align-items:flex-start;gap:var(--s-1);padding-inline-end:var(--s-1)}.service-notice-close{flex:none;display:grid;place-items:center;width:36px;height:36px;margin-block:-8px;border:0;border-radius:var(--r-2);background:transparent;color:inherit;cursor:pointer;pointer-events:auto}.service-notice-close:hover{background:color-mix(in srgb,var(--warning-text) 14%,transparent)}.service-notice-close:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.message.is-own p{border-color:var(--accent-line);border-inline-start-color:var(--accent-line);border-inline-end:2px solid var(--accent);border-radius:14px 4px 14px 14px;background:var(--accent-soft)}.composer{position:relative;display:flex;gap:var(--s-2);padding:var(--s-2) var(--s-2) calc(var(--s-2) + var(--safe-bottom));border-top:1px solid var(--line);background:var(--surface-1)}.composer .input{min-height:40px;border-color:var(--line);border-radius:var(--r-pill);background:var(--surface-2);padding-inline:var(--s-4)}.composer .btn{width:40px;height:40px;flex:0 0 auto;border-radius:50%}.composer .composer-emoji{color:var(--text-3)}.composer .composer-emoji[aria-expanded=true]{background:var(--surface-3);color:var(--text-1)}.composer .input:disabled{opacity:.6;cursor:not-allowed}.composer .composer-mode{color:var(--text-3)}.composer .composer-mode.is-private{color:var(--accent-text)}.composer .composer-mode.is-closed{color:var(--warning)}.composer .composer-mode[aria-expanded=true]{background:var(--surface-3);color:var(--text-1)}.chat-mode-menu{position:absolute;z-index:46;bottom:calc(100% + 4px);inset-inline:var(--s-2);display:grid;gap:2px;padding:6px;border:1px solid var(--line-strong);border-radius:var(--r-3);background:var(--surface-2);box-shadow:var(--shadow-overlay);animation:picker-in var(--t-base) var(--ease-out)}.chat-mode-menu-title{padding:4px var(--s-2) 6px;color:var(--text-3);font-size:var(--fs-2xs);font-weight:700}.chat-mode-option{min-height:48px;display:flex;align-items:center;gap:var(--s-3);padding:6px var(--s-2);border:1px solid transparent;border-radius:var(--r-2);background:transparent;color:var(--text-2);font:inherit;text-align:start;transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.chat-mode-option>svg{width:16px;height:16px;flex:0 0 auto}.chat-mode-option span{min-width:0;display:grid;gap:1px}.chat-mode-option strong{color:var(--text-1);font-size:var(--fs-sm);font-weight:700}.chat-mode-option small{color:var(--text-3);font-size:var(--fs-2xs);line-height:1.6}.chat-mode-option[aria-checked=true]{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent-text)}.chat-mode-option:focus-visible{outline:2px solid var(--focus);outline-offset:1px}@media(hover:hover){.chat-mode-option:hover{background:var(--surface-3)}}.chat-mode-notice{display:flex;align-items:center;flex:0 0 auto;gap:var(--s-2);margin:0;padding:6px var(--s-3);border-bottom:1px solid var(--line);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-xs);line-height:1.6}.chat-mode-notice svg{width:14px;height:14px;flex:0 0 auto}.chat-mode-notice.is-private svg{color:var(--accent-text)}.chat-mode-notice.is-closed svg{color:var(--warning)}.message-private{display:inline-flex;align-items:center;gap:3px;padding:1px 5px;border-radius:4px;background:var(--accent-soft);color:var(--accent-text);font-size:10px}.message-private svg{width:11px;height:11px}.emoji-picker{position:absolute;z-index:46;bottom:calc(100% + 4px);inset-inline:var(--s-2);display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:2px;padding:6px;border:1px solid var(--line-strong);border-radius:var(--r-3);background:var(--surface-2);box-shadow:var(--shadow-overlay);animation:picker-in var(--t-base) var(--ease-out)}.emoji-option{aspect-ratio:1;min-height:44px;display:grid;place-items:center;padding:0;border:0;border-radius:var(--r-1);background:transparent;font-size:30px;line-height:1;transition:transform var(--t-fast) var(--ease),opacity var(--t-base) var(--ease),background-color var(--t-fast) var(--ease)}.emoji-option:focus-visible{background:var(--surface-3)}@media(hover:hover){.emoji-option:hover{background:var(--surface-3);transform:scale(1.14)}}.emoji-option:active{transform:scale(.9)}.emoji-option.is-sent{background:var(--surface-3);animation:picker-sent .52s cubic-bezier(.34,1.56,.64,1)}.emoji-picker.is-cooling .emoji-option:not(.is-sent){opacity:.4}.emoji-picker-cooldown{position:absolute;inset-inline:10px;bottom:3px;height:2px;border-radius:1px;background:var(--accent);transform-origin:100% 50%;animation:picker-cooldown linear forwards}@keyframes picker-in{0%{opacity:0;transform:translateY(8px) scale(.97)}}@keyframes picker-sent{0%{transform:scale(1)}30%{transform:scale(.8)}65%{transform:scale(1.22)}to{transform:scale(1)}}@keyframes picker-cooldown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.pinned-bar{display:flex;align-items:center;flex:0 0 auto;gap:var(--s-2);padding:6px var(--s-2) 6px var(--s-3);border-bottom:1px solid var(--line);background:var(--surface-2)}.pinned-bar-icon{width:14px;height:14px;flex:0 0 auto;color:var(--warning)}.pinned-bar-body{min-width:0;flex:1;display:grid;gap:1px;padding:0;border:0;background:transparent;color:var(--text-1);font-size:var(--fs-xs);text-align:start}.pinned-bar-body strong{color:var(--warning);font-weight:600}.pinned-bar-body span{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.6;overflow-wrap:anywhere}.pinned-bar-remove{flex:0 0 auto}.message-pin{width:24px;height:24px;display:grid;place-items:center;flex:0 0 auto;margin-inline-start:auto;padding:0;border:0;border-radius:var(--r-1);background:transparent;color:var(--text-3)}.message-pin svg{width:13px;height:13px}.message-pin:hover{background:var(--surface-3);color:var(--text-1)}.message-pin.is-pinned{color:var(--warning)}.message.is-own .message-pin{margin-inline:0 auto}@media(hover:hover)and (pointer:fine){.message-pin:not(.is-pinned){opacity:0}.message:hover .message-pin,.message-pin:focus-visible{opacity:1}}.message.is-pinned p{border-inline-start-color:var(--warning)}@media(max-width:959px)and (max-height:700px){.panel-camera{min-height:88px;max-height:128px}}.panel.is-collapsed{padding:6px 6px calc(6px + var(--safe-bottom))}.panel-bar{display:flex;gap:6px}.panel-bar button{min-height:44px;display:flex;align-items:center;gap:var(--s-2);padding:0 var(--s-3);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-xs);transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.panel-bar button:active{background:var(--surface-3)}.panel-bar svg{width:var(--icon-sm);height:var(--icon-sm);flex:0 0 auto}.panel-bar-chat{min-width:0;flex:1}.panel-bar-chat.has-unread{border-color:var(--accent-line)}.panel-bar-chat.has-unread>svg:first-child{color:var(--accent-text)}.panel-bar-preview{min-width:0;flex:1;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap}.panel-bar-preview strong{color:var(--text-1);font-weight:600}.panel-bar-people,.panel-collapse{flex:0 0 auto}.room.is-panel-collapsed{grid-template:"titlebar" auto "toolbar" auto "stage" minmax(0,1fr) "cameras" auto "panel" auto / minmax(0,1fr);--toast-offset: 68px}.room.is-panel-collapsed .stage-view{flex:1;aspect-ratio:auto;max-height:none;min-height:0}.room.is-panel-collapsed .stage-view.is-camera video{object-fit:contain}@media(max-width:959px)and (not ((orientation:landscape)and (max-height:540px))){.room.is-panel-sized{--panel-now: min(var(--panel-h, clamp(230px, 42dvh, 440px)), calc(100dvh - 190px - var(--safe-top)));--strip-h: clamp(60px, calc((100dvh - var(--panel-now) - 80px - var(--safe-top)) * .26), 104px);grid-template-rows:auto auto minmax(0,1fr) auto var(--panel-now)}.room.is-panel-sized.has-camera-grid{grid-template-rows:auto auto minmax(0,1fr) minmax(0,1fr) var(--panel-now)}.room.is-panel-sized .stage-view{flex:1;aspect-ratio:auto;max-height:none;min-height:0}.room.is-panel-sized .stage-view.is-camera video{object-fit:contain}.room.is-panel-sized .cameras.is-strip .camera-tile{flex:0 0 auto;width:auto;height:var(--strip-h);max-width:none}.room.is-panel-sized .cameras.is-strip .camera-tile:first-child{margin-inline-start:auto}.room.is-panel-sized .cameras.is-strip .camera-tile:last-child{margin-inline-end:auto}.room.is-panel-sized .panel-camera{flex:0 1 auto;min-height:56px;max-height:clamp(56px,24%,128px)}.room.is-panel-sized .panel{min-height:0}}.panel-resizer{position:relative;z-index:2;flex:0 0 auto;display:grid;place-items:center;touch-action:none;-webkit-user-select:none;user-select:none}.panel-resizer.is-height{height:20px;margin-bottom:-4px;cursor:row-resize}.panel-resizer.is-width{position:absolute;inset-block:0;inset-inline-end:-10px;width:20px;cursor:col-resize}.panel-resizer-grip{border-radius:var(--r-pill);background:var(--line-strong);transition:background-color var(--t-fast) var(--ease)}.panel-resizer.is-height .panel-resizer-grip{width:40px;height:4px}.panel-resizer.is-width .panel-resizer-grip{width:4px;height:40px}.panel-resizer:hover .panel-resizer-grip,.panel-resizer:focus-visible .panel-resizer-grip{background:var(--accent)}.panel-resizer:focus-visible{outline:2px solid var(--focus);outline-offset:-2px;border-radius:var(--r-1)}@media(max-width:639px){.room{--toast-offset: 54px}.room-titlebar{min-height:calc(30px + var(--safe-top));gap:var(--s-2);padding-inline:var(--s-2) 4px}.room-title{gap:6px}.room-title .brand-mark{width:20px;height:20px}.room-title h1{font-size:var(--fs-xs)}.room-title span:last-child:not(.brand-mark),.room-clock{display:none}.recording-cluster{height:24px}.recording-pill{gap:5px;padding-inline:8px}.recording-action{width:30px}.recording-bar{position:static}.recording-bar .recording-popover{position:fixed;top:calc(var(--safe-top) + 36px);inset-inline:8px;width:auto}.room-toolbar{min-height:40px;gap:4px;padding:3px 4px}.toolbar-group{gap:2px}.toolbar-divider{margin-inline:2px}.control{width:32px;height:32px;border-radius:10px}.control-icon svg{width:16px;height:16px}.session-timer{min-width:0;font-size:11px}.stage-bar{min-height:28px}.stage-view{max-height:46dvh}.stage-empty{gap:5px;padding:var(--s-3);font-size:11px}.stage-empty svg{width:22px;height:22px}.stage-empty strong{font-size:var(--fs-sm)}.stage-chip .btn{width:30px;min-height:30px}.stage-chip .page-count{min-width:48px;padding-inline:4px;font-size:10px}.cameras{gap:4px;padding:4px 6px}.camera-name{bottom:3px;inset-inline-start:3px;max-width:calc(100% - 6px);padding:1px 6px;font-size:10px}.panel-head{gap:5px;padding:5px 6px}.panel-head .tab{min-height:32px;padding-inline:8px;font-size:11px}.panel-camera{min-height:76px;margin:5px 6px 0}.people-summary{padding:5px 10px;font-size:10px}.people{gap:1px;padding:0 4px 6px}.person{min-height:44px;gap:6px;padding:4px 6px}.person .avatar{width:30px;height:30px;font-size:11px}.person-main>span:last-child,.person-name-row strong{font-size:11px}.chat{gap:8px;padding:7px 6px 8px}.message-avatar{width:24px;height:24px;font-size:9px}.message-content{max-width:calc(100% - 30px);gap:3px}.message-head{gap:5px;font-size:10px}.message p{padding:5px 8px;font-size:11px;line-height:1.55}.composer{gap:5px;padding:5px 6px calc(5px + var(--safe-bottom))}.composer .input{min-height:36px;padding-inline:10px;font-size:12px}.composer .btn{width:36px;height:36px}.audio-banner{top:calc(5px + var(--safe-top));inset-inline:5px;min-height:38px;padding:4px 6px;font-size:11px}}@container toolbar (max-width: 420px){.toolbar-divider,.session-timer:not(.is-recording){display:none}}.audio-banner{position:fixed;z-index:65;top:calc(var(--s-3) + var(--safe-top));inset-inline:var(--s-3);width:fit-content;max-width:calc(100% - 24px);display:flex;align-items:center;gap:var(--s-3);margin-inline:auto;padding:var(--s-2) var(--s-2) var(--s-2) var(--s-4);border:1px solid var(--line-strong);border-radius:var(--r-pill);background:var(--surface-3);font-size:var(--fs-sm);box-shadow:var(--shadow-overlay);animation:banner-in var(--t-slow) var(--ease-out)}@keyframes banner-in{0%{opacity:0;transform:translateY(-8px)}}.room.is-expanded{grid-template:"titlebar" auto "toolbar" auto "stage" minmax(0,1fr) "cameras" auto / minmax(0,1fr)}.room.is-expanded .panel{display:none}.room.is-expanded .stage-view{flex:1;aspect-ratio:auto;max-height:none;min-height:0}.immersive-return{display:none}.room.is-board-immersive{grid-template:"stage" minmax(0,1fr) / minmax(0,1fr);gap:0;padding:0;overflow:hidden;background:var(--stage)}.room.is-board-immersive .room-titlebar,.room.is-board-immersive .room-toolbar,.room.is-board-immersive .stage-bar,.room.is-board-immersive .cameras,.room.is-board-immersive .panel{display:none}.room.is-board-immersive .stage{width:100vw;height:100dvh;border:0;border-radius:0}.room.is-board-immersive .stage-view{flex:1;aspect-ratio:auto;max-height:none;min-height:0}.room.is-board-immersive .immersive-return{position:fixed;z-index:20;width:36px;height:36px;display:grid;place-items:center;padding:0;border:1px solid rgb(255 255 255 / .1);border-radius:var(--r-2);background:#121318e6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--text-2)}.room.is-board-immersive .immersive-return:hover,.room.is-board-immersive .immersive-return:active{background:var(--surface-3);color:var(--text-1)}.room.is-board-immersive .immersive-return svg{width:15px;height:15px}@media(max-width:959px){.room.is-board-immersive .stage-tools{position:absolute;z-index:4;top:calc(var(--safe-top) + 50px);inset-inline:0;padding:0;border:0;background:transparent;pointer-events:none}.room.is-board-immersive .stage-chip{padding:2px;border:1px solid rgb(255 255 255 / .12);border-radius:var(--r-3);background:#121318e0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:auto}.room.is-board-immersive .split-document{padding-top:var(--safe-top)}.room.is-board-immersive .split-document-bar{padding-inline-start:56px}.room.is-board-immersive .immersive-return{top:calc(var(--safe-top) + 12px);right:calc(env(safe-area-inset-right,0px) + 12px)}.room.is-board-immersive .toast{bottom:calc(54px + var(--safe-bottom))}}@media(min-width:960px){.room.is-board-immersive .immersive-return{bottom:3px;right:6px}}@media(orientation:landscape)and (max-height:540px){.room{grid-template:"titlebar toolbar" auto "stage stage" minmax(0,1fr) "cameras cameras" auto / minmax(0,1fr) auto;--toast-offset: 76px}.room.is-expanded{grid-template:"titlebar toolbar" auto "stage stage" minmax(0,1fr) "cameras cameras" auto / minmax(0,1fr) auto}.room-titlebar{min-height:42px;padding-top:0}.room-toolbar{min-height:42px}.stage-bar{min-height:26px}.stage-view{flex:1;aspect-ratio:auto;max-height:none;min-height:0}.panel{display:none}.room.is-panel-open:not(.is-expanded,.is-board-immersive){--panel-now: min(var(--panel-w, clamp(220px, 38vw, 340px)), calc(100vw - 260px) );grid-template:"titlebar titlebar toolbar" auto "panel stage stage" minmax(0,1fr) "panel cameras cameras" auto / var(--panel-now) minmax(0,1fr) auto}.room.is-panel-open:not(.is-expanded,.is-board-immersive) .panel{position:relative;display:flex;border-top:0;border-inline-end:1px solid var(--line)}.room.is-panel-open .panel-camera{flex:0 1 auto;min-height:56px;max-height:84px}.room.is-panel-open .cameras .camera-tile{flex-basis:64px}.panel-close{display:inline-flex}}@media(min-width:960px)and (min-height:541px){.room{grid-template:"titlebar titlebar" auto "panel toolbar" auto "panel stage" minmax(0,1fr) "panel cameras" auto / 340px minmax(0,1fr);gap:8px;padding:0 8px 8px;--toast-offset: 72px}.room.is-expanded,.room.is-panel-empty{grid-template:"titlebar" auto "toolbar" auto "stage" minmax(0,1fr) "cameras" auto / minmax(0,1fr)}.room.is-panel-empty .panel{display:none}.room.has-camera-grid{grid-template:"titlebar titlebar titlebar" auto "panel toolbar toolbar" auto "panel stage cameras" minmax(0,1fr) / 340px minmax(0,1fr) clamp(240px,24vw,440px)}.room.has-camera-grid.is-expanded,.room.has-camera-grid.is-panel-empty{grid-template:"titlebar titlebar" auto "toolbar toolbar" auto "stage cameras" minmax(0,1fr) / minmax(0,1fr) clamp(240px,24vw,440px)}.room.has-camera-grid.is-camera-stage{grid-template-columns:340px minmax(0,1fr) minmax(0,1fr)}.room.has-camera-grid.is-camera-stage:is(.is-expanded,.is-panel-empty){grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.room-titlebar{min-height:40px;margin-inline:-8px;padding-inline:var(--s-4) var(--s-2)}.room-toolbar,.stage,.cameras,.panel.is-boxes .box{border:1px solid var(--line);border-radius:var(--r-3)}.stage{box-shadow:0 0 0 1px #0003}.room-toolbar{min-height:50px;padding-inline:6px}.stage-view{flex:1;aspect-ratio:auto;max-height:none;min-height:0}.panel.is-boxes{gap:6px;border:0;background:transparent}.panel.is-boxes .box{min-height:0;display:flex;flex-direction:column;overflow:hidden;background:var(--surface-1)}.panel.is-boxes .camera-box{flex:0 0 auto}.panel.is-boxes .people-box{flex:2 1 0;min-height:120px}.panel.is-boxes .chat-box{flex:3 1 0;min-height:180px}.panel.is-boxes .panel-camera{min-height:0;max-height:none;margin:0;border:0;border-radius:0}.panel.is-boxes .panel-camera.is-speaking{box-shadow:inset 0 0 0 2px var(--success)}.panel.is-boxes .people{padding:4px}}@media(min-width:1280px)and (min-height:541px){.room{grid-template-columns:360px minmax(0,1fr)}}.room-root{display:contents}.composer .btn svg{transform:scaleX(-1)}.board-host.is-viewer .App-top-bar,.board-host.is-viewer .App-bottom-bar,.board-host.is-viewer .App-menu,.board-host.is-viewer .mobile-misc-tools-container,.board-host.is-viewer .welcome-screen-center{display:none}.session-tools{display:grid;gap:var(--s-5)}.status-tiles{display:grid;gap:var(--s-2)}.status-tile{min-width:0;display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-3);background:var(--surface-2);transition:border-color var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.status-tile-icon{width:40px;height:40px;display:grid;place-items:center;flex:0 0 auto;border-radius:var(--r-2);background:var(--surface-3);color:var(--text-2)}.status-tile-icon svg{width:var(--icon-md);height:var(--icon-md)}.status-tile-text{min-width:0;flex:1;display:grid;gap:2px;line-height:1.5}.status-tile-text strong{color:var(--text-1);font-size:var(--fs-sm);font-weight:600}.status-tile-text span{color:var(--text-3);font-size:var(--fs-xs)}.status-tile .btn{flex:0 0 auto}.record-glyph{width:14px;height:14px;border:2px solid currentColor;border-radius:50%}.status-tile.is-recording{border-color:#f17b8459;background:var(--danger-soft)}.status-tile.is-recording .status-tile-icon{background:#f17b8429;color:var(--danger)}.status-tile.is-recording .record-glyph{border:0;background:var(--danger);animation:recording-pulse 1.3s ease-in-out infinite}.status-pill{height:24px;display:inline-flex;align-items:center;flex:0 0 auto;gap:6px;padding:0 var(--s-2);border:1px solid var(--line-strong);border-radius:12px;color:var(--text-3);font-size:var(--fs-xs);font-weight:600;white-space:nowrap}.status-pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.status-tile.is-ready .status-tile-icon{background:#52c78f21;color:var(--success)}.status-tile.is-ready .status-pill{border-color:#52c78f59;color:var(--success)}@media(min-width:600px){.status-tiles{grid-template-columns:1fr 1fr}.status-tiles>:only-child{grid-column:1 / -1}}.tools-section{display:grid;gap:var(--s-3)}.tools-section-head{min-height:36px;display:flex;align-items:center;gap:var(--s-2)}.tools-section-head h3{font-size:var(--fs-md);font-weight:700}.tools-section-action{margin-inline-start:auto}.tools-more{min-width:0;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-4)}.tools-more-toggle{min-height:48px;display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);border:1px solid var(--line);border-radius:var(--r-3);background:var(--surface-2);color:var(--text-1);font:inherit;font-weight:700;text-align:start;transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.tools-more-toggle svg{width:16px;height:16px;flex:0 0 auto;color:var(--text-2)}.tools-more-toggle>span{flex:0 0 auto;white-space:nowrap}.tools-more-toggle small{flex:1 1 0;min-width:0;overflow:hidden;color:var(--text-3);font-size:var(--fs-xs);font-weight:500;text-align:end;text-overflow:ellipsis;white-space:nowrap}.tools-more-toggle:hover{border-color:var(--line-strong);background:var(--surface-3)}.tools-more-toggle[aria-expanded=true]{border-color:var(--accent)}.permission-manager{padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-3);background:var(--surface-1)}.permission-manager-head{align-items:flex-start}.permission-manager-head>div{min-width:0;flex:1;display:grid;gap:3px}.permission-manager-head p{margin:0;color:var(--text-3);font-size:var(--fs-xs);line-height:1.6}.permission-defaults,.permission-student-grid{display:grid;gap:var(--s-2)}.permission-switch{position:relative;min-width:0;min-height:68px;display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface-2);cursor:pointer;transition:border-color var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.permission-switch.is-enabled{border-color:#52c78f4d;background:#52c78f0f}.permission-switch:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:2px}.permission-switch:has(input:disabled){cursor:wait;opacity:.72}.permission-switch-icon{width:36px;height:36px;display:grid;place-items:center;flex:0 0 auto;border-radius:var(--r-2);background:var(--surface-3);color:var(--text-3)}.permission-switch.is-enabled .permission-switch-icon{color:var(--success)}.permission-switch-icon svg{width:18px;height:18px}.permission-switch-text{min-width:0;flex:1;display:grid;gap:2px}.permission-switch-text strong{color:var(--text-1);font-size:var(--fs-sm)}.permission-switch-text small{color:var(--text-3);font-size:var(--fs-xs);line-height:1.55}.permission-switch>.switch{min-height:30px;flex:0 0 auto}.permission-switch-spinner{position:absolute;inset-inline-end:8px;bottom:5px;width:12px;height:12px}.permission-help{margin:0;color:var(--text-3);font-size:var(--fs-xs);line-height:1.7}.permission-loading{min-height:84px;display:flex;align-items:center;justify-content:center;gap:var(--s-2);color:var(--text-3);font-size:var(--fs-sm)}.permission-search{position:relative;display:flex;align-items:center}.permission-search svg{position:absolute;inset-inline-start:var(--s-3);width:16px;height:16px;color:var(--text-3);pointer-events:none}.permission-search .input{min-height:40px;padding-inline-start:36px}.permission-students{display:grid;gap:var(--s-2)}.permission-students-title{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2)}.permission-students-title strong{color:var(--text-1);font-size:var(--fs-sm)}.permission-students-title span{color:var(--text-3);font-size:var(--fs-xs)}.permission-empty{margin:0;padding:var(--s-4);color:var(--text-3);font-size:var(--fs-sm);text-align:center}.permission-student{overflow:hidden;border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface-2)}.permission-student summary{min-height:50px;display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);cursor:pointer;list-style:none}.permission-student summary::-webkit-details-marker{display:none}.permission-student summary:after{content:"⌄";margin-inline-start:var(--s-1);color:var(--text-3);transition:transform var(--t-fast) var(--ease)}.permission-student[open] summary:after{transform:rotate(180deg)}.permission-student summary .avatar{width:30px;height:30px}.permission-student summary strong{min-width:0;flex:1;overflow:hidden;color:var(--text-1);font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap}.permission-summary{color:var(--text-3);font-size:var(--fs-xs);white-space:nowrap}.permission-student-grid{padding:var(--s-2);border-top:1px solid var(--line);background:var(--surface-1)}.permission-switch.is-compact{min-height:48px;padding:6px var(--s-2)}.permission-switch.is-compact .permission-switch-icon{width:30px;height:30px}.participant-permissions{display:grid;gap:var(--s-3);margin-bottom:var(--s-4)}.participant-permissions>div:first-child{display:grid;gap:3px}.participant-permissions>div:first-child strong{color:var(--text-1);font-size:var(--fs-sm)}.participant-permissions>div:first-child span{color:var(--text-3);font-size:var(--fs-xs)}.participant-permission-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-2)}.participant-permission{position:relative;min-width:0;min-height:76px;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:4px var(--s-2);padding:var(--s-2);border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface-2);cursor:pointer}.participant-permission.is-enabled{border-color:#52c78f4d}.participant-permission>span:first-child{color:var(--text-3)}.participant-permission.is-enabled>span:first-child{color:var(--success)}.participant-permission>span:first-child svg{width:17px;height:17px}.participant-permission>strong{overflow:hidden;color:var(--text-2);font-size:var(--fs-xs);text-overflow:ellipsis;white-space:nowrap}.participant-permission>.switch{grid-column:1 / -1;justify-self:end;min-height:24px}.participant-permission>.spinner{position:absolute;inset-inline-start:8px;bottom:8px;width:12px;height:12px}.participant-permission:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:2px}@media(min-width:680px){.permission-defaults,.permission-student-grid{grid-template-columns:1fr 1fr}}.tools-empty{display:grid;justify-items:center;gap:6px;padding:var(--s-8) var(--s-4);border:1px dashed var(--line-strong);border-radius:var(--r-3);color:var(--text-3);font-size:var(--fs-xs);line-height:1.7;text-align:center}.tools-empty strong{color:var(--text-2);font-size:var(--fs-sm)}.tools-empty-icon{width:38px;height:38px;display:grid;place-items:center;margin-bottom:var(--s-1);border-radius:50%;background:var(--surface-3);color:var(--text-2)}.tools-empty-icon svg{width:18px;height:18px}.poll-composer{display:grid;gap:var(--s-4);padding:var(--s-4);border:1px solid var(--line-strong);border-radius:var(--r-3);background:var(--surface-2)}.poll-composer .input{background:var(--surface-1)}.poll-composer-options{margin:0;padding:0;border:0}.poll-composer-options legend{margin-bottom:6px;padding:0}.poll-composer-option{display:flex;align-items:center;gap:var(--s-2)}.poll-composer-option .input{min-width:0;flex:1}.poll-composer-index{width:20px;flex:0 0 auto;color:var(--text-3);font-size:var(--fs-xs);text-align:center}.poll-composer-add{justify-self:start;color:var(--accent-text)}.poll-composer-settings{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-2) var(--s-4)}.poll-composer-actions{display:flex;justify-content:flex-end;gap:var(--s-2);padding-top:var(--s-4);border-top:1px solid var(--line)}.switch{position:relative;min-height:var(--control-h);display:inline-flex;align-items:center;gap:var(--s-2);color:var(--text-2);font-size:var(--fs-sm);font-weight:600;cursor:pointer}.switch input{position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;opacity:0;cursor:inherit}.switch input:disabled{cursor:not-allowed}.switch-track{position:relative;width:38px;height:22px;flex:0 0 auto;border:1px solid var(--line-strong);border-radius:11px;background:var(--surface-3);transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.switch-track:after{content:"";position:absolute;top:3px;inset-inline-start:3px;width:14px;height:14px;border-radius:50%;background:var(--text-2);transition:transform var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.switch input:checked+.switch-track{border-color:var(--accent);background:var(--accent)}.switch input:checked+.switch-track:after{background:var(--accent-ink);transform:translate(-16px)}.switch input:focus-visible+.switch-track{outline:2px solid var(--focus);outline-offset:2px}.poll-list{display:grid;gap:var(--s-3)}.poll-card{display:grid;gap:var(--s-3);padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-3);background:var(--surface-2)}.poll-card-head{display:grid;gap:6px}.poll-card-head strong{color:var(--text-1);font-size:var(--fs-md);line-height:1.6;overflow-wrap:anywhere}.poll-card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px var(--s-2);color:var(--text-3);font-size:var(--fs-xs)}.poll-card-meta>span:not(.tag)+span:before{content:"·";margin-inline-end:var(--s-2)}.poll-options{display:grid;gap:6px}.poll-option{position:relative;isolation:isolate;min-height:var(--control-h);display:flex;align-items:center;gap:var(--s-3);overflow:hidden;padding:0 var(--s-3);border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface-1);font-size:var(--fs-sm);cursor:pointer;transition:border-color var(--t-fast) var(--ease)}.poll-option:before{content:"";position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;background:var(--accent-soft);transform:scaleX(var(--share, 0));transform-origin:100% 50%;transition:transform var(--t-base) var(--ease)}.poll-option:hover{border-color:var(--line-strong)}.poll-option.is-selected{border-color:color-mix(in srgb,var(--accent) 50%,transparent)}.poll-option input{width:18px;height:18px;flex:0 0 auto;margin:0;accent-color:var(--accent)}.poll-option-label{min-width:0;flex:1;padding-block:10px;color:var(--text-1);line-height:1.6;overflow-wrap:anywhere}.poll-option small{color:var(--text-2);font-size:var(--fs-xs);font-weight:600}.poll-card.is-closed .poll-option{cursor:default}.poll-card.is-closed .poll-option:hover{border-color:var(--line)}.poll-card-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--s-2)}.poll-voted{display:inline-flex;align-items:center;gap:6px;margin-inline-end:auto;color:var(--success);font-size:var(--fs-xs);font-weight:600}.poll-voted svg{width:14px;height:14px}.end-session{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-3);padding-top:var(--s-4);border-top:1px solid var(--line)}.end-session-text{min-width:0;flex:1 1 220px;display:grid;gap:2px;line-height:1.5}.end-session-text strong{color:var(--text-1);font-size:var(--fs-sm);font-weight:600}.end-session-text span{color:var(--text-3);font-size:var(--fs-xs)}.end-session-actions{display:flex;gap:var(--s-2)}.end-session-trigger{border-color:#f17b8466;color:var(--danger)}.end-session-trigger:not(:disabled):hover{background:var(--danger-soft);color:var(--danger)}.room>.error-fallback.is-titlebar{grid-area:titlebar;border-bottom:1px solid var(--line);background:var(--surface-1)}.room>.error-fallback.is-toolbar{grid-area:toolbar;border-bottom:1px solid var(--line)}.room>.error-fallback.is-stage{grid-area:stage;aspect-ratio:16 / 9;background:var(--surface-1)}.room>.error-fallback.is-cameras{grid-area:cameras;border-top:1px solid var(--line)}.room>.error-fallback.is-panel{grid-area:panel;border-top:1px solid var(--line);background:var(--surface-1)}.stage-view>.error-fallback{position:absolute;top:0;right:0;bottom:0;left:0}.room.is-board-immersive>.error-fallback:not(.is-stage){display:none}.room-rescue{min-height:100dvh;display:grid;place-content:center;justify-items:center;gap:var(--s-3);padding:var(--s-6) var(--s-4);background:var(--bg);color:var(--text-2);font-size:var(--fs-sm);text-align:center}.room-rescue h1{margin:0;color:var(--text-1);font-size:var(--fs-lg)}.room-rescue-live{display:inline-flex;align-items:center;gap:var(--s-2);color:var(--success-text);font-weight:600}.room-rescue-live svg{width:18px;height:18px}.room-rescue-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-2)}@keyframes recording-pulse{50%{opacity:.35}}@keyframes recording-ring{0%{opacity:.7;transform:scale(1)}70%,to{opacity:0;transform:scale(2.6)}}@media(prefers-reduced-motion:reduce){.recording-dot,.recording-dot:after,.control.is-recording .record-glyph,.status-tile.is-recording .record-glyph{animation:none}}.HelpDialog__header,.sidebar-triggers,.default-sidebar-trigger,.default-sidebar,[data-testid=toolbar-embeddable],.App-toolbar__extra-tools-dropdown [style*=font-weight]{display:none!important}.cameras{grid-area:cameras;min-width:0;min-height:0;display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);border-top:1px solid var(--line);background:var(--bg)}.cameras.is-hidden{padding-block:2px}.cameras-head{display:flex;flex-direction:column;align-items:center;flex:0 0 auto;gap:2px}.cameras-count{display:none;align-items:center;gap:6px;color:var(--text-2);font-size:var(--fs-xs);font-weight:600;white-space:nowrap}.cameras-count .live-dot{background:var(--success)}.cameras-action{width:32px;height:32px;display:grid;place-items:center;padding:0;border:0;border-radius:var(--r-1);background:transparent;color:var(--text-3);transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.cameras-action:hover{background:var(--surface-3);color:var(--text-1)}.cameras-action[aria-pressed=true]{color:var(--accent-text)}.cameras-action svg{width:15px;height:15px}.camera-row{min-width:0;flex:1;display:flex;gap:var(--s-2);margin:0;padding:2px;overflow-x:auto;overscroll-behavior:contain;scroll-snap-type:x proximity;list-style:none}.camera-tile{position:relative;flex:1 0 104px;max-width:200px;aspect-ratio:4 / 3;overflow:hidden;border-radius:var(--r-2);background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line-strong);scroll-snap-align:start;animation:tile-in var(--t-slow) var(--ease-out) backwards;animation-delay:calc(var(--i, 0) * 30ms)}@keyframes tile-in{0%{opacity:0;transform:scale(.94)}}.camera-tile:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;box-shadow:inset 0 0 0 2px var(--success);opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease)}.camera-tile.is-speaking:after{opacity:1}.camera-tile video{width:100%;height:100%;display:block;object-fit:cover}.camera-name{position:absolute;z-index:1;inset-inline-start:6px;bottom:6px;max-width:calc(100% - 12px);display:flex;align-items:center;gap:4px;overflow:hidden;padding:2px 8px;border-radius:var(--r-pill);background:#060709b8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--text-1);font-size:11px;white-space:nowrap}.camera-name svg{width:12px;height:12px;flex:0 0 auto;color:var(--text-3)}.camera-name svg.is-speaking{color:var(--success)}.camera-name span{overflow:hidden;text-overflow:ellipsis}.video-paused{position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:6px;pointer-events:none}.video-paused>span{max-width:100%;padding:3px 10px;border:1px solid var(--warning-line);border-radius:var(--r-pill);background:#060709c7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--warning-text);font-size:11px;font-weight:700;text-align:center}.camera-expand{position:absolute;z-index:1;top:6px;inset-inline-end:6px;width:30px;height:30px;display:grid;place-items:center;padding:0;border:0;border-radius:50%;background:#060709b8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--text-1);transition:opacity var(--t-fast) var(--ease)}.camera-expand svg{width:14px;height:14px}@media(hover:hover)and (pointer:fine){.camera-tile:not(:hover,:focus-within,:fullscreen,.is-fullscreen-fallback) .camera-expand{opacity:0}}@media(hover:none),(pointer:coarse){.cameras.is-strip .camera-expand{display:none}}.camera-tile:fullscreen{width:100%;height:100%;max-width:none;border-radius:0;background:var(--stage)}.camera-tile:fullscreen video,.camera-tile.is-fullscreen-fallback video{object-fit:contain}.camera-tile.is-fullscreen-fallback{position:fixed;z-index:70;top:0;right:0;bottom:0;left:0;width:100vw;max-width:none;height:100dvh;aspect-ratio:auto;border-radius:0;background:var(--stage)}.camera-tile:is(:fullscreen,.is-fullscreen-fallback) .camera-name{bottom:calc(var(--s-5) + var(--safe-bottom));inset-inline-start:var(--s-5);padding:4px 12px;font-size:var(--fs-sm)}.camera-tile:is(:fullscreen,.is-fullscreen-fallback) .camera-expand{top:calc(var(--s-4) + var(--safe-top));inset-inline-end:var(--s-4);width:40px;height:40px}.cameras.is-grid{flex-direction:column;align-items:stretch;gap:6px;padding:var(--s-2)}.cameras.is-grid .cameras-head{flex-direction:row;justify-content:flex-end;gap:2px}.cameras.is-grid .cameras-count{display:inline-flex;margin-inline-end:auto;padding-inline-start:4px}.cameras.is-grid .camera-row{flex:1;min-height:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));align-content:start;gap:6px;overflow:hidden auto;scroll-snap-type:none}.cameras.is-grid .camera-tile{max-width:none}.cameras.is-grid .camera-row.is-fitted{grid-template-columns:repeat(var(--cols),var(--tile-w));justify-content:center;align-content:center}.cameras.is-grid .camera-row.is-fitted.is-scrolling{align-content:start}@media(max-width:959px){.room.has-camera-grid{grid-template:"titlebar" auto "toolbar" auto "stage" auto "cameras" minmax(0,1fr) "panel" auto / minmax(0,1fr)}.room.has-camera-grid.is-panel-collapsed .stage-view{flex:0 0 auto;aspect-ratio:16 / 10;max-height:42dvh}.room.has-camera-grid:not(.is-panel-collapsed){grid-template-rows:auto auto auto minmax(0,2fr) minmax(0,3fr)}}@media(min-width:960px){.cameras{padding:6px}.cameras.is-strip .camera-tile{flex-basis:148px;max-width:240px}.room.has-camera-grid .cameras{border-top:1px solid var(--line)}}@media(orientation:landscape)and (max-height:540px){.camera-tile{flex-basis:76px;max-width:120px}.room.has-camera-grid{grid-template:"titlebar toolbar" auto "stage stage" minmax(0,1fr) "cameras cameras" auto / minmax(0,1fr) auto}.room.has-camera-grid:not(.is-panel-collapsed){grid-template-rows:auto minmax(0,1fr) auto}.room.has-camera-grid .cameras.is-grid{max-height:40dvh}}.prejoin{min-height:100dvh;display:grid;place-items:start center;padding:calc(var(--s-6) + var(--safe-top)) var(--s-4) calc(var(--s-6) + var(--safe-bottom))}.prejoin-panel{width:min(100%,560px);display:grid;gap:var(--s-4)}.prejoin-head{display:flex;align-items:center;gap:var(--s-3)}.prejoin-head .brand-mark{width:40px;height:40px;flex:0 0 auto}.prejoin-head h1{font-size:var(--fs-xl)}.prejoin-head p{color:var(--text-2);font-size:var(--fs-sm)}.prejoin-checks{display:grid;gap:var(--s-2)}.prejoin-check{display:grid;gap:var(--s-3);padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface-1)}.prejoin-check.is-primary{border-color:var(--line-strong)}.prejoin-check-head{display:flex;align-items:center;gap:var(--s-3)}.prejoin-check-icon{width:36px;height:36px;display:grid;place-items:center;flex:0 0 auto;border-radius:var(--r-1);background:var(--surface-3);color:var(--text-2)}.prejoin-check-icon svg{width:18px;height:18px}.prejoin-check-text{min-width:0;display:grid;gap:2px;line-height:1.5}.prejoin-check-text strong{color:var(--text-1);font-size:var(--fs-sm)}.prejoin-check-status{display:inline-flex;align-items:center;gap:5px;color:var(--text-3);font-size:var(--fs-xs)}.prejoin-check-status svg{width:13px;height:13px;flex:0 0 auto}.prejoin-check.is-good .prejoin-check-status{color:var(--success-text)}.prejoin-check.is-good .prejoin-check-icon{background:var(--success-soft);color:var(--success)}.prejoin-check.is-warning .prejoin-check-status{color:var(--warning-text)}.prejoin-check.is-danger .prejoin-check-status{color:var(--danger-text)}.prejoin-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}.prejoin-question{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px;color:var(--text-2);font-size:var(--fs-sm)}.prejoin-note{margin:0;color:var(--text-3);font-size:var(--fs-xs);line-height:1.7}.prejoin-tips{margin:0;padding-inline-start:var(--s-5);color:var(--text-2);font-size:var(--fs-xs);line-height:1.8}.prejoin-device .select{min-height:40px}.prejoin-video{width:100%;max-height:220px;border-radius:var(--r-1);background:var(--stage);object-fit:cover;transform:scaleX(-1)}.level-meter{position:relative;min-width:120px;height:8px;flex:1 1 140px;overflow:hidden;border-radius:4px;background:var(--surface-3)}.level-meter span{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--success);transform-origin:100% 50%;transition:transform 80ms linear}.prejoin-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-3)}.prejoin-enter{min-height:48px;flex:1 1 200px;font-size:var(--fs-md)}.prejoin-skip{min-height:44px;display:inline-flex;align-items:center;gap:var(--s-2);color:var(--text-2);font-size:var(--fs-sm);cursor:pointer}.prejoin-skip input{width:18px;height:18px;margin:0;accent-color:var(--accent)}.dialog-footer .prejoin-skip{margin-inline-end:auto}@media(max-width:599px){.prejoin{padding:calc(var(--s-3) + var(--safe-top)) var(--s-3) calc(var(--s-3) + var(--safe-bottom))}.prejoin-panel{gap:var(--s-3)}.prejoin-head{gap:var(--s-2)}.prejoin-head .brand-mark{width:30px;height:30px}.prejoin-head h1{font-size:var(--fs-lg)}.prejoin-head p{font-size:var(--fs-xs);line-height:1.5}.prejoin-checks{gap:6px}.prejoin-check{gap:var(--s-2);padding:var(--s-2) var(--s-3)}.prejoin-check-head{gap:var(--s-2)}.prejoin-check-icon{width:28px;height:28px}.prejoin-check-icon svg{width:15px;height:15px}.prejoin-check-text{gap:0}.prejoin-actions{gap:6px}.prejoin-actions .btn-sm{min-height:34px;padding:0 10px;font-size:var(--fs-xs)}.prejoin-device .select{min-height:36px;font-size:var(--fs-xs)}.prejoin-video{max-height:130px}.prejoin-note{line-height:1.6}.prejoin-tips{line-height:1.7}.prejoin-footer{gap:var(--s-2)}.prejoin-enter{min-height:44px;font-size:var(--fs-sm)}.prejoin-skip{min-height:40px;font-size:var(--fs-xs)}}.reaction-overlay{--rise: calc(100dvh - var(--safe-top) - var(--safe-bottom) - 200px);position:fixed;z-index:45;top:calc(var(--safe-top) + 72px);bottom:calc(var(--safe-bottom) + var(--s-3));inset-inline-end:var(--s-3);width:min(calc(100% - 24px),190px);pointer-events:none}@media(max-width:959px){.reaction-overlay{--rise: calc(100dvh - var(--safe-top) - var(--safe-bottom) - 260px);bottom:calc(var(--safe-bottom) + 64px)}}.reaction-stream{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;padding:0;list-style:none}.reaction-float{position:absolute;bottom:36px;inset-inline-end:calc(var(--x, 0) * (100% - 112px));width:112px;display:flex;justify-content:center;animation:reaction-rise var(--rise-ms, 3.5s) cubic-bezier(.25,.3,.4,1) both,reaction-out .45s ease-in var(--play-ms, 3s) both;will-change:transform,opacity}.reaction-float-drift{display:flex;flex-direction:column;align-items:center;gap:2px;animation:reaction-drift var(--sway-ms, 1.4s) ease-in-out var(--sway-delay, 0ms) infinite alternate}.reaction-float-pop{position:relative;display:grid;place-items:center;transform:scale(var(--scale, 1));animation:reaction-pop .62s cubic-bezier(.34,1.56,.64,1) both}.reaction-float-pop:after{content:"";position:absolute;top:8%;right:8%;bottom:8%;left:8%;border:2px solid rgb(255 255 255 / .45);border-radius:50%;animation:reaction-ring .7s ease-out both}.reaction-float.is-companion .reaction-float-pop:after{display:none}.reaction-float-emoji{font-size:56px;filter:drop-shadow(0 3px 6px rgb(0 0 0 / .3))}.animated-emoji{display:inline-grid;width:1em;height:1em;line-height:1}.animated-emoji>img{grid-area:1 / 1;width:100%;height:100%;object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.animated-emoji-sticker{opacity:0}.animated-emoji.is-ready .animated-emoji-sticker{opacity:1}.animated-emoji.is-ready .animated-emoji-still{visibility:hidden}.reaction-float-name{max-width:112px;height:20px;display:inline-flex;align-items:center;padding:0 var(--s-2);overflow:hidden;border:1px solid var(--line-strong);border-radius:11px;background:var(--surface-3);color:var(--text-1);font-size:var(--fs-xs);font-weight:500;text-overflow:ellipsis;white-space:nowrap;animation:reaction-name var(--play-ms, 3s) ease both}.reaction-tally{position:absolute;inset-inline-end:0;bottom:0;display:flex;gap:4px;margin:0}.reaction-tally span{height:24px;display:inline-flex;align-items:center;gap:4px;padding:0 var(--s-2);border:1px solid var(--line-strong);border-radius:12px;background:var(--surface-3);font-size:13px;line-height:1}.reaction-tally b{color:var(--text-2);font-size:var(--fs-xs);font-weight:600}@keyframes reaction-rise{0%{transform:translateY(0)}to{transform:translateY(calc(var(--rise) * -.7))}}@keyframes reaction-out{to{opacity:0}}@keyframes reaction-drift{0%{transform:translate(calc(var(--drift, 16px) * -1)) rotate(calc(var(--tilt, 6deg) * -1))}to{transform:translate(var(--drift, 16px)) rotate(var(--tilt, 6deg))}}@keyframes reaction-pop{0%{transform:scale(0) rotate(-12deg)}55%{transform:scale(calc(var(--scale, 1) * 1.28)) rotate(6deg)}78%{transform:scale(calc(var(--scale, 1) * .94)) rotate(-2deg)}to{transform:scale(var(--scale, 1)) rotate(0)}}@keyframes reaction-ring{0%{opacity:.8;transform:scale(.3)}to{opacity:0;transform:scale(1.8)}}@keyframes reaction-name{0%,4%{opacity:0;transform:translateY(-4px) scale(.9)}12%,88%{opacity:1;transform:none}to{opacity:0;transform:none}}@keyframes reaction-fade{0%,80%{opacity:1}to{opacity:0}}.confusion{position:relative;flex:0 0 auto}.confusion-badge{height:22px;display:inline-flex;align-items:center;gap:4px;padding:0 8px;border:1px solid var(--line-strong);border-radius:11px;background:var(--surface-2);color:var(--text-2);font-size:var(--fs-xs);font-weight:600}.confusion-badge svg{width:13px;height:13px}.confusion-badge.is-warning{border-color:#e6b95f73;background:var(--warning-soft);color:var(--warning-text)}.confusion-popover,.recording-popover{position:absolute;z-index:58;top:calc(100% + 8px);inset-inline-end:0;width:min(260px,calc(100vw - 16px));display:grid;gap:var(--s-2);padding:var(--s-3);border:1px solid var(--line-strong);border-radius:var(--r-2);background:var(--surface-3);box-shadow:var(--shadow-overlay);font-size:var(--fs-xs);line-height:1.6}.confusion-popover strong,.recording-popover strong{color:var(--text-1);font-size:var(--fs-sm)}.confusion-popover span,.recording-popover span{color:var(--text-3)}.confusion-popover .btn{justify-self:start}.recording-popover{width:min(300px,calc(100vw - 16px))}.recording-popover .popover-actions{display:flex;flex-wrap:wrap;gap:var(--s-2)}.recording-popover-head{display:flex;align-items:center;gap:var(--s-2)}.recording-popover-head strong{flex:1;min-width:0}.recording-popover .recording-popover-time{color:var(--text-1);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;font-weight:600}.recording-kept{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.recording-kept li{padding:2px 8px;border:1px solid var(--line-strong);border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-xs)}.recording-popover .btn svg{width:14px;height:14px}.catch-up{position:fixed;z-index:56;top:calc(var(--safe-top) + 84px);inset-inline:var(--s-3);width:fit-content;max-width:min(calc(100% - 24px),520px);display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3);margin-inline:auto;padding:var(--s-2) var(--s-2) var(--s-2) var(--s-3);border:1px solid var(--line-strong);border-radius:var(--r-2);background:var(--surface-3);box-shadow:var(--shadow-overlay)}.catch-up-text{min-width:0;flex:1 1 220px;display:grid;gap:2px;line-height:1.6}.catch-up-text strong{color:var(--accent-text);font-size:var(--fs-xs)}.catch-up-text p{margin:0;color:var(--text-1);font-size:var(--fs-sm)}.catch-up-actions{display:flex;align-items:center;gap:4px;margin-inline-start:auto}@media(max-width:639px){.catch-up{top:calc(var(--safe-top) + 76px);inset-inline:6px;max-width:calc(100% - 12px)}}@media(orientation:landscape)and (max-height:540px){.catch-up{top:calc(var(--safe-top) + 48px)}}.room.is-board-immersive .immersive-return{overflow:visible}.immersive-dot{position:absolute;top:-3px;inset-inline-end:-3px;width:9px;height:9px;border:2px solid var(--surface-3);border-radius:50%;background:var(--accent)}.chat-boundary{display:flex;align-items:center;gap:var(--s-2);color:var(--text-3);font-size:11px}.chat-boundary:before,.chat-boundary:after{content:"";height:1px;flex:1;background:var(--line-strong)}.usage-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0;color:var(--text-2);font-size:var(--fs-xs)}.usage-line strong{color:var(--text-1);font-weight:600}@container toolbar (max-width: 380px){.control{width:28px}.toolbar-group{gap:0}.room-toolbar .session-timer{display:none}}@media(prefers-reduced-motion:reduce){.reaction-stream{display:flex;flex-direction:column-reverse;align-items:flex-end;gap:6px;padding-bottom:36px}.reaction-float{position:static;animation:reaction-fade var(--rise-ms, 3.5s) linear both}.reaction-float.is-companion{display:none}.reaction-float-drift,.reaction-float-pop,.reaction-float-pop:after,.reaction-float-name{animation:none}.reaction-float-pop:after{display:none}.emoji-picker,.chat-mode-menu,.emoji-option.is-sent{animation:none}.level-meter span{transition:none}}.panel-camera-hide{margin-inline-start:auto}.person-open{min-width:0;flex:1;display:flex;align-items:center;gap:var(--s-2);align-self:stretch;padding:0;border:0;border-radius:var(--r-2);background:none;color:inherit;font:inherit;text-align:start;cursor:pointer}.person-open:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.person.is-openable:hover .person-name-row strong{color:var(--accent-text)}@media(hover:hover)and (pointer:fine){.person.is-openable .person-menu{opacity:0;transition:opacity var(--t-fast) var(--ease)}.person.is-openable:hover .person-menu,.person.is-openable:focus-within .person-menu,.person.is-openable .person-menu:focus-visible{opacity:1}}.message-sender{padding:0;border:0;background:none;color:var(--text-2);font:inherit;font-weight:600;cursor:pointer}.message-sender:hover{color:var(--accent-text);text-decoration:underline;text-underline-offset:3px}.message-sender:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.message.is-own .message-sender{color:var(--accent-text)}.message.is-teacher .message-sender{color:var(--warning)}.signal{display:inline-flex;align-items:center;gap:5px;color:var(--text-3);font-size:var(--fs-xs);font-weight:600;white-space:nowrap}.signal svg{flex:0 0 auto}.signal rect{fill:var(--line-strong)}.signal rect.is-on{fill:currentColor}.signal.is-excellent,.signal.is-good{color:var(--success)}.signal.is-poor{color:var(--warning)}.signal.is-lost{color:var(--danger)}.participant-role{margin:0 0 var(--s-3);color:var(--text-3);font-size:var(--fs-xs)}.participant-tabs{margin-bottom:var(--s-4)}.participant-tabs .tab{gap:6px}.link-insight{display:grid;gap:var(--s-3)}.link-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.link-head .signal{font-size:var(--fs-sm)}.link-head-note{display:inline-flex;align-items:center;gap:6px;color:var(--text-3);font-size:var(--fs-xs)}.link-wait{display:flex;align-items:center;gap:var(--s-2);margin:0;color:var(--text-2);font-size:var(--fs-sm)}.link-wait .spinner{width:14px;height:14px}.link-heading{margin:var(--s-1) 0 0;color:var(--text-1);font-size:var(--fs-sm);font-weight:700}.link-summary{display:flex;align-items:flex-start;gap:var(--s-3);padding:var(--s-3);border:1px solid var(--line-strong);border-radius:var(--r-2);background:var(--surface-2)}.link-summary>svg{flex:0 0 auto;width:20px;height:20px;margin-top:2px}.link-summary strong{color:var(--text-1);font-size:var(--fs-md)}.link-summary p{margin:3px 0 0;color:var(--text-2);font-size:var(--fs-sm);line-height:1.7}.link-summary.is-unknown>svg{color:var(--text-3)}.link-summary.is-good{border-color:var(--success-line);background:var(--success-soft)}.link-summary.is-good>svg{color:var(--success)}.link-summary.is-weak{border-color:var(--warning-line);background:var(--warning-soft)}.link-summary.is-weak>svg{color:var(--warning)}.link-summary.is-bad{border-color:var(--danger-line);background:var(--danger-soft)}.link-summary.is-bad>svg{color:var(--danger)}.link-findings,.link-notes{display:grid;gap:var(--s-2);margin:0;padding:0;list-style:none}.link-finding{display:flex;align-items:flex-start;gap:var(--s-3);padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface-2)}.link-finding>svg{flex:0 0 auto;width:18px;height:18px;margin-top:2px;color:var(--text-3)}.link-finding>div{min-width:0;display:grid;gap:2px}.link-finding strong{color:var(--text-1);font-size:var(--fs-sm);line-height:1.6}.link-finding p{margin:0;color:var(--text-2);font-size:var(--fs-xs);line-height:1.7}.link-verdict{font-size:var(--fs-xs);font-weight:700}.link-finding.is-confirmed>svg,.link-finding.is-confirmed .link-verdict{color:var(--danger)}.link-finding.is-possible>svg,.link-finding.is-possible .link-verdict{color:var(--warning)}.link-finding.is-clear>svg,.link-finding.is-clear .link-verdict{color:var(--success)}.link-finding.is-unknown .link-verdict{color:var(--text-3)}.link-finding.is-confirmed{border-color:var(--danger-line)}.link-finding.is-possible{border-color:var(--warning-line)}.link-notes li{padding-inline-start:var(--s-3);border-inline-start:2px solid var(--line-strong);color:var(--text-2);font-size:var(--fs-xs);line-height:1.7}.link-history{margin:0;color:var(--text-2);font-size:var(--fs-xs);line-height:1.7}.link-metrics{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-2);margin:0}.link-metric{min-width:0;padding:var(--s-2) var(--s-3);border:1px solid var(--line);border-radius:var(--r-2)}.link-metric dt{color:var(--text-3);font-size:var(--fs-2xs)}.link-metric dd{margin:2px 0 0;color:var(--text-1);font-size:var(--fs-sm);font-weight:600;overflow-wrap:anywhere}.class-timer{position:relative;flex:0 1 auto;min-width:0}.class-timer-pill{height:24px;max-width:100%;display:inline-flex;align-items:center;gap:6px;padding:0 10px;border:1px solid var(--line-strong);border-radius:12px;background:var(--surface-2);color:var(--text-1);font:inherit;font-size:var(--fs-xs);font-weight:600;white-space:nowrap}button.class-timer-pill{cursor:pointer}button.class-timer-pill:hover{border-color:var(--text-3)}button.class-timer-pill:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.class-timer-pill svg{width:13px;height:13px;flex:none;color:var(--text-3)}.class-timer-time{font-variant-numeric:tabular-nums;letter-spacing:.02em}.class-timer-label{min-width:0;overflow:hidden;color:var(--text-2);font-weight:500;text-overflow:ellipsis}.class-timer-label:before{content:"·";margin-inline-end:6px;color:var(--text-3)}.class-timer-pill.is-paused .class-timer-time,.class-timer-pill .class-timer-paused{color:var(--text-2)}.class-timer-pill.is-warning,.class-timer-pill.is-finished{border-color:#e6b95f73;background:var(--warning-soft);color:var(--warning-text)}.class-timer-pill.is-warning svg,.class-timer-pill.is-finished svg{color:var(--warning)}.class-timer-popover{position:absolute;z-index:58;top:calc(100% + 8px);inset-inline-end:0;width:min(280px,calc(100vw - 16px));display:grid;gap:var(--s-2);padding:var(--s-3);border:1px solid var(--line-strong);border-radius:var(--r-2);background:var(--surface-3);box-shadow:var(--shadow-overlay);font-size:var(--fs-xs)}.class-timer-popover strong{color:var(--text-1);font-size:var(--fs-sm)}.class-timer-popover .popover-actions{display:flex;flex-wrap:wrap;gap:var(--s-2)}.immersive-timer{position:fixed;z-index:20}.immersive-timer .class-timer-pill{height:36px;border-color:#ffffff1a;border-radius:8px;background:#2b3747e6}.immersive-timer .class-timer-popover{top:calc(100% + 6px)}@media(max-width:959px){.immersive-timer{top:calc(var(--safe-top) + 12px);right:calc(env(safe-area-inset-right,0px) + 56px)}}@media(min-width:960px){.immersive-timer{bottom:3px;right:48px}.immersive-timer .class-timer-popover{top:auto;bottom:calc(100% + 6px)}}@media(max-width:639px){.class-timer-pill{height:22px;gap:4px;padding-inline:8px}.room-titlebar .class-timer-label{display:none}}.timer-running-note{margin:0;font-size:var(--fs-xs);line-height:1.7}.timer-presets{display:flex;flex-wrap:wrap;gap:var(--s-2)}.timer-custom{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}.timer-custom .input{width:96px}.timer-custom .muted{font-size:var(--fs-xs)}.activity-stack{position:fixed;z-index:57;inset-inline:var(--s-3);bottom:calc(var(--s-3) + var(--safe-bottom));width:min(calc(100% - 24px),460px);max-height:calc(100dvh - 120px);display:grid;gap:var(--s-2);margin-inline:auto;overflow-y:auto;overscroll-behavior:contain;pointer-events:none}.activity-stack>*{pointer-events:auto}.activity-card{min-width:0;display:grid;gap:var(--s-3);padding:var(--s-3);border:1px solid var(--line-strong);border-radius:var(--r-3);background:var(--surface-3);box-shadow:var(--shadow-overlay)}.activity-card-head{min-height:28px;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}.activity-card-kind{color:var(--accent-text);font-size:var(--fs-xs);font-weight:700}.activity-card-count{color:var(--text-2);font-size:var(--fs-xs)}.activity-card-close{margin-inline-start:auto}.activity-card-foot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}.activity-card-foot .muted{font-size:var(--fs-xs);line-height:1.6}.activity-card-note{margin:0;font-size:var(--fs-sm);line-height:1.7}@media(max-width:959px){.activity-stack{bottom:calc(64px + var(--safe-bottom));max-height:calc(100dvh - 184px)}}@media(max-width:639px){.activity-stack{inset-inline:6px;width:calc(100% - 12px)}}@media(min-width:960px){.activity-stack{margin-inline:auto 0}}.activity-card-fold{margin-inline-start:auto}.activity-card-fold+.activity-card-close{margin-inline-start:0}.quiz-card.is-folded{justify-self:end;max-width:100%;padding:0;border-radius:var(--r-pill)}.quiz-card-unfold{min-height:44px;max-width:100%;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);padding:4px var(--s-3) 4px var(--s-4);border:0;border-radius:inherit;background:transparent;color:var(--text-1);font:inherit;cursor:pointer}.quiz-card-unfold:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.quiz-card-unfold>svg{width:16px;height:16px;flex:none;color:var(--text-2)}.quiz-card-waiting{color:var(--warning-text);font-size:var(--fs-xs);font-weight:600}.quiz-question{margin:0;color:var(--text-1);font-size:var(--fs-md);font-weight:600;line-height:1.7;overflow-wrap:anywhere}.quiz-countdown{height:24px;display:inline-flex;align-items:center;gap:5px;padding:0 8px;border:1px solid var(--line-strong);border-radius:12px;color:var(--text-1);font-size:var(--fs-xs);font-weight:600;font-variant-numeric:tabular-nums}.quiz-countdown svg{width:13px;height:13px;color:var(--text-3)}.quiz-countdown.is-warning{border-color:#e6b95f73;background:var(--warning-soft);color:var(--warning-text)}.quiz-choices{display:grid;gap:var(--s-2)}.quiz-choices.is-letters{grid-template-columns:repeat(auto-fit,minmax(72px,1fr))}.quiz-choice{min-height:52px;display:flex;align-items:center;justify-content:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);border:1px solid var(--line-strong);border-radius:var(--r-2);background:var(--surface-2);color:var(--text-1);font:inherit;font-size:var(--fs-md);font-weight:600;line-height:1.5;text-align:center;overflow-wrap:anywhere;cursor:pointer;transition:border-color var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.quiz-choice:hover:not(:disabled){border-color:var(--text-3)}.quiz-choice:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.quiz-choice[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.quiz-choice svg{width:16px;height:16px;flex:none;color:var(--accent-text)}.quiz-verdict{display:flex;align-items:center;gap:var(--s-2);margin:0;font-size:var(--fs-md);font-weight:700}.quiz-verdict svg{width:20px;height:20px;flex:none}.quiz-verdict.is-right{color:var(--success-text)}.quiz-verdict.is-wrong{color:var(--danger-text)}.quiz-verdict.is-none{color:var(--text-2);font-weight:600}.quiz-results{display:grid;gap:6px;margin:0;padding:0;list-style:none}.quiz-result{position:relative;isolation:isolate;min-height:40px;display:flex;align-items:center;gap:var(--s-2);overflow:hidden;padding:6px var(--s-3);border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface-1);font-size:var(--fs-sm)}.quiz-result:before{content:"";position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;background:var(--accent-soft);transform:scaleX(var(--share, 0));transform-origin:100% 50%;transition:transform var(--t-base) var(--ease)}.quiz-result.is-correct{border-color:#52c78f80}.quiz-result.is-correct:before{background:var(--success-soft)}.quiz-result-label{min-width:0;flex:1;display:flex;flex-wrap:wrap;align-items:center;gap:6px;color:var(--text-1);line-height:1.6;overflow-wrap:anywhere}.quiz-result-label svg{width:16px;height:16px;flex:none;color:var(--success)}.quiz-result-tag{padding:0 6px;border-radius:6px;background:var(--success-soft);color:var(--success-text);font-size:11px;font-weight:600}.quiz-result-tag.is-own{background:var(--surface-3);color:var(--text-2)}.quiz-result-value{color:var(--text-2);font-size:var(--fs-xs);font-weight:600}.quiz-stage{width:min(100%,720px);display:grid;gap:var(--s-4);margin:auto;padding:var(--s-6) var(--s-4)}.quiz-stage-question{margin:0;color:var(--text-1);font-size:var(--fs-xl);font-weight:700;line-height:1.6;text-align:center;overflow-wrap:anywhere}.quiz-results.is-large .quiz-result{min-height:52px;font-size:var(--fs-md)}.quiz-stage .muted{text-align:center}.quiz-letters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s-2)}.quiz-letter{min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line-strong);border-radius:var(--r-2);background:var(--surface-1);color:var(--text-1);font:inherit;font-size:var(--fs-lg);font-weight:700;cursor:pointer}.quiz-letter[aria-pressed=true]{border-color:#52c78f99;background:var(--success-soft);color:var(--success-text)}.quiz-letter svg{width:16px;height:16px}.quiz-letter:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.quiz-correct-toggle{flex:none;color:var(--text-3)}.quiz-correct-toggle[aria-pressed=true]{background:var(--success-soft);color:var(--success-text)}.quiz-durations{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}.quiz-durations .btn[aria-checked=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--text-1)}.quiz-custom-seconds{width:96px}.poll-composer-note{font-size:var(--fs-xs);line-height:1.6}.poll-correct-tag{display:inline-flex;align-items:center;gap:3px}.poll-correct-tag svg{width:12px;height:12px}@media(prefers-reduced-motion:reduce){.quiz-result:before,.quiz-choice{transition:none}}.report-activities{min-width:9em;color:var(--text-2);font-size:var(--fs-xs);line-height:1.7}.pick-card .activity-card-kind{display:inline-flex;align-items:center;gap:6px}.pick-card .activity-card-kind svg{width:14px;height:14px}.pick-name{margin:0;padding:var(--s-3) 0;color:var(--text-1);font-size:var(--fs-xl);font-weight:700;line-height:1.5;text-align:center;overflow-wrap:anywhere}.pick-name.is-shuffling{color:var(--text-2)}.pick-card.is-me{border-color:var(--accent)}.pick-card.is-me .pick-name{color:var(--accent-text)}.pick-button{margin-inline-start:auto;gap:4px}.pick-button svg{width:14px;height:14px}.people-summary .pick-button{min-height:32px}.attendance-button{margin-inline-start:auto;gap:4px}.attendance-button svg{width:14px;height:14px}.attendance-button+.pick-button{margin-inline-start:0}.people-summary .attendance-button{min-height:32px}.roster{display:grid;gap:var(--s-3)}.roster-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-2)}.roster-summary{margin:0;color:var(--text-2);font-size:var(--fs-sm)}.roster-summary strong{color:var(--success-text);font-size:var(--fs-lg)}.roster .segmented{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-radius:var(--r-3)}.roster .segmented button{justify-content:center;gap:4px;padding-inline:4px;border-radius:var(--r-2)}.roster-search{position:relative}.roster-search svg{position:absolute;inset-inline-start:var(--s-3);top:50%;width:15px;height:15px;color:var(--text-3);transform:translateY(-50%);pointer-events:none}.roster-search .input{padding-inline-start:36px}.roster-list{display:grid;margin:0;padding:0;border:1px solid var(--line);border-radius:var(--r-3);list-style:none}.roster-row{display:flex;align-items:center;gap:var(--s-3);min-height:52px;padding:var(--s-2) var(--s-3);border-bottom:1px solid var(--line)}.roster-row:last-child{border-bottom:0}.roster-name{min-width:0;flex:1;display:grid;gap:1px}.roster-name strong{font-size:var(--fs-sm);font-weight:600;overflow-wrap:anywhere}.roster-name small{color:var(--text-3);font-size:var(--fs-xs)}.roster-row .tag{flex:0 0 auto}.roster-footer{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--s-2)}.tag-online{gap:6px}.tag-online .live-dot{background:var(--success)}.presence-answer{min-height:52px;width:100%;font-size:var(--fs-lg)}.presence-done{display:flex;align-items:center;gap:var(--s-2);margin:0;color:var(--success-text);font-size:var(--fs-md);font-weight:600}.presence-done svg{width:20px;height:20px;flex:none}.presence-tally{margin:0;color:var(--text-1);font-size:var(--fs-lg);font-weight:700}.presence-groups{display:grid;gap:6px}.presence-group{border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface-1)}.presence-group-head{width:100%;min-height:44px;display:flex;align-items:center;gap:var(--s-2);padding:0 var(--s-3);border:0;background:transparent;color:var(--text-1);font:inherit;font-size:var(--fs-sm);font-weight:600;text-align:start;cursor:pointer}.presence-group-head:disabled{cursor:default}.presence-group-head:focus-visible{outline:2px solid var(--focus);outline-offset:-2px;border-radius:var(--r-2)}.presence-group-head .num{margin-inline-start:auto;color:var(--text-2)}.presence-group-head svg{width:14px;height:14px;color:var(--text-3)}.presence-group.is-success .presence-group-head>span:first-child:before,.presence-group.is-muted .presence-group-head>span:first-child:before,.presence-group.is-warning .presence-group-head>span:first-child:before{content:"";display:inline-block;width:8px;height:8px;margin-inline-end:8px;border-radius:50%;background:var(--success)}.presence-group.is-muted .presence-group-head>span:first-child:before{background:var(--text-3)}.presence-group.is-warning .presence-group-head>span:first-child:before{background:var(--warning)}.presence-people{display:grid;gap:2px;margin:0;padding:0 var(--s-3) var(--s-2);list-style:none;max-height:180px;overflow-y:auto}.presence-people li{display:flex;align-items:center;gap:6px;color:var(--text-2);font-size:var(--fs-xs);line-height:1.8}.presence-people svg{width:12px;height:12px;color:var(--text-3)}.presence-auto{display:grid;gap:var(--s-2);justify-items:start}.presence-window{display:inline-flex;align-items:center;gap:var(--s-2);color:var(--text-2);font-size:var(--fs-sm)}.presence-window .select{width:auto}.breakout-pill{height:24px;min-width:0;display:inline-flex;flex:0 1 auto;align-items:center;gap:6px;padding:0 10px;overflow:hidden;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);border-radius:12px;background:var(--accent-soft);color:var(--text-1);font-size:var(--fs-xs);white-space:nowrap}.breakout-pill svg{width:13px;height:13px;flex:none;color:var(--accent-text)}.breakout-pill strong{font-weight:700}.breakout-pill .num{color:var(--text-2)}.breakout-pill-time{font-variant-numeric:tabular-nums}@media(max-width:639px){.breakout-pill{height:22px;padding-inline:8px}.breakout-pill>.num:not(.breakout-pill-time){display:none}}.breakout-banner{position:fixed;z-index:54;top:calc(var(--safe-top) + 32px + 44px + var(--s-2));inset-inline:var(--s-3);width:fit-content;max-width:min(calc(100% - 24px),640px);display:grid;gap:4px;margin-inline:auto;padding:6px var(--s-2);border:1px solid var(--line-strong);border-radius:var(--r-2);background:var(--surface-3);box-shadow:var(--shadow-overlay);font-size:var(--fs-sm)}.breakout-banner-row{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);margin:0;line-height:1.6}.breakout-banner-row>svg{width:15px;height:15px;flex:none;color:var(--accent-text)}.breakout-banner-row.is-closing{color:var(--warning-text);font-weight:700}.breakout-banner-row.is-closing>svg{color:var(--warning)}.breakout-banner-row.is-message span{min-width:0;flex:1;overflow-wrap:anywhere}.breakout-banner-row.is-note{color:var(--text-3);font-size:var(--fs-xs)}.breakout-banner-actions{display:inline-flex;flex-wrap:wrap;gap:4px;margin-inline-start:auto}.room.is-board-immersive .breakout-banner{top:auto;bottom:calc(var(--safe-bottom) + 76px)}.immersive-timer .breakout-pill{height:36px;border-radius:8px;background:#2b3747e6}@media(max-width:639px){.breakout-banner{top:calc(var(--safe-top) + 30px + 40px + 6px);inset-inline:6px;max-width:calc(100% - 12px)}}.breakout-help-tag{display:inline-flex;align-items:center;gap:4px;margin-inline-start:var(--s-2);padding:0 6px;border-radius:6px;background:var(--warning-soft);color:var(--warning-text);font-size:11px;font-weight:700}.breakout-help-tag svg{width:12px;height:12px}.breakout-setup{display:grid;gap:var(--s-4)}.breakout-setup-row{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3);margin:0;padding:0;border:0}.breakout-setup-row legend{width:100%;margin-bottom:6px;padding:0}.breakout-amount{width:88px}.breakout-groups,.breakout-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:var(--s-2)}.breakout-group,.breakout-card{min-width:0;display:grid;align-content:start;gap:var(--s-2);padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface-1)}.breakout-group.is-target{border-style:dashed;border-color:var(--line-strong)}.breakout-group.is-unassigned{background:transparent}.breakout-card.is-help{border-color:#e6b95f8c}.breakout-group-head{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}.breakout-group-head strong{color:var(--text-1);font-size:var(--fs-sm)}.breakout-group-head .muted{font-size:var(--fs-xs)}.breakout-group-name{min-width:0;flex:1;height:36px}.breakout-chips{display:flex;flex-wrap:wrap;gap:6px}.breakout-chip{min-height:36px;padding:0 var(--s-3);border:1px solid var(--line-strong);border-radius:18px;background:var(--surface-2);color:var(--text-1);font:inherit;font-size:var(--fs-xs);cursor:pointer}.breakout-chip[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.breakout-chip:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.breakout-drop{justify-self:start;color:var(--accent-text)}.breakout-dashboard{display:grid;gap:var(--s-4)}.breakout-dashboard-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);color:var(--text-1);font-size:var(--fs-sm);font-weight:600}.breakout-dashboard-actions{display:inline-flex;flex-wrap:wrap;gap:var(--s-2);margin-inline-start:auto}.breakout-broadcast{display:flex;gap:var(--s-2)}.breakout-broadcast .input{min-width:0;flex:1}.breakout-members{display:grid;gap:4px;margin:0;padding:0;list-style:none}.breakout-members li{min-width:0;min-height:36px;display:flex;align-items:center;gap:var(--s-2);color:var(--text-2);font-size:var(--fs-xs)}.breakout-members li>span:nth-child(2){min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.breakout-members .presence-dot.is-off{background:var(--text-3)}.breakout-move{width:auto;max-width:140px;min-height:36px;font-size:var(--fs-xs)}.poll-voters{min-width:0;border-top:1px solid var(--line);padding-top:var(--s-2)}.poll-voters>summary{min-height:36px;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);border-radius:var(--r-1);color:var(--text-1);font-size:var(--fs-sm);font-weight:700;cursor:pointer}.poll-voters>summary:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.poll-voters-count{color:var(--text-3);font-size:var(--fs-xs);font-weight:600}.poll-voters-tools{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);margin-block:var(--s-2)}.poll-voters-search{flex:1 1 160px;min-width:0}.poll-voters .poll-voters-list{display:grid;gap:2px;max-height:320px;margin:var(--s-1) 0 0;padding:0;overflow-y:auto;list-style:none}.poll-voters .poll-voter{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:2px var(--s-3);padding:6px var(--s-2);border-radius:var(--r-1);font-size:var(--fs-sm);line-height:1.6}.poll-voters .poll-voter:nth-child(odd){background:var(--surface-1)}.poll-voter-name{min-width:0;flex:1 1 8em;color:var(--text-1);font-weight:600;overflow-wrap:anywhere}.poll-voter-answer{min-width:0;color:var(--text-2);overflow-wrap:anywhere}.poll-voter.is-waiting .poll-voter-name,.poll-voter.is-waiting .poll-voter-answer{color:var(--text-3)}.poll-voter-verdict{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);font-weight:700}.poll-voter-verdict svg{width:14px;height:14px;flex:none}.poll-voter-verdict.is-right{color:var(--success-text)}.poll-voter-verdict.is-wrong{color:var(--danger-text)}.poll-voters-empty{margin:var(--s-1) 0 0;font-size:var(--fs-sm)}.rec{position:fixed;inset:0 auto auto 0;overflow:hidden;background:var(--bg);color:var(--text-1)}.rec-status{display:grid;place-items:center;width:100vw;height:100vh;color:var(--text-2);font-size:var(--fs-md)}.rec-bar{position:absolute;display:flex;align-items:center;gap:var(--s-5);padding-inline:var(--s-6);border-bottom:1px solid var(--line);background:var(--surface-1);font-size:22px;white-space:nowrap}.rec-class{flex:0 1 auto;min-width:0;overflow:hidden;font-weight:600;text-overflow:ellipsis}.rec-stage-title{flex:0 1 auto;min-width:0;display:flex;align-items:center;gap:var(--s-2);padding-inline-start:var(--s-5);border-inline-start:1px solid var(--line-strong);color:var(--text-2)}.rec-stage-title>span:nth-child(2){overflow:hidden;text-overflow:ellipsis}.rec-stage-title svg{width:20px;height:20px;color:var(--text-3)}.rec-page{flex:0 0 auto;padding:2px var(--s-3);border-radius:var(--r-1);background:var(--surface-3);color:var(--text-1);font-size:18px}.rec-clock{flex:0 0 auto;margin-inline-start:auto;color:var(--text-3);font-size:18px}.rec-stage{position:absolute;display:grid;place-items:center;overflow:hidden;border:1px solid var(--line);border-radius:var(--r-2);background:var(--stage)}.rec-stage.has-video{border-color:transparent;border-radius:0;background:#000}.rec-stage>.board-host{position:absolute;top:0;right:0;bottom:0;left:0}.rec-split{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:minmax(0,9fr) minmax(0,11fr)}.rec-split-board{position:relative;min-width:0}.rec-split-board>.board-host{position:absolute;top:0;right:0;bottom:0;left:0}.rec-beside{min-width:0;min-height:0;display:flex;flex-direction:column;border-inline-end:1px solid var(--line-strong);background:var(--surface-1)}.rec-beside-bar{display:flex;align-items:center;flex:0 0 auto;gap:var(--s-2);padding:var(--s-2) var(--s-4);border-bottom:1px solid var(--line);background:var(--surface-2);color:var(--text-2);font-size:20px}.rec-beside-bar strong{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.rec-beside-bar svg{width:20px;height:20px;color:var(--text-3)}.rec-beside-view{position:relative;flex:1;min-height:0;display:grid;place-items:center;background:var(--stage)}.rec-beside-view img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;padding:var(--s-3);object-fit:contain}.rec-beside-missing{color:var(--text-3);font-size:20px}.rec-slate{max-width:640px;font-size:22px}.rec-slate strong{font-size:30px}.rec-slate svg{width:44px;height:44px}.rec-camera-frame{position:absolute;box-shadow:0 0 0 3px var(--line-strong);background:#000}.rec-camera.is-speaking .rec-camera-frame{box-shadow:0 0 0 3px var(--success)}.rec-camera-name{position:absolute;display:flex;align-items:center;gap:var(--s-2);padding-inline:var(--s-2);overflow:hidden;color:var(--text-2);font-size:16px;white-space:nowrap}.rec-camera-name>span{overflow:hidden;text-overflow:ellipsis}.rec-camera-name svg{flex:none;width:16px;height:16px;color:var(--text-3)}.rec-camera-name svg.is-speaking{color:var(--success)}.rec-chat{position:absolute;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface-1)}.rec-chat-title{flex:none;margin:0;padding:var(--s-2) var(--s-3);border-bottom:1px solid var(--line);color:var(--text-2);font-size:16px;font-weight:600}.rec-chat-pinned{flex:none;display:flex;align-items:flex-start;gap:var(--s-2);margin:0;padding:var(--s-2) var(--s-3);border-bottom:1px solid var(--line);background:var(--surface-2);font-size:15px;line-height:1.6}.rec-chat-pinned svg{flex:none;width:16px;height:16px;margin-top:4px;color:var(--warning)}.rec-chat-pinned>span{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:anywhere}.rec-chat-pinned strong{color:var(--warning);font-weight:600}.rec-chat-list{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:flex-end;gap:var(--s-2);margin:0;padding:var(--s-2) var(--s-3);overflow:hidden;list-style:none}.rec-chat-message{flex:none;display:grid;gap:2px}.rec-chat-message strong{overflow:hidden;color:var(--text-2);font-size:14px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.rec-chat-message.is-teacher strong{color:var(--warning)}.rec-chat-message p{width:fit-content;max-width:100%;margin:0;padding:5px 10px;border:1px solid var(--line);border-inline-start:2px solid var(--line-strong);border-radius:var(--r-1);background:var(--surface-2);color:var(--text-1);font-size:16px;line-height:1.6;overflow-wrap:anywhere}.rec-chat-message.is-teacher p{border-inline-start-color:var(--warning)}.capacity-fields{display:grid;gap:var(--s-3)}@media(min-width:768px){.capacity-fields{grid-template-columns:repeat(3,minmax(0,1fr))}}.capacity-checklist{display:grid;gap:var(--s-1);margin:0;padding-inline-start:var(--s-5);color:var(--text-3);font-size:var(--fs-xs);line-height:1.7}.capacity-live{border-color:var(--accent-line)}.capacity-now{margin:0}.capacity-phases{display:grid;gap:var(--s-2);margin:0;padding:0;list-style:none}.capacity-phase{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-2) var(--s-3);padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-3);background:var(--surface-1)}.capacity-phase.is-active{border-color:var(--accent-line);background:var(--accent-soft)}.capacity-phase-text{display:grid;gap:2px;min-width:0;flex:1 1 220px}.capacity-phase-text strong{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);font-weight:600}.capacity-phase-text small{color:var(--text-3);font-size:var(--fs-xs);line-height:1.6}.capacity-custom{display:flex;flex-wrap:wrap;gap:var(--s-2);margin-top:var(--s-3)}.capacity-custom .input{flex:1 1 220px;min-width:0}.capacity-verdict-lede{margin:0 0 var(--s-3);line-height:1.9}.capacity-caveats{display:grid;gap:var(--s-1);margin:0;padding-inline-start:var(--s-4)}.capacity-ok,.capacity-bad{display:inline-flex;align-items:center;gap:6px;font-weight:600;white-space:nowrap}.capacity-ok{color:var(--success-text)}.capacity-bad{color:var(--danger-text)}.capacity-table td small{white-space:nowrap}.capacity-notes{margin:var(--s-3) 0 0;padding-top:var(--s-3);border-top:1px solid var(--line);white-space:pre-wrap;color:var(--text-2);font-size:var(--fs-sm)}.capacity-exports{display:flex;flex-wrap:wrap;gap:var(--s-2)}.capacity-delete{display:flex;justify-content:flex-end}@media print{body.printing-capacity{background:#fff;color:#000}body.printing-capacity *{visibility:visible}body.printing-capacity .admin-sidebar,body.printing-capacity .admin-tabbar,body.printing-capacity .admin-topbar,body.printing-capacity .admin-feature-alert,body.printing-capacity .no-print,body.printing-capacity .page-back{display:none!important}body.printing-capacity .admin,body.printing-capacity .admin-main{display:block;--bg: #fff;--surface-1: #fff;--surface-2: #f4f4f6;--surface-3: #eceef2;--line: #cfd2da;--line-strong: #aeb2bd;--text-1: #000;--text-2: #222;--text-3: #444;--chart-grid: #d5d7de;--chart-bar: #3b4ad6;--chart-area: rgb(59 74 214 / .14);--accent: #3b4ad6;--accent-text: #3b4ad6;--success-text: #0d6b43;--danger-text: #a3202d;--warning-text: #7a5400;--warning-soft: #fff4d6;--warning-line: #d9b45a;background:#fff;color:#000;padding:0}body.printing-capacity .card,body.printing-capacity .stat-tile{break-inside:avoid;box-shadow:none}body.printing-capacity .table-wrap{overflow:visible}body.printing-capacity .data-table{font-size:9pt}}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}}@keyframes settle-in{0%{opacity:0;transform:scale(.96)}}@keyframes fade-in-soft{0%{opacity:0}}@keyframes grow-up{0%{transform:scaleY(0)}}@keyframes grow-inline{0%{transform:scaleX(0)}}@keyframes wipe-in{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}@keyframes rule-in{0%{transform:scaleY(0)}}.page>*,.admin-main>*,.stack-lg>*{animation:rise-in var(--t-slow) var(--ease-out) backwards}.page>:nth-child(2),.admin-main>:nth-child(2),.stack-lg>:nth-child(2){animation-delay:50ms}.page>:nth-child(3),.admin-main>:nth-child(3),.stack-lg>:nth-child(3){animation-delay:.1s}.page>:nth-child(4),.admin-main>:nth-child(4),.stack-lg>:nth-child(4){animation-delay:.15s}.page>:nth-child(n+5),.admin-main>:nth-child(n+5),.stack-lg>:nth-child(n+5){animation-delay:.2s}.class-tiles>li,.stat-grid>*{animation:rise-in .42s var(--ease-out) backwards;animation-delay:calc(var(--i, 0) * 45ms + 80ms)}.stat-grid>:nth-child(2){--i: 1}.stat-grid>:nth-child(3){--i: 2}.stat-grid>:nth-child(4){--i: 3}.auth-panel{animation:rise-in .48s var(--ease-out) backwards}.auth-aside{animation:fade-in-soft .6s var(--ease-out) backwards}.auth-art .art-ink{stroke-dasharray:320;animation:draw-ink 1.6s var(--ease-out) .3s backwards}@keyframes draw-ink{0%{stroke-dashoffset:320}to{stroke-dashoffset:0}}.auth-art .art-cam.is-speaking{animation:speak-ring 2.4s ease-in-out infinite}@keyframes speak-ring{50%{stroke-opacity:.35}}.class-tile,.live-item,.class-card{transition:border-color var(--t-base) var(--ease),background-color var(--t-base) var(--ease),transform var(--t-base) var(--ease-out)}@media(hover:hover){.class-tile:hover,.live-item:hover,.class-card:hover{transform:translateY(-2px)}}.admin-nav-item[aria-current=page]:before{animation:rule-in var(--t-base) var(--ease-out) backwards}.chart-svg{animation:wipe-in .9s var(--ease-out) .12s backwards}.sparkline{animation:wipe-in .8s var(--ease-out) .25s backwards}.chart-bar{transform-origin:bottom;animation:grow-up .52s var(--ease-out) backwards;animation-delay:calc(var(--i, 0) * 25ms + .12s)}.rank-fill{transform-origin:left;animation:grow-inline .7s var(--ease-out) backwards;animation-delay:calc(var(--i, 0) * 60ms + .15s)}[dir=rtl] .rank-fill{transform-origin:right}.net-bar{animation:wipe-in .8s var(--ease-out) .15s backwards}[dir=rtl] .net-bar{animation-name:wipe-in-rtl}@keyframes wipe-in-rtl{0%{clip-path:inset(0 0 0 100%)}to{clip-path:inset(0 0 0 0)}}.heatmap-grid{animation:fade-in-soft .7s var(--ease-out) .15s backwards}.meter-fill{transform-origin:left;animation:grow-inline .6s var(--ease-out) .12s backwards}[dir=rtl] .meter-fill{transform-origin:right}
