/* ============================================================================================
   TRIO PULSE - design system + screens. 2026-10-20.
   Direction (owner pick): "1 · Pulse" - dark and sporty like the WHOOP app the customers wear.
   One glow colour (live green) carries "good / go"; cyan = moving, amber = waiting, red = problem.
   Numbers are the heroes (Barlow Condensed), everything else is quiet Manrope.
   Every rule lives under #pulse; the ERP website styles are switched off at boot.
   ============================================================================================ */
#pulse{
  --bg:#07090a; --s1:#0f1315; --s2:#151b1e; --s3:#1c2427; --line:#1f282c; --line2:#2a3438;
  --ink:#f1f6f3; --mut:#8b9893; --dim:#5f6b66;
  --glow:#2bff9e; --glow-d:#16c97a; --cyan:#22c8ff; --amber:#ffb020; --red:#ff5d5d; --violet:#a98bff;
  --glow2:#19e0a0; --go-ink:#04110a; --on-ink:#06100b; --barbg:rgba(9,12,13,.86); --railbg:#090c0d; --shadow:none;
  --glow-a:rgba(43,255,158,.14); --cyan-a:rgba(34,200,255,.14); --amber-a:rgba(255,176,32,.14); --red-a:rgba(255,93,93,.14);
  --f-num:"Barlow Condensed", "Arial Narrow", system-ui, sans-serif;
  --f-ui:"Manrope", "Segoe UI", system-ui, -apple-system, sans-serif;
  --r-card:22px; --r-chip:16px; --r-btn:14px;
  --ease:cubic-bezier(.2,.8,.2,1); --spring:cubic-bezier(.34,1.4,.5,1);
  --tabh:64px; --safe-b:env(safe-area-inset-bottom,0px); --safe-t:env(safe-area-inset-top,0px);
  position:fixed; inset:0; z-index:2147483000; background:var(--bg); color:var(--ink);
  font:15px/1.5 var(--f-ui); -webkit-font-smoothing:antialiased; overflow:hidden;
  color-scheme:dark; -webkit-tap-highlight-color:transparent;
}
#pulse *,#pulse *::before,#pulse *::after{box-sizing:border-box}
#pulse button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
#pulse input{font:inherit;color:inherit}
#pulse a{color:inherit;text-decoration:none}
#pulse h1,#pulse h2,#pulse h3,#pulse p{margin:0}
#pulse :focus-visible{outline:2px solid var(--glow);outline-offset:2px;border-radius:10px}
#pulse svg{width:20px;height:20px;flex:0 0 auto}
#pulse .btn svg{width:18px;height:18px}
#pulse .chev svg,#pulse .row>span>svg{width:18px;height:18px}
#pulse .num{font-family:var(--f-num);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.005em}
#pulse .mut{color:var(--mut)} #pulse .dim{color:var(--dim)}
#pulse .g{color:var(--glow)} #pulse .c{color:var(--cyan)} #pulse .a{color:var(--amber)} #pulse .r{color:var(--red)}

/* ---------- app frame ---------- */
#pulse .app{position:absolute;inset:0;display:flex}
#pulse .rail{display:none}
#pulse .main{flex:1;min-width:0;display:flex;flex-direction:column;position:relative}
#pulse .top{flex:0 0 auto;padding:calc(var(--safe-t) + 14px) max(18px,env(safe-area-inset-right,0px)) 10px max(18px,env(safe-area-inset-left,0px));
  display:flex;align-items:center;gap:12px;background:linear-gradient(var(--bg) 70%,transparent);position:relative;z-index:3}
#pulse .top h1{font:800 22px/1.1 var(--f-ui);letter-spacing:-.01em;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#pulse .top .sub{display:block;font:600 11px/1.3 var(--f-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--mut);margin-bottom:2px}
#pulse .live{display:inline-flex;align-items:center;gap:6px;font:700 10px/1 var(--f-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}
#pulse .live i{width:7px;height:7px;border-radius:9px;background:var(--glow);box-shadow:0 0 10px var(--glow)}
#pulse .live.stale i{background:var(--amber);box-shadow:0 0 10px var(--amber)}
#pulse .iconbtn{width:40px;height:40px;border-radius:13px;background:var(--s1);display:grid;place-items:center;flex:0 0 40px;transition:transform .15s var(--ease),background .2s}
#pulse .iconbtn svg{width:21px;height:21px}
#pulse .iconbtn:active{transform:scale(.92);background:var(--s2)}
#pulse .scroll{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  padding:4px max(16px,env(safe-area-inset-right,0px)) calc(var(--tabh) + var(--safe-b) + 28px) max(16px,env(safe-area-inset-left,0px))}
#pulse .screen{display:grid;gap:12px;max-width:1120px;margin:0 auto;width:100%}

/* bottom tab bar (phone) */
#pulse .tabs{position:absolute;left:0;right:0;bottom:0;z-index:5;height:calc(var(--tabh) + var(--safe-b));padding:6px 8px var(--safe-b);
  display:grid;grid-template-columns:repeat(5,1fr);background:var(--barbg);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);border-top:1px solid var(--line)}
#pulse .tab{display:grid;justify-items:center;align-content:center;gap:4px;font:700 10.5px/1 var(--f-ui);color:var(--dim);position:relative;transition:color .2s}
#pulse .tab svg{width:23px;height:23px;transition:transform .25s var(--spring)}
#pulse .tab:active svg{transform:scale(.86)}
#pulse .tab.on{color:var(--glow)}
#pulse .tab::after{content:'';position:absolute;bottom:4px;left:50%;width:4px;height:4px;border-radius:4px;background:var(--glow);transform:translateX(-50%) scale(0);transition:transform .3s var(--spring)}
#pulse .tab.on::after{transform:translateX(-50%) scale(1)}
#pulse .tab.on svg{filter:drop-shadow(0 0 8px var(--glow-a))}
#pulse .tab .badge{position:absolute;top:2px;left:calc(50% + 6px);min-width:17px;height:17px;padding:0 5px;border-radius:9px;background:var(--red);color:#fff;font:800 10px/17px var(--f-ui);text-align:center}

