:root{--surface: #ffffff;--surface-2: #f6f6fb;--surface-sunken: #eeeef6;--board-bg: #f3f3f8;--line: rgba(19, 20, 44, .08);--line-strong: rgba(19, 20, 44, .16);--ink: #14152b;--ink-2: #55566e;--ink-3: #6f7189;--accent: #4f46e5;--accent-hover: #4338ca;--accent-ink: #ffffff;--accent-soft: #eeefff;--accent-soft-2: #e0e2ff;--accent-line: rgba(79, 70, 229, .28);--ring: rgba(79, 70, 229, .32);--danger: #dc2626;--danger-soft: #fef2f2;--danger-line: rgba(220, 38, 38, .24);--danger-ink: #a51b1b;--warn: #d97706;--warn-soft: #fffaf0;--warn-line: rgba(217, 119, 6, .24);--warn-ink: #92400e;--ok: #0f9d63;--ok-soft: #ecfaf3;--ok-line: rgba(15, 157, 99, .24);--ok-ink: #0c6b45;--overlay: rgba(15, 16, 34, .44);--tooltip-bg: #1d1e34;--tooltip-ink: #ffffff;--on-color: #ffffff;--grad-brand: linear-gradient(135deg, #111827, #1f2937 55%, #111827);--grad-sheen: linear-gradient(180deg, rgba(255, 255, 255, .7), rgba(255, 255, 255, 0));--font-ui: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-display: "Plus Jakarta Sans", var(--font-ui);--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--radius-xs: 6px;--radius-sm: 8px;--radius: 12px;--radius-lg: 16px;--radius-xl: 22px;--radius-pill: 999px;--shadow-1: 0 1px 2px rgba(19, 20, 44, .06), 0 1px 3px -1px rgba(19, 20, 44, .06);--shadow-2: 0 1px 2px rgba(19, 20, 44, .05), 0 8px 20px -8px rgba(19, 20, 44, .16);--shadow-3: 0 2px 4px rgba(19, 20, 44, .06), 0 24px 48px -16px rgba(19, 20, 44, .28);--shadow-accent: 0 1px 2px rgba(31, 24, 120, .24), 0 8px 18px -8px rgba(79, 70, 229, .55);--hairline: inset 0 0 0 1px rgba(19, 20, 44, .07);--hairline-top: inset 0 1px 0 rgba(255, 255, 255, .6);--glass-strong: rgba(255, 255, 255, .9);--blur: saturate(1.7) blur(16px);--topbar-h: 54px;--safe-t: env(safe-area-inset-top);--safe-r: env(safe-area-inset-right);--safe-b: env(safe-area-inset-bottom);--safe-l: env(safe-area-inset-left);--edge-r: max(12px, var(--safe-r));--edge-b: max(12px, var(--safe-b));--edge-l: max(12px, var(--safe-l));color-scheme:light;--brand-mark-bg: #111827;--brand-mark-fg: #ffffff}html[data-theme=dark]{color-scheme:dark;--surface: #141416;--surface-2: #0c0c0e;--surface-sunken: #08080a;--board-bg: #0a0a0b;--line: rgba(255, 255, 255, .08);--line-strong: rgba(255, 255, 255, .16);--ink: #f4f4f5;--ink-2: #a1a1aa;--ink-3: #8b8b96;--accent: #818cf8;--accent-hover: #a5b4fc;--accent-ink: #0a0a0b;--accent-soft: rgba(129, 140, 248, .16);--accent-soft-2: rgba(129, 140, 248, .26);--accent-line: rgba(129, 140, 248, .38);--ring: rgba(165, 180, 252, .4);--danger: #f87171;--danger-soft: rgba(248, 113, 113, .14);--danger-line: rgba(248, 113, 113, .32);--danger-ink: #fecaca;--warn: #fbbf24;--warn-soft: rgba(251, 191, 36, .14);--warn-line: rgba(251, 191, 36, .3);--warn-ink: #fde68a;--ok: #34d399;--ok-soft: rgba(52, 211, 153, .14);--ok-line: rgba(52, 211, 153, .3);--ok-ink: #a7f3d0;--overlay: rgba(0, 0, 0, .62);--tooltip-bg: #27272a;--tooltip-ink: #fafafa;--on-color: #ffffff;--grad-brand: linear-gradient(135deg, #f4f4f5, #d4d4d8 55%, #f4f4f5);--grad-sheen: linear-gradient(180deg, rgba(255, 255, 255, .08), rgba(255, 255, 255, 0));--shadow-1: 0 1px 2px rgba(0, 0, 0, .45), 0 1px 3px -1px rgba(0, 0, 0, .4);--shadow-2: 0 1px 2px rgba(0, 0, 0, .4), 0 12px 28px -10px rgba(0, 0, 0, .65);--shadow-3: 0 2px 4px rgba(0, 0, 0, .45), 0 28px 56px -18px rgba(0, 0, 0, .75);--shadow-accent: 0 1px 2px rgba(0, 0, 0, .4), 0 10px 22px -8px rgba(129, 140, 248, .45);--hairline: inset 0 0 0 1px rgba(255, 255, 255, .08);--hairline-top: inset 0 1px 0 rgba(255, 255, 255, .1);--glass-strong: rgba(20, 20, 22, .88);--blur: saturate(1.35) blur(18px);--brand-mark-bg: #f4f4f5;--brand-mark-fg: #111827}*{box-sizing:border-box}html,body,#root{height:100%;height:100dvh;margin:0;overflow:hidden}body{font-family:var(--font-ui);font-size:13.5px;letter-spacing:-.005em;color:var(--ink);background:var(--board-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior:none;touch-action:manipulation;user-select:none}button{font:inherit;color:inherit;border:none;background:none;cursor:pointer}h1,h2,h3,h4,.font-display{font-family:var(--font-display);letter-spacing:-.02em}kbd{font-family:var(--font-ui);font-size:10.5px;font-weight:600;color:var(--ink-3);background:var(--surface-sunken);box-shadow:var(--hairline);border-radius:var(--radius-xs);padding:1.5px 5px;white-space:nowrap}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-clip:content-box;border:3px solid transparent;border-radius:var(--radius-pill);background-color:transparent}:hover::-webkit-scrollbar-thumb{background-color:var(--line-strong)}::-webkit-scrollbar-thumb:hover{background-color:var(--ink-3)}::-webkit-scrollbar-corner{background:transparent}::selection{background:var(--accent-soft-2);color:var(--ink)}.app{display:flex;flex-direction:column;height:100%}.app-loading{display:grid;place-items:center;height:100%;color:var(--ink-3)}.topbar{display:flex;align-items:center;gap:12px;height:calc(var(--topbar-h) + var(--safe-t));padding:var(--safe-t) var(--edge-r) 0 var(--edge-l);background:var(--surface);box-shadow:0 1px 0 var(--line),0 6px 16px -12px #13142c80;z-index:40;flex:0 0 auto}.topbar-left,.topbar-right{display:flex;align-items:center;gap:8px;flex:1 1 0}.topbar-right{justify-content:flex-end}.topbar-center{display:flex;align-items:center;gap:2px}.brand{display:flex;align-items:center;gap:8px;padding-right:4px}.brand-mark{flex:0 0 auto;width:26px;height:26px;display:block;border-radius:9px;box-shadow:0 2px 8px -2px #6366f199}.brand-wordmark{display:inline-flex;align-items:baseline;gap:5px;line-height:1}.brand-name{font-family:var(--font-display);font-size:15px;font-weight:700;letter-spacing:-.03em}.brand-product{font-family:var(--font-display);font-size:13px;font-weight:600;letter-spacing:-.02em;color:var(--ink-3)}.board-name,.board-name-input{font:inherit;font-weight:600;padding:6px 10px;border-radius:var(--radius-sm);max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-name:hover{background:var(--surface-sunken)}.board-name-input{border:1px solid var(--accent);background:var(--surface);outline:none;box-shadow:0 0 0 3px var(--ring)}.conn-badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--ink-2);padding:3.5px 9px;border-radius:var(--radius-pill);background:var(--surface-sunken);box-shadow:var(--hairline)}.role-badge{font-size:11px;font-weight:600;padding:3.5px 9px;border-radius:var(--radius-pill);background:var(--surface-sunken);box-shadow:var(--hairline);color:var(--ink-2);white-space:nowrap}.role-badge.role-viewer{background:color-mix(in srgb,var(--ink-3) 18%,transparent)}.role-badge.role-commenter{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent)}.conn-dot{width:6px;height:6px;border-radius:50%;background:var(--ink-3)}.conn-connected .conn-dot{background:var(--ok)}.conn-connecting .conn-dot{background:var(--warn);animation:pulse 1.2s ease-in-out infinite}.conn-disconnected .conn-dot,.conn-offline .conn-dot{background:var(--danger)}@keyframes pulse{50%{opacity:.3}}.presence-stack{display:flex;align-items:center;padding-right:4px}.avatar{width:27px;height:27px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:700;color:var(--on-color);border:2px solid var(--surface);box-shadow:var(--shadow-1);margin-left:-7px;letter-spacing:.02em}.avatar:first-child{margin-left:0}.avatar-more{background:var(--ink-3)}.primary-btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-ink);font-weight:600;letter-spacing:-.01em;box-shadow:var(--shadow-accent),inset 0 1px #ffffff2e}.primary-btn:hover:not(:disabled){background:var(--accent-hover)}.primary-btn:disabled{opacity:.45;cursor:default;box-shadow:none}.btn-label{font-weight:550}.board-area{position:relative;flex:1 1 auto;min-height:0;overflow:hidden}.board-canvas-host{position:absolute;inset:0}.board-canvas{display:block;touch-action:none}.toolbar{position:absolute;left:var(--edge-l);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:2px;padding:6px;background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-radius:var(--radius-xl);box-shadow:var(--shadow-2),var(--hairline),var(--hairline-top);z-index:30}.tool-btn{position:relative;width:38px;height:38px;display:grid;place-items:center;border-radius:var(--radius-sm);color:var(--ink-2)}.tool-btn:hover{background:var(--surface-sunken);color:var(--ink)}.tool-btn.is-active{color:var(--accent)}.toolbar-sep{height:1px;margin:4px 6px;background:var(--line)}.toolbar-shape{position:relative}.tool-caret{position:absolute;right:1px;bottom:1px;width:14px;height:14px;display:grid;place-items:center;color:var(--ink-3);border-radius:3px}.tool-caret:hover{color:var(--ink);background:var(--line)}.shape-picker{position:absolute;left:calc(100% + 10px);top:-6px;display:grid;grid-template-columns:repeat(6,34px);gap:2px;padding:8px;background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-radius:var(--radius-lg);box-shadow:var(--shadow-3),var(--hairline),var(--hairline-top)}.shape-picker-item{width:34px;height:34px;display:grid;place-items:center;border-radius:var(--radius-sm);color:var(--ink-2)}.shape-picker-item:hover{background:var(--surface-sunken);color:var(--ink)}.shape-picker-item.is-active{background:var(--accent-soft);color:var(--accent)}.style-panel{position:absolute;left:50%;top:12px;transform:translate(-50%);display:flex;align-items:center;gap:4px;padding:6px 7px;background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-radius:var(--radius-lg);box-shadow:var(--shadow-2),var(--hairline),var(--hairline-top);z-index:32;max-width:calc(100% - 140px);overflow-x:auto;scrollbar-width:thin}.panel-group{display:flex;align-items:center;gap:3px}.panel-divider{width:1px;align-self:stretch;min-height:22px;background:var(--line);margin:0 3px}.popover-stack .panel-divider{width:auto;height:1px;min-height:0;margin:4px 0}.icon-btn{width:30px;height:30px;display:grid;place-items:center;border-radius:var(--radius-sm);color:var(--ink-2)}.icon-btn:hover:not(:disabled){background:var(--surface-sunken);color:var(--ink)}.icon-btn.is-active{background:var(--accent-soft);color:var(--accent)}.icon-btn:disabled{opacity:.35;cursor:default}.icon-row{display:flex;gap:2px}.segmented{display:inline-flex;padding:2px;gap:2px;background:var(--surface-sunken);border-radius:var(--radius-sm)}.segmented button{min-width:28px;height:24px;padding:0 8px;display:grid;place-items:center;border-radius:4px;font-size:11.5px;font-weight:550;color:var(--ink-2)}.segmented button:hover{color:var(--ink)}.segmented button.is-active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}.popover-host{position:relative}.popover-trigger{display:inline-flex;align-items:center;gap:3px;height:30px;padding:0 6px;border-radius:var(--radius-sm);color:var(--ink-2)}.popover-trigger:hover,.popover-trigger.is-open{background:var(--surface-sunken);color:var(--ink)}.popover{position:fixed;min-width:min(180px,calc(100vw - 16px));max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);overflow-y:auto;padding:8px;background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-radius:var(--radius-lg);box-shadow:var(--shadow-3),var(--hairline),var(--hairline-top);z-index:50}.popover-stack{display:flex;flex-direction:column;gap:6px}.popover-label{font-size:10.5px;font-weight:650;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3)}.color-grid{display:grid;grid-template-columns:repeat(6,26px);gap:4px}.color-grid button{width:26px;height:26px;display:grid;place-items:center;border-radius:var(--radius-sm)}.color-grid button:hover{background:var(--surface-sunken)}.swatch{width:18px;height:18px;border-radius:6px;border:1px solid var(--line-strong);display:block}.swatch.is-active{outline:2px solid var(--accent);outline-offset:1.5px}.swatch.is-transparent{background:linear-gradient(45deg,var(--line) 25%,transparent 25%,transparent 75%,var(--line) 75%) 0 0 / 8px 8px,linear-gradient(45deg,var(--line) 25%,transparent 25%,transparent 75%,var(--line) 75%) 4px 4px / 8px 8px,var(--surface)}.stroke-preview{width:18px;height:18px;border-radius:5px;border:3px solid var(--ink);display:block}.font-label{min-width:20px;font-size:14px;font-weight:600;line-height:1}.size-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:3px}.size-grid button{height:26px;border-radius:var(--radius-sm);font-size:11.5px;font-weight:550;color:var(--ink-2);background:var(--surface-sunken)}.size-grid button:hover{color:var(--ink)}.size-grid button.is-active{background:var(--accent);color:var(--accent-ink)}.head-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:3px}.head-grid button{height:28px;display:grid;place-items:center;border-radius:var(--radius-sm);color:var(--ink-2);background:var(--surface-sunken)}.head-grid button.is-active{background:var(--accent-soft);color:var(--accent)}.stepper{display:inline-flex;align-items:center;gap:1px;height:28px;padding:0 2px;border-radius:var(--radius-sm);background:var(--surface-sunken)}.stepper button{width:22px;height:24px;display:grid;place-items:center;border-radius:4px;color:var(--ink-2)}.stepper button:hover{background:var(--line);color:var(--ink)}.stepper input{width:38px;height:24px;border:none;background:none;text-align:center;font:inherit;font-weight:550;color:var(--ink);outline:none;-moz-appearance:textfield}.stepper input::-webkit-outer-spin-button,.stepper input::-webkit-inner-spin-button{appearance:none;margin:0}.stepper-suffix{font-size:10.5px;color:var(--ink-3);padding-right:2px}.slider{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--ink-2)}.slider input{flex:1;accent-color:var(--accent)}.checkbox{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink-2);cursor:pointer}.checkbox input{accent-color:var(--accent)}.menu-item{display:flex;align-items:center;gap:8px;width:100%;min-height:30px;padding:0 8px;border-radius:var(--radius-sm);color:var(--ink);text-align:left;font-size:12.5px}.menu-item:hover:not(:disabled){background:var(--surface-sunken)}.menu-item:disabled{opacity:.4;cursor:default}.menu-item kbd{margin-left:auto}.share-popover{width:280px}.share-error{padding:7px 9px;border-radius:var(--radius-sm);background:var(--danger-soft);box-shadow:inset 0 0 0 1px var(--danger-line);color:var(--danger-ink);font-size:12px;line-height:1.35}.share-link-item{height:auto;padding:7px 8px;align-items:flex-start}.share-link-text{display:flex;flex-direction:column;gap:1px;text-align:left}.share-link-text strong{font-size:12.5px;font-weight:600}.share-link-text small{font-size:11px;color:var(--ink-3);line-height:1.3}.menu-label{flex:1}.menu-spacer{width:16px}.context-menu{position:fixed;min-width:218px;padding:6px;background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-radius:var(--radius-lg);box-shadow:var(--shadow-3),var(--hairline),var(--hairline-top);z-index:60}.context-group+.context-group{border-top:1px solid var(--line);margin-top:4px;padding-top:4px}.zoom-controls{position:absolute;right:var(--edge-r);bottom:var(--edge-b);display:flex;align-items:center;gap:6px;z-index:30}.zoom-group,.zoom-controls>.zoom-btn{display:flex;align-items:center;background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-radius:var(--radius-pill);box-shadow:var(--shadow-2),var(--hairline),var(--hairline-top);padding:3px}.zoom-btn{width:28px;height:28px;display:grid;place-items:center;border-radius:var(--radius-pill);color:var(--ink-2)}.zoom-btn:hover:not(:disabled){background:var(--surface-sunken);color:var(--ink)}.zoom-btn:disabled{opacity:.35;cursor:default}.zoom-value{min-width:44px;text-align:center;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink)}.minimap{position:absolute;right:var(--edge-r);bottom:calc(var(--edge-b) + 46px);padding:5px;background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-radius:var(--radius-lg);box-shadow:var(--shadow-2),var(--hairline),var(--hairline-top);z-index:29;line-height:0}.minimap canvas{border-radius:var(--radius);background:var(--surface-2);cursor:pointer}.text-editor-layer{position:absolute;inset:0;pointer-events:none;z-index:25}.rich-toolbar{position:absolute;display:flex;gap:1px;padding:4px;background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-radius:var(--radius);box-shadow:var(--shadow-2),var(--hairline),var(--hairline-top);pointer-events:auto;transform:translateY(-2px)}.rich-toolbar button{width:24px;height:24px;display:grid;place-items:center;border-radius:5px;color:var(--ink-2)}.rich-toolbar button:hover{background:var(--surface-sunken);color:var(--ink)}.text-editor{position:absolute;pointer-events:auto;margin:0;padding:0;border:none;outline:none;resize:none;overflow:hidden;background:transparent;white-space:pre-wrap;overflow-wrap:break-word;user-select:text}.embed-layer{position:absolute;inset:0;pointer-events:none;z-index:20}.embed-frame{position:absolute;border-radius:8px;overflow:hidden;background:#12151b;box-shadow:var(--shadow-1)}.embed-frame.is-active{pointer-events:auto;outline:2px solid var(--accent);outline-offset:1px}.embed-frame iframe{width:100%;height:100%;border:none;display:block}.embed-shield{position:absolute;inset:0}.comments-layer{position:absolute;inset:0;pointer-events:none;z-index:26}.comment-anchor{position:absolute;pointer-events:auto}.comment-pin{width:26px;height:26px;transform:translate(-50%,-100%);display:grid;place-items:center;border-radius:50% 50% 50% 4px;background:var(--surface);color:var(--danger);font-size:11px;font-weight:700;border:1.5px solid var(--danger);box-shadow:var(--shadow-2)}.comment-pin.is-resolved{color:var(--ok);border-color:var(--ok);opacity:.7}.comment-thread{position:absolute;left:18px;top:0;width:268px;padding:12px;background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-radius:var(--radius-lg);box-shadow:var(--shadow-3),var(--hairline),var(--hairline-top)}.comment-thread header{display:flex;align-items:center;justify-content:space-between;font-weight:650;color:var(--ink-2);margin-bottom:8px}.comment-thread-actions{display:flex;gap:2px}.comment-thread-actions button{width:24px;height:24px;display:grid;place-items:center;border-radius:4px;color:var(--ink-3)}.comment-thread-actions button:hover{background:var(--surface-sunken);color:var(--ink)}.comment-messages{max-height:220px;overflow-y:auto;display:flex;flex-direction:column;gap:10px;margin-bottom:8px}.comment-messages article strong{font-size:12px}.comment-messages article time{font-size:10.5px;color:var(--ink-3);margin-left:6px}.comment-messages article p{margin:3px 0 0;font-size:12.5px;color:var(--ink);white-space:pre-wrap;user-select:text}.comment-empty{margin:0;color:var(--ink-3);font-size:12px}.comment-thread form{display:flex;flex-direction:column;gap:6px}.comment-thread textarea{font:inherit;min-height:56px;padding:7px 8px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);resize:vertical;outline:none;user-select:text}.comment-thread textarea:focus{border-color:var(--accent)}.empty-state{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;color:var(--ink-3);pointer-events:none;max-width:460px}.empty-state h1{margin:0 0 10px;font-size:20px;font-weight:650;color:var(--ink-2)}.empty-state ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px;font-size:12.5px}.history-panel{width:300px;align-items:stretch}.history-list{display:flex;flex-direction:column;gap:2px;max-height:320px;overflow-y:auto}.history-row{display:flex;align-items:center;gap:6px;padding:6px 4px;border-radius:var(--radius-sm)}.history-row:hover{background:var(--surface-sunken)}.history-row-main{flex:1;display:flex;flex-direction:column;gap:1px;min-width:0}.history-row-label{font-size:12.5px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-row-meta{font-size:10.5px;color:var(--ink-2)}.history-row-actions{display:flex;gap:2px}.history-confirm{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink-2)}.layers-panel{width:280px;align-items:stretch}.layers-search{display:flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink-2)}.layers-search input{flex:1;border:none;outline:none;background:none;font:inherit;font-size:12.5px;color:var(--ink)}.layers-list{display:flex;flex-direction:column;gap:1px;max-height:320px;overflow-y:auto}.layer-row{display:flex;align-items:center;gap:2px;border-radius:var(--radius-sm)}.layer-row:hover{background:var(--surface-sunken)}.layer-row.is-hidden{opacity:.5}.layer-row-main{flex:1;display:flex;align-items:center;gap:6px;min-width:0;padding:6px 4px;color:var(--ink-2)}.layer-row-label{font-size:12.5px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-row-tags{flex-shrink:0;font-size:10.5px;color:var(--accent)}.layer-row-btn{width:26px;height:26px;display:grid;place-items:center;border-radius:var(--radius-sm);color:var(--ink-3, var(--ink-2))}.layer-row-btn:hover{background:var(--surface-sunken);color:var(--ink)}.tag-editor{padding:0 2px}.tag-input{width:100%;font:inherit;font-size:12.5px;padding:5px 8px;border:1px solid var(--line);border-radius:var(--radius-sm);outline:none;background:var(--surface);color:var(--ink)}.tag-input:focus{border-color:var(--accent)}.timer-chip{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;padding:1px 6px;border-radius:999px;background:var(--surface-sunken)}.timer-chip.is-done{background:var(--danger-soft);color:var(--danger-ink)}.timer-panel{width:268px}.timer-display{font-size:36px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.03em;text-align:center;padding:8px 0 4px;line-height:1}.timer-display.is-done{color:var(--danger)}.timer-actions{justify-content:center;gap:6px}.timer-duration-card{display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:var(--radius);background:linear-gradient(180deg,rgba(255,255,255,.72),transparent 48%),var(--surface-sunken);border:1px solid var(--line);box-shadow:inset 0 1px #ffffff8c}.timer-duration-card[aria-disabled=true]{opacity:.55}.timer-duration-row{display:flex;align-items:stretch;justify-content:center;gap:8px}.timer-duration-field{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0;flex:1}.timer-duration-input{width:100%;height:44px;box-sizing:border-box;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font:inherit;font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em;text-align:center;outline:none;box-shadow:var(--shadow-1);transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.timer-duration-input::-webkit-outer-spin-button,.timer-duration-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.timer-duration-input[type=number]{-moz-appearance:textfield;appearance:textfield}.timer-duration-input:hover:not(:disabled){border-color:var(--accent-line)}.timer-duration-input:focus-visible{border-color:var(--accent);box-shadow:var(--shadow-1),0 0 0 3px var(--accent-soft)}.timer-duration-input:disabled{cursor:default;opacity:.85}.timer-duration-unit{font-size:10.5px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}.timer-duration-sep{align-self:center;margin-top:-14px;font-size:22px;font-weight:700;color:var(--ink-3);font-variant-numeric:tabular-nums}.timer-preset-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.timer-preset{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-height:44px;padding:6px 2px;border-radius:var(--radius-sm);border:1px solid transparent;background:var(--surface);color:var(--ink-2);box-shadow:var(--shadow-1);cursor:pointer;transition:background-color .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease,transform .16s ease}.timer-preset:hover:not(:disabled){color:var(--ink);border-color:var(--accent-line);background:var(--accent-soft)}.timer-preset:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--shadow-1),0 0 0 3px var(--accent-soft)}.timer-preset.is-active{color:var(--accent-ink);background:var(--accent);border-color:var(--accent);box-shadow:var(--shadow-accent),inset 0 1px #ffffff2e}.timer-preset.is-active .timer-preset-unit{color:#ffffffc7}.timer-preset:disabled{cursor:default;opacity:.7}.timer-preset:active:not(:disabled){transform:translateY(1px)}.timer-preset-value{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}.timer-preset-unit{font-size:9.5px;font-weight:650;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-3)}.vote-active-dot{position:absolute;top:4px;right:4px;width:7px;height:7px;border-radius:50%;background:var(--danger)}.popover-trigger{position:relative}.voting-panel{width:260px}.popover-hint{font-size:11.5px;color:var(--ink-2);line-height:1.4;margin:0}.voting-status{display:flex;flex-direction:column;gap:4px;font-size:12.5px}.voting-results{display:flex;flex-direction:column;gap:4px;max-height:180px;overflow-y:auto}.voting-result-row{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:3px 4px}.voting-result-count{min-width:20px;text-align:center;font-weight:700;color:var(--accent);background:var(--accent-soft);border-radius:6px;padding:1px 4px}.voting-result-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vote-layer{position:absolute;inset:0;pointer-events:none;z-index:27}.vote-badge{position:absolute;transform:translate(-40%,-50%);display:flex;align-items:center;gap:3px;pointer-events:auto}.vote-total{min-width:18px;height:18px;padding:0 4px;display:grid;place-items:center;font-size:10.5px;font-weight:700;color:var(--accent-ink);background:var(--accent);border:1.5px solid var(--surface);border-radius:var(--radius-pill);box-shadow:var(--shadow-1)}.vote-controls{display:flex;align-items:center;gap:2px;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:1px 2px;box-shadow:var(--shadow-1)}.vote-controls button{width:18px;height:18px;display:grid;place-items:center;border-radius:50%;font-size:12px;line-height:1;color:var(--ink-2)}.vote-controls button:hover:not(:disabled){background:var(--surface-sunken);color:var(--ink)}.vote-controls button:disabled{opacity:.35}.vote-mine{min-width:14px;text-align:center;font-size:10.5px;font-weight:700;color:var(--ink-2)}.template-gallery{display:flex;flex-direction:column;width:min(640px,100%);max-height:min(80dvh,620px);background:var(--surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-3),var(--hairline);overflow:hidden}.template-gallery-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line)}.template-gallery-head h2{font-size:16px;font-weight:700;margin:0}.template-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:16px;overflow-y:auto}.template-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:14px;text-align:left;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.template-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-2);border-color:var(--accent-line)}.template-card-preview{width:100%;height:76px;border-radius:var(--radius);display:grid;place-items:center;color:var(--accent-ink);box-shadow:inset 0 1px #ffffff47}.template-card-name{font-size:14px;font-weight:650;color:var(--ink)}.template-card-desc{font-size:12px;color:var(--ink-2);line-height:1.4}.presentation-bar{position:absolute;left:50%;top:12px;transform:translate(-50%);display:flex;align-items:center;gap:2px;padding:6px;background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-radius:var(--radius-pill);box-shadow:var(--shadow-3),var(--hairline),var(--hairline-top);z-index:40}.presentation-counter{display:flex;flex-direction:column;align-items:center;padding:0 12px;min-width:120px;font-size:12.5px;font-weight:650;line-height:1.3;color:var(--ink)}.presentation-counter-n{font-size:10.5px;font-weight:500;color:var(--ink-2)}.icon-flip{transform:scaleX(-1)}.app.is-presenting .board-area{background:#000}.call-window,.call-pill,.chat-window,.screenshare-window,.call-expanded-panel{--call-bg: rgba(20, 21, 41, .9);--call-fill: rgba(255, 255, 255, .08);--call-fill-hover: rgba(255, 255, 255, .14);--call-ink: #f4f4f9;--call-ink-2: rgba(244, 244, 249, .62);--call-line: rgba(255, 255, 255, .1);--call-live: #22c55e;color:var(--call-ink);background:var(--call-bg);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);box-shadow:var(--shadow-3),inset 0 0 0 1px var(--call-line)}.call-window,.call-pill,.screenshare-window{position:fixed;border-radius:var(--radius-lg);z-index:46}.call-window{display:flex;flex-direction:column;overflow:hidden}.call-window.is-dragging,.call-pill.is-dragging,.screenshare-window.is-dragging{opacity:.94}.call-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 8px 8px 12px;border-bottom:1px solid var(--call-line);cursor:grab;touch-action:none;user-select:none}.call-bar:active{cursor:grabbing}.call-bar-title{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;white-space:nowrap}.call-bar-actions{display:flex;gap:2px}.call-bar-btn{width:26px;height:26px;display:grid;place-items:center;border-radius:var(--radius-xs);color:var(--call-ink-2)}.call-bar-btn:hover{background:var(--call-fill);color:var(--call-ink)}.call-live-dot{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:var(--call-ink-2)}.call-live-dot.is-live{background:var(--call-live, #22c55e);animation:call-live-pulse 2s var(--ease-out) infinite}@keyframes call-live-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--call-live, #22c55e) 55%,transparent)}50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--call-live, #22c55e) 0%,transparent)}}.call-grid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(var(--cols, 2),minmax(0,1fr));align-content:start;gap:6px;padding:8px;overflow-y:auto}.call-tile{position:relative;display:grid;place-items:center;aspect-ratio:16 / 10;border-radius:var(--radius);overflow:hidden;cursor:pointer;background:radial-gradient(120% 120% at 50% 0%,#ffffff1a,#ffffff05);box-shadow:inset 0 0 0 1px var(--call-line);transition:box-shadow var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.call-tile:hover{transform:translateY(-1px)}.call-tile.is-speaking{box-shadow:inset 0 0 0 2px var(--call-live),0 0 16px -4px color-mix(in srgb,var(--call-live) 70%,transparent)}.call-tile-stage{flex:1;min-height:0;width:100%;aspect-ratio:auto}.call-tile-strip{flex:0 0 auto;width:148px}.call-tile-video{width:100%;height:100%;object-fit:cover;background:#05060f}.call-tile-stage .call-tile-video{object-fit:contain}.call-tile-video.is-mirrored,.call-chip-video.is-mirrored{transform:scaleX(-1)}.call-tile-disc{display:grid;place-items:center;width:clamp(38px,34%,76px);aspect-ratio:1;border-radius:50%;color:var(--on-color);font-size:15px;font-weight:700}.call-tile-label{position:absolute;left:6px;right:6px;bottom:6px;display:flex;align-items:center;gap:5px;pointer-events:none}.call-tile-mod{margin-left:auto;pointer-events:auto}.call-tile-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:2px 7px;border-radius:var(--radius-pill);background:#0809149e;font-size:11px;font-weight:500}.call-tile-muted,.call-chip-muted{display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:var(--danger);color:#fff}.call-tile-muted{width:18px;height:18px}.call-expanded{position:fixed;inset:0;z-index:70;display:grid;place-items:center;padding:clamp(8px,2vw,28px);background:#08091499;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.call-expanded-panel{width:min(1180px,100%);height:min(760px,100%);display:flex;flex-direction:column;border-radius:var(--radius-xl);overflow:hidden}.call-stage{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;padding:10px}.call-strip{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}.call-controls{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px;border-top:1px solid var(--call-line)}.call-controls.is-compact{padding:8px;gap:6px}.call-btn{width:40px;height:40px;display:grid;place-items:center;border-radius:50%;background:var(--call-fill);color:var(--call-ink);transition:background-color var(--dur-instant) var(--ease-out),color var(--dur-instant) var(--ease-out),transform var(--dur-instant) var(--ease-out)}.call-controls.is-compact .call-btn{width:34px;height:34px}.call-btn.is-small{width:28px;height:28px}.call-btn:hover{background:var(--call-fill-hover);transform:translateY(-1px)}.call-btn.is-on{background:#fff;color:#14152b}.call-btn.is-off,.call-btn.is-leave{background:var(--danger);color:#fff}.call-btn.is-sharing{background:var(--call-live);color:#04120a}.call-btn.is-leave:hover{background:#b91c1c}.call-btn.is-leave svg{transform:rotate(135deg)}.call-unmute{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:var(--radius-pill);background:var(--warn);color:#fff;font-size:12px;font-weight:600}.call-error{padding:6px 10px;font-size:11px;color:#ffd9d9;background:#dc26263d}.call-pill{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--radius-pill)}.call-pill-grip{display:flex;align-items:center;gap:7px;padding-left:4px;font-size:11.5px;font-weight:600;white-space:nowrap;cursor:grab;touch-action:none;user-select:none}.call-pill-grip:active{cursor:grabbing}.call-pill.is-error{max-width:min(420px,calc(100vw - 24px));box-shadow:var(--shadow-3),inset 0 0 0 1px var(--danger-line)}.call-error-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:500}.call-pill-actions{display:flex;align-items:center;gap:4px}.call-chips{display:flex;align-items:center}.call-chip{position:relative;width:26px;height:26px;margin-left:-6px;flex:0 0 auto;border-radius:50%;overflow:hidden;box-shadow:0 0 0 2px var(--call-bg)}.call-chip:first-child{margin-left:0}.call-chip.is-speaking{box-shadow:0 0 0 2px var(--call-live)}.call-chip-video{width:100%;height:100%;object-fit:cover}.call-chip-disc,.call-chip-more{display:grid;place-items:center;width:100%;height:100%;color:var(--on-color);font-size:10px;font-weight:700}.call-chip-more{background:var(--call-fill)}.call-chip-muted{position:absolute;right:-1px;bottom:-1px;width:13px;height:13px}.call-audio-sinks{position:fixed;width:0;height:0;overflow:hidden}.window-resize{position:absolute;right:0;bottom:0;width:18px;height:18px;cursor:nwse-resize;touch-action:none}.window-resize:after{content:"";position:absolute;right:4px;bottom:4px;width:8px;height:8px;border-right:2px solid var(--call-ink-2);border-bottom:2px solid var(--call-ink-2);border-radius:0 0 4px}.incoming-call-banner{position:absolute;left:50%;top:12px;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:7px 8px 7px 14px;background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-radius:var(--radius-pill);box-shadow:var(--shadow-3),var(--hairline),var(--hairline-top);font-size:12.5px;color:var(--ink-2);z-index:40}.incoming-call-banner strong{color:var(--ink)}.incoming-call-text{white-space:nowrap}.incoming-call-count{color:var(--ink-3)}.incoming-call-banner .primary-btn{height:28px;padding:0 12px;font-size:12px;gap:6px;display:inline-flex;align-items:center}.incoming-call-dot{--call-live: #22c55e;width:8px;height:8px;border-radius:50%;background:#22c55e;animation:call-live-pulse 1.6s var(--ease-out) infinite}.screenshare-window{display:flex;flex-direction:column;overflow:hidden;z-index:44}.screenshare-window.is-fullscreen{border-radius:0;background:#05060f}.screenshare-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 6px 6px 12px;font-size:12px;border-bottom:1px solid var(--call-line);cursor:grab;touch-action:none;user-select:none}.screenshare-bar:active{cursor:grabbing}.screenshare-title{display:flex;align-items:center;gap:7px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.screenshare-actions{display:flex;align-items:center;gap:4px;flex:0 0 auto}.screenshare-stop{height:26px;padding:0 10px;border-radius:var(--radius-pill);background:var(--danger);color:#fff;font-size:11.5px;font-weight:600}.screenshare-stop:hover{background:#b91c1c}.screenshare-body{flex:1;min-height:0;background:#05060f}.screenshare-video{display:block;width:100%;height:100%;object-fit:contain}.chat-window{position:fixed;z-index:47;display:flex;flex-direction:column;border-radius:var(--radius-lg);overflow:hidden}.chat-window.is-dragging{opacity:.94}.chat-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 7px 7px 11px;border-bottom:1px solid var(--call-line);font-size:12px;font-weight:600;cursor:grab;touch-action:none;user-select:none}.chat-bar:active{cursor:grabbing}.chat-bar-title{display:flex;align-items:center;gap:7px;white-space:nowrap}.chat-bar-actions{display:flex;gap:2px}.chat-log{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;margin:0;padding:10px;overflow-y:auto;list-style:none;overscroll-behavior:contain}.chat-msg.is-grouped{margin-top:-5px;position:relative}.chat-msg-grouped-mod{position:absolute;top:0;right:0;z-index:1}.chat-msg-head{display:flex;align-items:baseline;gap:6px;margin-bottom:2px}.chat-msg-author{font-size:12px;font-weight:650;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.chat-msg-time{margin-left:auto;flex:0 0 auto;font-size:10.5px;font-variant-numeric:tabular-nums;color:var(--call-ink-2)}.chat-mod-btn{flex:0 0 auto;width:22px;height:22px;display:grid;place-items:center;border-radius:6px;color:var(--call-ink-2);opacity:0}.chat-msg:hover .chat-mod-btn,.chat-mod-btn[aria-expanded=true]{opacity:1}.chat-mod-btn:hover{background:var(--call-fill);color:var(--call-ink)}.chat-msg-text{margin:0;font-size:12.5px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}.chat-msg-image-wrap{display:block;margin:4px 0 2px;max-width:100%;border-radius:8px;overflow:hidden;background:var(--call-fill)}.chat-msg-image{display:block;max-width:100%;max-height:220px;object-fit:contain;vertical-align:middle}.chat-msg-footer{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-top:4px;min-height:18px}.chat-reactions{display:flex;flex-wrap:wrap;gap:3px}.chat-reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border-radius:999px;background:var(--call-fill);font-size:12px;line-height:1.4;color:var(--call-ink)}.chat-reaction.is-mine{background:color-mix(in srgb,var(--accent) 18%,var(--call-fill));outline:1px solid color-mix(in srgb,var(--accent) 45%,transparent)}.chat-reaction-count{font-size:10.5px;font-variant-numeric:tabular-nums;color:var(--call-ink-2)}.chat-react-wrap{position:relative}.chat-react-btn{width:20px;height:20px;display:grid;place-items:center;border-radius:50%;font-size:12px;line-height:1;color:var(--call-ink-2);opacity:0}.chat-msg:hover .chat-react-btn,.chat-react-btn[aria-expanded=true]{opacity:1}.chat-react-btn:hover{background:var(--call-fill);color:var(--call-ink)}.chat-react-picker{position:absolute;bottom:calc(100% + 4px);left:0;z-index:5;display:flex;gap:2px;padding:4px;border-radius:10px;background:#fff;border:1px solid rgba(15,23,42,.12);box-shadow:0 8px 24px #0f172a24}.chat-react-picker button{width:28px;height:28px;display:grid;place-items:center;border-radius:8px;font-size:16px}.chat-react-picker button:hover{background:#0f172a0f}.chat-empty{flex:1;display:grid;place-content:center;justify-items:center;gap:8px;padding:20px;text-align:center;color:var(--call-ink-2)}.chat-empty p{margin:0;max-width:24ch;font-size:12px;line-height:1.5}.chat-composer{display:flex;flex-direction:column;gap:6px;padding:8px;border-top:1px solid var(--call-line)}.chat-composer-row{display:flex;align-items:flex-end;gap:6px}.chat-attach-preview{position:relative;align-self:flex-start;max-width:140px;border-radius:8px;overflow:hidden;background:var(--call-fill)}.chat-attach-preview img{display:block;max-width:140px;max-height:100px;object-fit:cover}.chat-attach-clear{position:absolute;top:4px;right:4px;width:22px;height:22px;display:grid;place-items:center;border-radius:50%;background:#0f172ab8;color:#fff}.chat-attach-btn{width:32px;height:32px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;color:var(--call-ink-2)}.chat-attach-btn:hover:not(:disabled){background:var(--call-fill);color:var(--call-ink)}.chat-input{flex:1;min-width:0;max-height:96px;padding:7px 10px;border:none;border-radius:var(--radius);background:var(--call-fill);color:var(--call-ink);font:inherit;font-size:12.5px;line-height:1.4;resize:none;field-sizing:content}.chat-input::placeholder{color:var(--call-ink-2)}.chat-input:focus{outline:2px solid color-mix(in srgb,var(--accent) 70%,white);outline-offset:1px}.chat-send{width:32px;height:32px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;background:var(--accent);color:#fff}.chat-send:disabled{background:var(--call-fill);color:var(--call-ink-2)}.chat-readonly{margin:0;padding:10px 12px;border-top:1px solid var(--call-line);font-size:11.5px;color:var(--call-ink-2)}.role-badge{flex:0 0 auto;padding:1px 6px;border-radius:var(--radius-pill);background:var(--call-fill);color:var(--call-ink);font-size:10px;font-weight:650;letter-spacing:.01em;white-space:nowrap}.role-badge.is-small{font-size:9.5px;padding:.5px 5px}.role-badge.is-teacher{background:#22c55e38;color:#b8f4cf}.role-badge.is-curator{background:#38bdf838;color:#bde8ff}.role-badge.is-student{background:#818cf83d;color:#d6dafe}.call-tile-label .role-badge{background:#0809149e}.call-btn{position:relative}.call-badge{position:absolute;top:-2px;right:-2px;min-width:16px;height:16px;padding:0 4px;display:grid;place-items:center;border-radius:var(--radius-pill);background:var(--danger);box-shadow:0 0 0 2px var(--call-bg);color:#fff;font-size:9.5px;font-weight:700;font-variant-numeric:tabular-nums}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.popout-body{margin:0;background:#14152b;overflow:hidden}.popout-root{width:100vw;height:100vh}.call-window.is-popped,.chat-window.is-popped{position:static;width:100%;height:100%;border-radius:0;box-shadow:none}.call-window.is-popped .call-bar,.chat-window.is-popped .chat-bar{cursor:default}.call-pill.is-detached .call-pill-status{color:var(--call-ink-2)}@media(max-width:720px){.call-expanded{padding:0}.call-expanded-panel{height:100%;border-radius:0}}@media(max-width:720px){.board-area{--dock-h: 50px;--zoom-h: 30px;--rung-2: calc(var(--edge-b) + var(--dock-h) + 8px);--rung-3: calc(var(--rung-2) + var(--zoom-h) + 8px)}.minimap,.brand-name,.btn-label,.conn-connected .conn-label{display:none}.board-name{max-width:34vw}.toolbar{left:50%;top:auto;bottom:var(--edge-b);transform:translate(-50%);flex-direction:row;max-width:calc(100% - var(--edge-l) - var(--edge-r));overflow-x:auto}.shape-picker{left:50%;top:auto;bottom:calc(100% + 10px);transform:translate(-50%);grid-template-columns:repeat(5,34px)}.zoom-controls{bottom:var(--rung-2)}.style-panel{max-width:calc(100% - var(--edge-l) - var(--edge-r))}.comment-thread{position:fixed;left:var(--edge-l);right:var(--edge-r);top:auto;bottom:var(--rung-3);width:auto;max-height:calc(100dvh - var(--rung-3) - var(--topbar-h) - var(--safe-t) - 12px);overflow-y:auto}.comment-messages{max-height:none}.template-gallery{max-height:88dvh;border-radius:var(--radius-lg) var(--radius-lg) 0 0;animation-name:sheet-in}.template-grid{grid-template-columns:1fr;padding-bottom:max(16px,var(--safe-b))}}.mod-menu{position:relative}.mod-menu-panel{--mod-ink: #f4f4f9;--mod-fill: rgba(255, 255, 255, .1);--mod-line: rgba(255, 255, 255, .12);z-index:80;min-width:188px;padding:4px;border-radius:var(--radius);color:var(--mod-ink);background:#141529f5;box-shadow:var(--shadow-3),inset 0 0 0 1px var(--mod-line);display:flex;flex-direction:column;gap:1px}.mod-menu-panel button{padding:7px 10px;border-radius:var(--radius-xs);text-align:left;font-size:12px;color:var(--mod-ink);background:transparent}.mod-menu-panel button:hover{background:var(--mod-fill)}.mod-menu-panel button.is-danger{color:#ffb4b4}.mod-menu-panel hr{margin:3px 4px;border:none;border-top:1px solid var(--mod-line)}:root{--dur-instant: .12s;--dur-fast: .18s;--dur-normal: .26s;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--ease-spring: cubic-bezier(.34, 1.4, .64, 1)}:where(button,input,textarea,select,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}:where(input:not([type=checkbox]):not([type=radio]),textarea,select):focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}.board-canvas:focus-visible{outline:none}.tool-btn,.icon-btn,.zoom-btn,.popover-trigger,.menu-item,.primary-btn,.segmented button,.shape-picker-item,.color-grid button,.size-grid button,.head-grid button,.avatar-btn{transition:background-color var(--dur-instant) var(--ease-out),color var(--dur-instant) var(--ease-out),transform var(--dur-instant) var(--ease-out),box-shadow var(--dur-instant) var(--ease-out),opacity var(--dur-instant) var(--ease-out)}.tool-btn:active:not(:disabled),.icon-btn:active:not(:disabled),.zoom-btn:active:not(:disabled),.primary-btn:active:not(:disabled),.shape-picker-item:active{transform:scale(.94)}.primary-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 2px 4px #1f187833,0 12px 24px -8px #4f46e599,inset 0 1px #ffffff38}.swatch,.stroke-preview{transition:outline-color var(--dur-instant) var(--ease-out),transform var(--dur-instant) var(--ease-out)}.color-grid button:hover .swatch{transform:scale(1.12)}.toolbar-indicator{position:absolute;left:6px;right:6px;height:var(--indicator-size, 38px);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-line);border-radius:var(--radius-sm);transform:translateY(var(--indicator-offset, 0));transition:transform var(--dur-normal) var(--ease-spring);pointer-events:none;z-index:0}.tool-btn,.toolbar-shape{position:relative;z-index:1}@keyframes pop-in{0%{opacity:0;transform:scale(.96) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes slide-down{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}@keyframes fade-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes sheet-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.popover,.context-menu{animation:pop-in var(--dur-fast) var(--ease-out) both;transform-origin:top left}.popover-right{transform-origin:top right}.popover.is-above{transform-origin:bottom left}.popover.is-above.popover-right{transform-origin:bottom right}.style-panel{animation:slide-down var(--dur-normal) var(--ease-out) both}.shape-picker{animation:pop-in var(--dur-fast) var(--ease-out) both;transform-origin:left center}.shape-picker-item{animation:fade-up var(--dur-fast) var(--ease-out) both}.comment-thread,.follow-banner,.incoming-call-banner{animation:pop-in var(--dur-fast) var(--ease-out) both}.empty-state h1,.empty-state li{animation:fade-up var(--dur-normal) var(--ease-out) both}.empty-state li:nth-child(1){animation-delay:60ms}.empty-state li:nth-child(2){animation-delay:.11s}.empty-state li:nth-child(3){animation-delay:.16s}.empty-state li:nth-child(4){animation-delay:.21s}[data-tip]{position:relative}[data-tip]:after{content:attr(data-tip);position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%) scale(.94);transform-origin:left center;padding:5px 9px;border-radius:var(--radius-xs);background:var(--tooltip-bg);color:var(--tooltip-ink);font-size:11.5px;font-weight:550;white-space:nowrap;pointer-events:none;opacity:0;z-index:70;box-shadow:var(--shadow-2);transition:opacity var(--dur-instant) var(--ease-out) .32s,transform var(--dur-instant) var(--ease-out) .32s}[data-tip]:hover:after,[data-tip]:focus-visible:after{opacity:1;transform:translateY(-50%) scale(1)}.topbar [data-tip]:after,.presence-stack [data-tip]:after{left:50%;top:calc(100% + 8px);transform:translate(-50%) scale(.94);transform-origin:top center}.topbar [data-tip]:hover:after,.topbar [data-tip]:focus-visible:after,.presence-stack [data-tip]:hover:after,.presence-stack [data-tip]:focus-visible:after{transform:translate(-50%) scale(1)}.dash-sidebar [data-tip]:after,.popover .icon-btn[data-tip]:after,.popover .layer-row-btn[data-tip]:after,.person-actions [data-tip]:after{left:auto;right:calc(100% + 10px);transform-origin:right center}.dash-org-add[data-tip]:after{content:none}@media(max-width:860px){.dash-org-add[data-tip]:after{content:attr(data-tip)}}.avatar{transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.avatar-btn{padding:0;font:inherit;font-size:10px;font-weight:700;color:var(--on-color);cursor:pointer}.avatar-btn:hover{transform:translateY(-2px) scale(1.06);z-index:2}.avatar-btn.is-following{box-shadow:0 0 0 2px var(--surface),0 0 0 4px currentColor}@keyframes avatar-in{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}.presence-stack .avatar{animation:avatar-in var(--dur-normal) var(--ease-spring) both}.follow-banner{position:absolute;left:50%;bottom:16px;transform:translate(-50%);display:flex;align-items:center;gap:7px;padding:6px 8px 6px 12px;background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border:1.5px solid var(--accent);border-radius:var(--radius-pill);box-shadow:var(--shadow-3);font-size:12.5px;color:var(--ink-2);z-index:35}.follow-banner strong{color:var(--ink)}.follow-banner button{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;color:var(--ink-3);transition:background-color var(--dur-instant) var(--ease-out)}.follow-banner button:hover{background:var(--surface-sunken);color:var(--ink)}.follow-dot{width:8px;height:8px;border-radius:50%;animation:pulse 1.6s ease-in-out infinite}.conn-badge{transition:background-color var(--dur-normal) var(--ease-out),color var(--dur-normal) var(--ease-out)}@media(max-width:720px){.toolbar [data-tip]:after{left:50%;top:auto;bottom:calc(100% + 8px);transform:translate(-50%) scale(.94);transform-origin:bottom center}.toolbar [data-tip]:hover:after,.toolbar [data-tip]:focus-visible:after{transform:translate(-50%) scale(1)}.toolbar-indicator{inset:6px auto 6px 6px;height:auto;width:var(--indicator-size, 38px);transform:translate(var(--indicator-offset, 0))}.follow-banner{bottom:var(--rung-3)}}@media(pointer:coarse){.tool-btn{width:44px;height:44px}.toolbar-indicator{height:var(--indicator-size, 44px)}.icon-btn,.zoom-btn,.popover-trigger{min-width:44px;height:44px}.menu-item{min-height:44px}.color-grid{grid-template-columns:repeat(6,40px)}.color-grid button{width:40px;height:40px}.shape-picker-item{width:44px;height:44px}.comment-pin{width:34px;height:34px}.board-area{--dock-h: 56px;--zoom-h: 46px}[data-tip]:after{display:none}}@media(prefers-reduced-transparency:reduce){:root{--glass-strong: var(--surface)}.toolbar,.style-panel,.popover,.context-menu,.shape-picker,.rich-toolbar,.zoom-group,.zoom-controls>.zoom-btn,.minimap,.comment-thread,.presentation-bar,.follow-banner,.call-window,.call-pill,.screenshare-window,.call-expanded-panel,.incoming-call-banner,.toast,.auth-card,.modal-backdrop,.board-card-actions .popover-trigger{backdrop-filter:none;-webkit-backdrop-filter:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-delay:0ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0ms!important}.tool-btn:active,.icon-btn:active,.zoom-btn:active,.primary-btn:active,.primary-btn:hover,.avatar-btn:hover,.color-grid button:hover .swatch{transform:none}}.dash{display:grid;grid-template-columns:268px minmax(0,1fr);height:100%;background:var(--surface-2)}.dash-sidebar{display:flex;flex-direction:column;gap:4px;padding:14px 12px max(14px,var(--safe-b)) max(12px,var(--safe-l));background:var(--surface);border-right:1px solid var(--line);overflow-y:auto;background-image:linear-gradient(180deg,rgba(99,102,241,.05),transparent 220px)}.dash-brand{display:flex;align-items:center;gap:9px;padding:4px 6px 14px}.dash-brand .icon-btn{margin-left:auto}.dash-nav{display:flex;flex-direction:column;gap:2px}.dash-nav-item{display:flex;align-items:center;gap:10px;height:38px;padding:0 11px;border-radius:var(--radius);font-weight:550;color:var(--ink-2);text-align:left;transition:background-color var(--dur-instant) var(--ease-out),color var(--dur-instant) var(--ease-out),box-shadow var(--dur-instant) var(--ease-out)}.dash-nav-item:hover{background:var(--surface-sunken);color:var(--ink)}.dash-nav-item.is-active{background:var(--accent-soft);color:var(--accent);font-weight:600;box-shadow:inset 0 0 0 1px var(--accent-line)}.dash-section-label{display:flex;align-items:center;justify-content:space-between;margin:18px 6px 6px;font-size:10.5px;font-weight:650;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3)}.dash-org-add{display:flex;align-items:center;gap:10px;width:100%;padding:7px 8px;border-radius:var(--radius-sm);color:var(--ink-3);text-align:left;transition:background-color var(--dur-instant) var(--ease-out),color var(--dur-instant) var(--ease-out)}.dash-org-add:hover{background:var(--surface-sunken);color:var(--ink)}.dash-org-add-label{font-weight:550}.dash-org-tile.is-ghost{background:var(--surface-sunken);border:1px dashed var(--line-strong);color:var(--ink-3)}.dash-org-add:hover .dash-org-tile.is-ghost{border-color:var(--accent);color:var(--accent)}.dash-org-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.dash-org{position:relative;display:flex;align-items:center;border-radius:var(--radius-sm)}.dash-org-main{display:flex;align-items:center;gap:10px;flex:1;min-width:0;padding:7px 8px;border-radius:var(--radius);text-align:left;transition:background-color var(--dur-instant) var(--ease-out),box-shadow var(--dur-instant) var(--ease-out)}.dash-org:hover .dash-org-main{background:var(--surface-sunken)}.dash-org.is-active .dash-org-main{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-line)}.dash-org-tile{flex:0 0 auto;display:grid;place-items:center;width:29px;height:29px;border-radius:9px;color:var(--on-color);font-size:12px;font-weight:700;box-shadow:var(--shadow-1),inset 0 1px #ffffff52}.dash-org-tile.is-small{width:18px;height:18px;border-radius:6px;font-size:9px}.dash-org-text{display:flex;flex-direction:column;min-width:0}.dash-org-name{font-weight:550;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-org-meta{font-size:10.5px;color:var(--ink-3)}.dash-org-actions{display:flex;gap:1px;padding-right:4px;opacity:0;transition:opacity var(--dur-instant) var(--ease-out)}.dash-org:hover .dash-org-actions,.dash-org:focus-within .dash-org-actions{opacity:1}.dash-org-actions button{display:grid;place-items:center;width:24px;height:24px;border-radius:5px;color:var(--ink-3)}.dash-org-actions button:hover:not(:disabled){background:var(--line);color:var(--ink)}.dash-org-actions button:disabled{opacity:.3;cursor:default}.dash-inline-input{width:100%;font:inherit;font-weight:550;padding:6px 9px;border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);outline:none;box-shadow:0 0 0 3px var(--ring)}.dash-main{min-width:0;overflow-y:auto;background-image:radial-gradient(80% 52% at 12% -8%,rgba(99,102,241,.14),transparent 70%),radial-gradient(60% 44% at 92% -6%,rgba(236,72,153,.09),transparent 70%);background-repeat:no-repeat;background-attachment:scroll}html[data-theme=dark] .dash-main{background-image:radial-gradient(80% 52% at 12% -8%,rgba(255,255,255,.05),transparent 70%),radial-gradient(60% 44% at 92% -6%,rgba(129,140,248,.1),transparent 70%)}.dash-content{max-width:1320px;margin:0 auto;padding:30px max(28px,var(--safe-r)) max(48px,var(--safe-b)) max(28px,var(--safe-l))}.dash-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:22px}.dash-header h1{margin:0;font-size:27px;font-weight:800;letter-spacing:-.032em;line-height:1.15;text-wrap:balance}.dash-subtitle{margin:5px 0 0;color:var(--ink-3);font-size:13px}.dash-loading{padding:48px;text-align:center;color:var(--ink-3);animation:breathe 1.6s var(--ease-in-out) infinite}@keyframes breathe{50%{opacity:.55}}.dash-error{display:flex;align-items:center;gap:10px;max-width:1320px;margin:14px auto 0;padding:11px 13px;border-radius:var(--radius);background:var(--danger-soft);border:1px solid var(--danger-line);color:var(--danger-ink)}.dash-error span{flex:1}.dash-error button{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;color:inherit}.dash-error-retry{width:auto!important;height:auto!important;padding:4px 8px;border-radius:8px!important;font:inherit;font-size:13px;font-weight:600}.dash-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:60px 20px;color:var(--ink-3);text-align:center}.dash-empty>svg:first-child{width:30px;height:30px;padding:13px;box-sizing:content-box;border-radius:var(--radius-lg);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-line);color:var(--accent);margin-bottom:4px}.dash-empty h2{margin:6px 0 0;font-size:18px;font-weight:700;color:var(--ink)}.dash-empty p{margin:0 0 10px;max-width:380px}.board-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(216px,1fr));gap:18px}.board-card{position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);overflow:hidden;transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.board-card:hover{transform:translateY(-3px);border-color:var(--accent-line);box-shadow:var(--shadow-2)}.board-card-open{display:block;padding:0;border-radius:0}.board-thumb{display:grid;place-items:center;aspect-ratio:4 / 3;background:linear-gradient(rgba(19,20,44,.05) 1px,transparent 1px) 0 0 / 100% 22px,linear-gradient(90deg,rgba(19,20,44,.05) 1px,transparent 1px) 0 0 / 22px 100%,linear-gradient(160deg,var(--accent-soft),var(--board-bg) 55%);border-bottom:1px solid var(--line);color:var(--ink-3)}.board-thumb img{width:100%;height:100%;object-fit:cover;display:block}.board-card-body{padding:11px 13px 13px}.board-card-name{margin:0;font-size:13.5px;font-weight:650;letter-spacing:-.015em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-card[draggable=true]{cursor:grab}.board-card.is-dragging{opacity:.45;border-style:dashed}.board-card-meta{display:flex;align-items:center;gap:8px;margin:4px 0 0;font-size:11px;color:var(--ink-3)}.board-live{display:inline-flex;align-items:center;gap:4px;color:var(--ok-ink);font-weight:600}.board-live-dot{width:6px;height:6px;border-radius:50%;background:var(--ok);animation:pulse 1.6s ease-in-out infinite}.board-card-actions{position:absolute;top:6px;right:6px;z-index:1;opacity:0;transition:opacity var(--dur-instant) var(--ease-out)}.board-card:hover .board-card-actions,.board-card:focus-within .board-card-actions{opacity:1}.board-card-actions .popover-trigger{background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-radius:var(--radius-sm);box-shadow:var(--shadow-1),var(--hairline)}.menu-item.is-danger{color:var(--danger)}.cal-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cal-hint{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink-3);max-width:280px}.ghost-btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--surface);box-shadow:var(--shadow-1);font-weight:600;color:var(--ink-2);transition:background-color var(--dur-instant) var(--ease-out),color var(--dur-instant) var(--ease-out),border-color var(--dur-instant) var(--ease-out)}.ghost-btn:hover{background:var(--surface-sunken);color:var(--ink);border-color:var(--ink-3)}.ghost-btn.is-danger{color:var(--danger);border-color:var(--danger-line)}.ghost-btn.is-danger:hover{background:var(--danger-soft);border-color:var(--danger);color:var(--danger-ink)}.cal-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start}.cal-main{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:14px}.cal-toolbar{display:flex;align-items:center;gap:6px;margin-bottom:10px}.cal-month{flex:1;margin:0;font-size:15px;font-weight:650}.rotate-90{transform:rotate(90deg)}.rotate-270{transform:rotate(-90deg)}.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px;font-size:10.5px;font-weight:650;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);text-align:center}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(84px,auto);gap:4px}.cal-day{position:relative;display:flex;flex-direction:column;gap:3px;padding:5px 5px 6px;min-width:0;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--surface-2);text-align:left;transition:background-color var(--dur-instant) var(--ease-out),border-color var(--dur-instant) var(--ease-out)}.cal-day:hover{background:var(--surface-sunken)}.cal-day.is-outside{opacity:.45}.cal-day.is-weekend{background:var(--surface-sunken)}.cal-day.is-today .cal-day-number{background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-accent)}.cal-day.is-selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 3px var(--ring)}.cal-day-number{display:grid;place-items:center;width:21px;height:21px;border-radius:50%;font-size:11.5px;font-weight:600;color:var(--ink-2)}.cal-day-events{display:flex;flex-direction:column;gap:2px;min-width:0}.cal-chip{display:block;padding:2px 5px;border-left:3px solid var(--accent);border-radius:3px;background:var(--surface);font-size:10.5px;line-height:1.35;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-chip-time{font-style:normal;font-weight:650;color:var(--ink-3);margin-right:4px}.cal-chip.is-more{border-left-color:transparent;background:none;color:var(--ink-3);font-weight:600}.cal-side{display:flex;flex-direction:column;gap:14px}.cal-day-panel,.cal-upcoming{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:15px}.cal-day-panel header h3{margin:0;font-size:15px;font-weight:650}.cal-day-panel header p{margin:2px 0 12px;font-size:11.5px;color:var(--ink-3)}.cal-empty{margin:0;color:var(--ink-3);font-size:12px}.cal-empty button{display:block;margin-top:6px;color:var(--accent);font-weight:550}.cal-event-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.cal-event{padding:2px 0 2px 10px;border-left:3px solid var(--accent)}.cal-event-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.cal-event-title{font-weight:600;color:var(--ink);text-align:left}.cal-event-title:hover{color:var(--accent)}.cal-event-time{flex:0 0 auto;font-size:11px;color:var(--ink-3);font-variant-numeric:tabular-nums}.cal-event-remind,.cal-event-desc{margin:4px 0 0;font-size:11.5px;color:var(--ink-2)}.cal-event-remind{display:flex;align-items:center;gap:5px;color:var(--ink-3)}.cal-event-desc{white-space:pre-wrap}.cal-event-board{display:inline-flex;align-items:center;gap:5px;margin-top:6px;padding:3px 7px;border-radius:999px;background:var(--surface-sunken);font-size:11px;font-weight:550;color:var(--ink-2)}.cal-event-board:hover{background:var(--accent-soft);color:var(--accent)}.cal-event-tasks{margin-top:8px}.cal-task-progress{margin:0 0 4px;font-size:10.5px;font-weight:650;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3)}.cal-event-tasks ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}.cal-event-tasks label{display:flex;align-items:flex-start;gap:7px;font-size:12px;color:var(--ink);cursor:pointer}.cal-event-tasks input{margin-top:2px;accent-color:var(--accent)}.is-done{text-decoration:line-through;color:var(--ink-3)}.cal-upcoming h3{display:flex;align-items:center;gap:6px;margin:0 0 10px;font-size:10.5px;font-weight:650;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}.cal-upcoming ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.cal-upcoming button{display:flex;align-items:center;gap:9px;width:100%;padding:6px 7px;border-radius:var(--radius-sm);text-align:left;transition:background-color var(--dur-instant) var(--ease-out)}.cal-upcoming button:hover{background:var(--surface-sunken)}.cal-dot{flex:0 0 auto;width:8px;height:8px;border-radius:50%}.cal-upcoming-text{display:flex;flex-direction:column;min-width:0}.cal-upcoming-text strong{font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-upcoming-text em{font-style:normal;font-size:10.5px;color:var(--ink-3)}.modal-backdrop{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:20px;background:var(--overlay);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:backdrop-in var(--dur-fast) var(--ease-out) both}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}.event-editor{display:flex;flex-direction:column;width:min(560px,100%);max-height:min(86dvh,760px);background:var(--surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-3),var(--hairline);overflow:hidden;animation:pop-in var(--dur-normal) var(--ease-out) both}@media(max-width:720px){.modal-backdrop{place-items:end stretch;padding:0}.event-editor,.day-modal,.task-modal,.profile-modal{width:100%;max-height:88dvh;border-radius:var(--radius-lg) var(--radius-lg) 0 0;animation-name:sheet-in}.event-editor-foot,.day-modal-foot,.task-modal-foot,.profile-foot{padding-bottom:max(12px,var(--safe-b))}}.event-editor-head{display:flex;align-items:center;gap:8px;padding:12px 12px 12px 16px;border-bottom:1px solid var(--line)}.event-title-input{flex:1;font:inherit;font-size:16px;font-weight:650;border:none;background:none;outline:none;color:var(--ink)}.event-title-input::placeholder{color:var(--ink-3);font-weight:500}.event-editor-body{display:flex;flex-direction:column;gap:14px;padding:16px;overflow-y:auto}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field>span{font-size:10.5px;font-weight:650;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}.field-hint{font-style:normal;text-transform:none;letter-spacing:0;font-weight:500;color:var(--ink-3)}.field-row{display:flex;align-items:center;gap:8px;font-weight:550;color:var(--ink-2);cursor:pointer}.field-row input{accent-color:var(--accent)}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.event-editor input[type=date],.event-editor input[type=datetime-local],.event-editor select,.event-editor textarea,.task-text,.task-add input{font:inherit;padding:8px 9px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);outline:none;transition:border-color var(--dur-instant) var(--ease-out),box-shadow var(--dur-instant) var(--ease-out)}.event-editor input:focus,.event-editor select:focus,.event-editor textarea:focus,.task-text:focus,.task-add input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}.event-editor textarea{resize:vertical;min-height:74px}.task-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}.task-list li{display:flex;align-items:center;gap:8px}.task-list input[type=checkbox]{accent-color:var(--accent)}.task-text{flex:1;min-width:0}.task-text.is-done{color:var(--ink-3);text-decoration:line-through}.task-list li>button{display:grid;place-items:center;width:26px;height:26px;border-radius:var(--radius-sm);color:var(--ink-3)}.task-list li>button:hover{background:var(--surface-sunken);color:var(--danger)}.task-add{display:flex;gap:6px;margin-top:6px}.task-add input{flex:1}.task-add button{display:grid;place-items:center;width:34px;border-radius:var(--radius-sm);background:var(--surface-sunken);color:var(--ink-2)}.task-add button:hover:not(:disabled){background:var(--accent-soft);color:var(--accent)}.task-add button:disabled{opacity:.4;cursor:default}.color-chips{display:flex;gap:6px}.color-chip{width:24px;height:24px;border-radius:50%;border:2px solid transparent;transition:transform var(--dur-instant) var(--ease-out)}.color-chip:hover{transform:scale(1.1)}.color-chip.is-active{border-color:var(--ink);box-shadow:0 0 0 2px var(--surface) inset}.form-error{margin:0;color:var(--danger);font-size:12px}.event-editor-foot{display:flex;align-items:center;gap:8px;padding:12px 16px;border-top:1px solid var(--line);background:var(--surface-2)}.event-editor-foot .spacer{flex:1}.toast-stack{position:fixed;right:max(16px,var(--safe-r));bottom:max(16px,var(--safe-b));z-index:90;display:flex;flex-direction:column;gap:8px;max-width:min(320px,calc(100vw - 32px))}.toast{display:flex;align-items:flex-start;gap:10px;padding:12px 13px;border-radius:var(--radius-lg);border-left:3px solid var(--accent);background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);box-shadow:var(--shadow-3),var(--hairline);color:var(--accent);animation:toast-in var(--dur-normal) var(--ease-spring) both}@keyframes toast-in{0%{opacity:0;transform:translate(16px) scale(.96)}to{opacity:1;transform:translate(0) scale(1)}}.toast>div{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.toast strong{font-size:12.5px;color:var(--ink)}.toast span{font-size:11.5px;color:var(--ink-3)}.toast>button{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;color:var(--ink-3)}.toast>button:hover{background:var(--surface-sunken);color:var(--ink)}@media(max-width:1080px){.cal-layout{grid-template-columns:minmax(0,1fr)}}@media(max-width:860px){.dash{grid-template-columns:minmax(0,1fr)}.dash-sidebar{flex-direction:row;align-items:center;gap:10px;overflow-x:auto;border-right:none;border-bottom:1px solid var(--line);padding:max(10px,var(--safe-t)) max(12px,var(--safe-r)) 10px max(12px,var(--safe-l))}.dash-brand,.dash-section-label{display:none}.dash-nav{flex-direction:row;flex:0 0 auto}.dash-org-list{flex-direction:row;flex:1}.dash-org-text,.dash-org-add-label{display:none}.dash-org.is-active .dash-org-text{display:flex;max-width:32vw}.dash-org,.dash-org-add-row{flex:0 0 auto}.dash-org-actions{display:none}.dash-org.is-active .dash-org-actions{display:flex;opacity:1;gap:4px;padding-left:2px}.dash-content{padding:18px max(14px,var(--safe-r)) max(40px,var(--safe-b)) max(14px,var(--safe-l))}.dash-header h1,.dash-inline-input.is-title{font-size:22px}.cal-grid{grid-auto-rows:minmax(64px,auto)}.cal-day-events{display:none}.cal-day:has(.cal-chip):after{content:"";position:absolute;left:50%;bottom:8px;transform:translate(-50%);width:5px;height:5px;border-radius:50%;background:var(--accent)}.cal-side{order:2}.people-search,.people-search input{width:100%}.hw-filters{flex-wrap:wrap}.hw-subject-filter{flex:1;min-width:140px}.person-main{flex-wrap:wrap}.pay-chip{margin-left:45px}.person-actions{flex-direction:column;justify-content:center;padding:6px 6px 6px 0}.profile-grid{grid-template-columns:1fr}.kind-switch{display:flex;width:100%}.kind-switch button{flex:1}}@media(pointer:coarse){.dash-org-actions{display:none}.dash-org.is-active .dash-org-actions{display:flex;opacity:1;gap:8px}.dash-org-actions button{width:44px;height:44px}}@media(pointer:coarse)and (min-width:861px){.dash-org.is-active{flex-wrap:wrap;padding-bottom:4px}.dash-org.is-active .dash-org-actions{width:100%;justify-content:flex-end}}.org-members-popover{width:min(320px,calc(100vw - 32px))}.org-members-hint{padding:6px 4px;font-size:12.5px;color:var(--ink-3)}.org-members-error{padding:7px 9px;border-radius:var(--radius-sm);background:var(--danger-soft);box-shadow:inset 0 0 0 1px var(--danger-line);color:var(--danger-ink);font-size:12px}.org-members-list{display:flex;flex-direction:column;gap:2px;max-height:220px;overflow-y:auto}.org-member-row{display:flex;align-items:center;gap:8px;padding:4px 2px}.org-member-avatar{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;font-size:10.5px;font-weight:700;color:var(--on-color);box-shadow:inset 0 1px #ffffff4d;flex-shrink:0}.org-member-text{display:flex;flex-direction:column;min-width:0;flex:1}.org-member-name{font-size:12.5px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.org-member-email{font-size:11px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.org-member-role{font:inherit;font-size:11.5px;padding:3px 4px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink-2);flex:0 0 auto;max-width:110px;text-overflow:ellipsis}.org-member-row .icon-btn,.org-invite-row .icon-btn{flex-shrink:0}.board-member-actions{display:flex;align-items:center;gap:2px;flex-shrink:0}.board-member-role{max-width:140px;margin-top:2px}.board-access-popover .icon-btn.is-danger{color:var(--danger, #c0392b)}.board-access-popover .icon-btn.is-danger:hover{background:color-mix(in srgb,var(--danger, #c0392b) 12%,transparent)}.org-invite-create{display:flex;gap:6px}.org-invite-btn{flex:1;min-width:0;justify-content:center;white-space:nowrap;color:var(--accent);font-weight:600}.org-invite-list{display:flex;flex-direction:column;gap:2px}.org-invite-row{display:flex;align-items:center;gap:4px}.org-invite-row .menu-item{flex:1;min-width:0}.org-invite-row .menu-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-tabs{max-width:440px;margin-bottom:20px}.admin-table{display:flex;flex-direction:column;gap:8px}.admin-row{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-1);text-align:left;font:inherit;color:inherit}.admin-row-org{width:100%;transition:border-color var(--dur-instant) var(--ease-out),box-shadow var(--dur-instant) var(--ease-out)}.admin-row-org:hover{border-color:var(--accent-line);box-shadow:var(--shadow-2)}.admin-row-go{margin-left:auto;color:var(--ink-3);transform:rotate(180deg);flex-shrink:0}.admin-user-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:12.5px;font-weight:700;color:var(--on-color);box-shadow:inset 0 1px #ffffff4d;flex-shrink:0}.admin-user-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.admin-user-name{display:flex;align-items:center;gap:6px;font-size:13.5px;font-weight:600;color:var(--ink)}.admin-user-meta{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-badge{padding:2px 8px;border-radius:var(--radius-pill);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.admin-badge-super{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-line);color:var(--accent)}.admin-badge-orgs{background:var(--ok-soft);box-shadow:inset 0 0 0 1px var(--ok-line);color:var(--ok-ink)}.admin-badge-off{background:var(--danger-soft);box-shadow:inset 0 0 0 1px var(--danger-line);color:var(--danger-ink)}.admin-row-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.admin-row-actions .menu-item{width:auto;white-space:nowrap;font-size:12px}.dash-header-actions{display:flex;align-items:center;gap:8px}.block-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin-bottom:26px}.block-card{position:relative;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-1);transition:transform var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.block-card:hover{transform:translateY(-3px);border-color:var(--accent-line);box-shadow:var(--shadow-2)}.block-card[draggable=true]{cursor:grab}.block-card.is-drop-target{border-color:var(--accent);border-style:dashed;background:var(--accent-soft);transform:none}.block-card.is-drop-before{box-shadow:inset 3px 0 0 0 var(--accent)}.block-card.is-dragging{opacity:.45}.block-card-open{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;align-items:center;gap:2px 12px;width:100%;padding:14px;border:0;border-radius:inherit;background:none;color:var(--ink);text-align:left;cursor:pointer}.block-card-open svg{grid-row:1 / span 2;box-sizing:content-box;width:20px;height:20px;padding:8px;border-radius:var(--radius);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-line);color:var(--accent);transition:background var(--dur-fast) var(--ease-out)}.block-card:hover .block-card-open svg{background:var(--accent-soft-2)}.block-card-name{font-size:13.5px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.block-card-count{font-size:12px;color:var(--ink-3);padding-right:112px}.block-card .dash-inline-input{margin:12px;width:calc(100% - 24px)}.block-card-actions{position:absolute;right:7px;bottom:7px;display:flex;opacity:0;transition:opacity var(--dur-fast) var(--ease-out)}.block-card-actions .icon-btn{width:26px;height:26px}.block-card:hover .block-card-actions,.block-card:focus-within .block-card-actions{opacity:1}.block-card-actions .icon-btn:disabled{opacity:.3;cursor:default}@media(hover:none){.block-card-actions{opacity:1}}.dash-crumbs{min-width:0}.dash-inline-input.is-title{max-width:340px;font-family:var(--font-display);font-size:26px;font-weight:800;letter-spacing:-.032em}.crumb-up{display:inline-flex;align-items:center;gap:5px;min-height:28px;margin-bottom:2px;padding:3px 8px 3px 4px;border:1px solid transparent;border-radius:8px;background:none;color:var(--ink-3);font-size:12.5px;cursor:pointer;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.crumb-up:hover{background:var(--surface-sunken);color:var(--ink)}.crumb-up.is-drop-target{border-color:var(--accent);border-style:dashed;background:var(--accent-soft);color:var(--accent)}.board-block-rename{display:block;max-width:100%;padding:3px 6px;margin:-3px -6px;border:0;border-radius:7px;background:none;color:inherit;font:inherit;text-align:left;cursor:text;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background var(--dur-fast) var(--ease-out)}.board-block-rename:hover{background:var(--surface-2)}.board-block-rename:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.board-block-empty{grid-column:1 / -1;margin:0;padding:18px;border:1px dashed var(--line-strong);border-radius:var(--radius);color:var(--ink-3);font-size:12.5px;text-align:center}.board-role-tag{margin-left:6px;padding:1.5px 7px;border-radius:var(--radius-pill);background:var(--surface-sunken);box-shadow:var(--hairline);color:var(--ink-2);font-size:10.5px;font-weight:600}.board-invite-form{display:grid;gap:6px}.board-denied{display:grid;place-items:center;height:100%;background:var(--surface-2)}.board-denied-card{max-width:420px;padding:32px;border-radius:var(--radius-xl);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-3);text-align:center}.board-denied-card h1{margin:0 0 8px;font-size:21px;font-weight:700}.board-denied-card p{margin:0 0 18px;color:var(--ink-2)}.admin-tab{display:flex;flex-direction:column;gap:14px}.admin-create-org{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.admin-create-org .dash-inline-input{flex:1;min-width:200px}.audit-toolbar{display:flex;gap:8px;align-items:center}.audit-list{display:flex;flex-direction:column;gap:7px}.audit-row{display:flex;align-items:flex-start;gap:10px;padding:10px 11px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-1)}.audit-row.is-danger{border-color:var(--danger-line);background:var(--danger-soft)}.audit-row.is-warning{border-color:var(--warn-line);background:var(--warn-soft)}.audit-icon{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--surface-sunken);color:var(--ink-2);flex-shrink:0}.audit-row.is-danger .audit-icon{background:var(--surface);box-shadow:inset 0 0 0 1px var(--danger-line);color:var(--danger)}.audit-row.is-warning .audit-icon{background:var(--surface);box-shadow:inset 0 0 0 1px var(--warn-line);color:var(--warn)}.audit-body{display:flex;flex-direction:column;gap:2px;min-width:0}.audit-text{font-size:13px;color:var(--ink)}.audit-meta{font-size:11.5px;color:var(--ink-3)}.audit-more{align-self:center}.lms-section{margin-bottom:30px}.lms-section h2{margin:0 0 10px;font-size:17px;font-weight:700}.person-list{display:flex;flex-direction:column;gap:8px}.subject-badge{display:inline-flex;align-items:center;padding:1.5px 8px;border-radius:var(--radius-pill);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-line);color:var(--accent);font-size:11px;font-weight:650;letter-spacing:.01em;white-space:nowrap}.task-chip{display:inline-flex;align-items:center;gap:3px;padding:2.5px 9px;border-radius:var(--radius-pill);background:var(--surface-sunken);box-shadow:var(--hairline);color:var(--ink-2);font-size:11px;font-weight:550}.task-chip.is-done{background:var(--ok-soft);box-shadow:inset 0 0 0 1px var(--ok-line);color:var(--ok-ink)}.task-chip.has-board{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-line);color:var(--accent)}.student-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:4px;max-height:190px;overflow-y:auto}.student-picker label{display:flex;align-items:center;gap:7px;padding:4px 6px;border-radius:var(--radius-sm);font-size:12.5px;cursor:pointer}.student-picker label:hover{background:var(--surface-2)}.student-picker-actions{display:flex;gap:6px;margin-top:6px}.attachment-list{display:flex;flex-direction:column;gap:4px;margin:0 0 8px}.attachment-list li{display:flex;align-items:center;gap:6px;font-size:12.5px}.attachment-list a{display:inline-flex;align-items:center;gap:6px;color:var(--accent);text-decoration:none}.attachment-list a:hover{text-decoration:underline}.attachment-thumb{width:26px;height:26px;border-radius:var(--radius-xs);object-fit:cover;box-shadow:var(--hairline)}.attachment-size{color:var(--ink-3);font-style:normal;font-size:11.5px}.person-row{display:flex;align-items:stretch;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-1);overflow:hidden;transition:border-color var(--dur-instant) var(--ease-out),box-shadow var(--dur-instant) var(--ease-out)}.person-row:hover{border-color:var(--accent-line);box-shadow:var(--shadow-2)}.person-main{display:flex;flex:1;align-items:center;gap:11px;min-width:0;padding:10px 13px;background:none;border:0;text-align:left;cursor:pointer}.person-avatar{display:grid;place-items:center;width:34px;height:34px;flex:none;border-radius:var(--radius-pill);color:var(--on-color);font-size:13px;font-weight:700;box-shadow:inset 0 1px #ffffff4d}.person-text{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.person-name{display:flex;align-items:center;gap:7px;font-size:13.5px;font-weight:650;color:var(--ink)}.person-sub{display:flex;align-items:center;gap:5px;color:var(--ink-3);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.person-dim{font-style:italic;opacity:.8}.pay-chip{display:inline-flex;align-items:center;gap:4px;flex:none;padding:3px 9px;border-radius:var(--radius-pill);background:var(--danger-soft);box-shadow:inset 0 0 0 1px var(--danger-line);color:var(--danger-ink);font-size:11.5px;font-weight:600;white-space:nowrap}.pay-chip.is-paid{background:var(--ok-soft);box-shadow:inset 0 0 0 1px var(--ok-line);color:var(--ok-ink)}.person-actions{display:flex;align-items:center;gap:2px;padding-right:8px}.person-actions button{display:grid;place-items:center;width:28px;height:28px;border:0;border-radius:var(--radius-sm);background:none;color:var(--ink-3);cursor:pointer}.person-actions button:hover{background:var(--surface-sunken);color:var(--ink)}.people-tabs{display:inline-flex;gap:3px;margin-bottom:14px;padding:3px;border-radius:var(--radius);background:var(--surface-sunken);box-shadow:var(--hairline)}.people-tabs button{display:inline-flex;align-items:center;gap:7px;padding:6px 13px;border:0;border-radius:var(--radius-sm);background:none;color:var(--ink-2);font:inherit;font-weight:600;cursor:pointer}.people-tabs button.is-active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}.people-tabs em,.day-section em{font-style:normal;color:var(--ink-3);font-size:11.5px;font-weight:600}.people-search{display:flex;align-items:center;gap:7px;padding:0 11px;border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:var(--surface);color:var(--ink-3)}.people-search input{width:190px;padding:7px 0;border:0;background:none;font:inherit;color:var(--ink)}.people-search input:focus{outline:none}.kind-badge{display:inline-flex;align-items:center;padding:1.5px 8px;border-radius:var(--radius-pill);background:var(--surface-sunken);box-shadow:var(--hairline);color:var(--ink-2);font-size:11px;font-weight:650}.kind-badge.is-student{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-line);color:var(--accent)}.kind-badge.is-teacher{background:var(--ok-soft);box-shadow:inset 0 0 0 1px var(--ok-line);color:var(--ok-ink)}.kind-badge.is-curator{background:#ecfdff;box-shadow:inset 0 0 0 1px #0e74903d;color:#0e6b80}.kind-badge.is-owner{background:var(--warn-soft);box-shadow:inset 0 0 0 1px var(--warn-line);color:var(--warn-ink)}.hw-page{display:flex;flex-direction:column;gap:22px;width:100%;max-width:1120px;margin:0 auto;padding:28px max(28px,var(--safe-r)) max(48px,var(--safe-b)) max(28px,var(--safe-l));animation:hw-page-in .28s var(--ease-out) both}@keyframes hw-page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.hw-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;padding:28px 30px;border-radius:var(--radius-xl);background:radial-gradient(120% 140% at 100% 0%,rgba(99,102,241,.18),transparent 55%),radial-gradient(90% 120% at 0% 100%,rgba(236,72,153,.1),transparent 50%),linear-gradient(180deg,var(--surface) 0%,color-mix(in srgb,var(--accent-soft) 55%,var(--surface)) 100%);box-shadow:var(--shadow-2),var(--hairline),var(--hairline-top);border:1px solid var(--line)}.hw-hero-copy{flex:1;min-width:min(100%,280px)}.hw-kicker{display:inline-flex;align-items:center;gap:6px;margin:0 0 10px;color:var(--accent);font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.hw-hero h1{margin:0;font-family:var(--font-display);font-size:clamp(28px,4vw,36px);font-weight:800;letter-spacing:-.03em;line-height:1.1;color:var(--ink);text-wrap:balance}.hw-hero-lead{margin:10px 0 0;max-width:42rem;color:var(--ink-2);font-size:14.5px;line-height:1.5;text-wrap:pretty}.hw-hero-actions{display:flex;flex-direction:column;align-items:flex-end;gap:14px}.hw-stats{display:flex;gap:8px;flex-wrap:wrap}.hw-stat{display:flex;flex-direction:column;gap:2px;min-width:76px;padding:10px 14px;border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 88%,transparent);box-shadow:var(--hairline);backdrop-filter:blur(8px)}.hw-stat strong{font-family:var(--font-display);font-size:22px;font-weight:800;letter-spacing:-.03em;color:var(--ink);font-variant-numeric:tabular-nums}.hw-stat span{color:var(--ink-3);font-size:11.5px;font-weight:600}.hw-stat.is-warn strong{color:var(--danger-ink)}.hw-stat.is-ok strong{color:var(--ok-ink)}.hw-banner{display:flex;align-items:center;gap:10px;margin:0;padding:12px 14px;border-radius:var(--radius);background:var(--warn-soft);box-shadow:inset 0 0 0 1px var(--warn-line);color:var(--warn-ink);font-size:13px}.hw-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.seg-group{display:inline-flex;gap:3px;padding:3px;border-radius:var(--radius);background:var(--surface-sunken);box-shadow:var(--hairline)}.seg-group button{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border:0;border-radius:var(--radius-sm);background:none;color:var(--ink-2);font:inherit;font-weight:600;cursor:pointer;transition:background var(--dur-instant) var(--ease-out),color var(--dur-instant) var(--ease-out)}.seg-group button:hover{color:var(--ink)}.seg-group button.is-active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}.seg-group em{font-style:normal;color:var(--ink-3);font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums}.hw-subject-filter{padding:8px 12px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);font:inherit;color:var(--ink);cursor:pointer}.hw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:14px;list-style:none;margin:0;padding:0}.hw-card-skel{min-height:220px;border-radius:var(--radius-xl);background:linear-gradient(90deg,var(--surface-sunken) 0%,var(--surface) 50%,var(--surface-sunken) 100%);background-size:200% 100%;animation:hw-skel 1.2s ease-in-out infinite}@keyframes hw-skel{to{background-position:-200% 0}}.hw-tile{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--radius-xl);background:var(--surface);box-shadow:var(--shadow-1);overflow:hidden;transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);animation:hw-tile-in .32s var(--ease-out) both;animation-delay:calc(var(--hw-i, 0) * 35ms)}@keyframes hw-tile-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.hw-tile:hover{border-color:var(--accent-line);box-shadow:var(--shadow-2);transform:translateY(-2px)}.hw-tile.is-overdue{border-color:color-mix(in srgb,var(--danger) 28%,var(--line))}.hw-tile.is-done{opacity:.78}.hw-tile-top{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px 0}.hw-tile.is-author .hw-tile-top{padding:0;margin-bottom:10px}.hw-tone{display:inline-flex;align-items:center;padding:3px 9px;border-radius:var(--radius-pill);font-size:11px;font-weight:700;letter-spacing:.02em}.hw-tone.is-overdue{background:var(--danger-soft);color:var(--danger-ink);box-shadow:inset 0 0 0 1px var(--danger-line)}.hw-tone.is-soon{background:var(--warn-soft);color:var(--warn-ink);box-shadow:inset 0 0 0 1px var(--warn-line)}.hw-tone.is-later{background:var(--accent-soft);color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent-line)}.hw-tone.is-done{background:var(--ok-soft);color:var(--ok-ink);box-shadow:inset 0 0 0 1px var(--ok-line)}.hw-tile-check{display:inline-flex;align-items:center;gap:7px;padding:5px 10px;border-radius:var(--radius-pill);background:var(--surface-sunken);color:var(--ink-2);font-size:12px;font-weight:650;cursor:pointer}.hw-tile-check:has(input:checked){background:var(--ok-soft);color:var(--ok-ink)}.hw-tile-body{display:flex;flex:1;flex-direction:column;align-items:flex-start;gap:10px;width:100%;padding:14px 16px 16px;background:none;border:0;text-align:left;cursor:pointer;color:inherit;font:inherit}.hw-tile-body h2{margin:0;font-family:var(--font-display);font-size:18px;font-weight:750;letter-spacing:-.02em;line-height:1.25;color:var(--ink);text-wrap:balance}.hw-tile-body h2.is-done{text-decoration:line-through;color:var(--ink-3)}.hw-tile-desc{display:-webkit-box;margin:0;overflow:hidden;color:var(--ink-2);font-size:13px;line-height:1.45;-webkit-line-clamp:3;-webkit-box-orient:vertical}.hw-tile-meta{display:flex;flex-wrap:wrap;gap:10px 14px;color:var(--ink-3);font-size:12.5px}.hw-tile-meta span{display:inline-flex;align-items:center;gap:5px}.hw-tile-meta .is-overdue{color:var(--danger-ink);font-weight:650}.hw-board-chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:5px 10px;border-radius:var(--radius-sm);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-line);color:var(--accent);font-size:12px;font-weight:650}.hw-board-chip em,.hw-board-chip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hw-board-chip.is-files{background:var(--warn-soft);box-shadow:inset 0 0 0 1px var(--warn-line);color:var(--warn-ink)}.hw-tile-due-long{margin:0;color:var(--ink-3);font-size:12px}.hw-progress{width:100%;height:6px;border-radius:var(--radius-pill);background:var(--surface-sunken);overflow:hidden}.hw-progress>span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),#8b5cf6);transition:width .24s var(--ease-out)}.hw-progress-label{margin:-4px 0 0;color:var(--ink-3);font-size:12px;font-weight:600}.hw-card-students{display:flex;flex-wrap:wrap;gap:5px}.hw-tile-photos{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;width:100%;margin-top:2px}.hw-tile-photos img{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:var(--radius-sm);box-shadow:var(--hairline)}.hw-tile-photos span{display:grid;place-items:center;aspect-ratio:4 / 3;border-radius:var(--radius-sm);background:var(--surface-sunken);color:var(--ink-2);font-size:13px;font-weight:700}.hw-tile-open{display:inline-flex;align-items:center;gap:6px;margin-top:auto;padding-top:6px;color:var(--accent);font-size:12.5px;font-weight:700}.hw-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:56px 24px;border-radius:var(--radius-xl);background:var(--surface);box-shadow:var(--shadow-1),var(--hairline);text-align:center}.hw-empty-icon{display:grid;place-items:center;width:64px;height:64px;border-radius:20px;background:var(--accent-soft);color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent-line)}.hw-empty-icon.is-ok{background:var(--ok-soft);color:var(--ok-ink);box-shadow:inset 0 0 0 1px var(--ok-line)}.hw-empty h2{margin:0;font-family:var(--font-display);font-size:22px;font-weight:750;letter-spacing:-.02em}.hw-empty p{margin:0;max-width:36rem;color:var(--ink-2);font-size:14px;line-height:1.5}@media(max-width:860px){.hw-page{padding:18px max(14px,var(--safe-r)) max(40px,var(--safe-b)) max(14px,var(--safe-l));gap:16px}.hw-hero{padding:20px 18px}.hw-hero-actions{width:100%;align-items:stretch}.hw-hero-actions .primary-btn{width:100%;justify-content:center}.hw-stats{width:100%}.hw-stat{flex:1;min-width:0}}@media(prefers-reduced-motion:reduce){.hw-page,.hw-tile,.hw-card-skel{animation:none!important}.hw-tile:hover{transform:none}}.cal-chip.is-task{border-left-color:var(--warn);background:var(--warn-soft)}.cal-task-dues{margin-bottom:12px}.cal-task-dues ul{display:flex;flex-direction:column;gap:3px}.cal-task-dues button{display:flex;align-items:center;gap:7px;width:100%;padding:6px 8px;border-radius:var(--radius-sm);background:var(--warn-soft);border:1px solid var(--warn-line);color:var(--warn-ink);font:inherit;font-size:12.5px;text-align:left;cursor:pointer;transition:background var(--dur-instant) var(--ease-out)}.cal-task-dues button:hover{background:color-mix(in srgb,var(--warn) 12%,var(--surface))}.cal-task-dues button span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-task-dues button em{color:var(--ink-3);font-style:normal;font-size:11.5px}.cal-task-dues button span .subject-badge{margin-right:6px}.cal-side-who{margin-left:6px;color:var(--ink-3);font-style:normal;font-size:11.5px}.cal-chip.is-movable{cursor:grab}.cal-chip.is-movable:active{cursor:grabbing}.cal-chip.is-task.is-done{background:var(--ok-soft);border-left-color:var(--ok);color:var(--ok-ink);text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--ok-ink) 45%,transparent)}.cal-chip-who{font-style:normal;font-weight:650;opacity:.75}.cal-chip-who:before{content:" · ";font-weight:400}.cal-day.is-drop-target{background:var(--accent-soft);box-shadow:inset 0 0 0 2px var(--accent)}.cal-event-title.is-static{font-weight:650;color:var(--ink)}.day-modal,.task-modal,.profile-modal{display:flex;flex-direction:column;width:min(620px,100%);max-height:min(86dvh,780px);border-radius:var(--radius-xl);background:var(--surface);box-shadow:var(--shadow-3),var(--hairline);overflow:hidden;animation:pop-in var(--dur-normal) var(--ease-out) both}.day-modal-head,.task-modal-head,.profile-head{display:flex;align-items:flex-start;gap:12px;padding:16px 18px 12px;border-bottom:1px solid var(--line)}.day-modal-head h2{margin:0;font-size:18px;font-weight:700}.day-modal-head p{margin:2px 0 0;color:var(--ink-3);font-size:12.5px}.day-modal-head>div,.task-modal-heading,.profile-ident{flex:1;min-width:0}.day-modal-body,.task-modal-body,.profile-body{flex:1;padding:14px 18px;overflow-y:auto}.day-section{margin-bottom:18px}.day-section:last-child{margin-bottom:0}.day-section h3{display:flex;align-items:center;gap:7px;margin:0 0 8px;color:var(--ink-2);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.day-dues,.day-events{display:flex;flex-direction:column;gap:7px}.day-dues button{display:flex;flex-direction:column;gap:6px;width:100%;padding:10px 12px;border:1px solid var(--warn-line);border-left:3px solid var(--warn);border-radius:var(--radius);background:var(--warn-soft);font:inherit;text-align:left;cursor:pointer;transition:background var(--dur-instant) var(--ease-out)}.day-dues button:hover{background:color-mix(in srgb,var(--warn) 12%,var(--surface))}.day-due-head{display:flex;align-items:center;gap:8px}.day-due-title{flex:1;min-width:0;font-weight:650;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-due-time{color:var(--ink-3);font-style:normal;font-size:11.5px}.day-due-meta{display:flex;align-items:center;flex-wrap:wrap;gap:5px}.day-due-author{color:var(--ink-3);font-style:normal;font-size:11.5px}.day-events li{padding:11px 13px;border:1px solid var(--line);border-left:3px solid var(--line-strong);border-radius:var(--radius);background:var(--surface)}.day-event-head{display:flex;align-items:baseline;gap:10px}.day-event-head strong{flex:1;min-width:0;font-size:13.5px;font-weight:650}.day-event-time{color:var(--ink-3);font-size:12px;white-space:nowrap}.day-event-desc{margin:6px 0 0;color:var(--ink-2);font-size:12.5px;white-space:pre-wrap}.day-event-tasks{margin:6px 0 0;color:var(--ink-3);font-size:12px}.day-event-actions{display:flex;align-items:center;gap:6px;margin-top:8px}.day-event-actions .spacer{flex:1}.day-modal-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:30px 0;color:var(--ink-3);text-align:center}.day-modal-foot,.task-modal-foot,.profile-foot{display:flex;align-items:center;gap:8px;padding:12px 18px;border-top:1px solid var(--line);background:var(--surface-2)}.day-modal-foot .spacer,.task-modal-foot .spacer,.profile-foot .spacer{flex:1}.task-modal-heading{display:flex;flex-direction:column;gap:6px;align-items:flex-start}.task-modal-heading h2{margin:0;font-size:19px;font-weight:700;line-height:1.25;text-wrap:balance}.task-modal-meta{display:flex;flex-wrap:wrap;gap:14px;padding:10px 18px;border-bottom:1px solid var(--line);background:var(--surface-2);color:var(--ink-2);font-size:12.5px}.task-due,.task-author{display:inline-flex;align-items:center;gap:5px}.task-due em,.task-author em{color:var(--ink-3);font-style:normal}.task-due.is-overdue{color:var(--danger-ink);font-weight:600}.task-modal-desc{margin:0 0 14px;color:var(--ink);font-size:13.5px;line-height:1.55;white-space:pre-wrap}.task-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin-bottom:14px}.task-photos a{display:block;aspect-ratio:4 / 3;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-1),var(--hairline);transition:transform var(--dur-instant) var(--ease-out)}.task-photos a:hover{transform:translateY(-1px)}.task-photos img{width:100%;height:100%;object-fit:cover}.task-progress{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}.task-progress-list{display:flex;flex-direction:column;gap:4px}.task-progress-list li{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:var(--radius-sm);background:var(--surface-2);font-size:12.5px}.task-progress-name{flex:1;min-width:0}.task-progress-state{color:var(--ink-3);font-size:11.5px;font-weight:600}.task-progress-state.is-done{display:inline-flex;align-items:center;gap:3px;color:var(--ok-ink)}.task-done-toggle{display:inline-flex;align-items:center;gap:8px;font-weight:600;cursor:pointer}.task-progress-actions{display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px;margin-left:auto}.hw-check-btn{min-height:36px;padding-inline:10px;font-size:12px;font-weight:650}.task-teacher-subs{display:flex;flex-direction:column;gap:12px;margin-top:12px}.task-teacher-sub{padding:10px 12px;border-radius:var(--radius-md);background:var(--surface-2);box-shadow:var(--hairline)}.task-solution{display:flex;flex-direction:column;gap:12px;margin-top:16px;padding:14px;border-radius:var(--radius-md);background:linear-gradient(165deg,var(--accent-soft) 0%,var(--surface) 55%);box-shadow:inset 0 0 0 1px var(--accent-line)}.task-solution-head h3{display:inline-flex;align-items:center;gap:7px;margin:0 0 4px;font-family:var(--font-display);font-size:15px;font-weight:700;color:var(--ink)}.task-solution-head p{margin:0;color:var(--ink-2);font-size:12.5px;line-height:1.45}.task-board-mark{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--hairline)}.task-board-mark-icon{display:grid;place-items:center;width:40px;height:40px;flex:none;border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent)}.task-board-mark-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}.task-board-mark-text strong{font-size:13px;font-weight:700;color:var(--ink)}.task-board-mark-text em{overflow:hidden;color:var(--ink-3);font-size:12px;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.task-board-create{display:flex;align-items:flex-start;gap:12px;width:100%;min-height:56px;padding:12px 14px;border:0;border-radius:var(--radius-md);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line);color:var(--ink);text-align:left;cursor:pointer;transition:box-shadow .16s ease,background .16s ease,transform .16s ease}.task-board-create:hover:not(:disabled){background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--accent-line);transform:translateY(-1px)}.task-board-create:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.task-board-create:disabled{opacity:.7;cursor:wait}.task-board-create>svg{flex:none;margin-top:2px;color:var(--accent)}.task-board-create span{display:flex;flex-direction:column;gap:2px}.task-board-create strong{font-size:13.5px;font-weight:700}.task-board-create em{color:var(--ink-3);font-size:12px;font-style:normal;line-height:1.4}.task-solution-actions{display:flex;flex-wrap:wrap;gap:8px}.task-solution-actions .ghost-btn{min-height:40px}@media(prefers-reduced-motion:reduce){.task-board-create{transition:none}.task-board-create:hover:not(:disabled){transform:none}}.profile-avatar{display:grid;place-items:center;width:46px;height:46px;flex:none;border-radius:var(--radius-pill);color:var(--on-color);font-size:18px;font-weight:700;box-shadow:inset 0 1px #ffffff4d}.profile-ident h2{margin:0;font-size:18px;font-weight:700}.profile-ident p{margin:2px 0 0;color:var(--ink-3);font-size:12.5px}.profile-tags{display:flex;gap:6px;margin-top:7px}.profile-section{margin-bottom:18px}.profile-section:last-child{margin-bottom:0}.profile-section h3{display:flex;align-items:center;gap:7px;margin:0 0 8px;color:var(--ink-2);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.kind-switch{display:inline-flex;gap:3px;padding:3px;border-radius:var(--radius);background:var(--surface-sunken);box-shadow:var(--hairline)}.kind-switch button{padding:5px 13px;border:0;border-radius:var(--radius-sm);background:none;color:var(--ink-2);font:inherit;font-weight:600;cursor:pointer}.kind-switch button.is-active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}.link-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:3px;max-height:180px;overflow-y:auto}.link-picker label{display:flex;align-items:center;gap:7px;padding:5px 7px;border-radius:var(--radius-sm);font-size:12.5px;cursor:pointer}.link-picker label:hover{background:var(--surface-2)}.profile-paid{display:inline-flex;align-items:center;gap:8px;margin-bottom:10px;font-weight:600;cursor:pointer}.profile-paid em{color:var(--ink-3);font-style:normal;font-weight:500}.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}.profile-grid input{width:100%;padding:7px 10px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);font:inherit;color:var(--ink)}.profile-tasks{display:flex;flex-direction:column;gap:4px}.profile-tasks button{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);font:inherit;font-size:12.5px;text-align:left;cursor:pointer}.profile-tasks button:hover{background:var(--surface-2);border-color:var(--accent-line)}.profile-task-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-tasks em{color:var(--ink-3);font-style:normal;font-size:11.5px;white-space:nowrap}.groups-layout{display:grid;grid-template-columns:minmax(200px,260px) minmax(0,1fr);gap:16px;align-items:start}.groups-layout.is-single{grid-template-columns:1fr}.group-member-text{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;min-width:0}.group-member-text strong{font-weight:650}.group-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.group-list-item{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;border-radius:var(--radius);text-align:left;background:transparent;color:var(--ink)}.group-list-item span{font-size:11.5px;color:var(--ink-3)}.group-list-item:hover{background:var(--surface-2)}.group-list-item.is-active{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-line)}.group-detail{display:flex;flex-direction:column;gap:18px;min-width:0}.group-detail-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}.group-name-input{flex:1;min-width:160px;font:inherit;font-size:22px;font-weight:700;border:none;background:transparent;color:var(--ink);padding:2px 0}.group-name-input:focus{outline:none;box-shadow:inset 0 -2px 0 var(--accent)}.group-detail-actions{display:flex;gap:8px;flex-wrap:wrap}.group-create{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.group-create input{flex:1;min-width:180px;height:36px;padding:0 12px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);font:inherit}.group-section h3{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-size:13px;font-weight:650}.group-section h3 em{font-style:normal;font-size:11px;color:var(--ink-3);font-weight:600}.student-group-body{display:flex;flex-direction:column;gap:14px}.group-section-card{padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-1)}.group-section-card+.group-section-card{margin-top:0}.group-section:not(.group-section-card){margin-top:18px}.group-boards,.group-picker,.group-members-readonly{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.group-board-row{display:flex;align-items:center;gap:4px}.group-boards .group-board-open,.group-board-rename{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--radius);background:var(--surface);box-shadow:var(--hairline);color:var(--ink);text-align:left}.group-boards .group-board-open:hover{background:var(--surface-2)}.group-boards .group-board-open em{margin-left:auto;font-style:normal;font-size:11px;color:var(--ink-3)}.group-board-rename input{flex:1;min-width:0;border:0;background:transparent;font:inherit;font-size:13px;font-weight:600;color:var(--ink);outline:none}.group-board-rename-btn{flex:0 0 auto;opacity:.55}.group-board-row:hover .group-board-rename-btn,.group-board-rename-btn:focus-visible{opacity:1}.group-boards button:not(.icon-btn):not(.group-board-open){width:100%;display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--radius);background:var(--surface);box-shadow:var(--hairline);color:var(--ink);text-align:left}.group-boards button:not(.icon-btn):not(.group-board-open):hover{background:var(--surface-2)}.group-boards em{margin-left:auto;font-style:normal;font-size:11px;color:var(--ink-3)}.group-picker label{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--radius);cursor:pointer}.group-picker label:hover,.group-picker label.is-on{background:var(--surface-2)}.group-picker label small{display:block;font-size:11px;color:var(--ink-3)}.group-members-readonly li{display:flex;align-items:center;gap:8px;padding:6px 0}.ghost-btn.is-danger{color:var(--danger-ink)}@media(max-width:720px){.groups-layout{grid-template-columns:1fr}}.auth-screen{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:max(24px,var(--safe-t)) max(24px,var(--safe-r)) max(24px,var(--safe-b)) max(24px,var(--safe-l));background:var(--surface-2);overflow:auto}.auth-screen:before{content:"";position:fixed;inset:0;background:radial-gradient(46% 38% at 18% 12%,rgba(99,102,241,.3),transparent 68%),radial-gradient(38% 34% at 84% 8%,rgba(236,72,153,.2),transparent 66%),radial-gradient(52% 44% at 72% 96%,rgba(139,92,246,.22),transparent 70%);pointer-events:none}html[data-theme=dark] .auth-screen:before{background:radial-gradient(46% 38% at 18% 12%,rgba(255,255,255,.07),transparent 68%),radial-gradient(38% 34% at 84% 8%,rgba(129,140,248,.18),transparent 66%),radial-gradient(52% 44% at 72% 96%,rgba(255,255,255,.04),transparent 70%)}.auth-theme{position:fixed;top:max(16px,var(--safe-t));right:max(16px,var(--safe-r));z-index:2}.auth-card{position:relative;width:100%;max-width:396px;background:var(--glass-strong);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-radius:var(--radius-xl);box-shadow:var(--shadow-3),var(--hairline),var(--hairline-top);padding:32px 30px}.auth-brand{display:flex;align-items:center;gap:10px;margin-bottom:22px}.auth-brand .brand-mark{width:34px;height:34px;border-radius:12px}.auth-brand .brand-name{font-size:18px}.auth-brand .brand-product{font-size:15px}.auth-title{margin:0 0 7px;font-size:23px;font-weight:800;letter-spacing:-.03em;color:var(--ink);text-wrap:balance}.auth-subtitle{margin:0 0 20px;font-size:13px;line-height:1.55;color:var(--ink-2)}.auth-form{display:flex;flex-direction:column;gap:12px}.auth-field{display:flex;flex-direction:column;gap:5px}.auth-field>span{font-size:10.5px;font-weight:650;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}.auth-field input{font:inherit;font-size:14px;padding:10px 12px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);outline:none;transition:border-color var(--dur-instant) var(--ease-out),box-shadow var(--dur-instant) var(--ease-out)}.auth-field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}.auth-submit{justify-content:center;height:42px;margin-top:6px;font-size:14px;font-weight:650}.auth-submit:disabled{opacity:.6}.auth-error{padding:10px 12px;border-radius:var(--radius-sm);background:var(--danger-soft);box-shadow:inset 0 0 0 1px var(--danger-line);color:var(--danger-ink);font-size:12.5px;line-height:1.4}.auth-hint{margin:14px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-3);text-align:center}.auth-footer{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.auth-tabs{display:flex;gap:4px;margin-bottom:18px;padding:4px;border-radius:var(--radius);background:var(--surface-sunken);box-shadow:var(--hairline)}.auth-tabs button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px;border-radius:var(--radius-xs);font-size:12.5px;font-weight:600;color:var(--ink-2);transition:background var(--dur-instant) var(--ease-out),color var(--dur-instant) var(--ease-out)}.auth-tabs button.is-active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}.dash-account{margin-top:auto;display:flex;align-items:center;gap:9px;padding:10px 12px;border-top:1px solid var(--line)}.dash-account-avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:11.5px;font-weight:700;color:var(--on-color);box-shadow:inset 0 1px #ffffff4d;flex-shrink:0}.dash-account-text{display:flex;flex-direction:column;min-width:0;flex:1}.dash-account-name{font-size:12.5px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-account-email{font-size:11px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
