/* Budget, in the ShepLab design system: black, silver steel borders, violet accent, Michroma + Inter + JetBrains Mono. */
:root{--bg:#000;--surface:#0b0b10;--surface2:#12121a;--steel:#2a2a36;--silver:#c4c7d0;--text:#e8e9ee;--muted:#9a9eae;--accent:#8b5cf6;--accent-bright:#a78bfa;--accent-deep:#4c2a9a;
--good:#6ee7a8;--warn:#ffd37a;--bad:#ff8a8a;--radius-sm:6px;--radius-md:12px;--radius-lg:20px;
--display:"Michroma","Segoe UI",system-ui,sans-serif;--sans:"Inter","Segoe UI",system-ui,sans-serif;--mono:"JetBrains Mono",ui-monospace,Consolas,monospace}
*{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{font-family:var(--sans);background:var(--bg);color:var(--text);min-height:100vh;line-height:1.6;font-size:16px;display:flex;flex-direction:column}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent-bright);outline-offset:3px}
#app{flex:1;display:flex;flex-direction:column;min-height:100vh}

/* ---------- shared pieces ---------- */
.tag{font-family:var(--mono);font-size:12px;letter-spacing:1.2px;text-transform:uppercase;color:var(--accent-bright);font-weight:500}
.logo{font-family:var(--display);font-size:1rem;letter-spacing:.5px;display:inline-flex;align-items:center}
.logo img{width:32px;height:32px;display:block;margin-right:10px}
.logo span{color:var(--accent-bright)}
.logo .logo-sub{font-family:var(--mono);font-size:11px;letter-spacing:1.4px;text-transform:uppercase;color:var(--silver);border:1px solid var(--steel);border-radius:999px;padding:2px 10px;margin-left:4px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;border-radius:var(--radius-md);font-weight:500;border:1px solid var(--steel);background:transparent;color:var(--text);cursor:pointer;font-size:.95rem;transition:border-color .15s,background .15s}
.btn:hover{border-color:var(--silver)}
.btn.primary{background:linear-gradient(135deg,var(--accent),var(--accent-deep));border-color:transparent;color:#fff}
.btn.primary:hover{background:linear-gradient(135deg,var(--accent-bright),var(--accent))}
.btn.danger:hover{color:var(--bad);border-color:var(--bad)}
.btn.small{padding:6px 14px;font-size:.85rem;border-radius:var(--radius-sm)}
.btn:disabled{opacity:.6;cursor:wait}
label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
input,select{width:100%;padding:11px 13px;border-radius:var(--radius-sm);border:1px solid var(--steel);background:var(--bg);color:var(--text);font-size:1rem;font-family:var(--sans)}
input:focus,select:focus{outline:2px solid var(--accent);border-color:transparent}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:34px}
.msg{font-size:.9rem;color:var(--muted);min-height:1.4em}
.msg.err{color:var(--bad)}
.hint{color:var(--muted);font-size:.85rem;margin:-10px 0 16px}
.link{background:none;border:0;color:var(--accent-bright);cursor:pointer;font:inherit;padding:0;text-decoration:underline}
.card{background:var(--surface);border:1px solid var(--steel);border-top:1px solid var(--silver);border-radius:var(--radius-lg);padding:24px}
.sub{color:var(--muted)}
.grow{flex:1}
.num{font-variant-numeric:tabular-nums}
footer{text-align:center;color:var(--muted);padding:32px;border-top:1px solid var(--steel);font-family:var(--mono);font-size:12px;letter-spacing:.6px;margin-top:auto}