/* ---------- building blocks ---------- */
#pulse .card{background:var(--s1);border-radius:var(--r-card);padding:16px;display:grid;gap:12px;min-width:0;position:relative}
#pulse .card.tap{transition:transform .18s var(--ease),background .2s}
#pulse .card.tap:active{transform:scale(.985);background:var(--s2)}
#pulse .eyebrow{font:700 11px/1.2 var(--f-ui);letter-spacing:.13em;text-transform:uppercase;color:var(--mut)}
#pulse .ch{display:flex;align-items:center;justify-content:space-between;gap:10px}
#pulse .ch .more{font:700 12px var(--f-ui);color:var(--glow);display:inline-flex;align-items:center;gap:3px}
#pulse .chips{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
#pulse .chip{background:var(--s1);border-radius:var(--r-chip);padding:11px 12px 10px;display:grid;gap:3px;min-width:0}
#pulse .chip b{font:700 21px/1 var(--f-num);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#pulse .chip>span{font:700 10px/1.2 var(--f-ui);letter-spacing:.09em;text-transform:uppercase;color:var(--mut)}
#pulse .row{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid var(--line);min-width:0}
#pulse .row:first-child{border-top:0}
#pulse .row .t{flex:1;min-width:0}
#pulse .row .t b{display:block;font:700 14px/1.3 var(--f-ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#pulse .row .t>span{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-size:12.5px;color:var(--mut);line-height:1.35;overflow:hidden}
#pulse .sheet .row .t>span{-webkit-line-clamp:unset;display:block}
#pulse .row .v{text-align:right;flex:0 0 auto;font:700 18px/1 var(--f-num);font-variant-numeric:tabular-nums}
#pulse .row .v small{display:block;font:600 11px/1.3 var(--f-ui);color:var(--mut);margin-top:3px}
#pulse .row.tap{transition:background .2s;border-radius:12px;margin:0 -8px;padding-left:8px;padding-right:8px}
#pulse .row.tap:active{background:var(--s2)}
#pulse .dot{width:9px;height:9px;border-radius:9px;flex:0 0 9px}
#pulse .pill{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:999px;font:800 10.5px/1.1 var(--f-ui);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
#pulse .pill.g{background:var(--glow-a);color:var(--glow)} #pulse .pill.c{background:var(--cyan-a);color:var(--cyan)}
#pulse .pill.a{background:var(--amber-a);color:var(--amber)} #pulse .pill.r{background:var(--red-a);color:var(--red)}
#pulse .pill.n{background:var(--s3);color:var(--mut)}
#pulse .btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:0 16px;border-radius:var(--r-btn);
  background:var(--s3);font:700 14px var(--f-ui);transition:transform .15s var(--ease),filter .2s,background .2s}
#pulse .btn:active{transform:scale(.96)}
#pulse .btn.go{background:linear-gradient(135deg,var(--glow) 0%,var(--glow2) 100%);color:var(--go-ink);box-shadow:0 8px 24px -10px rgba(43,255,158,.6)}
#pulse .btn.ghost{background:transparent;border:1px solid var(--line2)}
#pulse .btn.sm{min-height:34px;padding:0 12px;font-size:12.5px;border-radius:11px}
#pulse .btns{display:flex;gap:8px;flex-wrap:wrap}
#pulse .seg{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:0 16px}
#pulse .seg::-webkit-scrollbar{display:none}
#pulse .seg button{flex:0 0 auto;min-height:36px;padding:0 14px;border-radius:999px;background:var(--s1);color:var(--mut);font:700 13px var(--f-ui);display:inline-flex;align-items:center;gap:6px;transition:background .2s,color .2s}
#pulse .seg button b{font:700 12px var(--f-num);color:var(--dim)}
#pulse .seg button.on{background:var(--ink);color:var(--on-ink)}
#pulse .seg button.on b{color:var(--on-ink);opacity:.6}
#pulse .search{display:flex;align-items:center;gap:10px;background:var(--s1);border-radius:16px;padding:0 14px;min-height:48px}
#pulse .search input{flex:1;min-width:0;background:transparent;border:0;outline:0;font:600 15px var(--f-ui)}
#pulse .search input::placeholder{color:var(--dim)}
#pulse .bar{display:flex;height:9px;border-radius:99px;background:var(--s3);overflow:hidden;gap:2px}
#pulse .bar i{display:block;height:100%;border-radius:99px}
#pulse .grid2{display:grid;gap:12px}
#pulse .empty{padding:26px 10px;text-align:center;color:var(--mut);font-size:14px;display:grid;gap:6px;justify-items:center}
#pulse .empty svg{width:34px;height:34px;color:var(--dim)}
#pulse .note{font-size:12.5px;color:var(--mut);line-height:1.5}
#pulse details.fold>summary{list-style:none;cursor:pointer}
#pulse details.fold>summary::-webkit-details-marker{display:none}
#pulse details.fold>summary .chev{transition:transform .25s var(--ease)}
#pulse details.fold[open]>summary .chev{transform:rotate(90deg)}

/* hero */
#pulse .hero{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center;padding:6px 2px 2px}
#pulse .ring{position:relative;width:128px;height:128px}
#pulse .ring svg{width:100%;height:100%;transform:rotate(-90deg)}
#pulse .ring .in{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:2px}
#pulse .ring .in b{font:800 32px/1 var(--f-num)}
#pulse .ring .in span{font:700 9.5px/1.2 var(--f-ui);letter-spacing:.11em;text-transform:uppercase;color:var(--mut);max-width:84px}
#pulse .big{font:800 46px/.92 var(--f-num);letter-spacing:.005em;font-variant-numeric:tabular-nums}
#pulse .big small{font:700 14px var(--f-ui);color:var(--mut);margin-left:5px;letter-spacing:0}
#pulse .delta{font:700 13px var(--f-ui);margin-top:6px}

/* month bars */
#pulse .mbars{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;align-items:end;height:118px}
#pulse .mb{display:flex;flex-direction:column;gap:5px;align-items:center;justify-content:flex-end;height:100%;min-width:0}
#pulse .mb .col{flex:0 0 auto}
#pulse .mb .col{width:100%;max-width:34px;border-radius:9px 9px 5px 5px;background:var(--s3);position:relative;overflow:hidden;height:var(--h)}
#pulse .mb .col i{position:absolute;left:0;right:0;bottom:0;height:var(--n);background:linear-gradient(var(--glow),var(--glow-d));border-radius:9px 9px 5px 5px}
#pulse .mb.open .col i{background:repeating-linear-gradient(135deg,var(--glow) 0 6px,var(--glow-d) 6px 12px)}
#pulse .mb b{font:700 13px/1 var(--f-num)}
#pulse .mb span{font:700 10px var(--f-ui);color:var(--mut);letter-spacing:.06em;text-transform:uppercase}

