:root{--paper: #f4f1e8;--paper-2: #fcfaf4;--ink: #16233b;--ink-soft: #48546b;--ink-faint: #6b7587;--line: #e5dfcf;--line-soft: #efeadd;--marker: #0e9e76;--marker-deep: #0a7d5d;--marker-tint: #e2f2ea;--marker-hl: rgba(14, 158, 118, .22);--amber: #c97c1e;--amber-tint: #f6e9ce;--coral: #d6453f;--coral-tint: #f7dedb;--shadow: 0 1px 0 rgba(22, 35, 59, .04), 0 8px 24px -18px rgba(22, 35, 59, .28);--shadow-lift: 0 2px 0 rgba(22, 35, 59, .05), 0 18px 40px -22px rgba(22, 35, 59, .4);--r: 14px;--r-sm: 10px;--r-xs: 6px;--r-pill: 999px;--fs-2xs: 11px;--fs-xs: 12px;--fs-sm: 13px;--fs-md: 14px;--fs-lg: 16px;--fs-xl: 20px;--fs-2xl: 24px;--fs-3xl: 30px;--font-display: "Unbounded", sans-serif;--font-body: "Onest", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "IBM Plex Mono", monospace;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--z-sticky: 20;--z-drawer: 70;--z-modal: 90;--z-toast: 100;--dur-fast: .12s;--dur: .2s;--dur-slow: .35s;--ease: cubic-bezier(.2, .7, .2, 1);--on-accent: #fff;--scrim: rgba(22, 35, 59, .42);--surface-hi: #fff;--inverse: #16233b;--on-inverse: #fff;--btn: #0a7d5d;--btn-hover: #086a4f;--coral-btn: #d6453f;--amber-text: #7a4a09;--glass: rgba(244, 241, 232, .92);--grid-line: rgba(198, 190, 168, .28);--backdrop: rgba(22, 35, 59, .28);--hover-tint: rgba(14, 158, 118, .08);--active-tint: rgba(14, 158, 118, .16);color-scheme:light;--ok: var(--marker);--warn: var(--amber);--bg: var(--paper);--card: var(--paper-2);--muted: var(--ink-faint);--brand: var(--marker-deep);--topbar-h: 52px;--tabbar-h: 56px;font-family:var(--font-body)}:root[data-theme=dark]{--paper: #0f1420;--paper-2: #171e2c;--ink: #e8ecf4;--ink-soft: #b4bdcd;--ink-faint: #97a3b8;--line: #2a3447;--line-soft: #212a3b;--marker: #34c79b;--marker-deep: #4fd6ab;--marker-tint: #12332b;--marker-hl: rgba(52, 199, 155, .25);--amber: #e0a04a;--amber-tint: #3a2d14;--coral: #ef6b64;--coral-tint: #3d1f1f;--shadow: 0 1px 0 rgba(0, 0, 0, .3), 0 8px 24px -18px rgba(0, 0, 0, .7);--shadow-lift: 0 2px 0 rgba(0, 0, 0, .35), 0 18px 40px -22px rgba(0, 0, 0, .85);--scrim: rgba(0, 0, 0, .62);--surface-hi: #1d2638;--inverse: #e8ecf4;--on-inverse: #16233b;--btn: #0a7d5d;--btn-hover: #0d9370;--coral-btn: #c93a34;--amber-text: #f0c27a;--glass: rgba(15, 20, 32, .92);--grid-line: rgba(255, 255, 255, .045);--backdrop: rgba(0, 0, 0, .5);--hover-tint: rgba(52, 199, 155, .1);--active-tint: rgba(52, 199, 155, .2);color-scheme:dark}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--paper: #0f1420;--paper-2: #171e2c;--ink: #e8ecf4;--ink-soft: #b4bdcd;--ink-faint: #97a3b8;--line: #2a3447;--line-soft: #212a3b;--marker: #34c79b;--marker-deep: #4fd6ab;--marker-tint: #12332b;--marker-hl: rgba(52, 199, 155, .25);--amber: #e0a04a;--amber-tint: #3a2d14;--coral: #ef6b64;--coral-tint: #3d1f1f;--shadow: 0 1px 0 rgba(0, 0, 0, .3), 0 8px 24px -18px rgba(0, 0, 0, .7);--shadow-lift: 0 2px 0 rgba(0, 0, 0, .35), 0 18px 40px -22px rgba(0, 0, 0, .85);--scrim: rgba(0, 0, 0, .62);--surface-hi: #1d2638;--inverse: #e8ecf4;--on-inverse: #16233b;--btn: #0a7d5d;--btn-hover: #0d9370;--coral-btn: #c93a34;--amber-text: #f0c27a;--glass: rgba(15, 20, 32, .92);--grid-line: rgba(255, 255, 255, .045);--backdrop: rgba(0, 0, 0, .5);--hover-tint: rgba(52, 199, 155, .1);--active-tint: rgba(52, 199, 155, .2);color-scheme:dark}}.room-root,.board-only{--paper: #f4f1e8;--paper-2: #fcfaf4;--ink: #16233b;--ink-soft: #48546b;--ink-faint: #6b7587;--line: #e5dfcf;--line-soft: #efeadd;--marker: #0e9e76;--marker-deep: #0a7d5d;--marker-tint: #e2f2ea;--marker-hl: rgba(14, 158, 118, .22);--amber: #c97c1e;--amber-tint: #f6e9ce;--coral: #d6453f;--coral-tint: #f7dedb;--shadow: 0 1px 0 rgba(22, 35, 59, .04), 0 8px 24px -18px rgba(22, 35, 59, .28);--shadow-lift: 0 2px 0 rgba(22, 35, 59, .05), 0 18px 40px -22px rgba(22, 35, 59, .4);--scrim: rgba(22, 35, 59, .42);--surface-hi: #fff;--inverse: #16233b;--on-inverse: #fff;--btn: #0a7d5d;--btn-hover: #086a4f;--coral-btn: #d6453f;--amber-text: #7a4a09;--glass: rgba(244, 241, 232, .92);--grid-line: rgba(198, 190, 168, .28);--backdrop: rgba(22, 35, 59, .28);--hover-tint: rgba(14, 158, 118, .08);--active-tint: rgba(14, 158, 118, .16);color-scheme:light}.skip-link{position:absolute;left:8px;top:-48px;z-index:var(--z-toast);background:var(--inverse);color:var(--on-inverse);padding:10px 14px;border-radius:var(--r-sm)}.skip-link:focus{top:8px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:26px 26px;background-position:-1px -1px}a{color:var(--marker-deep);text-decoration:none}::selection{background:var(--marker-hl)}:focus-visible{outline:2px solid var(--marker);outline-offset:2px}.main h1{font-family:Unbounded,sans-serif;font-weight:600;font-size:30px;letter-spacing:-.02em;line-height:1.1;margin:0 0 18px}.main h1 .hl{background:linear-gradient(transparent 64%,var(--marker-hl) 64%)}.main h2{font-size:16px;font-weight:700;letter-spacing:-.01em;margin:26px 0 12px}.muted{color:var(--ink-faint);font-size:13.5px;font-family:IBM Plex Mono,monospace}.mono{font-family:IBM Plex Mono,monospace}input,textarea,select{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-sm);font-size:14px;font-family:inherit;color:var(--ink);background:var(--paper);transition:.16s}input:focus,textarea:focus,select:focus{outline:2px solid var(--marker);outline-offset:1px;border-color:var(--marker);box-shadow:0 0 0 4px var(--marker-hl);background:var(--surface-hi)}textarea{resize:vertical;min-height:84px}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2348546B' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:34px}input[type=checkbox],input[type=radio]{width:auto}label{font-size:12px;font-weight:600;color:var(--ink-soft);display:block;margin-bottom:6px;letter-spacing:.01em}.field{margin-bottom:12px}.field .req{color:var(--coral)}.field-hint{display:block;margin-top:5px;font-size:12px;color:var(--ink-faint)}.field-error{display:block;margin-top:5px;font-size:12px;color:var(--coral)}.field.has-error input,.field.has-error textarea,.field.has-error select{border-color:var(--coral)}.center-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}.auth-card{width:100%;max-width:400px;padding:28px}.auth-card .brand{font-family:Unbounded,sans-serif;font-weight:700;font-size:24px;color:var(--ink);margin-bottom:16px}.auth-card .brand .hl{background:linear-gradient(transparent 62%,var(--marker-hl) 62%);padding:0 1px}.auth-card h1{font-family:Unbounded,sans-serif;font-weight:600;font-size:20px;margin:0 0 16px}.auth-card altcha-widget{display:block;margin-bottom:14px;--altcha-max-width: 100%;--altcha-border-radius: var(--r-sm);--altcha-color-base: var(--paper-2);--altcha-color-border: var(--line);--altcha-color-text: var(--ink);--altcha-color-border-focus: var(--marker);--altcha-color-error-text: var(--coral)}.hp-field{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.spinner{animation-duration:1.2s!important;animation-iteration-count:infinite!important}}.app{display:flex;min-height:100%}.sidebar{width:248px;flex-shrink:0;background:var(--paper-2);border-right:1px solid var(--line);padding:22px 16px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;z-index:var(--z-sticky)}.sidebar .brand{font-family:var(--font-display);font-weight:700;font-size:var(--fs-xl);letter-spacing:-.01em;color:var(--ink);padding:4px 8px 16px}.sidebar .brand .hl{background:linear-gradient(transparent 62%,var(--marker-hl) 62%);padding:0 1px}.sidebar a{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:var(--r-sm);color:var(--ink-soft);font-size:var(--fs-md);font-weight:500;position:relative;transition:all var(--dur) var(--ease)}.sidebar a svg{flex:none;opacity:.75}.sidebar a:hover{background:var(--line-soft);color:var(--ink)}.sidebar a.active{background:var(--marker-tint);color:var(--marker-deep);font-weight:600}.sidebar a.active svg{opacity:1}.sidebar a.active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--marker)}.sidebar .spacer{flex:1}.sidebar .whoami{display:flex;align-items:center;gap:10px;padding:14px 6px 12px;margin-top:8px;border-top:1px solid var(--line)}.sidebar .ava{width:34px;height:34px;border-radius:var(--r-sm);flex-shrink:0;background:var(--inverse);color:var(--on-inverse);display:grid;place-items:center;font-weight:700;font-size:var(--fs-sm)}.sidebar .whoami b{font-size:var(--fs-sm);font-weight:600;display:block;line-height:1.2}.sidebar .whoami .role{font-size:var(--fs-2xs);color:var(--ink-faint)}.nav-count{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:var(--r-pill);background:var(--coral);color:var(--on-accent);font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:600;display:grid;place-items:center}.main{flex:1;padding:34px 44px 80px;max-width:1080px;width:100%}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:18px}.page-head h1{margin:0}.page-head-main{min-width:0}.page-head-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:center}.page-sub{margin:6px 0 0;color:var(--ink-soft);font-size:var(--fs-md)}.back-link{display:inline-block;margin-bottom:var(--sp-3);font-size:var(--fs-sm);font-weight:600;color:var(--ink-soft)}.back-link:hover{color:var(--ink)}.mt-0{margin-top:0}.mt-1{margin-top:var(--sp-1)}.mt-2{margin-top:var(--sp-2)}.mt-3{margin-top:var(--sp-3)}.mt-4{margin-top:var(--sp-4)}.mt-6{margin-top:var(--sp-6)}.mb-0{margin-bottom:0}.mb-2{margin-bottom:var(--sp-2)}.mb-3{margin-bottom:var(--sp-3)}.mb-4{margin-bottom:var(--sp-4)}.mb-6{margin-bottom:var(--sp-6)}.gap-1{gap:var(--sp-1)}.gap-2{gap:var(--sp-2)}.gap-3{gap:var(--sp-3)}.gap-4{gap:var(--sp-4)}.w-full{width:100%}.text-sm{font-size:var(--fs-sm)}.text-xs{font-size:var(--fs-xs)}.text-center{text-align:center}.code-lg{font-family:var(--font-mono);font-size:var(--fs-xl);letter-spacing:.04em}.stat-num{font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:600}.page-fade{animation:page-in var(--dur) var(--ease) both}@keyframes page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.topbar,.tabbar{display:none}.card{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:18px 20px;margin-bottom:12px}.card.tight{padding:13px 16px}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.spread{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:11px}a.card.spread,.card.spread{position:relative}.day-head{position:sticky;top:0;z-index:5;padding:10px 2px 6px;background:linear-gradient(var(--paper) 70%,transparent);font-size:var(--fs-sm);font-weight:700;letter-spacing:.01em;color:var(--ink-soft)}.day-head .dim{font-weight:500;color:var(--ink-faint)}button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;font-family:inherit;background:var(--btn);color:var(--on-accent);border:none;border-radius:var(--r-sm);padding:9px 16px;font-size:var(--fs-sm);font-weight:600;cursor:pointer;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur-fast) var(--ease);box-shadow:0 6px 14px -8px var(--btn)}button:hover,.btn:hover{background:var(--btn-hover)}button:active:not(:disabled),.btn:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}button.ghost,.btn.ghost{background:var(--paper-2);color:var(--ink-soft);border:1px solid var(--line);box-shadow:none}button.ghost:hover,.btn.ghost:hover{border-color:var(--ink);color:var(--ink);background:var(--paper-2)}button.danger{background:var(--paper-2);color:var(--coral);border:1px solid var(--coral);box-shadow:none}button.danger:hover{background:var(--coral-btn);color:#fff}button.ok{background:var(--btn)}button.link,.btn.link{background:none;color:var(--marker-deep);box-shadow:none;padding:2px 4px;font-weight:600;text-decoration:underline;text-underline-offset:3px}button.link:hover,.btn.link:hover{background:none;color:var(--ink)}button.icon-btn{background:transparent;color:var(--ink-faint);box-shadow:none;padding:6px 8px;font-size:15px}button.icon-btn:hover{background:var(--line-soft);color:var(--ink)}.spinner{width:13px;height:13px;border-radius:50%;border:2px solid currentColor;border-top-color:transparent;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.chips{display:flex;gap:8px;flex-wrap:wrap}.chips.scroller{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}.chip{flex:none;padding:8px 13px;border-radius:var(--r-pill);border:1px solid var(--line);background:var(--paper-2);color:var(--ink-soft);font-size:var(--fs-sm);font-weight:600;box-shadow:none;white-space:nowrap}.chip:hover{background:var(--line-soft);color:var(--ink)}.chip.on{background:var(--marker-tint);border-color:var(--marker);color:var(--marker-deep)}.chip.busy{opacity:.45;text-decoration:line-through;cursor:not-allowed}.chip.busy:hover{background:var(--paper-2)}.badge{display:inline-block;font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:500;padding:4px 9px;border-radius:var(--r-pill);letter-spacing:.02em;white-space:nowrap}.badge.confirmed,.badge.reviewed,.badge.active{background:var(--marker-tint);color:var(--marker-deep)}.badge.scheduled,.badge.submitted,.badge.in_progress,.badge.pending{background:var(--amber-tint);color:var(--amber)}.badge.cancelled,.badge.no_show,.badge.rework,.badge.overdue{background:var(--coral-tint);color:var(--coral)}.badge.new,.badge.completed,.badge.archived{background:var(--line-soft);color:var(--ink-faint)}.error{background:var(--coral-tint);color:var(--coral);border:1px solid var(--coral);padding:10px 12px;border-radius:var(--r-sm);font-size:var(--fs-md);margin-bottom:12px}.ok-msg{background:var(--marker-tint);color:var(--marker-deep);border:1px solid var(--marker);padding:10px 12px;border-radius:var(--r-sm);font-size:var(--fs-md);margin-bottom:12px}.toast-host{position:fixed;right:20px;bottom:20px;z-index:var(--z-toast);display:flex;flex-direction:column;gap:8px;align-items:flex-end;pointer-events:none}.toast{pointer-events:auto;max-width:min(380px,calc(100vw - 40px));text-align:left;padding:11px 14px;border-radius:var(--r-sm);font-size:var(--fs-md);font-weight:500;line-height:1.35;border:1px solid transparent;box-shadow:var(--shadow-lift);animation:toast-in var(--dur) var(--ease)}.toast:hover{filter:brightness(.98)}.toast.success{background:var(--marker-tint);color:var(--marker-deep);border-color:var(--marker)}.toast.error{background:var(--coral-tint);color:var(--coral);border-color:var(--coral)}.toast.info{background:var(--paper-2);color:var(--ink);border-color:var(--line)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.dialog{border:1px solid var(--line);border-radius:var(--r);background:var(--paper-2);color:var(--ink);padding:0;max-width:min(460px,calc(100vw - 32px));width:100%;box-shadow:var(--shadow-lift)}.dialog.modal{max-width:min(560px,calc(100vw - 32px))}.dialog.modal.wide{max-width:min(760px,calc(100vw - 32px))}.dialog::backdrop{background:var(--scrim)}.dialog{opacity:1;transform:none;transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease),overlay var(--dur) allow-discrete,display var(--dur) allow-discrete}.dialog:not([open]){opacity:0;transform:translateY(16px)}.dialog::backdrop{opacity:1;transition:opacity var(--dur) var(--ease),overlay var(--dur) allow-discrete,display var(--dur) allow-discrete}.dialog:not([open])::backdrop{opacity:0}@starting-style{.dialog[open]{opacity:0;transform:translateY(16px)}.dialog[open]::backdrop{opacity:0}}.dialog-body{padding:20px 22px}.dialog-body h2{margin:0 0 10px;font-size:17px;font-weight:700;letter-spacing:-.01em}.dialog-text{font-size:var(--fs-md);color:var(--ink-soft);line-height:1.45}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;flex-wrap:wrap}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-head h2{margin:0}.modal-content{margin-top:14px;max-height:min(70vh,620px);overflow-y:auto}.skeleton{display:block;border-radius:var(--r-xs);background:linear-gradient(90deg,var(--line-soft),var(--line),var(--line-soft));background-size:200% 100%;animation:shimmer 1.3s ease-in-out infinite}.skeleton-card{display:flex;flex-direction:column;gap:9px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.empty-state{border:1px dashed var(--line);border-radius:var(--r);background:var(--paper-2);padding:26px 22px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}.empty-state strong{font-size:15px;font-weight:700}.empty-state p{margin:0;font-size:var(--fs-md);color:var(--ink-soft);max-width:46ch;line-height:1.45}.empty-state .row{justify-content:center;margin-top:6px}.error-state{border-color:var(--coral);border-style:solid}.error-state strong{color:var(--coral)}.error-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;border:1px solid var(--coral);border-radius:var(--r);background:var(--paper-2);color:var(--coral);padding:10px 14px;margin-bottom:12px;font-size:var(--fs-md)}.error-banner button{flex-shrink:0}.admin-filters{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.admin-filters .field{flex:1 1 170px;margin:0}.admin-filters .row{flex:none}.pager{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:12px;font-size:var(--fs-md)}.admin-props{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px 20px;margin:0}.admin-props dt{font-size:var(--fs-xs);color:var(--ink-faint);font-weight:600}.admin-props dd{margin:2px 0 0;font-size:var(--fs-md);word-break:break-word}.slot-row input[type=time]{width:130px}.save-bar{position:sticky;bottom:12px;z-index:20;display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-top:16px;padding:12px 16px;border-radius:var(--r);border:1px solid var(--marker);background:var(--marker-tint);color:var(--marker-deep);font-size:var(--fs-md);font-weight:600;box-shadow:var(--shadow-lift)}.rich-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55}.file-row{padding:6px 0;border-bottom:1px solid var(--line-soft)}.file-row:last-child{border-bottom:none}.file-row button.ghost{max-width:100%;overflow:hidden;text-overflow:ellipsis}.check-row{display:flex;align-items:center;gap:9px;font-size:var(--fs-sm);font-weight:500;color:var(--ink);margin:4px 0 12px;cursor:pointer}.check-row input{flex:none;margin:0}.library-nav{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:14px}.library-nav .chips.scroller{flex:1;min-width:0}.library-nav>button{flex:none}.dim{font-weight:500;color:var(--ink-faint)}.onboarding{border-color:var(--marker);background:linear-gradient(var(--marker-tint),var(--paper-2) 60%)}.onboarding-steps{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.onboarding-steps li{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:var(--fs-md);border-top:1px solid var(--line-soft)}.onboarding-steps li:first-child{border-top:none}.onboarding-steps .tick{flex:none;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line);display:grid;place-items:center;font-size:var(--fs-xs);color:var(--marker-deep)}.onboarding-steps li.done .tick{border-color:var(--marker);background:var(--marker-tint)}.onboarding-steps li.done .step-label{color:var(--ink-faint);text-decoration:line-through}.onboarding-steps .step-label{flex:1;min-width:0}.onboarding-steps .btn,.onboarding-steps button{flex:none}.quick-actions{margin-bottom:18px}.overdue-text{color:var(--coral)!important}.student-card{display:flex;flex-direction:column;gap:10px}.student-facts{display:flex;flex-direction:column;gap:3px;font-size:var(--fs-sm);color:var(--ink-soft)}.pending-invite{opacity:.75}.invite-card{display:flex;flex-direction:column;gap:12px}.code-block{text-align:center;padding:14px;border-radius:var(--r-sm);background:var(--marker-tint);border:1px dashed var(--marker)}.code-block .code{display:block;font-family:var(--font-mono);font-size:var(--fs-3xl);font-weight:600;letter-spacing:.12em;color:var(--marker-deep);-webkit-user-select:all;user-select:all}.code-block p{margin:6px 0 10px}.input-with-action{display:flex;gap:8px;align-items:center}.input-with-action .icon-btn{flex:none;font-size:var(--fs-xs);font-weight:600;min-height:auto;white-space:nowrap}.role-cards{display:grid;grid-template-columns:1fr 1fr;gap:10px}.role-card{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:13px 14px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--paper-2);color:var(--ink);box-shadow:none}.role-card:hover{background:var(--line-soft)}.role-card.on{border-color:var(--marker);background:var(--marker-tint)}.role-card strong{font-size:var(--fs-md);font-weight:700}.role-card span{font-size:var(--fs-xs);font-weight:400;color:var(--ink-soft)}.lesson-row{align-items:flex-start}.lesson-main{display:flex;gap:14px;align-items:baseline;min-width:0}.lesson-time{display:flex;flex-direction:column;flex:none;font-family:var(--font-mono);font-size:15px;font-weight:600;line-height:1.2}.lesson-time small{font-size:var(--fs-2xs);font-weight:400;color:var(--ink-faint)}.lesson-actions{justify-content:flex-end}.join-hint{white-space:nowrap}.habit-btn{width:100%;justify-content:flex-start;margin-bottom:12px;border-style:dashed}.series-box{margin-top:14px;border-top:1px solid var(--line);padding-top:14px}.preview-list{display:flex;flex-direction:column;gap:4px;margin-top:10px;max-height:220px;overflow-y:auto;padding-right:4px}.preview-row{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:var(--r-sm);font-size:var(--fs-sm);font-weight:500;color:var(--ink);margin:0;cursor:pointer}.preview-row:hover{background:var(--line-soft)}.preview-row.off{opacity:.45;text-decoration:line-through}.preview-row input{flex:none;margin:0}.when-picker{display:flex;flex-direction:column;gap:14px}.when-section{display:flex;flex-direction:column;gap:8px}.when-label{font-size:var(--fs-xs);font-weight:600;color:var(--ink-soft);letter-spacing:.01em}.day-chip{display:flex;flex-direction:column;align-items:center;gap:0;line-height:1.15;padding:6px 12px;min-width:52px}.day-chip small{font-size:var(--fs-2xs);font-weight:500;opacity:.7}.when-date{max-width:180px}.time-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:7px}.time-grid .chip{justify-content:center;padding:8px 4px}.when-picker .tz-note{margin:0}.exact-time{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:var(--fs-sm);color:var(--ink-soft)}.exact-time input{width:auto;min-width:116px;font-family:var(--font-mono)}.exact-badge{padding:2px 8px;border-radius:var(--r-pill);background:var(--marker-tint);color:var(--marker-deep);font:600 11px/1.6 IBM Plex Mono,monospace}.exact-duration{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--ink-soft)}.exact-duration input{width:74px;text-align:center;font-family:var(--font-mono)}.when-clash{margin:0;padding:8px 12px;border-radius:var(--r-sm);background:var(--amber-tint);color:var(--amber-text);font-size:var(--fs-sm)}.sheet-nav{display:flex;flex-direction:column;gap:2px;margin-bottom:14px}.sheet-nav a{display:flex;align-items:center;gap:12px;padding:12px;min-height:48px;border-radius:var(--r-sm);color:var(--ink);font-size:15px;font-weight:500}.sheet-nav a:hover,.sheet-nav a.active{background:var(--line-soft)}.sheet-nav a svg{flex:none;opacity:.75}.tz-note{font-size:var(--fs-xs);color:var(--ink-faint);display:inline-flex;align-items:center;gap:6px}@media (max-width: 900px){.app{flex-direction:column}.sidebar{display:none}.topbar{display:flex;align-items:center;gap:8px;position:sticky;top:0;z-index:40;height:var(--topbar-h);padding:0 12px;background:var(--paper-2);border-bottom:1px solid var(--line)}.topbar .title{font-family:var(--font-display);font-weight:600;font-size:var(--fs-lg);letter-spacing:-.01em;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .ava{width:32px;height:32px;border-radius:var(--r-sm);flex:none;background:var(--inverse);color:var(--on-inverse);display:grid;place-items:center;font-weight:700;font-size:var(--fs-xs)}.tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:45;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--paper-2);border-top:1px solid var(--line)}.tabbar a,.tabbar button{flex:1;min-width:0;min-height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:none;border:none;box-shadow:none;color:var(--ink-faint);font-size:var(--fs-2xs);font-weight:600;padding:6px 2px;position:relative}.tabbar a.active{color:var(--marker-deep)}.tabbar a:hover,.tabbar button:hover{background:none;color:var(--ink)}.tabbar .nav-count{position:absolute;top:4px;left:50%;margin-left:4px;min-width:17px;height:17px;font-size:10px}.main{padding:18px 16px calc(var(--tabbar-h) + 28px)}.main h1{font-size:var(--fs-2xl)}.toast-host{right:12px;left:12px;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 12px);align-items:stretch}.toast{max-width:none}.dialog{max-width:none;width:100%;margin:auto auto 0;border-radius:var(--r) var(--r) 0 0;border-bottom:none}.dialog.modal,.dialog.modal.wide{max-width:none}.dialog:not([open]){transform:translateY(100%)}@starting-style{.dialog[open]{transform:translateY(100%)}}.modal-content{max-height:68vh}input,textarea,select{font-size:var(--fs-lg)}button,.btn{min-height:44px}.chip{min-height:40px}}.menu-wrap{position:relative;display:inline-flex}.menu-trigger{padding:8px 10px;min-width:0}.menu-panel{position:absolute;z-index:30;top:calc(100% + 6px);right:0;min-width:200px;padding:6px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow-lift);display:grid;gap:2px}.menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:9px 10px;border:0;border-radius:var(--r-sm);background:transparent;box-shadow:none;color:var(--ink);font-size:var(--fs-md);font-weight:500;text-align:left;cursor:pointer}.menu-item:hover{background:var(--line-soft)}.menu-item.danger{color:var(--coral);background:transparent;border:0}.menu-item.danger:hover{background:var(--coral-tint);color:var(--coral)}.menu-sheet{display:grid;gap:4px}.menu-sheet .menu-item{padding:13px 12px;font-size:15px}.card-actions{margin-top:4px;justify-content:space-between}.student-note{margin:4px 0 0;padding:8px 10px;background:var(--line-soft);border-radius:var(--r-sm);white-space:pre-wrap}.pref-row.reminder-pref{flex-direction:column;align-items:flex-start;gap:8px}.update-banner{position:fixed;left:50%;transform:translate(-50%);bottom:20px;z-index:var(--z-toast);display:flex;align-items:center;gap:10px;padding:10px 10px 10px 16px;border-radius:var(--r-pill);background:var(--inverse);color:var(--on-inverse);box-shadow:var(--shadow-lift);font-weight:600;font-size:var(--fs-md);white-space:nowrap}.update-banner button{padding:7px 14px}.update-banner .icon-btn{color:var(--on-accent);opacity:.7;padding:4px 8px}.update-banner.compact{bottom:auto;top:10px;font-size:var(--fs-xs);padding:6px 6px 6px 12px;opacity:.9}@media (max-width: 900px){.update-banner:not(.compact){bottom:calc(var(--tabbar-h) + 14px)}}.dictate-btn{display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:7px 12px;border-radius:var(--r-pill);border:1px solid var(--line);background:var(--paper-2);color:var(--ink-soft);font-size:var(--fs-sm);font-weight:600;box-shadow:none}.dictate-btn:hover:not(:disabled){background:var(--line-soft);color:var(--ink)}.dictate-btn.on{background:var(--coral-tint);border-color:var(--coral);color:var(--coral);font-variant-numeric:tabular-nums}.dictate-btn:disabled{opacity:.6;cursor:progress}@media (pointer: coarse),(max-width: 900px){button.icon-btn{min-width:44px;min-height:44px}.tabbar a,.tabbar button{min-height:44px}.mk-nav a,.mk-foot-nav a{display:inline-flex;align-items:center;min-height:44px}}@media (max-width: 700px){.table-cards,.table-cards tbody,.table-cards tr,.table-cards td{display:block;width:100%}.table-cards thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.table-cards tr{margin-bottom:var(--sp-3);padding:var(--sp-2) var(--sp-3);background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-sm)}.table-cards td{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3);padding:6px 0;border:none;border-top:1px solid var(--line-soft);text-align:right}.table-cards td:first-child{border-top:none}.table-cards td:before{content:attr(data-label);flex:none;max-width:45%;font-size:var(--fs-xs);font-weight:600;color:var(--ink-faint);text-align:left}.table-cards td:not([data-label]):before{content:none}.table-cards td:not([data-label]){justify-content:flex-start;text-align:left}}.mt-5{margin-top:var(--sp-5)}.mb-1{margin-bottom:var(--sp-1)}.mb-5{margin-bottom:var(--sp-5)}.max-w-200{max-width:200px}.flex-1{flex:1}.sidebar-search{display:flex;align-items:center;gap:8px;width:100%;margin:0 0 10px;padding:8px 10px;font-size:var(--fs-sm);font-weight:500}.sidebar-search span{flex:1;text-align:left}.sidebar-search kbd,.palette kbd{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--ink-faint);border:1px solid var(--line);border-radius:var(--r-xs);padding:1px 5px;background:var(--paper)}.palette{max-width:min(560px,calc(100vw - 32px));width:100%;padding:0;margin-top:12vh}.palette-body{display:flex;flex-direction:column;max-height:70vh}.palette-input{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);color:var(--ink-faint)}.palette-input input{border:0;box-shadow:none;background:transparent;padding:4px 0;font-size:var(--fs-lg);outline:none}.palette-input input:focus{box-shadow:none;background:transparent;outline:none}.palette-list{list-style:none;margin:0;padding:6px;overflow-y:auto;flex:1}.palette-group{padding:8px 10px 4px;font-size:var(--fs-2xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}.palette-item{display:flex;align-items:baseline;gap:10px;padding:9px 10px;border-radius:var(--r-sm);cursor:pointer;color:var(--ink)}.palette-item.on{background:var(--marker-tint);color:var(--marker-deep)}.palette-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.palette-hint{font-size:var(--fs-xs);color:var(--ink-faint);max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-empty{padding:18px;text-align:center;color:var(--ink-faint)}.palette-foot{display:flex;gap:14px;padding:8px 14px;border-top:1px solid var(--line);font-size:var(--fs-xs);color:var(--ink-faint)}@media (max-width: 800px){.sidebar-search{display:none}.palette{margin:0 auto auto;max-width:none;border-radius:0 0 var(--r) var(--r);border-top:0;border-bottom:1px solid var(--line)}.palette:not([open]){transform:translateY(-100%)}.palette-foot{display:none}}.install-hint{display:flex;align-items:center;gap:6px;margin-bottom:10px}.install-hint .ghost{flex:1;font-size:var(--fs-sm);padding:8px 10px}@media print{.install-hint,.sidebar-search{display:none}}.break-all{word-break:break-all}.chat-shell{display:grid;grid-template-columns:260px 1fr;padding:0;overflow:hidden;min-height:480px;height:calc(100vh - 210px)}.chat-contacts{border-right:1px solid var(--line);overflow-y:auto}.contact-row{display:block;padding:12px 14px;border-bottom:1px solid var(--line-soft);color:var(--ink)}.contact-row:hover{background:var(--line-soft)}.contact-row.on{background:var(--marker-tint)}.contact-row b{font-size:var(--fs-md)}.contact-preview{font-size:var(--fs-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-thread{display:flex;flex-direction:column;min-width:0}.chat-placeholder{display:grid;place-items:center;flex:1}.chat-head{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--line);font-weight:600}.chat-back{display:none}.chat-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:8px}.chat-day{align-self:center;margin:10px auto;padding:3px 12px;border-radius:var(--r-pill);background:var(--line-soft);color:var(--ink-faint);font-size:var(--fs-2xs);font-family:var(--font-mono);width:fit-content}.bubble{align-self:flex-start;background:var(--paper);border:1px solid var(--line);color:var(--ink);border-radius:var(--r);padding:8px 12px 6px;max-width:72%;width:fit-content;font-size:var(--fs-md);line-height:1.4;white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:6px}.bubble.mine{align-self:flex-end;background:var(--marker);border-color:transparent;color:var(--on-accent)}.bubble time{display:block;margin-top:3px;font-family:var(--font-mono);font-size:var(--fs-2xs);opacity:.65;text-align:right}.bubble.pending{opacity:.7}.bubble.failed{background:var(--coral)}.bubble .retry{display:block;margin-top:6px;padding:4px 9px;font-size:var(--fs-2xs);background:#ffffff2e;border:1px solid rgba(255,255,255,.5);box-shadow:none;min-height:auto}.chat-composer{display:flex;gap:8px;align-items:flex-end;padding:12px;border-top:1px solid var(--line)}.chat-composer textarea{min-height:42px;max-height:140px;resize:none}.chat-composer button{flex:none}@media (max-width: 900px){.chat-title{display:none}.chat-shell{grid-template-columns:1fr;height:calc(100vh - var(--topbar-h) - var(--tabbar-h) - 40px);min-height:0}.chat-shell .chat-thread,.chat-shell.has-peer .chat-contacts{display:none}.chat-shell.has-peer .chat-thread{display:flex}.chat-back{display:inline-flex}.bubble{max-width:85%}}.ticks{margin-left:4px;letter-spacing:-2px;color:var(--ink-faint);font-weight:600}.ticks.read{color:var(--marker)}.bubble.mine .ticks{color:#ffffffb3}.bubble.mine .ticks.read{color:#b8f5dd}.contact-preview .ticks{margin-left:0;margin-right:4px}.contact-relation{font-size:var(--fs-xs);color:var(--marker-deep);font-weight:600;margin-top:1px}.group-msg{display:flex;align-items:flex-end;gap:8px}.group-msg.mine{justify-content:flex-end}.group-author{font-size:var(--fs-xs);font-weight:700;color:var(--marker-deep);margin-bottom:2px}.bubble.deleted{opacity:.6}.msg-delete{background:none;border:0;box-shadow:none;padding:0 0 0 6px;color:inherit;opacity:.5;font-size:var(--fs-2xs);cursor:pointer}.msg-delete:hover{opacity:1;background:none}@media (max-width: 600px){.chat-head .group-sub{display:none}}.bell-wrap{position:relative;display:inline-flex}.bell-button{position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;border:1px solid transparent;border-radius:var(--r-sm);background:transparent;color:var(--ink-soft);cursor:pointer}.bell-button:hover{background:var(--line-soft);color:var(--ink)}.bell-button[aria-expanded=true]{background:var(--marker-tint);border-color:var(--marker);color:var(--marker-deep)}.bell-badge{position:absolute;top:3px;right:2px;min-width:17px;height:17px;padding:0 4px;border-radius:var(--r-sm);background:var(--coral);color:var(--on-accent);font:600 10px/17px IBM Plex Mono,monospace;text-align:center;box-shadow:0 0 0 2px var(--card)}.bell-panel{position:absolute;z-index:40;bottom:calc(100% + 8px);left:0;width:min(360px,calc(100vw - 32px));background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-lift);overflow:hidden}.topbar .bell-panel{top:calc(100% + 8px);bottom:auto;left:auto;right:0}.bell-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line-soft)}.bell-panel-head .ghost.tiny{display:inline-flex;align-items:center;gap:6px;min-height:0;padding:4px 8px;font-size:var(--fs-xs)}.bell-list{max-height:min(60vh,420px);overflow-y:auto;overscroll-behavior:contain}.bell-empty{display:grid;gap:6px;justify-items:center;padding:28px 16px;text-align:center}.bell-item{display:flex;justify-content:flex-start;align-items:flex-start;border-radius:0;box-shadow:none;font-size:var(--fs-md);font-weight:400;gap:10px;width:100%;padding:11px 14px;border:0;border-bottom:1px solid var(--line-soft);background:transparent;text-align:left;cursor:pointer;color:inherit}.bell-item:last-child{border-bottom:0}.bell-item:hover{background:var(--line-soft)}.bell-item.unread{box-shadow:inset 3px 0 0 var(--marker);background:var(--marker-tint)}.bell-item.unread:hover{background:var(--marker-hl)}.bell-glyph{color:var(--marker-deep);padding-top:2px;flex:none;font-size:17px;line-height:1.3}.bell-text{display:grid;gap:2px;min-width:0}.bell-title{font-weight:600;color:var(--ink)}.bell-body{color:var(--ink-soft);font-size:var(--fs-sm);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.bell-when{color:var(--ink-faint);font:11px/1.4 IBM Plex Mono,monospace}.sidebar-bell{padding:0 4px 10px}.topbar .bell-wrap{margin-left:auto}@media (max-width: 900px){.sidebar-bell{display:none}}.tg-code{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:8px;padding:10px 12px;border:1px dashed var(--marker);border-radius:var(--r-sm);background:var(--marker-tint)}.tg-code code{font:600 15px/1.4 IBM Plex Mono,monospace;color:var(--marker-deep);letter-spacing:.04em;word-break:break-all}.crash-details{margin-top:18px;border-top:1px solid var(--line-soft);padding-top:12px;text-align:left}.crash-details summary{cursor:pointer;color:var(--ink-faint);font-size:var(--fs-sm)}.crash-details pre{margin:10px 0;padding:10px;max-height:220px;overflow:auto;border-radius:var(--r-sm);background:var(--line-soft);color:var(--ink-soft);font:11px/1.5 IBM Plex Mono,monospace;white-space:pre-wrap;word-break:break-word}.pref-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-soft)}.pref-row:last-child{border-bottom:0}.pref-row .pref-label{display:grid;gap:2px}.pref-row .pref-hint{color:var(--ink-faint);font-size:var(--fs-xs)}.pref-row input[type=checkbox]{width:20px;height:20px;flex:none;accent-color:var(--marker)}.room-root,.room{height:100vh;height:100dvh}.room{position:relative;overflow:hidden;background:#0b0d12;color:var(--on-accent)}.room .stage{position:absolute;top:0;right:0;bottom:0;left:0}.room .board-stage{background:var(--paper);color:var(--ink)}.board-host{width:100%;height:100%;min-height:0;background-color:#fff}.board-host .excalidraw{background:transparent}.board-host[data-paper=grid]{background-image:linear-gradient(to right,#cfdcec 1px,transparent 1px),linear-gradient(to bottom,#cfdcec 1px,transparent 1px);background-size:var(--paper-step, 20px) var(--paper-step, 20px);background-position:var(--paper-x, 0) var(--paper-y, 0)}.board-host[data-paper=lines]{background-image:linear-gradient(to bottom,#cfdcec 1px,transparent 1px);background-size:100% var(--paper-step, 32px);background-position:0 var(--paper-y, 0)}.board-host[data-paper=dots]{background-image:radial-gradient(circle at 1px 1px,#b4bfcf 1.3px,transparent 1.7px);background-size:var(--paper-step, 20px) var(--paper-step, 20px);background-position:var(--paper-x, 0) var(--paper-y, 0)}.paper-picker{position:relative}.paper-toggle{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--r-pill);min-height:0;box-shadow:none;font-size:var(--fs-xs);font-weight:600;background:var(--paper-2);color:var(--ink);border:1px solid var(--line)}.paper-toggle:hover{background:var(--line-soft)}.paper-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:30;display:grid;gap:2px;min-width:170px;padding:6px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow-lift)}.paper-menu button{display:flex;align-items:center;gap:10px;width:100%;padding:7px 8px;border:0;border-radius:var(--r-sm);box-shadow:none;min-height:0;background:transparent;color:var(--ink);font-size:var(--fs-sm);font-weight:500;text-align:left}.paper-menu button:hover{background:var(--line-soft)}.paper-menu button.on{background:var(--marker-tint)}.paper-swatch{width:22px;height:22px;flex:none;border-radius:4px;border:1px solid var(--line);background-color:#fff}.paper-swatch[data-paper=grid]{background-image:linear-gradient(to right,#b9cbe2 1px,transparent 1px),linear-gradient(to bottom,#b9cbe2 1px,transparent 1px);background-size:6px 6px}.paper-swatch[data-paper=lines]{background-image:linear-gradient(to bottom,#b9cbe2 1px,transparent 1px);background-size:100% 7px}.paper-swatch[data-paper=dots]{background-image:radial-gradient(circle at 1px 1px,#9fabbd 1px,transparent 1.3px);background-size:6px 6px}.room .room-bar{position:absolute;top:0;left:0;right:0;z-index:30;display:flex;align-items:center;gap:12px;padding:10px 16px;background:linear-gradient(#0b0d12bf,#0b0d1200);color:var(--on-accent);pointer-events:none}.room .room-bar strong{font-family:var(--font-display);font-weight:600;font-size:15px}.room .room-bar .conn-chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--on-accent);opacity:.75}.room .room-bar .conn-chip .dot{width:8px;height:8px;border-radius:50%;background:#3ecfa2}.room .room-bar .conn-chip.bad{color:var(--amber);opacity:1}.room .room-bar .conn-chip.bad .dot{background:var(--amber)}.room .room-bar .meta{margin-left:auto;font-family:var(--font-mono);font-size:var(--fs-xs);opacity:.8}.room .pip-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;pointer-events:none}.room .pip{position:absolute;right:16px;bottom:92px;width:200px;display:flex;flex-direction:column;gap:6px;pointer-events:auto;cursor:grab;touch-action:none;max-height:calc(100vh - 140px);max-height:calc(100dvh - 140px);overflow-y:auto;scrollbar-width:none}.room .pip::-webkit-scrollbar{display:none}.room .pip:active{cursor:grabbing}.room .pip .lk-participant-tile{width:200px;height:132px;flex:none;border-radius:var(--r-sm);overflow:hidden;box-shadow:0 6px 20px #00000073}.room{--rail-w: 312px;--rail-tile-w: 140px;--rail-tile-h: 92px}.room.rail-collapsed{--rail-w: 104px;--rail-tile-w: 88px;--rail-tile-h: 60px}.room.has-rail .stage,.room.has-rail .room-controls{right:var(--rail-w)}.room .cam-rail{position:absolute;top:44px;right:0;bottom:0;width:var(--rail-w);z-index:20;display:flex;flex-direction:column;gap:6px;padding:6px 8px 8px;background:#0b0d12;border-left:1px solid rgba(255,255,255,.12)}.room .cam-rail-toggle{flex:none;display:flex;align-items:center;justify-content:center;gap:8px;height:28px;min-height:0;padding:0 10px;border-radius:var(--r-sm);cursor:pointer;box-shadow:none;background:#ffffff1a;color:var(--on-accent);border:1px solid rgba(255,255,255,.22);font-size:var(--fs-lg);line-height:1}.room .cam-rail-toggle:hover{background:#fff3}.room .cam-rail-count{font-family:var(--font-mono);font-size:var(--fs-xs)}.room .cam-rail-tiles{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;display:grid;grid-template-columns:repeat(2,var(--rail-tile-w));justify-content:center;grid-auto-rows:var(--rail-tile-h);align-content:start;gap:6px}.room.rail-collapsed .cam-rail-tiles{grid-template-columns:var(--rail-tile-w)}.room .cam-rail .lk-participant-tile{width:var(--rail-tile-w);height:var(--rail-tile-h);border-radius:var(--r-sm);overflow:hidden}.room .cam-rail .lk-participant-tile[data-lk-speaking=true]{outline:2px solid var(--marker);outline-offset:-2px}.room .room-controls{position:absolute;left:0;right:0;bottom:0;z-index:30;display:flex;justify-content:center;align-items:center;padding:12px;pointer-events:none}.room .room-controls>*{pointer-events:auto}.room .room-controls .bar{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px;max-width:min(100%,1000px);padding:6px;border-radius:var(--r);background:var(--marker-deep);border:1px solid rgba(255,255,255,.18);box-shadow:0 6px 22px #00000059;--lk-bg: var(--marker-deep);--lk-bg2: var(--marker);--lk-fg: #fff;--lk-control-bg: transparent;--lk-control-fg: #fff;--lk-control-hover-bg: rgba(255, 255, 255, .18);--lk-control-active-bg: rgba(255, 255, 255, .26);--lk-control-active-hover-bg: rgba(255, 255, 255, .34);--lk-border-color: rgba(255, 255, 255, .22);--lk-accent-bg: var(--marker);--lk-accent-fg: #fff}.room .room-controls .room-btn{display:inline-flex;align-items:center;gap:7px;padding:9px 13px;border-radius:var(--r-sm);border:1px solid transparent;background:transparent;color:var(--on-accent);font-family:inherit;font-weight:600;font-size:var(--fs-md);line-height:1;white-space:nowrap;cursor:pointer;box-shadow:none}.room .room-controls .room-btn:hover:not(:disabled){background:#ffffff2e}.room .room-controls .room-btn:disabled{opacity:.45;cursor:not-allowed}.room .room-controls .room-btn svg{flex:none}.room .room-controls .room-btn:focus-visible{outline:2px solid #fff;outline-offset:2px}.room .room-controls .room-btn.on,.room .room-controls .room-btn[data-lk-source=screen_share][data-lk-enabled=true]{background:#fff;color:var(--marker-deep);border-color:var(--marker-deep)}.room .room-controls .room-btn.on:hover,.room .room-controls .room-btn[data-lk-source=screen_share][data-lk-enabled=true]:hover{background:var(--marker-tint)}.room .room-controls .room-btn[data-lk-source=microphone][data-lk-enabled=false],.room .room-controls .room-btn[data-lk-source=camera][data-lk-enabled=false],.room .room-controls .room-btn.danger{background:var(--coral);color:var(--on-accent)}.room .room-controls .room-btn[data-lk-source=microphone][data-lk-enabled=false]:hover,.room .room-controls .room-btn[data-lk-source=camera][data-lk-enabled=false]:hover,.room .room-controls .room-btn.danger:hover:not(:disabled){filter:brightness(1.1)}@media (max-width: 1100px){.room .room-controls .room-btn .label{display:none}.room .room-controls .room-btn{padding:10px}}.room .pip-source{position:fixed;left:0;bottom:0;z-index:-1;width:640px;height:360px;opacity:.01;pointer-events:none}.room-notice{position:absolute;top:48px;left:50%;transform:translate(-50%);z-index:40;display:flex;align-items:center;gap:12px;max-width:min(560px,90vw);padding:10px 14px;border-radius:var(--r-sm);background:var(--coral);color:var(--on-accent);font-size:var(--fs-md);line-height:1.35;box-shadow:0 6px 20px #00000059}.room-notice button{flex:none;padding:6px 12px;border-radius:var(--r-sm);cursor:pointer;border:1px solid rgba(255,255,255,.5);background:transparent;color:var(--on-accent);font-size:var(--fs-sm);box-shadow:none}.room-notice button:hover{background:#ffffff29}.room-notice.warn{background:var(--amber)}.room-notice.stage-notice{top:56px}.room .lk-focus-toggle-button{display:none}.room-settings{position:absolute;right:16px;bottom:84px;z-index:45;width:min(320px,calc(100vw - 32px));max-height:min(70vh,calc(100dvh - 120px));overflow-y:auto;overflow-x:hidden;padding:14px 16px;border-radius:var(--r);background:#1b1f2a;color:var(--on-accent);border:1px solid rgba(255,255,255,.14);box-shadow:0 12px 36px #00000073}.room-settings-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.room-settings-head button{padding:2px 8px;border-radius:var(--r-sm);cursor:pointer;box-shadow:none;border:1px solid rgba(255,255,255,.3);background:transparent;color:var(--on-accent)}.room-settings-head button:hover{background:#ffffff24}.room-settings-row{display:grid;gap:4px;margin-bottom:12px;font-size:var(--fs-sm)}.room-settings-row>span{color:#ffffffb3}@media (max-width: 900px){.room-settings{right:12px;left:12px;width:auto;bottom:92px}}.lobby{width:100%;max-width:460px;padding:24px}.lobby h1{font-family:var(--font-display);font-weight:600;font-size:22px;margin:0 0 4px}.lobby-preview{margin:14px 0 10px;aspect-ratio:4 / 3;border-radius:var(--r-sm);overflow:hidden;background:#0b0d12;display:grid;place-items:center}.lobby-preview video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.lobby-off{color:#fff9;font-size:var(--fs-md)}.lobby-meter{height:6px;border-radius:var(--r-pill);background:var(--line-soft);overflow:hidden}.lobby-meter span{display:block;height:100%;background:var(--marker);transition:width .08s linear}.lobby-actions{margin-top:16px}.board-top{display:flex;align-items:center;gap:6px}.board-status{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--r-pill);font-family:var(--font-mono);font-size:var(--fs-2xs);background:var(--paper-2);border:1px solid var(--line);color:var(--ink-soft)}.board-status .dot{width:7px;height:7px;border-radius:50%;background:var(--ink-faint)}.board-status.online .dot{background:var(--ok)}.board-status.connecting .dot,.board-status.loading .dot{background:var(--warn)}.board-status.offline .dot{background:var(--coral)}@media (max-width: 900px){.room .pip{width:128px;bottom:84px;right:12px;max-height:calc(100vh - 132px);max-height:calc(100dvh - 132px)}.room .pip .lk-participant-tile{width:128px;height:86px}.room{--rail-h: 92px;--rail-bottom: 76px;--rail-tile-w: 96px;--rail-tile-h: 72px}.room.rail-collapsed{--rail-h: 52px;--rail-tile-w: 64px;--rail-tile-h: 44px}.room.has-rail .stage{right:0;bottom:calc(var(--rail-h) + var(--rail-bottom))}.room.has-rail .room-controls{right:0}.room .cam-rail{top:auto;left:0;right:0;bottom:var(--rail-bottom);width:auto;height:var(--rail-h);flex-direction:row;padding:6px 8px;border-left:0;border-top:1px solid rgba(255,255,255,.12)}.room .cam-rail-toggle{height:auto;align-self:stretch;padding:0 8px;flex-direction:column;gap:2px}.room .cam-rail-tiles{display:flex;gap:6px;overflow-x:auto;overflow-y:hidden;justify-content:flex-start}.room .cam-rail .lk-participant-tile{flex:none}}.room-settings-check{display:flex;gap:8px;align-items:flex-start;margin:4px 0 12px;font-size:var(--fs-sm);cursor:pointer}.room-settings-check input{margin-top:2px}.room .share-host{position:relative;width:100%;height:100%}.room .share-host .lk-participant-tile{width:100%;height:100%}.room .share-host video{object-fit:contain!important}.annot-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:5;pointer-events:none;touch-action:none}.annot-canvas.drawing{pointer-events:auto;cursor:crosshair}.annot-tools{position:absolute;top:56px;left:12px;z-index:6;display:flex;flex-direction:column;gap:6px;align-items:center;padding:6px;border-radius:var(--r);background:#0b0d12cc;box-shadow:0 4px 16px #00000059}.annot-tools button{background:transparent;color:var(--on-accent);border:1px solid rgba(255,255,255,.25);box-shadow:none;cursor:pointer}.annot-tools .annot-pen{width:40px;height:40px;padding:0;border-radius:var(--r-sm);font-size:var(--fs-xl);line-height:1}.annot-tools .annot-pen.on{background:var(--marker);border-color:transparent}.annot-tools .swatch{width:24px;height:24px;padding:0;border-radius:var(--r-pill);border:2px solid transparent}.annot-tools .swatch.on{border-color:#fff}.annot-tools .annot-clear{padding:4px 6px;border-radius:var(--r-sm);font-size:var(--fs-2xs)}@media (pointer: coarse),(max-width: 900px){.room.board-open .room-controls{justify-content:flex-end;padding:8px 10px}.room.board-open .room-controls .bar{gap:2px;padding:4px;border-radius:var(--r-pill)}.room.board-open .room-controls .room-btn{padding:9px}.room.board-open .room-bar{padding:6px 10px;background:linear-gradient(#0b0d1299,#0b0d1200)}.room.board-open .room-bar strong,.room.board-open .room-bar .meta{display:none}.room.board-open .room-bar .conn-chip,.room.board-open .room-bar .meta:last-of-type{display:inline-flex}.room.chrome-idle .room-bar,.room.chrome-idle .room-controls{opacity:.35}.room .room-bar,.room .room-controls{transition:opacity var(--dur)}}.room-select{width:100%;min-width:0;padding:8px 10px;border-radius:var(--r-sm);background:#ffffff14;color:var(--on-accent);border:1px solid rgba(255,255,255,.22);font:inherit;font-size:var(--fs-sm);text-overflow:ellipsis}.room-select:focus{outline:2px solid var(--marker);outline-offset:1px}.room-select option{color:#16233b;background:#fff}.room-settings-error{color:#ff9b95;font-size:var(--fs-xs)}.room-settings-check{color:var(--on-accent)}.room-settings-check small{display:block;margin-top:3px;font-size:var(--fs-xs);line-height:1.4;color:#fff9}.room-settings-hint{margin:6px 0 0;font-size:var(--fs-xs);line-height:1.4;color:#fff9}.room-settings section{margin-bottom:14px}.room-settings h3{margin:0 0 8px;font-size:var(--fs-xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#ffffff8c}.room-menu-btn{width:100%;justify-content:center;background:#ffffff1f;color:var(--on-accent);border:1px solid rgba(255,255,255,.22);border-radius:var(--r-sm);padding:9px 12px;font-size:var(--fs-sm);cursor:pointer}.room-menu-btn:hover{background:#fff3}.room-menu-btn.on{background:var(--marker);border-color:transparent}.room-menu-btn:disabled{opacity:.5;cursor:not-allowed}.tablet-qr{display:grid;gap:10px;min-width:0}.tablet-qr img{justify-self:center;background:#fff;border-radius:var(--r-sm);padding:6px}.tablet-qr-hint{margin:0;font-size:var(--fs-xs);line-height:1.45;color:#ffffffa6}.tablet-url .ghost{flex:none;padding:6px 10px;font-size:var(--fs-xs);box-shadow:none;background:#ffffff1f;color:var(--on-accent);border:1px solid rgba(255,255,255,.22)}.tablet-url{display:flex;gap:8px;align-items:center;width:100%}.tablet-url code{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-xs);background:#ffffff14;padding:6px 8px;border-radius:var(--r-xs)}.board-only{display:flex;flex-direction:column;height:100dvh;background:#fff}.board-only-bar{display:flex;align-items:center;gap:12px;padding:8px 16px;border-bottom:1px solid var(--line, #e5e7eb);font-size:var(--fs-md)}.board-only-bar a{margin-left:auto}.board-only-stage{flex:1;min-height:0;position:relative}@media (max-width: 600px){.board-only-hint{display:none}}.room .room-bar .rec-chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:var(--fs-xs);padding:2px 8px;border-radius:var(--r-pill);background:#d6453fd9;color:var(--on-accent)}.room .room-bar .rec-chip .meta{color:var(--on-accent);opacity:.85}.room .room-bar .rec-dot{width:8px;height:8px;border-radius:50%;background:#fff;animation:rec-blink 1.6s ease-in-out infinite}@keyframes rec-blink{50%{opacity:.3}}@media (prefers-reduced-motion: reduce){.room .room-bar .rec-dot{animation:none}}.admin-shell{display:flex;min-height:100%}.admin-nav{position:sticky;top:0;flex:none;width:240px;height:100vh;overflow-y:auto;display:flex;flex-direction:column;padding:20px 14px;background:var(--paper-2);border-right:1px solid var(--line)}.admin-nav .brand{font-family:var(--font-display);font-weight:700;font-size:18px;padding:0 10px 4px}.admin-nav .brand .hl{background:linear-gradient(transparent 62%,var(--marker-hl) 62%)}.admin-nav .brand-sub{padding:0 10px 14px;font-size:var(--fs-2xs);font-family:var(--font-mono);color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em}.admin-nav-group{margin-top:14px}.admin-nav-group h4{margin:0 0 4px;padding:0 10px;font-size:var(--fs-2xs);font-weight:700;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em}.admin-nav a{display:block;padding:7px 10px;border-radius:var(--r-sm);font-size:var(--fs-md);font-weight:500;color:var(--ink-soft)}.admin-nav a:hover{background:var(--line-soft);color:var(--ink)}.admin-nav a.active{background:var(--marker-tint);color:var(--marker-deep);font-weight:600}.admin-nav .spacer{flex:1;min-height:16px}.admin-nav .whoami{padding:10px;font-size:var(--fs-sm)}.admin-nav .whoami b{display:block}.admin-nav .foot{display:flex;gap:8px;padding:0 10px}.admin-nav .foot a,.admin-nav .foot button{flex:1;text-align:center;font-size:var(--fs-sm)}.admin-body{flex:1;min-width:0;display:flex;flex-direction:column}.admin-topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:10px;padding:10px 28px;background:var(--glass);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}.admin-topbar .menu-btn{display:none}.admin-topbar .actions{display:flex;gap:8px;margin-left:auto;flex:none}.admin-search{position:relative;flex:1;max-width:460px}.admin-search input{background:var(--surface-hi)}.admin-search-results{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:40;padding:6px;background:var(--surface-hi);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow-lift)}.admin-search-results a{display:flex;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:var(--r-sm);color:var(--ink);font-size:var(--fs-md)}.admin-search-results a:hover,.admin-search-results a:focus{background:var(--line-soft)}.admin-search-results .empty{padding:8px 10px}.main.admin-main{max-width:1320px;padding:26px 28px 80px}.admin-backdrop{display:none}@media (max-width: 900px){.admin-nav{position:fixed;left:0;top:0;z-index:60;transform:translate(-100%);transition:transform var(--dur);box-shadow:var(--shadow-lift)}.admin-shell.nav-open .admin-nav{transform:none}.admin-shell.nav-open .admin-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:var(--backdrop)}.admin-topbar{padding:8px 16px;flex-wrap:wrap}.admin-topbar .menu-btn{display:inline-flex}.admin-search{order:3;flex-basis:100%;max-width:none}.main.admin-main{padding:18px 16px 60px}}.admin-tiles{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));margin-bottom:18px}.admin-tile{padding:14px 16px}.admin-tile .value{font-family:var(--font-display);font-size:var(--fs-2xl);line-height:1.1}.admin-tile .label{font-size:var(--fs-sm);color:var(--ink-soft);margin-top:4px}.admin-columns{display:grid;gap:18px;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}@media (max-width: 1100px){.admin-columns{grid-template-columns:minmax(0,1fr)}}.admin-panel{padding:16px 18px}.admin-panel+.admin-panel{margin-top:18px}.admin-panel>header{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px}.admin-panel>header h2{margin:0}.admin-lesson-line{display:grid;grid-template-columns:112px minmax(0,1fr) auto;gap:12px;align-items:center;padding:9px 0;border-top:1px solid var(--line-soft);font-size:var(--fs-md)}.admin-lesson-line:first-of-type{border-top:0}.admin-lesson-line .when{font-family:var(--font-mono);font-size:var(--fs-sm)}.admin-lesson-line .when small{display:block;color:var(--ink-faint);font-size:var(--fs-2xs)}.admin-lesson-line .who{min-width:0;overflow:hidden;text-overflow:ellipsis}.admin-lesson-line .side{display:flex;gap:8px;align-items:center}.admin-lesson-line.live{background:linear-gradient(90deg,var(--marker-tint),transparent 60%)}@media (max-width: 600px){.admin-lesson-line{grid-template-columns:minmax(0,1fr);gap:4px}}.live-pill{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-xs);font-weight:600;color:var(--marker-deep);white-space:nowrap}.live-pill:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--marker);animation:live-pulse 1.6s ease-in-out infinite}@keyframes live-pulse{50%{opacity:.35}}.attention-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--line-soft);font-size:var(--fs-md);color:var(--ink-soft)}.attention-row:first-of-type{border-top:0}.attention-row .count{min-width:34px;text-align:center;padding:2px 8px;border-radius:var(--r-pill);font-family:var(--font-mono);font-size:var(--fs-sm);background:var(--line-soft);color:var(--ink-faint)}.attention-row.hot{color:var(--ink)}.attention-row.hot .count{background:var(--amber-tint);color:var(--amber);font-weight:600}.day-chart{position:relative}.day-chart .plot{display:flex;align-items:stretch;gap:2px;height:140px;border-bottom:1px solid var(--line)}.day-chart .col{flex:1;display:flex;align-items:flex-end;min-width:0;cursor:default;background:none;border:0;padding:0;box-shadow:none;border-radius:0}.day-chart .col:hover,.day-chart .col:focus-visible{background:var(--line-soft)}.day-chart .bar{width:100%;min-height:0;border-radius:4px 4px 0 0;background:var(--marker)}.day-chart .col.zero .bar{height:0}.day-chart .axis{display:flex;justify-content:space-between;margin-top:4px;font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--ink-faint)}.day-chart .tip{position:absolute;top:0;z-index:5;min-width:170px;padding:8px 10px;font-size:var(--fs-xs);background:var(--inverse);color:var(--on-inverse);border-radius:var(--r-sm);pointer-events:none;box-shadow:var(--shadow-lift)}.day-chart .tip b{display:block;margin-bottom:2px}.day-chart .tip div{display:flex;justify-content:space-between;gap:12px}.quick-chips{margin:12px 0 4px}.lesson-section{margin-top:22px}.lesson-section>header{display:flex;align-items:baseline;gap:10px;margin-bottom:8px}.lesson-section>header h2{margin:0}.day-heading{margin:14px 0 6px;font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint)}.admin-lesson-row{display:grid;grid-template-columns:22px 120px minmax(0,1fr) auto;gap:12px;align-items:center;margin-bottom:6px;padding:10px 14px;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--fs-md);cursor:pointer}.admin-lesson-row:hover{border-color:var(--ink-faint)}.admin-lesson-row.live{border-color:var(--marker);background:linear-gradient(90deg,var(--marker-tint),var(--paper-2) 55%)}.admin-lesson-row.dim{opacity:.65}.admin-lesson-row .when{font-size:var(--fs-sm)}.admin-lesson-row .when small{display:block;font-size:var(--fs-2xs);color:var(--ink-faint)}.admin-lesson-row .who{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-lesson-row .side{display:flex;gap:6px;align-items:center}@media (max-width: 600px){.admin-lesson-row{grid-template-columns:22px minmax(0,1fr);gap:4px 10px}.admin-lesson-row .who,.admin-lesson-row .side{grid-column:2}.admin-lesson-row .who{white-space:normal}}.bulk-bar{position:sticky;top:64px;z-index:20;display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;border-radius:var(--r-sm);background:var(--inverse);color:var(--on-inverse);box-shadow:var(--shadow-lift)}.bulk-bar span{margin-right:auto;font-weight:600}.bulk-bar button.ghost{background:transparent;color:var(--on-accent);border-color:#fff6}.week-nav{margin:16px 0 10px}.week-grid{display:grid;gap:8px;grid-template-columns:repeat(7,minmax(0,1fr))}@media (max-width: 1100px){.week-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}.week-col{display:flex;flex-direction:column;gap:6px;min-height:160px;padding:8px;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-sm)}.week-col.today{border-color:var(--marker);box-shadow:inset 0 3px 0 var(--marker)}.week-head{font-size:var(--fs-sm)}.week-col .empty{text-align:center}.week-item{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;padding:6px 8px;border-radius:var(--r-sm);border-left:3px solid var(--marker);background:var(--marker-tint);color:var(--ink);box-shadow:none;font-size:var(--fs-xs);font-weight:500;text-align:left}.week-item:hover{background:var(--line-soft)}.week-item span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.week-item.scheduled{background:var(--amber-tint);border-left-color:var(--amber)}.week-item.cancelled,.week-item.no_show{background:var(--coral-tint);border-left-color:var(--coral);text-decoration:line-through}.week-item.completed{background:var(--line-soft);border-left-color:var(--ink-faint)}.participant-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px}.participant-row select{width:auto;padding-top:6px;padding-bottom:6px}.drawer-board{height:380px;overflow:hidden;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff}.history{list-style:none;margin:0;padding:0;font-size:var(--fs-sm)}.history li{padding:5px 0;border-top:1px solid var(--line-soft)}.content-row{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) auto;gap:12px;align-items:center;margin-bottom:6px;padding:10px 14px;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--fs-md);cursor:pointer}.content-row:hover{border-color:var(--ink-faint)}.content-row.static{cursor:default}.content-row.static:hover{border-color:var(--line)}.content-row .main-col{min-width:0}.content-row .main-col b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-row .sub{font-size:var(--fs-xs);color:var(--ink-faint)}.content-row .side{display:flex;gap:6px;align-items:center;justify-content:flex-end}.content-row .late{color:var(--coral);font-weight:600}@media (max-width: 600px){.content-row{grid-template-columns:minmax(0,1fr);gap:4px}.content-row .side{justify-content:flex-start}}.link-like{padding:0;background:none;border:0;box-shadow:none;color:var(--marker-deep);font-weight:600;text-align:left}.link-like:hover{background:none;text-decoration:underline}.file-chip{padding:5px 10px;font-size:var(--fs-sm)}.plain-block{white-space:pre-wrap;margin:0 0 8px}.admin-quick-links{margin:14px 0 4px;gap:8px}.privacy-gate{max-width:460px}.admin-chat{display:flex;flex-direction:column;gap:8px}.admin-msg{max-width:78%;padding:8px 12px;border-radius:var(--r);background:var(--paper);border:1px solid var(--line);font-size:var(--fs-md)}.admin-msg.left{align-self:flex-start}.admin-msg.right{align-self:flex-end;background:var(--marker-tint);border-color:transparent}.admin-msg .meta{font-size:var(--fs-2xs);color:var(--ink-faint);margin-bottom:2px}.admin-msg .text{white-space:pre-wrap;word-break:break-word}.drawer.wide{width:min(1040px,100%)}.drawer-board.tall{height:68vh}.activity-list .day-heading:first-child{margin-top:0}.activity-row{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:10px;align-items:baseline;padding:7px 0;border-top:1px solid var(--line-soft);font-size:var(--fs-md)}.activity-row .time{font-size:var(--fs-xs);color:var(--ink-faint)}.activity-row .who{font-size:var(--fs-sm);font-weight:600}.activity-row.failed{background:linear-gradient(90deg,var(--coral-tint),transparent 60%)}.activity-row .ip{padding:0;font-size:var(--fs-xs);color:var(--ink-faint);background:none;border:0;box-shadow:none;font-weight:400}.activity-row button.ip:hover{color:var(--marker-deep);text-decoration:underline}@media (max-width: 600px){.activity-row{grid-template-columns:44px minmax(0,1fr)}.activity-row .ip{grid-column:2;justify-self:start}}.verified-badge{display:inline-flex;align-items:center;gap:4px;vertical-align:-2px;font-family:var(--font-body);font-size:var(--fs-xs);font-weight:600;letter-spacing:0;white-space:nowrap}.verified-badge.verified{color:var(--marker)}.verified-badge.expert{color:#c9971e}.main h1 .verified-badge,.center-page h1 .verified-badge{vertical-align:2px;font-size:var(--fs-sm)}.main h1 .verified-badge svg,.center-page h1 .verified-badge svg{width:18px;height:18px}.level-option{display:flex;gap:10px;align-items:flex-start;margin:0;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--fs-md);font-weight:400;color:var(--ink);cursor:pointer}.level-option.on{border-color:var(--marker);background:var(--marker-tint)}.level-option input{margin-top:4px}.stats-table{width:100%;border-collapse:collapse;font-size:var(--fs-md)}.stats-table th{text-align:left;font-size:var(--fs-xs);font-weight:600;color:var(--ink-faint);padding:4px 8px;border-bottom:1px solid var(--line)}.stats-table td{padding:6px 8px;border-bottom:1px solid var(--line-soft)}.stats-table td.mono,.stats-table th:not(:first-child){text-align:right}.user-row .row-check{flex:none;margin-right:4px}.user-row.selected{border-color:var(--marker);background:var(--marker-tint)}.saved-view{display:flex;align-items:center;gap:2px}.saved-view a{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.saved-view .icon-btn{padding:2px 6px;font-size:15px;opacity:.5}.saved-view .icon-btn:hover{opacity:1}.saved-hint{margin:2px 10px;font-size:var(--fs-xs);color:var(--ink-faint)}.saved-add{width:calc(100% - 8px);margin:4px;padding:6px 10px;font-size:var(--fs-sm)}.table-wrap{overflow-x:auto;padding:6px 8px}.report-table{min-width:900px}.report-table td{white-space:nowrap}.report-table tr.dim td{opacity:.6}.drawer-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-drawer)}.drawer-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--backdrop)}.drawer{position:absolute;top:0;right:0;bottom:0;width:min(560px,100%);display:flex;flex-direction:column;background:var(--paper-2);box-shadow:var(--shadow-lift)}.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 20px;border-bottom:1px solid var(--line)}.drawer-head h2{margin:0;font-size:17px}.drawer-body{flex:1;overflow-y:auto;padding:16px 20px}.drawer-body h3{margin:18px 0 8px;font-size:var(--fs-md)}.drawer-foot{display:flex;flex-wrap:wrap;gap:8px;padding:12px 20px;border-top:1px solid var(--line)}.picker-chosen{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 8px 7px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-hi);font-size:var(--fs-md)}.picker-chosen button{padding:5px 10px;font-size:var(--fs-sm)}.admin-search-results .picker-option{display:flex;width:100%;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:var(--r-sm);background:none;box-shadow:none;color:var(--ink);font-size:var(--fs-md);font-weight:500;text-align:left}.admin-search-results .picker-option:hover,.admin-search-results .picker-option:focus{background:var(--line-soft)}.check-list{display:flex;flex-wrap:wrap;gap:6px 16px}.admin-check-row{display:inline-flex;align-items:center;gap:6px;margin:0;font-size:var(--fs-md);font-weight:500;color:var(--ink)}.plan-box{margin:12px 0;padding:10px 14px;border:1px dashed var(--line);border-radius:var(--r-sm);background:var(--paper)}.plan-dates{list-style:none;margin:6px 0 0;padding:0;font-size:var(--fs-sm)}.plan-dates li{display:flex;justify-content:space-between;gap:12px;padding:3px 0}.plan-dates li.ok span:last-child{color:var(--marker-deep)}.plan-dates li.bad{color:var(--ink-faint)}.plan-dates li.bad span:first-child{text-decoration:line-through}.plan-dates li.bad span:last-child{color:var(--coral)}.admin-tg-user{display:block;margin-top:2px;font-size:var(--fs-sm)}.server-page h2{margin-top:28px}.server-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin:12px 0 16px}.server-toolbar .chips{margin:0}.server-refresh{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.server-note.bad{border-color:var(--coral)}.server-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr))}.server-page,.server-page .card,.server-charts>*{min-width:0}.server-charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:14px}.server-charts h3,.server-page section.card h3{margin:0 0 8px;font-size:15px}.meter{height:6px;border-radius:3px;background:var(--line-soft);margin-top:8px;overflow:hidden}.meter span{display:block;height:100%;background:var(--ink-soft);border-radius:3px}.lc{position:relative;width:100%;overflow:hidden;touch-action:pan-y}.lc svg{display:block}.lc-grid{stroke:var(--line-soft);stroke-width:1}.lc-axis{stroke:var(--line);stroke-width:1}.lc-tick{fill:var(--ink-faint);font:var(--fs-2xs) var(--font-mono)}.lc-threshold{stroke:var(--amber);stroke-width:1;stroke-dasharray:4 4}.lc-threshold-label{fill:var(--amber)}.lc-cross{stroke:var(--ink-faint);stroke-width:1}.lc-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:var(--fs-sm);color:var(--ink-soft);margin-bottom:4px}.lc-legend span,.lc-tip-row{display:inline-flex;align-items:center;gap:6px}.lc-legend i,.lc-tip-row i,.disk-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;flex:none}.lc-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--ink-faint);font-size:var(--fs-sm);pointer-events:none}.lc-tip{position:absolute;pointer-events:none;z-index:2;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);padding:8px 10px;font-size:var(--fs-sm);min-width:150px}.lc-tip-time{color:var(--ink-faint);font:var(--fs-2xs) var(--font-mono);margin-bottom:4px}.lc-tip-row{display:flex;width:100%}.lc-tip-row b{margin-left:auto;padding-left:12px;color:var(--ink);font-weight:600}.server-table-wrap{overflow-x:auto}.server-table{width:100%;border-collapse:collapse;font-size:var(--fs-md)}.server-table th{text-align:left;font-weight:500;color:var(--ink-faint);font-size:var(--fs-xs);padding:4px 8px}.server-table td{padding:6px 8px;border-top:1px solid var(--line-soft);vertical-align:middle}.server-table .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.sparkline{display:block}.disk-bar{display:flex;gap:2px;height:18px;margin:12px 0;background:var(--line-soft);border-radius:var(--r-xs);overflow:hidden}.disk-bar span{display:block;height:100%;min-width:2px}.disk-legend{list-style:none;padding:0;margin:0 0 10px;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px 18px;font-size:var(--fs-md)}.disk-legend li{display:flex;align-items:center;gap:8px}.disk-legend b{margin-left:auto;font-weight:600;font-variant-numeric:tabular-nums}.disk-legend i.free{background:var(--line-soft);border:1px solid var(--line)}.bad-text{color:var(--coral)}@media (max-width: 600px){.server-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.server-toolbar,.server-refresh{align-items:stretch}.server-table-wrap{margin:0 calc(-1 * var(--sp-1));-webkit-overflow-scrolling:touch}.server-table{min-width:460px}.disk-legend{grid-template-columns:minmax(0,1fr)}.lc-tip{min-width:0;max-width:70vw}}.stars{display:flex;gap:2px;margin:4px 0 0}.stars .star{background:none;border:none;box-shadow:none;padding:0 2px;line-height:1;font-size:var(--fs-3xl);cursor:pointer;color:var(--line);transition:color var(--dur-fast),transform var(--dur-fast)}.stars .star:hover{background:none;transform:scale(1.12)}.stars .star.on{color:var(--marker)}.stars .star:focus-visible{outline:2px solid var(--marker);outline-offset:2px;border-radius:4px}.feedback-comment{display:grid;gap:4px;margin-top:8px}.feedback-comment textarea{width:100%}.stars-static{color:var(--marker);letter-spacing:1px;white-space:nowrap}.stars-static .muted{color:var(--line)}.stars-static strong{color:var(--ink);font-size:var(--fs-sm)}.feedback-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:12px}.feedback-row{padding-top:12px;border-top:1px solid var(--line)}.feedback-list>.feedback-row:first-child{padding-top:0;border-top:none}.feedback-text{margin:6px 0;white-space:pre-wrap}@media (max-width: 600px){.stars .star{font-size:var(--fs-2xl)}}.whats-new h3{margin:12px 0 6px;font-size:15px}.whats-new ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}.whats-new li{display:flex;gap:10px;align-items:flex-start;line-height:1.4}.whats-new-icon{flex:none;width:26px;text-align:center;font-size:18px}.mk{max-width:1060px;margin:0 auto;padding:0 20px 60px}.mk-top{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:18px 0;border-bottom:1px solid var(--line)}.mk-brand{font-family:var(--font-display);font-weight:700;font-size:var(--fs-xl);color:var(--ink)}.mk-brand .hl{background:linear-gradient(transparent 62%,var(--marker-hl) 62%);padding:0 1px}.mk-nav{display:flex;gap:16px;flex-wrap:wrap}.mk-nav a{color:var(--ink-soft);font-weight:500;font-size:var(--fs-md)}.mk-nav a:hover{color:var(--ink)}.mk-actions{display:flex;gap:8px;margin-left:auto}.mk-main section{margin-top:42px}.mk-main h1{font-family:var(--font-display);font-weight:600;font-size:clamp(28px,4.2vw,44px);line-height:1.12;letter-spacing:-.02em;margin:0 0 16px}.mk-main h2{font-family:var(--font-display);font-weight:600;font-size:clamp(20px,2.6vw,27px);margin:0 0 16px}.mk-main h3{font-size:var(--fs-lg);margin:0 0 6px}.mk-hero{margin-top:48px;max-width:760px}.mk-lead{font-size:17px;line-height:1.55;color:var(--ink-soft);margin:0 0 24px}.mk-cta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:26px 0}.mk-cta .btn{font-size:15px;padding:12px 22px}.mk-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.mk-card{padding:18px 20px;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r)}.mk-card p{margin:0;color:var(--ink-soft);font-size:var(--fs-md);line-height:1.5}.mk-split{display:grid;gap:28px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.mk-split ul,.mk-steps{padding-left:20px;color:var(--ink-soft);line-height:1.6}.mk-split li,.mk-steps li{margin-bottom:6px}.mk-faq dt{font-weight:600;margin-top:14px}.mk-faq dd{margin:4px 0 0;color:var(--ink-soft);line-height:1.55}.mk-foot{margin-top:56px;padding-top:20px;border-top:1px solid var(--line);color:var(--ink-soft);font-size:var(--fs-md)}.mk-foot-nav{display:flex;flex-wrap:wrap;gap:14px;margin-top:12px}.mk-burger{display:none}@media (max-width: 600px){.mk{padding:0 var(--sp-4) 40px}.mk-top{gap:var(--sp-3);padding:var(--sp-3) 0;position:relative}.mk-burger{display:inline-flex;margin-left:auto;width:44px;height:44px;min-height:44px;padding:0;background:var(--paper-2);color:var(--ink);border:1px solid var(--line);box-shadow:none}.mk-burger:hover{background:var(--line-soft)}.mk-nav{display:none;order:3;width:100%;flex-direction:column;gap:0}.mk-nav.open{display:flex}.mk-nav a{display:flex;align-items:center;min-height:44px;border-top:1px solid var(--line-soft)}.mk-actions{order:4;margin-left:0;width:100%}.mk-actions .btn{flex:1;text-align:center}.mk-main section{margin-top:32px}.mk-cta .btn{flex:1 1 100%}.mk-foot{margin-top:40px}.mk-foot-nav{flex-direction:column;gap:0}.mk-foot-nav a{display:flex;align-items:center;min-height:44px;border-top:1px solid var(--line-soft)}}.family-card .family-name{font-size:18px;font-weight:700;color:var(--ink);text-decoration:none}.family-card .family-name:hover{color:var(--marker-deep)}.family-facts{display:grid;gap:10px;margin-top:12px}.family-facts>div{display:flex;flex-direction:column;gap:2px}.family-facts .muted{font-size:var(--fs-sm)}.family-grades{margin:2px 0 0;padding-left:18px;font-size:var(--fs-md)}.overdue{color:var(--coral)}.tabs-line{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px;overflow-x:auto}.tabs-line .tab{flex:none;padding:10px 14px;color:var(--ink-soft);font-weight:600;text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px}.tabs-line .tab.on{color:var(--marker-deep);border-bottom-color:var(--marker)}.attend{font-weight:600;white-space:nowrap}.attend.yes{color:var(--marker-deep)}.attend.no{color:var(--coral)}.family-hw.is-overdue{border-color:var(--coral-tint)}.family-review{margin-top:10px;padding:10px 12px;border-radius:var(--r-sm);background:var(--line-soft)}.family-comment{margin-top:4px;color:var(--ink-soft);white-space:pre-wrap}@media (max-width: 600px){.family-card,.family-hw{min-width:0;overflow-wrap:anywhere}.family-facts{grid-template-columns:minmax(0,1fr)}.tabs-line{margin-left:calc(-1 * var(--sp-4));margin-right:calc(-1 * var(--sp-4));padding:0 var(--sp-4)}.tabs-line .tab{min-height:44px;display:inline-flex;align-items:center}}.library-search{max-width:280px}.library section+section{margin-top:22px}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}@media (max-width: 600px){.tile-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.library-search{max-width:none;width:100%}}.folder-tile{display:flex;flex-direction:column;align-items:center;gap:3px;padding:14px 10px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--paper-2);color:var(--ink);text-align:center;box-shadow:none;font-weight:400;min-width:0;transition:border-color var(--dur),transform var(--dur),box-shadow var(--dur)}.folder-tile:hover{border-color:var(--marker);box-shadow:var(--shadow);transform:translateY(-1px);background:var(--paper-2)}.folder-tile.drop-over{border-color:var(--marker);background:var(--marker-tint)}.folder-tile.add{border-style:dashed;color:var(--ink-soft);justify-content:center;min-height:128px}.folder-tile .add-plus{font-size:34px;line-height:1;color:var(--marker)}.folder-art{position:relative;display:block;margin-bottom:4px}.folder-icon .folder-back{fill:#e9b949}.folder-icon .folder-front{fill:#f6cf6a;stroke:#e3b24a;stroke-width:1.5}.folder-icon.lesson .folder-back{fill:#5aa98f}.folder-icon.lesson .folder-front{fill:#8fd0b8;stroke:#5aa98f}.folder-icon.lesson .folder-mark rect,.folder-icon.lesson .folder-mark path{stroke:#2d6f5b}.folder-icon.loose .folder-back{fill:#d8dbe2}.folder-icon.loose .folder-front{fill:#eef0f4;stroke:#aab1bf}.new-dot{position:absolute;top:2px;right:-2px;width:12px;height:12px;border-radius:50%;background:var(--coral);border:2px solid var(--paper-2)}.tile-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-weight:600;font-size:var(--fs-md);line-height:1.3;word-break:break-word;max-width:100%}.tile-sub,.tile-meta{font-size:var(--fs-xs);color:var(--ink-faint);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile-sub{color:var(--ink-soft)}.tile-warn{font-size:var(--fs-2xs);color:var(--amber);line-height:1.3}.file-tile{position:relative;border:1px solid var(--line);border-radius:var(--r);background:var(--paper-2);min-width:0;transition:border-color var(--dur),box-shadow var(--dur)}.file-tile:hover{border-color:var(--marker);box-shadow:var(--shadow)}.file-tile.selected{border-color:var(--marker);background:var(--marker-tint)}.file-tile .tile-body{display:flex;flex-direction:column;align-items:center;gap:3px;width:100%;padding:10px 10px 12px;background:none;border:0;box-shadow:none;color:var(--ink);text-align:center;font-weight:400;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.tile-thumb{width:100%;height:96px;display:flex;align-items:center;justify-content:center;border-radius:var(--r-sm);overflow:hidden;margin-bottom:6px;background:var(--line-soft)}.tile-thumb img{width:100%;height:100%;object-fit:cover}.tile-check{position:absolute;top:6px;left:6px;z-index:1;opacity:0;transition:opacity var(--dur)}.file-tile:hover .tile-check,.file-tile.selected .tile-check,.tile-grid:has(.selected) .tile-check{opacity:1}@media (hover: none){.tile-check{opacity:1}}.tile-check input{width:18px;height:18px}.tile-menu{position:absolute;top:4px;right:4px;z-index:1}.tile-new{position:absolute;top:8px;left:8px;z-index:1;padding:1px 7px;border-radius:var(--r-pill);background:var(--coral);color:var(--on-accent);font-size:var(--fs-2xs);font-weight:700}.folder-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.crumbs{display:flex;align-items:center;gap:8px;min-width:0;font-size:var(--fs-lg)}.crumbs strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-btn{background:none;border:0;box-shadow:none;padding:0;color:var(--marker-deep);font-weight:600}.link-btn:hover{background:none;text-decoration:underline}.folder-note{margin:-4px 0 12px;font-size:var(--fs-sm)}.drop-zone{position:relative;min-height:160px;border-radius:var(--r)}.drop-zone.drop-over{outline:2px dashed var(--marker);outline-offset:4px;background:var(--marker-tint)}.drop-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--marker-deep);pointer-events:none}.upload-progress{display:flex;align-items:center;gap:12px;margin-bottom:12px;font-size:var(--fs-sm);color:var(--ink-soft)}.upload-progress .bar{flex:1;max-width:240px;height:6px;border-radius:3px;background:var(--line);overflow:hidden}.upload-progress .bar span{display:block;height:100%;background:var(--marker);transition:width var(--dur)}.selection-bar{position:sticky;bottom:12px;z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;padding:10px 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--paper-2);box-shadow:var(--shadow-lift)}.selection-bar strong{margin-right:auto}@media (max-width: 900px){.selection-bar{bottom:calc(var(--tabbar-h) + 10px)}}.access-row{padding:6px 0;border-bottom:1px solid var(--line-soft)}.check-line{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.check-line input{width:18px;height:18px}.folder-note,.sans{font-family:inherit}.help{min-height:100vh;display:flex;flex-direction:column;background:var(--paper)}.help-top{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:14px 24px;border-bottom:1px solid var(--line);background:var(--paper-2)}.help-brand-sub{font-weight:600;color:var(--ink-soft);margin-left:4px}.help-nav{display:flex;gap:4px;flex-wrap:wrap;flex:1}.help-nav a{padding:7px 12px;border-radius:var(--r-pill);color:var(--ink-soft);text-decoration:none;font-weight:600;font-size:var(--fs-md)}.help-nav a:hover{background:var(--line-soft);color:var(--ink)}.help-nav a.active{background:var(--marker-tint);color:var(--marker-deep)}.help-main{flex:1;width:100%;max-width:960px;margin:0 auto;padding:24px 20px 48px}.help-main section+section{margin-top:28px}.help-foot{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:16px 24px;border-top:1px solid var(--line);color:var(--ink-faint);font-size:var(--fs-sm)}@media (max-width: 600px){.help-top{padding:12px 16px;gap:10px}.help-nav{order:3;flex-basis:100%;overflow-x:auto;flex-wrap:nowrap}.help-nav a{flex:none}.help-actions{margin-left:auto}.help-main{padding:18px 16px 40px}}.help-hero{text-align:center;padding:18px 0 8px}.help-hero h1{margin:0 0 14px}.help-search{width:100%;max-width:560px;font-size:17px;padding:14px 18px;border-radius:var(--r-pill);box-shadow:var(--shadow)}.help-sections{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.help-section h2{margin:0 0 8px;font-size:17px}.help-list{display:flex;flex-direction:column}.help-link{display:flex;flex-direction:column;gap:1px;padding:8px 0;border-bottom:1px solid var(--line-soft);color:var(--ink);text-decoration:none}.help-link:last-child{border-bottom:0}.help-link:hover span{color:var(--marker-deep);text-decoration:underline}.help-link small{color:var(--ink-faint);font-size:var(--fs-xs)}.help-h2{font-size:var(--fs-xl);margin:0 0 12px}.faq details{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px 16px;margin-bottom:8px}.faq summary{cursor:pointer;font-weight:600;list-style:none}.faq summary::-webkit-details-marker{display:none}.faq summary:before{content:"+";display:inline-block;width:18px;color:var(--marker);font-weight:700}.faq details[open] summary:before{content:"−"}.faq p{margin:8px 0 0 18px;color:var(--ink-soft);line-height:1.5}.help-more{white-space:nowrap}.help-cta{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}.help-cta-card{display:flex;flex-direction:column;gap:4px;text-decoration:none;color:var(--ink);transition:border-color var(--dur),transform .15s}.help-cta-card:hover{border-color:var(--marker);transform:translateY(-1px)}.help-cta-card>span:first-child{font-size:26px}.help-crumbs{margin-bottom:12px;font-size:var(--fs-md)}.help-crumbs a{color:var(--marker-deep);text-decoration:none;font-weight:600}.help-article h1{margin:0 0 8px;font-size:26px}.help-article p,.help-article li{line-height:1.6}.help-summary{font-size:17px;color:var(--ink-soft)}.help-steps{padding-left:22px}.help-steps li{margin-bottom:8px}.help-tip{background:var(--marker-tint);border-radius:var(--r-sm);padding:10px 14px;color:var(--ink)}.help-warn{background:var(--amber-tint);border-radius:var(--r-sm);padding:10px 14px;color:var(--ink)}.help-article h2{font-size:19px;margin:24px 0 8px}.help-bullets{padding-left:22px}.help-bullets li{margin-bottom:6px}.help-vote{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:20px;padding-top:16px;border-top:1px solid var(--line-soft)}.help-form{max-width:640px}.help-form h1{margin-top:0}.help-form textarea{width:100%}.help-ticket-text,.help-reply p{white-space:pre-wrap;line-height:1.5}.help-reply{background:var(--marker-tint);border-radius:var(--r-sm);padding:10px 14px;margin-top:8px}.help-reply p{margin:4px 0 0}.help-similar{display:flex;flex-direction:column;gap:6px;padding:10px 12px;margin-bottom:12px;border-radius:var(--r-sm);background:var(--amber-tint)}.badge.ticket-new{background:var(--amber-tint);color:var(--amber)}.badge.ticket-in_progress{background:var(--line-soft);color:var(--ink-soft)}.badge.ticket-answered{background:var(--marker-tint);color:var(--marker-deep)}.badge.ticket-closed{background:var(--line-soft);color:var(--ink-faint)}.badge.idea-planned,.badge.idea-in_progress{background:var(--amber-tint);color:var(--amber)}.badge.idea-done{background:var(--marker-tint);color:var(--marker-deep)}.badge.idea-declined{background:var(--line-soft);color:var(--ink-faint)}.idea-row{display:flex;gap:14px;align-items:flex-start}.idea-vote{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;width:56px;height:60px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--paper-2);color:var(--ink);box-shadow:none;text-decoration:none;padding:0}.idea-vote:hover{border-color:var(--marker);background:var(--paper-2)}.idea-vote.on{border-color:var(--marker);background:var(--marker-tint);color:var(--marker-deep)}.idea-body{flex:1;min-width:0}.idea-body p{margin:6px 0;color:var(--ink-soft)}.idea-note{color:var(--marker-deep)!important;font-weight:600}.admin-ticket{display:block;width:100%;text-align:left;font-weight:400;color:var(--ink)}.avatar{display:inline-grid;place-items:center;flex:none;border-radius:50%;overflow:hidden;font-weight:700;line-height:1}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.sidebar .whoami{text-decoration:none;color:inherit;border-radius:var(--r-sm)}.sidebar .whoami:hover{background:var(--line-soft)}.name-link{color:inherit;text-decoration:none}.name-link:hover strong,.name-link:hover b{color:var(--marker-deep);text-decoration:underline}.person-line{display:inline-flex;align-items:center;gap:10px;min-width:0}.person-line>span{display:flex;flex-direction:column;min-width:0}.person-status{color:var(--ink-faint);font-size:var(--fs-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile{display:flex;flex-direction:column;gap:14px;max-width:820px}.profile .card h2{margin:0 0 10px;font-size:17px}.profile-head{padding:0;overflow:hidden}.profile-cover{width:100%}.profile-id{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap;padding:0 20px 18px;margin-top:-44px}.profile-id>.profile-names,.profile-id>.btn{margin-top:54px}.profile-ava{border:4px solid var(--paper-2);box-shadow:var(--shadow)}.profile-names{flex:1;min-width:200px;padding-bottom:2px}.profile-names h1{margin:0 0 4px;font-size:var(--fs-2xl);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.profile-meta{display:flex;flex-wrap:wrap;gap:4px 14px;color:var(--ink-soft);font-size:var(--fs-sm)}.profile-status{margin:8px 0 0;font-weight:600;color:var(--marker-deep)}.profile-about{white-space:pre-wrap;line-height:1.55;margin:0}.achievements{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.achievement{display:flex;flex-direction:column;gap:2px;padding:12px;border-radius:var(--r-sm);background:var(--line-soft)}.achievement .ach-icon{font-size:22px}.achievement b{font-size:var(--fs-xl)}.achievement.since b{font-size:15px}.achievement span:last-child{color:var(--ink-soft);font-size:var(--fs-sm)}.achievement.badge{background:var(--marker-tint);justify-content:center}.profile-edit-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:18px;align-items:start}.profile-form{display:flex;flex-direction:column;gap:14px}.profile-form h2{margin:0 0 10px;font-size:17px}.profile-form textarea{width:100%}.profile-preview{position:sticky;top:12px}.preview-label{margin-bottom:8px}@media (max-width: 1100px){.profile-edit-grid{grid-template-columns:1fr}.profile-preview{position:static}}.cover-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:8px;margin-top:14px}.cover-swatch{height:40px;border-radius:var(--r-sm);border:2px solid var(--line);padding:0;box-shadow:none}.cover-swatch.on{border-color:var(--marker);outline:2px solid var(--marker-tint)}.cover-swatch.own{background:var(--paper-2);color:var(--ink-soft);font-size:var(--fs-xs);font-weight:600}.email-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 14px;margin-bottom:16px;border-radius:var(--r);background:var(--amber-tint);color:var(--ink);font-size:var(--fs-md)}.email-banner .row{gap:6px}@media (max-width: 600px){.profile-id>.btn{margin-top:0}}button.link-reset{background:none;border:none;box-shadow:none;padding:0;color:inherit;font:inherit;font-weight:inherit;text-align:left;cursor:pointer;display:inline-flex}button.link-reset:hover{background:none}.person-link:hover .person-name{color:var(--marker-deep);text-decoration:underline}.person-link{min-width:0}.price-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:12px 0}.price-tile{background:var(--line-soft);border-radius:var(--r-sm);padding:10px 12px;display:flex;flex-direction:column;gap:2px}.price-tile b{font-size:var(--fs-xl)}.price-tile span{font-size:var(--fs-xs);color:var(--ink-soft)}.profile-video{display:inline-block;margin-top:8px;font-weight:600}.profile-meta .meta-item{display:inline-flex;align-items:center;gap:5px}.rec-page .rec-tabs{margin:8px 0 12px;flex-wrap:wrap}.rec-page .rec-meta{margin:8px 0 12px;gap:12px}.rec-player{display:flex;flex-direction:column;gap:12px}.rec-audio{width:100%}.rec-body{display:grid;gap:12px;grid-template-columns:minmax(0,3fr) minmax(280px,2fr)}.rec-board{position:relative;height:62vh;min-height:360px;padding:0;overflow:hidden}.rec-board-wait{position:absolute;top:12px;left:16px;z-index:2}.rec-transcript{display:flex;flex-direction:column;max-height:62vh;min-height:200px}.rec-transcript h3{margin:0}.rec-lines{list-style:none;margin:8px 0 0;padding:0;overflow-y:auto}.rec-lines li button{display:block;width:100%;text-align:left;background:none;border:0;color:inherit;padding:6px 8px;border-radius:var(--r-sm);cursor:pointer;font:inherit;line-height:1.4}.rec-lines li button:hover{background:var(--hover-tint)}.rec-lines li.on button{background:var(--active-tint)}.rec-lines .rec-time{font-family:var(--font-mono);font-size:var(--fs-xs);opacity:.6;margin-right:8px}.rec-lines strong{margin-right:6px}@media (max-width: 900px){.rec-body{grid-template-columns:1fr}.rec-board{height:50vh}.rec-transcript{max-height:none}}.celebrate-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;z-index:var(--z-modal);background:var(--scrim);animation:cel-fade var(--dur) var(--ease) both}.celebrate-fx{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.celebrate-pop{background:var(--paper-2);border-radius:20px;padding:30px 34px;text-align:center;max-width:340px;width:calc(100% - 40px);box-shadow:var(--shadow-lift);animation:cel-pop .45s cubic-bezier(.3,1.5,.5,1) both}.celebrate-pop h3{font-size:var(--fs-2xl);margin:14px 0 6px}.celebrate-pop p{margin:0 0 18px;color:var(--ink-soft);font-size:var(--fs-md)}@keyframes cel-fade{0%{opacity:0}}@keyframes cel-pop{0%{opacity:0;transform:scale(.8) translateY(20px)}}.cel-check{width:84px;height:84px}.cel-check circle{fill:var(--marker-hl);stroke:var(--marker);stroke-width:3;stroke-dasharray:252;stroke-dashoffset:252;animation:cel-draw .6s .1s var(--ease) forwards}.cel-check path{fill:none;stroke:var(--marker-deep);stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:50;stroke-dashoffset:50;animation:cel-draw .4s .55s var(--ease) forwards}@keyframes cel-draw{to{stroke-dashoffset:0}}.cel-star{width:96px;height:96px;transform:scale(0) rotate(-90deg);animation:cel-starin .8s .1s cubic-bezier(.3,1.6,.5,1) forwards}.cel-star path{animation:cel-glow 1.6s .9s ease-in-out infinite}@keyframes cel-starin{to{transform:none}}@keyframes cel-glow{50%{filter:drop-shadow(0 0 10px #f1b43a)}}.cel-grade{font:700 64px var(--font-display);display:flex;align-items:center;justify-content:center;gap:14px;height:90px;overflow:hidden}.cel-roll{display:inline-block;height:80px;overflow:hidden;line-height:80px}.cel-roll span{display:block;animation:cel-roll .8s .5s var(--ease) forwards}@keyframes cel-roll{to{transform:translateY(-80px)}}.cel-arrow{color:var(--marker);font-size:40px;opacity:0;transform:translateY(20px);animation:cel-up .6s .9s var(--ease) forwards}@keyframes cel-up{to{opacity:1;transform:none}}.cel-medal{width:120px;height:120px;margin:0 auto;border-radius:50%;display:grid;place-items:center;font:700 44px var(--font-display);color:var(--on-accent);position:relative;overflow:hidden;background:conic-gradient(from 0deg,#e9b949,#f7dc8a,#c97c1e,#f7dc8a,#e9b949);box-shadow:inset 0 0 0 6px #ffffff59,0 12px 30px -8px #c97c1eb3;transform:rotateY(90deg) scale(.5);animation:cel-flip 1s .1s cubic-bezier(.3,1.3,.5,1) forwards}.cel-medal:after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.7),transparent);transform:skew(-20deg);animation:cel-shine 1.1s 1.1s ease-out forwards}@keyframes cel-flip{to{transform:none}}@keyframes cel-shine{to{left:130%}}:root[data-season=halloween]{--paper: #f6ecd6;--paper-2: #fcf5e4;--ink: #2a1a33;--ink-soft: #55425e;--ink-faint: #75627c;--line: #e6d6b8;--line-soft: #efe2c8;--marker: #ff7a18;--marker-deep: #b84a00;--marker-tint: #fde6cf;--marker-hl: rgba(255, 122, 24, .25);--amber: #8f4fc4;--amber-tint: #eadcf6;--amber-text: #5a2a8a;--shadow: 0 1px 0 rgba(42, 26, 51, .05), 0 8px 24px -18px rgba(42, 26, 51, .32);--shadow-lift: 0 2px 0 rgba(42, 26, 51, .06), 0 18px 40px -22px rgba(74, 28, 110, .45);--scrim: rgba(30, 14, 44, .48);--surface-hi: #fffaf0;--inverse: #2a1a33;--on-inverse: #fff;--btn: #b84a00;--btn-hover: #9a3d00;--glass: rgba(246, 236, 214, .92);--grid-line: rgba(150, 110, 60, .16);--backdrop: rgba(30, 14, 44, .3);--hover-tint: rgba(255, 122, 24, .1);--active-tint: rgba(255, 122, 24, .2);--hw-purple: #6b2fa0;--hw-orange: #ff7a18;--hw-orange-deep: #e65c00;--hw-glow: rgba(255, 122, 24, .55);--hw-web-opacity: .35;--hw-web-filter: none}:root[data-season=halloween][data-theme=dark]{--paper: #120a1c;--paper-2: #1b1128;--ink: #f1e8f7;--ink-soft: #c9b9d6;--ink-faint: #a999b9;--line: #34224a;--line-soft: #271838;--marker: #ff7a18;--marker-deep: #ff9a4d;--marker-tint: #3a1f0d;--marker-hl: rgba(255, 122, 24, .28);--amber: #b57fe6;--amber-tint: #2d1b45;--amber-text: #d9bcf5;--shadow: 0 1px 0 rgba(0, 0, 0, .35), 0 8px 24px -18px rgba(0, 0, 0, .8);--shadow-lift: 0 2px 0 rgba(0, 0, 0, .4), 0 18px 40px -22px rgba(0, 0, 0, .9);--scrim: rgba(5, 0, 12, .68);--surface-hi: #241636;--inverse: #f1e8f7;--on-inverse: #2a1a33;--btn: #b84a00;--btn-hover: #c75300;--glass: rgba(18, 10, 28, .92);--grid-line: rgba(200, 150, 255, .05);--backdrop: rgba(0, 0, 0, .55);--hover-tint: rgba(255, 122, 24, .12);--active-tint: rgba(255, 122, 24, .22);--hw-purple: #9b5fd6;--hw-orange: #ff7a18;--hw-orange-deep: #e65c00;--hw-glow: rgba(255, 122, 24, .6);--hw-web-opacity: .2;--hw-web-filter: invert(1);color-scheme:dark}@media (prefers-color-scheme: dark){:root[data-season=halloween]:not([data-theme=light]){--paper: #120a1c;--paper-2: #1b1128;--ink: #f1e8f7;--ink-soft: #c9b9d6;--ink-faint: #a999b9;--line: #34224a;--line-soft: #271838;--marker: #ff7a18;--marker-deep: #ff9a4d;--marker-tint: #3a1f0d;--marker-hl: rgba(255, 122, 24, .28);--amber: #b57fe6;--amber-tint: #2d1b45;--amber-text: #d9bcf5;--shadow: 0 1px 0 rgba(0, 0, 0, .35), 0 8px 24px -18px rgba(0, 0, 0, .8);--shadow-lift: 0 2px 0 rgba(0, 0, 0, .4), 0 18px 40px -22px rgba(0, 0, 0, .9);--scrim: rgba(5, 0, 12, .68);--surface-hi: #241636;--inverse: #f1e8f7;--on-inverse: #2a1a33;--btn: #b84a00;--btn-hover: #c75300;--glass: rgba(18, 10, 28, .92);--grid-line: rgba(200, 150, 255, .05);--backdrop: rgba(0, 0, 0, .55);--hover-tint: rgba(255, 122, 24, .12);--active-tint: rgba(255, 122, 24, .22);--hw-purple: #9b5fd6;--hw-orange: #ff7a18;--hw-orange-deep: #e65c00;--hw-glow: rgba(255, 122, 24, .6);--hw-web-opacity: .2;--hw-web-filter: invert(1);color-scheme:dark}}:root[data-season=halloween] body{background-image:radial-gradient(ellipse 70% 40% at 15% 100%,rgba(107,47,160,.14),transparent 70%),radial-gradient(ellipse 60% 35% at 90% 100%,rgba(255,122,24,.08),transparent 70%),linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:auto,auto,26px 26px,26px 26px;background-position:0 0,0 0,-1px -1px,-1px -1px;background-attachment:fixed,fixed,scroll,scroll}:root[data-season=halloween] button:hover,:root[data-season=halloween] .btn:hover{box-shadow:0 0 0 1px var(--hw-orange-deep),0 4px 18px -4px var(--hw-glow)}:root[data-season=halloween] body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;pointer-events:none;opacity:var(--hw-web-opacity);filter:var(--hw-web-filter);background-repeat:no-repeat,no-repeat;background-position:left top,right top;background-size:150px 150px,150px 150px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none' stroke='%23888' stroke-width='1' stroke-linecap='round'%3E%3Cpath d='M0 0L120 0M0 0L112 42M0 0L88 88M0 0L42 112M0 0L0 120'/%3E%3Cpath d='M20 0Q18 14 0 20M40 0Q36 28 0 40M62 0Q55 45 0 62M86 0Q74 66 0 86M112 0Q92 90 0 112' stroke-width='0.8'/%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none' stroke='%23888' stroke-width='1' stroke-linecap='round'%3E%3Cg transform='matrix(-1 0 0 1 120 0)'%3E%3Cpath d='M0 0L120 0M0 0L112 42M0 0L88 88M0 0L42 112M0 0L0 120'/%3E%3Cpath d='M20 0Q18 14 0 20M40 0Q36 28 0 40M62 0Q55 45 0 62M86 0Q74 66 0 86M112 0Q92 90 0 112' stroke-width='0.8'/%3E%3C/g%3E%3C/svg%3E")}@keyframes hw-glow{0%,to{text-shadow:0 0 4px var(--hw-glow),0 0 12px rgba(255,122,24,.25);opacity:1}45%{text-shadow:0 0 8px var(--hw-glow),0 0 22px rgba(255,122,24,.5);opacity:1}52%{text-shadow:0 0 2px var(--hw-glow);opacity:.88}58%{text-shadow:0 0 9px var(--hw-glow),0 0 22px rgba(255,122,24,.5);opacity:1}}:root[data-season=halloween] .sidebar .brand,:root[data-season=halloween] .mk-brand,:root[data-season=halloween] .auth-card .brand,:root[data-season=halloween] .admin-nav .brand{animation:hw-glow 4s ease-in-out infinite}:root[data-season=halloween] .sidebar .brand .hl,:root[data-season=halloween] .mk-brand .hl,:root[data-season=halloween] .auth-card .brand .hl,:root[data-season=halloween] .admin-nav .brand .hl{background:linear-gradient(transparent 62%,#ff7a1866 62%)}@media (max-width: 600px){:root[data-season=halloween] body:before{background-size:80px 80px,80px 80px;opacity:calc(var(--hw-web-opacity) * .7)}}@media (prefers-reduced-motion: reduce){:root[data-season=halloween] .sidebar .brand,:root[data-season=halloween] .mk-brand,:root[data-season=halloween] .auth-card .brand,:root[data-season=halloween] .admin-nav .brand{animation:none}}
