:root{--brand-50:#f0f4f9;--brand-100:#dce6f1;--brand-200:#b8cce3;--brand-300:#8da9ce;--brand-400:#5c83b5;--brand-500:#39629a;--brand-600:#1f4e79;--brand-700:#173d60;--brand-800:#0f2a44;--brand-900:#0a1d30;--brand-950:#050e18;--grey-50:#fafafa;--grey-100:#f5f5f5;--grey-200:#e5e5e5;--grey-300:#d4d4d4;--grey-400:#a1a1a1;--grey-500:#737373;--grey-600:#525252;--grey-700:#404040;--grey-800:#262626;--grey-900:#171717;--success:#12734f;--success-hover:#15885d;--success-bg:#12734f1a;--error:#b91c1c;--error-hover:#c53030;--error-bg:#b91c1c1a;--warning:#b26b00;--warning-hover:#c77800;--warning-bg:#b26b001f;--info:#1f4e79;--info-bg:#1f4e791a;--accent-teal:#0f766e;--accent-coral:#c2410c;--accent-amber:#b45309;--accent-lime:#3f6212;--accent-cyan:#0369a1;--accent-blue:#1d4ed8;--radius-2:2px;--radius-4:4px;--radius-6:6px;--radius-8:8px;--radius-10:10px;--radius-12:12px;--radius-14:14px;--radius-16:16px;--radius-20:20px;--radius-24:24px;--radius-32:32px;--radius-full:999px;--dur-fast:.15s;--dur-med:.2s;--dur-slow:.24s;--ease-out:cubic-bezier(.2, 0, 0, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--shadow-raised:0 2px 6px #00000014, 0 12px 28px #0000001a;--font-body:-apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, sans-serif;--font-heading:-apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, sans-serif;--font-metric:-apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--font-mono:ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace}:root,html.light,html[data-theme=light]{--color-bg:#f3f4f6;--color-bg-secondary:#fff;--color-bg-tertiary:#edeef0;--color-bg-hover:#0000000a;--color-bg-active:#00000014;--color-bg-primary-light:#1f4e7914;--color-bg-primary:#1f4e7924;--color-bg-success:#12734f14;--color-bg-error:#b91c1c14;--color-text-primary:#0f1114;--color-text-secondary:#3c3f44;--color-text-tertiary:#566073;--color-text-disabled:#a1a1a1;--color-text-onbrand:#fff;--color-text-brand:var(--brand-600);--color-icon-default:#1f2937;--color-icon-tertiary:#566073;--color-border-primary:#00000014;--color-border-secondary:#00000024;--color-border-strong:#00000038;--color-primary:#1f4e79;--color-primary-hover:#2a6296;--color-primary-active:#173d60;--color-primary-light:#39629a;--color-primary-bg:var(--color-bg-primary);--color-primary-bg-light:var(--color-bg-primary-light);--color-success:var(--success);--color-success-hover:var(--success-hover);--color-success-bg:var(--success-bg);--color-error:var(--error);--color-error-hover:var(--error-hover);--color-error-bg:var(--error-bg);--color-warning:var(--warning);--color-warning-bg:var(--warning-bg);--color-info:var(--info);--color-info-bg:var(--info-bg);--glass-bg:#fffc;--glass-bg-strong:#fffffff5;--glass-border:#0000000f;--glass-shadow:0 1px 0 #0000000a, 0 1px 2px #0000000f;--glass-shadow-lg:0 2px 4px #0000000f, 0 8px 24px #00000014}html.dark,html[data-theme=dark]{--color-bg:#101218;--color-bg-secondary:#161922;--color-bg-tertiary:#1e212c;--color-bg-hover:#ffffff0d;--color-bg-active:#ffffff17;--color-bg-primary-light:#39629a2e;--color-bg-primary:#39629a42;--color-bg-success:#12734f29;--color-bg-error:#b91c1c2e;--color-text-primary:#f2f3f5;--color-text-secondary:#d0d3da;--color-text-tertiary:#b6bdc7;--color-text-disabled:#5a5e66;--color-text-onbrand:#fff;--color-text-brand:var(--brand-300);--color-icon-default:#d0d3da;--color-icon-tertiary:#b6bdc7;--color-border-primary:#ffffff12;--color-border-secondary:#ffffff1f;--color-border-strong:#fff3;--color-primary:#39629a;--color-primary-hover:#4a76b2;--color-primary-active:#1f4e79;--color-primary-light:#5c83b5;--color-primary-bg:var(--color-bg-primary);--color-primary-bg-light:var(--color-bg-primary-light);--color-success:#2e9e77;--color-success-hover:#3bb086;--color-success-bg:#2e9e772e;--color-error:#e5736b;--color-error-hover:#ef8078;--color-error-bg:#e5736b2e;--color-warning:#e0a03c;--color-warning-bg:#e0a03c2e;--color-info:#6c93c3;--color-info-bg:#6c93c333;--glass-bg:#161922cc;--glass-bg-strong:#161922f5;--glass-border:#ffffff0f;--glass-shadow:0 1px 0 #0000004d, 0 1px 3px #00000059;--glass-shadow-lg:0 2px 6px #00000059, 0 12px 32px #0006}*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:SF Pro Text,PingFang SC,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (width>=640px){.container{max-width:640px}}@media (width>=768px){.container{max-width:768px}}@media (width>=1024px){.container{max-width:1024px}}@media (width>=1280px){.container{max-width:1280px}}@media (width>=1536px){.container{max-width:1536px}}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.bottom-0{bottom:0}.left-0{left:0}.top-0{top:0}.z-10{z-index:10}.mt-1{margin-top:.25rem}.block{display:block}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.min-h-0{min-height:0}.min-h-screen{min-height:100vh}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.overflow-y-auto{overflow-y:auto}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.px-3{padding-left:.75rem;padding-right:.75rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pl-3{padding-left:.75rem}.pr-2{padding-right:.5rem}.pt-5{padding-top:1.25rem}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-300{transition-duration:.3s}*,:before,:after{box-sizing:border-box}html,body,#app{height:100%;margin:0;padding:0}body{font-family:var(--font-body);letter-spacing:-.01em;color:var(--color-text-primary);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}button,input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer}img{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#73737340;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#73737366}.app-bg{z-index:0;pointer-events:none;background:var(--color-bg);position:fixed;inset:0;overflow:hidden}html.dark .app-bg{background:var(--color-bg)}.glass-card{background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-14)}.glass-card.hoverable:hover{border-color:var(--color-border-secondary);box-shadow:var(--shadow-raised)}.glass-sidebar,.glass-topbar{background:var(--color-bg-secondary);border:1px solid var(--color-border-primary)}.glass-sidebar{border-top:none;border-bottom:none;border-left:none}.glass-topbar{border-top:none;border-left:none;border-right:none}.nav-item{border-radius:var(--radius-10);width:100%;color:var(--color-text-secondary);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:10px;padding:9px 12px;font-size:13px;font-weight:500;transition:background-color .15s,color .15s,transform .12s;display:flex}.nav-item:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.nav-item svg,.nav-item [data-icon]{color:var(--color-icon-tertiary);transition:color .15s}.nav-item:hover svg{color:var(--color-icon-default)}.nav-item.active{color:var(--color-primary);font-weight:600}.nav-item.active svg{color:var(--color-primary)}#nav-list{position:relative}.nav-item{z-index:1;position:relative}.nav-indicator{z-index:0;background:var(--color-bg-primary-light);width:calc(100% - 16px);height:36px;transition:top var(--dur-med) var(--ease-spring), height var(--dur-med) var(--ease-spring), left var(--dur-med) var(--ease-spring), width var(--dur-med) var(--ease-spring), opacity .15s ease;will-change:top, height, transform;opacity:0;border-radius:10px;position:absolute;top:0;left:8px}.btn{border-radius:var(--radius-10);background:var(--color-bg-tertiary);height:36px;color:var(--color-text-primary);cursor:pointer;white-space:nowrap;user-select:none;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 16px;font-size:13px;font-weight:500;line-height:1;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s,transform .1s;display:inline-flex}.btn:hover{background:var(--color-bg-hover)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--color-primary);color:#fff;box-shadow:0 1px 2px #0000001f}.btn-primary:hover{background:var(--color-primary-hover);box-shadow:0 2px 8px #00000029}.btn-primary:active{background:var(--color-primary-active)}.btn-ghost{border-color:var(--color-border-primary);color:var(--color-text-secondary);background:0 0}.btn-ghost:hover{background:var(--color-bg-hover);color:var(--color-text-primary);border-color:var(--color-border-secondary)}.btn-icon{width:36px;padding:0}.btn-success{background:var(--success);color:#fff}.btn-success:hover{background:var(--success-hover)}.btn-error{background:var(--error);color:#fff}.btn-error:hover{background:var(--error-hover)}.input,select.input,textarea.input{border-radius:var(--radius-8);border:1px solid var(--color-border-primary);background:var(--color-bg-secondary);width:100%;height:36px;color:var(--color-text-primary);outline:none;padding:0 12px;font-size:13px;transition:border-color .15s,box-shadow .15s,background-color .15s;display:block}textarea.input{resize:vertical;height:auto;min-height:80px;padding:8px 12px}.input::placeholder{color:var(--color-text-disabled)}.input:hover{border-color:var(--color-border-secondary)}.input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-bg-primary-light);background:var(--color-bg-secondary)}.modal-mask{z-index:100;background:#0f0f1485;justify-content:center;align-items:center;padding:16px;animation:.18s fadeIn;display:flex;position:fixed;inset:0}.modal-box{background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-14);width:min(480px,100%);max-height:88vh;box-shadow:var(--shadow-raised);animation:modalIn var(--dur-slow) var(--ease-spring);flex-direction:column;display:flex}.modal-box.modal-lg{width:min(640px,100%)}.modal-head{border-bottom:1px solid var(--color-border-primary);color:var(--color-text-primary);padding:18px 20px 14px;font-size:15px;font-weight:600}.modal-body{flex:1;padding:18px 20px;overflow-y:auto}.modal-foot{justify-content:flex-end;align-items:center;gap:8px;padding:12px 20px 18px;display:flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:translateY(12px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.toast-stack{z-index:200;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;top:72px;right:20px}.toast{border-radius:var(--radius-10);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);box-shadow:var(--shadow-raised);color:var(--color-text-primary);pointer-events:auto;animation:toastIn .22s var(--ease-out);align-items:center;gap:8px;padding:10px 16px;font-size:13px;font-weight:500;display:flex}.toast.success{border-color:var(--success);color:var(--success)}.toast.error{border-color:var(--error);color:var(--error)}.toast.warning{border-color:var(--warning);color:var(--warning)}.toast.info{border-color:var(--info);color:var(--info)}@keyframes toastIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.avatar{background:var(--color-primary);color:#fff;font-weight:600;font-family:var(--font-metric);letter-spacing:-.01em;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.empty-state{text-align:center;color:var(--color-text-tertiary);padding:40px 20px}.empty-state-icon{border-radius:var(--radius-12);background:var(--color-bg-primary-light);width:64px;height:64px;color:var(--color-primary);justify-content:center;align-items:center;margin-bottom:12px;font-size:28px;display:inline-flex}.stat-card{border-radius:var(--radius-14);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);flex-direction:column;gap:8px;padding:18px;transition:border-color .15s,box-shadow .15s;display:flex}.stat-card:hover{border-color:var(--color-border-secondary);box-shadow:var(--shadow-raised)}.stat-card-label{color:var(--color-text-tertiary);font-size:12px;font-weight:500}.stat-card-value{font-size:28px;font-weight:700;font-family:var(--font-metric);font-variant-numeric:tabular-nums;color:var(--color-text-primary);letter-spacing:-.02em;line-height:1}.stat-card-foot{color:var(--color-text-tertiary);font-size:12px}.timer-digits{font-family:var(--font-metric);font-variant-numeric:tabular-nums}@media (width<=1024px){#page-main{padding:16px!important}.glass-sidebar{transition:transform .3s;transform:translate(-100%)}.glass-sidebar.open{transform:translate(0)}}@media (width<=640px){.stat-card-value{font-size:22px}}.tab-bar{border-radius:var(--radius-10);background:var(--color-bg-tertiary);gap:2px;padding:4px;display:inline-flex}.tab-btn{border-radius:var(--radius-8);height:32px;color:var(--color-text-secondary);background:0 0;border:none;padding:0 14px;font-size:12px;font-weight:500;transition:background-color .15s,color .15s}.tab-btn.active{background:var(--color-bg-secondary);color:var(--color-primary);font-weight:600}.chip{background:var(--color-bg-tertiary);height:28px;color:var(--color-text-secondary);border:1px solid var(--color-border-primary);border-radius:999px;align-items:center;gap:4px;padding:0 10px;font-size:12px;font-weight:500;display:inline-flex}.chip-primary{background:var(--color-bg-primary-light);color:var(--color-primary);border-color:#0000}.chip-success{background:var(--success-bg);color:var(--success);border-color:#0000}.chip-error{background:var(--error-bg);color:var(--error);border-color:#0000}.chip-warning{background:var(--warning-bg);color:var(--warning);border-color:#0000}.schedule-table{border-collapse:separate;border-spacing:6px;width:100%;min-width:760px}.schedule-table th,.schedule-table td{vertical-align:top;padding:6px}.schedule-table thead th{color:var(--color-text-primary);text-align:center;padding:12px 10px;font-size:13px;font-weight:600}.schedule-table thead th:first-child{color:var(--color-text-tertiary);font-size:12px}.schedule-table tbody th{color:var(--color-text-tertiary);background:var(--color-bg-tertiary);border-radius:var(--radius-8);text-align:center;min-width:56px;padding:8px 10px;font-size:12px;font-weight:600}#page-main.page-enter{animation:.24s cubic-bezier(.2,.8,.2,1) pageIn}@keyframes pageIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}html[data-input=touch] .nav-item{min-height:48px;padding-top:13px;padding-bottom:13px}html[data-input=touch] .btn,html[data-input=touch] .input,html[data-input=touch] select.input{height:44px}html[data-input=touch] .btn:active{transform:scale(.97)}html[data-input=touch]{-webkit-tap-highlight-color:transparent}html[data-input=touch] button,html[data-input=touch] .nav-item,html[data-input=touch] .pal-row{user-select:none}html[data-input=keyboard] .nav-item:hover{background:var(--color-bg-hover)}html[data-input=keyboard] :focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html[data-motion=off] *,html[data-motion=off] :before,html[data-motion=off] :after{transition:none!important;animation:none!important}html[data-motion=light] *{transition-duration:.12s!important;animation-duration:.12s!important}@media (width>=640px){.sm\:block{display:block}}@media (width>=768px){.md\:flex{display:flex}.md\:hidden{display:none}.md\:pr-6{padding-right:1.5rem}}@media (width>=1024px){.lg\:sticky{position:sticky}.lg\:hidden{display:none}}