/* order cards */
#pulse .oc{background:var(--s1);border-radius:18px;padding:14px;display:grid;gap:8px}
#pulse .oc .h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#pulse .oc .h b{font:800 15px var(--f-ui)}
#pulse .oc .h .cust{color:var(--mut);font-weight:600;font-size:14px;flex:1;min-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#pulse .oc .ln{font-size:13px;color:var(--mut);display:flex;gap:6px;align-items:baseline}
#pulse .oc .ln::before{content:"";width:5px;height:5px;border-radius:5px;background:var(--dim);flex:0 0 5px;transform:translateY(-2px)}
#pulse .oc .ft{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
#pulse .oc .ft .num{font-size:19px}

/* sheet */
#pulse .scrim{position:absolute;inset:0;background:rgba(0,0,0,.55);z-index:20;opacity:0;transition:opacity .25s}
#pulse .scrim.on{opacity:1}
#pulse .sheet{position:absolute;left:0;right:0;bottom:0;z-index:21;max-height:88%;background:var(--s1);border-radius:26px 26px 0 0;
  padding:10px 18px calc(22px + var(--safe-b));display:flex;flex-direction:column;transform:translateY(100%);transition:transform .38s var(--spring)}
#pulse .sheet.on{transform:none}
#pulse .sheet .grab{width:40px;height:5px;border-radius:5px;background:var(--line2);margin:0 auto 12px;flex:0 0 5px}
#pulse .sheet .body{overflow-y:auto;display:grid;gap:12px;min-height:0}
#pulse .toast{position:absolute;left:50%;bottom:calc(var(--tabh) + var(--safe-b) + 14px);z-index:30;transform:translate(-50%,20px);opacity:0;
  background:var(--ink);color:var(--on-ink);font:700 13.5px var(--f-ui);padding:11px 16px;border-radius:14px;transition:all .3s var(--spring);pointer-events:none;max-width:88%}
#pulse .toast.on{transform:translate(-50%,0);opacity:1}
#pulse .toast.on button{pointer-events:auto}
#pulse .toast .tb-x{background:none;border:0;color:var(--on-ink);opacity:.7;font:700 15px var(--f-ui);margin-left:6px;padding:4px 6px;cursor:pointer}
#pulse .jc{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;margin:0 0 8px;padding:7px 12px;border-radius:12px;background:var(--s2);font:600 12.5px var(--f-ui);color:var(--mut)}
#pulse .jc b{color:var(--ink)}
#pulse .jc button{background:none;border:0;color:var(--glow);font:800 12.5px var(--f-ui);padding:2px 4px;cursor:pointer}

/* skeleton */
#pulse .sk{background:linear-gradient(90deg,var(--s1) 0%,var(--s2) 50%,var(--s1) 100%);background-size:200% 100%;border-radius:var(--r-card);animation:pshim 1.3s linear infinite}
@keyframes pshim{to{background-position:-200% 0}}

/* login */
#pulse .login{position:absolute;inset:0;display:grid;place-items:center;padding:24px;background:radial-gradient(80% 50% at 50% 0%,rgba(43,255,158,.12),transparent 70%),var(--bg)}
#pulse .login form{width:100%;max-width:360px;display:grid;gap:12px}
#pulse .login h1{font:800 34px/1 var(--f-num);letter-spacing:.02em}
#pulse .field{display:grid;gap:6px}
#pulse .field>label{font:700 11px var(--f-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--mut)}
#pulse .field input{min-height:50px;border-radius:14px;background:var(--s1);border:1px solid var(--line2);padding:0 14px;outline:0}
#pulse .field input:focus{border-color:var(--glow)}

/* motion - cards rise one after another, the way the owner liked it, but smoother:
   ease-out-quint, a short 14px travel, GPU-only properties, 45 ms steps capped at 8 cards, and it plays ONCE per visit
   (a data refresh of the same screen never replays it - see render()). */
