/* Mint Performance — Mint identity: Roboto · Mint #1B9370 · Ink #0F2A22 · Mist #F4F8F6 */
@font-face{font-family:Roboto;font-weight:400;font-display:swap;src:url(fonts/roboto-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:Roboto;font-weight:500;font-display:swap;src:url(fonts/roboto-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:Roboto;font-weight:600;font-display:swap;src:url(fonts/roboto-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:Roboto;font-weight:700;font-display:swap;src:url(fonts/roboto-latin-700-normal.woff2) format('woff2')}

:root{
  --mint:#1B9370;--deep:#127055;--ink:#0F2A22;--slate:#52665F;--mist:#F4F8F6;--white:#fff;--glow:#7FE0BD;--light:#69D6B8;
  --sun:#F3C969;--sky:#7FB2F0;--rose:#E7727A;--alert:#A3333B;--cream:#F6F1E7;--gold:#B8975A;--emerald:#12493C;--emerald2:#177A5F;
  --line:rgba(15,42,34,.10);--line2:rgba(15,42,34,.06);--good:#127055;--bad:#A3333B;--warn:#9a6b00;
  --r:22px;--r2:14px;--shadow:0 1px 2px rgba(15,42,34,.04),0 12px 32px -16px rgba(15,42,34,.18);
  --display:Roboto,system-ui,-apple-system,'Segoe UI',Arial,sans-serif;--text:Roboto,system-ui,-apple-system,'Segoe UI',Arial,sans-serif;
  color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--mist);color:var(--ink);font:400 14.5px/1.5 var(--text);-webkit-font-smoothing:antialiased;min-height:100vh}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--deep)}
:focus-visible{outline:2px solid var(--mint);outline-offset:2px;border-radius:6px}
h1,h2,h3{margin:0;font-family:var(--display);font-weight:600;letter-spacing:-.01em;line-height:1.2}
.num{font-variant-numeric:tabular-nums;font-feature-settings:'tnum'}
.muted{color:var(--slate)}.small{font-size:12.5px}.tiny{font-size:11.5px}
.hide{display:none!important}
.mintmark{height:30px;width:30px;display:block}
.clientlogo{height:34px;max-width:150px;width:auto;object-fit:contain;display:block}
.clientname{font:600 15px var(--display);color:var(--ink)}