/* ---------- signed-out ---------- */
.auth{flex:1;display:grid;grid-template-columns:1.15fr 1fr;align-items:center;gap:5vw;padding:6vh 6vw;min-height:100vh;background-color:var(--bg);background-image:radial-gradient(circle at 20% 0,rgba(76,42,154,.5),transparent 55%),radial-gradient(var(--steel) 1.5px,transparent 1.5px);background-size:auto,24px 24px}
.auth-hero{display:flex;flex-direction:column;gap:20px;align-items:flex-start}
.auth-hero h1{font-family:var(--display);font-weight:400;font-size:clamp(1.7rem,4.2vw,3rem);line-height:1.2;text-wrap:balance}
.auth-hero h1 span{color:var(--accent-bright)}
.auth-hero>p{color:var(--muted);font-size:1.1rem;max-width:52ch}
.pitch{list-style:none;display:flex;flex-direction:column;gap:12px;color:var(--muted);max-width:52ch}
.pitch li{padding-left:18px;position:relative}
.pitch li::before{content:"";position:absolute;left:0;top:.6em;width:7px;height:7px;border-radius:50%;background:var(--accent)}
.pitch b{color:var(--text);font-weight:500}
.login{background:var(--surface);border:1px solid var(--steel);border-top:1px solid var(--silver);border-radius:var(--radius-lg);padding:36px;width:100%;max-width:410px;justify-self:center;box-shadow:0 30px 80px rgba(76,42,154,.25)}
.login h2{font-family:var(--display);font-weight:400;font-size:1.4rem;margin-bottom:8px}
.login .sub{margin-bottom:26px}
.login input{margin-bottom:20px}
.login .btn{width:100%}
.login .msg{margin-top:14px;text-align:center}
.switch{margin-top:18px;text-align:center;color:var(--muted);font-size:.95rem}
@media (max-width:860px){.auth{grid-template-columns:1fr;padding:5vh 5vw}.login{justify-self:stretch;max-width:none}}