@media (prefers-reduced-motion: no-preference){
  #pulse .screen.enter>*,#pulse .screen.enter>.grid2>*{animation:prise .6s cubic-bezier(.22,1,.36,1) both;will-change:transform,opacity;backface-visibility:hidden}
  #pulse .screen.enter>*:nth-child(2),#pulse .screen.enter>.grid2>*:nth-child(2){animation-delay:.045s}
  #pulse .screen.enter>*:nth-child(3),#pulse .screen.enter>.grid2>*:nth-child(3){animation-delay:.09s}
  #pulse .screen.enter>*:nth-child(4),#pulse .screen.enter>.grid2>*:nth-child(4){animation-delay:.135s}
  #pulse .screen.enter>*:nth-child(5),#pulse .screen.enter>.grid2>*:nth-child(5){animation-delay:.18s}
  #pulse .screen.enter>*:nth-child(6),#pulse .screen.enter>.grid2>*:nth-child(6){animation-delay:.225s}
  #pulse .screen.enter>*:nth-child(7),#pulse .screen.enter>.grid2>*:nth-child(7){animation-delay:.27s}
  #pulse .screen.enter>*:nth-child(n+8),#pulse .screen.enter>.grid2>*:nth-child(n+8){animation-delay:.3s}
  #pulse .screen.enter>.grid2{animation:none}
  @keyframes prise{from{opacity:0;transform:translate3d(0,14px,0)}}
  #pulse .screen.fadein{animation:pfade .26s ease-out both}
  @keyframes pfade{from{opacity:0}}
  #pulse .ringarc{transition:stroke-dashoffset 1.1s cubic-bezier(.22,1,.36,1)}
  #pulse .screen.first .grow{animation:pgrow .9s cubic-bezier(.22,1,.36,1) both .2s;transform-origin:left}
  @keyframes pgrow{from{transform:scaleX(0)}}
  #pulse .screen.first .mb .col i{animation:pup .9s cubic-bezier(.22,1,.36,1) both .2s;transform-origin:bottom}
  @keyframes pup{from{transform:scaleY(0)}}
  #pulse .live i{animation:pbeat 2.4s ease-in-out infinite}
  @keyframes pbeat{50%{opacity:.45;box-shadow:0 0 2px var(--glow)}}
  #pulse details.opening[open]>:not(summary){animation:pfold .28s cubic-bezier(.22,1,.36,1) both}
  @keyframes pfold{from{opacity:0;transform:translate3d(0,-4px,0)}}
  #pulse .tab svg,#pulse .rail a{transition:transform .25s var(--spring),color .2s,background .2s}
  #pulse .tab.on svg{transform:translateY(-1px) scale(1.06)}
}
@media (prefers-reduced-motion: reduce){ #pulse *{animation:none!important;transition:none!important} }

/* ---------- PC ---------- */
@media (min-width:900px){
  #pulse .tabs{display:none}
  #pulse .rail{display:flex;flex-direction:column;gap:4px;width:232px;flex:0 0 232px;padding:22px 14px;border-right:1px solid var(--line);background:var(--railbg)}
  #pulse .rail .brand{font:800 26px/1 var(--f-num);letter-spacing:.04em;padding:4px 10px 18px;display:flex;align-items:center;gap:9px}
  #pulse .rail .brand i{width:10px;height:10px;border-radius:10px;background:var(--glow);box-shadow:0 0 12px var(--glow)}
  #pulse .rail a{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:13px;font:700 14px var(--f-ui);color:var(--mut);transition:background .2s,color .2s}
  #pulse .rail a svg{width:20px;height:20px}
  #pulse .rail a:hover{background:var(--s1);color:var(--ink)}
  #pulse .rail a.on{background:var(--s1);color:var(--glow)}
  #pulse .rail a .badge{margin-left:auto;min-width:20px;height:20px;border-radius:10px;background:var(--red);color:#fff;font:800 11px/20px var(--f-ui);text-align:center;padding:0 6px}
  #pulse .rail .sp{flex:1}
  #pulse .rail .who{font:700 12px var(--f-ui);color:var(--dim);padding:8px 12px}
  #pulse .scroll{padding:6px 32px 40px}
  #pulse .top{padding:22px 32px 12px}
  #pulse .grid2{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
  #pulse .grid2 .wide{grid-column:1/-1}
  #pulse .sheet{left:auto;right:24px;bottom:24px;width:440px;border-radius:24px;max-height:80%}
  #pulse .toast{bottom:28px}
  #pulse .big{font-size:58px}
  #pulse .ring{width:150px;height:150px}
}

@media (min-width:900px){#pulse .grid2>.tall{grid-row:span 2;align-self:start}#pulse .grid2{align-items:start}}
/* forms (actions) */
#pulse .field select,#pulse .field textarea{min-height:50px;border-radius:14px;background:var(--s1);border:1px solid var(--line2);padding:12px 14px;outline:0;color:var(--ink);font:600 15px var(--f-ui);width:100%}
#pulse .field select{appearance:none;-webkit-appearance:none;padding-right:34px;background-image:linear-gradient(45deg,transparent 50%,var(--mut) 50%),linear-gradient(135deg,var(--mut) 50%,transparent 50%);background-position:calc(100% - 18px) 22px,calc(100% - 13px) 22px;background-size:5px 5px;background-repeat:no-repeat}
#pulse .field select:focus,#pulse .field textarea:focus{border-color:var(--glow)}
#pulse .field input{width:100%;color:var(--ink);font:600 15px var(--f-ui)}
#pulse .pform{display:grid;gap:14px}
#pulse .field>label .dim{text-transform:none;letter-spacing:0;font-weight:600}
#pulse .btn.danger{background:linear-gradient(135deg,#ff6b6b,#ff3d5a);color:#fff;box-shadow:0 8px 24px -10px rgba(255,93,93,.6)}
#pulse .btn[disabled]{opacity:.55;pointer-events:none}
#pulse .acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
#pulse .acts .btn{min-height:38px;padding:0 13px;font-size:13px;border-radius:12px}
#pulse .pick{display:grid;gap:6px;max-height:260px;overflow:auto}
#pulse .pick button{all:unset;cursor:pointer;display:flex;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:12px;background:var(--s1);font:600 14px var(--f-ui)}
#pulse .pick button.on{outline:2px solid var(--glow)}
#pulse .lineitem{display:grid;grid-template-columns:1fr 70px 96px 32px;gap:6px;align-items:center}
#pulse .lineitem input{min-height:42px;border-radius:11px;background:var(--s1);border:1px solid var(--line2);padding:0 10px;color:var(--ink);font:600 14px var(--f-ui);width:100%}

#pulse [hidden]{display:none!important}

/* ---------- LIGHT MODE (2026-10-20): same layout, daylight tokens - checked for contrast on white ---------- */
#pulse[data-theme="light"]{
  --bg:#f3f5f4; --s1:#ffffff; --s2:#eef2f0; --s3:#e2e8e5; --line:#e4e9e6; --line2:#d2dad6;
  --ink:#0d1512; --mut:#55635d; --dim:#87938d;
  --glow:#00955a; --glow-d:#007a49; --glow2:#00b77b; --cyan:#0079b0; --amber:#a86400; --red:#cf3131; --violet:#6a4bd1;
  --glow-a:rgba(0,149,90,.12); --cyan-a:rgba(0,121,176,.11); --amber-a:rgba(168,100,0,.12); --red-a:rgba(207,49,49,.11);
  --go-ink:#ffffff; --on-ink:#ffffff; --barbg:rgba(255,255,255,.9); --railbg:#ffffff; --shadow:0 1px 2px rgba(16,24,20,.05),0 4px 14px rgba(16,24,20,.04);
  color-scheme:light;
}
#pulse[data-theme="light"] .card,#pulse[data-theme="light"] .oc,#pulse[data-theme="light"] .chip,#pulse[data-theme="light"] .search,#pulse[data-theme="light"] .seg button:not(.on){box-shadow:var(--shadow)}
#pulse[data-theme="light"] .scrim{background:rgba(10,20,15,.35)}
#pulse[data-theme="light"] .live i{box-shadow:none}
#pulse[data-theme="light"] .login{background:radial-gradient(80% 50% at 50% 0%,rgba(0,149,90,.10),transparent 70%),var(--bg)}
#pulse[data-theme="light"] .sheet{box-shadow:0 -10px 40px rgba(16,24,20,.12)}
/* iPhone zooms the page into any field under 16px - that zoom was the "swinging" while logging a purchase */
#pulse input,#pulse select,#pulse textarea{font-size:16px!important}
#pulse .sheet .body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
#pulse .pl-h{min-height:18px}
#pulse details.lc>summary{list-style:none}
#pulse details.lc>summary::-webkit-details-marker{display:none}
#pulse details.lc:not([open])>.lcb{display:none}
#pulse .chip{font:inherit;color:inherit;border:0}

/* GPU-friendly scrolling and no flash on tap */
#pulse .scroll{will-change:scroll-position}

/* p8: a sheet's column is the phone's width - long product names wrap instead of pushing the boxes off-screen */
#pulse .sheet .body,#pulse .pform,#pulse .prev{min-width:0;grid-template-columns:minmax(0,1fr)}
#pulse .fw,#pulse .field,#pulse .qtylist,#pulse .plines{min-width:0}
#pulse .field select{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#pulse .fchips{margin:0!important;padding:0!important;overflow:visible!important;flex-wrap:wrap}
#pulse .fchips button{min-height:36px;padding:0 13px;font-size:13px}
#pulse .qtylist .row{padding:9px 0;gap:10px;align-items:center}
#pulse .qtylist .row .t b{font-size:13.5px;line-height:1.3;white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
#pulse .qtylist .row .t>span{font-size:12px}
#pulse .qtylist .row .v{font-size:15px}
#pulse .qtylist .qin{width:58px!important;flex:0 0 58px;min-height:38px!important}
#pulse .qtylist .row.offlist{display:none}
#pulse .sheet .search{min-height:42px}
#pulse .sheet .field>label{font-size:10.5px}
#pulse .sheet h2{font-size:18px!important}

/* unselected choices inside a sheet need their own pill - the sheet is the same colour as the default chip */
#pulse .sheet .seg button:not(.on){background:var(--s2);color:var(--ink)}

#pulse .qtylist label.row{text-transform:none;letter-spacing:0;color:var(--ink);font:inherit}

/* p9: the statement picker looks like a drop zone */
#pulse .fw[data-fw="file"] input[type=file]{width:100%;padding:16px 12px;border:1.5px dashed var(--line2);border-radius:14px;background:var(--s2);color:var(--mut);font:600 13px var(--f-ui)}
#pulse .fw[data-fw="file"] input[type=file]::file-selector-button{margin-right:10px;border:0;border-radius:10px;padding:8px 12px;background:var(--glow);color:var(--go-ink);font:700 13px var(--f-ui)}
#pulse .sheet.pdrop{outline:2px dashed var(--glow);outline-offset:-8px}

#pulse .gsr{display:grid;gap:10px;min-height:120px}

/* ================================================================ JARVIS (p12) */
#pulse .jorb{position:absolute;right:max(16px,env(safe-area-inset-right,0px));bottom:calc(var(--tabh) + var(--safe-b) + 14px);z-index:15;width:58px;height:58px;border-radius:50%;
  border:0;padding:0;cursor:pointer;background:transparent;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
  transition:transform .3s var(--spring),opacity .25s;--lvl:0}
