/* ALTR Money Map v2 — product language on ALTR tokens (ink / bone / mint).
   Quiet surfaces, persistent controls, numbers first. No report chrome. */
:root{
  --page:#161614;--surface:#1d1d1b;--raise:#232321;--raise2:#2a2a27;
  --bone:#ebecdc;--mint:#b6f2e5;--mint-deep:#7fd9c6;
  --hair:rgba(235,236,220,.09);--hair2:rgba(235,236,220,.16);--hair3:rgba(235,236,220,.26);
  --t1:#ebecdc;--t2:rgba(235,236,220,.74);--t3:rgba(235,236,220,.52);--t4:rgba(235,236,220,.34);
  --mint-soft:rgba(182,242,229,.08);--mint-line:rgba(182,242,229,.45);
  --neg:#e0604c;--neg-soft:rgba(224,96,76,.12);--warn:#d9b25a;--warn-soft:rgba(217,178,90,.12);
  --sans:'Archivo','Helvetica Neue',system-ui,sans-serif;--mono:'Spline Sans Mono','SF Mono',ui-monospace,monospace;
  --r:10px;--r-sm:6px;--sb:236px;--cb:58px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none!important}
::selection{background:var(--mint);color:#161614}
:focus-visible{outline:2px solid var(--mint-line);outline-offset:2px}
*{scrollbar-width:thin;scrollbar-color:rgba(235,236,220,.18) transparent}
html{height:100%;-webkit-tap-highlight-color:transparent}
body{min-height:100%;background:var(--page);color:var(--t1);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;font-feature-settings:"tnum" 1}
button,input,select{font-family:inherit;font-size:inherit;color:inherit}
a{color:inherit;text-decoration:none}
.num,td.num,th.num,.kpi-v,.mono{font-variant-numeric:tabular-nums}
.mono{font-family:var(--mono);font-size:11.5px;color:var(--t3);letter-spacing:.01em}
.muted{color:var(--t3)}.mintc{color:var(--mint)}.negc{color:var(--neg)}.warnc{color:#e6c77a}

/* login */
.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--hair2);border-radius:14px;padding:40px 36px 28px}
.login-wordmark{height:22px;width:auto;display:block;margin-bottom:26px}
.login-card .mono-label{font-family:var(--mono);font-size:11px;color:var(--t3);margin-bottom:22px}
.form-label{display:block;font-size:12px;color:var(--t3);margin:12px 0 6px}
.form-input{width:100%;background:var(--page);border:1px solid var(--hair2);color:var(--t1);padding:11px 12px;border-radius:8px;font-size:14px}
.form-input:focus{border-color:var(--mint-line);outline:none}
.form-error{color:var(--neg);font-size:13px;margin-top:10px}
.login-foot{margin-top:22px;font-size:11.5px;color:var(--t4);line-height:1.6}
.btn{border:1px solid var(--hair2);background:var(--raise);color:var(--t1);padding:8px 14px;border-radius:8px;cursor:pointer;font-weight:600;font-size:13px;transition:background .15s,border-color .15s;line-height:1.2}
.btn:hover{border-color:var(--hair3);background:var(--raise2)}
.btn-primary{background:var(--mint);color:#161614;border-color:var(--mint)}
.btn-primary:hover{background:#c9f6ec;border-color:#c9f6ec}
.btn-block{width:100%;margin-top:18px;padding:12px}
.btn-sm{padding:6px 10px;font-size:12px}
.btn-ghost{background:transparent;border-color:transparent;color:var(--t3)}
.btn-ghost:hover{color:var(--t1);background:var(--raise)}
.btn:disabled{opacity:.5;cursor:default}

/* shell */
.shell{display:grid;grid-template-columns:var(--sb) 1fr;min-height:100vh}
.side{position:sticky;top:0;height:100vh;background:var(--surface);border-right:1px solid var(--hair);display:flex;flex-direction:column;padding:18px 14px;overflow-y:auto}
.side-brand{display:flex;align-items:center;gap:10px;padding:4px 8px 20px}
.side-brand img{height:14px;width:auto}
.side-brand span{font-size:12px;color:var(--t3);font-weight:500}
.nav{display:flex;flex-direction:column;gap:2px}
.nav .grp{font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--t4);padding:14px 10px 6px}
.nav a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--t2);font-size:13.5px;font-weight:500;transition:background .12s,color .12s}
.nav a:hover{background:var(--raise);color:var(--t1)}
.nav a.active{background:var(--mint-soft);color:var(--mint)}
.nav a .dot{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.55;flex:none}
.nav a.sub{padding-left:26px;font-size:13px}
.side-foot{margin-top:auto;padding:12px 8px 0;display:flex;flex-direction:column;gap:8px;font-size:11.5px;color:var(--t4)}
.content{min-width:0}
.ctl{position:sticky;top:0;z-index:40;background:rgba(22,22,20,.9);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--hair);padding:10px 26px;display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;min-height:var(--cb)}
.seg{display:inline-flex;background:var(--raise);border:1px solid var(--hair);border-radius:9px;padding:3px;gap:2px}
.seg button{border:0;background:transparent;color:var(--t3);padding:5px 11px;border-radius:6px;font-size:12.5px;font-weight:600;cursor:pointer;transition:background .12s,color .12s;white-space:nowrap}
.seg button:hover{color:var(--t1)}
.seg button.on{background:var(--mint);color:#161614}
.ctl select,.ctl input{background:var(--raise);border:1px solid var(--hair);color:var(--t1);padding:7px 10px;border-radius:8px;font-size:12.5px}
.ctl select:focus,.ctl input:focus{border-color:var(--mint-line);outline:none}
.ctl .lbl{font-size:11px;color:var(--t4);font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.switch{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--t2);cursor:pointer;user-select:none}
.switch i{width:30px;height:18px;border-radius:999px;background:var(--raise2);border:1px solid var(--hair2);position:relative;transition:background .15s}
.switch i::after{content:'';position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--t3);transition:transform .15s,background .15s}
.switch.on i{background:var(--mint-soft);border-color:var(--mint-line)}
.switch.on i::after{transform:translateX(12px);background:var(--mint)}
.showing{font-size:12px;color:var(--t3);white-space:nowrap;margin-left:auto}
.showing b{color:var(--mint);font-weight:600}
.gsearch{min-width:200px}
.main{padding:26px 26px 80px;max-width:1280px}
@media (max-width:920px){
  .shell{grid-template-columns:1fr}
  .side{position:static;height:auto;flex-direction:row;align-items:center;padding:10px 12px;border-right:0;border-bottom:1px solid var(--hair);overflow-x:auto;scrollbar-width:none;gap:6px}
  .side::-webkit-scrollbar{display:none}
  .side-brand{padding:0 8px 0 0}.side-brand span{display:none}
  .nav{flex-direction:row;gap:2px}.nav .grp{display:none}.nav a{padding:6px 9px;white-space:nowrap;font-size:12.5px}.nav a.sub{padding-left:9px}.nav a .dot{display:none}
  .side-foot{margin:0;padding:0 0 0 6px;flex-direction:row}.side-foot span{display:none}
  .ctl{padding:8px 14px}.showing{margin-left:0;flex-basis:100%}
  .main{padding:16px 14px 70px}
}