/* ---------- app chrome ---------- */
nav{display:flex;justify-content:space-between;align-items:center;padding:16px 5vw;border-bottom:1px solid var(--steel);position:sticky;top:0;z-index:20;background:rgba(0,0,0,.82);backdrop-filter:blur(14px)}
.navr{display:flex;align-items:center;gap:14px}
.avatar{width:38px;height:38px;border-radius:50%;border:1px solid var(--steel);background:linear-gradient(135deg,var(--accent),var(--accent-deep));font-family:var(--mono);font-weight:500;text-transform:uppercase;cursor:pointer;transition:border-color .15s}
.avatar:hover{border-color:var(--silver)}
.bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;max-width:1120px;width:100%;margin:0 auto;padding:18px 5vw 0}
.tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;max-width:100%}
.tabs::-webkit-scrollbar{display:none}
.tabs a{color:var(--muted);padding:8px 14px;border-radius:999px;font-size:.95rem;white-space:nowrap;border:1px solid transparent;transition:color .15s,border-color .15s,background .15s}
.tabs a:hover{color:var(--text)}
.tabs a.on{color:var(--text);background:var(--surface2);border-color:var(--steel)}
.tools{display:flex;flex-wrap:wrap;align-items:center;gap:16px}
.seg{display:inline-flex;border:1px solid var(--steel);border-radius:999px;padding:3px;background:var(--surface)}
.seg button{background:none;border:0;padding:5px 13px;border-radius:999px;color:var(--muted);font-size:.85rem;cursor:pointer;transition:color .15s,background .15s}
.seg button:hover{color:var(--text)}
.seg button.on{background:linear-gradient(135deg,var(--accent),var(--accent-deep));color:#fff}
.switch-t{display:inline-flex;align-items:center;gap:10px;margin:0;cursor:pointer;color:var(--muted);font-family:var(--sans);font-size:.85rem;letter-spacing:0;text-transform:none}
.switch-t input{position:absolute;opacity:0;width:0;height:0}
.switch-t .track{width:36px;height:20px;border-radius:999px;background:var(--steel);position:relative;transition:background .15s}
.switch-t .track::after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:var(--silver);transition:transform .15s}
.switch-t input:checked+.track{background:var(--accent)}
.switch-t input:checked+.track::after{transform:translateX(16px);background:#fff}
.switch-t input:focus-visible+.track{outline:2px solid var(--accent-bright);outline-offset:3px}
.view{max-width:1120px;width:100%;margin:0 auto;padding:26px 5vw 72px;display:flex;flex-direction:column;gap:22px}
.view.enter>*{animation:rise .35s ease both}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ---------- page heads ---------- */
.phead{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:14px}
.phead h1{font-family:var(--display);font-weight:400;font-size:clamp(1.4rem,3.6vw,2rem);line-height:1.2}
.phead .tag{display:block;margin-bottom:8px}
.pacts{display:flex;gap:10px;flex-wrap:wrap}

/* ---------- overview ---------- */
.hero{display:grid;grid-template-columns:1.3fr 1fr;gap:22px}
.leftover{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:14px;background-image:radial-gradient(circle at 85% -10%,rgba(139,92,246,.35),transparent 60%)}
.leftover .big{font-family:var(--display);font-size:clamp(2.2rem,6vw,3.6rem);line-height:1.1;letter-spacing:-.5px}
.leftover .big.neg{color:var(--bad)}
.leftover .big.pos{color:var(--text)}
.leftover .line{color:var(--muted)}
.leftover .line b{color:var(--text);font-weight:500}
.stack{display:flex;height:14px;border-radius:999px;overflow:hidden;background:var(--steel);gap:2px}
.stack span{display:block;height:100%;min-width:0;transition:flex-basis .6s cubic-bezier(.2,.8,.2,1)}
.legend-inline{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.85rem;color:var(--muted)}
.legend-inline i,.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;vertical-align:baseline}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-content:start}
.stat{background:var(--surface);border:1px solid var(--steel);border-radius:var(--radius-md);padding:16px 18px;display:flex;flex-direction:column;gap:4px}
.stat .k{font-family:var(--mono);font-size:11px;letter-spacing:1.1px;text-transform:uppercase;color:var(--muted)}
.stat .v{font-size:1.45rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.3px}
.stat .n{font-size:.8rem;color:var(--muted)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.card h3{font-family:var(--sans);font-weight:700;font-size:1.1rem;margin-bottom:4px}
.card .cap{color:var(--muted);font-size:.9rem;margin-bottom:18px}
.donut-wrap{display:flex;align-items:center;gap:26px;flex-wrap:wrap}
.donut{width:190px;height:190px;flex:none}
.donut circle{transition:stroke-dasharray .7s cubic-bezier(.2,.8,.2,1)}
.donut text{fill:var(--text);font-family:var(--display)}
.donut .dsub{fill:var(--muted);font-family:var(--mono);font-size:9px;letter-spacing:1px;text-transform:uppercase}
.legend{list-style:none;display:flex;flex-direction:column;gap:9px;flex:1;min-width:190px}
.legend li{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;font-size:.92rem}
.legend .pct{color:var(--muted);font-size:.8rem;min-width:2.8em;text-align:right;font-variant-numeric:tabular-nums}
.legend .amt{font-variant-numeric:tabular-nums}
.chart{width:100%;height:auto;display:block;overflow:visible}
.chart text{font-family:var(--mono);font-size:10px;fill:var(--muted)}
.chart .bar-over{fill:var(--bad)}
.chart .bar-ok{fill:url(#barg)}
.chart .col{transform-origin:bottom;transform-box:fill-box;animation:grow .6s cubic-bezier(.2,.8,.2,1) both}
@keyframes grow{from{transform:scaleY(.02)}to{transform:scaleY(1)}}
.chart .inc{stroke:var(--good);stroke-width:2;stroke-dasharray:5 5;fill:none}
.chart .grid{stroke:var(--steel);stroke-width:1}
.chart .val{fill:var(--silver)}
.key{display:flex;gap:18px;flex-wrap:wrap;font-size:.82rem;color:var(--muted);margin-top:10px}
.key .ln{display:inline-block;width:18px;border-top:2px dashed var(--good);vertical-align:middle;margin-right:7px}
.top{list-style:none;display:flex;flex-direction:column;gap:14px}
.top li{display:grid;grid-template-columns:1fr auto;gap:4px 12px;font-size:.95rem}
.top .nm small{color:var(--muted);margin-left:8px}
.top .meter{grid-column:1/-1;height:6px;background:var(--steel);border-radius:999px;overflow:hidden}
.top .meter span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-bright));border-radius:999px}
.insights{display:flex;flex-direction:column;gap:10px;list-style:none}
.insights li{padding:12px 14px;border:1px solid var(--steel);border-radius:var(--radius-md);background:var(--surface2);font-size:.93rem;color:var(--muted)}
.insights b{color:var(--text);font-weight:500}
.insights .good{border-left:3px solid var(--good)}
.insights .warn{border-left:3px solid var(--warn)}
.insights .bad{border-left:3px solid var(--bad)}
.welcome{text-align:center;display:flex;flex-direction:column;align-items:center;gap:14px;padding:46px 24px;background-image:radial-gradient(circle at 50% 0,rgba(76,42,154,.4),transparent 65%),radial-gradient(var(--steel) 1.5px,transparent 1.5px);background-size:auto,24px 24px}
.welcome h2{font-family:var(--display);font-weight:400;font-size:clamp(1.3rem,3.4vw,1.9rem);line-height:1.25}
.welcome h2 span{color:var(--accent-bright)}
.welcome p{color:var(--muted);max-width:52ch}
.steps{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:6px}
@media (max-width:860px){.hero,.two{grid-template-columns:1fr}.donut{margin:0 auto}}