/* ---------- buttons / fields ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:12px;border:1px solid var(--mint);background:var(--mint);color:#fff;font-weight:600;cursor:pointer;transition:transform .15s,background .15s,box-shadow .15s;white-space:nowrap}
.btn:hover{background:var(--deep);border-color:var(--deep)}
.btn:active{transform:translateY(1px)}
.btn[disabled]{opacity:.55;cursor:not-allowed}
.btn.ghost{background:#fff;color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{background:var(--mist);border-color:rgba(15,42,34,.22)}
.btn.sm{height:32px;padding:0 12px;border-radius:10px;font-size:13px}
.btn.danger{background:#fff;color:var(--alert);border-color:rgba(163,51,59,.35)}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field>label{font-weight:600;font-size:13px}
.field .hint{font-size:12px;color:var(--slate)}
.in,select.in,textarea.in{height:42px;padding:0 12px;border:1px solid var(--line);border-radius:12px;background:#fff;width:100%}
textarea.in{height:auto;padding:10px 12px;min-height:84px;resize:vertical}
.in:focus{outline:none;border-color:var(--mint);box-shadow:0 0 0 3px rgba(27,147,112,.16)}
.chk{display:flex;align-items:center;gap:10px;cursor:pointer;user-select:none}
.chk input{width:18px;height:18px;accent-color:var(--mint)}
.msg{min-height:20px;font-size:13px;color:var(--slate)}.msg.bad{color:var(--alert)}.msg.ok{color:var(--deep)}

/* ---------- login ---------- */
body.auth{display:grid;place-items:center;padding:24px;background:radial-gradient(900px 520px at 12% -10%,rgba(127,224,189,.45),transparent 60%),radial-gradient(800px 520px at 100% 110%,rgba(127,178,240,.28),transparent 60%),var(--mist);overflow-x:hidden}
.auth-wrap{width:100%;max-width:430px;display:flex;flex-direction:column;align-items:center;gap:26px;animation:rise .9s cubic-bezier(.2,.8,.2,1) both}
@keyframes rise{from{opacity:0;transform:translateY(18px)}}
.lockup{display:flex;align-items:center;gap:20px;justify-content:center;flex-wrap:nowrap;width:max-content;max-width:94vw}
.lockup .brandcol{display:flex;align-items:center;gap:12px}
.lockup .brandcol .mintmark{height:46px;width:46px}
.lockup .word{font:600 25px var(--display);letter-spacing:-.01em;line-height:1}
.lockup .word small{display:block;font:600 11px var(--text);letter-spacing:.16em;color:var(--mint);margin-top:6px;text-transform:uppercase}
.lockup .sep{width:1px;height:42px;background:var(--line)}
.lockup .client{display:flex;flex-direction:column;align-items:flex-start;gap:5px}
.lockup .client .for{font:600 10.5px var(--text);letter-spacing:.14em;color:var(--slate);text-transform:uppercase}
.lockup .client .clientlogo{height:44px;max-width:170px}
.lockup .client .clientname{font-size:20px}
.auth-card{width:100%;background:#fff;border:1px solid var(--line2);border-radius:26px;padding:30px 28px 24px;box-shadow:var(--shadow)}
.auth-card h1{font-size:26px;margin-bottom:4px}
.auth-card .sub{color:var(--slate);margin:0 0 20px}
.auth-card .btn{width:100%;height:46px;font-size:15px;margin-top:4px}
.field.float{position:relative}
.field.float .suffix{position:absolute;right:14px;bottom:12px;color:var(--slate);pointer-events:none;font-size:14px}
.demo-link{margin-top:14px;text-align:center;font-size:13px;color:var(--slate)}
.auth-foot{font-size:12px;color:var(--slate);text-align:center}
.shake{animation:shake .4s}
@keyframes shake{20%,60%{transform:translateX(-7px)}40%,80%{transform:translateX(7px)}}
.notice{background:var(--cream);border:1px solid rgba(184,151,90,.35);color:#5b4a1f;border-radius:14px;padding:12px 14px;font-size:13px}

/* ---------- app shell ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.88);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--line2)}
.topbar .in-top{max-width:1320px;margin:0 auto;padding:10px 22px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.top-brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink)}
.top-brand .mintmark{height:34px;width:34px}
.top-brand b{font:600 19px var(--display);letter-spacing:-.01em}
.top-brand b i{font-style:normal;color:var(--mint)}
.top-sep{width:1px;height:28px;background:var(--line)}
.top-client{display:flex;align-items:center;gap:10px;min-height:34px}
.top-client .clientlogo{height:30px;max-width:130px}
.top-actions{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.livepill{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 13px;border-radius:999px;background:rgba(27,147,112,.10);color:var(--deep);font-weight:600;font-size:12.5px;white-space:nowrap}
.livepill .dot{width:8px;height:8px;border-radius:50%;background:var(--mint);box-shadow:0 0 0 0 rgba(27,147,112,.55);animation:pulse 1.8s infinite}
.livepill.err{background:rgba(163,51,59,.1);color:var(--alert)}.livepill.err .dot{background:var(--alert);animation:none}
.livepill.busy .dot{background:var(--sun);animation:none}
@keyframes pulse{70%{box-shadow:0 0 0 9px rgba(27,147,112,0)}100%{box-shadow:0 0 0 0 rgba(27,147,112,0)}}
.seg{display:inline-flex;background:#fff;border:1px solid var(--line);border-radius:12px;padding:3px;gap:2px}
.seg button{border:0;background:transparent;height:30px;padding:0 11px;border-radius:9px;font-weight:600;font-size:12.5px;color:var(--slate);cursor:pointer}
.seg button:hover{color:var(--ink)}
.seg button.on{background:var(--ink);color:#fff}
.seg button:disabled{opacity:.45;cursor:not-allowed}
.iconbtn{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:11px;border:1px solid var(--line);background:#fff;cursor:pointer}
.iconbtn:hover{background:var(--mist)}
.iconbtn svg{width:18px;height:18px;stroke:var(--ink);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.menu{position:relative}
.menu .pop{position:absolute;right:0;top:44px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 24px 60px -20px rgba(15,42,34,.35);min-width:210px;padding:6px;z-index:40}
.menu .pop a,.menu .pop button{display:flex;width:100%;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;border:0;background:none;text-align:left;text-decoration:none;color:var(--ink);cursor:pointer;font-weight:500}
.menu .pop a:hover,.menu .pop button:hover{background:var(--mist)}

.wrap{max-width:1320px;margin:0 auto;padding:22px 22px 70px}
.rangebar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.rangebar .grow{flex:1}
.rangelabel{font:600 13px var(--text);color:var(--slate)}
.daterange{display:inline-flex;align-items:center;gap:8px}
.daterange input{height:34px;border:1px solid var(--line);border-radius:10px;padding:0 9px;background:#fff}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:6px 0 20px;overflow-x:auto}
.tabs button{border:0;background:none;padding:11px 16px;font-weight:600;color:var(--slate);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;display:flex;gap:8px;align-items:center}
.tabs button:hover{color:var(--ink)}
.tabs button.on{color:var(--ink);border-bottom-color:var(--mint)}
.tabs .badge{background:var(--mint);color:#fff;border-radius:999px;font-size:11px;padding:1px 7px;font-weight:700}

/* ---------- cards ---------- */
.card{background:#fff;border:1px solid var(--line2);border-radius:var(--r);box-shadow:var(--shadow);padding:18px 20px}
.card h3{font-size:17px}
.card .head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid>*{min-width:0}
.split{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr)}
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:14px;margin-bottom:18px}
.kpi{background:#fff;border:1px solid var(--line2);border-radius:18px;padding:14px 16px 12px;box-shadow:var(--shadow);position:relative;overflow:hidden;min-height:112px}
.kpi .lbl{font-size:12.5px;font-weight:600;color:var(--slate);display:flex;align-items:center;gap:6px}
.kpi .val{font:600 28px/1.15 var(--display);letter-spacing:-.015em;margin:6px 0 4px;font-variant-numeric:tabular-nums}
.kpi .dl{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;padding:2px 8px;border-radius:999px}
.dl.good{background:rgba(27,147,112,.12);color:var(--good)}.dl.bad{background:rgba(163,51,59,.1);color:var(--bad)}.dl.flat{background:rgba(15,42,34,.06);color:var(--slate)}
.kpi .spark{position:absolute;right:10px;bottom:8px;width:92px;height:34px;opacity:.9}
.kpi.custom::after{content:'yours';position:absolute;right:12px;top:10px;font:700 9.5px var(--text);letter-spacing:.08em;text-transform:uppercase;color:var(--gold)}
.kpi.add{display:grid;place-items:center;border-style:dashed;background:transparent;box-shadow:none;cursor:pointer;color:var(--deep);font-weight:600}
.kpi.add:hover{background:rgba(27,147,112,.05)}

.live{background:linear-gradient(125deg,#0F2A22 0%,#12493C 58%,#177A5F 100%);color:#fff;border:0;position:relative;overflow:hidden}
.live::before{content:'';position:absolute;width:340px;height:340px;border-radius:50%;background:#2f8c78;opacity:.28;filter:blur(70px);right:-90px;top:-130px}
.live>*{position:relative}
.live h3{color:#fff}
.live .muted{color:#b7d8cc}
.live .livepill{background:rgba(127,224,189,.16);color:var(--glow)}
.live .livepill .dot{background:var(--glow)}
.live .big{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:12px;margin:12px 0 8px}
.live .big div{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:11px 13px}
.live .big b{display:block;font:600 22px var(--display);letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.live .big span{font-size:11.5px;color:#b7d8cc;font-weight:600}

/* ---------- tables ---------- */
.tw{overflow:auto;border:1px solid var(--line2);border-radius:16px;background:#fff}
table.t{border-collapse:collapse;width:100%;min-width:640px}
table.t th{position:sticky;top:0;background:#f7faf8;text-align:right;font-size:12px;font-weight:700;color:var(--slate);padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap;cursor:pointer;user-select:none}
table.t th:first-child,table.t td:first-child{text-align:left}
table.t th.l,table.t td.l{text-align:left}
table.t th:hover{color:var(--ink)}
table.t th .ar{opacity:.6;margin-left:4px;font-size:10px}
table.t td{padding:10px 12px;border-bottom:1px solid var(--line2);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
table.t tr:last-child td{border-bottom:0}
table.t tbody tr:hover td{background:#fbfdfc}
table.t tfoot td{background:#f7faf8;font-weight:700;border-top:1px solid var(--line)}
.nm{font-weight:600;white-space:normal;min-width:190px;max-width:320px}
.nm small{display:block;font-weight:500;color:var(--slate)}
.tag{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:700;background:rgba(15,42,34,.07);color:var(--slate)}
.tag.good{background:rgba(27,147,112,.12);color:var(--good)}.tag.bad{background:rgba(163,51,59,.1);color:var(--bad)}.tag.warn{background:rgba(243,201,105,.3);color:#6d5006}
.chips{display:flex;gap:5px;flex-wrap:wrap;white-space:normal;justify-content:flex-start}
.chip{background:rgba(27,147,112,.1);color:var(--deep);border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:600}
.empty{padding:34px 18px;text-align:center;color:var(--slate)}
.empty b{display:block;color:var(--ink);font:600 17px var(--display);margin-bottom:4px}

/* ---------- live orders feed ---------- */
.feed{display:flex;flex-direction:column;gap:0}
.ord{display:grid;grid-template-columns:78px 96px minmax(130px,1.1fr) minmax(160px,2fr) 110px 110px;gap:12px;align-items:center;padding:12px 6px;border-bottom:1px solid var(--line2)}
.ord:last-child{border-bottom:0}
.ord .tm{font-variant-numeric:tabular-nums;font-weight:700}
.ord .tm small{display:block;font-weight:500;color:var(--slate);font-size:11.5px}
.ord .items{color:var(--slate);font-size:13px;white-space:normal}
.ord .tot{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
.ord.new{animation:flash 2.6s ease-out;background:linear-gradient(90deg,rgba(127,224,189,.45),transparent 80%)}
@keyframes flash{from{background:rgba(127,224,189,.9)}}
.ord.cancelled{opacity:.5;text-decoration:line-through}

/* ---------- charts ---------- */
.chart{width:100%;height:260px;position:relative}
.chart svg{width:100%;height:100%;display:block;overflow:visible}
.chart .tip{position:absolute;pointer-events:none;background:var(--ink);color:#fff;border-radius:10px;padding:8px 10px;font-size:12px;min-width:140px;box-shadow:0 14px 30px -10px rgba(0,0,0,.5);z-index:5;transform:translate(-50%,-100%);display:none}
.chart .tip b{display:block;margin-bottom:4px}
.chart .tip i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--slate);margin-bottom:6px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.axis text{font:500 11px var(--text);fill:#52665F}
.live .axis text{fill:#b7d8cc}

/* ---------- modal / drawer ---------- */
.scrim{position:fixed;inset:0;background:rgba(15,42,34,.45);z-index:60;display:grid;place-items:center;padding:18px;animation:fade .2s}
@keyframes fade{from{opacity:0}}
.modal{background:#fff;border-radius:22px;max-width:620px;width:100%;max-height:88vh;overflow:auto;box-shadow:0 40px 90px -30px rgba(0,0,0,.6);padding:22px 24px}
.modal h3{font-size:21px;margin-bottom:4px}
.modal .foot{display:flex;gap:10px;justify-content:flex-end;margin-top:16px;flex-wrap:wrap}
.pick{max-height:300px;overflow:auto;border:1px solid var(--line);border-radius:14px;padding:6px}
.pick label{display:flex;gap:10px;align-items:center;padding:8px 10px;border-radius:9px;cursor:pointer}
.pick label:hover{background:var(--mist)}
.pick input{accent-color:var(--mint);width:17px;height:17px}
.mgroup{margin:10px 0 4px;font:700 11px var(--text);letter-spacing:.12em;text-transform:uppercase;color:var(--mint)}

/* ---------- setup ---------- */
.setup{max-width:880px;margin:0 auto}
.setup .card{margin-bottom:16px}
.setup h2{font-size:22px;margin-bottom:4px}
.logo-drop{display:flex;align-items:center;gap:16px;border:1.5px dashed rgba(15,42,34,.22);border-radius:16px;padding:14px;background:var(--mist)}
.logo-drop .preview{width:132px;height:64px;border-radius:12px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;overflow:hidden}
.logo-drop .preview img{max-width:100%;max-height:100%;object-fit:contain}
.steps{counter-reset:s;padding:0;margin:8px 0 0;list-style:none}
.steps li{counter-increment:s;display:flex;gap:12px;margin:9px 0;align-items:flex-start}
.steps li::before{content:counter(s);flex:0 0 26px;height:26px;border-radius:50%;background:var(--mint);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.cm{display:grid;grid-template-columns:1.1fr 1.4fr .8fr auto;gap:8px;align-items:end;padding:10px 0;border-bottom:1px solid var(--line2)}
code,.code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;background:rgba(15,42,34,.06);padding:1px 6px;border-radius:6px}
.sticky-save{position:sticky;bottom:14px;display:flex;justify-content:flex-end;gap:10px;margin-top:6px}

/* ---------- toasts / footer ---------- */
#toasts{position:fixed;right:18px;bottom:18px;z-index:100;display:flex;flex-direction:column;gap:8px}
.toast{background:var(--ink);color:#fff;padding:11px 15px;border-radius:12px;box-shadow:0 20px 40px -16px rgba(0,0,0,.5);max-width:360px;animation:rise .35s both;transition:opacity .35s}
.toast.bad{background:var(--alert)}.toast.ok{background:var(--deep)}.toast.out{opacity:0}
.foot-note{max-width:1320px;margin:0 auto;padding:0 22px 40px;color:var(--slate);font-size:12px;text-align:center}
.banner{background:var(--cream);border:1px solid rgba(184,151,90,.35);border-radius:14px;padding:10px 14px;font-size:13px;color:#5b4a1f;margin-bottom:16px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.banner.bad{background:rgba(163,51,59,.07);border-color:rgba(163,51,59,.3);color:var(--alert)}
.loadbar{height:3px;background:linear-gradient(90deg,transparent,var(--mint),transparent);background-size:50% 100%;background-repeat:no-repeat;animation:slide 1.1s linear infinite;position:fixed;left:0;right:0;top:0;z-index:80}
@keyframes slide{from{background-position:-50% 0}to{background-position:150% 0}}

@media(max-width:980px){.split,.g3{grid-template-columns:1fr}.live .big{grid-template-columns:repeat(2,1fr)}.ord{grid-template-columns:70px 1fr 100px}.ord .cust,.ord .items{grid-column:1/-1}.ord .st{display:none}}
@media(max-width:700px){.g2,.row2{grid-template-columns:1fr}.wrap{padding:16px 14px 60px}.topbar .in-top{padding:9px 14px}.cm{grid-template-columns:1fr 1fr}.top-sep{display:none}.kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.kpi .val{font-size:20px}.kpi .spark{display:none}.lockup{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* --- v2: charts first, report table, print --- */
.card{min-width:0}.live .big b{font-size:clamp(17px,1.6vw,21px);white-space:nowrap;line-height:1.2}.live .big{grid-template-columns:repeat(2,minmax(0,1fr))}
.kpis{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:14px}.kpi{padding:11px 13px}.kpi .val{font-size:20px;white-space:nowrap}.kpi.add{min-height:0;padding:8px}
.tile{padding:14px 16px 8px}.tileval{font:600 22px var(--display);margin:2px 0 4px;font-variant-numeric:tabular-nums}
.hb{display:flex;flex-direction:column;gap:9px}.hbr{display:grid;grid-template-columns:minmax(90px,38%) 1fr auto;gap:10px;align-items:center;font-size:13px}.hbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.hbt{height:12px;background:rgba(15,42,34,.06);border-radius:99px;overflow:hidden}.hbt i{display:block;height:100%;border-radius:99px}.hbv{font-variant-numeric:tabular-nums;color:var(--slate);min-width:70px;text-align:right}
.rbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:6px 0 14px}.rbar .grow{flex:1}
#rt th .x{opacity:.35;margin-left:4px;cursor:pointer;font-size:11px}#rt th .x:hover{opacity:1;color:var(--bad)}#rt tfoot td{font-weight:700;background:rgba(15,42,34,.04)}
#printArea{position:fixed;left:-99999px;top:0;width:1040px;background:#fff;color:#0F2A22;padding:8px}
.pr-head{display:flex;align-items:center;gap:14px;border-bottom:2px solid #1B9370;padding-bottom:10px;margin-bottom:12px}.pr-head h1{font:600 24px var(--display);margin:0}.pr-head .mintmark{height:38px}.pr-head .clientlogo{height:38px}
.pr-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.pr-kpis>div{border:1px solid #dfe9e4;border-radius:10px;padding:8px 10px}.pr-kpis span{font-size:11px;color:#52665F;display:block}.pr-kpis b{font:600 16px var(--display)}
.pr-ch{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:12px}.pr-ch h4,#printArea h4{margin:0 0 4px;font:600 13px var(--text)}
.pr-t{width:100%;font-size:11px}.pr-t td,.pr-t th{padding:5px 6px}.pr-t tr.tot td{font-weight:700;background:#f4f8f6}.pr-foot{margin-top:12px;font-size:10px;color:#52665F}
@media print{@page{size:A4 landscape;margin:10mm}html,body{background:#fff!important}body>*:not(#printArea){display:none!important}#printArea{position:static!important;left:auto!important;width:auto!important;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}.pr-t tr{break-inside:avoid}}
.hbt2{display:flex;flex-direction:column;gap:4px}.hbt2 .hbt{height:9px}.hbv b{font-weight:700}

.stb{display:inline-flex;align-items:center;gap:6px;font-weight:500;font-size:12.5px;white-space:nowrap}.stb::before{content:'';width:9px;height:9px;border-radius:50%;background:var(--c)}
.chipb{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 12px;font:500 13px var(--text);cursor:pointer;color:var(--ink)}.chipb.on{border-color:var(--mint);background:rgba(27,147,112,.08)}.chipb b{color:var(--slate);font-weight:600}
#ot tr.orow{cursor:pointer}#ot tr.orow:hover td{background:rgba(27,147,112,.04)}#ot .items{white-space:normal;max-width:380px;color:var(--slate)}#ot .caret{color:var(--slate);font-size:12px}#ot .yes{color:var(--mint);font-weight:700}
#ot tr.odet>td{background:rgba(15,42,34,.03);padding:10px 14px}.t.sub{font-size:12.5px;background:#fff;border-radius:8px}
.stbar{display:flex;height:14px;border-radius:99px;overflow:hidden;gap:2px;margin:6px 0 14px}.stbar i{display:block;min-width:4px}
.stlist{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}.stlist>div{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--line);border-radius:12px}.stlist>div b{font:600 20px var(--display)}.stlist>div.off{opacity:.5}
.pop .btn{width:auto;display:inline-flex;justify-content:center;padding:5px 11px;font-size:12.5px}.pop .chk{width:100%}

/* --- MintSheet (spreadsheet grid) --- */
.sheetbox{position:relative;border:1px solid #dadce0;border-radius:10px;background:#fff;overflow:hidden}
.shbar{display:flex;gap:8px;align-items:center;padding:6px 8px;border-bottom:1px solid #e0e3e7}
.shname{min-width:64px;text-align:center;border:1px solid #dadce0;border-radius:6px;padding:4px 8px;font:500 13px var(--text);color:#3c4043}
.shfx{color:#80868b;font:italic 15px Georgia,serif;padding:0 2px}.shin{flex:1;min-width:0;border:0;outline:0;font:13.5px var(--text);padding:6px 4px;background:transparent}
.shwrap{max-height:64vh;overflow:auto;outline:0;position:relative}
table.sh{border-collapse:separate;border-spacing:0;table-layout:fixed;font:13px/1 var(--text);user-select:none;color:#202124}
.sh *{box-sizing:border-box}
.sh td,.sh th{border-right:1px solid #e2e3e3;border-bottom:1px solid #e2e3e3;height:28px;padding:0 8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.sh thead th{position:sticky;top:0;z-index:4;background:#f8f9fa;color:#5f6368;font-weight:500;text-align:center;height:24px;padding:0}
.sh thead th.corner{left:0;z-index:6}.sh thead th .cl{pointer-events:none}.sh thead th .ind{margin-left:4px;color:#127055;font-size:11px}.sh thead th .ind.f{font-size:9px}
.sh th.col{cursor:pointer}.sh th.col .cm{position:absolute;right:3px;top:2px;border:0;background:none;opacity:0;cursor:pointer;color:#5f6368;font-size:12px;padding:2px 4px;line-height:1}.sh th.col:hover .cm,.sh th.col.on .cm{opacity:1}
.sh th.col .rz{position:absolute;right:-3px;top:0;bottom:0;width:8px;cursor:col-resize;z-index:7}
.sh th.col.add{cursor:pointer;color:#1B9370;font-size:17px}
.sh th.rn{position:sticky;left:0;z-index:3;background:#f8f9fa;color:#5f6368;text-align:center;font-weight:400;padding:0;cursor:pointer}
.sh th.col.on,.sh th.rn.on{background:#e3f2ec;color:#127055}
.sh tr.hrow td{position:sticky;top:24px;z-index:2;background:#f1f3f4;font-weight:700;color:#202124}
.sh td.lbl{position:sticky;left:46px;z-index:1;background:#fff;font-weight:500;border-right:2px solid #dadce0}.sh tr.hrow td.lbl{z-index:3;background:#f1f3f4}
.sh td.num{text-align:right;font-variant-numeric:tabular-nums}.sh tr.hrow td{text-align:left}.sh tr.hrow td.num{text-align:left}
.sh tr.trow td{font-weight:700;background:#f8f9fa}.sh tr.trow td.lbl{background:#f8f9fa}
.sh td.sel{background:rgba(27,147,112,.11)}.sh td.act{outline:2px solid #1B9370;outline-offset:-2px;background:#fff!important}
.sh td.err{color:#a3333b;font-weight:600}.sh td.ed{color:#0b57d0}
.sh td.editing{padding:0;overflow:visible}.cell-in{width:100%;height:100%;min-height:26px;border:0;outline:2px solid #1B9370;outline-offset:-2px;padding:0 8px;font:13px var(--text);background:#fff}
.sh td.pad,.sh th.col.add{background:#fff}
.shstatus{display:flex;gap:18px;padding:7px 12px;border-top:1px solid #e0e3e7;background:#f8f9fa;font-size:12.5px;color:#5f6368;min-height:32px;flex-wrap:wrap}.shstatus b{color:#202124;margin-left:3px}.shstatus .warn{color:#127055}
.shmenu{position:absolute;z-index:30;background:#fff;border:1px solid #dadce0;border-radius:10px;box-shadow:0 8px 28px rgba(0,0,0,.2);padding:6px;min-width:196px}.shmenu button{display:block;width:100%;text-align:left;border:0;background:none;padding:8px 11px;border-radius:6px;cursor:pointer;font:13px var(--text);color:#202124}.shmenu button:hover{background:#f1f3f4}.shmenu hr{border:0;border-top:1px solid #e0e3e7;margin:5px 0}
.shmenu.dlg{display:flex;flex-direction:column;gap:9px;padding:14px;width:270px}.shmenu.dlg button{width:auto;display:inline-flex}.shmenu .dbtn{display:flex;justify-content:flex-end;gap:8px}

/* report tab = the whole page */
body.sheetmode .wrap{max-width:none;padding:10px 14px 8px}body.sheetmode #kpis,body.sheetmode #banner:empty,body.sheetmode .foot-note{display:none}
body.sheetmode .rangebar{margin-bottom:8px}body.sheetmode .tabs{margin:0 0 10px}
.sheetcard{padding:12px 14px!important}.sheetcard .head{display:flex;align-items:center;gap:12px}.sheetcard .head .muted{margin-left:auto}
.sheetcard.sheetfull{position:fixed;inset:0;z-index:60;border-radius:0;margin:0;overflow:auto;background:#fff}body.noscroll{overflow:hidden}

/* ================= motion (pure CSS + fx.js, ships with the site) ================= */
@keyframes fadeIn{from{opacity:0}}
@keyframes fxUp{from{opacity:0;transform:translateY(26px) scale(.97)}to{opacity:1;transform:none}}
@keyframes fxGrow{from{transform:scaleX(0)}}
@keyframes fxRow{from{opacity:0;transform:translateX(-18px)}to{opacity:1;transform:none}}
@keyframes drift1{from{transform:translate(0,0) scale(1)}to{transform:translate(9vw,7vh) scale(1.25)}}
@keyframes drift2{from{transform:translate(0,0) scale(1.1)}to{transform:translate(-10vw,10vh) scale(.85)}}
@keyframes drift3{from{transform:translate(0,0) scale(.9)}to{transform:translate(8vw,-10vh) scale(1.2)}}
@keyframes drift4{from{transform:translate(0,0)}to{transform:translate(-6vw,-6vh) scale(1.3)}}
@keyframes gradShift{0%{background-position:0% 40%}50%{background-position:100% 60%}100%{background-position:0% 40%}}
@keyframes sweep{0%{left:-60%}55%,100%{left:150%}}
@keyframes blobFloat{from{transform:translate(0,0) scale(1)}to{transform:translate(-60px,50px) scale(1.25)}}
@keyframes ripple{from{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(1.7)}}
@keyframes mintSway{0%,100%{transform:rotate(-5deg) scale(1)}50%{transform:rotate(5deg) scale(1.06)}}
@keyframes logoGlow{0%,100%{filter:drop-shadow(0 0 0 rgba(127,224,189,0))}50%{filter:drop-shadow(0 0 9px rgba(127,224,189,.95))}}
@keyframes ordIn{from{opacity:0;transform:translateY(-18px) scale(.97)}}
@keyframes skel{0%{background-position:100% 0}100%{background-position:0 0}}
@keyframes btnShine{0%{left:-70%}60%,100%{left:140%}}
body{animation:fadeIn .7s ease both}
.aurora{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.aurora i{position:absolute;border-radius:50%;filter:blur(86px);will-change:transform}
.aurora i:nth-child(1){width:48vw;height:48vw;left:-14vw;top:-20vw;background:#7FE0BD;opacity:.42;animation:drift1 24s ease-in-out infinite alternate}
.aurora i:nth-child(2){width:40vw;height:40vw;right:-12vw;top:8vh;background:#7FB2F0;opacity:.3;animation:drift2 30s ease-in-out infinite alternate}
.aurora i:nth-child(3){width:36vw;height:36vw;left:28vw;bottom:-22vw;background:#F3C969;opacity:.2;animation:drift3 27s ease-in-out infinite alternate}
.aurora i:nth-child(4){width:26vw;height:26vw;right:18vw;bottom:-8vw;background:#1B9370;opacity:.16;animation:drift4 21s ease-in-out infinite alternate}
body.auth .aurora i{opacity:.55}
.wrap,.auth-wrap,.foot-note{position:relative;z-index:1}.topbar{z-index:30}
.topbar{transition:box-shadow .3s}
.top-brand .mintmark{animation:mintSway 6s ease-in-out infinite,logoGlow 4.5s ease-in-out infinite;transform-origin:50% 60%}
.kpi,.tile,.card{transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s,border-color .35s}
.kpi,.tile,.stlist>div{position:relative;overflow:hidden}
.kpi:hover,.tile:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(15,42,34,.14);border-color:rgba(27,147,112,.35)}
.kpi::before,.tile::before,.stlist>div::before{content:'';position:absolute;inset:0;background:radial-gradient(240px circle at var(--mx,50%) var(--my,50%),rgba(127,224,189,.30),transparent 62%);opacity:0;transition:opacity .3s;pointer-events:none}
.kpi:hover::before,.tile:hover::before,.stlist>div:hover::before{opacity:1}
.val,.tileval,.big b,.stlist b{transition:text-shadow .4s,color .4s}.ticking{text-shadow:0 0 18px rgba(27,147,112,.55)}.live .ticking{text-shadow:0 0 18px rgba(127,224,189,.95)}
.dl{animation:fadeIn 1s .4s both}
/* live card: moving light + drifting colour */
.live{background-size:230% 230%;animation:gradShift 16s ease-in-out infinite}
.live::before{animation:blobFloat 11s ease-in-out infinite alternate}
.live::after{content:'';position:absolute;top:-40%;left:-60%;width:38%;height:190%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.11),transparent);transform:rotate(12deg);animation:sweep 8s ease-in-out infinite;pointer-events:none}
.live .big div{transition:transform .3s,background .3s}.live .big div:hover{transform:translateY(-3px);background:rgba(255,255,255,.13)}
.livepill{position:relative}.livepill.pinged::after{content:'';position:absolute;inset:-2px;border-radius:999px;border:2px solid var(--mint);animation:ripple 1.3s ease-out;pointer-events:none}
/* tabs: a bar that slides */
.tabs{position:relative}.tabs button.on{border-bottom-color:transparent}
.tabind{position:absolute;bottom:-1px;left:0;height:3px;width:40px;border-radius:3px;background:linear-gradient(90deg,var(--mint),var(--glow));box-shadow:0 0 12px rgba(27,147,112,.55);transition:left .45s cubic-bezier(.2,.9,.3,1.1),width .45s cubic-bezier(.2,.9,.3,1.1);pointer-events:none}
.seg button{transition:background .3s,color .3s,transform .2s}.seg button:active,.btn:active{transform:scale(.96)}
.btn{transition:transform .15s,box-shadow .25s,background .25s,border-color .25s}.btn:not(.ghost):hover{box-shadow:0 8px 20px rgba(27,147,112,.35);transform:translateY(-1px)}
.ord.new{animation:flash 2.6s ease-out,ordIn .65s cubic-bezier(.2,.9,.3,1.2)}
.hbt i,.stbar i{transition:width .8s cubic-bezier(.2,.8,.2,1)}
.sk{background:linear-gradient(90deg,rgba(15,42,34,.05) 25%,rgba(15,42,34,.12) 37%,rgba(15,42,34,.05) 63%);background-size:400% 100%;animation:skel 1.4s ease infinite;border-radius:16px;border:0!important;box-shadow:none!important}
.fxcanvas{position:fixed;inset:0;z-index:100;pointer-events:none}
/* entrances: only while body has fx-in / fx-kin, so live refreshes never replay them */
body.fx-kin .kpi{animation:fxUp .8s cubic-bezier(.2,.8,.2,1) both}
body.fx-kin .rangebar,body.fx-kin .tabs{animation:fxUp .7s cubic-bezier(.2,.8,.2,1) both}
body.fx-in #pane .grid>*,body.fx-in #pane>.card,body.fx-in #pane .tile{animation:fxUp .85s cubic-bezier(.2,.8,.2,1) both}
body.fx-in .hbt i{transform-origin:left;animation:fxGrow 1.1s cubic-bezier(.2,.8,.2,1) .4s both}
body.fx-in .stbar i{transform-origin:left;animation:fxGrow 1s cubic-bezier(.2,.8,.2,1) .35s both}
body.fx-in .stlist>div,body.fx-in .chipb{animation:fxUp .6s cubic-bezier(.2,.8,.2,1) both}
body.fx-in .sheetcard .rbar,body.fx-in .shbar{animation:fadeIn .8s both}
body.fx-in .sh tbody tr{animation:fxRow .55s cubic-bezier(.2,.8,.2,1) both}
body.fx-in #ot tbody tr,body.fx-in .feed .ord{animation:fxRow .5s cubic-bezier(.2,.8,.2,1) both}
body.fx-kin .kpi:nth-child(1){animation-delay:0ms}body.fx-kin .kpi:nth-child(2){animation-delay:55ms}body.fx-kin .kpi:nth-child(3){animation-delay:110ms}body.fx-kin .kpi:nth-child(4){animation-delay:165ms}body.fx-kin .kpi:nth-child(5){animation-delay:220ms}body.fx-kin .kpi:nth-child(6){animation-delay:275ms}body.fx-kin .kpi:nth-child(7){animation-delay:330ms}body.fx-kin .kpi:nth-child(8){animation-delay:385ms}body.fx-kin .kpi:nth-child(9){animation-delay:440ms}body.fx-kin .kpi:nth-child(10){animation-delay:495ms}body.fx-kin .kpi:nth-child(11){animation-delay:550ms}body.fx-kin .kpi:nth-child(12){animation-delay:605ms}body.fx-kin .kpi:nth-child(13){animation-delay:660ms}body.fx-kin .kpi:nth-child(14){animation-delay:715ms}body.fx-kin .kpi:nth-child(15){animation-delay:770ms}body.fx-kin .kpi:nth-child(16){animation-delay:825ms}body.fx-in #pane .grid>*:nth-child(1){animation-delay:80ms}body.fx-in #pane .grid>*:nth-child(2){animation-delay:190ms}body.fx-in #pane .grid>*:nth-child(3){animation-delay:300ms}body.fx-in #pane .grid>*:nth-child(4){animation-delay:410ms}body.fx-in #pane .grid>*:nth-child(5){animation-delay:520ms}body.fx-in #pane .grid>*:nth-child(6){animation-delay:630ms}body.fx-in #pane .grid>*:nth-child(7){animation-delay:740ms}body.fx-in #pane .grid>*:nth-child(8){animation-delay:850ms}body.fx-in .stlist>div:nth-child(1){animation-delay:200ms}body.fx-in .stlist>div:nth-child(2){animation-delay:270ms}body.fx-in .stlist>div:nth-child(3){animation-delay:340ms}body.fx-in .stlist>div:nth-child(4){animation-delay:410ms}body.fx-in .stlist>div:nth-child(5){animation-delay:480ms}body.fx-in .stlist>div:nth-child(6){animation-delay:550ms}body.fx-in .stlist>div:nth-child(7){animation-delay:620ms}body.fx-in .stlist>div:nth-child(8){animation-delay:690ms}body.fx-in .sh tbody tr:nth-child(1){animation-delay:0ms}body.fx-in .sh tbody tr:nth-child(2){animation-delay:28ms}body.fx-in .sh tbody tr:nth-child(3){animation-delay:56ms}body.fx-in .sh tbody tr:nth-child(4){animation-delay:84ms}body.fx-in .sh tbody tr:nth-child(5){animation-delay:112ms}body.fx-in .sh tbody tr:nth-child(6){animation-delay:140ms}body.fx-in .sh tbody tr:nth-child(7){animation-delay:168ms}body.fx-in .sh tbody tr:nth-child(8){animation-delay:196ms}body.fx-in .sh tbody tr:nth-child(9){animation-delay:224ms}body.fx-in .sh tbody tr:nth-child(10){animation-delay:252ms}body.fx-in .sh tbody tr:nth-child(11){animation-delay:280ms}body.fx-in .sh tbody tr:nth-child(12){animation-delay:308ms}body.fx-in .sh tbody tr:nth-child(13){animation-delay:336ms}body.fx-in .sh tbody tr:nth-child(14){animation-delay:364ms}body.fx-in .sh tbody tr:nth-child(15){animation-delay:392ms}body.fx-in .sh tbody tr:nth-child(16){animation-delay:420ms}body.fx-in .sh tbody tr:nth-child(17){animation-delay:448ms}body.fx-in .sh tbody tr:nth-child(18){animation-delay:476ms}body.fx-in .sh tbody tr:nth-child(19){animation-delay:504ms}body.fx-in .sh tbody tr:nth-child(20){animation-delay:532ms}body.fx-in .sh tbody tr:nth-child(21){animation-delay:560ms}body.fx-in .sh tbody tr:nth-child(22){animation-delay:588ms}body.fx-in #ot tbody tr:nth-child(1){animation-delay:0ms}body.fx-in #ot tbody tr:nth-child(2){animation-delay:26ms}body.fx-in #ot tbody tr:nth-child(3){animation-delay:52ms}body.fx-in #ot tbody tr:nth-child(4){animation-delay:78ms}body.fx-in #ot tbody tr:nth-child(5){animation-delay:104ms}body.fx-in #ot tbody tr:nth-child(6){animation-delay:130ms}body.fx-in #ot tbody tr:nth-child(7){animation-delay:156ms}body.fx-in #ot tbody tr:nth-child(8){animation-delay:182ms}body.fx-in #ot tbody tr:nth-child(9){animation-delay:208ms}body.fx-in #ot tbody tr:nth-child(10){animation-delay:234ms}body.fx-in #ot tbody tr:nth-child(11){animation-delay:260ms}body.fx-in #ot tbody tr:nth-child(12){animation-delay:286ms}body.fx-in #ot tbody tr:nth-child(13){animation-delay:312ms}body.fx-in #ot tbody tr:nth-child(14){animation-delay:338ms}body.fx-in #ot tbody tr:nth-child(15){animation-delay:364ms}body.fx-in #ot tbody tr:nth-child(16){animation-delay:390ms}body.fx-in #ot tbody tr:nth-child(17){animation-delay:416ms}body.fx-in #ot tbody tr:nth-child(18){animation-delay:442ms}body.fx-in #ot tbody tr:nth-child(19){animation-delay:468ms}body.fx-in #ot tbody tr:nth-child(20){animation-delay:494ms}body.fx-in #ot tbody tr:nth-child(21){animation-delay:520ms}body.fx-in #ot tbody tr:nth-child(22){animation-delay:546ms}body.fx-in .feed .ord:nth-child(1){animation-delay:0ms}body.fx-in .feed .ord:nth-child(2){animation-delay:26ms}body.fx-in .feed .ord:nth-child(3){animation-delay:52ms}body.fx-in .feed .ord:nth-child(4){animation-delay:78ms}body.fx-in .feed .ord:nth-child(5){animation-delay:104ms}body.fx-in .feed .ord:nth-child(6){animation-delay:130ms}body.fx-in .feed .ord:nth-child(7){animation-delay:156ms}body.fx-in .feed .ord:nth-child(8){animation-delay:182ms}body.fx-in .feed .ord:nth-child(9){animation-delay:208ms}body.fx-in .feed .ord:nth-child(10){animation-delay:234ms}body.fx-in .feed .ord:nth-child(11){animation-delay:260ms}body.fx-in .feed .ord:nth-child(12){animation-delay:286ms}body.fx-in .feed .ord:nth-child(13){animation-delay:312ms}body.fx-in .feed .ord:nth-child(14){animation-delay:338ms}body.fx-in .feed .ord:nth-child(15){animation-delay:364ms}body.fx-in .feed .ord:nth-child(16){animation-delay:390ms}body.fx-in .feed .ord:nth-child(17){animation-delay:416ms}body.fx-in .feed .ord:nth-child(18){animation-delay:442ms}body.fx-in .feed .ord:nth-child(19){animation-delay:468ms}body.fx-in .feed .ord:nth-child(20){animation-delay:494ms}body.fx-in .feed .ord:nth-child(21){animation-delay:520ms}body.fx-in .feed .ord:nth-child(22){animation-delay:546ms}
/* sign-in */
#net{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
body.auth .auth-card{background:rgba(255,255,255,.84);backdrop-filter:blur(18px) saturate(1.3);-webkit-backdrop-filter:blur(18px) saturate(1.3);animation:fxUp 1s cubic-bezier(.2,.8,.2,1) .25s both}
body.auth .lockup .mintmark{animation:mintSway 6s ease-in-out infinite,logoGlow 4.5s ease-in-out infinite}
body.auth .lockup .word,body.auth .lockup .client{animation:fxUp 1s cubic-bezier(.2,.8,.2,1) .1s both}
body.auth .auth-card>*{animation:fxUp .8s cubic-bezier(.2,.8,.2,1) both}
body.auth .auth-card>*:nth-child(1){animation-delay:.45s}body.auth .auth-card>*:nth-child(2){animation-delay:.55s}body.auth .auth-card>*:nth-child(3){animation-delay:.65s}body.auth .auth-card>*:nth-child(4){animation-delay:.75s}body.auth .auth-card>*:nth-child(5){animation-delay:.85s}
.auth-card .btn{position:relative;overflow:hidden}.auth-card .btn::after{content:'';position:absolute;top:0;left:-70%;width:45%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.45),transparent);transform:skewX(-18deg);animation:btnShine 3.6s ease-in-out infinite}
.auth-card .in:focus{box-shadow:0 0 0 4px rgba(27,147,112,.18)}
/* switch it all off (menu → Animations) */
body.nofx *,body.nofx *::before,body.nofx *::after{animation:none!important;transition:none!important}
