:root{--bg: #f4f6fa;--surface: #ffffff;--ink: #141a2b;--ink-2: #4a5468;--ink-3: #8a93a6;--line: #e5e9f0;--line-2: #eef1f6;--brand: #2f5bea;--brand-ink: #1d3fb8;--brand-soft: #eaf0ff;--side: #0f1729;--side-2: #1a2440;--side-ink: #a9b3c9;--green: #12805c;--green-soft: #e3f6ee;--amber: #a15c00;--amber-soft: #fff3dc;--red: #c4282d;--red-soft: #fde8e8;--gray-soft: #eef0f4;--radius: 12px;--shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 1px 3px rgba(16, 24, 40, .06);--font: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:14px;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:var(--brand);text-decoration:none}h1,h2,h3,h4{margin:0;letter-spacing:-.01em}input,select,textarea,button{font:inherit;color:inherit}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;background:var(--gray-soft);padding:1px 5px;border-radius:4px}.muted{color:var(--ink-3)}.grow{flex:1}.pos{color:var(--green);font-weight:600}.neg{color:var(--red);font-weight:600}.app{display:flex;min-height:100vh;background:linear-gradient(to right,var(--side) 248px,var(--bg) 248px)}.sidebar{width:248px;flex-shrink:0;background:var(--side);color:var(--side-ink);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:center;gap:10px;padding:20px 20px 18px;color:#fff;font-weight:700;font-size:16px}.brand-mark{width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,#4c7bff,#2f5bea);display:grid;place-items:center;font-weight:800;color:#fff;box-shadow:0 4px 12px #2f5bea73}.sidebar nav{display:flex;flex-direction:column;padding:6px 12px;gap:2px;flex:1}.sidebar nav a,.nav-group{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:8px;color:var(--side-ink);font-weight:500;border:0;background:none;cursor:pointer;text-align:left;width:100%}.sidebar nav a:hover,.nav-group:hover{background:var(--side-2);color:#fff}.sidebar nav>a.active,.nav-group.active{background:var(--side-2);color:#fff}.sidebar nav>a.active svg{color:#7aa0ff}.chev{margin-left:auto;transition:transform .15s}.chev.up{transform:rotate(180deg)}.subnav{display:flex;flex-direction:column;margin:2px 0 6px 21px;padding-left:10px;border-left:1px solid #263252}.subnav a{padding:7px 10px!important;font-size:13px;gap:9px!important}.subnav a.active{color:#fff!important;background:#4c7bff29!important}.nav-section{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#5d6884;padding:18px 12px 6px;font-weight:600}.sidebar-foot{padding:12px;border-top:1px solid #1f2a47}.me{display:flex;align-items:center;gap:10px;padding:8px;border-radius:8px;color:#fff}.me:hover{background:var(--side-2)}.me-text{flex:1;min-width:0;display:flex;flex-direction:column}.me-text strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.me-text small{color:var(--side-ink);font-size:12px}.avatar{width:34px;height:34px;border-radius:50%;background:#2a3a66;color:#cfe0ff;display:grid;place-items:center;font-weight:700;font-size:12px;flex-shrink:0}.avatar.sm{width:32px;height:32px;background:var(--brand-soft);color:var(--brand-ink)}.avatar.admin{background:#1f2a47;color:#fff}.logout{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;margin-top:4px;border:0;background:none;color:var(--side-ink);cursor:pointer;border-radius:8px}.logout:hover{color:#fff;background:var(--side-2)}.main{flex:1;min-width:0}.topbar{display:none}.content{padding:32px 36px 48px}:root{--content-min: 1180px}@media (min-width: 861px){.app{height:100vh;overflow:hidden}.sidebar{position:relative}.main{height:100vh;overflow:auto}.content{min-width:var(--content-min)}}.scrim{display:none}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}.page-head h1{font-size:24px;font-weight:700}.subtitle{margin:4px 0 0;color:var(--ink-2)}.page-actions{display:flex;gap:8px}.back{display:inline-flex;align-items:center;gap:6px;color:var(--ink-2);margin-bottom:10px;font-weight:500}.back:hover{color:var(--brand)}.section-title{font-size:15px;margin:26px 0 12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:36px;padding:0 14px;border-radius:8px;border:1px solid transparent;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand);color:#fff}.btn-primary:hover:not(:disabled){background:var(--brand-ink)}.btn-ghost{background:var(--surface);border-color:var(--line);color:var(--ink)}.btn-ghost:hover{background:var(--bg)}.btn-danger-ghost{background:none;color:var(--red);border-color:transparent}.btn-danger-ghost:hover{background:var(--red-soft)}.btn-sm{height:30px;padding:0 10px;font-size:13px}.btn-block{width:100%;height:42px}.icon-btn{border:0;background:none;padding:6px;border-radius:6px;cursor:pointer;color:var(--ink-2);display:grid;place-items:center}.icon-btn:hover{background:var(--bg)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card.pad{padding:22px}.card.pad h3{font-size:15px;margin-bottom:16px}.card-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 6px}.card-head h3{font-size:15px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;display:flex;gap:14px;align-items:flex-start;box-shadow:var(--shadow)}.stat-icon{width:40px;height:40px;border-radius:10px;background:var(--gray-soft);color:var(--ink-2);display:grid;place-items:center;flex-shrink:0}.stat.blue .stat-icon{background:var(--brand-soft);color:var(--brand)}.stat.red .stat-icon{background:var(--red-soft);color:var(--red)}.stat.red .stat-value{color:var(--red)}.stat-label{color:var(--ink-2);font-size:13px;font-weight:500}.stat-value{font-size:24px;font-weight:700;margin-top:2px;font-variant-numeric:tabular-nums}.stat-sub{color:var(--ink-3);font-size:12px;margin-top:2px}.dash-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:20px;align-items:start}.dash-grid .span-2{grid-column:span 2}.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;padding:12px 20px 20px}.cat-tile{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;color:var(--ink);transition:border-color .12s,box-shadow .12s}.cat-tile:hover{border-color:#c5d3ff;box-shadow:0 2px 8px #2f5bea14}.cat-chip{width:38px;height:38px;border-radius:10px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;flex-shrink:0}.cat-chip.sm{width:32px;height:32px;border-radius:8px}.cat-count{font-size:18px;font-weight:700;line-height:1.1}.cat-name{color:var(--ink-2);font-size:13px}.cat-money{margin-left:auto;font-size:13px;font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums}.cat-money small{color:var(--ink-3);font-weight:500}.renew-list{list-style:none;margin:0;padding:6px 10px 12px}.renew-list li{display:flex;align-items:center;gap:12px;padding:10px;border-radius:8px;cursor:pointer}.renew-list li:hover{background:var(--bg)}.renew-list .right{text-align:right}.days{font-weight:700;font-variant-numeric:tabular-nums;color:var(--amber)}.days.hot{color:var(--red)}.tabs{display:flex;gap:6px;margin-bottom:18px;flex-wrap:wrap}.tab{display:flex;align-items:center;gap:8px;padding:7px 12px;color:var(--ink-2);font-weight:600;border:1px solid var(--line);border-radius:9px;background:var(--surface);white-space:nowrap}.tab:hover{color:var(--ink);border-color:#c5d3ff}.tab.active{color:var(--brand);border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 1px var(--brand) inset}.tab-count{background:var(--gray-soft);color:var(--ink-2);border-radius:999px;padding:1px 8px;font-size:12px;font-weight:600}.tab.active .tab-count{background:var(--brand);color:#fff}.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);cursor:pointer;font-weight:500;color:var(--ink-2)}.chip:hover{border-color:#c5d3ff}.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}.segmented{display:inline-flex;background:var(--gray-soft);border-radius:8px;padding:3px}.segmented button{border:0;background:none;padding:5px 12px;border-radius:6px;cursor:pointer;font-weight:500;color:var(--ink-2)}.segmented button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.toolbar{display:flex;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}.toolbar select,.bulkbar select{height:36px;border:1px solid var(--line);border-radius:8px;padding:0 10px;background:var(--surface)}.toolbar-actions{display:flex;gap:8px;margin-left:auto}.search{display:flex;align-items:center;gap:8px;height:36px;border:1px solid var(--line);border-radius:8px;padding:0 10px;flex:1 1 200px;min-width:180px;max-width:320px;color:var(--ink-3);background:var(--surface)}.search input{border:0;outline:none;flex:1;color:var(--ink);background:none}.search:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.bulkbar{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--brand-soft);border-bottom:1px solid #d6e0ff}.bulkbar select{height:30px}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:12px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;padding:10px 16px;border-bottom:1px solid var(--line);white-space:nowrap;background:#fafbfd}.table td{padding:12px 16px;border-bottom:1px solid var(--line-2);vertical-align:middle;white-space:nowrap}.table tbody tr{cursor:pointer}.table tbody tr.static{cursor:default}.table tbody tr:hover td{background:#f8faff}.table tbody tr.sel td{background:var(--brand-soft)}.table tbody tr.dim td{opacity:.55}.table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.table .chk{width:36px;padding-right:0}.table .row-act{color:var(--ink-3);width:36px}.table tr:hover .row-act{color:var(--brand)}.group-row td{background:#fafbfd!important;font-weight:600;font-size:13px;color:var(--ink-2);cursor:default}.group-row td svg{vertical-align:-3px;margin-right:7px}.cell-main{font-weight:600;color:var(--ink)}.cell-sub{font-size:12px;color:var(--ink-3);margin-top:2px}.clamp{max-width:360px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.table-foot{display:flex;justify-content:space-between;padding:12px 16px;color:var(--ink-2);font-size:13px}.type-tag{display:inline-flex;align-items:center;gap:6px;color:var(--ink-2);white-space:nowrap}.user-cell{display:flex;align-items:center;gap:10px}.role-admin{display:inline-flex;align-items:center;gap:5px;color:var(--brand-ink);font-weight:600}.renewal{display:flex;flex-direction:column;white-space:nowrap;font-variant-numeric:tabular-nums}.renewal small{font-size:11px;font-weight:600}.due-soon small{color:var(--amber)}.due-over,.due-over small{color:var(--red)}.badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.st-activo{background:var(--green-soft);color:var(--green)}.st-pendiente{background:var(--amber-soft);color:var(--amber)}.st-suspendido{background:#f3e8ff;color:#7a2fc0}.st-expirado{background:var(--red-soft);color:var(--red)}.st-cancelado{background:var(--gray-soft);color:var(--ink-2)}.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.act-nuevo{background:var(--green-soft);color:var(--green)}.act-actualizar{background:var(--brand-soft);color:var(--brand-ink)}.act-omitir{background:var(--gray-soft);color:var(--ink-2)}.act-error{background:var(--red-soft);color:var(--red)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}.form-grid.one{grid-template-columns:1fr}.form-grid.compact{margin-top:16px}.span-2{grid-column:span 2}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:13px;font-weight:600;color:var(--ink-2)}.field-hint{font-size:12px;color:var(--ink-3)}.field input,.field select,.field textarea{height:38px;border:1px solid var(--line);border-radius:8px;padding:0 11px;background:var(--surface);outline:none;width:100%}.field textarea{height:auto;padding:9px 11px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.form-section{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);padding-top:8px;border-top:1px solid var(--line);margin-top:4px}.form-actions{display:flex;justify-content:flex-end;margin-top:18px}.switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-weight:500;height:38px}.switch input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:38px;height:22px;border-radius:999px;background:#cfd5e1;position:relative;cursor:pointer;transition:background .15s;margin:0;flex-shrink:0}.switch input:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:0 1px 2px #0003}.switch input:checked{background:var(--brand)}.switch input:checked:after{transform:translate(16px)}.input-group{display:flex;gap:6px}.input-group input{flex:1}.input-group .btn{height:38px}.input-icon{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:8px;padding:0 12px;color:var(--ink-3);background:var(--surface)}.input-icon input{border:0!important;box-shadow:none!important;padding:0!important;height:42px!important}.input-icon:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.alert{background:var(--red-soft);color:var(--red);padding:10px 12px;border-radius:8px;font-weight:500}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172973;display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;z-index:50;overflow-y:auto;animation:fade .12s}.modal{background:var(--surface);border-radius:14px;width:100%;max-width:560px;box-shadow:0 20px 50px #0f172940;animation:pop .15s}.modal-wide{max-width:860px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}.modal-head h3{font-size:16px}.modal-body{padding:20px 22px}.modal-foot{display:flex;align-items:center;gap:8px;padding:14px 22px;border-top:1px solid var(--line);background:#fafbfd;border-radius:0 0 14px 14px}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{transform:translateY(8px);opacity:0}}.detail-head{display:flex;align-items:center;gap:14px;margin-bottom:18px}.detail-head h2{font-size:18px;margin-bottom:4px}.detail-list{display:grid;grid-template-columns:180px 1fr;gap:10px 16px;margin:0}.detail-list dt{color:var(--ink-3);font-weight:500}.detail-list dd{margin:0;font-weight:500}.dl-row{display:contents}.dropzone{display:flex;align-items:center;gap:16px;border:2px dashed #cfd8ea;border-radius:12px;padding:20px;cursor:pointer;color:var(--brand);background:#fafcff;transition:border-color .12s,background .12s}.dropzone:hover,.dropzone.drag{border-color:var(--brand);background:var(--brand-soft)}.dropzone>svg{flex-shrink:0}.dropzone strong{color:var(--ink)}.dropzone p{margin:6px 0 0;color:var(--ink-2);font-size:13px;line-height:1.6}.import-summary{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:18px 0 10px}.preview{max-height:340px;overflow-y:auto;border:1px solid var(--line);border-radius:10px}.preview .table th{position:sticky;top:0;z-index:1}.preview td{white-space:nowrap}.table td.clip{max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.table td.clip>div,.table td.clip>a{display:block;overflow:hidden;text-overflow:ellipsis}.table td.clip.wide{max-width:460px}.mapping{margin-top:18px;border:1px solid var(--line);border-radius:10px;padding:14px;background:#fafbfd}.mapping-head{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;margin-bottom:10px}.mapping .alert{margin-bottom:10px}.mapping-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px 12px}.map-item{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--ink-3)}.map-item.on{color:var(--ink-2)}.map-item select{height:32px;border:1px solid var(--line);border-radius:7px;padding:0 8px;background:var(--surface);font-weight:500;color:var(--ink);font-size:13px}.map-item.on select{border-color:#b9c9ff}.pill-btn{border:1px solid transparent;cursor:pointer;font:inherit;font-size:12px}.pill-btn:not([class*=act-]){background:var(--gray-soft);color:var(--ink-2)}.pill-btn.sel{border-color:currentColor}.domains-hint{display:inline-flex;align-items:center;gap:6px;margin-left:auto;color:var(--brand-ink);background:var(--brand-soft);padding:4px 10px;border-radius:999px;font-size:12px}.badge-soft{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;background:var(--gray-soft);color:var(--ink-3)}.row-select{height:30px;border:1px solid var(--line);border-radius:7px;padding:0 6px;background:var(--surface);font-size:13px}.row-select.guessed{color:var(--ink-3);border-style:dashed}.annual{padding:18px 22px;margin-top:16px}.annual-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.annual-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--brand)}.annual-date{font-size:22px;font-weight:700;display:flex;align-items:baseline;gap:10px;margin:2px 0}.annual-days{font-size:13px;font-weight:600;color:var(--ink-3)}.annual-days.soon{color:var(--amber)}.annual-days.over{color:var(--red)}.annual-total{text-align:right;display:flex;flex-direction:column}.annual-total small{color:var(--ink-3)}.annual-total strong{font-size:22px;font-variant-numeric:tabular-nums}.annual-tools{display:flex;align-items:flex-end;gap:12px;margin:14px 0 4px;flex-wrap:wrap}.annual-tools label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--ink-2)}.annual-tools select{height:34px;border:1px solid var(--line);border-radius:8px;padding:0 8px;min-width:420px;background:var(--surface)}.annual-table{margin-top:10px}.annual-table td{padding:9px 4px}.empty-annual{display:flex;align-items:center;gap:10px;color:var(--ink-3)}.star{color:#e3a008}.chev-r{color:var(--ink-3);transition:transform .15s}.chev-r.open{transform:rotate(90deg)}.sub-row td{background:#fafbfd;padding-top:7px;padding-bottom:7px}.cell-sub.warn{color:var(--amber);font-weight:600}.cell-sub.neg{color:var(--red)}a.link{cursor:pointer;color:var(--ink)}a.link:hover{color:var(--brand)}.stats-3{grid-template-columns:repeat(3,1fr)}.group-over td{background:var(--red-soft)!important;color:var(--red)}.inv-done{display:inline-flex;align-items:center;gap:4px}.annual-date .badge{font-size:12px}.annual-list{display:flex;flex-direction:column;gap:12px;margin-top:16px}.annual-list .annual{margin-top:0}.annual-sep{border-left:3px solid var(--brand)}.annual-label{display:flex;align-items:center;gap:6px}.icon-btn.xs{padding:3px;color:var(--ink-3)}.add-invoice{align-self:flex-start}.move-cell{width:1%}.move-cell .row-select{max-width:260px}.group-tag{display:inline-block;margin-top:2px;font-size:11px;font-weight:600;color:var(--brand-ink);background:var(--brand-soft);padding:1px 7px;border-radius:999px}.client-picker{display:flex;gap:6px}.client-picker input{flex:0 0 140px}.client-picker select{flex:1;min-width:0}.mailboxes{margin-top:4px}.mailboxes .form-section{margin-bottom:6px}.mailbox-table td{padding:7px 6px}.mailbox-add{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.mailbox-add input{height:32px;border:1px solid var(--line);border-radius:7px;padding:0 8px;font-size:13px}.mailbox-add input[type=email]{flex:1 1 200px}.mailbox-add input[type=number]{width:100px}.mailbox-add input:not([type]){flex:1 1 160px}.pw-cell{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}.pw-value{background:var(--gray-soft);padding:2px 6px;border-radius:5px;font-size:12px;min-width:70px;display:inline-block}.pw-edit{display:inline-flex;align-items:center;gap:2px}.pw-edit input{height:28px;border:1px solid var(--brand);border-radius:6px;padding:0 6px;font-size:13px;width:160px;font-family:ui-monospace,Menlo,monospace}.pw-new{display:inline-flex;align-items:center;flex:1 1 170px}.pw-new input{width:100%;height:32px;border:1px solid var(--line);border-radius:7px;padding:0 8px;font-size:13px}.pw-flag{display:inline-flex;align-items:center;gap:4px;color:var(--green);font-weight:600;font-size:12px}.switch-col{display:flex;flex-direction:column;justify-content:flex-end;gap:2px}.switch-col .switch{height:auto;min-height:30px}.warn-cell{color:var(--amber);font-size:12px;max-width:280px;white-space:normal!important}.import-done{text-align:center;padding:16px;color:var(--green)}.import-done p{color:var(--ink)}.client-card{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 22px;flex-wrap:wrap}.client-info{display:flex;gap:18px;flex-wrap:wrap;color:var(--ink-2)}.client-info span{display:inline-flex;align-items:center;gap:6px}.client-kpis{display:flex;gap:28px}.client-kpis div{display:flex;flex-direction:column}.client-kpis small{color:var(--ink-3);font-size:12px}.client-kpis strong{font-size:18px;font-variant-numeric:tabular-nums}.note-box{margin-top:12px;padding:12px 16px;background:var(--amber-soft);border-radius:10px;color:#6b4300;white-space:pre-wrap}.empty{text-align:center;padding:48px 20px;color:var(--ink-2)}.empty-icon{width:56px;height:56px;border-radius:14px;background:var(--gray-soft);display:grid;place-items:center;margin:0 auto 12px;color:var(--ink-3)}.empty h4{font-size:15px;color:var(--ink)}.empty p{margin:6px 0 0}.loading,.splash{display:grid;place-items:center;padding:60px}.splash{height:100vh}.spinner{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toasts{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:100}.toast{background:var(--ink);color:#fff;padding:11px 16px;border-radius:10px;box-shadow:0 10px 30px #0003;font-weight:500;animation:pop .15s;max-width:380px}.toast-error{background:var(--red)}.login{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}.login-side{background:radial-gradient(circle at 20% 20%,#23397a 0,transparent 45%),radial-gradient(circle at 90% 90%,#1d3fb8 0,transparent 40%),var(--side);color:#c8d2ea;padding:36px 48px;display:flex;flex-direction:column;justify-content:space-between}.login-side .brand{padding:0}.login-pitch h2{font-size:32px;line-height:1.2;color:#fff;max-width:420px;margin-bottom:26px}.login-pitch ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:14px}.login-pitch li{display:flex;align-items:center;gap:12px;font-size:15px}.login-pitch li svg{color:#7aa0ff}.login-main{display:grid;place-items:center;padding:32px}.login-card{width:100%;max-width:380px;display:flex;flex-direction:column;gap:16px}.login-card h1{font-size:26px}.login-card .subtitle{margin-top:-8px}.login-help{color:var(--ink-3);font-size:13px;text-align:center;margin:0}@media (max-width: 860px){.stats{grid-template-columns:repeat(2,1fr)}.dash-grid{grid-template-columns:1fr}.dash-grid .span-2{grid-column:auto}.app{background:var(--bg)}.sidebar{position:fixed;left:0;top:0;z-index:40;transform:translate(-100%);transition:transform .2s}.nav-open .sidebar{transform:none}.nav-open .scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172966;z-index:30}.topbar{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--surface);border-bottom:1px solid var(--line);font-weight:700;position:sticky;top:0;z-index:20}.content{padding:20px 16px 40px}.login{grid-template-columns:1fr}.login-side{display:none}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.search{min-width:0;max-width:none;flex:1 1 100%}.toolbar-actions{flex-wrap:wrap}.detail-list{grid-template-columns:1fr;gap:2px}.detail-list dd{margin-bottom:10px}}@media (max-width: 520px){.stats{grid-template-columns:1fr}}