#pulse .jorb.away{opacity:0;transform:scale(.6);pointer-events:none}
#pulse .jorb-core{position:absolute;inset:7px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#d9fff0 0,var(--glow) 34%,#0a7a52 72%,#04281b 100%);
  box-shadow:0 0 0 1px rgba(43,255,158,.35),0 6px 22px rgba(43,255,158,.35),inset 0 -6px 12px rgba(0,0,0,.35);animation:jvBreath 3.6s ease-in-out infinite}
#pulse .jorb-ring{position:absolute;inset:0;border-radius:50%;border:2px solid rgba(43,255,158,.5);opacity:.55;transform:scale(calc(1 + var(--lvl)*.35))}
#pulse .jorb.listening .jorb-ring{border-color:var(--glow);opacity:1;animation:none}
#pulse .jorb.listening .jorb-core{animation:none;transform:scale(calc(1 + var(--lvl)*.12))}
#pulse .jorb.thinking .jorb-ring{border-style:dashed;animation:jvSpin 1.6s linear infinite}
#pulse .jorb.speaking .jorb-core{animation:jvTalk .5s ease-in-out infinite alternate}
@keyframes jvBreath{0%,100%{transform:scale(1)}50%{transform:scale(.94)}}
@keyframes jvSpin{to{transform:rotate(360deg)}}
@keyframes jvTalk{from{transform:scale(.95)}to{transform:scale(1.05)}}
#pulse .scroll{padding-bottom:calc(var(--tabh) + var(--safe-b) + 92px)}

#pulse .jv{position:absolute;inset:0;z-index:40;display:flex;flex-direction:column;background:var(--bg);
  background-image:radial-gradient(120% 60% at 50% 0%,rgba(43,255,158,.09),transparent 60%);
  padding:calc(var(--safe-t) + 8px) max(14px,env(safe-area-inset-right,0px)) calc(var(--safe-b) + 10px) max(14px,env(safe-area-inset-left,0px));
  opacity:0;transform:translateY(24px) scale(.985);transition:opacity .28s ease,transform .38s var(--spring);--lvl:0}
