:root{--font:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--bg:#f6f7f9;--bg-elevated:#fff;--bg-muted:#eef1f4;--bg-hover:#f0f3f6;--border:#dfe3e8;--border-strong:#c9cfd6;--text:#16202a;--text-muted:#5b6875;--text-faint:#8a96a3;--primary:#0f766e;--primary-strong:#0b5f59;--primary-soft:#d9f0ed;--primary-text:#fff;--success:#15803d;--success-soft:#dcf5e6;--warning:#b45309;--warning-soft:#fdf0d7;--danger:#b91c1c;--danger-soft:#fde2e2;--info:#1d4ed8;--info-soft:#dfe8ff;--neutral:#4b5563;--neutral-soft:#e5e7eb;--radius:10px;--radius-sm:6px;--shadow:0 1px 2px #1018280f, 0 1px 3px #1018281a;--shadow-lg:0 10px 30px #10182826;--sidebar-w:240px}@media (prefers-color-scheme:dark){:root{--bg:#0f1418;--bg-elevated:#161c22;--bg-muted:#1d252d;--bg-hover:#212a33;--border:#2a343e;--border-strong:#3a4652;--text:#e6ebf0;--text-muted:#9aa7b3;--text-faint:#6c7883;--primary:#2dd4bf;--primary-strong:#5eead4;--primary-soft:#113c39;--primary-text:#062a27;--success:#4ade80;--success-soft:#12331f;--warning:#fbbf24;--warning-soft:#3a2a0c;--danger:#f87171;--danger-soft:#3b1414;--info:#93c5fd;--info-soft:#172554;--neutral:#cbd5e1;--neutral-soft:#263038;--shadow:0 1px 2px #0006;--shadow-lg:0 10px 30px #00000080}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:650;line-height:1.25}h1{font-size:1.7rem}h2{font-size:1.25rem}h3{font-size:1.05rem}p{margin:0}code,pre{font-family:var(--mono);font-size:.9em}pre{background:var(--bg-muted);border:1px solid var(--border);border-radius:var(--radius-sm);white-space:pre-wrap;word-break:break-word;padding:12px;overflow:auto}button{font:inherit}input,select,textarea{font:inherit;color:inherit}::selection{background:var(--primary-soft)}.shell{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-w);background:var(--bg-elevated);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:4px;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0}.sidebar .brand{color:var(--text);align-items:center;gap:10px;padding:6px 10px 18px;font-size:1.05rem;font-weight:700;display:flex}.sidebar .brand img{width:28px;height:28px}.sidebar .nav-section{text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);padding:14px 10px 6px;font-size:.72rem}.sidebar a.nav{border-radius:var(--radius-sm);color:var(--text-muted);align-items:center;gap:10px;padding:8px 10px;font-weight:500;display:flex}.sidebar a.nav:hover{background:var(--bg-hover);color:var(--text);text-decoration:none}.sidebar a.nav.router-link-active{background:var(--primary-soft);color:var(--primary-strong)}.sidebar .spacer{flex:1}.sidebar .user{border-top:1px solid var(--border);color:var(--text-muted);padding:10px;font-size:.85rem;overflow:hidden}.sidebar .user strong{color:var(--text);white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.main{flex:1;min-width:0}.content{max-width:1100px;margin:0 auto;padding:28px 28px 60px}.topbar{display:none}@media (width<=860px){.sidebar{display:none}.topbar{background:var(--bg-elevated);border-bottom:1px solid var(--border);z-index:20;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex;position:sticky;top:0}.topbar .brand{align-items:center;gap:8px;font-weight:700;display:flex}.topbar .brand img{width:24px;height:24px}.topbar nav{gap:4px;display:flex;overflow-x:auto}.topbar nav a{border-radius:var(--radius-sm);color:var(--text-muted);white-space:nowrap;padding:6px 10px;font-size:.9rem}.topbar nav a.router-link-active{background:var(--primary-soft);color:var(--primary-strong)}.content{padding:18px 16px 60px}}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px;display:flex}.page-header p{color:var(--text-muted);max-width:640px;margin-top:4px}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.small{font-size:.85rem}.tiny{font-size:.75rem}.mono{font-family:var(--mono)}.nowrap{white-space:nowrap}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px}.card+.card{margin-top:16px}.card-title{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.card.subtle{box-shadow:none;background:var(--bg-muted)}.stack{flex-direction:column;gap:12px;display:flex}.stack-lg{flex-direction:column;gap:20px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.row.between{justify-content:space-between}.grid{gap:16px;display:grid}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (width<=860px){.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr 1fr}}@media (width<=560px){.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr}}.divider{background:var(--border);height:1px;margin:14px 0}.stat{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}.stat .label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.8rem}.stat .value{letter-spacing:-.02em;margin-top:4px;font-size:1.9rem;font-weight:700}.stat .hint{color:var(--text-muted);margin-top:2px;font-size:.85rem}.progress{background:var(--bg-muted);border:1px solid var(--border);border-radius:99px;height:10px;overflow:hidden}.progress>span{background:var(--primary);border-radius:99px;height:100%;transition:width .4s;display:block}.btn{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-elevated);color:var(--text);cursor:pointer;justify-content:center;align-items:center;gap:8px;padding:8px 14px;font-weight:550;line-height:1.2;text-decoration:none;transition:background .15s,border-color .15s,transform 50ms;display:inline-flex}.btn:hover{background:var(--bg-hover);text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.btn.primary:hover{background:var(--primary-strong);border-color:var(--primary-strong)}.btn.danger{background:var(--danger-soft);color:var(--danger);border-color:#0000}.btn.ghost{color:var(--text-muted);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--bg-hover);color:var(--text)}.btn.sm{padding:5px 10px;font-size:.85rem}.btn.lg{padding:12px 20px;font-size:1.05rem}.btn.block{width:100%}.field{flex-direction:column;gap:6px;display:flex}.field label,.label{color:var(--text);font-size:.85rem;font-weight:600}.field .help{color:var(--text-muted);font-size:.8rem}.field .error{color:var(--danger);font-size:.8rem}.input,.select,.textarea{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-elevated);width:100%;color:var(--text);outline:none;padding:9px 11px;transition:border-color .15s,box-shadow .15s}.input:focus,.select:focus,.textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.input.invalid{border-color:var(--danger)}.textarea{resize:vertical;min-height:110px}.checkbox{cursor:pointer;align-items:flex-start;gap:10px;display:flex}.checkbox input{width:16px;height:16px;accent-color:var(--primary);margin-top:4px}.switch{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:12px 0;display:flex}.switch:last-child{border-bottom:none}.switch .text strong{display:block}.switch .text span{color:var(--text-muted);font-size:.88rem}.switch input{width:40px;height:22px;accent-color:var(--primary);flex-shrink:0}.form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}@media (width<=640px){.form-grid{grid-template-columns:1fr}}.badge{white-space:nowrap;background:var(--neutral-soft);color:var(--neutral);border-radius:99px;align-items:center;gap:6px;padding:3px 9px;font-size:.78rem;font-weight:600;display:inline-flex}.badge:before{content:"";opacity:.8;background:currentColor;border-radius:50%;width:7px;height:7px}.badge.success{background:var(--success-soft);color:var(--success)}.badge.warning{background:var(--warning-soft);color:var(--warning)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.primary{background:var(--primary-soft);color:var(--primary-strong)}.badge.plain:before{display:none}.chip{border:1px solid var(--border-strong);background:var(--bg-elevated);cursor:pointer;color:var(--text-muted);border-radius:99px;align-items:center;gap:6px;padding:5px 11px;font-size:.85rem;display:inline-flex}.chip:hover{background:var(--bg-hover)}.chip.active{background:var(--primary-soft);border-color:var(--primary);color:var(--primary-strong)}.chip .count{opacity:.8;font-size:.75rem}.tag{background:var(--bg-muted);border:1px solid var(--border);color:var(--text-muted);border-radius:6px;padding:2px 8px;font-size:.78rem;display:inline-block}.table{border-collapse:collapse;width:100%}.table th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);border-bottom:1px solid var(--border);padding:8px 10px;font-size:.75rem}.table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:11px 10px}.table tr:last-child td{border-bottom:none}.table tr.clickable{cursor:pointer}.table tr.clickable:hover td{background:var(--bg-hover)}.table-wrap{overflow-x:auto}.list{flex-direction:column;display:flex}.list-item{border-bottom:1px solid var(--border);align-items:center;gap:14px;padding:12px 0;display:flex}.list-item:last-child{border-bottom:none}.list-item .grow{flex:1;min-width:0}.alert{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-elevated);align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.alert .icon{font-size:1.2rem;line-height:1.2}.alert strong{margin-bottom:2px;display:block}.alert p{color:var(--text-muted);font-size:.92rem}.alert.action{border-color:var(--primary);background:var(--primary-soft)}.alert.action p{color:var(--text);opacity:.85}.alert.warning{border-color:var(--warning);background:var(--warning-soft)}.alert.danger{border-color:var(--danger);background:var(--danger-soft)}.alert.info{border-color:var(--info);background:var(--info-soft)}.alert .actions{flex-shrink:0;margin-left:auto}.timeline{flex-direction:column;gap:0;display:flex}.timeline .item{grid-template-columns:18px 1fr;gap:12px;padding:0 0 16px;display:grid;position:relative}.timeline .item:before{content:"";background:var(--border);width:2px;position:absolute;top:18px;bottom:0;left:8px}.timeline .item:last-child:before{display:none}.timeline .dot{border:2px solid var(--border-strong);background:var(--bg-elevated);border-radius:50%;width:18px;height:18px;margin-top:2px}.timeline .dot.primary{border-color:var(--primary);background:var(--primary)}.timeline .dot.success{border-color:var(--success);background:var(--success)}.timeline .dot.warning{border-color:var(--warning);background:var(--warning)}.timeline .dot.danger{border-color:var(--danger);background:var(--danger)}.timeline .when{color:var(--text-faint);font-size:.78rem}.modal-backdrop{z-index:50;background:#090e148c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--bg-elevated);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-lg);width:100%;max-width:520px;padding:22px 24px}.modal h3{margin-bottom:8px}.toasts{z-index:60;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;right:20px}.toast{background:var(--text);color:var(--bg);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);max-width:360px;padding:10px 14px;font-size:.9rem}.toast.error{background:var(--danger);color:#fff}.toast.success{background:var(--success);color:#fff}.empty{text-align:center;color:var(--text-muted);padding:40px 20px}.empty h3{color:var(--text);margin-bottom:6px}.skeleton{background:linear-gradient(90deg, var(--bg-muted) 25%, var(--bg-hover) 50%, var(--bg-muted) 75%);border-radius:var(--radius-sm);background-size:200% 100%;height:14px;animation:1.2s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.steps{flex-wrap:wrap;gap:6px;margin-bottom:20px;display:flex}.steps .step{border-radius:var(--radius-sm);background:var(--bg-muted);min-width:120px;color:var(--text-muted);border:1px solid #0000;flex:1;padding:8px 10px;font-size:.82rem}.steps .step.active{background:var(--primary-soft);color:var(--primary-strong);border-color:var(--primary);font-weight:600}.steps .step.done{color:var(--success)}.kv{grid-template-columns:160px 1fr;gap:6px 14px;font-size:.92rem;display:grid}.kv dt{color:var(--text-muted)}.kv dd{margin:0}@media (width<=560px){.kv{grid-template-columns:1fr}.kv dt{margin-top:6px}}.auth-page{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{width:100%;max-width:420px}.landing{max-width:1040px;margin:0 auto;padding:24px}.landing header{justify-content:space-between;align-items:center;padding:8px 0 40px;display:flex}.landing .hero{max-width:720px;padding:40px 0 30px}.landing .hero h1{letter-spacing:-.03em;margin-bottom:16px;font-size:2.6rem;line-height:1.1}.landing .hero p{color:var(--text-muted);margin-bottom:24px;font-size:1.15rem}.landing .feature h3{margin-bottom:6px}.landing .feature p{color:var(--text-muted);font-size:.95rem}.landing footer{color:var(--text-faint);padding:40px 0 20px;font-size:.85rem}@media (width<=640px){.landing .hero h1{font-size:2rem}}
