:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-primary:#1f4b99;--color-primary-hover:#163a78;--color-primary-muted:#e8eef8;--color-danger:#b42318;--color-danger-bg:#fef3f2;--color-danger-border:#fecdca;--color-success:#027a48;--color-bg:#f5f6f8;--color-bg-elevated:#fff;--color-bg-subtle:#eef0f3;--color-border:#d0d5dd;--color-border-strong:#98a2b3;--color-divider:#eaecf0;--color-text:#101828;--color-text-secondary:#475467;--color-text-muted:#98a2b3;--color-text-on-primary:#fff;--color-text-link:#1f4b99;--font-size-xs:12px;--font-size-sm:13px;--font-size-md:14px;--font-size-lg:16px;--font-size-xl:20px;--font-size-2xl:24px;--font-size-3xl:28px;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--line-height-tight:1.25;--line-height-base:1.5;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 2px #1018280f;--shadow-md:0 4px 12px #10182814;--sidebar-width:220px;--header-height:56px;--font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif}*,:before,:after{box-sizing:border-box}body{margin:0}.console-app{min-height:100vh;font-family:var(--font-family);font-size:var(--font-size-md);line-height:var(--line-height-base);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}.console-app button,.console-app input{font-family:inherit;font-size:inherit}.console-boot{min-height:100vh;color:var(--color-text-secondary);font-size:var(--font-size-sm);justify-content:center;align-items:center;display:flex}.console-login{min-height:100vh;padding:var(--space-6);justify-content:center;align-items:center;display:flex}.login-shell{width:100%;max-width:400px}.brand{text-align:center;margin-bottom:var(--space-8)}.brand-mark,.topbar-mark{background:var(--color-primary);color:var(--color-text-on-primary);font-weight:var(--font-weight-semibold);justify-content:center;align-items:center;display:inline-flex}.brand-mark{border-radius:var(--radius-md);width:48px;height:48px;font-size:var(--font-size-xl);margin-bottom:var(--space-4)}.brand h1{margin:0 0 var(--space-2);font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight)}.brand p{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin:0}.login-card,.project-card{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.login-card{box-shadow:var(--shadow-md);padding:var(--space-8)}.login-card h2{margin:0 0 var(--space-6);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.field{margin-bottom:var(--space-5)}.field label{margin-bottom:var(--space-2);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);display:block}.field input{width:100%;height:40px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-elevated);color:var(--color-text);outline:none}.field input::placeholder{color:var(--color-text-muted)}.field input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-muted)}.field input.is-invalid{border-color:var(--color-danger);background:var(--color-danger-bg)}.field input.is-invalid:focus{box-shadow:0 0 0 3px var(--color-danger-border)}.field-hint{margin:var(--space-2) 0 0;font-size:var(--font-size-xs);color:var(--color-text-muted)}.totp-row input{letter-spacing:.35em;font-variant-numeric:tabular-nums;text-align:center;font-size:var(--font-size-lg)}.alert{margin-bottom:var(--space-5);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-danger-border);background:var(--color-danger-bg);color:var(--color-danger);font-size:var(--font-size-sm)}.btn-primary,.btn-secondary,.chip,.link-btn,.avatar,.menu-item{cursor:pointer}.btn-primary{width:100%;height:42px;margin-top:var(--space-2);border-radius:var(--radius-md);background:var(--color-primary);color:var(--color-text-on-primary);font-weight:var(--font-weight-semibold);border:none;justify-content:center;align-items:center;display:inline-flex}.btn-primary:hover{background:var(--color-primary-hover)}.btn-primary:disabled,.btn-secondary:disabled,.link-btn:disabled,.menu-item:disabled{opacity:.55;cursor:not-allowed}.topbar{height:var(--header-height);justify-content:space-between;align-items:center;gap:var(--space-4);padding:0 var(--space-6);background:var(--color-bg-elevated);border-bottom:1px solid var(--color-border);flex-shrink:0;display:flex}.topbar-brand{align-items:center;gap:var(--space-3);min-width:0;font-weight:var(--font-weight-semibold);color:var(--color-text);text-decoration:none;display:flex}.topbar-mark{border-radius:var(--radius-sm);width:28px;height:28px;font-size:var(--font-size-sm);flex-shrink:0}.topbar-sub{font-size:var(--font-size-xs);font-weight:var(--font-weight-regular);color:var(--color-text-muted);margin-left:var(--space-2);padding-left:var(--space-2);border-left:1px solid var(--color-divider)}.user-area{align-items:center;gap:var(--space-3);display:flex;position:relative}.user-meta{text-align:right;max-width:240px;line-height:1.3}.user-meta .name,.user-meta .role{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.user-meta .name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.user-meta .role{font-size:var(--font-size-xs);color:var(--color-text-muted)}.avatar{background:var(--color-primary-muted);width:36px;height:36px;color:var(--color-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);border:1px solid var(--color-border);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.user-menu{min-width:160px;padding:var(--space-2);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:20;position:absolute;top:calc(100% + 8px);right:0}.menu-item{text-align:left;width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:var(--font-size-sm);background:0 0;border:none;display:block}.menu-item:hover:not(:disabled){background:var(--color-bg-subtle);color:var(--color-text)}.console-frame{flex-direction:column;min-height:100vh;display:flex}.console-layout{flex:1;min-height:0;display:flex}.sidebar{width:var(--sidebar-width);background:var(--color-bg-elevated);border-right:1px solid var(--color-border);padding:var(--space-4) var(--space-3);flex-shrink:0}.nav-label{padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-muted);letter-spacing:.04em}.nav-item{align-items:center;gap:var(--space-3);padding:var(--space-3);margin-bottom:var(--space-1);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--font-size-md);border:1px solid #0000;text-decoration:none;display:flex}a.nav-item:hover{background:var(--color-bg-subtle);color:var(--color-text)}.nav-item.is-active{background:var(--color-primary-muted);color:var(--color-primary);font-weight:var(--font-weight-medium)}.nav-item.is-placeholder{opacity:.65;cursor:default}.nav-dot{opacity:.5;background:currentColor;border-radius:50%;flex-shrink:0;width:8px;height:8px}.nav-item.is-active .nav-dot{opacity:1;background:var(--color-primary)}.main{padding:var(--space-6) var(--space-8);flex:1;overflow:auto}.page-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-6);display:flex}.page-header h1{margin:0 0 var(--space-2);font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight)}.page-header p{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin:0}.btn-secondary{height:36px;padding:0 var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-elevated);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);white-space:nowrap}.view-toggle{gap:var(--space-2);margin-bottom:var(--space-4);display:flex}.chip{height:28px;padding:0 var(--space-3);border:1px solid var(--color-border);background:var(--color-bg-elevated);color:var(--color-text-secondary);font-size:var(--font-size-xs);border-radius:999px}.chip.is-active{border-color:var(--color-primary);background:var(--color-primary-muted);color:var(--color-primary);font-weight:var(--font-weight-medium)}.cards{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.project-card{padding:var(--space-5);box-shadow:var(--shadow-sm)}.project-card:hover{border-color:var(--color-border-strong)}.card-top{justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.project-card h2{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin:0}.badge{height:22px;padding:0 var(--space-2);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);white-space:nowrap;border-radius:999px;align-items:center;display:inline-flex}.badge-ok{color:var(--color-success);background:#ecfdf3}.badge-muted{background:var(--color-bg-subtle);color:var(--color-text-secondary)}.card-meta{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0;padding:0;list-style:none}.card-meta li{justify-content:space-between;gap:var(--space-3);padding:var(--space-2) 0;border-top:1px solid var(--color-divider);display:flex}.card-meta li:first-child{border-top:none;padding-top:0}.card-meta .k{color:var(--color-text-muted);flex-shrink:0}.card-meta .v{text-align:right;overflow-wrap:anywhere}.card-actions{margin-top:var(--space-4);gap:var(--space-4);display:flex}.link-btn{font-size:var(--font-size-sm);color:var(--color-text-link);background:0 0;border:none;padding:0}.table-wrap{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:auto}.project-table{border-collapse:collapse;width:100%;font-size:var(--font-size-sm)}.project-table th,.project-table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--color-divider);vertical-align:middle}.project-table th{background:var(--color-bg-subtle);color:var(--color-text-secondary);font-weight:var(--font-weight-medium);font-size:var(--font-size-xs)}.project-table tr:last-child td{border-bottom:none}.empty-state,.loading-state{padding:var(--space-8);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-bg-subtle);color:var(--color-text-secondary);font-size:var(--font-size-sm)}.wire-note{margin-top:var(--space-8);padding:var(--space-4);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-bg-subtle);font-size:var(--font-size-xs);color:var(--color-text-secondary)}.wire-note strong{color:var(--color-text)}.retry-btn{margin-top:var(--space-3);height:32px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-elevated);color:var(--color-text-secondary);font-size:var(--font-size-xs);cursor:pointer}@media (max-width:720px){.console-layout{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--color-border);width:100%}.main{padding:var(--space-4)}.user-meta,.topbar-sub{display:none}}