#pulse .jv.on{opacity:1;transform:none}
#pulse .jv[hidden]{display:none!important}
#pulse .jv-top{display:flex;align-items:center;gap:6px;padding:6px 0 10px;border-bottom:1px solid var(--line)}
#pulse .jv-id{flex:1;display:flex;align-items:center;gap:12px;min-width:0}
#pulse .jv-id b{display:block;font:800 15px var(--f-ui);letter-spacing:.22em;color:var(--ink)}
#pulse .jv-st{display:block;font:600 12px var(--f-ui);color:var(--mut)}
#pulse .jv-core{position:relative;width:40px;height:40px;flex:0 0 40px}
#pulse .jv-core i{position:absolute;inset:0;border-radius:50%;border:2px solid var(--glow);opacity:.35}
#pulse .jv-core i:nth-child(2){inset:7px;opacity:.6}
#pulse .jv-core i:nth-child(3){inset:14px;background:var(--glow);opacity:1;box-shadow:0 0 14px var(--glow)}
#pulse .jv.listening .jv-core i:nth-child(1){transform:scale(calc(1 + var(--lvl)*.3));opacity:.9}
#pulse .jv.listening .jv-core i:nth-child(2){transform:scale(calc(1 + var(--lvl)*.2))}
#pulse .jv.thinking .jv-core i:nth-child(1){border-style:dashed;animation:jvSpin 1.4s linear infinite;opacity:.9}
#pulse .jv.thinking .jv-core i:nth-child(2){border-color:transparent;border-top-color:var(--glow);animation:jvSpin .9s linear infinite reverse;opacity:1}
#pulse .jv.speaking .jv-core i:nth-child(3){animation:jvTalk .45s ease-in-out infinite alternate}
#pulse .jv.speaking .jv-core i:nth-child(1){animation:jvBreath 1s ease-in-out infinite}
#pulse .jv-log{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:14px 0 6px;display:flex;flex-direction:column;gap:10px}
#pulse .jv-u{align-self:flex-end;max-width:85%;background:var(--glow);color:#04140d;font:600 15px/1.4 var(--f-ui);padding:9px 13px;border-radius:18px 18px 4px 18px;white-space:pre-wrap;overflow-wrap:anywhere}
#pulse .jv-a{align-self:flex-start;max-width:94%;background:var(--s1);border:1px solid var(--line);color:var(--ink);font:500 15px/1.5 var(--f-ui);padding:11px 14px 8px;border-radius:18px 18px 18px 4px;overflow-wrap:anywhere}
#pulse .jv-a p{margin:0 0 6px}#pulse .jv-a h4{margin:8px 0 4px;font:800 14px var(--f-ui);color:var(--glow)}#pulse .jv-a h4:first-child{margin-top:0}
#pulse .jv-a ul{margin:0 0 6px;padding-inline-start:18px}#pulse .jv-a li{margin:2px 0}
#pulse .jv-meta{display:flex;align-items:center;gap:8px;margin-top:2px;font:600 11px var(--f-ui);color:var(--dim)}
#pulse .jv-replay{border:0;background:transparent;color:var(--mut);width:30px;height:30px;padding:5px;border-radius:50%;cursor:pointer}
#pulse .jv-replay svg{width:18px;height:18px}
#pulse .jv-hi{margin:auto 0 6px;padding:4px 2px;color:var(--mut);font:500 15px/1.5 var(--f-ui)}
#pulse .jv-hi b{display:block;color:var(--ink);font:800 24px/1.2 var(--f-ui);margin-bottom:6px}
#pulse .jv-wait{display:flex;gap:6px;padding:14px 16px}
#pulse .jv-wait i{width:8px;height:8px;border-radius:50%;background:var(--glow);animation:jvDot 1s ease-in-out infinite}
#pulse .jv-wait i:nth-child(2){animation-delay:.15s}#pulse .jv-wait i:nth-child(3){animation-delay:.3s}
@keyframes jvDot{0%,100%{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-4px)}}
#pulse .jv-chips{display:flex;gap:8px;overflow-x:auto;padding:8px 0;scrollbar-width:none;-webkit-overflow-scrolling:touch}
#pulse .jv-chips::-webkit-scrollbar{display:none}
#pulse .jv-chip{flex:0 0 auto;border:1px solid var(--line2);background:var(--s1);color:var(--ink);font:700 13px var(--f-ui);padding:8px 13px;border-radius:999px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
#pulse .jv-chip svg{width:15px;height:15px}
#pulse .jv-chip.deep{color:var(--violet)}#pulse .jv-chip.deep.on{background:var(--violet);color:#fff;border-color:var(--violet)}
#pulse .jv-bar{display:flex;gap:10px;align-items:center}
#pulse .jv-bar input{flex:1;min-width:0;min-height:52px;border-radius:26px;border:1px solid var(--line2);background:var(--s1);color:var(--ink);font:500 16px var(--f-ui);padding:0 18px}
#pulse .jv-mic{position:relative;flex:0 0 64px;width:64px;height:64px;border-radius:50%;border:0;cursor:pointer;color:#04140d;background:var(--glow);
  box-shadow:0 6px 20px rgba(43,255,158,.35);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;transition:transform .2s var(--spring)}
