:root{--bg: #080c14;--surface: #0f1623;--surface-2: #161d2e;--surface-3: #1e2840;--surface-4: #253350;--border: #1e2d45;--border-soft: #1a2438;--text: #e8edf5;--text-dim: #8899b4;--text-muted: #4a5a72;--accent: #6366f1;--accent-light: #818cf8;--accent-glow: rgba(99, 102, 241, .12);--accent-border:rgba(99, 102, 241, .25);--green: #10b981;--green-dim: rgba(16, 185, 129, .12);--green-border: rgba(16, 185, 129, .25);--red: #f43f5e;--red-dim: rgba(244, 63, 94, .12);--red-border: rgba(244, 63, 94, .25);--amber: #f59e0b;--amber-dim: rgba(245, 158, 11, .12);--amber-border: rgba(245, 158, 11, .25);--cyan: #06b6d4;--cyan-dim: rgba(6, 182, 212, .12);--purple: #8b5cf6;--text-xs: 11px;--text-sm: 13px;--text-base: 15px;--text-lg: 18px;--text-xl: 24px;--text-2xl: 36px;--sp-1: 8px;--sp-2: 16px;--sp-3: 24px;--sp-4: 32px;--sp-5: 40px;--sp-6: 48px;--sp-8: 64px;--rail-width: 220px;--header-h: 56px;--radius: 10px;--radius-sm: 6px;--radius-lg: 14px}*{margin:0;padding:0;box-sizing:border-box}html{color-scheme:dark}body{background:var(--bg);color:var(--text);font-family:DM Sans,sans-serif;font-size:var(--text-sm);min-height:100vh;-webkit-text-size-adjust:100%;overflow-x:hidden;-webkit-font-smoothing:antialiased}.app-shell{display:flex;min-height:100vh}.main-area{flex:1;min-width:0;margin-left:var(--rail-width);display:flex;flex-direction:column;min-height:100vh}.page-content{padding:var(--sp-4);max-width:1120px;width:100%;flex:1}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-3)}.card-title{font-size:var(--text-xs);font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.8px;margin-bottom:var(--sp-2)}.side-rail{width:var(--rail-width);background:var(--surface);border-right:1px solid var(--border);position:fixed;left:0;top:0;bottom:0;z-index:200;display:flex;flex-direction:column;padding:var(--sp-3) 0;overflow-y:auto}.rail-brand{display:flex;align-items:center;gap:10px;padding:0 var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border-soft);margin-bottom:var(--sp-2);flex-shrink:0}.rail-monogram{width:34px;height:34px;border-radius:9px;background:var(--accent);display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:800;letter-spacing:-.5px;flex-shrink:0;box-shadow:0 0 0 1px #6366f166,0 4px 12px #6366f14d}.rail-nav{display:flex;flex-direction:column;gap:2px;padding:0 var(--sp-1);flex:1}.rail-bottom{display:flex;flex-direction:column;gap:2px;padding:var(--sp-2) var(--sp-1) 0;border-top:1px solid var(--border-soft);flex-shrink:0}.rail-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-sm);border:none;background:none;color:var(--text-dim);font-size:14px;font-weight:500;font-family:DM Sans,sans-serif;cursor:pointer;transition:background .12s,color .12s;text-align:left;width:100%;position:relative;white-space:nowrap}.rail-item:hover{background:var(--surface-2);color:var(--text)}.rail-item.active{background:var(--accent-glow);color:var(--accent-light);font-weight:600}.rail-item.active .rail-icon{color:var(--accent-light)}.rail-icon{width:16px;height:16px;flex-shrink:0;opacity:.7;transition:opacity .12s}.rail-item.active .rail-icon,.rail-item:hover .rail-icon{opacity:1}.rail-badge{margin-left:auto;min-width:18px;height:18px;border-radius:9px;background:var(--red);color:#fff;font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;padding:0 5px;flex-shrink:0}.rail-section-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);padding:8px 12px 4px}.command-bar{height:var(--header-h);background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 var(--sp-4);gap:var(--sp-2);position:sticky;top:0;z-index:100;flex-shrink:0}.btn{display:inline-flex;align-items:center;gap:6px;border-radius:var(--radius-sm);font-family:DM Sans,sans-serif;font-weight:500;cursor:pointer;transition:all .12s;white-space:nowrap;border:none;font-size:var(--text-sm);padding:8px 16px}.btn-primary{background:var(--accent);color:#fff;font-weight:600}.btn-primary:hover{background:var(--accent-light)}.btn-secondary{background:transparent;border:1px solid var(--border);color:var(--text-dim)}.btn-secondary:hover{border-color:var(--accent-border);color:var(--text)}.btn-ghost{background:none;border:none;color:var(--text-muted);padding:4px 8px}.btn-ghost:hover{color:var(--text)}.badge-green{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;background:var(--green-dim);color:var(--green);font-size:var(--text-xs);font-weight:600;border:1px solid var(--green-border)}.badge-red{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;background:var(--red-dim);color:var(--red);font-size:var(--text-xs);font-weight:600;border:1px solid var(--red-border)}.table-hover tbody tr{transition:background .08s}.table-hover tbody tr:hover{background:var(--surface-3)!important}.period-tab{padding:5px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);color:var(--text-dim);font-size:var(--text-xs);font-weight:500;cursor:pointer;transition:all .12s;font-family:DM Sans,sans-serif;white-space:nowrap}.period-tab:hover{border-color:var(--accent-border);color:var(--accent-light)}.period-tab.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.drop-zone{border:2px dashed var(--border);border-radius:var(--radius-lg);padding:var(--sp-5);text-align:center;cursor:pointer;transition:all .2s;background:var(--surface)}.drop-zone:hover,.drop-zone.active{border-color:var(--accent);background:var(--accent-glow)}.drop-zone input{display:none}.cmd-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding-top:15vh}.cmd-box{width:560px;max-width:calc(100vw - 32px);background:var(--surface-2);border:1px solid var(--surface-4);border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 32px 80px #00000080,0 0 0 1px #6366f126}.cmd-input{width:100%;background:none;border:none;outline:none;padding:16px 20px;font-size:var(--text-base);color:var(--text);font-family:DM Sans,sans-serif;border-bottom:1px solid var(--border)}.cmd-input::placeholder{color:var(--text-muted)}.cmd-results{max-height:340px;overflow-y:auto}.cmd-result{display:flex;align-items:center;gap:12px;padding:10px 20px;cursor:pointer;transition:background .08s;border:none;background:none;width:100%;text-align:left;color:var(--text-dim);font-family:DM Sans,sans-serif;font-size:var(--text-sm)}.cmd-result:hover,.cmd-result.selected{background:var(--accent-glow);color:var(--text)}.cmd-result-icon{width:28px;height:28px;border-radius:var(--radius-sm);background:var(--surface-3);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:13px}.cmd-footer{padding:8px 20px;border-top:1px solid var(--border);display:flex;gap:16px;align-items:center}.cmd-hint{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--text-muted)}.cmd-key{display:inline-block;padding:1px 5px;background:var(--surface-3);border-radius:3px;font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-dim);border:1px solid var(--border)}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.done{background:var(--green)}.status-dot.active{background:var(--amber)}.status-dot.upcoming{background:var(--surface-4);border:1.5px solid var(--text-muted)}.mono{font-family:JetBrains Mono,monospace}.green{color:var(--green)}.red{color:var(--red)}.amber{color:var(--amber)}.cyan{color:var(--cyan)}.fade-in{animation:fadeIn .35s ease both}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes countUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.scroll-x{overflow-x:auto;position:relative}.scroll-x:after{content:"";position:sticky;right:0;top:0;width:32px;height:100%;background:linear-gradient(to left,var(--surface),transparent);pointer-events:none;float:right}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2)}.grid-5{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--sp-2)}@media (max-width: 1024px){:root{--rail-width: 56px}.main-area{margin-left:var(--rail-width)}.rail-brand{padding:0 0 var(--sp-3);justify-content:center}.rail-wordmark{display:none}.rail-item{justify-content:center;padding:10px}.rail-item-label{display:none}.rail-badge{position:absolute;top:4px;right:4px;min-width:14px;height:14px;font-size:9px}.rail-section-label{display:none}.rail-bottom{padding:var(--sp-1) 0 0}.grid-5{grid-template-columns:repeat(3,1fr);gap:14px}.grid-3{grid-template-columns:repeat(2,1fr);gap:14px}}@media (max-width: 768px){:root{--rail-width: 0px}.side-rail{display:none}.main-area{margin-left:0}.bottom-tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;height:56px;background:var(--surface);border-top:1px solid var(--border);z-index:200;padding:0 var(--sp-1);padding-bottom:max(0px,env(safe-area-inset-bottom));justify-content:space-around;align-items:center}.page-content{padding:var(--sp-2);padding-bottom:72px}.grid-2{grid-template-columns:1fr;gap:12px}.grid-5{grid-template-columns:1fr 1fr;gap:12px}.instructions-nav{display:none}}@media (max-width: 480px){.card{padding:14px;border-radius:10px}.card-title{font-size:10px;margin-bottom:12px}.grid-3{grid-template-columns:1fr 1fr;gap:10px}.drop-zone{padding:var(--sp-3) var(--sp-2)}.period-tab{padding:4px 9px;font-size:10px}.command-bar{padding:0 var(--sp-2)}.page-content{padding:var(--sp-1);padding-bottom:72px}}@media (min-width: 769px){.bottom-tabbar{display:none!important}}.nav-tab{padding:9px 16px;border:none;border-bottom:2px solid transparent;background:none;color:var(--text-dim);font-size:var(--text-sm);font-weight:500;cursor:pointer;font-family:DM Sans,sans-serif;white-space:nowrap;display:inline-flex;align-items:center}.nav-tab:hover{color:var(--text)}.nav-tab.active{color:var(--accent-light);border-bottom-color:var(--accent);font-weight:600}
