.ui-modal-backdrop{z-index:3000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a73;justify-content:center;align-items:flex-start;padding:18vh 20px 20px;animation:.16s both ui-backdrop-in;display:flex;position:fixed;inset:0}.ui-modal-panel{background:var(--card,#fff);border-radius:var(--radius-lg,12px);outline:none;flex-direction:column;width:100%;max-height:calc(82vh - 40px);animation:.22s cubic-bezier(.16,1,.3,1) both ui-panel-in;display:flex;overflow:hidden;box-shadow:0 24px 70px #02061759}.ui-modal-panel.is-sm{max-width:420px}.ui-modal-panel.is-md{max-width:560px}.ui-modal-panel.is-lg{max-width:780px}.ui-modal-panel.is-xl{max-width:1020px}@media (width<=640px){.ui-modal-backdrop{padding:10px}.ui-modal-panel{max-height:calc(100dvh - 20px)}}@keyframes ui-backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes ui-panel-in{0%{opacity:0;transform:translateY(10px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@media (prefers-reduced-motion:reduce){.ui-modal-backdrop,.ui-modal-panel{animation:none}}.ui-modal-header{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:10px;padding:16px 20px;display:flex}.ui-modal-header h2{flex:1;margin:0;font-size:16px}.ui-modal-icon{background:var(--primary-light);width:30px;height:30px;color:var(--primary);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;display:inline-flex}.ui-modal-icon.is-danger{background:var(--danger-bg);color:var(--danger-ink)}.ui-modal-close{cursor:pointer;color:var(--text-muted);border-radius:var(--radius-sm,6px);background:0 0;border:none;padding:2px 6px;font-size:20px;line-height:1;position:relative}.ui-modal-close:hover{color:var(--text);background:var(--bg)}.ui-modal-close:after{content:"";width:44px;height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ui-modal-body{padding:18px 20px;overflow-y:auto}.ui-field{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.ui-field-label{color:var(--text-muted);font-size:12px;font-weight:600}.ui-field-row{gap:12px;display:flex}@media (width<=640px){.ui-field-row{flex-wrap:wrap}.ui-field-row>.ui-field{flex-basis:100%}}.ui-modal-note{color:var(--text-muted);margin:0;font-size:12px}.ui-modal-footer{border-top:1px solid var(--border);background:var(--surface-2);flex-wrap:wrap;flex-shrink:0;justify-content:safe flex-end;gap:10px;padding:14px 20px;display:flex}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--motion-quick:90ms;--motion-short:.14s;--motion-medium:.16s;--motion-long:.28s;--motion-far:.42s;--motion-spin:.8s;--motion-breathe:1.2s;--motion-wave:1s;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-switch:cubic-bezier(.2, .8, .3, 1);--ease-exit:cubic-bezier(.4, 0, 1, 1);--primary:#2563eb;--primary-dark:#1d4ed8;--primary-light:#dbeafe;--table-fs:12.5px;--table-pad:6px 10px;--table-head-bg:#f8fafc;--table-hover:#dbeafe;--bulk-hover:var(--table-hover);--bg:#f1f5f9;--card:#fcfdff;--surface:var(--card);--surface-2:#f8fafc;--bg-subtle:var(--surface-2);--border:#e2e8f0;--border-strong:#cbd5e1;--text:#0f172a;--muted:#556577;--text-muted:#556577;--light:#94a3b8;--success:#10b981;--success-bg:#d1fae5;--success-ink:#065f46;--warning:#f59e0b;--warning-bg:#fef3c7;--warning-ink:#92400e;--danger:#ef4444;--danger-bg:#fee2e2;--danger-ink:#b91c1c;--info:#3b82f6;--info-bg:#dbeafe;--info-ink:#1e40af;--due-soon:#ea580c;--due-soon-bg:#ffedd5;--due-soon-ink:#9a3412;--due-late:var(--danger);--due-late-bg:var(--danger-bg);--due-late-ink:var(--danger-ink);--due-done:#64748b;--due-done-bg:#e6ebf2;--due-done-ink:#475569;--clash-homeroom:var(--danger);--clash-teacher:#b45309;--clash-room:#a16207;--clash-hours:#0369a1;--clash-week:#4338ca;--purple:#7c3aed;--purple-bg:#ede9fe;--purple-ink:#5b21b6;--cyan:#06b6d4;--cyan-bg:#cffafe;--cyan-ink:#155e75;--teal:#0d9488;--teal-bg:#ccfbf1;--teal-ink:#115e59;--yellow:#eab308;--yellow-bg:#fef9c3;--yellow-ink:#854d0e;--orange:#f97316;--orange-bg:#ffedd5;--orange-ink:#9a3412;--hatch-ink:#78808c29;--kind-lunch:var(--orange);--kind-lunch-bg:var(--orange-bg);--kind-lunch-ink:var(--orange-ink);--kind-lunch-hatch:var(--hatch-ink);--kind-planning:var(--yellow);--kind-planning-bg:var(--yellow-bg);--kind-planning-ink:var(--yellow-ink);--kind-planning-hatch:var(--hatch-ink);--kind-homeroom:var(--teal);--kind-homeroom-bg:var(--teal-bg);--kind-homeroom-ink:var(--teal-ink);--kind-homeroom-hatch:transparent;--kind-passing:var(--purple);--kind-passing-bg:var(--purple-bg);--kind-passing-ink:var(--purple-ink);--kind-duty:var(--border-strong);--kind-duty-bg:var(--chip-on-bg);--kind-duty-ink:var(--chip-on-ink);--kind-duty-hatch:var(--hatch-ink);--act-teacher:var(--primary);--act-teacher-bg:#eff6ff;--act-teacher-ink:#1e40af;--act-student:var(--teal);--act-student-bg:#f0fdfa;--act-student-ink:var(--teal-ink);--act-class:var(--purple);--act-class-bg:#f5f3ff;--act-class-ink:var(--purple-ink);--sidebar-bg:#0f172a;--sidebar-border:#ffffff12;--sidebar-text:#94a3b8;--sidebar-hover:#ffffff0d;--sidebar-active:#2563eb38;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--fs-xs:.6875rem;--fs-sm:.75rem;--fs-md:.8125rem;--fs-base:.875rem;--fs-lg:.9375rem;--fs-h3:clamp(.9375rem, .9rem + .2vw, 1.0625rem);--fs-h2:clamp(1rem, .92rem + .35vw, 1.1875rem);--fs-h1:clamp(1.125rem, 1rem + .6vw, 1.375rem);--fs-stat:clamp(1.5rem, 1.3rem + .9vw, 1.75rem);--lh:1.5;--radius-sm:.375rem;--radius:.5rem;--radius-md:.625rem;--radius-lg:.75rem;--radius-full:999px;--shadow-sm:0 1px 2px #0f172a0d;--shadow:0 1px 3px #0f172a1a, 0 1px 2px #0f172a0f;--shadow-md:0 4px 6px #0f172a12, 0 2px 4px #0f172a0d;--shadow-lg:0 12px 28px #0f172a1f;--skeleton-base:#e7ecf2;--sidebar-w:240px;--header-h:60px;--actband-h:57px;--above-dock:calc(var(--space-4) + 96px);--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--font-serif:Georgia, "Times New Roman", Times, serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}html,body{height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:var(--fs-base);line-height:var(--lh);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}#root{height:100%}a{color:inherit;text-decoration:none}ul{list-style:none}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}h1,h2,h3{margin:0}.page-header{background:var(--card);border-bottom:1px solid var(--border);padding:var(--space-4) var(--space-6);min-height:var(--header-h);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.page-header-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.page-header-left h1{font-size:var(--fs-h2);letter-spacing:-.01em;font-weight:600}.page-header-left p{font-size:var(--fs-sm);color:var(--muted);text-wrap:pretty;max-width:75ch;margin-top:.0625rem}.page-content{padding:var(--space-6);animation:page-content-in var(--motion-long) var(--ease-out) backwards;flex:1}@keyframes page-content-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.page-content{animation:none}}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg)}.card-header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.card-header h2{font-size:var(--fs-h3);font-weight:600}.card-body{padding:var(--space-5)}.stat-grid{gap:var(--space-4);margin-bottom:var(--space-6);grid-template-columns:repeat(auto-fill,minmax(11.875rem,1fr));display:grid}.stat-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5)}.stat-card-icon{margin-bottom:var(--space-3);font-size:1.375rem}.stat-card-icon.is-box{border-radius:var(--radius);background:var(--icon-bg,var(--primary-light));justify-content:center;align-items:center;width:2.5rem;height:2.5rem;font-size:1.25rem;display:inline-flex}.stat-card-label{font-size:var(--fs-xs);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.stat-card-value{font-size:var(--fs-stat);margin-top:var(--space-1);letter-spacing:-.02em;font-weight:700;line-height:1.15}.stat-card-sub{font-size:var(--fs-sm);color:var(--muted);margin-top:var(--space-1)}.btn{align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-4);border-radius:var(--radius);font-size:var(--fs-md);white-space:nowrap;border:1px solid #0000;font-weight:500;display:inline-flex}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-dark)}.btn-secondary{background:var(--card);color:var(--text);border-color:var(--border)}.btn-secondary:hover{background:var(--bg)}.btn-danger{background:var(--danger);color:#fff}.btn-ghost{color:var(--muted);padding:var(--space-2) var(--space-3);background:0 0;border:none}.btn-ghost:hover{color:var(--primary)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--fs-sm)}:root{--nav-active:var(--primary-light);--nav-active-ink:var(--primary-dark);--att-view-student:var(--teal);--att-view-student-ink:var(--teal-ink);--chip-on-bg:#e2e8f0;--chip-on-border:#cbd5e1;--chip-on-ink:#1e293b;--do-border:#cbd5e1;--do-ink:#334155;--do-hover-bg:#f1f5f9;--control-accent:#334155;--control-accent-hover:#1e293b;--control-accent-press:var(--text);--control-accent-ink:#f8fafc;--control-accent-ink-soft:#cbd5e1;--control-accent-shadow:0 2px 6px #0f172a2e, 0 1px 2px #0f172a1a;--io-out:#0f766e;--io-out-hover:#115e59;--io-out-press:#134e4a;--io-out-ink:#f0fdfa;--io-out-ink-soft:#ccfbf1;--io-out-shadow:0 2px 6px #0f766e38, 0 1px 2px #0f172a1a;--io-in-bg:#ccfbf1;--io-in-hover-bg:#99f6e4;--io-in-press-bg:#5eead4;--io-in-border:var(--io-out);--io-in-ink:#134e4a;--io-off-bg:#d7e7e5;--io-off-ink:#41625f;--io-off-border:#8fb3b0;--edit:#6d28d9;--edit-hover:#5b21b6;--edit-bg:#ede9fe;--edit-hover-bg:#ddd6fe;--edit-ink:#4c1d95;--edit-on-ink:#f5f3ff}.btn-create{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:600}.btn-create:hover{background:var(--primary-dark)}.btn-act{color:var(--do-ink);border-color:var(--do-border);background:0 0;font-weight:500}.btn-act:hover{background:var(--do-hover-bg);color:var(--text)}.btn-act[disabled]{opacity:.55}.btn-act-group{display:inline-flex}.btn-act-group>.btn-act{border-radius:0;margin-left:-1px}.btn-act-group>.btn-act:first-child{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius);margin-left:0}.btn-act-group>.btn-act:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius)}.btn-act-group>.btn-act:hover{z-index:1;position:relative}.btn-choose{background:var(--control-accent);color:var(--control-accent-ink);border-color:var(--control-accent);box-shadow:var(--control-accent-shadow);font-weight:600}.btn.btn-choose:hover:not(:disabled){background:var(--control-accent-hover);border-color:var(--control-accent-hover);box-shadow:var(--control-accent-shadow)}.btn.btn-choose:active:not(:disabled),.btn.btn-choose[aria-expanded=true]:not(:disabled){background:var(--control-accent-press);border-color:var(--control-accent-press)}.btn-choose-caret{transition:transform var(--motion-short) ease;line-height:1;display:inline-block}.btn-choose[aria-expanded=true] .btn-choose-caret{transform:rotate(180deg)}.btn-choose:focus-visible{outline:2px solid var(--control-accent-ink);outline-offset:-4px}@media (prefers-reduced-motion:reduce){.btn-choose-caret{transition:none}}.btn-io-out{background:var(--io-out);color:var(--io-out-ink);border-color:var(--io-out);box-shadow:var(--io-out-shadow);font-weight:600}.btn.btn-io-out:hover:not(:disabled){background:var(--io-out-hover);border-color:var(--io-out-hover);box-shadow:var(--io-out-shadow)}.btn.btn-io-out:active:not(:disabled),.btn.btn-io-out[aria-expanded=true]:not(:disabled){background:var(--io-out-press);border-color:var(--io-out-press)}.btn-io-in{background:var(--io-in-bg);color:var(--io-in-ink);border-color:var(--io-in-border);font-weight:600}.btn.btn-io-in:hover:not(:disabled){background:var(--io-in-hover-bg);border-color:var(--io-in-border)}.btn.btn-io-in:active:not(:disabled){background:var(--io-in-press-bg);border-color:var(--io-in-border)}.btn.btn-io-out[disabled],.btn.btn-io-in[disabled],.btn.btn-io-out.is-disabled,.btn.btn-io-in.is-disabled{background:var(--io-off-bg);color:var(--io-off-ink);border-color:var(--io-off-border);box-shadow:none;opacity:1}.btn-io-out:focus-visible{outline:2px solid var(--io-out-ink);outline-offset:-4px}.btn-io-in:focus-visible{outline:2px solid var(--io-in-ink);outline-offset:-4px}.btn-edit{background:var(--edit-bg);color:var(--edit-ink);border-color:var(--edit);font-weight:600}.btn.btn-edit:hover:not(:disabled){background:var(--edit-hover-bg);border-color:var(--edit);color:var(--edit-ink)}.btn.btn-edit[aria-pressed=true]:not(:disabled){background:var(--edit);border-color:var(--edit);color:var(--edit-on-ink)}.btn.btn-edit[aria-pressed=true]:hover:not(:disabled){background:var(--edit-hover);border-color:var(--edit-hover)}.btn-edit:focus-visible{outline:2px solid var(--edit-ink);outline-offset:-4px}.btn.btn-edit[aria-pressed=true]:focus-visible{outline-color:var(--edit-on-ink)}.btn-icon{border:1px solid var(--border);background:var(--card);border-radius:var(--radius);width:2.5rem;height:2.5rem;color:var(--text);justify-content:center;padding:0;font-size:1.25rem;line-height:1}@media (pointer:coarse){.btn-icon{width:2.75rem;height:2.75rem}}.btn-icon:hover:not(:disabled){background:var(--bg);border-color:var(--primary);color:var(--primary)}.form-group{gap:var(--space-1);margin-bottom:var(--space-4);flex-direction:column;display:flex}.form-label{font-size:var(--fs-sm);font-weight:500}.form-label.is-required:after{content:" *"}.form-hint{font-size:var(--fs-xs);color:var(--muted);margin-top:.125rem}.form-input,.form-select,.form-textarea{padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius);font-size:var(--fs-md);color:var(--text);background:var(--card);transition:border-color var(--motion-short), box-shadow var(--motion-short);outline:none;width:100%}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.form-dense{padding-top:3px;padding-bottom:3px}.form-grid-2{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.form-grid-3{gap:var(--space-4);grid-template-columns:1fr 1fr 1fr;display:grid}.form-grid-2>*,.form-grid-3>*,.info-grid>*{min-width:0}.form-textarea{resize:vertical;min-height:5.625rem}.table-wrapper{max-width:100%;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:var(--table-fs)}.data-table th{text-align:left;padding:var(--table-pad);font-size:var(--table-fs);color:var(--text-muted);background:var(--table-head-bg);border-bottom:2px solid var(--border);border-right:1px solid var(--border);font-weight:600}.data-table td{padding:var(--table-pad);font-size:var(--table-fs);color:var(--text);border-bottom:1px solid var(--border);border-right:1px solid var(--border);vertical-align:middle}.data-table td.text-muted,.data-table th.text-muted{color:var(--muted);font-size:var(--fs-sm)}.data-table th:last-child,.data-table td:last-child{border-right:none}.data-table tr:last-child td{border-bottom:none}.data-table tbody tr{transition:background var(--motion-short) ease}.data-table tbody tr:hover td{background:var(--table-hover)}.data-table .actions{gap:var(--space-2);display:flex}.warn-note{background:var(--warning-bg);border:1px solid var(--warning);border-radius:var(--radius-sm,8px);color:var(--warning-ink);padding:10px 14px}.hr-unplaced-note{margin:var(--space-3) 0 0;font-size:var(--fs-sm)}.ok-note{background:var(--success-bg);border:1px solid var(--success);border-radius:var(--radius-sm,8px);color:var(--success-ink);padding:10px 14px}.school-save-status{align-items:center;gap:4px;font-size:12px;font-weight:500;display:inline-flex}.school-save-status.saving{color:var(--text-muted,#64748b)}.school-save-status.saved{color:var(--success-ink)}.school-save-status.error{color:var(--danger-ink)}.toolbar{align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.table-toolbar{align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.table-toolbar-right{align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0;margin-left:auto;display:flex}.search-wrap{position:relative}.search-wrap svg{left:var(--space-2);color:var(--light);pointer-events:none;width:.875rem;height:.875rem;position:absolute;top:50%;transform:translateY(-50%)}.search-input{padding:var(--space-2) var(--space-3) var(--space-2) 1.875rem;border:1px solid var(--border);border-radius:var(--radius);font-size:var(--fs-md);background:var(--card);width:13.125rem;transition:border-color var(--motion-short), box-shadow var(--motion-short);outline:none}.search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.badge{padding:.125rem var(--space-2);border-radius:var(--radius-full);font-size:var(--fs-xs);align-items:center;font-weight:500;display:inline-flex}.badge-green{background:var(--success-bg);color:var(--success-ink)}.badge-yellow{background:var(--warning-bg);color:var(--warning-ink)}.badge-lemon{background:var(--yellow-bg);color:var(--yellow-ink)}.badge-orange{background:var(--orange-bg);color:var(--orange-ink)}.badge-red{background:var(--danger-bg);color:#991b1b}.badge-blue{background:var(--info-bg);color:var(--info-ink)}.badge-purple{background:var(--purple-bg);color:var(--purple-ink)}.badge-gray{background:var(--bg);color:#475569}.badge-teal{background:var(--teal-bg);color:#134e4a}.avatar{background:var(--primary-light);width:1.875rem;height:1.875rem;color:var(--primary);font-size:var(--fs-xs);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.avatar-sm{width:1.5rem;height:1.5rem;font-size:.625rem}.dash-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));display:grid}.dash-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);cursor:pointer;transition:box-shadow var(--motion-short), transform var(--motion-short), border-color var(--motion-short);color:inherit;text-decoration:none;display:block}.dash-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong);transform:translateY(-1px)}button.dash-card{text-align:left;width:100%;font:inherit}.dash-card-icon{margin-bottom:var(--space-3);font-size:1.5rem}.dash-card-title{font-size:var(--fs-h3);margin-bottom:var(--space-1);font-weight:600}.dash-card-desc{font-size:var(--fs-sm);color:var(--muted);line-height:1.45}.cal-grid{background:var(--border);border-radius:var(--radius);grid-template-columns:repeat(7,1fr);gap:1px;display:grid;overflow:hidden}.cal-dow{background:var(--surface-2);padding:var(--space-2) var(--space-1);text-align:center;font-size:var(--fs-xs);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.cal-cell{background:var(--card);padding:var(--space-2);min-height:4.875rem;position:relative}.cal-day{font-size:var(--fs-sm);color:var(--muted);margin-bottom:var(--space-1);font-weight:500}.cal-cell.today .cal-day{color:var(--primary);font-weight:700}.cal-cell.today{background:#eff6ff}.cal-event{font-size:var(--fs-xs);padding:.125rem var(--space-1);border-radius:var(--radius-sm);background:var(--primary-light);color:var(--primary-dark);white-space:nowrap;text-overflow:ellipsis;margin-bottom:.125rem;overflow:hidden}.cal-event.danger{background:var(--danger-bg);color:#991b1b}.cal-event.success{background:var(--success-bg);color:#065f46}.cal-cell.other-month .cal-day{color:#cbd5e1}.cal-cell.other-month{background:#fafbfc}.period-row{border-bottom:1px solid var(--border);align-items:stretch;display:flex}.period-row:last-child{border-bottom:none}.period-time{width:5.625rem;padding:var(--space-4) var(--space-3);font-size:var(--fs-sm);color:var(--muted);background:var(--surface-2);border-right:1px solid var(--border);flex-shrink:0;align-items:center;font-weight:600;display:flex}.period-class{padding:var(--space-3) var(--space-4);flex:1}.period-class-name{font-size:var(--fs-base);margin-bottom:.1875rem;font-weight:600}.period-class-meta{font-size:var(--fs-sm);color:var(--muted);gap:var(--space-4);display:flex}.lp-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-3)}.lp-card-header{margin-bottom:var(--space-3);justify-content:space-between;align-items:flex-start;display:flex}.lp-card-title{font-size:var(--fs-h3);font-weight:600}.lp-review-foot{gap:var(--space-2);flex-direction:column;display:flex}.lp-review-note{gap:var(--space-1);flex-direction:column;display:flex}.lp-review-note-label{font-size:var(--fs-sm);color:var(--text-muted)}.lp-review-note textarea{resize:vertical;width:100%;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);padding:var(--space-2);border-radius:8px}.lp-review-note textarea:focus{border-color:var(--primary);outline:none}@media (width<=640px){.lp-review-note textarea{font-size:1rem}}.lp-review-acts{justify-content:space-between;align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.lp-review-state{font-size:var(--fs-sm);color:var(--text-muted)}.lp-review-buttons{gap:var(--space-2);display:flex}.lp-card-date{font-size:var(--fs-sm);color:var(--muted);margin-top:.1875rem}.lp-card-body{font-size:var(--fs-md);color:var(--muted);line-height:1.55}.lp-window-nav{gap:var(--space-2);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.lp-coverage{gap:var(--space-2) var(--space-4);margin-bottom:var(--space-3);font-size:var(--fs-sm);color:var(--muted);flex-wrap:wrap;align-items:center;display:flex}.lp-coverage-ok{color:#065f46}.lp-coverage-gap{color:#92400e;font-weight:600}.lp-group-header{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.lp-group-teacher{color:var(--muted);font-weight:500}.lp-card-editnote{font-size:var(--fs-xs);padding-top:var(--space-2);border-top:1px solid var(--border)}.incident-row{align-items:flex-start;gap:var(--space-4);padding:var(--space-4) 0;border-bottom:1px solid var(--border);display:flex}.incident-row:last-child{border-bottom:none}.incident-icon{flex-shrink:0;padding-top:1px;font-size:1.125rem}.incident-body{flex:1}.incident-title{font-size:var(--fs-md);margin-bottom:.1875rem;font-weight:600}.incident-meta{font-size:var(--fs-sm);color:var(--muted)}.att-student-row{align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border);display:flex}.att-student-row:last-child{border-bottom:none}.att-student-row.is-outside{opacity:.55}.att-outside-why{color:var(--muted);font-size:11.5px;font-weight:400;display:block}.att-not-on-register{color:var(--danger-ink);font-size:11.5px;font-weight:400;display:block}.att-name{font-size:var(--fs-md);flex:1;font-weight:500}.att-btns{gap:var(--space-2);display:flex}.att-btn{padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--fs-sm);border:1px solid var(--border);background:var(--card);transition:background var(--motion-short), border-color var(--motion-short), color var(--motion-short);font-weight:500}.att-btn.present.active{background:var(--success-bg);border-color:var(--success);color:#065f46}.att-btn.absent.active{background:var(--danger-bg);border-color:var(--danger);color:#991b1b}.att-btn.late.active{background:var(--warning-bg);border-color:var(--warning);color:var(--warning-ink)}.info-grid{gap:var(--space-3) var(--space-6);grid-template-columns:1fr 1fr;display:grid}.info-item-label{font-size:var(--fs-xs);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.125rem;font-weight:600}.info-item-value{font-size:var(--fs-base);color:var(--text)}.login-page{min-height:100vh;padding:var(--space-6);background:linear-gradient(135deg,#0f172a 0%,#1e3659 60%,#0f172a 100%);justify-content:center;align-items:center;display:flex}.login-card{background:var(--card);border-radius:var(--radius-lg);padding:var(--space-8);width:100%;max-width:25rem;box-shadow:0 24px 64px #0f172a4d}.login-brand{align-items:center;gap:var(--space-3);margin-bottom:var(--space-8);color:inherit;text-decoration:none;display:flex}.login-brand:focus-visible{outline:2px solid var(--primary);outline-offset:4px;border-radius:var(--radius)}.login-brand-logo{object-fit:contain;background:#fff;border-radius:50%;flex:none;width:2.5rem;height:2.5rem;padding:1px}.login-brand-icon{background:var(--primary);border-radius:var(--radius);justify-content:center;align-items:center;width:2.5rem;height:2.5rem;font-size:1.25rem;display:flex}.login-brand-name{font-size:var(--fs-h1);white-space:nowrap;font-weight:700}.login-brand-sub{font-size:var(--fs-xs);color:var(--muted)}.login-title{font-size:var(--fs-h1);margin-bottom:var(--space-1);font-weight:700}.login-sub{font-size:var(--fs-md);color:var(--muted);margin-bottom:var(--space-6)}.login-error{background:var(--danger-bg);color:#991b1b;padding:var(--space-2) var(--space-3);border-radius:var(--radius);font-size:var(--fs-md);margin-bottom:var(--space-4)}.ws-load-error{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.ws-plans-note{font-size:var(--fs-sm);margin:0 0 var(--space-3)}.sched-unplaced{margin-top:var(--space-3);flex-direction:column;gap:6px;font-size:13px;display:flex}.sched-unplaced-list{flex-direction:column;gap:2px;margin:0;padding-left:18px;display:flex}.sched-unplaced-list li{line-height:1.45}.sched-unplaced-why{opacity:.85;font-size:12px}.sched-unplaced-why:before{content:" — "}.sched-unplaced-do{opacity:.9}.sched-print-warn{border-left:2.5px solid var(--text);color:var(--text);break-after:avoid;page-break-after:avoid;margin:0 0 8px;padding:5px 0 5px 9px;font-size:11px;line-height:1.45}.login-btn{width:100%;padding:var(--space-3);margin-top:var(--space-1);font-size:var(--fs-base);background:var(--primary);color:#fff;border-radius:var(--radius);transition:background var(--motion-short);border:none;font-weight:600}.login-btn:hover{background:var(--primary-dark)}.login-btn:disabled{opacity:.6;cursor:not-allowed}.login-btn.login-btn-demo{margin-top:var(--space-3);background:var(--card);color:var(--primary);border:1px solid var(--primary)}.login-btn.login-btn-demo:hover{background:var(--primary-light)}.login-alt{margin-top:var(--space-5);text-align:center;font-size:var(--fs-sm);color:var(--muted)}.login-alt a{color:var(--primary);font-weight:600;text-decoration:none}.login-forgot{margin-top:var(--space-2);text-align:right}.login-alt a:hover{text-decoration:underline}@media (pointer:coarse) and (hover:none){.login-alt a{align-items:center;min-height:44px;display:inline-flex}}.google-signin{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--border);justify-content:center;display:flex;position:relative}.google-signin:before{content:"or";background:var(--surface);padding:0 var(--space-2);font-size:var(--fs-sm);color:var(--muted);position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.google-signin-holder.is-disabled{pointer-events:none;opacity:.6}.login-google-lead{margin:var(--space-2) 0}.login-google-lead .google-signin{border-top:none;align-items:center;min-height:44px;margin-top:0;padding-top:0}.login-google-lead .google-signin:before{content:none}.login-or{align-items:center;gap:var(--space-2);margin:var(--space-5) 0 var(--space-4);font-size:var(--fs-sm);color:var(--muted);display:flex}.login-or:before,.login-or:after{content:"";border-top:1px solid var(--border);flex:1}.login-schools{gap:var(--space-2);flex-direction:column;display:flex}.login-school-option{justify-content:space-between;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3);text-align:left;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:border-color var(--motion-short), background var(--motion-short);display:flex}.login-school-option:hover{border-color:var(--primary);background:var(--surface-2)}.login-school-option:disabled{opacity:.6;cursor:not-allowed}.login-school-name{color:var(--text);font-weight:600}.login-school-role{font-size:var(--fs-sm);color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.loading-screen{justify-content:center;align-items:center;gap:var(--space-1);text-align:center;height:100vh;font-size:var(--fs-base);color:var(--muted);flex-direction:column;display:flex}.loading-screen strong{font-size:var(--fs-h3);color:var(--text);font-weight:600}.empty-state{text-align:center;padding:var(--space-10) var(--space-6);color:var(--muted)}.empty-state-icon{margin-bottom:var(--space-3);opacity:.85;font-size:2.25rem}.empty-state h3{font-size:var(--fs-h3);color:var(--text);margin-bottom:var(--space-1);font-weight:600}.empty-state p{font-size:var(--fs-md);max-width:36ch;margin:0 auto;line-height:1.5}.empty-state-actions{margin-top:var(--space-5);gap:var(--space-2);flex-wrap:wrap;justify-content:center;display:flex}.section-gap{margin-bottom:var(--space-5)}.eyebrow{font-size:var(--fs-sm);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--space-3);font-weight:600}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.flex-1{flex:1}.min-w-0{min-width:0}.truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.text-muted{color:var(--muted);font-size:var(--fs-sm)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.text-nowrap{white-space:nowrap}.text-danger{color:var(--danger-ink)}.mark-note{white-space:nowrap;letter-spacing:.01em;font-size:10px;font-weight:600;line-height:1}.mark-note.is-over{color:var(--warning-ink)}.mark-note.is-refused{color:var(--danger-ink)}.font-medium{font-weight:500}.font-semibold{font-weight:600}:root{--btg-gutter:78px;--st-present-bg:#d1fae5;--st-present-fg:#065f46;--st-present-border:#6ee7b7;--st-absent-bg:#fee2e2;--st-absent-fg:#b91c1c;--st-absent-border:#fca5a5;--st-tardy-bg:#fef3c7;--st-tardy-fg:#b45309;--st-tardy-border:#fcd34d;--st-excused-bg:#dbeafe;--st-excused-fg:#1d4ed8;--st-excused-border:#93c5fd;--st-suspended-bg:#ede9fe;--st-suspended-fg:#5b21b6;--st-suspended-border:#c4b5fd;--st-graded-bg:#dcfce7;--st-graded-fg:#15803d;--st-late-bg:#ffedd5;--st-late-fg:#c2410c;--st-missing-bg:#fee2e2;--st-missing-fg:#b91c1c;--st-excused2-bg:#ede9fe;--st-excused2-fg:#6d28d9;--st-pending-bg:#f1f5f9;--st-pending-fg:#64748b}.status-pill{padding:.125rem var(--space-3);border-radius:var(--radius-full);font-size:var(--fs-sm);white-space:nowrap;transition:transform var(--motion-short) ease, filter var(--motion-short) ease;align-items:center;gap:.3125rem;font-weight:700;line-height:1.5;display:inline-flex}.status-pill .dot{background:currentColor;border-radius:50%;width:.4375rem;height:.4375rem}button.status-pill{cursor:pointer;border:none}button.status-pill:hover{filter:brightness(.96)}button.status-pill:active{transform:scale(.94)}.status-pill.present{background:var(--st-present-bg);color:var(--st-present-fg)}.status-pill.absent{background:var(--st-absent-bg);color:var(--st-absent-fg)}.status-pill.tardy{background:var(--st-tardy-bg);color:var(--st-tardy-fg)}.status-pill.excused{background:var(--st-excused-bg);color:var(--st-excused-fg)}.status-pill.graded{background:var(--st-graded-bg);color:var(--st-graded-fg)}.status-pill.late{background:var(--st-late-bg);color:var(--st-late-fg)}.status-pill.missing{background:var(--st-missing-bg);color:var(--st-missing-fg)}.status-pill.excused2{background:var(--st-excused2-bg);color:var(--st-excused2-fg)}.status-pill.pending,.status-pill.none{background:var(--st-pending-bg);color:var(--st-pending-fg)}.btn{transition:background var(--motion-short) ease, border-color var(--motion-short) ease, box-shadow var(--motion-short) ease, transform var(--motion-quick) ease}.btn:hover:not(:disabled){box-shadow:0 2px 8px #0206171a}.btn:active:not(:disabled){box-shadow:none;transform:translateY(1px)scale(.985)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary:active:not(:disabled){background:var(--primary-dark)}:where(button,a,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:var(--radius-sm)}.classcard,.dash-card,.teacher-class-row{transition:transform var(--motion-medium) ease, box-shadow var(--motion-medium) ease, border-color var(--motion-medium) ease}.classcard:hover,.dash-card:hover,.teacher-class-row:hover{transform:translateY(-2px)}.classcard:active,.dash-card:active,.teacher-class-row:active{transform:translateY(0)scale(.99)}tr.is-clickable{cursor:pointer}tr.is-clickable:active>td{background:color-mix(in srgb, var(--primary) 14%, var(--card));transition-duration:var(--motion-quick)}@media (prefers-reduced-motion:reduce){tr.is-clickable:active>td,.btn,.status-pill,.classcard,.dash-card,.teacher-class-row{transition:none}.btn:active,.classcard:hover,.dash-card:hover,.teacher-class-row:hover,.classcard:active,.dash-card:active,.teacher-class-row:active{transform:none}}.anim-switch{animation:anim-rise-in var(--motion-short) var(--ease-switch) backwards}.anim-load-fast{animation:anim-rise-in var(--motion-short) ease-out backwards}.anim-load-slow{animation:anim-rise-in-far var(--motion-far) var(--ease-out) backwards}@keyframes anim-rise-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes anim-rise-in-far{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.anim-exit{animation:anim-fade-out var(--motion-short) var(--ease-exit) both;pointer-events:none}@keyframes anim-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}.anim-shake{animation:anim-shake-x var(--motion-long) ease}@keyframes anim-shake-x{0%,to{transform:translate(0)}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.anim-arrive{animation:anim-arrive var(--motion-long) var(--ease-out) var(--arrive-delay,0s) backwards}@keyframes anim-arrive{0%{opacity:.4;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.anim-switch,.anim-load-fast,.anim-load-slow,.anim-shake,.anim-exit,.anim-arrive{animation:none}}@media print{*,:before,:after{transition:none!important;animation:none!important}.anim-switch,.anim-load-fast,.anim-load-slow,.anim-shake,.anim-exit,.anim-arrive{opacity:1!important;transform:none!important}}@media (width<=640px){:is(.form-input,.form-select,.form-textarea):not(.bulk-input,.table-input,.sec-cell-input,.emisrep-input){padding:.625rem var(--space-3)}:is(.form-input,.form-select,.form-textarea){font-size:1rem}.btn{min-height:2.75rem;padding:.625rem var(--space-4)}.btn-sm{min-height:2.375rem;padding:var(--space-2) var(--space-3)}button.status-pill{min-height:2.125rem}.page-content{padding:var(--space-4)}.page-header{padding:var(--space-3) var(--space-4);gap:var(--space-2) var(--space-3);flex-wrap:wrap}.page-header-left{flex:100%;min-width:0}.card-header{row-gap:var(--space-2);flex-wrap:wrap}.form-grid-2,.form-grid-3{grid-template-columns:1fr}.seg-tabs{max-width:100%}.seg-tab{padding:var(--space-2) var(--space-3);font-size:var(--fs-sm);min-width:2.75rem;min-height:2.75rem}.seg-count{margin-left:4px;padding:1px 5px}.search-input{min-height:2.75rem;font-size:1rem}}.seg-tabs{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;gap:.125rem;padding:.1875rem;display:inline-flex}.seg-tab{padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-md);color:var(--text-muted);transition:background var(--motion-short) ease, color var(--motion-short) ease, box-shadow var(--motion-short) ease;background:0 0;border:none;font-weight:600}.seg-tab:hover:not(.is-active){background:var(--surface-2,#e2e8f0);color:var(--text)}.seg-tab.is-active{background:var(--nav-active);color:var(--nav-active-ink);box-shadow:var(--shadow-sm)}.seg-count{font-size:var(--fs-xs);background:var(--surface-2,#e2e8f0);color:var(--text-muted);border-radius:999px;margin-left:6px;padding:1px 7px;font-weight:700}.seg-tab.is-active .seg-count{color:var(--nav-active-ink);background:#1d4ed824}.seg-count--ok,.seg-tab.is-active .seg-count--ok{background:var(--success-bg);color:var(--success-ink)}.seg-count--warn,.seg-tab.is-active .seg-count--warn{background:var(--warning-bg);color:var(--warning-ink)}:root{--term-active:var(--nav-active);--term-active-ink:var(--nav-active-ink)}.seg-tabs--term .seg-tab.is-active{background:var(--term-active);color:var(--term-active-ink)}.seg-tabs--term .seg-tab.is-active .seg-count{color:var(--term-active-ink);background:#1d4ed824}.people-table-wrap{overscroll-behavior-x:contain;touch-action:pan-x pan-y;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--card);overflow:auto hidden}.people-table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--table-fs)}@media (width<=640px){.people-table:has(thead th:nth-child(5)):has(tbody tr:nth-child(2)){min-width:720px}.people-table:has(thead th:nth-child(8)):has(tbody tr:nth-child(2)){min-width:1120px}.people-table:has(thead th:nth-child(11)):has(tbody tr:nth-child(2)){min-width:1540px}.people-table:has(thead th:nth-child(5)):has(tbody tr:nth-child(2)) td:first-child{white-space:nowrap}}.people-table th,.people-table td{padding:var(--table-pad);border-bottom:1px solid var(--border);border-right:1px solid var(--border);text-align:left;vertical-align:middle}.people-table th:last-child,.people-table td:last-child{border-right:none}.people-table thead th{z-index:3;background:var(--table-head-bg);color:var(--text-muted);white-space:nowrap;border-bottom:2px solid var(--border);font-weight:600;position:sticky;top:0}.people-group-row td,.people-group-row th{background:color-mix(in srgb, var(--primary) 8%, var(--bg-subtle,#f1f5f9));color:var(--primary-dark);letter-spacing:.03em;text-transform:uppercase;border-top:2px solid var(--border);border-bottom:2px solid var(--border);border-right:none;font-size:12px;font-weight:700}.people-group-count{color:var(--text-muted);text-transform:none;font-weight:500}.people-group-role-name{text-transform:none}.people-row{cursor:pointer}.people-row:hover td{background:var(--table-hover)}.people-avatar{background:var(--primary);color:#fff;border-radius:999px;justify-content:center;align-items:center;width:26px;height:26px;margin-right:8px;font-size:10.5px;font-weight:700;display:inline-flex}.people-row-name{color:var(--primary-dark);font-weight:600}button.people-row-name{font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;padding:0;font-weight:600}button.people-row-name:focus-visible{outline:2px solid var(--primary);outline-offset:2px}@media (pointer:coarse) and (hover:none){button.people-row-name{min-height:44px}}.btn-link,.btn.btn-link{font:inherit;color:var(--primary-dark);cursor:pointer;text-align:left;background:0 0;border:0;padding:0}.btn-link:hover,.btn.btn-link:hover{color:var(--primary);background:0 0;text-decoration:underline}.btn-link:focus-visible{outline:2px solid var(--primary);outline-offset:2px}@media (pointer:coarse) and (hover:none){.btn-link{min-height:44px}}.people-row:hover .people-row-name,tr.is-clickable:hover .people-row-name{text-decoration:underline}.people-actions{white-space:nowrap;justify-content:flex-end;gap:6px;display:flex}:root{--name-col-max-pinned:8.5rem}:is(.people-table,.rc-sec-table):has(thead th:nth-child(4)) :is(td,th):has(>.people-row-name){white-space:nowrap;width:1%}:is(.people-table,.rc-sec-table):has(thead th:nth-child(4)) :is(td,th).people-row-name{white-space:nowrap;width:1%}:is(.people-table,.rc-sec-table):has(thead th:nth-child(4)) :is(td,th):has(>.people-row-name){z-index:2;background:var(--card);position:sticky;left:0}:is(.people-table,.rc-sec-table):has(thead th:nth-child(4)) :is(td,th).people-row-name{z-index:2;background:var(--card);position:sticky;left:0}:is(.people-table,.rc-sec-table):has(thead th:nth-child(4)) thead :is(td,th):has(>.people-row-name){z-index:4;background:var(--table-head-bg)}:is(.people-table,.rc-sec-table):has(thead th:nth-child(4)) thead :is(td,th).people-row-name{z-index:4;background:var(--table-head-bg)}:is(.people-table,.rc-sec-table):has(thead th:nth-child(4)) tr.people-row:hover :is(td,th):has(>.people-row-name){background:var(--table-hover)}:is(.people-table,.rc-sec-table):has(thead th:nth-child(4)) tr.people-row:hover :is(td,th).people-row-name{background:var(--table-hover)}:is(.rc-sec-table,.gb-table) :is(thead,tbody) :is(th,td){border-bottom-width:2px;border-right-width:2px;border-right-color:var(--border)}.table-input{box-sizing:border-box;width:100%;font:inherit;color:inherit;background:0 0;border:1px solid #0000;border-radius:6px;padding:4px 6px}.table-input:hover{border-color:var(--border)}.table-input:focus{border-color:var(--primary);background:var(--card);box-shadow:0 0 0 2px color-mix(in srgb, var(--primary) 18%, transparent);outline:none}select.table-input{cursor:pointer}@media (width<=640px){.table-input{font-size:1rem}}.table-input-w{width:var(--table-input-w)}@media (width<=640px){.table-input-w{width:calc(var(--table-input-w) * 1.28)}:root{--btg-gutter:62px}}.pbis-points-note{font-size:var(--fs-sm);color:var(--muted);margin:0}.pbis-points-note strong{color:var(--text)}.ui-scrim{z-index:-1;position:fixed;inset:0}@keyframes ui-pop{0%{transform:scale(1)}40%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes ui-shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}.anim-pop{animation:.22s cubic-bezier(.2,.9,.3,1.4) both ui-pop}.school-save-status.saved{animation:.22s cubic-bezier(.2,.9,.3,1.4) both ui-pop;display:inline-block}.login-error{animation:.3s both ui-shake}.sec-row.is-clickable:active,.people-row:active,.class-row:active{transform:scale(.995)}.sec-row.is-clickable,.people-row,.class-row{transition:transform .12s}@media (prefers-reduced-motion:reduce){.anim-pop,.school-save-status.saved,.login-error{animation:none}.sec-row.is-clickable:active,.people-row:active,.class-row:active{transform:none}}.pub,.pub-fallback-backdrop{--pub-ink:oklch(22% .02 260);--pub-ink-soft:oklch(45% .02 260);--pub-paper:oklch(97.5% .004 250);--pub-card:oklch(99% .003 250);--pub-line:oklch(90% .01 250);--pub-dark:oklch(21% .03 262);--pub-dark-2:oklch(27% .045 262);--pub-dark-ink:oklch(93% .008 250);--pub-dark-soft:oklch(72% .02 255);--pub-blue:oklch(55% .19 262);--pub-blue-deep:oklch(48% .19 262);--pub-blue-tint:oklch(93% .04 262);--pub-blue-light:oklch(75% .13 262);--pub-green:oklch(62% .14 155);--pub-amber:oklch(75% .13 75);--pub-masthead:clamp(1.6rem, .3rem + 6.4vw, 4.25rem);--pub-display:clamp(2rem, 1.4rem + 2.6vw, 3rem);--pub-h2:clamp(1.75rem, 1.2rem + 2vw, 2.5rem);--pub-h3:clamp(1.375rem, 1.2rem + .8vw, 1.625rem);--pub-lead:clamp(1.125rem, 1rem + .6vw, 1.3125rem);--pub-body:1.0625rem;--pub-small:.9375rem;--pub-caption:.8125rem;--pub-max:1120px}.pub{font-family:var(--font);color:var(--pub-ink);background:var(--pub-paper);line-height:1.6;overflow-x:clip}.pub *{box-sizing:border-box}.pub-wrap{max-width:var(--pub-max);margin:0 auto;padding:0 24px}.pub :focus-visible{outline:2px solid var(--pub-blue);outline-offset:3px;border-radius:4px}.pub-nav :focus-visible,.pub-hero :focus-visible,.pub-cta :focus-visible,.pub-footer :focus-visible{outline-color:var(--pub-blue-light)}.pub-btn{font:inherit;cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:12px 22px;font-size:15px;font-weight:600;text-decoration:none;transition:transform .16s cubic-bezier(.22,1,.36,1),box-shadow .16s,background .16s;display:inline-flex}.pub-btn:active{transform:translateY(1px)}.pub-btn-primary{background:var(--pub-blue);color:oklch(99% .002 250);box-shadow:0 8px 20px -8px oklch(55% .19 262/.55)}.pub-btn-primary:hover{background:var(--pub-blue-deep);transform:translateY(-1px);box-shadow:0 12px 26px -8px oklch(55% .19 262/.6)}.pub-btn-ghost{color:inherit;background:0 0;border-color:oklch(60% .02 255/.45)}.pub-btn-ghost:hover{border-color:currentColor;transform:translateY(-1px)}.pub-btn-lg{border-radius:12px;padding:15px 28px;font-size:16px}.pub-nav{z-index:50;-webkit-backdrop-filter:saturate(1.4)blur(10px);backdrop-filter:saturate(1.4)blur(10px);color:var(--pub-dark-ink);background:oklch(21% .03 262/.85);border-bottom:1px solid oklch(100% 0 0/.08);position:sticky;top:0}.pub-nav-inner{align-items:center;gap:26px;height:62px;display:flex}.pub-logo{color:inherit;letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:9px;min-width:0;font-size:17px;font-weight:800;text-decoration:none;display:flex}.pub-logo img{object-fit:contain;background:#fff;border-radius:50%;flex:none;width:28px;height:28px;padding:1px}.pub-logo span{font-size:21px}.pub-nav-links{align-items:center;gap:22px;margin-left:auto;display:flex}.pub-nav-links a{color:var(--pub-dark-soft);font-size:14px;font-weight:500;text-decoration:none;transition:color .14s}.pub-nav-links a:hover{color:var(--pub-dark-ink)}.pub-nav .pub-btn{color:oklch(99% .002 250);padding:9px 16px;font-size:14px}@media (width<=640px){.pub-nav-inner{gap:14px}.pub-nav .pub-nav-demo,.legal .pub-nav-links a:not(.pub-btn){display:none}}@media (width<=350px){.pub-logo{gap:7px;font-size:15.5px}}.pub-hero{background:radial-gradient(900px 480px at 82% -10%, oklch(42% .13 262/.35), transparent 65%), radial-gradient(700px 420px at 8% 110%, oklch(35% .09 200/.25), transparent 60%), linear-gradient(160deg, var(--pub-dark) 0%, var(--pub-dark-2) 55%, var(--pub-dark) 100%);color:var(--pub-dark-ink);padding:clamp(36px,5vw,72px) 0 clamp(108px,10vw,140px);position:relative}.pub-hero h1{font-size:var(--pub-masthead);letter-spacing:-.03em;text-wrap:balance;margin:0 0 clamp(24px,3.4vw,44px);font-weight:800;line-height:1.02}.pub-hero-grid{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:center;gap:clamp(32px,5vw,72px);display:grid}.pub-deck{letter-spacing:-.005em;color:var(--pub-dark-ink);text-wrap:balance;max-width:30ch;margin:0 0 18px;font-size:clamp(1.1875rem,1rem + .9vw,1.625rem);font-weight:500;line-height:1.38}.pub-deck em{color:var(--pub-blue-light);white-space:nowrap;font-style:normal}.pub-hero-sub{font-size:var(--pub-body);color:var(--pub-dark-soft);text-wrap:pretty;max-width:46ch;margin:0 0 30px;line-height:1.7}.pub-hero-ctas{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.pub-proof{font-size:var(--pub-small);color:var(--pub-dark-soft);border-top:1px solid oklch(100% 0 0/.13);flex-wrap:wrap;gap:6px 0;margin:clamp(36px,4.4vw,56px) 0 0;padding:18px 0 0;line-height:1.6;list-style:none;display:flex}.pub-proof li+li:before{content:"·";color:oklch(72% .02 255/.6);margin:0 16px}.pub-proof a{color:inherit;text-underline-offset:3px;-webkit-text-decoration:underline oklch(72% .02 255/.5);text-decoration:underline oklch(72% .02 255/.5);transition:color .14s}.pub-proof a:hover{color:var(--pub-dark-ink)}.pub-mock{color:var(--pub-ink);background:oklch(98.5% .003 250);border-radius:14px;font-size:11px;overflow:hidden;box-shadow:0 30px 70px -22px oklch(10% .03 262/.65),0 0 0 1px oklch(100% 0 0/.09)}.pub-mock-top{border-bottom:1px solid var(--pub-line);background:oklch(94% .006 250);align-items:center;gap:6px;padding:9px 12px;display:flex}.pub-mock-dot{background:oklch(82% .01 250);border-radius:50%;width:9px;height:9px}.pub-mock-url{background:var(--pub-card);border:1px solid var(--pub-line);color:var(--pub-ink-soft);border-radius:6px;margin-left:8px;padding:2px 10px;font-size:10px}.pub-seam{background:linear-gradient(to bottom, transparent, var(--pub-paper));height:72px;margin-top:-72px;position:relative}.pub-section{padding:clamp(64px,8vw,104px) 0;scroll-margin-top:62px}.pub-features{padding-top:clamp(44px,5.5vw,72px)}.pub-section-head{max-width:46rem;margin:0 0 clamp(28px,4vw,52px)}.pub-eyebrow{letter-spacing:.09em;text-transform:uppercase;color:var(--pub-blue-deep);margin:0 0 12px;font-size:.78rem;font-weight:700;line-height:1.2}.pub-section h2{font-size:var(--pub-h2);letter-spacing:-.02em;text-wrap:balance;margin:0 0 14px;font-weight:800;line-height:1.12}.pub-section-head p:not(.pub-eyebrow){color:var(--pub-ink-soft);font-size:var(--pub-lead);text-wrap:pretty;overflow-wrap:anywhere;max-width:56ch;margin:0;line-height:1.45}.pub-section-head a{color:var(--pub-blue-deep);text-underline-offset:3px}.pub-feature{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:center;gap:clamp(28px,4.5vw,64px);padding:clamp(30px,4.2vw,52px) 0;scroll-margin-top:78px;display:grid}.pub-feature.is-flipped{grid-template-columns:minmax(0,6fr) minmax(0,5fr)}.pub-feature.is-flipped .pub-feature-copy{order:2}.pub-feature.is-flipped .pub-feature-visual{order:1}.pub-feature h3{font-size:var(--pub-h3);letter-spacing:-.01em;text-wrap:balance;margin:0 0 12px;font-weight:700;line-height:1.25}.pub-feature p{color:var(--pub-ink-soft);font-size:var(--pub-body);text-wrap:pretty;max-width:50ch;margin:0 0 16px;line-height:1.65}.pub-feature p.pub-feature-fine{font-size:var(--pub-small);max-width:60ch;margin-bottom:12px;line-height:1.6}.pub-feature p.pub-feature-fine:last-child{margin-bottom:0}.pub-feature-fine a{color:var(--pub-blue-deep);text-underline-offset:3px;font-weight:600;text-decoration:underline;text-decoration-thickness:1px}.pub-feature ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.pub-feature li{font-size:var(--pub-small);align-items:baseline;gap:9px;display:flex}.pub-feature li:before{content:"✓";color:var(--pub-green);font-weight:800}.pub-feature-visual{border:1px solid var(--pub-line);background:var(--pub-card);border-radius:14px;padding:20px;font-size:11px;transition:transform .16s cubic-bezier(.22,1,.36,1);box-shadow:0 20px 44px -20px oklch(30% .04 262/.35)}.pub-feature-visual:hover{transform:translateY(-2px)}.pub-vis-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px;display:flex}.pub-vis-head b{letter-spacing:-.01em;font-size:13px;font-weight:750}.pub-vis-head span{color:var(--pub-ink-soft);font-size:10.5px}.pub-vis-head u{letter-spacing:.07em;text-transform:uppercase;color:oklch(38% .09 155);vertical-align:1px;background:oklch(93% .05 155);border-radius:999px;margin-left:6px;padding:2px 8px;font-size:9px;font-weight:700;text-decoration:none}.pub-vis-link{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:34px;display:grid;position:relative}.pub-vis-link:before{content:"→";color:var(--pub-blue);font-size:17px;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.pub-vis-link h5{text-transform:uppercase;letter-spacing:.06em;color:var(--pub-ink-soft);margin:0 0 8px;font-size:9.5px;font-weight:700}.pub-vis-link .lrow{background:oklch(95.5% .004 250);border-radius:6px;justify-content:space-between;align-items:center;gap:8px;height:30px;margin-bottom:6px;padding:0 10px;font-size:11px;font-weight:600;display:flex}.pub-vis-link .lrow span{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.pub-vis-link .lrow b{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:750}.pub-vis-link .col:last-child .lrow{background:var(--pub-blue-tint);color:var(--pub-blue-deep)}.pub-vis-link .col:last-child .lrow.total{background:var(--pub-blue);color:oklch(99% .002 250);margin-bottom:0}.pub-more{background:var(--pub-card);border-block:1px solid var(--pub-line)}.pub-more.pub-section{padding:clamp(48px,6vw,80px) 0}.pub-more-list{border-top:1px solid var(--pub-line);margin:0}.pub-more-item{border-bottom:1px solid var(--pub-line);grid-template-columns:minmax(0,16rem) minmax(0,1fr);align-items:baseline;gap:2px 32px;padding:14px 0;display:grid}.pub-more-item dt{font-weight:650;font-size:var(--pub-body)}.pub-more-item dd{color:var(--pub-ink-soft);font-size:var(--pub-small);margin:0;line-height:1.6}.pub-start{padding-bottom:clamp(40px,5vw,64px)}.pub-steps{counter-reset:step;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,40px);display:grid}.pub-step{border-top:1px solid var(--pub-line);padding-top:14px;position:relative}.pub-step:before{counter-increment:step;content:counter(step, decimal-leading-zero);letter-spacing:-.03em;color:oklch(87% .03 262);margin-bottom:8px;font-size:42px;font-weight:800;line-height:1;display:block}.pub-step h3{letter-spacing:-.01em;margin:0 0 6px;font-size:1.3125rem;font-weight:700;line-height:1.25}.pub-step p{color:var(--pub-ink-soft);font-size:var(--pub-body);max-width:34ch;margin:0;line-height:1.6}.pub-pricing{background:linear-gradient(180deg, var(--pub-paper), oklch(95.5% .008 255))}.pub-price-panel{background:var(--pub-card);border:1px solid var(--pub-line);border-radius:18px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid;overflow:hidden;box-shadow:0 28px 60px -28px oklch(30% .05 262/.4)}.pub-price-left{padding:clamp(24px,3.5vw,44px)}.pub-price-left h3{margin:0 0 4px;font-size:19px;font-weight:750}.pub-price-left .one-plan{color:var(--pub-ink-soft);margin:0 0 22px;font-size:14.5px}.pub-price-figures{flex-wrap:wrap;align-items:center;gap:18px;margin-bottom:4px;display:flex}.pub-price-figure{align-items:baseline;gap:8px;display:flex}.pub-price-figure strong{letter-spacing:-.03em;font-size:clamp(2.4rem,2rem + 1.6vw,3.2rem);font-weight:800}.pub-price-figure span{color:var(--pub-ink-soft);font-size:15px}.pub-price-discount{border:1.5px solid var(--pub-line);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;padding:8px 16px;transition:border-color .24s,background .24s;display:flex}.pub-price-discount strong{letter-spacing:-.02em;font-size:22px;font-weight:800;line-height:1.1}.pub-price-discount span{color:var(--pub-ink-soft);text-transform:uppercase;letter-spacing:.05em;font-size:10.5px;font-weight:650}.pub-price-discount.on{background:oklch(96% .025 155);border-color:oklch(62% .14 155/.5)}.pub-price-discount.on strong{color:oklch(45% .12 155)}.pub-price-per{color:var(--pub-ink-soft);margin-bottom:26px;font-size:13.5px}.pub-slider-row{justify-content:space-between;align-items:baseline;margin-bottom:8px;font-size:14px;font-weight:650;display:flex}.pub-slider-row output{color:var(--pub-blue-deep);font-variant-numeric:tabular-nums}.pub-range{width:100%;accent-color:var(--pub-blue);height:32px}.pub-price-blocks{color:var(--pub-ink-soft);margin-bottom:22px;font-size:12.5px}.pub-price-ctas{flex-wrap:wrap;gap:10px;display:flex}.pub-price-right{border-left:1px solid var(--pub-line);background:oklch(96.5% .006 255);padding:clamp(24px,3.5vw,44px)}.pub-price-right h4{text-transform:uppercase;letter-spacing:.07em;color:var(--pub-ink-soft);margin:0 0 14px;font-size:13px}.pub-price-right ul{gap:11px;margin:0;padding:0;list-style:none;display:grid}.pub-price-right li{align-items:baseline;gap:10px;font-size:14.5px;display:flex}.pub-price-right li:before{content:"✓";color:var(--pub-green);font-weight:800}.pub-faq-section{padding-top:clamp(40px,5vw,64px)}.pub-faq-grid{grid-template-columns:minmax(0,4fr) minmax(0,7fr);align-items:start;gap:clamp(28px,5vw,72px);display:grid}.pub-faq-grid .pub-section-head{margin:0}.pub-faq{border-top:1px solid var(--pub-line)}.pub-faq details{border-bottom:1px solid var(--pub-line)}.pub-faq summary{cursor:pointer;font-weight:650;font-size:var(--pub-body);justify-content:space-between;gap:16px;padding:18px 2px;list-style:none;transition:color .14s;display:flex}.pub-faq summary:hover{color:var(--pub-blue-deep)}.pub-faq summary::-webkit-details-marker{display:none}.pub-faq summary:after{content:"+";color:var(--pub-ink-soft);font-size:22px;font-weight:400;line-height:1.2;transition:transform .18s cubic-bezier(.22,1,.36,1)}.pub-faq details[open] summary:after{transform:rotate(45deg)}.pub-faq details p{color:var(--pub-ink-soft);font-size:var(--pub-small);text-wrap:pretty;max-width:64ch;margin:0;padding:0 2px 20px;line-height:1.6}.pub-cta{background:linear-gradient(150deg, var(--pub-dark), var(--pub-dark-2));color:var(--pub-dark-ink);text-align:center;padding:clamp(64px,8vw,104px) 0}.pub-cta h2{font-size:var(--pub-h2);letter-spacing:-.02em;text-wrap:balance;margin:0 0 12px;font-weight:800;line-height:1.12}.pub-cta p{color:var(--pub-dark-soft);font-size:var(--pub-lead);margin:0 0 28px;line-height:1.45}.pub-cta-actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.pub-cta .pub-cta-note{font-size:var(--pub-caption);margin:16px 0 0;line-height:1.5}.pub-footer{background:var(--pub-dark);color:var(--pub-dark-soft);font-size:var(--pub-small);border-top:1px solid oklch(100% 0 0/.07);padding:28px 0}.pub-footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 16px;display:flex}.pub-footer a{color:var(--pub-dark-ink);white-space:nowrap;text-decoration:none}.pub-footer a:hover{text-decoration:underline}.pub-foot-legal small{font-size:var(--pub-caption);color:var(--pub-dark-soft);border-top:1px solid oklch(100% 0 0/.07);margin-top:16px;padding:14px clamp(0px,30%,24rem) 0 0;line-height:1.5;display:block}.pub-signup{grid-template-columns:minmax(0,5fr) minmax(0,7fr);min-height:100vh;display:grid}.pub-signup-aside{background:linear-gradient(165deg, var(--pub-dark), var(--pub-dark-2));color:var(--pub-dark-ink);flex-direction:column;gap:22px;padding:clamp(28px,4vw,56px);display:flex}.pub-signup-aside .pub-logo{font-size:19px}.pub-signup-aside h2{letter-spacing:-.02em;margin:10px 0 0;font-size:clamp(1.5rem,1.2rem + 1.2vw,2rem);font-weight:800;line-height:1.15}.pub-signup-aside ul{gap:12px;margin:8px 0 0;padding:0;list-style:none;display:grid}.pub-signup-aside li{color:var(--pub-dark-soft);align-items:baseline;gap:10px;font-size:14.5px;display:flex}.pub-signup-aside li:before{content:"✓";color:oklch(72% .13 155);font-weight:800}.pub-signup-aside .price-line{color:var(--pub-dark-soft);border-top:1px solid oklch(100% 0 0/.1);margin-top:auto;padding-top:18px;font-size:13.5px}.pub-signup-main{justify-content:center;align-items:center;padding:clamp(24px,4vw,56px);display:flex}.pub-signup-card{width:100%;max-width:560px}.pub-signup-card h1{letter-spacing:-.02em;margin:0 0 4px;font-size:24px;font-weight:800}.pub-signup-card .sub{color:var(--pub-ink-soft);margin:0 0 24px;font-size:14.5px}.pub-form-grid{grid-template-columns:1fr 1fr;gap:14px 16px;display:grid}.pub-field{flex-direction:column;gap:5px;display:flex}.pub-field.span2{grid-column:span 2}.pub-field label{font-size:13px;font-weight:650}.pub-field input{font:inherit;border:1px solid var(--pub-line);background:var(--pub-card);border-radius:9px;padding:10px 12px;font-size:14.5px;transition:border-color .14s,box-shadow .14s}.pub-field input:focus{border-color:var(--pub-blue);outline:none;box-shadow:0 0 0 3px oklch(55% .19 262/.18)}@media (width<=640px){.pub-field input{font-size:1rem}}.pub-field .hint{color:var(--pub-ink-soft);font-size:11.5px}.pub-field .err{color:oklch(55% .19 25);font-size:11.5px}.pub-form-section{text-transform:uppercase;letter-spacing:.07em;color:var(--pub-ink-soft);grid-column:span 2;margin-top:10px;font-size:12px;font-weight:700}.pub-signup-error{color:oklch(45% .16 25);background:oklch(96% .03 25);border:1px solid oklch(88% .06 25);border-radius:9px;grid-column:span 2;padding:10px 13px;font-size:13.5px}.pub-plan-toggle{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:20px;display:grid}.pub-plan-opt{border:1.5px solid var(--pub-line);cursor:pointer;background:var(--pub-card);text-align:left;font:inherit;border-radius:11px;padding:12px 14px;transition:border-color .14s,box-shadow .14s}.pub-plan-opt.on{border-color:var(--pub-blue);box-shadow:0 0 0 3px oklch(55% .19 262/.14)}.pub-plan-opt b{font-size:14.5px;display:block}.pub-plan-opt span{color:var(--pub-ink-soft);font-size:12px}.pub-stepper{align-items:center;gap:12px;display:flex}.pub-stepper button{border:1px solid var(--pub-line);background:var(--pub-card);cursor:pointer;border-radius:9px;width:34px;height:34px;font-size:17px;font-weight:700}.pub-stepper button:disabled{opacity:.4;cursor:default}.pub-stepper .val{text-align:center;min-width:130px}.pub-stepper .val b{font-size:16px}.pub-stepper .val span{color:var(--pub-ink-soft);font-size:11px;display:block}.pub-signup-success{text-align:center;padding:40px 0}.pub-signup-success .big{margin-bottom:10px;font-size:44px}.pub-signup-success code{background:var(--pub-blue-tint);color:var(--pub-blue-deep);border-radius:7px;padding:3px 10px;font-size:18px;font-weight:800}@media (width<=960px){.pub-hero-grid,.pub-feature,.pub-feature.is-flipped,.pub-price-panel,.pub-signup,.pub-faq-grid{grid-template-columns:1fr}.pub-feature.is-flipped .pub-feature-copy{order:1}.pub-feature.is-flipped .pub-feature-visual{order:2}.pub-price-right{border-left:none;border-top:1px solid var(--pub-line)}.pub-steps{grid-template-columns:1fr}.pub-deck{max-width:34ch}.pub-nav-links a[href=\#features],.pub-nav-links a[href=\#faq]{display:none}.pub-signup-aside{flex-flow:wrap;align-items:center;gap:10px 16px;padding:16px clamp(16px,5vw,24px)}.pub-signup-aside h2,.pub-signup-aside ul{display:none}.pub-signup-aside .price-line{border-top:none;flex:100%;margin-top:0;padding-top:0;font-size:12.5px;line-height:1.45}}@media (width<=640px){.pub-proof{flex-direction:column;gap:4px}.pub-proof li+li:before{content:none}.pub-more-item{grid-template-columns:1fr}.pub-foot-legal small{padding-right:0}}@media (width<=560px){.pub-form-grid{grid-template-columns:1fr}.pub-field.span2,.pub-form-section,.pub-signup-error{grid-column:span 1}.pub-plan-toggle{grid-template-columns:1fr}.pub-vis-link{grid-template-columns:1fr;gap:12px}.pub-vis-link:before{content:none}.pub-hero-ctas .pub-btn{flex:100%}}@media (pointer:coarse){.pub-stepper button{width:44px;height:44px}.pub-nav-links a,.pub-footer a,.pub-proof a,.pub-nav .pub-btn{padding-block:12px}.pub-logo{min-height:44px}.pub-nav-links a:not(.pub-btn){padding-inline:6px}.pub-footer-links{line-height:3}}@keyframes pub-settle{0%{transform:translateY(14px)}to{transform:none}}.pub-hero h1,.pub-deck,.pub-hero-sub,.pub-hero-ctas,.pub-mock{animation:.6s cubic-bezier(.16,1,.3,1) backwards pub-settle}.pub-deck{animation-delay:70ms}.pub-hero-sub{animation-delay:.105s}.pub-hero-ctas{animation-delay:.14s}.pub-mock{animation-delay:.21s}@media (prefers-reduced-motion:reduce){.pub-btn,.pub-faq summary,.pub-faq summary:after,.pub-feature-visual,.pub-proof a{transition:none}.pub-hero h1,.pub-deck,.pub-hero-sub,.pub-hero-ctas,.pub-mock{animation:none}}.pub-fallback-backdrop{z-index:200;background:#080f1eb8;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.pub-fallback{color:#0f172a;background:#fff;border-radius:14px;width:min(560px,100%);max-height:88vh;padding:24px 26px 22px;position:relative;overflow-y:auto;box-shadow:0 24px 60px #00000059}.pub-fallback h3{margin:0 0 6px;font-size:20px;font-weight:800}.pub-fallback-note{color:#475569;margin:0 0 16px;font-size:13.5px;line-height:1.5}.pub-fallback-x{cursor:pointer;color:#64748b;background:0 0;border:0;font-size:24px;line-height:1;position:absolute;top:10px;right:12px}.pub-fallback-x:hover{color:#0f172a}.pub-fallback-label{letter-spacing:.05em;text-transform:uppercase;color:#64748b;margin:12px 0 4px;font-size:11px;font-weight:700;display:block}.pub-fallback-row{align-items:center;gap:10px;display:flex}.pub-fallback-row code{white-space:nowrap;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;flex:1;min-width:0;padding:8px 10px;font-size:13px;overflow-x:auto}.pub-fallback-body{color:#0f172a;resize:vertical;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;width:100%;margin-top:4px;padding:10px 12px;font-family:inherit;font-size:13px;line-height:1.55}.pub-fallback-actions,.pub-try-roles{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.pub-fallback .pub-btn-ghost{color:#0f172a;border-color:#cbd5e1}.pub-shot{border-radius:0 0 14px 14px;width:100%;height:auto;display:block}.pub-feature-visual.has-shot{font-size:inherit;padding:0;overflow:hidden}.pub-feature-visual.has-shot .pub-shot{border-radius:14px}.demo-entry-choices{flex-direction:column;gap:10px;margin-top:16px;display:flex}.demo-banner{z-index:1000;background:var(--chip-on-bg);max-width:min(260px,100vw - 32px);color:var(--chip-on-ink);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);flex-wrap:wrap;align-items:center;gap:10px;padding:8px 12px;font-size:13px;line-height:1.35;display:flex;position:fixed;bottom:16px;right:16px}.demo-banner-ask{color:var(--danger-ink);flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.demo-banner-day{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.demo-banner-date{width:9.5em}.demo-timeline{flex-direction:column;flex:14rem;gap:2px;min-width:12rem;max-width:28rem;display:inline-flex}.demo-timeline-track{height:22px;display:block;position:relative}.demo-timeline-track input[type=range]{z-index:1;width:100%;margin:0;position:relative}.demo-timeline-mark{z-index:2;pointer-events:none;border:1px solid var(--surface,#fff);background:var(--primary);border-radius:50%;width:8px;height:8px;margin-left:-4px;position:absolute;top:-3px}.demo-timeline-jump{max-width:16rem}.demo-timeline-note{color:var(--danger-ink);font-size:12px}.demo-build-counts{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.demo-build-count{flex-direction:column;gap:4px;display:flex}.demo-build-chips{flex-wrap:wrap;gap:6px;display:flex}.demo-build-features{grid-template-columns:repeat(2,1fr);gap:4px 12px;display:grid}.demo-build-feature{font-size:var(--fs-sm);align-items:center;gap:6px;display:flex}.date-text-input.is-bad{border-color:var(--danger);background:var(--danger-bg);color:var(--danger-ink)}.date-text-input::placeholder{color:var(--light)}