#pulse .jv-mic svg{position:relative;width:28px;height:28px}
#pulse .jv-lvl{position:absolute;inset:-6px;border-radius:50%;border:3px solid var(--glow);opacity:0;transform:scale(calc(1 + var(--lvl)*.45));transition:opacity .2s}
#pulse .jv.listening .jv-mic{transform:scale(1.06);background:var(--red);color:#fff;box-shadow:0 6px 24px rgba(255,93,93,.45)}
#pulse .jv.listening .jv-lvl{opacity:.8;border-color:var(--red)}
#pulse .jv.thinking .jv-mic{opacity:.6}
#pulse .jv-cost{text-align:center;font:600 11px var(--f-ui);color:var(--dim);padding-top:6px}
#pulse .jv-say{display:inline-flex;align-items:center;gap:6px;--lvl:0}
#pulse .jv-say svg{width:18px;height:18px}
#pulse .jv-say.listening{background:var(--red);color:#fff;border-color:var(--red);box-shadow:0 0 0 calc(var(--lvl)*8px) rgba(255,93,93,.25)}
#pulse .jv-say.thinking{opacity:.6}
#pulse form .jv-say{width:100%;justify-content:center;margin-top:8px}
@media (min-width:900px){
  #pulse .jorb{bottom:24px;right:28px}
  #pulse .scroll{padding-bottom:110px}
  #pulse .jv{inset:auto 24px 24px auto;width:460px;height:min(760px,calc(100% - 48px));border:1px solid var(--line2);border-radius:24px;padding:12px 16px 14px;
    box-shadow:0 30px 80px rgba(0,0,0,.45)}
}
@media (prefers-reduced-motion: reduce){#pulse .jorb-core,#pulse .jv-core i{animation:none!important}}

/* ================================================================ JARVIS voice mode (p13) */
#pulse .jv-stage{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;padding:4px 0 8px}
#pulse .jv:not(.voice) .jv-stage{display:none}
#pulse .jv.voice .jv-log,#pulse .jv.voice .jv-chips{display:none}
#pulse #jvCv{width:100%;flex:1;min-height:220px;max-height:440px;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;cursor:pointer}
#pulse .jv-hint{font:700 13px var(--f-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--mut);min-height:18px;margin-top:-6px}
#pulse .jv-cap{width:100%;max-width:560px;display:flex;flex-direction:column;justify-content:flex-end;gap:6px;min-height:96px;max-height:30vh;overflow:hidden;margin-top:10px;text-align:center;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 28px);mask-image:linear-gradient(to bottom,transparent 0,#000 28px)}
#pulse .jv-you{font:600 14px/1.4 var(--f-ui);color:var(--mut)}
#pulse .jv-said{font:700 20px/1.4 var(--f-ui);color:var(--ink);overflow-wrap:anywhere}
#pulse .jv-more{margin-top:8px;border:1px solid var(--line2);background:var(--s1);color:var(--ink);font:700 13px var(--f-ui);padding:8px 16px;border-radius:999px;cursor:pointer}
#pulse .jv-more[hidden]{display:none}
#pulse .jv-kb{display:none;flex:0 0 48px;width:48px;height:48px;border-radius:50%;border:1px solid var(--line2);background:var(--s1);color:var(--ink);cursor:pointer;padding:12px}
#pulse .jv-kb svg{width:22px;height:22px}
#pulse .jv.voice .jv-kb{display:block}
#pulse .jv.voice .jv-bar{justify-content:center;gap:28px;padding-right:76px}
#pulse .jv.voice .jv-bar input{display:none}
#pulse .jv.voice .jv-mic{flex:0 0 76px;width:76px;height:76px}
#pulse .jv.voice .jv-mic svg{width:32px;height:32px}

/* p14: holding "Say confirm" inside a scrolling sheet must not turn into a scroll that cancels the recording */
#pulse .jv-say{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}

/* p15: quick suggestions also in voice mode (so "Brief me" is one tap, never automatic) */
#pulse .jv.voice .jv-chips{display:flex;justify-content:flex-start}

/* p16: hands-free switch + the topic Jarvis suggests */
#pulse .jv-live{color:var(--mut)}#pulse .jv-live.on{color:var(--glow)}
#pulse .jv-live svg{width:20px;height:20px}
#pulse .jv-chip.topic{border-color:var(--glow);color:var(--glow)}

/* p17: hands-free listening is calm - the mic stays green with a soft ring that follows your voice; red only when you
   hold the mic yourself. Level changes glide instead of jumping. */
#pulse .jv.listening:not(.manual) .jv-mic{transform:none;background:var(--glow);color:#04140d;box-shadow:0 6px 20px rgba(43,255,158,.35)}
#pulse .jv.listening:not(.manual) .jv-lvl{opacity:.6;border-color:var(--glow)}
#pulse .jv-lvl{transition:transform .14s ease-out,opacity .25s,border-color .25s}
#pulse .jorb-ring{transition:transform .14s ease-out,border-color .3s,opacity .3s}
#pulse .jv-core i{transition:transform .14s ease-out,opacity .3s}

/* p21: four main figures - one row on wide screens, 2 x 2 on phones (numbers never cut off) */
#pulse .chips.chips4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:560px){#pulse .chips.chips4{grid-template-columns:repeat(2,minmax(0,1fr))}}
#pulse button.chip{text-align:left;cursor:pointer}

/* p23: forms on a 6-column grid - w2 = a third, w3 = a half; everything else full width (other forms unchanged) */
#pulse .sheet .pform{grid-template-columns:repeat(6,minmax(0,1fr));column-gap:10px}
#pulse .sheet .pform>*{grid-column:1/-1;min-width:0}
#pulse .sheet .pform>.fw.w2{grid-column:span 2}
#pulse .sheet .pform>.fw.w3{grid-column:span 3}
#pulse .fhead{font:800 12px var(--f-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--glow);padding-top:8px;border-top:1px solid var(--line);margin-top:4px}
#pulse .pform>.fhead:first-of-type{border-top:0}
#pulse .po-scan .btn svg{width:20px;height:20px}
#pulse .po-total{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;background:var(--s2);border-radius:14px;padding:12px 14px;color:var(--ink)}
#pulse .po-total span{font:700 12px var(--f-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--mut)}
#pulse .po-total b{font:700 22px var(--f-num)}
#pulse .po-total small{font:600 13px var(--f-ui);color:var(--mut)}
#pulse .po-total small.g{color:var(--glow)}#pulse .po-total small.a{color:var(--amber)}
#pulse .pform .field label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* p24: mobile review fixes */
@media (max-width:560px){
  #pulse .seg{flex-wrap:wrap;overflow:visible;margin:0;padding:0}       /* every tab visible - none hidden off-screen */
}
#pulse .row .t b{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
#pulse .jorb.tuck{transform:translateY(90px) scale(.8);opacity:0;pointer-events:none}

/* p25 (2026-10-21, owner: "the log a purchase window goes right and left"): measured - the 'Leaves' date box (half
   width) kept the browser's built-in minimum width (179 px in a 164 px column; iPhones are wider still) and the sheet
   body scrolled 15 px sideways. Boxes now always shrink to their column, and a sheet only ever scrolls up and down. */
#pulse .field input,#pulse .field select,#pulse .field textarea{min-width:0;max-width:100%;box-sizing:border-box}
#pulse .field input[type=date],#pulse .field input[type=time]{-webkit-appearance:none;appearance:none;display:block;width:100%;min-width:0}
#pulse .field input[type=date]::-webkit-date-and-time-value{text-align:left}
#pulse .sheet .body{overflow-x:hidden;touch-action:pan-y}

/* p26: Ads results */
#pulse .ar-big{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:2px 0 10px}
#pulse .ar-big b{font:700 40px/1 var(--f-num);color:var(--ink)}
#pulse .ar-big span{font:600 13px var(--f-ui);color:var(--mut)}
#pulse .ar-bar{height:12px;margin-bottom:10px}
#pulse .ar-legend{display:flex;flex-wrap:wrap;gap:6px 14px;font:600 12.5px var(--f-ui);color:var(--mut);margin-bottom:12px}
#pulse .ar-legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:0}
#pulse .ar-legend b{color:var(--ink);font:700 13px var(--f-num);margin-left:2px}
#pulse .ar-k{margin-bottom:8px}
#pulse .ar-lines summary,#pulse .ar-acc summary{cursor:pointer;list-style:none;font:700 13px var(--f-ui);color:var(--glow);padding:8px 0}
#pulse .ar-lines summary::-webkit-details-marker,#pulse .ar-acc summary::-webkit-details-marker{display:none}
#pulse .ar-acc ul{margin:4px 0 2px;padding-inline-start:18px;color:var(--mut);font:500 13.5px/1.5 var(--f-ui)}
#pulse .ar-acc li{margin:5px 0}#pulse .ar-acc b{color:var(--ink)}

/* p27: Ads results - date boxes, summary, funnel, filters */
#pulse .ar-pick{gap:10px}
#pulse .ar-dates{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:8px;align-items:center}
#pulse .ar-date{position:relative;display:grid;gap:3px;background:var(--s2);border:1px solid var(--line2);border-radius:14px;padding:10px 14px;min-width:0;cursor:pointer;transition:border-color .2s}
#pulse .ar-date span{font:700 10px/1.2 var(--f-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--mut)}
#pulse .ar-date b{font:700 21px/1.05 var(--f-num);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#pulse .ar-date input{position:absolute;inset:0;width:100%;height:100%;min-width:0;opacity:0;font-size:16px;border:0;padding:0;margin:0;cursor:pointer;-webkit-appearance:none;appearance:none;background:transparent;color:transparent}
#pulse .ar-date:focus-within,#pulse .ar-date:hover{border-color:var(--glow)}
#pulse .ar-arrow{color:var(--dim);font:700 16px var(--f-ui)}
#pulse .ar-pick .seg,#pulse .ar-f{margin:0;padding:0;flex-wrap:wrap;overflow:visible}
#pulse .ar-pick .seg button,#pulse .ar-f button{min-height:32px;padding:0 12px;background:var(--s2)}
#pulse .ar-pick .seg button.on,#pulse .ar-f button.on{background:var(--ink);color:var(--on-ink)}
#pulse .ar-span{font:600 12.5px/1.4 var(--f-ui);color:var(--mut);margin:0}
#pulse .ar-line{font:500 17px/1.45 var(--f-ui);color:var(--mut);margin:0}
#pulse .ar-line b{color:var(--ink);font-weight:800}
#pulse .ar-line b.g{color:var(--glow)}
#pulse .ar-k .chip{background:var(--s2)}
#pulse .ar-d{display:block;font:700 11px/1.25 var(--f-ui);font-style:normal;color:var(--mut);margin-top:3px}
#pulse .ar-d.up{color:var(--glow)}#pulse .ar-d.dn{color:var(--red)}
#pulse .ar-fun{display:grid;gap:14px}
#pulse .ar-sh{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px}
#pulse .ar-sh b{font:700 14px var(--f-ui)}
#pulse .ar-sh span{font:600 12.5px var(--f-ui);color:var(--mut);white-space:nowrap}
#pulse .ar-sh i{font-style:normal;font-size:21px;color:var(--ink);margin-right:2px}
#pulse .ar-track{height:10px;border-radius:99px;background:var(--s3);overflow:hidden}
#pulse .ar-track i{display:block;height:100%;border-radius:99px}
#pulse .ar-drop{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
#pulse .ar-drop button{display:inline-flex;align-items:center;gap:7px;font:700 12px/1.2 var(--f-ui);color:var(--mut);background:var(--s2);border:0;border-radius:99px;padding:6px 11px;cursor:pointer;min-height:30px}
#pulse .ar-drop button:active{background:var(--s3)}
#pulse .ar-drop button i{width:8px;height:8px;border-radius:50%;flex:0 0 8px}
#pulse .ar-more{display:grid;gap:12px}
#pulse .ar-more>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--s1);border-radius:var(--r-card);padding:14px 16px}
#pulse .ar-more>summary::-webkit-details-marker{display:none}
#pulse .ar-more>summary>span{display:grid;gap:4px}
#pulse .ar-more>summary small{font:600 12.5px var(--f-ui);color:var(--mut)}
#pulse .ar-more>summary svg{transition:transform .2s;color:var(--dim)}
#pulse .ar-more[open]>summary svg{transform:rotate(90deg)}
#pulse .ar-more-b{display:grid;gap:12px}

/* p27d: VAT split under Ad budget */
#pulse .row .t>span .ar-vat{display:block;color:var(--ink);font-weight:700}

/* p28: WhatsApp the customer of a parcel with the courier */
#pulse .cr-line{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);min-width:0}
#pulse .cr-line:first-of-type{border-top:0}
#pulse .cr-flag{display:block;margin:-8px 0 8px 20px;padding:4px 0;background:none;border:0;color:var(--mut);font:600 12.5px var(--f-ui);text-align:left;cursor:pointer}
#pulse .cr-flag:active{color:var(--ink)}
#pulse .cr-line>.row{flex:1;min-width:0;border-top:0}
#pulse .wa-btn{flex:0 0 42px;width:42px;height:42px;border-radius:50%;background:#25d366;color:#fff;display:grid;place-items:center;text-decoration:none;transition:transform .15s}
#pulse .wa-btn:active{transform:scale(.92)}
#pulse .wa-btn.sent{background:var(--s2);color:var(--glow)}
#pulse .wa-sent{color:var(--glow);font-weight:700}
#pulse .btn.wa{background:#25d366;color:#fff;text-decoration:none}
#pulse .btn.wa svg{margin-inline-end:6px}
#pulse .btn.wa.sent{background:var(--s2);color:var(--glow)}

/* p30: tappable profit bars + one month's costs */
#pulse button.mb{background:none;border:0;padding:0;margin:0;color:inherit;font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
#pulse button.mb:active .col{opacity:.7}
#pulse .pm-ms{margin:0 0 6px;padding:0;flex-wrap:wrap;overflow:visible}
#pulse .pm-ms button{min-height:32px;padding:0 12px;background:var(--s2)}
#pulse .pm-ms button.on{background:var(--ink);color:var(--on-ink)}
#pulse .pm-net{display:grid;gap:4px;margin:6px 0 10px}
#pulse .pm-net b{font:800 40px/1 var(--f-num);font-variant-numeric:tabular-nums}
#pulse .pm-acc{border-top:1px solid var(--line)}
#pulse .pm-acc:first-of-type{border-top:0}
#pulse .pm-acc>summary{list-style:none;display:flex;align-items:center;gap:12px;padding:11px 0;cursor:pointer}
#pulse .pm-acc>summary::-webkit-details-marker{display:none}
#pulse .pm-t{flex:1;min-width:0;display:grid;gap:4px}
#pulse .pm-t b{font:700 14px/1.3 var(--f-ui)}
#pulse .pm-t span{font:600 12px var(--f-ui);color:var(--mut)}
#pulse .pm-t i{display:block;height:4px;border-radius:99px;background:var(--amber);max-width:100%}
#pulse .pm-v{flex:0 0 auto;font:700 18px/1 var(--f-num);font-variant-numeric:tabular-nums}
#pulse .pm-acc[open]>summary .pm-v{color:var(--amber)}
#pulse .pm-acc .row{padding-left:10px}

/* p31: running costs folded until tapped */
#pulse .pm-all{display:block}
#pulse .pm-all>summary{list-style:none;display:flex;align-items:center;gap:12px;cursor:pointer}
#pulse .pm-all>summary::-webkit-details-marker{display:none}
#pulse .pm-all>summary svg{flex:0 0 auto;color:var(--dim);transition:transform .2s}
#pulse .pm-all[open]>summary svg{transform:rotate(90deg)}
#pulse .pm-all[open]>summary{padding-bottom:10px;border-bottom:1px solid var(--line)}
#pulse .pm-all .pm-acc:first-of-type{border-top:0}

/* p32: part-ready orders, contention warning */
#pulse .ln.pl{padding:3px 0}
#pulse .rival{margin:8px 0 0;padding:10px 12px;border-radius:12px;background:rgba(255,93,93,.12);color:var(--red);font:600 13px/1.45 var(--f-ui)}
#pulse .rival b{font-weight:800}
#pulse .rival span{display:block;margin-top:4px;color:var(--mut);font-weight:600}
#pulse[data-theme="light"] .rival{background:rgba(207,49,49,.08)}