/* ---------- list pages ---------- */
.strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px}
.group{background:var(--surface);border:1px solid var(--steel);border-radius:var(--radius-lg);overflow:hidden}
.ghead{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--steel);background:var(--surface2)}
.ghead h2{font-family:var(--sans);font-size:1rem;font-weight:700;flex:1;display:flex;align-items:center}
.ghead .gtot{font-variant-numeric:tabular-nums;font-weight:500}
.ghead .gtot small{color:var(--muted);font-weight:400}
.mini{background:none;border:1px solid var(--steel);color:var(--muted);border-radius:var(--radius-sm);padding:4px 10px;font-size:.8rem;cursor:pointer;transition:color .15s,border-color .15s}
.mini:hover{color:var(--text);border-color:var(--silver)}
.row{display:grid;grid-template-columns:auto 1fr auto auto auto;align-items:center;gap:12px;padding:12px 18px;border-bottom:1px solid var(--steel);transition:background .15s,opacity .2s}
.row:last-child{border-bottom:0}
.row:hover{background:rgba(139,92,246,.05)}
.row.off{opacity:.45}
.row.off .rname{text-decoration:line-through}
.icon{background:none;border:1px solid transparent;color:var(--muted);width:34px;height:34px;border-radius:var(--radius-sm);display:grid;place-items:center;cursor:pointer;transition:color .15s,border-color .15s}
.icon:hover{color:var(--text);border-color:var(--steel)}
.icon svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.rmain{min-width:0;cursor:pointer}
.rname{font-weight:500;overflow-wrap:anywhere}
.rmeta{display:flex;flex-wrap:wrap;gap:6px;margin-top:3px}
.chip{font-family:var(--mono);font-size:11px;letter-spacing:.5px;color:var(--silver);border:1px solid var(--steel);border-radius:999px;padding:1px 9px;white-space:nowrap}
.chip.vendor{color:var(--accent-bright);border-color:var(--accent-deep)}
.chip.warn{color:var(--warn);border-color:#6b5a2e}
.ramt{display:flex;align-items:center;border:1px solid var(--steel);border-radius:var(--radius-sm);background:var(--bg);width:132px;transition:border-color .15s}
.ramt:focus-within{outline:2px solid var(--accent);border-color:transparent}
.ramt span{padding-left:10px;color:var(--muted)}
.ramt input{border:0;background:none;padding:8px 10px 8px 4px;text-align:right;font-variant-numeric:tabular-nums;font-size:.95rem;outline:none!important}
.row.zero .ramt{border-color:var(--accent);animation:pulse 2s ease-in-out infinite}
@keyframes pulse{50%{box-shadow:0 0 0 4px rgba(139,92,246,.18)}}
.rper{min-width:92px;text-align:right;color:var(--muted);font-size:.85rem;font-variant-numeric:tabular-nums}
.rper b{display:block;color:var(--text);font-weight:500;font-size:.95rem}
.empty{color:var(--muted);padding:26px;text-align:center}
.addrow{display:flex;gap:10px;padding:12px 18px;background:var(--surface2);border-top:1px solid var(--steel)}
.payoff{font-size:.8rem;color:var(--muted)}
@media (max-width:700px){
  .row{grid-template-columns:auto 1fr auto;grid-template-areas:"eye main edit" "eye amt per";row-gap:8px}
  .row>.eye{grid-area:eye}.row>.rmain{grid-area:main}.row>.edit{grid-area:edit}.row>.ramt{grid-area:amt;width:100%}.row>.rper{grid-area:per;text-align:right}
}

/* ---------- year grid ---------- */
.ywrap{overflow-x:auto;border:1px solid var(--steel);border-radius:var(--radius-lg);background:var(--surface)}
table.year{border-collapse:collapse;width:100%;min-width:900px;font-size:.85rem;font-variant-numeric:tabular-nums}
.year th,.year td{padding:9px 7px;text-align:right;border-bottom:1px solid var(--steel);white-space:nowrap}
.year th{font-family:var(--mono);font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);font-weight:500;position:sticky;top:0;background:var(--surface2)}
.year th:first-child,.year td:first-child{text-align:left;position:sticky;left:0;background:var(--surface);z-index:1;min-width:150px;max-width:170px;overflow:hidden;text-overflow:ellipsis;padding-left:14px}
.year td:last-child{padding-right:14px}
.year th:first-child{background:var(--surface2)}
.year td.z{color:#4a4a58}
.year td.lump{color:var(--accent-bright);background:rgba(139,92,246,.1);font-weight:500}
.year tr.sec td{font-family:var(--mono);font-size:11px;letter-spacing:1.2px;text-transform:uppercase;color:var(--accent-bright);background:var(--surface2);padding-top:14px}
.year tr.tot td{font-weight:700;border-top:1px solid var(--silver)}
.year tr.net td{font-weight:700;font-size:.95rem}
.year td.pos{color:var(--good)}
.year td.neg{color:var(--bad)}
.year td:last-child,.year th:last-child{border-left:1px solid var(--steel);font-weight:500}

/* ---------- dialogs ---------- */
dialog{margin:auto;background:var(--surface);color:var(--text);border:1px solid var(--steel);border-top:1px solid var(--silver);border-radius:var(--radius-lg);padding:26px;width:min(620px,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:auto;box-shadow:0 40px 120px rgba(0,0,0,.8),0 0 80px rgba(76,42,154,.25)}
dialog::backdrop{background:rgba(0,0,0,.72);backdrop-filter:blur(4px)}
dialog[open]{animation:pop .2s ease both}
@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
dialog header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
dialog h2{font-family:var(--display);font-weight:400;font-size:1.2rem}
.x{background:none;border:0;color:var(--muted);font-size:1.8rem;line-height:1;cursor:pointer;padding:0 6px}
.x:hover{color:var(--text)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid2 .full{grid-column:1/-1}
.grid2.inner{padding:14px;border:1px dashed var(--steel);border-radius:var(--radius-md);background:var(--surface2)}
.money{display:flex;align-items:center;border:1px solid var(--steel);border-radius:var(--radius-sm);background:var(--bg)}
.money:focus-within{outline:2px solid var(--accent);border-color:transparent}
.money span{padding-left:13px;color:var(--muted)}
.money input{border:0;background:none;outline:none!important}
.monthchips{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
.monthchips button{padding:9px 0;border-radius:var(--radius-sm);border:1px solid var(--steel);background:var(--bg);color:var(--muted);cursor:pointer;font-size:.88rem;transition:all .15s}
.monthchips button:hover{border-color:var(--silver);color:var(--text)}
.monthchips button.on{background:linear-gradient(135deg,var(--accent),var(--accent-deep));border-color:transparent;color:#fff}
.calc{margin-top:16px;padding:12px 14px;border-radius:var(--radius-md);background:var(--surface2);border:1px solid var(--steel);color:var(--muted);font-size:.92rem;min-height:3em}
.calc b{color:var(--text);font-weight:500}
.check{display:flex;align-items:center;gap:10px;margin:16px 0 0;cursor:pointer;font-family:var(--sans);font-size:.92rem;letter-spacing:0;text-transform:none;color:var(--text)}
.check input{width:18px;height:18px;margin:0;accent-color:var(--accent)}
.dfoot{display:flex;align-items:center;gap:10px;margin-top:14px;padding:0;border:0;text-align:left;font-family:var(--sans);letter-spacing:0;color:inherit}
dialog .sub{margin-bottom:14px}
.qslist{display:flex;flex-direction:column;gap:16px;max-height:52vh;overflow:auto;padding-right:6px}
.qsgroup h4{font-family:var(--mono);font-size:11px;letter-spacing:1.2px;text-transform:uppercase;color:var(--accent-bright);font-weight:500;margin-bottom:8px}
.qsgrid{display:flex;flex-wrap:wrap;gap:8px}
.qsgrid label{margin:0;display:inline-flex;align-items:center;gap:8px;border:1px solid var(--steel);border-radius:999px;padding:6px 14px;cursor:pointer;font-family:var(--sans);font-size:.9rem;letter-spacing:0;text-transform:none;color:var(--muted);transition:all .15s}
.qsgrid label:hover{border-color:var(--silver);color:var(--text)}
.qsgrid input{display:none}
.qsgrid label:has(input:checked){background:rgba(139,92,246,.18);border-color:var(--accent);color:var(--text)}
.qsgrid label:has(input:disabled){opacity:.35;cursor:default}
.acts{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.pw summary{cursor:pointer;color:var(--muted);font-family:var(--mono);font-size:12px;letter-spacing:1px;text-transform:uppercase;padding:14px 0;border-top:1px solid var(--steel)}
.pw summary:hover,.pw[open] summary{color:var(--text)}
.pw form{display:flex;flex-direction:column;gap:6px}
.pw input{margin-bottom:12px}
.pw .btn{width:max-content}
.avatar{position:relative}
.avatar.pend::after{content:"";position:absolute;top:-2px;right:-2px;width:12px;height:12px;border-radius:50%;background:var(--warn);border:2px solid var(--bg)}
.notice{margin:0 0 20px;padding:12px 14px;border-radius:var(--radius-md);border:1px solid #2c6b4a;border-left:3px solid var(--good);background:rgba(110,231,168,.07);color:var(--text);font-size:.92rem}
.adminbox{border-top:1px solid var(--steel);padding:16px 0 4px;margin-bottom:6px}
.adminbox h3{font-family:var(--mono);font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--accent-bright);font-weight:500;margin:0 0 10px;display:flex;align-items:center;gap:10px}
.adminbox h3:not(:first-child){margin-top:18px}
.adminbox .count{background:var(--warn);color:#000;border-radius:999px;padding:0 8px;font-size:11px;letter-spacing:0}
.adminbox .count:empty{display:none}
.ulist{display:flex;flex-direction:column;gap:8px}
.urow{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--steel);border-radius:var(--radius-md);background:var(--surface2)}
.uinfo{display:flex;flex-direction:column;min-width:0}
.uemail{overflow-wrap:anywhere;font-weight:500}
.ubtns{display:flex;gap:8px}
.empty-s{color:var(--muted);font-size:.9rem}
.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);background:var(--surface2);border:1px solid var(--steel);border-top:1px solid var(--silver);border-radius:var(--radius-md);padding:11px 20px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:100;font-size:.92rem}
.toast.show{opacity:1;transform:translate(-50%,0)}
@media (max-width:560px){.grid2{grid-template-columns:1fr}.monthchips{grid-template-columns:repeat(4,1fr)}.logo .logo-sub{display:none}.tools{width:100%;justify-content:space-between}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
