:root{--sans:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:16px/1.5 var(--sans);color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,:before,:after{box-sizing:border-box}body{margin:0}#root{flex-direction:column;width:100%;height:100svh;margin:0 auto;display:flex;overflow:hidden}h1,h2,h3{color:var(--c-text);margin:0;font-weight:600}p{margin:0}.mono{font-family:var(--mono)}@keyframes spin{to{transform:rotate(360deg)}}:root{--c-primary:#2563eb;--c-primary-hover:#1d4ed8;--c-primary-fg:#fff;--c-primary-light:#dbeafe;--c-primary-subtle:#eff6ff;--c-primary-ring:#2563eb33;--c-danger:#dc2626;--c-danger-hover:#b91c1c;--c-danger-light:#fee2e2;--c-danger-subtle:#fef2f2;--c-danger-text:#991b1b;--c-danger-border:#fecaca;--c-danger-border-light:#fca5a5;--c-danger-border-mid:#f87171;--c-success:#16a34a;--c-success-light:#dcfce7;--c-success-subtle:#f0fdf4;--c-success-text:#166534;--c-success-border:#bbf7d0;--c-warning:#d97706;--c-warning-light:#fef9c3;--c-warning-text:#854d0e;--c-warning-border:#fde68a;--c-purple:#7e22ce;--c-purple-light:#f3e8ff;--c-purple-subtle:#faf5ff;--c-purple-border:#e9d5ff;--c-purple-text:#581c87;--c-purple-mid:#a855f7;--c-purple-divider:#d8b4fe;--c-bg:#fff;--c-bg-subtle:#f9fafb;--c-bg-muted:#f3f4f6;--c-border-subtle:#f3f4f6;--c-border:#e5e7eb;--c-border-strong:#d1d5db;--c-text:#111827;--c-text-secondary:#374151;--c-text-muted:#6b7280;--c-text-faint:#9ca3af;--c-overlay:#0006;--r-sm:.25rem;--r:.375rem;--r-md:.5rem;--r-lg:.75rem;--r-xl:1rem;--shadow-xs:0 1px 2px #0000000d;--shadow-sm:0 1px 3px #00000012, 0 1px 2px #0000000d;--shadow:0 2px 8px #00000012, 0 1px 3px #0000000d;--shadow-md:0 4px 16px #0000001a, 0 2px 6px #0000000f;--shadow-lg:0 8px 24px #0000001a, 0 3px 8px #0000000f;--font-sans:system-ui, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, Consolas, monospace}[data-theme=dark]{--c-primary:#3b82f6;--c-primary-hover:#60a5fa;--c-primary-fg:#fff;--c-primary-light:#1e3a5f;--c-primary-subtle:#172032;--c-primary-ring:#3b82f64d;--c-danger:#f87171;--c-danger-hover:#ef4444;--c-danger-light:#3d1515;--c-danger-subtle:#2a0f0f;--c-danger-text:#fca5a5;--c-danger-border:#7f1d1d;--c-danger-border-light:#7f1d1d;--c-danger-border-mid:#991b1b;--c-success:#4ade80;--c-success-light:#14391f;--c-success-subtle:#052e16;--c-success-text:#4ade80;--c-success-border:#14532d;--c-warning:#fbbf24;--c-warning-light:#3b2506;--c-warning-text:#fbbf24;--c-warning-border:#78350f;--c-purple:#c084fc;--c-purple-light:#2d1354;--c-purple-subtle:#1e0d3b;--c-purple-border:#6b21a8;--c-purple-text:#d8b4fe;--c-purple-mid:#c084fc;--c-purple-divider:#4c2089;--c-bg:#13161e;--c-bg-subtle:#1a1f2e;--c-bg-muted:#1e2433;--c-border-subtle:#252d3f;--c-border:#2d3748;--c-border-strong:#3d4f6a;--c-text:#e2e8f0;--c-text-secondary:#a0aec0;--c-text-muted:#718096;--c-text-faint:#4a5568;--c-overlay:#0009;--shadow-xs:0 1px 2px #0000004d;--shadow-sm:0 1px 3px #0006, 0 1px 2px #0000004d;--shadow:0 2px 8px #0006, 0 1px 3px #0000004d;--shadow-md:0 4px 16px #00000080, 0 2px 6px #0000004d;--shadow-lg:0 8px 24px #00000080, 0 3px 8px #0000004d}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=submit]):not([type=button]):not([type=reset]),textarea,select{background-color:var(--c-bg);color:var(--c-text)}.btn{border:1px solid var(--c-border-strong);border-radius:var(--r);background:var(--c-bg);color:var(--c-text-secondary);font:500 .875rem/1 var(--font-sans);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;align-items:center;gap:.375rem;padding:.375rem .75rem;text-decoration:none;transition:background .1s,border-color .1s,color .1s;display:inline-flex}.btn:hover:not(:disabled){background:var(--c-bg-subtle)}.btn:focus-visible{box-shadow:0 0 0 3px var(--c-primary-light);outline:none}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--c-primary);color:var(--c-primary-fg);border-color:#0000;font-weight:600}.btn-primary:hover:not(:disabled){background:var(--c-primary-hover);border-color:#0000}.btn-primary:disabled{background:var(--c-text-faint);opacity:1;border-color:#0000}.btn-danger{border-color:var(--c-danger-border-light);background:var(--c-bg);color:var(--c-danger)}.btn-danger:hover:not(:disabled){background:var(--c-danger-light);border-color:var(--c-danger-border-mid)}.btn-ghost{color:var(--c-text-muted);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--c-bg-subtle);color:var(--c-text)}.btn-sm{padding:.25rem .625rem;font-size:.8125rem}.btn-lg{padding:.625rem 1.25rem;font-size:.9375rem;font-weight:600}.btn-icon{color:var(--c-border-strong);background:0 0;border-color:#0000;padding:.2rem;line-height:0}.btn-icon:hover:not(:disabled){background:var(--c-bg-muted);color:var(--c-text-secondary)}.form-input,.form-select{border:1px solid var(--c-border-strong);border-radius:var(--r);background:var(--c-bg);color:var(--c-text);font:400 .875rem/1 var(--font-sans);outline:none;padding:.4375rem .625rem;transition:border-color .1s,box-shadow .1s}.form-input:focus,.form-select:focus{border-color:var(--c-primary);box-shadow:0 0 0 2px var(--c-primary-ring)}.form-label{font:500 .8125rem/1 var(--font-sans);color:var(--c-text-secondary)}.card{background:var(--c-bg);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.flash{border-radius:var(--r);font:500 .8125rem/1.4 var(--font-sans);border:1px solid;padding:.625rem .875rem}.flash-success{background:var(--c-success-light);color:var(--c-success-text);border-color:var(--c-success-border)}.flash-error{background:var(--c-danger-subtle);color:var(--c-danger-text);border-color:var(--c-danger-border)}.flash-warning{background:var(--c-warning-light);color:var(--c-warning-text);border-color:var(--c-warning-border)}.spinner{animation:.75s linear infinite spin}.badge{text-transform:capitalize;white-space:nowrap;letter-spacing:.01em;border-radius:9999px;justify-content:center;align-items:center;min-width:80px;font-weight:600;display:inline-flex}.badge-sm{padding:.1rem .4rem;font-size:.6875rem}.badge-md{padding:.125rem .5rem;font-size:.75rem}.badge-neutral{background:var(--c-bg-muted);color:var(--c-text-muted)}.sheet{flex-direction:column;height:calc(100dvh - 52px);font-size:.875rem;display:flex}.sheet-toolbar{border-bottom:1px solid var(--c-border);background:var(--c-bg-subtle);flex-shrink:0;align-items:center;gap:.5rem;padding:.625rem 1.25rem;display:flex}.sheet-toolbar--grid{grid-template-columns:1fr auto 1fr;align-items:center;display:grid}.sheet-count{color:var(--c-text-muted);font-size:.875rem}.sheet-table-wrap{flex:1;overflow:auto}.sheet-table{border-collapse:collapse;width:100%}.app-header{z-index:100;background:var(--c-bg);flex-shrink:0;justify-content:space-between;align-items:center;width:100%;height:52px;padding:0 20px;display:flex;position:sticky;top:0;box-shadow:0 1px 4px #0000000f}.app-header-left{align-items:center;gap:20px;display:flex}.app-header-home-icon{color:var(--c-text-muted);align-items:center;text-decoration:none;transition:color .1s;display:flex}.app-header-home-icon:hover{color:var(--c-primary)}.app-header-breadcrumb-link{font:500 15px/1 var(--font-sans);color:var(--c-text-muted);text-decoration:none;transition:color .1s}.app-header-breadcrumb-link:hover{color:var(--c-primary)}.app-header-breadcrumb-sep{color:var(--c-border);-webkit-user-select:none;user-select:none;font-size:15px}.app-header-page-title{font:500 15px/1 var(--font-sans);color:var(--c-text-secondary)}.app-header-subnav{align-items:center;gap:2px;display:flex}.app-header-subnav-link{border-radius:var(--r-sm);font:500 13px/1 var(--font-sans);color:var(--c-text-secondary);padding:.25rem .5rem;text-decoration:none;transition:background .1s,color .1s}.app-header-subnav-link:hover{background:var(--c-bg-subtle);color:var(--c-text)}.app-header-subnav-link--active{color:var(--c-primary);background:var(--c-primary-subtle)}.app-header-extras{align-items:center;gap:8px;display:flex}.app-header-right{align-items:center;gap:10px;display:flex}.app-header-guide-link{border-radius:var(--r-sm);font:500 13px/1 var(--font-sans);color:var(--c-text-muted);border:1px solid var(--c-border);align-items:center;gap:5px;padding:5px 10px;text-decoration:none;transition:color .1s,border-color .1s,background .1s;display:flex}.app-header-guide-link:hover{color:var(--c-primary);border-color:var(--c-primary);background:var(--c-primary-subtle)}.app-header-maintenance-badge{background:var(--c-warning-light);color:var(--c-warning-text);border:1px solid var(--c-warning-border);font:600 .6875rem/1 var(--font-sans);white-space:nowrap;border-radius:9999px;padding:.1875rem .5625rem}.app-header-avatar-wrap{position:relative}.app-header-avatar{background:var(--c-primary);width:34px;height:34px;color:var(--c-primary-fg);font:600 17px/1 var(--font-sans);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:50%;justify-content:center;align-items:center;padding:1px 0 0;transition:background .1s;display:flex}.app-header-avatar:hover{background:var(--c-primary-hover)}.app-header-avatar--simulating{color:#422006;background:#f5b50a}.app-header-avatar--simulating:hover{background:#e0a608}.app-header-sim-notice{color:#713f12;border-bottom:1px solid var(--c-border-subtle);font:400 12px/1.4 var(--font-sans);background:#fef9c3;padding:8px 14px}.app-header-sim-notice strong{font-weight:600}.app-header-exit-sim{color:#92580a;font-weight:500}.app-header-exit-sim:hover{color:#713f12;background:#fef9c3}.app-header-dropdown{background:var(--c-bg);border:1px solid var(--c-border);border-radius:var(--r-md);box-shadow:var(--shadow-md);min-width:180px;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden}.app-header-user-info{border:none;border-bottom:1px solid var(--c-border-subtle);text-align:left;cursor:pointer;background:0 0;flex-direction:column;gap:2px;width:100%;padding:12px 14px 10px;display:flex}.app-header-user-info:hover{background:var(--c-bg-subtle)}.app-header-name{font:600 13px/1 var(--font-sans);color:var(--c-text)}.app-header-email{font:400 12px/1 var(--font-sans);color:var(--c-text-muted)}.app-header-menu-item{border:none;border-bottom:1px solid var(--c-border-subtle);text-align:left;width:100%;font:400 13px/1 var(--font-sans);color:var(--c-text-secondary);cursor:pointer;background:0 0;padding:10px 14px;display:block}.app-header-menu-item:hover{background:var(--c-bg-subtle);color:var(--c-text)}.app-header-logout{text-align:left;width:100%;font:400 13px/1 var(--font-sans);color:var(--c-text-secondary);cursor:pointer;background:0 0;border:none;padding:10px 14px;display:block}.app-header-logout:hover{background:var(--c-bg-subtle);color:var(--c-danger)}.login-wrap{background:var(--c-bg-subtle);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--c-bg);border:1px solid var(--c-border);border-top:3px solid var(--c-primary);border-radius:var(--r-lg);width:100%;max-width:380px;padding:36px 40px;box-shadow:0 4px 24px #00000017,0 1px 4px #0000000d}.login-title{font:600 20px/1.2 var(--font-sans);color:var(--c-text);text-align:center;margin:0 0 28px}.login-form{flex-direction:column;gap:6px;display:flex}.login-label{font:500 13px/1 var(--font-sans);color:var(--c-text-secondary);margin-top:10px}.login-input{border:1px solid var(--c-border-strong);border-radius:var(--r);font:400 14px/1 var(--font-sans);color:var(--c-text);outline:none;padding:8px 10px;transition:border-color .1s,box-shadow .1s}.login-input:focus{border-color:var(--c-primary);box-shadow:0 0 0 2px #2563eb26}.login-error{font:400 13px/1.4 var(--font-sans);color:var(--c-danger);margin:4px 0 0}.login-btn{background:var(--c-primary);color:var(--c-primary-fg);border-radius:var(--r);font:600 14px/1 var(--font-sans);cursor:pointer;border:none;margin-top:18px;padding:10px;transition:background .1s}.login-btn:hover:not(:disabled){background:var(--c-primary-hover)}.login-btn:disabled{opacity:.6;cursor:not-allowed}.login-btn-secondary{background:var(--c-bg-subtle);color:var(--c-text-secondary);border:1px solid var(--c-border);border-radius:var(--r);font:600 14px/1 var(--font-sans);cursor:pointer;margin-top:8px;padding:10px;transition:background .1s}.login-btn-secondary:hover:not(:disabled){background:var(--c-border-subtle,var(--c-border))}.fp-back-btn{font:500 13px/1 var(--font-sans);color:var(--c-text-secondary);cursor:pointer;background:0 0;border:none;align-self:flex-start;margin-bottom:2px;padding:0}.fp-back-btn:hover{color:var(--c-text)}.change-password-email{font:400 13px/1 var(--font-mono);color:var(--c-text-muted);text-align:center;margin:-16px 0 8px}.login-input--prefilled{background:var(--c-bg-subtle);color:var(--c-text-muted);cursor:default}.register-footer{font:400 13px/1.4 var(--font-sans);color:var(--c-text-muted);text-align:center;margin:20px 0 0}.register-footer a{color:var(--c-primary);text-decoration:none}.register-footer a:hover{text-decoration:underline}.magic-mode-toggle{border:1px solid var(--c-border-strong);border-radius:var(--r);margin-bottom:20px;display:flex;overflow:hidden}.magic-mode-btn{border:none;border-right:1px solid var(--c-border-strong);font:500 .875rem/1 var(--font-sans);color:var(--c-text-muted);cursor:pointer;background:0 0;flex:1;padding:.375rem .875rem;transition:background .1s,color .1s}.magic-mode-btn:last-child{border-right:none}.magic-mode-btn:hover:not(.magic-mode-btn--active){background:var(--c-bg-subtle);color:var(--c-text)}.magic-mode-btn--active{background:var(--c-primary);color:var(--c-primary-fg)}.magic-store-select{background:var(--c-bg);cursor:pointer;width:100%;height:40px}#magic-email{box-sizing:border-box;height:40px}.magic-login-spinner{border:3px solid var(--c-border);border-top-color:var(--c-primary);border-radius:50%;width:32px;height:32px;margin:20px auto 8px;animation:.7s linear infinite magic-spin}@keyframes magic-spin{to{transform:rotate(360deg)}}.account-card{max-width:420px}.account-avatar{background:var(--c-primary);width:64px;height:64px;color:var(--c-primary-fg);font:700 26px/64px var(--font-sans);text-align:center;-webkit-user-select:none;user-select:none;border-radius:50%;margin:0 auto 16px}.account-title{margin-bottom:20px}.account-form{flex-direction:column;gap:0;display:flex}.account-field{border-bottom:1px solid var(--c-border-subtle);padding:12px 0}.account-field:last-of-type{border-bottom:none}.account-field-label{font:500 12px/1 var(--font-sans);color:var(--c-text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}.account-field-row{align-items:center;gap:8px;display:flex}.account-field-value{font:400 14px/1.4 var(--font-sans);color:var(--c-text);flex:1}.account-field-input{flex:1;margin:0}.account-field-input--short{flex:none;max-width:80px}.account-pencil-btn{cursor:pointer;color:var(--c-text-faint);border-radius:var(--r-sm);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:4px;transition:color .1s,background .1s;display:flex}.account-pencil-btn:hover{color:var(--c-primary);background:var(--c-primary-subtle)}.account-pencil{width:14px;height:14px}.account-confirm-section{border-top:1px solid var(--c-border);flex-direction:column;gap:6px;margin-top:20px;padding-top:20px;display:flex}.account-actions{align-items:center;gap:10px;margin-top:4px;display:flex}.account-actions .login-btn{flex:1;margin-top:0}.account-cancel-btn{border:1px solid var(--c-border-strong);border-radius:var(--r);font:500 14px/1 var(--font-sans);color:var(--c-text-secondary);cursor:pointer;background:0 0;padding:10px 16px;transition:background .1s,border-color .1s}.account-cancel-btn:hover{background:var(--c-bg-subtle);border-color:var(--c-text-faint)}.account-success{font:400 13px/1.4 var(--font-sans);color:var(--c-success);text-align:center;margin:12px 0 0}.account-footer{border-top:1px solid var(--c-border-subtle);text-align:center;margin-top:20px;padding-top:16px}.account-change-password-link{font:400 13px/1 var(--font-sans);color:var(--c-text-muted);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.account-change-password-link:hover{color:var(--c-text-secondary)}.account-session-count{font:400 12px/1 var(--font-sans);color:var(--c-text-faint);margin:12px 0 4px}.account-logout-all-btn{font:400 13px/1 var(--font-sans);color:var(--c-danger);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.account-logout-all-btn:hover{color:var(--c-danger-hover)}.account-appearance{border-bottom:none;padding-bottom:0}.theme-toggle{border:1px solid var(--c-border-strong);border-radius:var(--r);display:inline-flex;overflow:hidden}.theme-toggle-btn{border:none;border-right:1px solid var(--c-border-strong);font:500 .8125rem/1 var(--font-sans);color:var(--c-text-muted);cursor:pointer;background:0 0;padding:.3125rem .875rem;transition:background .1s,color .1s}.theme-toggle-btn:last-child{border-right:none}.theme-toggle-btn:hover:not(.theme-toggle-btn--active){background:var(--c-bg-subtle);color:var(--c-text)}.theme-toggle-btn--active{background:var(--c-primary);color:var(--c-primary-fg)}.schedule-home{background:var(--c-bg-subtle);flex:1;justify-content:center;align-items:center;padding:24px;display:flex}.schedule-home-inner{text-align:center;max-width:480px}.schedule-home-title{font:600 28px/1.2 var(--font-sans);color:var(--c-text);margin-bottom:12px}.schedule-home-subtitle{font:400 15px/1.5 var(--font-sans);color:var(--c-text-muted);margin-bottom:28px}.schedule-home-actions{justify-content:center;gap:12px;display:flex}.week-page{flex:1;justify-content:center;align-items:center;padding:24px;display:flex}.week-page-placeholder{text-align:center;color:var(--c-text-muted)}.week-page-placeholder h1{font:600 22px/1.2 var(--font-sans);color:var(--c-text);margin-bottom:8px}.week-page-placeholder p{font:400 14px/1.5 var(--font-sans)}
