:root{--bg: #0d0e12;--panel: #141519;--card: #1a1b22;--card-hover: #1e1f27;--border: #2a2b35;--border-light: #3a3b45;--text: #f5f5f7;--text-2: #9ca3af;--text-3: #6b7280;--accent: #7b9fe0;--accent-strong: #5e87d6;--live: #22c55e;--danger: #e53535;--radius: 12px;--radius-sm: 8px;--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-light)}.panel{background:linear-gradient(180deg,#ffffff08,#fff0 40%),var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:inset 0 1px #ffffff0a,0 1px 3px #0006}.shell{display:flex;min-height:100vh}.sidebar{width:232px;flex-shrink:0;display:flex;flex-direction:column;background:var(--panel);border-right:1px solid var(--border);padding:20px 14px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 18px}.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,var(--accent-strong),#3d5fa3);color:#fff;box-shadow:inset 0 1px #ffffff40,0 2px 6px #0006}.brand-name{font-size:.92rem;font-weight:600;letter-spacing:-.01em;line-height:1.2}.brand-sub{font-size:.68rem;color:var(--text-3);letter-spacing:.02em}.nav{display:flex;flex-direction:column;gap:2px;margin-top:6px}.nav-label{font-size:.66rem;font-weight:600;text-transform:uppercase;letter-spacing:.09em;color:var(--text-3);padding:14px 10px 6px}.nav button,.nav a{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:none;border-radius:var(--radius-sm);background:none;color:var(--text-2);font-family:var(--font);font-size:.86rem;font-weight:500;cursor:pointer;text-decoration:none;transition:background .15s,color .15s}.nav button:hover,.nav a:hover{background:#ffffff0a;color:var(--text)}.nav button.current,.nav a.current{background:#7b9fe01f;color:var(--accent)}.sidebar-footer{margin-top:auto;border-top:1px solid var(--border);padding-top:12px;display:flex;align-items:center;gap:10px}.avatar{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--card);border:1px solid var(--border-light);color:var(--text-2);font-size:.72rem;font-weight:600;flex-shrink:0}.sidebar-user{min-width:0;flex:1}.sidebar-user .name{font-size:.8rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user .role{font-size:.68rem;color:var(--text-3)}.icon-btn{display:grid;place-items:center;width:30px;height:30px;border:1px solid transparent;border-radius:var(--radius-sm);background:none;color:var(--text-3);cursor:pointer;transition:color .15s,border-color .15s,background .15s}.icon-btn:hover{color:var(--text);border-color:var(--border-light);background:var(--card)}.main{flex:1;min-width:0;padding:26px 32px 48px;max-width:1180px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:22px}.page-head h1{margin:0;font-size:1.25rem;font-weight:600;letter-spacing:-.02em}.page-head .subtitle{margin:4px 0 0;color:var(--text-3);font-size:.82rem}.page-actions{display:flex;align-items:center;gap:10px}.live{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border:1px solid rgba(34,197,94,.35);border-radius:999px;background:#22c55e14;color:var(--live);font-size:.76rem;font-weight:600;white-space:nowrap}.live.inline{border:none;background:none;padding:0}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--live);box-shadow:0 0 8px #22c55e99;animation:pulse 2s ease-in-out infinite}@keyframes pulse{50%{opacity:.35}}.spinning{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:22px}.kpi{padding:14px 18px}.kpi .label{display:flex;align-items:center;gap:7px;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3)}.kpi .value{margin-top:6px;font-size:1.45rem;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.kpi .value .unit{font-size:.78rem;font-weight:500;color:var(--text-3);margin-left:6px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.card{padding:16px 18px;transition:border-color .15s,background .15s}.card:hover{border-color:var(--border-light)}.card header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px}.card h2{margin:0;font-size:.92rem;font-weight:600;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:8px}.card .account{margin:0 0 8px;font-size:.72rem;color:var(--text-3)}.card-error{color:#f0a8a8;font-size:.84rem}.sparkline{width:100%;height:52px;margin:4px 0 10px}.sparkline .line{stroke:var(--accent)}.sparkline .area{fill:url(#spark-fill)}.stats{display:flex;gap:22px;flex-wrap:wrap;border-top:1px solid var(--border);padding-top:10px}.stat .stat-label{display:block;font-size:.64rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3)}.stat .stat-value{font-size:.98rem;font-weight:600;font-variant-numeric:tabular-nums}.btn{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border:none;border-radius:var(--radius-sm);background:var(--accent-strong);color:#fff;font-family:var(--font);font-size:.86rem;font-weight:600;cursor:pointer;box-shadow:inset 0 1px #ffffff26,0 1px 3px #0006;transition:background .15s,transform .1s}.btn:hover{background:#547dcc}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:default;transform:none}.link{background:none;border:none;padding:0;color:var(--accent);font-family:var(--font);font-size:.82rem;cursor:pointer}.link.danger{color:#f0a8a8}.banner{margin:0 0 18px;padding:10px 14px;border:1px solid #7a5b1e;border-radius:var(--radius-sm);background:#2a2110;color:#eecf8a;font-size:.84rem}.banner code{font-size:.78rem}.empty-state{display:flex;flex-direction:column;align-items:center;gap:12px;margin:90px auto 0;max-width:420px;text-align:center;padding:40px 32px}.empty-state svg{color:var(--accent)}.empty-state h2{margin:0;font-size:1.02rem;letter-spacing:-.01em}.loading{display:grid;place-items:center;min-height:60vh;color:var(--text-3);font-size:.9rem}.muted{color:var(--text-2);font-size:.86rem;line-height:1.6}.login{display:grid;place-items:center;min-height:100vh;padding:20px;background:radial-gradient(600px 320px at 50% 0%,rgba(94,135,214,.12),transparent 70%),var(--bg)}.login form{display:flex;flex-direction:column;gap:14px;width:min(360px,100%);padding:36px 32px}.login .brand{padding:0;align-self:center;flex-direction:column;text-align:center;gap:12px}.login h1{margin:0;font-size:1.05rem;font-weight:600;letter-spacing:-.01em;text-align:center}.login-hint{margin:0;color:var(--text-2);font-size:.84rem;text-align:center}.login input,.connect-form textarea{width:100%;padding:10px 13px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-family:var(--font);font-size:.9rem;transition:border-color .15s}.login input:focus,.connect-form textarea:focus{outline:none;border-color:var(--accent-strong)}.login .btn{justify-content:center;width:100%;margin-top:4px}.login-error{margin:0;color:#f0a8a8;font-size:.84rem}.login-footer{margin-top:6px;text-align:center;font-size:.7rem;color:var(--text-3)}.connections{display:flex;flex-direction:column;gap:16px;max-width:760px}.connections-toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.connections-toolbar .muted{font-size:.8rem}.explain{padding:20px 22px}.explain h2{font-size:1rem;font-weight:600;letter-spacing:-.01em;margin:0 0 8px}.steps{margin:14px 0 0;padding-left:0;list-style:none;counter-reset:stap;display:flex;flex-direction:column;gap:12px;font-size:.86rem;line-height:1.6;color:var(--text-2)}.steps li{counter-increment:stap;display:flex;gap:12px}.steps li:before{content:counter(stap);display:grid;place-items:center;width:22px;height:22px;flex-shrink:0;border-radius:50%;background:var(--card);border:1px solid var(--border-light);color:var(--accent);font-size:.7rem;font-weight:600;margin-top:2px}.steps strong{color:var(--text)}.steps a{color:var(--accent);text-decoration:none}.steps a:hover{text-decoration:underline}.steps a svg{vertical-align:-1px}.steps code,.connect-form code,.muted code{font-size:.78rem;background:var(--bg);border:1px solid var(--border);padding:1px 5px;border-radius:4px}.connect-form{padding:18px 22px;display:flex;flex-direction:column;gap:10px}.connect-form h3{margin:0;font-size:.92rem;font-weight:600}.connect-form textarea{resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem}.connect-form .btn{align-self:flex-start}.connect-success{display:flex;align-items:center;gap:6px;margin:0;color:var(--live);font-size:.84rem}.connection{padding:16px 22px}.connection h2{font-size:.88rem}.property-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column}.property-list li+li{border-top:1px solid var(--border)}.property-list label{display:flex;align-items:center;gap:10px;padding:8px 2px;font-size:.86rem;cursor:pointer}.property-list input[type=checkbox]{accent-color:var(--accent-strong)}.confirm{font-size:.8rem;color:var(--text-2);white-space:nowrap}.backlink{display:inline-flex;align-items:center;gap:6px;margin-bottom:14px;color:var(--text-3);font-size:.82rem;text-decoration:none}.backlink:hover{color:var(--text)}.chartpanel{padding:18px 22px;margin-bottom:22px}.chartpanel h3,.listpanel h3{margin:0 0 12px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3)}.bigchart svg{width:100%;height:180px;display:block}.bigchart-axis{display:flex;justify-content:space-between;margin-top:8px;font-size:.72rem;color:var(--text-3)}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}.listpanel{padding:16px 20px}.listpanel ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.listrow{display:flex;justify-content:space-between;gap:12px;font-size:.84rem}.listkey{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.listvalue{font-weight:600;font-variant-numeric:tabular-nums;color:var(--text-2)}.listbar{height:4px;margin-top:4px;border-radius:2px;background:var(--bg)}.listbar-fill{height:100%;border-radius:2px;background:linear-gradient(90deg,var(--accent-strong),var(--accent));min-width:2px}.projects{display:flex;flex-direction:column;gap:16px;max-width:760px}.project-form{display:flex;gap:10px}.project-form input{flex:1;padding:10px 13px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-family:var(--font);font-size:.9rem}.project-form input:focus{outline:none;border-color:var(--accent-strong)}.assign-table{width:100%;border-collapse:collapse;font-size:.86rem}.assign-table td{padding:9px 2px;border-top:1px solid var(--border)}.assign-table tr:first-child td{border-top:none}.assign-table td:last-child{text-align:right}.assign-table select{padding:6px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-family:var(--font);font-size:.82rem}.project-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.project-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:8px;vertical-align:1px}.card-link{display:block;color:inherit;text-decoration:none}.card-link:hover{background:linear-gradient(180deg,#ffffff0a,#fff0 40%),var(--card-hover)}.project-add-row{display:flex;gap:10px}.project-add-row input{flex:1;padding:10px 13px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-family:var(--font);font-size:.9rem}.project-add-row input:focus{outline:none;border-color:var(--accent-strong)}.project-list,.assign-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.project-list li,.assign-list li{display:flex;align-items:center;gap:12px;padding:9px 2px;font-size:.86rem}.project-list li+li,.assign-list li+li{border-top:1px solid var(--border)}.project-name{display:inline-flex;align-items:center;gap:8px;flex:1;min-width:0;font-weight:500}.project-name svg{color:var(--accent);flex-shrink:0}.project-list .icon-btn,.project-list .confirm{margin-left:auto}.assign-list .listkey{flex:1}.assign-list select{padding:6px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-family:var(--font);font-size:.82rem}.group-head{display:flex;align-items:baseline;gap:10px;margin:26px 0 12px}.group-head:first-of-type{margin-top:0}.group-head h2{margin:0;font-size:.95rem;font-weight:600;letter-spacing:-.01em}.group-head .muted{font-size:.78rem}.source-form{display:flex;flex-direction:column;gap:10px}.source-form input{padding:10px 13px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-family:var(--font);font-size:.9rem}.source-form input:focus{outline:none;border-color:var(--accent-strong)}.source-form .btn{align-self:flex-start}.connect-form h3{display:flex;align-items:center;gap:8px}.connect-form h3 svg,.app-card h2 svg{color:var(--accent)}.muted a{color:var(--accent);text-decoration:none}.muted a:hover{text-decoration:underline}.app-stats{border-top:none;padding-top:6px}.card-meta{display:inline-flex;align-items:center;gap:8px;flex-shrink:0}.project-chip{padding:2px 8px;border:1px solid rgba(123,159,224,.35);border-radius:999px;background:#7b9fe01a;color:var(--accent);font-size:.66rem;font-weight:600;letter-spacing:.04em;white-space:nowrap}.site-group+.site-group{margin-top:26px}.group-title{display:flex;align-items:center;gap:8px;margin:0 0 12px;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--text-2)}.group-title svg{color:var(--accent)}@media (max-width: 760px){.shell{flex-direction:column}.sidebar{position:static;width:100%;height:auto;flex-direction:row;align-items:center;padding:10px 14px;border-right:none;border-bottom:1px solid var(--border)}.brand{padding:0}.brand-sub{display:none}.nav{flex-direction:row;margin:0 0 0 auto}.nav-label,.nav button span{display:none}.sidebar-footer{margin:0 0 0 8px;border:none;padding:0}.sidebar-user{display:none}.main{padding:20px 16px 40px}}
