@import url("https://fonts.googleapis.com/css2?family=Public+Sans:wght@400;500;600;700&display=swap");:root,[data-theme=light]{--bg:#F4F6FA;--surface:#FFFFFF;--surface-2:#F8FAFC;--surface-3:#EFF2F7;--surface-hover:#F1F4F9;--border:#E4E8EF;--border-strong:#CFD5DF;--border-subtle:#EEF1F6;--text:#0F1B2D;--text-muted:#51607A;--text-subtle:#8693A8;--text-faint:#B5BECC;--brand:#2E5BF2;--brand-hover:#2549CC;--brand-soft:#E4ECFF;--brand-soft-2:#F1F5FF;--accent:#FF6B47;--accent-soft:#FFE7DF;--success:#0F8857;--success-soft:#DCF5E8;--success-strong:#06633D;--warning:#B5680B;--warning-soft:#FCEFCF;--warning-strong:#8B4F00;--danger:#C8392C;--danger-soft:#FBE0DC;--danger-strong:#962819;--info:#1670B5;--info-soft:#DCEEFB;--neutral-soft:#ECEFF4;--neutral-strong:#4A5468;--shadow-sm:0 1px 0 rgba(15,27,45,0.04),0 1px 2px rgba(15,27,45,0.04);--shadow-md:0 2px 4px rgba(15,27,45,0.06),0 8px 16px rgba(15,27,45,0.06);--shadow-lg:0 12px 32px rgba(15,27,45,0.12);--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--sidebar-w:232px;--topbar-h:56px;color-scheme:light}[data-theme=dark]{--bg:#0B1220;--surface:#121A2B;--surface-2:#0F1726;--surface-3:#1A2438;--surface-hover:#1B2640;--border:#243049;--border-strong:#324061;--border-subtle:#1B243A;--text:#EDF1F9;--text-muted:#A7B1C6;--text-subtle:#7281A0;--text-faint:#4D5A78;--brand:#5A82FF;--brand-hover:#7AA0FF;--brand-soft:#1B2A55;--brand-soft-2:#131D3D;--accent:#FF8A6A;--accent-soft:#3A1F1A;--success:#3BC489;--success-soft:#143527;--success-strong:#76E2B1;--warning:#F2B854;--warning-soft:#3A2A0F;--warning-strong:#FFD27A;--danger:#F26F62;--danger-soft:#3A1814;--danger-strong:#FF9A8E;--info:#56AEEC;--info-soft:#102A40;--neutral-soft:#1F2A40;--neutral-strong:#C0CADB;--shadow-sm:0 1px 0 rgba(0,0,0,0.4),0 1px 2px rgba(0,0,0,0.3);--shadow-md:0 4px 8px rgba(0,0,0,0.35),0 12px 24px rgba(0,0,0,0.45);--shadow-lg:0 16px 40px rgba(0,0,0,0.55);color-scheme:dark}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0;height:100%}button{background:none;border:0;padding:0;cursor:pointer}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}table{border-collapse:collapse}body{font-family:Public Sans,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:13px;line-height:1.45;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#__next,body>div{min-height:100vh}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:var(--text-subtle)}.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--border);height:var(--topbar-h);flex-shrink:0}.sidebar-brand .logo-mark{width:28px;height:28px;border-radius:7px;background:linear-gradient(135deg,var(--brand) 0,#4775FF 50%,#6F95FF 100%);display:grid;place-items:center;color:#fff;font-weight:700;font-size:14px;letter-spacing:-.02em;flex-shrink:0}.sidebar-brand .brand-name{font-weight:700;font-size:15px;letter-spacing:-.01em;color:var(--text)}.sidebar-brand .brand-sub{font-size:10px;color:var(--text-subtle);letter-spacing:.04em;text-transform:uppercase;font-weight:600}.sidebar-section{padding:4px 8px 8px}.sidebar-section-title{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-subtle);padding:10px 10px 6px}.sidebar-nav{display:flex;flex-direction:column;gap:1px}.nav-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--radius-sm);color:var(--text-muted);font-size:13px;font-weight:500;width:100%;text-align:left;transition:background .1s,color .1s}.nav-item:hover{background:var(--surface-hover);color:var(--text)}.nav-item.active{background:var(--brand-soft);color:var(--brand);font-weight:600}[data-theme=dark] .nav-item.active{color:var(--brand-hover)}.nav-item .nav-icon{width:16px;height:16px;flex-shrink:0}.nav-item .nav-count{margin-left:auto;font-size:11px;color:var(--text-subtle);background:var(--surface-3);padding:1px 6px;border-radius:10px;font-weight:500}.nav-item.active .nav-count{background:var(--brand);color:white}.sidebar-footer{margin-top:auto;padding:10px 12px;border-top:1px solid var(--border);display:flex;align-items:center;gap:10px;flex-shrink:0}.avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#FFA28D,#FF6B47);color:white;font-weight:600;font-size:12px;display:grid;place-items:center;flex-shrink:0}.sidebar-footer .acct-name{font-size:12px;font-weight:600;color:var(--text)}.sidebar-footer .acct-sub{font-size:11px;color:var(--text-subtle)}.main{display:flex;flex-direction:column;min-width:0;min-height:100vh}.topbar{height:var(--topbar-h);background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;gap:16px;position:-webkit-sticky;position:sticky;top:0;z-index:10}.topbar-title{display:flex;align-items:baseline;gap:10px}.topbar-title h1{margin:0;font-size:16px;font-weight:700;letter-spacing:-.01em;color:var(--text)}.topbar-crumb{color:var(--text-subtle);font-size:13px}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:4px}.icon-button{width:32px;height:32px;display:grid;place-items:center;border-radius:var(--radius-sm);color:var(--text-muted);position:relative}.icon-button:hover{background:var(--surface-hover);color:var(--text)}.icon-button svg{width:16px;height:16px}.page{flex:1 1;padding:20px 24px 32px;min-width:0;overflow-x:hidden}.page-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.page-hero h2{margin:0 0 4px;font-size:20px;font-weight:700;letter-spacing:-.015em;color:var(--text)}.page-hero p{margin:0;color:var(--text-muted);font-size:13px;max-width:600px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 12px;border-radius:var(--radius-sm);font-size:12.5px;font-weight:600;border:1px solid transparent;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,color .12s}.btn svg{width:14px;height:14px}.btn-primary{background:var(--brand);color:white;border-color:var(--brand);box-shadow:0 1px 0 rgba(15,27,45,.08),inset 0 -1px 0 rgba(0,0,0,.12)}.btn-primary:hover:not(:disabled){background:var(--brand-hover);border-color:var(--brand-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.btn-secondary:hover:not(:disabled){background:var(--surface-hover);border-color:var(--text-subtle)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--text-muted);border-color:transparent}.btn-ghost:hover{background:var(--surface-hover);color:var(--text)}.btn-danger{background:var(--surface);color:var(--danger);border-color:var(--border-strong)}.btn-danger:hover{background:var(--danger-soft);border-color:var(--danger)}.btn-sm{height:26px;padding:0 9px;font-size:11.5px;border-radius:5px}.btn-sm svg{width:12px;height:12px}.btn-xs{height:22px;padding:0 7px;font-size:11px;border-radius:4px}.badge{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 8px;font-size:11px;font-weight:600;border-radius:10px;background:var(--neutral-soft);color:var(--neutral-strong);white-space:nowrap;letter-spacing:.01em}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.badge.success{background:var(--success-soft);color:var(--success-strong)}.badge.warning{background:var(--warning-soft);color:var(--warning-strong)}.badge.danger{background:var(--danger-soft);color:var(--danger-strong)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.brand{background:var(--brand-soft);color:var(--brand)}.badge.accent{background:var(--accent-soft);color:var(--accent)}.badge.outline{background:transparent;border:1px solid var(--border-strong);color:var(--text-muted)}.badge.pulse .dot{animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.3}}@keyframes spin{to{transform:rotate(1turn)}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.card-header{justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border-subtle);gap:12px}.card-header,.card-title{display:flex;align-items:center}.card-title{font-size:13px;font-weight:600;color:var(--text);letter-spacing:-.005em;gap:8px}.card-subtitle{font-size:11.5px;color:var(--text-subtle);margin-top:1px}.card-body{padding:16px}.card-body.flush{padding:0}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px;margin-bottom:16px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px;position:relative;overflow:hidden}.kpi-label{font-size:11.5px;color:var(--text-subtle);font-weight:500;letter-spacing:.01em;display:flex;align-items:center;gap:6px}.kpi-label svg{width:13px;height:13px}.kpi-value{font-size:24px;font-weight:700;letter-spacing:-.02em;color:var(--text);margin-top:6px;line-height:1.1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.kpi-value .currency{font-size:14px;color:var(--text-muted);font-weight:600;margin-right:2px}.kpi-delta{margin-top:6px;font-size:11.5px;color:var(--text-muted);display:flex;align-items:center;gap:4px}.kpi-delta.up{color:var(--success)}.kpi-delta.down{color:var(--danger)}.tabs{background:var(--surface-3);border-radius:var(--radius-sm);padding:3px;gap:2px}.tab,.tabs{display:inline-flex}.tab{padding:5px 12px;font-size:12px;font-weight:600;color:var(--text-muted);border-radius:5px;cursor:pointer;align-items:center;gap:6px;border:none;background:transparent}.tab.active,.tab:hover{color:var(--text)}.tab.active{background:var(--surface);box-shadow:var(--shadow-sm)}.tab .count{background:var(--surface-3);font-size:10.5px;padding:0 5px;border-radius:6px;font-weight:600}.tab.active .count{background:var(--brand-soft);color:var(--brand)}.filter-bar{padding:8px 0;margin-bottom:12px;flex-wrap:wrap}.filter-bar,.search-input{display:flex;align-items:center;gap:8px}.search-input{padding:7px 10px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);width:260px;color:var(--text-subtle)}.search-input input{border:0;outline:0;background:transparent;flex:1 1;min-width:0;color:var(--text);font-size:12.5px}.search-input input::placeholder{color:var(--text-subtle)}.search-input svg{width:14px;height:14px;flex-shrink:0}.filter-spacer{flex:1 1}.table-wrap{overflow-x:auto;border-radius:var(--radius-lg)}.data-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}.data-table thead th{text-align:left;font-weight:600;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle);background:var(--surface-2);padding:8px 12px;border-bottom:1px solid var(--border);white-space:nowrap}.data-table thead th:first-child{padding-left:16px}.data-table thead th:last-child{padding-right:16px}.data-table tbody td{padding:9px 12px;border-bottom:1px solid var(--border-subtle);color:var(--text);vertical-align:middle;white-space:nowrap}.data-table tbody td:first-child{padding-left:16px}.data-table tbody td:last-child{padding-right:16px}.data-table tbody tr{cursor:pointer;transition:background .08s}.data-table tbody tr:hover{background:var(--surface-2)}.data-table .num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.data-table .muted{color:var(--text-muted)}.data-table .faint{color:var(--text-subtle)}.data-table .mono{font-family:SF Mono,ui-monospace,monospace;font-size:11.5px}.donor-cell{display:flex;align-items:center;gap:8px}.donor-avatar{width:24px;height:24px;border-radius:50%;font-size:10px;font-weight:600;color:white;display:grid;place-items:center;flex-shrink:0;background:linear-gradient(135deg,var(--brand) 0,#6F95FF 100%)}.donor-cell .name{font-weight:600;color:var(--text)}.donor-cell .email{color:var(--text-subtle);font-size:11.5px}.source-cell{display:inline-flex;align-items:center;gap:6px}.source-mark{width:18px;height:18px;border-radius:4px;display:grid;place-items:center;color:white;font-weight:700;font-size:10px;flex-shrink:0}.source-mark.square{background:#000000}.source-mark.stripe{background:#635BFF}.source-mark.paypal{background:#003087}.source-mark.gmail{background:#EA4335}.source-mark.onecause{background:#00A096}.source-mark.everyorg{background:#1FA672}.source-mark.pledge{background:#6E59E8}.source-mark.cybergrants{background:#C26B11}.source-mark.frontstream{background:#D63A3A}.source-mark.csv{background:#4A5468}.source-mark.paypal_giving_fund{background:#003087}.amount-cell{font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.table-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-top:1px solid var(--border-subtle);font-size:12px;color:var(--text-muted);background:var(--surface)}.pager{display:inline-flex;align-items:center;gap:4px}.source-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:12px;gap:12px}.source-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px;display:flex;flex-direction:column;gap:10px;cursor:pointer;transition:border-color .12s,box-shadow .12s}.source-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.source-card.selected{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.source-card-head{display:flex;align-items:flex-start;gap:10px}.source-card-head .source-mark{width:32px;height:32px;border-radius:7px;font-size:13px}.source-card-head h4{margin:0;font-size:13.5px;font-weight:600;letter-spacing:-.005em;color:var(--text)}.source-card-head .sub{font-size:11.5px;color:var(--text-subtle);margin-top:1px}.source-card-meta{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px;margin-top:4px;border-top:1px solid var(--border-subtle);padding-top:10px}.source-card-meta .k{font-size:10.5px;color:var(--text-subtle);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.source-card-meta .v{font-size:12.5px;color:var(--text);font-weight:600;margin-top:2px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.connect-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.connect-stat{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:10px 12px}.connect-stat .k{font-size:10.5px;color:var(--text-subtle);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.connect-stat .v{font-size:14px;font-weight:600;color:var(--text);margin-top:3px}.oauth-state{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:var(--radius-md);background:var(--success-soft);border:1px solid color-mix(in srgb,var(--success) 25%,transparent)}.oauth-state.warning{background:var(--warning-soft);border-color:color-mix(in srgb,var(--warning) 25%,transparent)}.oauth-state.danger{background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger) 25%,transparent)}.oauth-state .ic{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--surface);border:1px solid var(--border);color:var(--success);flex-shrink:0}.oauth-state .ic svg{width:18px;height:18px}.oauth-state.warning .ic{color:var(--warning)}.oauth-state.danger .ic{color:var(--danger)}.oauth-state .t{font-weight:600;font-size:13px;color:var(--text)}.oauth-state .s{font-size:12px;color:var(--text-muted);margin-top:2px}.drawer-backdrop{position:fixed;inset:0;background:rgba(15,27,45,.25);z-index:50;opacity:0;pointer-events:none;transition:opacity .18s}.drawer-backdrop.open{opacity:1;pointer-events:auto}.drawer{position:fixed;top:0;right:0;width:480px;max-width:92vw;height:100vh;background:var(--surface);border-left:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:60;transform:translateX(100%);transition:transform .22s cubic-bezier(.5,0,.2,1);display:flex;flex-direction:column}.drawer.open{transform:translateX(0)}.drawer-header{padding:16px 18px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.drawer-header h3{margin:0;font-size:15px;font-weight:700;letter-spacing:-.01em}.drawer-sub{font-size:12px;color:var(--text-subtle);margin-top:2px}.drawer-body{flex:1 1;overflow-y:auto;padding:16px 18px 32px}.drawer-footer{border-top:1px solid var(--border);padding:12px 18px;display:flex;gap:8px;background:var(--surface-2)}.kv-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px 18px;gap:14px 18px}.kv{display:flex;flex-direction:column;gap:3px;min-width:0}.kv .k{font-size:10.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-subtle)}.kv .v{font-size:13px;color:var(--text);font-weight:500;word-break:break-word}.drawer-section{border-top:1px solid var(--border-subtle);padding-top:16px;margin-top:16px}.drawer-section h4{margin:0 0 10px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-subtle)}.timeline{display:flex;flex-direction:column;gap:12px}.timeline-item{display:grid;grid-template-columns:22px 1fr;grid-gap:10px;gap:10px;position:relative}.timeline-item:before{content:"";position:absolute;left:10px;top:20px;bottom:-14px;width:1.5px;background:var(--border)}.timeline-item:last-child:before{display:none}.timeline-dot{width:22px;height:22px;border-radius:50%;background:var(--surface);border:1.5px solid var(--border-strong);display:grid;place-items:center;color:var(--text-muted);z-index:1;flex-shrink:0}.timeline-dot svg{width:11px;height:11px}.timeline-dot.success{border-color:var(--success);color:var(--success);background:var(--success-soft)}.timeline-dot.danger{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}.timeline-dot.brand{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}.timeline-content{font-size:12.5px;line-height:1.4;padding-bottom:4px}.timeline-content .meta{font-size:11.5px;color:var(--text-subtle);margin-top:1px}.dropzone{border:2px dashed var(--border-strong);border-radius:var(--radius-lg);padding:32px 24px;text-align:center;background:var(--surface-2);transition:all .15s}.dropzone.over{border-color:var(--brand);background:var(--brand-soft-2)}.dropzone .icon-wrap{width:48px;height:48px;border-radius:12px;background:var(--surface);border:1px solid var(--border);margin:0 auto 12px;display:grid;place-items:center;color:var(--brand)}.dropzone .icon-wrap svg{width:22px;height:22px}.dropzone h4{margin:0;font-size:14px;font-weight:600;color:var(--text)}.dropzone p{margin:4px 0 14px;font-size:12px;color:var(--text-muted)}.file-row{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md)}.file-row .file-icon{width:32px;height:32px;border-radius:6px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;flex-shrink:0}.file-row .file-icon svg{width:16px;height:16px}.file-row .name{font-weight:600;font-size:12.5px}.file-row .meta{font-size:11.5px;color:var(--text-subtle)}.progress{height:6px;background:var(--surface-3);border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--brand),#6F95FF);border-radius:3px;transition:width .4s ease}.dash-grid{display:grid;grid-template-columns:2fr 1fr;grid-gap:12px;gap:12px;margin-bottom:12px}.activity-list{display:flex;flex-direction:column}.activity-row{display:grid;grid-template-columns:24px 1fr auto;align-items:center;grid-gap:12px;gap:12px;padding:10px 16px;border-bottom:1px solid var(--border-subtle);font-size:12.5px}.activity-row:last-child{border-bottom:0}.activity-row .desc{color:var(--text)}.activity-row .meta-time{color:var(--text-subtle);font-size:11.5px}.chart-bars{display:grid;grid-template-columns:repeat(14,1fr);grid-gap:4px;gap:4px;align-items:end;height:120px;padding:8px 0}.chart-bar{background:linear-gradient(180deg,var(--brand) 0,#6F95FF 100%);border-radius:3px 3px 0 0;min-height:4px;position:relative;transition:opacity .12s}.chart-bar.muted-bar{background:var(--surface-3)}.chart-bar:hover{opacity:.8}.chart-axis{display:grid;grid-template-columns:repeat(14,1fr);grid-gap:4px;gap:4px;margin-top:4px;font-size:10px;color:var(--text-subtle)}.chart-axis span{text-align:center}.row{display:flex;align-items:center;gap:8px}.col{gap:4px}.col,.stack-12{display:flex;flex-direction:column}.stack-12{gap:12px}.stack-16{display:flex;flex-direction:column;gap:16px}.spacer{flex:1 1}.divider{height:1px;background:var(--border-subtle);margin:8px 0}.text-muted{color:var(--text-muted)}.text-subtle{color:var(--text-subtle)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.text-warning{color:var(--warning)}.fw-600{font-weight:600}.fw-700{font-weight:700}.fs-11{font-size:11px}.fs-12{font-size:12px}.fs-13{font-size:13px}.tnum{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mono{font-family:SF Mono,ui-monospace,monospace}.empty-state{text-align:center;padding:48px 24px;color:var(--text-muted)}.empty-state h3{margin:12px 0 6px;font-size:15px;font-weight:700;color:var(--text)}.empty-state p{margin:0;font-size:13px}.input{width:100%;padding:7px 10px;font-size:13px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);outline:none;transition:border-color .15s}.input:focus{border-color:var(--accent)}.input::placeholder{color:var(--text-subtle)}.label{display:block;font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.login-wrap{min-height:100vh;display:grid;place-items:center;background:radial-gradient(800px 400px at 20% 0,var(--brand-soft-2),transparent),var(--bg);padding:24px}.login-card{width:380px;max-width:94vw;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);padding:28px}.login-card .logo-mark{width:36px;height:36px;border-radius:9px;background:linear-gradient(135deg,var(--brand) 0,#4775FF 50%,#6F95FF 100%);display:grid;place-items:center;color:#fff;font-weight:700;font-size:17px}.login-card h1{margin:14px 0 2px;font-size:18px;letter-spacing:-.01em}.login-card .sub{color:var(--text-muted);font-size:12.5px;margin-bottom:18px}.form-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px 16px;gap:14px 16px}.form-grid .full{grid-column:1/-1}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field .hint{font-size:11px;color:var(--text-subtle)}select.input{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}textarea.input{resize:vertical;min-height:64px;font-family:SF Mono,ui-monospace,monospace;font-size:12px}.checkbox-row{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text)}.checkbox-row input{accent-color:var(--brand)}.callout{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:var(--radius-md);font-size:12px;border:1px solid transparent}.callout.warning{background:var(--warning-soft);color:var(--warning-strong);border-color:color-mix(in srgb,var(--warning) 30%,transparent)}.callout.info{background:var(--info-soft);color:var(--info);border-color:color-mix(in srgb,var(--info) 30%,transparent)}.callout.danger{background:var(--danger-soft);color:var(--danger-strong);border-color:color-mix(in srgb,var(--danger) 30%,transparent)}.callout svg{flex-shrink:0;margin-top:1px}.spinner{width:14px;height:14px;border:2px solid color-mix(in srgb,currentColor 30%,transparent);border-top-color:currentcolor;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.page-loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:64px 0;color:var(--text-muted);font-size:13px}.toast-stack{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:2000}.toast{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border-strong);border-left:3px solid var(--brand);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:10px 14px;font-size:12.5px;min-width:260px;max-width:420px;animation:toast-in .18s ease-out}.toast.success{border-left-color:var(--success)}.toast.error{border-left-color:var(--danger)}@keyframes toast-in{0%{transform:translateY(8px);opacity:0}}.json-view{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:12px;font-family:SF Mono,ui-monospace,monospace;font-size:11.5px;overflow-x:auto;white-space:pre;color:var(--text-muted);margin:0}