/* page header */
.ph{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 18px;margin-bottom:22px}
.ph h1{font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.1}
.ph p{color:var(--t3);font-size:13.5px;max-width:74ch;flex-basis:100%;line-height:1.55}
.ph .ph-r{margin-left:auto;display:flex;gap:8px;align-items:center}
.crumb{font-size:12px;color:var(--t4);margin-bottom:8px}.crumb a{color:var(--t3)}.crumb a:hover{color:var(--mint)}

/* cards & grids */
.card{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:18px 20px}
.card.tight{padding:0;overflow:hidden}
.card-h{display:flex;align-items:baseline;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.card-h h2{font-size:15px;font-weight:600;letter-spacing:-.01em}
.card-h .r{margin-left:auto;font-size:12px;color:var(--t3);display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.card-h .r a{color:var(--mint)}
.card.tight .card-h{padding:14px 18px 10px;margin:0;border-bottom:1px solid var(--hair)}
.grid{display:grid;gap:14px;margin-bottom:14px}
.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.g6{grid-template-columns:repeat(6,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g5{grid-template-columns:repeat(5,1fr)}
.g-2-1{grid-template-columns:2fr 1fr}
@media (max-width:1100px){.g6,.g5{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:1fr 1fr}}
@media (max-width:760px){.g2,.g3,.g-2-1{grid-template-columns:1fr}.g6,.g4,.g5{grid-template-columns:1fr 1fr}}
.kpi{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:16px 18px 14px;cursor:default;transition:border-color .15s;min-width:0}
.kpi.link{cursor:pointer}.kpi.link:hover{border-color:var(--hair3)}
.kpi-l{font-size:12px;color:var(--t3);font-weight:500;display:flex;justify-content:space-between;gap:8px}
.kpi-v{font-size:26px;font-weight:700;letter-spacing:-.02em;margin-top:6px;line-height:1.1;white-space:nowrap}
.kpi-v.small{font-size:20px}
.kpi-s{font-size:11.5px;color:var(--t4);margin-top:6px;line-height:1.4}
.kpi.hot .kpi-v{color:var(--mint)}
.kpi.bad .kpi-v{color:#eaa398}
.kpi svg.spark{width:100%;height:26px;display:block;margin-top:8px}
.note{font-size:12.5px;color:var(--t3);line-height:1.55;margin-top:10px}
.note b{color:var(--t2)}
.pill{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--hair2);border-radius:999px;padding:3px 9px;font-size:11px;color:var(--t3);white-space:nowrap;background:var(--raise)}
.pill.mint{border-color:var(--mint-line);color:var(--mint);background:var(--mint-soft)}
.pill.neg{border-color:rgba(224,96,76,.4);color:#eaa398;background:var(--neg-soft)}
.pill.warn{border-color:rgba(217,178,90,.4);color:#e6c77a;background:var(--warn-soft)}
.tag{display:inline-block;font-family:var(--mono);font-size:10.5px;color:var(--t3);border:1px solid var(--hair2);border-radius:5px;padding:1px 6px;margin-right:4px;white-space:nowrap}
.tag.biz{color:var(--mint);border-color:var(--mint-line)}.tag.personal{color:var(--t4)}.tag.unknown{color:#eaa398;border-color:rgba(224,96,76,.4)}

/* tables */
.twrap{overflow:auto;-webkit-overflow-scrolling:touch}
.card.tight .twrap{max-height:70vh}
table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
th{position:sticky;top:0;z-index:1;background:var(--surface);text-align:left;font-size:11px;font-weight:600;color:var(--t3);letter-spacing:.03em;padding:9px 12px;border-bottom:1px solid var(--hair2);white-space:nowrap}
th.sort{cursor:pointer;user-select:none}th.sort:hover{color:var(--t1)}th.sorted{color:var(--mint)}
td{padding:9px 12px;border-bottom:1px solid var(--hair);vertical-align:middle;line-height:1.4}
tbody tr:last-child td{border-bottom:0}
tbody tr.click{cursor:pointer}tbody tr.click:hover td{background:var(--raise)}
tbody tr.sel td{background:var(--mint-soft)}
td.num,th.num{text-align:right;white-space:nowrap}
td.pos{color:var(--mint)}td.neg{color:var(--t2)}td.dim{color:var(--t4)}
td.desc{color:var(--t3);font-size:12.5px;max-width:520px}
td.note{color:var(--t4);font-size:12px;max-width:320px}
td.first{font-weight:600}
tr.total td{background:var(--raise);font-weight:700;border-top:1px solid var(--hair2)}
.bar{display:block;height:3px;border-radius:2px;background:rgba(235,236,220,.28);margin-top:5px}
.bar.mint{background:var(--mint)}
.sub{display:block;font-size:11.5px;color:var(--t4);font-weight:400;margin-top:1px}
.star{background:none;border:0;color:var(--t4);cursor:pointer;font-size:15px;line-height:1;padding:2px 4px}
.star.on,.star:hover{color:var(--mint)}
.empty{padding:26px;text-align:center;color:var(--t4);font-size:12.5px}
/* cycle grid */
.cyc td{padding:5px 6px;text-align:center;font-size:11.5px}
.cyc th{padding:7px 6px;text-align:center}
.cyc td.name{text-align:left;font-weight:600;white-space:nowrap;position:sticky;left:0;background:var(--surface);z-index:1}
.cyc th.name{text-align:left;left:0;z-index:2}
.cell{display:inline-block;min-width:54px;padding:3px 5px;border-radius:5px;font-family:var(--mono);font-size:10.5px}
.cell.paid{background:var(--mint-soft);color:var(--mint)}
.cell.multi{background:var(--mint-soft);color:var(--mint);outline:1px solid var(--mint-line)}
.cell.miss{background:var(--neg-soft);color:#eaa398}
.cell.nodata{color:var(--t4);border:1px dashed var(--hair2)}
.cell.out{color:var(--t4)}
.cyc-key{display:flex;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--t3);margin:8px 0 2px}

/* lists */
.list{display:flex;flex-direction:column}
.li{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--hair);font-size:13px;line-height:1.5;align-items:flex-start}
.li:last-child{border-bottom:0}
.li .n{font-family:var(--mono);color:var(--mint);font-size:11px;flex:none;padding-top:3px;min-width:18px}
.li .d{flex:1;color:var(--t2)}.li .d b{color:var(--t1);display:block;font-weight:600}
.li .v{white-space:nowrap;font-weight:600}
.li a.go{color:var(--mint);font-size:12px;white-space:nowrap;padding-top:2px}
details.acc{border-top:1px solid var(--hair)}
details.acc summary{cursor:pointer;padding:10px 0;font-size:13px;font-weight:600;color:var(--t2);list-style:none;display:flex;align-items:center;gap:8px}
details.acc summary::before{content:'›';color:var(--mint);transition:transform .15s;display:inline-block}
details.acc[open] summary::before{transform:rotate(90deg)}
details.acc ul{padding:0 0 10px 18px;color:var(--t3);font-size:13px;line-height:1.55}
details.acc li{margin:4px 0}

/* charts */
.chart-h{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-bottom:6px}
.chart-h h3{font-size:12.5px;font-weight:600;color:var(--t2)}
.legend{display:flex;gap:12px;flex-wrap:wrap;margin-left:auto}
.legend span{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--t3)}
.legend i{width:9px;height:9px;border-radius:2px;display:inline-block}
.sw-in,.sw-c,.sw-biz{background:var(--mint)}.sw-out,.sw-b,.sw-per{background:rgba(235,236,220,.5)}.sw-a{background:rgba(235,236,220,.85)}.sw-d,.sw-mix{background:rgba(235,236,220,.22)}
svg.ch{width:100%;height:auto;display:block;overflow:visible}
svg.ch text{font-family:var(--mono);font-size:9.5px;fill:rgba(235,236,220,.45)}
svg.ch .grid{stroke:rgba(235,236,220,.07)}
svg.ch .b{cursor:pointer}svg.ch .b:hover{opacity:.75}
svg.spark{width:90px;height:22px;display:block}
svg.spark rect{fill:rgba(235,236,220,.3)}svg.spark rect.hi{fill:var(--mint)}
.tip{position:fixed;z-index:200;background:var(--raise2);border:1px solid var(--hair2);padding:8px 11px;font-size:12px;line-height:1.5;pointer-events:none;max-width:260px;border-radius:8px}
.tip b{display:block;font-size:11px;color:var(--mint);margin-bottom:3px;font-weight:600}

/* in-page filters */
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}
.filters select,.filters input{background:var(--raise);border:1px solid var(--hair);color:var(--t1);padding:7px 10px;border-radius:8px;font-size:12.5px;min-width:0}
.filters input[type=search]{flex:1;min-width:180px}
.filters select:focus,.filters input:focus{border-color:var(--mint-line);outline:none}
.fsum{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:baseline;margin:2px 0 12px;font-size:12px;color:var(--t3)}
.fsum b{color:var(--t1);font-size:14px}
.pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:12px;font-size:12px;color:var(--t3)}

/* person / model detail */
.detail{display:grid;grid-template-columns:1fr 1.5fr;gap:16px}
@media (max-width:900px){.detail{grid-template-columns:1fr}}
.detail-h{display:flex;align-items:center;gap:12px;margin-bottom:6px;flex-wrap:wrap}
.detail-h h2{font-size:18px;font-weight:700;letter-spacing:-.01em}
.detail-h .role{font-size:12.5px;color:var(--t3)}
.kv{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0}
.kv div{background:var(--raise);border-radius:8px;padding:10px 12px;min-width:0}
.kv label{display:block;font-size:11px;color:var(--t4)}
.kv b{font-size:15px;font-weight:700;white-space:nowrap}
.alias{font-size:12px;color:var(--t3);margin-top:8px;line-height:1.7}
.alias code{font-family:var(--mono);font-size:11px;color:var(--t2);background:var(--raise);padding:1px 5px;border-radius:4px;margin-right:4px}
.acct-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.acct{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r-sm);padding:12px 14px;display:block;transition:border-color .15s}
.acct:hover{border-color:var(--hair3)}
.acct .a{font-family:var(--mono);font-size:11px;color:var(--mint)}
.acct .nm{font-weight:600;font-size:13px;margin:3px 0 1px}
.acct .rl{font-size:12px;color:var(--t3);line-height:1.4}
.acct .kvs{display:flex;gap:12px;margin-top:8px;padding-top:8px;border-top:1px solid var(--hair);font-size:11px;color:var(--t4)}
.acct .kvs b{display:block;font-size:12.5px;color:var(--t1)}
.acct .miss{margin-top:6px;font-size:11px;color:#eaa398}
.dl{font-size:12px;color:var(--mint);background:var(--mint-soft);border:1px solid var(--mint-line);border-radius:8px;padding:6px 11px;cursor:pointer}
.loading{padding:80px 0;text-align:center;color:var(--t3);font-size:13px}
.foot{padding:20px 26px 30px;font-size:11.5px;color:var(--t4);border-top:1px solid var(--hair);max-width:1280px}
/* v3 additions */
.cell.short{background:var(--warn-soft);color:#e6c77a}
.gsearch-wrap{position:relative;flex:1;min-width:220px;max-width:420px}
.sdrop{position:absolute;top:100%;left:0;right:0;z-index:60;background:var(--raise2);border:1px solid var(--hair2);border-radius:10px;margin-top:6px;overflow:hidden;box-shadow:0 12px 30px rgba(0,0,0,.35)}
.sdrop a{display:flex;align-items:center;gap:10px;padding:9px 12px;font-size:13px;color:var(--t1);border-top:1px solid var(--hair)}
.sdrop a:first-child{border-top:0}.sdrop a:hover,.sdrop a.on{background:var(--mint-soft);color:var(--mint)}
.sdrop .k{font-family:var(--mono);font-size:10px;color:var(--t4);min-width:56px}
.cyc thead tr.total th{background:var(--raise);color:var(--t1);font-weight:700}
