/* Banrox mobile UI v4.5 component vocabulary (css/app.css), reused verbatim; ZT Formom comes from tokens.css */
/* =============================================================
   Banrox mobile UI v2  ::  app.css
   Vocabulary: one hero object per screen, a round action row,
   iOS inset grouped lists on the plain ground, object cards only
   for physical things. Buttons are Banrox's own recipes from
   style.css (.btn_gradient, .btn_transparent), pill radius as in
   the Figma mobile frames. Palette and type from the Banrox
   quality standard.
   ============================================================= */


:root{
  --bg:#080814;
  --bg-2:#090C21;
  --brand:#264BFF;
  --blue-2:#375DFB;
  --lav:#8585E9;
  --pale:#B9C3FF;
  --good:#4DDE00;
  --success:#31A650;
  --danger:#FF4242;
  --t100:#FFFFFF;
  --t70:rgba(255,255,255,.70);
  --t50:rgba(255,255,255,.50);
  --t35:rgba(255,255,255,.35);
  --hair:rgba(255,255,255,.10);
  --hair-2:rgba(255,255,255,.16);
  --fill:rgba(255,255,255,.05);
  --fill-2:rgba(255,255,255,.09);
  --r-card:24px;
  --r-panel:16px;
  --r-ctl:12px;
  --f-body:"Inter",-apple-system,"SF Pro Text","Segoe UI",sans-serif;
  --f-num:"Inter Tight","Inter",-apple-system,"SF Pro Display",sans-serif;
  --f-accent:"ZT Formom","Inter Tight",sans-serif;
  --gutter:20px;
  --tab-h:96px;
  --top-h:56px;
  --safe-top:54px;
  --ease:cubic-bezier(.2,.8,.2,1);
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
html,body{height:100%}
body{
  margin:0;background:#050510;color:var(--t100);
  font-family:var(--f-body);font-size:15px;line-height:1.4;
  -webkit-font-smoothing:antialiased;
  font-variant-numeric:lining-nums tabular-nums;
}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer;text-align:left}
a{color:inherit;text-decoration:none}
svg{display:block}
.icon{width:20px;height:20px}
.num{font-family:var(--f-num)}
.accent{font-family:var(--f-accent);font-style:italic;font-weight:400}

/* ---------- desktop stage + device frame ---------- */
.stage{min-height:100dvh;display:grid;place-items:center;padding:24px;background:radial-gradient(60% 40% at 50% 0%,rgba(38,75,255,.14),transparent 70%),#050510}
.device{width:390px;height:844px;position:relative;border-radius:54px;background:#000;padding:12px;box-shadow:0 40px 120px rgba(0,0,0,.7),0 0 0 1px rgba(255,255,255,.08),inset 0 0 0 2px #1a1a22}
.device .app{border-radius:44px}
.device .notch{position:absolute;top:22px;left:50%;transform:translateX(-50%);width:124px;height:36px;border-radius:20px;background:#000;z-index:60}
.stage-note{position:fixed;left:24px;bottom:20px;font-family:var(--f-num);font-size:12px;letter-spacing:.04em;color:var(--t35)}
@media (max-width:820px){
  .stage{padding:0;display:block;min-height:100dvh}
  .device{width:100%;height:100dvh;border-radius:0;padding:0;box-shadow:none;background:var(--bg)}
  .device .app{border-radius:0}
  .device .notch{display:none}
  .stage-note{display:none}
  :root{--safe-top:env(safe-area-inset-top,20px)}
}

/* ---------- app shell ---------- */
.app{position:relative;width:100%;height:100%;overflow:hidden;background:var(--bg);isolation:isolate}

.app:not(.has-tab) .tabbar{display:none}

.screen{position:absolute;inset:0;display:flex;flex-direction:column;transform:translateX(0);transition:transform .38s var(--ease);z-index:1}
.screen.push-enter{transform:translateX(100%)}

.statusbar{height:var(--safe-top);flex:none;display:flex;align-items:flex-end;justify-content:space-between;padding:0 26px 6px;font-family:var(--f-num);font-weight:600;font-size:15px}
.statusbar .sb-r{display:flex;gap:6px;align-items:center}
.statusbar svg{width:18px;height:12px}

.topbar{flex:none;height:var(--top-h);display:grid;grid-template-columns:44px 1fr 44px;align-items:center;padding:0 var(--gutter)}
.topbar .title{text-align:center;font-family:var(--f-num);font-weight:500;font-size:17px;letter-spacing:-.01em}
.topbar .title small{display:block;font-family:var(--f-body);font-size:11.5px;color:var(--t50);font-weight:400}
.topbar .title.left{text-align:left;font-size:22px}
.icon-btn{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--fill-2);color:var(--t100);position:relative}
.icon-btn svg{width:22px;height:22px}
.icon-btn .dot{position:absolute;top:10px;right:11px;width:8px;height:8px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 2px var(--bg)}
.icon-btn.ghost{background:transparent}
.topbar .avatar{width:40px;height:40px;margin-left:2px}

.content{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:4px var(--gutter) calc(var(--tab-h) + 24px);display:flex;flex-direction:column;gap:14px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.content::-webkit-scrollbar{display:none}
.content > *{flex:none}
.content.with-cta{padding-bottom:124px}
.app:not(.has-tab) .content{padding-bottom:40px}
.app:not(.has-tab) .content.with-cta{padding-bottom:124px}

/* ---------- type helpers ---------- */
.h1{font-family:var(--f-num);font-weight:500;font-size:30px;letter-spacing:-.02em;line-height:1.05;margin:0}
.h2{font-family:var(--f-num);font-weight:500;font-size:17px;letter-spacing:-.01em;margin:0}
.big{font-family:var(--f-num);font-weight:500;letter-spacing:-.025em;line-height:1}
.big.xl{font-size:44px}
.big.lg{font-size:34px}
.big.md{font-size:24px}
.big .cents{font-size:.5em;color:var(--t50);font-weight:400;letter-spacing:0}
.lbl{font-size:13px;color:var(--t70)}
.muted{color:var(--t50)}.dim{color:var(--t35)}
.small{font-size:13px}.tiny{font-size:11.5px}
.center{text-align:center}
.mt4{margin-top:4px}.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt24{margin-top:24px}
.flex{display:flex;align-items:center;gap:10px}.between{justify-content:space-between}
.col{display:flex;flex-direction:column;gap:8px}
.txt-good{color:var(--good)}.txt-bad{color:var(--danger)}.txt-lav{color:var(--lav)}.txt-pale{color:var(--pale)}
.delta{font-size:13px;font-weight:500;display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.delta.up{color:var(--good)}.delta.down{color:var(--danger)}
.delta svg{width:11px;height:11px}

/* section head: title left, text link right (iOS) */
.sec{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:10px}
.sec .h2{font-size:19px}
.tlink{font-size:14px;font-weight:500;color:var(--lav)}
.tlink.sm{font-size:13px}

/* ---------- hero: open balance ---------- */
.hero{padding:6px 2px 2px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.hero .lbl{margin-bottom:6px}
.hero .sub{margin-top:8px;font-size:13.5px;color:var(--t70)}

/* ---------- round action row (Revolut / Wallet idiom) ---------- */
.actions{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:2px 0}
.act{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:11.5px;color:var(--t70);text-align:center;transition:transform .08s}
.act:active{transform:scale(.96)}
.act .act-c{width:54px;height:54px;border-radius:50%;background:var(--fill-2);display:grid;place-items:center;color:var(--t100);transition:background .2s}
.act .act-c svg{width:22px;height:22px}
.act.primary .act-c{background:radial-gradient(50% 169.64% at 50% 50%,#8585E9 0%,#264BFF 100%);box-shadow:inset 0 1.5px 0 rgba(255,255,255,.35)}
.act.alert .act-c{color:var(--danger)}
.actions.scroll{display:flex;overflow-x:auto;gap:4px;margin:0 calc(var(--gutter) * -1);padding:2px var(--gutter);scrollbar-width:none}
.actions.scroll::-webkit-scrollbar{display:none}
.actions.scroll .act{flex:none;width:76px}
.act .badge{position:absolute;top:-2px;right:-2px}
.act .act-c{position:relative}

/* ---------- grouped list (iOS inset grouped) ---------- */
.list{background:var(--fill);border-radius:var(--r-panel);overflow:hidden}
.list.clear{background:transparent}
.li{position:relative;width:100%;display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:12px 16px;min-height:56px;color:var(--t100);transition:background .12s}
.li:active{background:var(--fill-2)}
.li.noicon{grid-template-columns:minmax(0,1fr) auto auto}
.li + .li::before{content:"";position:absolute;left:16px;right:0;top:0;height:1px;background:var(--hair)}
.list.icons .li + .li::before{left:64px}
.li-ic{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--fill-2);color:var(--t100);flex:none}
.li-ic svg{width:18px;height:18px}
.li-ic.good{color:var(--good)}.li-ic.bad{color:var(--danger)}.li-ic.lav{color:var(--pale)}
.li-ic.sq{border-radius:10px}
.li-b{min-width:0}
.li-b > *{display:block}
.li-t{font-size:15px;font-weight:500;line-height:1.25}
.li-t.clip{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.li-t.wrap{white-space:normal}
.li-s{font-size:12.5px;color:var(--t50);margin-top:2px;line-height:1.3}
.li-r{text-align:right}
.li-r > *{display:block}
.li-v{font-family:var(--f-num);font-size:16px;font-weight:500;letter-spacing:-.01em}
.li-v.good{color:var(--good)}.li-v.bad{color:var(--danger)}
.li-chev{color:var(--t35);width:16px;height:16px}
.li-chev svg{width:16px;height:16px}
.li .rank{font-family:var(--f-num);font-size:15px;font-weight:500;color:var(--t50);width:18px;text-align:center}
.li.standing{grid-template-columns:18px auto minmax(0,1fr) auto}
.li .bar{margin-top:8px}
.list .head{padding:14px 16px 4px;font-size:12px;color:var(--t50);letter-spacing:.02em}
.list .foot{padding:10px 16px 14px;font-size:12.5px;color:var(--t50)}
.li-note{grid-column:1 / -1;font-size:13px;color:var(--t70);line-height:1.45;margin-top:-4px}

/* key/value inside lists */
.kv{display:flex;justify-content:space-between;gap:12px;font-size:14px;color:var(--t70)}
.kv b{color:var(--t100);font-weight:500;font-family:var(--f-num)}
.kvs{display:flex;flex-direction:column;gap:9px}

/* ---------- hero object card (score, membership) ---------- */
.card{position:relative;border-radius:var(--r-card);background:var(--fill);padding:20px;overflow:hidden}
.card.blue{background:linear-gradient(150deg,rgba(38,75,255,.55) 0%,rgba(38,75,255,.16) 55%,rgba(38,75,255,.05) 100%),var(--fill)}
.card.blue::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(60% 60% at 12% 0%,rgba(185,195,255,.22),transparent 60%)}
.card > *{position:relative}
.card.tight{padding:16px}

/* ---------- arc score ---------- */
.arc{position:relative;width:100%;margin:0 auto}
.arc svg{width:100%;height:100%}
.arc .arc-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.arc .arc-v{font-family:var(--f-num);font-size:46px;font-weight:500;letter-spacing:-.03em;line-height:1}
.arc .arc-l{font-size:13px;color:var(--t70);margin-top:6px}
.arc.sm{width:112px;height:112px}
.arc.sm .arc-v{font-size:30px}
.arc.sm .arc-l{font-size:11px;margin-top:3px}

/* ---------- bureau trio: numbers on the ground, no boxes ---------- */
.trio{display:grid;grid-template-columns:1fr 1fr 1fr;padding:4px 0}
.tri{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 4px;color:var(--t100);position:relative}
.tri + .tri::before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:1px;background:var(--hair)}
.tri .n{font-family:var(--f-num);font-size:26px;font-weight:500;letter-spacing:-.02em;line-height:1}
.tri .d{font-size:12px;font-weight:500}
.tri .d.up{color:var(--good)}.tri .d.down{color:var(--danger)}
.tri .l{font-size:11.5px;color:var(--t50);display:inline-flex;align-items:center;gap:5px;margin-top:2px}
.tri .l i{width:6px;height:6px;border-radius:50%;display:inline-block}
.tri .l i.exp{background:#B9C3FF}.tri .l i.eq{background:#FF8A8A}.tri .l i.tu{background:#5C9BFF}
.tri[aria-selected="true"] .n{color:#fff}
.tri[aria-selected="true"]::after{content:"";position:absolute;left:28%;right:28%;bottom:0;height:2px;border-radius:2px;background:var(--lav)}
.tri[aria-selected="false"] .n{color:var(--t70)}

/* ---------- feature row: round icons + labels ---------- */
.features{display:flex;gap:6px;overflow-x:auto;margin:0 calc(var(--gutter) * -1);padding:2px var(--gutter) 4px;scrollbar-width:none}
.features::-webkit-scrollbar{display:none}
.feature{flex:none;width:76px;display:flex;flex-direction:column;align-items:center;gap:7px;font-size:11px;color:var(--t70);text-align:center;line-height:1.15}
.feature .fc{width:52px;height:52px;border-radius:17px;background:var(--fill-2);display:grid;place-items:center;color:var(--pale);position:relative}
.feature .fc svg{width:22px;height:22px}
.feature .fc i{position:absolute;top:-1px;right:-1px;width:9px;height:9px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 2px var(--bg)}
.feature .fc i.ok{background:var(--good)}
.feature:active .fc{transform:scale(.95)}

/* ---------- text tabs (period selector) ---------- */
.ttabs{display:flex;gap:4px}
.ttabs button{flex:none;white-space:nowrap;height:30px;padding:0 12px;border-radius:999px;font-size:13px;font-weight:500;color:var(--t50);transition:background .2s,color .2s}
.ttabs button[aria-selected="true"]{color:#fff;background:var(--fill-2)}

/* ---------- segmented (Figma pill) ---------- */
.seg{position:relative;display:grid;padding:3px;border-radius:999px;background:var(--fill)}
.seg[data-n="2"]{grid-template-columns:1fr 1fr}
.seg[data-n="3"]{grid-template-columns:1fr 1fr 1fr}
.seg[data-n="4"]{grid-template-columns:repeat(4,1fr)}
.seg button{position:relative;z-index:1;height:38px;border-radius:999px;font-size:14px;color:var(--t70);font-weight:500;text-align:center;transition:color .2s}
.seg button[aria-selected="true"]{color:#fff}
.seg .thumb{position:absolute;top:3px;bottom:3px;left:3px;border-radius:999px;background:radial-gradient(50% 169.64% at 50% 50%,#8585E9 0%,#264BFF 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.3);transition:transform .28s var(--ease),width .28s}
.seg.compact button{height:30px;font-size:13px}

/* ---------- buttons: Banrox recipes from style.css ---------- */
.btn{height:52px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 24px;font-weight:500;font-size:16px;white-space:nowrap;position:relative;overflow:hidden;transition:transform .08s,opacity .2s;color:#fff}
.btn:active{transform:scale(.98)}
.btn svg{width:18px;height:18px}
/* .btn_gradient, flattened: one gradient, one inset highlight, nothing layered over the label */
.btn.primary{background:radial-gradient(50% 169.64% at 50% 50%,#8585E9 0%,#264BFF 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 8px 24px rgba(38,75,255,.28)}
/* .btn_transparent, as a plain 1px border */
.btn.secondary{background:transparent;color:#fff;border:1px solid rgba(133,133,233,.75)}
/* .btn_border_white */
.btn.quiet{background:transparent;border:1px solid rgba(255,255,255,.4)}
/* .btn_blur */
.btn.soft{background:var(--fill-2)}
.btn.white{background:#fff;color:#000}
.btn.danger{background:rgba(255,66,66,.16);color:var(--danger)}
.btn.sm{height:40px;padding:0 16px;font-size:14px}
.btn.xs{height:32px;padding:0 13px;font-size:13px}
.btn.block{width:100%}
.btn[disabled]{opacity:.4;pointer-events:none}
.btn-row{display:flex;gap:10px}
.btn-row .btn{flex:1}
.cta{position:absolute;left:0;right:0;bottom:0;z-index:4;padding:12px var(--gutter) 30px;background:linear-gradient(180deg,rgba(8,8,20,0) 0%,rgba(8,8,20,.9) 30%,#080814 100%)}

/* ---------- chips: real states only ---------- */
.chip{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;border-radius:7px;font-size:12px;font-weight:500;background:var(--fill-2);color:var(--t70);white-space:nowrap}
.chip.good{background:rgba(49,166,80,.18);color:var(--good)}
.chip.bad{background:rgba(255,66,66,.16);color:var(--danger)}
.chip.lav{background:rgba(133,133,233,.2);color:var(--pale)}
.chip svg{width:12px;height:12px}

/* ---------- progress ---------- */
.bar{position:relative;height:6px;border-radius:4px;overflow:hidden;background:rgba(255,255,255,.1)}
.bar > i{position:absolute;inset:0 auto 0 0;border-radius:4px;background:linear-gradient(90deg,var(--brand),var(--lav))}
.bar.good > i{background:var(--good)}
.bar.bad > i{background:var(--danger)}
.bar.thick{height:10px}

/* ---------- rings ---------- */
.ring{position:relative;width:120px;height:120px;flex:none}
.ring svg{width:100%;height:100%}
.ring .c{position:absolute;inset:0;display:grid;place-items:center;text-align:center}
.ring .c .v{font-family:var(--f-num);font-size:24px;font-weight:500;line-height:1;letter-spacing:-.02em}
.ring .c .l{font-size:11px;color:var(--t50);margin-top:3px}
.ring.sm{width:84px;height:84px}
.ring.sm .c .v{font-size:18px}
.legend{display:flex;flex-direction:column;gap:7px;font-size:13.5px;color:var(--t70)}
.legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px;vertical-align:1px}
.legend.inline{flex-direction:row;flex-wrap:wrap;gap:8px 16px;font-size:12.5px}

/* ---------- avatars ---------- */
.avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;background:linear-gradient(135deg,#375DFB,#8585E9);display:grid;place-items:center;font-family:var(--f-num);font-weight:500;font-size:14px;flex:none;color:#fff}
.avatar.lg{width:72px;height:72px;font-size:24px}
.avatar.sm{width:28px;height:28px;font-size:11px}
.stack{display:flex}
.stack .avatar{margin-left:-8px;box-shadow:0 0 0 2px var(--bg)}
.stack .avatar:first-child{margin-left:0}

/* ---------- card face: a real object ---------- */
.cardface{
  position:relative;aspect-ratio:1.586;border-radius:18px;overflow:hidden;
  padding:18px;display:flex;flex-direction:column;justify-content:space-between;
  background:
    radial-gradient(120% 90% at 82% 8%, rgba(133,133,233,.50) 0%, rgba(133,133,233,0) 58%),
    radial-gradient(110% 80% at 6% 96%, rgba(38,75,255,.42) 0%, rgba(38,75,255,0) 62%),
    linear-gradient(145deg,#0a0e2a 0%,#16256e 46%,#0b1030 100%);
  box-shadow:0 18px 40px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.2),inset 0 0 0 1px rgba(255,255,255,.06);
  color:#fff;isolation:isolate;
}
.cardface::before{content:"";position:absolute;inset:0;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20320%20202%27%20preserveAspectRatio%3D%27none%27%3E%3Cpath%20d%3D%27M-20%20168%20C%2052%20142%20108%20196%20176%20140%20S%20286%2044%20340%2070%20L%20340%20210%20L%20-20%20210%20Z%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.055%29%27%2F%3E%3Cpath%20d%3D%27M-20%20186%20C%2058%20162%20118%20212%20188%20156%20S%20296%2062%20340%2090%20L%20340%20212%20L%20-20%20212%20Z%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.045%29%27%2F%3E%3Cpath%20d%3D%27M-20%20150%20C%2056%20124%20112%20180%20182%20122%20S%20292%2028%20340%2054%27%20fill%3D%27none%27%20stroke%3D%27rgba%28255%2C255%2C255%2C0.16%29%27%20stroke-width%3D%271.1%27%2F%3E%3Cpath%20d%3D%27M-20%20176%20C%2062%20150%20122%20204%20194%20146%20S%20300%2052%20340%2080%27%20fill%3D%27none%27%20stroke%3D%27rgba%28255%2C255%2C255%2C0.09%29%27%20stroke-width%3D%271%27%2F%3E%3C%2Fsvg%3E");background-size:100% 100%;background-repeat:no-repeat}
.cardface::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(104deg,transparent 26%,rgba(255,255,255,.11) 40%,rgba(255,255,255,.03) 49%,transparent 60%)}
.cardface > *{position:relative;z-index:1}

.cardface.silver{background:radial-gradient(120% 90% at 82% 8%, rgba(255,255,255,.9) 0%, rgba(255,255,255,0) 55%),linear-gradient(145deg,#cfd3e2 0%,#f3f4f9 44%,#bfc4d6 100%);color:#0d1030;box-shadow:0 18px 40px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,255,255,.9),inset 0 0 0 1px rgba(13,16,48,.08)}
.cardface.silver::before{filter:invert(1);opacity:.5}
.cardface.silver::after{background:linear-gradient(104deg,transparent 26%,rgba(255,255,255,.7) 40%,rgba(255,255,255,.2) 49%,transparent 60%)}
.cardface.black{background:radial-gradient(120% 90% at 82% 8%, rgba(255,255,255,.14) 0%, rgba(255,255,255,0) 58%),linear-gradient(145deg,#0a0a10 0%,#23232f 48%,#0c0c14 100%)}
.cardface.report{background:linear-gradient(145deg,#171a2b,#2b2f47);filter:saturate(.3)}
.cardface.report::before{opacity:.5}

/* chip with contacts */
.chipic{width:34px;height:26px;border-radius:5px;position:relative;overflow:hidden;flex:none;
  background:linear-gradient(135deg,#e6d5a0 0%,#c6a95e 34%,#f5ecc6 52%,#c3a457 70%,#e0cf99 100%);
  box-shadow:inset 0 0 0 .5px rgba(0,0,0,.28),0 1px 2px rgba(0,0,0,.35)}
.chipic::before{content:"";position:absolute;inset:0;
  background:
    linear-gradient(90deg,transparent 29%,rgba(90,70,20,.55) 29%,rgba(90,70,20,.55) 31%,transparent 31%),
    linear-gradient(90deg,transparent 69%,rgba(90,70,20,.55) 69%,rgba(90,70,20,.55) 71%,transparent 71%),
    linear-gradient(180deg,transparent 27%,rgba(90,70,20,.55) 27%,rgba(90,70,20,.55) 30%,transparent 30%),
    linear-gradient(180deg,transparent 70%,rgba(90,70,20,.55) 70%,rgba(90,70,20,.55) 73%,transparent 73%)}
.chipic::after{content:"";position:absolute;left:31%;right:31%;top:30%;bottom:30%;border:.5px solid rgba(90,70,20,.5);border-radius:2px}
.cardface .contactless{width:15px;height:15px;opacity:.75;flex:none}

.cardface .logo{height:15px;width:auto;color:#fff}
.cardface.silver .logo{color:#0d1030}
.cardface .net{font-family:var(--f-num);font-weight:700;font-style:italic;letter-spacing:.01em;font-size:16px;text-shadow:0 1px 2px rgba(0,0,0,.3)}
.cardface.silver .net{text-shadow:none}
.cardface .top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.cardface .top .l{display:flex;align-items:center;gap:9px}
.cardface .lbl{font-size:9.5px;letter-spacing:.04em;color:rgba(255,255,255,.55);text-transform:uppercase}
.cardface.silver .lbl{color:rgba(13,16,48,.5)}
.cardface .holder{font-family:var(--f-num);font-size:19px;font-weight:500;line-height:1.1;margin-top:3px;letter-spacing:.01em}
.cardface .bot{display:flex;justify-content:space-between;align-items:flex-end;gap:12px}
.cardface .numb{font-family:var(--f-num);font-size:14.5px;letter-spacing:.1em;white-space:nowrap}
.cardface .numb .msk{letter-spacing:.14em;opacity:.7;margin-right:5px}
.cardface.mini{padding:12px 13px;border-radius:13px}
.cardface.mini .holder{font-size:14px;margin-top:2px}
.cardface.mini .numb{font-size:11px;letter-spacing:.08em}
.cardface.mini .logo{height:11px}
.cardface.mini .net{font-size:11px}
.cardface.mini .chipic{width:22px;height:17px;border-radius:3.5px}
.cardface.mini .lbl{font-size:8px}
.cards{display:flex;gap:12px;overflow-x:auto;margin:0 calc(var(--gutter) * -1);padding:6px var(--gutter) 10px;scroll-snap-type:x mandatory;scrollbar-width:none}
.cards::-webkit-scrollbar{display:none}
.cards > *{flex:none;width:300px;scroll-snap-align:start}
.wallet{position:relative;padding-top:44px;margin-bottom:6px}
.wallet .cardface{position:absolute;left:0;right:0}
.wallet .cardface:nth-child(1){top:0;transform:scale(.9);opacity:.5}
.wallet .cardface:nth-child(2){top:22px;transform:scale(.95);opacity:.8}
.wallet .cardface:nth-child(3){position:relative;top:0}

/* squad card object */
.squadcard{aspect-ratio:1.586;border-radius:20px;padding:20px;position:relative;overflow:hidden;background:linear-gradient(135deg,#050c2a 0%,#1a3bb8 55%,#8585E9 150%);box-shadow:0 20px 44px rgba(38,75,255,.32),inset 0 1px 0 rgba(255,255,255,.25);display:flex;flex-direction:column;justify-content:space-between}
.squadcard::before{content:"";position:absolute;inset:0;background:radial-gradient(60% 80% at 92% 8%,rgba(255,255,255,.3),transparent 60%);pointer-events:none}
.squadcard .lbl{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.7)}
.squadcard .nm{font-family:var(--f-num);font-size:22px;font-weight:500;margin-top:2px}

/* ---------- offer (object card) ---------- */
.offer{display:grid;grid-template-columns:104px minmax(0,1fr);gap:14px;align-items:start;padding:14px 16px;position:relative}
.offer + .offer::before{content:"";position:absolute;left:16px;right:0;top:0;height:1px;background:var(--hair)}
.offer .art{aspect-ratio:1.586;border-radius:9px;padding:9px;font-size:9px}
.offer .art .holder{font-size:11px;margin-top:0}
.offer .art .net{font-size:9px}
.offer .st{font-size:11.5px;font-weight:500;color:var(--good);letter-spacing:.01em}
.offer .st.lav{color:var(--lav)}.offer .st.dim{color:var(--t50)}
.offer .nm{font-size:15px;font-weight:500;line-height:1.25;margin-top:2px}
.offer .why{font-size:12.5px;color:var(--t70);margin-top:3px;line-height:1.4}
.offer .meta{display:flex;gap:14px;margin-top:8px;font-size:12px;color:var(--t50)}
.offer .meta b{display:block;color:var(--t100);font-family:var(--f-num);font-size:13px;font-weight:500}
.offer .cta-row{display:flex;gap:8px;margin-top:10px;align-items:center}

/* ---------- inputs (Figma add card form) ---------- */
.field{display:flex;flex-direction:column;gap:7px}
.field label{font-size:14px;color:var(--t100)}
.input{height:52px;border-radius:var(--r-ctl);padding:0 14px;background:var(--fill);border:1px solid var(--hair-2);display:flex;align-items:center;gap:10px;color:var(--t100)}
.input input{flex:1;background:none;border:0;outline:0;min-width:0;font-size:16px}
.input input::placeholder{color:var(--t35)}
.input:focus-within{border-color:var(--lav)}
.input svg{width:18px;height:18px;color:var(--t50)}
.help{font-size:12px;color:var(--t50)}
.otp{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
.otp .input{height:56px;justify-content:center;font-family:var(--f-num);font-size:22px;padding:0}
.otp .input input{text-align:center}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
input[type=range]{width:100%;accent-color:#264BFF;height:28px}

.toggle{width:51px;height:31px;border-radius:16px;background:rgba(255,255,255,.18);position:relative;transition:background .25s;flex:none}
.toggle::after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.4);transition:transform .25s}
.toggle[aria-checked="true"]{background:var(--good)}
.toggle[aria-checked="true"]::after{transform:translateX(20px)}
.toggle.blue[aria-checked="true"]{background:var(--brand)}

/* radio list (grouped) */
.opt{position:relative;width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px 16px;color:var(--t100)}
.opt + .opt::before{content:"";position:absolute;left:16px;right:0;top:0;height:1px;background:var(--hair)}
.opt .t{font-weight:500;font-size:15px}
.opt .s{font-size:12.5px;color:var(--t50);margin-top:2px}
.radio{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--t35);display:grid;place-items:center}
.opt[aria-checked="true"] .radio{border-color:var(--lav);background:var(--lav)}
.opt[aria-checked="true"] .radio::after{content:"";width:8px;height:8px;border-radius:50%;background:#fff}
.check{width:22px;height:22px;border-radius:7px;border:1.5px solid var(--t35);display:grid;place-items:center}
.opt[aria-checked="true"] .check{border-color:var(--lav);background:var(--lav)}
.opt[aria-checked="true"] .check::after{content:"";width:10px;height:6px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:translateY(-1px) rotate(-45deg)}
.steps{display:flex;gap:6px}
.steps i{flex:1;height:3px;border-radius:2px;background:rgba(255,255,255,.14)}
.steps i.on{background:var(--lav)}

/* ---------- tab bar: floating dock, icon only until selected ---------- */
.tabbar{position:absolute;left:0;right:0;bottom:0;z-index:6;height:var(--tab-h);
  padding:0 16px 26px;display:flex;align-items:flex-end;pointer-events:none;
  background:linear-gradient(180deg,rgba(8,8,20,0) 0%,rgba(8,8,20,.55) 26%,rgba(8,8,20,.93) 62%,rgba(8,8,20,1) 100%)}
.tb-dock{pointer-events:auto;width:100%;height:62px;border-radius:31px;display:flex;align-items:center;
  justify-content:space-between;padding:0 7px;
  background:linear-gradient(158deg,rgba(255,255,255,.14) 0%,rgba(255,255,255,.06) 55%,rgba(255,255,255,.035) 100%);
  backdrop-filter:blur(26px) saturate(1.5);-webkit-backdrop-filter:blur(26px) saturate(1.5);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.26),inset 0 0 0 1px rgba(255,255,255,.08),0 18px 40px rgba(0,0,0,.55)}
.tabbar button{height:48px;border-radius:24px;display:flex;align-items:center;justify-content:center;gap:0;
  padding:0;width:48px;color:var(--t50);position:relative;flex:none;
  transition:width .26s var(--ease),background .24s,color .24s,padding .26s var(--ease)}
.tabbar button .ic{width:48px;height:48px;display:grid;place-items:center;flex:none}
.tabbar button svg{width:23px;height:23px}
.tabbar button .lb{font-size:14px;font-weight:500;letter-spacing:-.01em;white-space:nowrap;
  max-width:0;opacity:0;overflow:hidden;transition:max-width .26s var(--ease),opacity .16s}
.tabbar button:active{transform:scale(.94)}
.tabbar button[aria-current="page"]{color:#fff;width:auto;padding-right:18px;
  background:radial-gradient(50% 169.64% at 50% 50%,#8585E9 0%,#264BFF 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 6px 18px rgba(38,75,255,.4)}
.tabbar button[aria-current="page"] .lb{max-width:110px;opacity:1}
.tabbar button.brand .ic{width:44px;height:44px;border-radius:50%;margin:0 2px;
  background:radial-gradient(50% 169.64% at 50% 50%,#8585E9 0%,#264BFF 100%);color:#fff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.34),0 6px 16px rgba(38,75,255,.4)}
.tabbar button.brand svg.mark{width:19px;height:21px}
.tabbar button.brand[aria-current="page"]{background:radial-gradient(50% 169.64% at 50% 50%,#8585E9 0%,#264BFF 100%)}
.tabbar button.brand[aria-current="page"] .ic{background:none;box-shadow:none;width:46px}

/* ---------- sheet + toast ---------- */
.sheet-bg{position:absolute;inset:0;z-index:20;background:rgba(0,0,0,.55);display:flex;align-items:flex-end}
.sheet{width:100%;max-height:88%;overflow-y:auto;border-radius:28px 28px 0 0;padding:10px 20px 34px;background:#0d1030;display:flex;flex-direction:column;gap:14px;animation:sheetIn .32s var(--ease)}
.sheet > *{flex:none}
.sheet .grab{width:38px;height:5px;border-radius:3px;background:rgba(255,255,255,.22);margin:0 auto 4px}
.sheet h3{margin:0;font-family:var(--f-num);font-size:20px;font-weight:500}
@keyframes sheetIn{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
.toast{position:absolute;left:20px;right:20px;bottom:100px;z-index:30;padding:12px 14px;border-radius:14px;background:#141848;font-size:14px;display:flex;gap:10px;align-items:center;animation:sheetIn .3s var(--ease)}
.toast svg{width:18px;height:18px;color:var(--good)}

/* ---------- charts on the ground ---------- */
.chart{width:100%;height:auto;display:block}
.chart text{font-family:var(--f-body);font-size:11px;fill:rgba(255,255,255,.45)}
.chart .grid line{stroke:rgba(255,255,255,.08)}
.chart .axis text.on{fill:#fff;font-weight:600}
.spark{width:100%;height:100%;display:block}
.chartblock{padding:4px 0 0}

/* ---------- note / callout: text on the ground, no box ---------- */
.note{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;padding:4px 2px}
.note .li-ic{width:32px;height:32px}
.note .li-ic svg{width:16px;height:16px}
.note .t{font-size:14px;font-weight:500}
.note .s{font-size:13px;color:var(--t70);margin-top:2px;line-height:1.45}

/* ---------- plan legs ---------- */
.leg{display:grid;grid-template-columns:20px 1fr;gap:12px}
.leg .dot{display:flex;flex-direction:column;align-items:center}
.leg .dot i{width:9px;height:9px;border-radius:50%;background:var(--t35);margin-top:6px}
.leg .dot::after{content:"";flex:1;width:1px;background:var(--hair-2);margin-top:4px}
.leg:last-child .dot::after{display:none}
.leg.done .dot i{background:var(--good)}
.leg.now .dot i{background:var(--lav)}
.leg .b{padding-bottom:14px}
.leg .t{font-weight:500;font-size:14.5px}
.leg .s{font-size:12.5px;color:var(--t50);margin-top:2px;line-height:1.4}

/* ---------- onboarding ---------- */
.onb{flex:1;display:flex;flex-direction:column;justify-content:flex-end;padding:0 var(--gutter) 24px;gap:14px}
.onb h1{margin:0;font-family:var(--f-num);font-weight:500;font-size:40px;line-height:1.05;letter-spacing:-.02em}
.onb p{margin:0;color:var(--t70);font-size:16px;max-width:30ch}
.dots{display:flex;gap:6px}
.dots i{width:28px;height:3px;border-radius:2px;background:rgba(255,255,255,.25)}
.dots i.on{background:#fff}
.logo-lg{width:150px;height:32px;color:#fff}
.empty{text-align:center;padding:26px 16px;display:flex;flex-direction:column;align-items:center;gap:10px}
.empty .ic{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:var(--fill-2);color:var(--pale)}
.empty .ic svg{width:28px;height:28px}
.empty .t{font-family:var(--f-num);font-size:20px;font-weight:500}
.empty .s{font-size:14px;color:var(--t50);max-width:30ch}
.divider{height:1px;background:var(--hair)}
.badge{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--danger);color:#fff;font-size:11px;font-weight:600;display:inline-grid;place-items:center}

@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* =============================================================
   v3 additions
   ============================================================= */

/* glass material: used on hero widgets only */
.glass{
  background:linear-gradient(158deg,rgba(255,255,255,.13) 0%,rgba(255,255,255,.055) 52%,rgba(255,255,255,.028) 100%);
  backdrop-filter:blur(26px) saturate(1.5);-webkit-backdrop-filter:blur(26px) saturate(1.5);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.24),inset 0 0 0 1px rgba(255,255,255,.07),0 18px 44px rgba(0,0,0,.42);
}

/* ambient light the glass refracts */
.ambient{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.ambient i{position:absolute;display:block;border-radius:50%;filter:blur(64px)}
.ambient .a1{width:120%;height:46%;left:-10%;top:-24%;background:radial-gradient(closest-side,rgba(38,75,255,.62),rgba(38,75,255,0))}
.ambient .a2{width:82%;height:30%;right:-26%;top:34%;background:radial-gradient(closest-side,rgba(133,133,233,.42),rgba(133,133,233,0))}
.ambient .a3{width:86%;height:30%;left:-30%;top:66%;background:radial-gradient(closest-side,rgba(38,75,255,.34),rgba(38,75,255,0))}
.app.is-auth .ambient .a1{height:62%;top:-18%}

/* ---------- bureau carousel ---------- */
.bcar{display:flex;gap:10px;overflow-x:auto;margin:0 calc(var(--gutter) * -1);padding:4px 30px 10px;scroll-snap-type:x mandatory;scrollbar-width:none;scroll-padding:0 30px}
.bcar::-webkit-scrollbar{display:none}
.bcar > *{flex:none;width:304px;scroll-snap-align:center}
.bcard{border-radius:26px;padding:14px 16px 16px;display:flex;flex-direction:column;gap:2px;color:var(--t100)}
.bhead{display:flex;align-items:center;justify-content:space-between;gap:10px}
.bname{font-family:var(--f-num);font-size:14px;font-weight:600;letter-spacing:.01em;display:inline-flex;align-items:center;gap:7px}
.bname i{width:7px;height:7px;border-radius:50%;display:inline-block}
.bmodel{font-size:11px;color:var(--t35);letter-spacing:.02em}
.bcard .arc{width:100%;height:auto;margin:-2px 0 0}
.bfoot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:2px}
.bdelta{font-family:var(--f-num);font-size:13.5px;font-weight:500;display:inline-flex;align-items:center;gap:5px}
.bdelta.up{color:var(--good)}
.bdelta.down{color:var(--danger)}
.bupd{font-size:11.5px;color:var(--t35)}
.bnote{font-size:12.5px;color:var(--t70);line-height:1.35;margin-top:6px;padding-top:9px;border-top:1px solid var(--hair)}
.bpills{display:flex;justify-content:center;gap:6px}
.bpills button{height:32px;padding:0 14px;border-radius:999px;font-size:13px;font-weight:500;color:var(--t50);border:1px solid transparent;transition:color .2s,border-color .2s,background .2s}
.bpills button[aria-selected="true"]{color:#fff;border-color:rgba(133,133,233,.6);background:rgba(38,75,255,.16)}

/* ---------- payment calendar ---------- */
.paycal{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
.pm{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 0 7px;border-radius:999px;background:var(--fill);font-size:11.5px;color:var(--t70)}
.pm .st{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.08);color:var(--t35)}
.pm .st svg{width:12px;height:12px}
.pm.ok{border:1px solid rgba(77,222,0,.17)}
.pm.ok .st{background:var(--good);color:#04120a}
.pm.miss{border:1px solid rgba(255,66,66,.5)}
.pm.next{border:1px solid rgba(255,255,255,.14)}
.pm.miss .st{background:var(--danger);color:#fff}
.pm.next .st{border:1.5px dashed var(--t35);background:transparent}
.pm.off{opacity:.35}
.calhead{display:flex;justify-content:space-between;align-items:flex-end}
.calhead .yr{font-family:var(--f-num);font-size:20px;font-weight:500}
.calhead .fp{text-align:right;font-size:12px;color:var(--t50)}
.calhead .fp b{display:block;color:var(--t100);font-weight:500;font-size:13px}

/* ---------- glass widget carousel ---------- */
.widgets{display:flex;gap:12px;overflow-x:auto;margin:0 calc(var(--gutter) * -1);padding:6px var(--gutter) 12px;scroll-snap-type:x proximity;scrollbar-width:none}
.widgets::-webkit-scrollbar{display:none}
.widgets > *{flex:none;width:236px;scroll-snap-align:start}
.wg{border-radius:24px;padding:16px;min-height:150px;display:flex;flex-direction:column;justify-content:space-between;color:var(--t100);text-align:left}
.wg .wg-top{display:flex;align-items:center;gap:12px}
.wg .wg-ic{width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.10);display:grid;place-items:center;color:var(--pale);flex:none}
.wg .wg-ic svg{width:20px;height:20px}
.wg .wg-t{font-family:var(--f-num);font-size:17px;font-weight:500;line-height:1.15}
.wg .wg-bot{display:flex;justify-content:space-between;align-items:flex-end;gap:10px}
.wg .wg-v{font-family:var(--f-num);font-size:32px;font-weight:500;letter-spacing:-.02em;line-height:1}
.wg .wg-v small{font-size:16px;color:var(--t50);font-weight:400;margin-left:4px}
.wg .wg-s{font-size:11px;color:var(--t50);text-align:right}
.dots5{display:flex;gap:6px;justify-content:flex-end;margin-top:6px}
.dots5 i{width:8px;height:8px;border-radius:50%;background:var(--good);box-shadow:0 0 8px rgba(77,222,0,.6)}
.dots5 i.off{background:transparent;border:1.5px solid var(--t35);box-shadow:none}
.dots5 i.bad{background:var(--danger);box-shadow:0 0 8px rgba(255,66,66,.6)}
.wg .bar{margin-top:8px;width:100%}
.wg.blue{background:linear-gradient(150deg,rgba(38,75,255,.6),rgba(38,75,255,.18) 60%,rgba(38,75,255,.06))}

/* ---------- offers: best card + bank rules ---------- */
.search{height:52px;border-radius:16px;background:var(--fill-2);display:flex;align-items:center;gap:10px;padding:0 16px;color:var(--t50)}
.search input{flex:1;background:none;border:0;outline:0;font-size:16px;color:var(--t100)}
.search input::placeholder{color:var(--t35)}
.search svg{width:18px;height:18px}
.best{border-radius:26px;padding:18px;text-align:left;width:100%;color:var(--t100)}
.best .cardface{width:220px;margin:0 auto 14px;box-shadow:0 24px 50px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.2)}
.best .save{display:flex;justify-content:space-between;align-items:flex-start}
.best .save .v{font-family:var(--f-num);font-size:34px;font-weight:500;color:var(--good);letter-spacing:-.02em;line-height:1;margin-top:4px}
.rules{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rule{border-radius:20px;padding:14px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;color:var(--t100)}
.rule .bk{font-family:var(--f-num);font-weight:600;font-size:15px;letter-spacing:.01em}
.rule .ok{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:rgba(49,166,80,.2);color:var(--good)}
.rule .no{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:rgba(255,66,66,.16);color:var(--danger)}
.rule .ok svg,.rule .no svg{width:15px;height:15px}
.rule .rt{font-size:12.5px;color:var(--t70);line-height:1.35}
.rule .rt b{color:var(--t100);font-weight:500}
.rule .when{font-size:11.5px;padding:5px 10px;border-radius:999px;background:var(--fill-2);color:var(--t70)}

/* loan detail progress */
.range-num{display:flex;justify-content:space-between;font-size:12px;color:var(--t50);margin-top:6px}
.bar.gold > i{background:linear-gradient(90deg,#8585E9,#B9C3FF)}
.tabs-line{display:flex;gap:22px;border-bottom:1px solid var(--hair);padding-bottom:0}
.tabs-line button{padding:8px 0 10px;font-size:15px;color:var(--t50);font-weight:500;position:relative}
.tabs-line button[aria-selected="true"]{color:#fff}
.tabs-line button[aria-selected="true"]::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:#fff;border-radius:2px}

/* ---------- product bento ---------- */
.bento{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.bt{position:relative;border-radius:22px;padding:14px;min-height:118px;display:flex;flex-direction:column;gap:2px;color:var(--t100);text-align:left;overflow:hidden;transition:transform .09s}
.bt:active{transform:scale(.985)}
.bt.wide{grid-column:1 / -1;min-height:104px}
.bt-ic{width:36px;height:36px;border-radius:12px;background:rgba(255,255,255,.10);display:grid;place-items:center;color:var(--pale);margin-bottom:8px}
.bt-ic svg{width:18px;height:18px}
.bt-n{font-size:13px;color:var(--t70);line-height:1.2}
.bt-v{font-family:var(--f-num);font-size:23px;font-weight:500;letter-spacing:-.02em;line-height:1.1;margin-top:3px}
.bt-v small{font-size:13px;color:var(--t50);font-weight:400;margin-left:3px}
.bt-s{font-size:11.5px;color:var(--t50);margin-top:4px;line-height:1.3}
.bt .bar{margin-top:auto;padding-top:10px}
.bt.wide{flex-direction:row;align-items:center;gap:14px}
.bt.wide .bt-ic{margin:0;width:42px;height:42px;border-radius:14px}
.bt.wide .bt-ic svg{width:21px;height:21px}
.bt.wide .bt-txt{flex:1;min-width:0}
.bt.wide .bt-v{font-size:25px}
.bt.wide .bt-r{text-align:right;flex:none}
.bt .flag{position:absolute;top:13px;right:13px;width:8px;height:8px;border-radius:50%}
.bt .flag.bad{background:var(--danger);box-shadow:0 0 10px rgba(255,66,66,.8)}
.bt .flag.good{background:var(--good);box-shadow:0 0 10px rgba(77,222,0,.7)}
.bt.alert .bt-ic{color:var(--danger);background:rgba(255,66,66,.14)}
.bt.ok .bt-ic{color:var(--good);background:rgba(49,166,80,.16)}
.bt .mini-ring{position:absolute;right:12px;top:12px;width:44px;height:44px}

/* ---------- wallet pocket, Apple Wallet style ---------- */
.pocket{position:relative;height:252px;border-radius:26px;text-align:left;width:100%;display:block;overflow:hidden;padding:0}
.pk-slot{position:absolute;left:14px;right:14px;top:10px;bottom:0}
.pocket .pk-c{position:absolute;left:0;right:0;height:124px;aspect-ratio:auto;border-radius:16px;padding:0 15px;display:block;
  box-shadow:0 -7px 20px rgba(0,0,0,.52),inset 0 1px 0 rgba(255,255,255,.26),inset 0 0 0 1px rgba(255,255,255,.05)}
.pocket .pk-c .top{height:36px;display:flex;align-items:center;gap:10px;width:100%}
.pocket .pk-c:nth-child(1){top:0;left:13px;right:13px}
.pocket .pk-c:nth-child(2){top:36px;left:6.5px;right:6.5px}
.pocket .pk-c:nth-child(3){top:72px}
.pocket .pk-c .chipic{width:25px;height:18px;border-radius:3.5px;flex:none}
.pk-nm{font-family:var(--f-num);font-size:14.5px;font-weight:500;letter-spacing:.01em;white-space:nowrap}
.pk-nm small{font-size:11px;opacity:.5;margin-left:7px;letter-spacing:.1em;font-weight:400}
.pk-b{font-family:var(--f-num);font-size:16px;font-weight:500;margin-left:auto;letter-spacing:-.01em}
.pk-b small{font-size:11px;opacity:.5}
.pocket .pk-front{position:absolute;left:0;right:0;bottom:0;height:104px;
  filter:drop-shadow(0 -14px 26px rgba(0,0,0,.72))}
.pocket .pk-face{position:absolute;inset:0;display:block;
  background:linear-gradient(180deg,#141830 0%,#0C1022 46%,#07091A 100%);
  -webkit-mask-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 358 104' preserveAspectRatio='none'><path d='M0 22 A22 22 0 0 1 22 0 L40 0 C64 0 60 34 88 34 L270 34 C298 34 294 0 318 0 L336 0 A22 22 0 0 1 358 22 L358 104 L0 104 Z' fill='black'/></svg>");mask-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 358 104' preserveAspectRatio='none'><path d='M0 22 A22 22 0 0 1 22 0 L40 0 C64 0 60 34 88 34 L270 34 C298 34 294 0 318 0 L336 0 A22 22 0 0 1 358 22 L358 104 L0 104 Z' fill='black'/></svg>");
  -webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.pocket .pk-face::before{content:"";position:absolute;inset:0;opacity:.95;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='1.1' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .085 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}
.pocket .pk-stitch{position:absolute;inset:0;width:100%;height:100%;display:block}
.pocket .pk-text{position:absolute;left:20px;bottom:20px;z-index:2}
.pocket .pk-text .l{font-size:12px;color:var(--t70)}
.pocket .pk-text .v{font-family:var(--f-num);font-size:30px;font-weight:500;letter-spacing:-.025em;margin-top:3px}
.pocket .pk-text .v small{font-size:16px;color:var(--t50);font-weight:400}
.pocket .pk-cta{position:absolute;right:20px;bottom:24px;z-index:2}

/* ---------- payment history card ---------- */
.paycard{border-radius:24px;padding:16px 16px 15px;display:block;width:100%;text-align:left;color:var(--t100);overflow:hidden}

.calhead .ct{font-size:12.5px;color:var(--t50)}
.calhead .yr{margin-top:2px}
.calhead .yr small{font-size:13px;color:var(--t50);font-weight:400;letter-spacing:0}
.calhead .fp b{margin-top:2px}
.paycard .paycal{margin-top:14px}
.paycard .pm{background:rgba(255,255,255,.055)}
.callegend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:13px;font-size:11.5px;color:var(--t50);align-items:center}
.callegend i{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:middle}
.callegend i.ok{background:var(--good)}
.callegend i.miss{background:var(--danger)}
.callegend i.next{background:transparent;border:1.5px dashed var(--t35)}

/* ---------- bento internals ---------- */
.bt-n,.bt-v,.bt-s{display:block}
.bt > .bt-n{margin-top:auto}
.bt .bar{margin-top:11px;padding-top:0}
.bt-spark{display:block;margin-top:9px;height:26px}
.bt.wide .bt-txt{display:flex;flex-direction:column;gap:1px}
.bt.wide .bt-txt .bt-n{margin-top:0}
.bt.wide .bt-r .bt-v{font-size:17px}
.bt.wide .bt-r .bt-s{margin-top:3px}
.bt.wide .bt-v{margin-top:1px}

/* ---------- tracking widget internals ---------- */
.wg-row{display:flex;justify-content:space-between;align-items:flex-end;gap:10px}
.wg .wg-s.l{text-align:left;margin-top:5px}
.wg .ring.sm{width:76px;height:76px;margin-bottom:-4px}
.wg .ring.sm .c .v{font-size:16px}
.wg-chart{display:block;margin-top:10px}
.wg-chart[data-chart="spark"]{height:36px}

.bt-chip{position:absolute;top:13px;right:13px;font-size:10.5px;padding:4px 9px;border-radius:999px;background:rgba(255,255,255,.09);color:var(--t70);letter-spacing:.01em}
.bt-chip.good{background:rgba(77,222,0,.14);color:var(--good)}

.calrow{display:flex;align-items:center;gap:11px;margin-top:13px}
.calyr{font-family:var(--f-num);font-size:11px;color:var(--t35);writing-mode:vertical-rl;transform:rotate(180deg);letter-spacing:.08em;flex:none}
.calrow .paycal{flex:1;margin-top:0;gap:7px}
.calrow .pm{font-size:10.5px;gap:5px;padding:7px 0 6px}
.calrow .pm .st{width:19px;height:19px}
.calrow .pm .st svg{width:10px;height:10px}

/* ---------- card offer deck (marketplace) ---------- */
.odeck{display:flex;gap:12px;overflow-x:auto;margin:0 calc(var(--gutter) * -1);padding:6px var(--gutter) 14px;scroll-snap-type:x proximity;scrollbar-width:none}
.odeck::-webkit-scrollbar{display:none}
.ocard{flex:none;width:254px;scroll-snap-align:start;border-radius:24px;padding:16px;display:flex;flex-direction:column;text-align:left;color:var(--t100)}
.oc-art{position:relative;height:114px;margin:2px 0 14px}
.oc-art .cardface{position:absolute;left:0;top:2px;width:148px;transform:rotate(-6deg);border-radius:11px;box-shadow:0 16px 34px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.22),inset 0 0 0 1px rgba(255,255,255,.06)}
.oc-art .cardface .holder{font-size:12.5px}
.oc-odds{position:absolute;right:-6px;bottom:-4px;width:82px;height:82px}
.oc-odds .c .v{font-size:17px}
.oc-odds .c .l{font-size:9.5px;margin-top:1px}
.oc-nm{font-family:var(--f-num);font-size:16px;font-weight:500;line-height:1.2}
.oc-why{font-size:12px;color:var(--t70);margin-top:5px;line-height:1.35;min-height:33px}
.oc-stats{display:flex;justify-content:space-between;gap:6px;margin:13px 0 14px;padding:10px 0;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);font-size:10.5px;color:var(--t50)}
.oc-stats b{display:block;color:var(--t100);font-family:var(--f-num);font-size:13px;font-weight:500;margin-top:2px;white-space:nowrap}
.ocard .btn{margin-top:auto}

/* ---------- state: loading skeleton ---------- */
@keyframes skshine{0%{background-position:-140% 0}100%{background-position:240% 0}}
.sk .sk-l,.sk .sk-c,.sk-arc,.sk-l,.sk-c{position:relative;overflow:hidden;background:rgba(255,255,255,.07);border-radius:7px;display:block}
.sk-l{height:11px}
.sk-l.lg{height:24px;border-radius:9px;margin-top:7px}
.sk .sk-l + .sk-l{margin-top:7px}
.sk-c{width:36px;height:36px;border-radius:12px}
.sk-c.sm{width:38px;height:38px;border-radius:50%}
.sk-arc{width:150px;height:150px;border-radius:50%;margin:16px auto 0;
  -webkit-mask:radial-gradient(circle,transparent 58px,#000 59px);mask:radial-gradient(circle,transparent 58px,#000 59px)}
.sk-bureau{border-radius:24px;padding:18px}
.sk .sk-l::after,.sk .sk-c::after,.sk-arc::after{content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,transparent 18%,rgba(255,255,255,.13) 50%,transparent 82%);background-size:220% 100%;
  animation:skshine 1.35s linear infinite}
@media (prefers-reduced-motion:reduce){.sk .sk-l::after,.sk .sk-c::after,.sk-arc::after{animation:none}}

/* ---------- state: empty ---------- */
.blank{border-radius:24px;padding:26px 22px 24px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:0}
.bl-ic{width:54px;height:54px;border-radius:18px;background:rgba(255,255,255,.08);display:grid;place-items:center;color:var(--pale);margin-bottom:14px}
.bl-ic svg{width:24px;height:24px}
.bl-ic.good{background:rgba(77,222,0,.14);color:var(--good)}
.bl-t{font-family:var(--f-num);font-size:17px;font-weight:500}
.bl-s{font-size:13px;color:var(--t50);line-height:1.45;margin-top:6px;max-width:270px}
.blank .btn{margin-top:16px}

/* ---------- state: error ---------- */
.errbox{display:flex;gap:13px;align-items:flex-start;border-radius:20px;padding:15px 16px;
  background:rgba(255,66,66,.08);border:1px solid rgba(255,66,66,.28)}
.errbox.off{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.12)}
.er-ic{width:34px;height:34px;border-radius:12px;background:rgba(255,66,66,.18);color:var(--danger);display:grid;place-items:center;flex:none}
.errbox.off .er-ic{background:rgba(255,255,255,.09);color:var(--t70)}
.er-ic svg{width:17px;height:17px}
.er-b{flex:1;min-width:0}
.er-t{font-size:14.5px;font-weight:500}
.er-s{font-size:12.5px;color:var(--t70);line-height:1.4;margin-top:3px}
.errbox .cta-row{display:flex;gap:10px;align-items:center;margin-top:11px}

/* ---------- state: pressed, disabled, partial ---------- */
.statebox{border-radius:20px;padding:16px;background:var(--fill)}
.btn.is-pressed{transform:scale(.98);filter:brightness(.88)}
.li.is-pressed,.li:active{background:rgba(255,255,255,.06)}
.part-note{display:flex;gap:8px;align-items:flex-start;margin-top:12px;padding-top:11px;border-top:1px solid var(--hair);font-size:11.5px;color:var(--t50);line-height:1.35}
.part-note svg{width:13px;height:13px;flex:none;margin-top:1px;color:var(--pale)}
.oc-odds{right:-9px;bottom:-8px;width:78px;height:78px}

/* ---------- notched tab pair (Alerts / Trends), from the web dashboard ---------- */
.ntabs{--nt-sel:#0C1028;--nt-off:rgba(255,255,255,.055);position:relative}
.nt-row{display:flex;height:52px}
.nt{flex:1;position:relative;display:flex;align-items:center;justify-content:center;gap:9px;
  font-size:15px;font-weight:500;color:var(--t50);background:var(--nt-off);
  transition:color .2s,background .2s;letter-spacing:-.01em}
.nt:first-child{border-top-left-radius:20px}
.nt:last-child{border-top-right-radius:20px}
.nt[aria-selected="true"]{color:#fff;background:var(--nt-sel);border-radius:20px 20px 0 0}
.nt .nb{min-width:26px;height:26px;padding:0 8px;border-radius:999px;display:grid;place-items:center;
  font-family:var(--f-num);font-size:12.5px;font-weight:500;background:rgba(255,255,255,.1);color:var(--t50);
  transition:background .2s,color .2s}
.nt[aria-selected="true"] .nb{background:#fff;color:#0A0D22}
.nt[aria-selected="false"] .nb.bad{background:rgba(255,66,66,.18);color:#FF6E6E}
.nt[aria-selected="false"]::before{content:"";position:absolute;bottom:0;width:19px;height:19px;
  background:var(--nt-sel);pointer-events:none}
.nt:last-child[aria-selected="false"]::before{left:0;
  -webkit-mask:radial-gradient(circle 19px at 19px 0,transparent 0 19px,#000 19px);
  mask:radial-gradient(circle 19px at 19px 0,transparent 0 19px,#000 19px)}
.nt:first-child[aria-selected="false"]::before{right:0;
  -webkit-mask:radial-gradient(circle 19px at 0 0,transparent 0 19px,#000 19px);
  mask:radial-gradient(circle 19px at 0 0,transparent 0 19px,#000 19px)}
.nt-body{background:var(--nt-sel);border-radius:0 0 22px 22px;overflow:hidden}
.nt-body .list{background:transparent;border-radius:0}
.nt-body .li:first-child::before{display:none}

/* trend rows */
.li.trend{grid-template-columns:minmax(0,1fr) 86px auto}
.tr-sp{display:block;height:32px}
.li.trend .li-v{font-size:15px}

/* ---------- account chips on the payment history card ---------- */
.achips{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;margin:0 -16px 14px;padding:1px 16px 3px}
.achips::-webkit-scrollbar{display:none}
.achips button{flex:none;height:32px;padding:0 13px;border-radius:999px;background:rgba(255,255,255,.06);
  color:var(--t50);font-size:13px;font-weight:500;display:flex;align-items:center;gap:7px;white-space:nowrap;
  transition:background .18s,color .18s}
.achips button i{width:6px;height:6px;border-radius:50%;background:var(--good);flex:none}
.achips button i.bad{background:var(--danger)}
.achips button[aria-selected="true"]{background:radial-gradient(50% 169.64% at 50% 50%,#8585E9 0%,#264BFF 100%);
  color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.26)}
.achips button[aria-selected="true"] i{background:#fff}
.achips button[aria-selected="true"] i.bad{background:#FFD0D0}
.calhead .ct small{font-size:11px;letter-spacing:.09em;opacity:.7;margin-left:5px}
.paycard .calhead + .paycal{margin-top:14px}

.tr-dots{display:flex;gap:6px;align-items:center;justify-content:flex-end}
.tr-dots i{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.14)}
.tr-dots i.on{background:var(--lav);box-shadow:0 0 8px rgba(133,133,233,.75)}

/* ---------- Banrox AI chat ---------- */
.content.with-chat{padding-bottom:172px;gap:18px}
.msg{display:flex;gap:9px;align-items:flex-start}
.msg.me{justify-content:flex-end}
.ai-av{width:30px;height:30px;border-radius:50%;flex:none;display:grid;place-items:center;color:#fff;
  background:radial-gradient(50% 169.64% at 50% 50%,#8585E9 0%,#264BFF 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.34),0 4px 12px rgba(38,75,255,.36)}
.ai-av svg.mark{width:13px;height:15px}
.ai-col{flex:1;min-width:0}
.bub{border-radius:18px;padding:11px 14px;font-size:14.5px;line-height:1.45;letter-spacing:-.005em}
.msg.ai .bub{background:rgba(255,255,255,.07);border-top-left-radius:7px;color:var(--t100);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.05)}
.msg.me .bub{max-width:80%;color:#fff;border-bottom-right-radius:7px;
  background:radial-gradient(50% 169.64% at 50% 50%,#8585E9 0%,#264BFF 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.26)}
.ai-w{margin-top:10px;border-radius:20px;padding:14px;color:var(--t100)}
.aw-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.aw-t{font-family:var(--f-num);font-size:14px;font-weight:500}
.aw-trio{display:grid;grid-template-columns:repeat(3,1fr);gap:0}
.awt{display:flex;flex-direction:column;align-items:center;gap:3px;padding:2px 4px;position:relative;color:var(--t100)}
.awt + .awt::before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:1px;background:var(--hair)}
.awt .n{font-size:11px;color:var(--t50)}
.awt .v{font-family:var(--f-num);font-size:23px;font-weight:500;letter-spacing:-.02em}
.awt .d{font-size:11px;display:flex;align-items:center;gap:2px;color:var(--t50)}
.awt .d svg{width:10px;height:10px}
.awt .d.good{color:var(--good)}.awt .d.bad{color:var(--danger)}
.aw-spark{display:block;height:38px;margin-top:10px}
.aw-diff{display:flex;flex-direction:column;gap:9px}
.awd{display:grid;grid-template-columns:minmax(0,1fr) auto 12px auto auto;align-items:center;gap:7px;font-size:12.5px}
.awd .l{color:var(--t70);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.awd .o{color:var(--t35);text-decoration:line-through;font-family:var(--f-num)}
.awd .o.plain{text-decoration:none;color:var(--t50);font-family:var(--f-body)}
.awd svg{width:12px;height:12px;color:var(--t35)}
.awd .n2{font-family:var(--f-num);font-weight:500}
.awd .p{font-family:var(--f-num);font-size:12px;color:var(--t50);min-width:34px;text-align:right}
.awd .p.good{color:var(--good)}
.aw-ba{display:flex;align-items:center;gap:14px;margin-bottom:6px}
.aw-ba > div{display:flex;flex-direction:column}
.aw-ba .l{font-size:11.5px;color:var(--t50)}
.aw-ba .v{font-family:var(--f-num);font-size:26px;font-weight:500;letter-spacing:-.02em;line-height:1.15}
.aw-ba .v.good{color:var(--good)}
.aw-arrow{color:var(--t35);display:grid;place-items:center}
.aw-arrow svg{width:16px;height:16px}
.aw-note{display:flex;gap:7px;align-items:flex-start;margin-top:10px;padding-top:10px;border-top:1px solid var(--hair);
  font-size:11.5px;color:var(--t50);line-height:1.35}
.aw-note svg{width:13px;height:13px;flex:none;margin-top:1px;color:var(--pale)}
.aw-card{display:flex;gap:14px;align-items:center}
.aw-card .cardface{width:110px;flex:none;box-shadow:0 12px 26px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.2)}
.aw-save{display:flex;flex-direction:column;min-width:0}
.aw-save .l{font-size:11.5px;color:var(--t50)}
.aw-save .v{font-family:var(--f-num);font-size:26px;font-weight:500;color:var(--good);letter-spacing:-.02em;line-height:1.2}
.aw-save .s{font-size:11.5px;color:var(--t50);margin-top:3px}
.ai-acts{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.typing{display:flex;gap:5px;align-items:center;height:38px;padding:0 15px;border-radius:18px;border-top-left-radius:7px;
  background:rgba(255,255,255,.07)}
.typing i{width:6px;height:6px;border-radius:50%;background:var(--pale);animation:tdot 1.15s ease-in-out infinite}
.typing i:nth-child(2){animation-delay:.16s}
.typing i:nth-child(3){animation-delay:.32s}
@keyframes tdot{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
@media (prefers-reduced-motion:reduce){.typing i{animation:none;opacity:.6}}

/* composer */
.composer{position:absolute;left:0;right:0;bottom:0;z-index:5;padding:22px 16px 26px;
  background:linear-gradient(180deg,rgba(8,8,20,0) 0%,rgba(8,8,20,.96) 16%,#080814 34%)}
.ai-chips{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;margin:0 -16px 10px;padding:1px 16px}
.ai-chips::-webkit-scrollbar{display:none}
.ai-chips button{flex:none;height:32px;padding:0 13px;border-radius:999px;background:rgba(255,255,255,.07);
  color:var(--t70);font-size:12.5px;white-space:nowrap;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.ai-chips button:active{background:rgba(255,255,255,.12)}
.cbar{height:54px;border-radius:27px;display:flex;align-items:center;gap:6px;padding:0 6px 0 18px}
.cbar input{flex:1;min-width:0;background:none;border:0;outline:0;font-size:15.5px;color:var(--t100);font-family:inherit}
.cbar input::placeholder{color:var(--t35)}
.cb-mic,.cb-send{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;flex:none;transition:transform .08s}
.cb-mic{color:var(--t50)}
.cb-send{color:#fff;background:radial-gradient(50% 169.64% at 50% 50%,#8585E9 0%,#264BFF 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 6px 16px rgba(38,75,255,.4)}
.cb-mic svg,.cb-send svg{width:19px;height:19px}
.cb-mic:active,.cb-send:active{transform:scale(.92)}

/* Ask Banrox entry pill */
.askai{display:flex;align-items:center;gap:11px;width:100%;border-radius:20px;padding:13px 15px;text-align:left;
  color:var(--t100);transition:transform .09s}
.askai:active{transform:scale(.99)}
.askai .ai-av{width:34px;height:34px}
.askai .ai-av svg.mark{width:15px;height:17px}
.askai .t{flex:1;min-width:0}
.askai .t b{display:block;font-family:var(--f-num);font-size:14.5px;font-weight:500}
.askai .t span{display:block;font-size:12px;color:var(--t50);margin-top:2px}
.askai .go{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.08);display:grid;place-items:center;color:var(--t70);flex:none}
.askai .go svg{width:14px;height:14px}

/* ---------- spending map ---------- */
.mapcard{border-radius:24px;padding:10px 10px 6px;overflow:hidden}
.map{position:relative;height:236px;border-radius:17px;overflow:hidden;background:#0A0D24}
.map-svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.map-fade{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(120% 90% at 50% 40%,rgba(8,8,20,0) 40%,rgba(8,8,20,.55) 100%)}
.map-me{position:absolute;left:41%;top:52%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;
  background:#fff;box-shadow:0 0 0 3px rgba(38,75,255,.9),0 0 14px rgba(38,75,255,.9)}
.map-me i{position:absolute;inset:-11px;border-radius:50%;border:1.5px solid rgba(38,75,255,.55);animation:mepulse 2.4s ease-out infinite}
@keyframes mepulse{0%{transform:scale(.55);opacity:.9}100%{transform:scale(1.5);opacity:0}}
@media (prefers-reduced-motion:reduce){.map-me i{animation:none;opacity:.4}}
.mpin{position:absolute;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;display:grid;place-items:center;
  color:var(--pale);background:rgba(16,20,48,.88);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.14),0 6px 16px rgba(0,0,0,.5);
  transition:transform .18s var(--ease),background .18s,color .18s,box-shadow .18s;z-index:2}
.mpin svg{width:17px;height:17px}
.mpin::after{content:"";position:absolute;bottom:-5px;left:50%;margin-left:-5px;width:10px;height:10px;
  background:rgba(16,20,48,.88);transform:rotate(45deg);border-radius:0 0 3px 0;z-index:-1}
.mpin.on::after{background:#3A57FF;bottom:-6px;width:12px;height:12px;margin-left:-6px}
.mpin:active{transform:scale(.9)}
.mpin.on{width:46px;height:46px;margin:-23px 0 0 -23px;color:#fff;z-index:3;
  background:radial-gradient(50% 169.64% at 50% 50%,#8585E9 0%,#264BFF 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.34),0 0 0 6px rgba(38,75,255,.22),0 10px 24px rgba(38,75,255,.5)}
.mpin.on svg{width:20px;height:20px}
.mrow{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:12px;
  width:100%;padding:13px 8px 12px;text-align:left;color:var(--t100)}
.mr-ic{width:38px;height:38px;border-radius:13px;display:grid;place-items:center;flex:none;
  background:rgba(133,133,233,.16);color:var(--pale)}
.mr-ic svg{width:18px;height:18px}
.mr-b{min-width:0}
.mr-b > *{display:block}
.mr-t{font-size:15px;font-weight:500;line-height:1.25}
.mr-s{font-size:12px;color:var(--t50);margin-top:2px}
.mr-s b{color:var(--t70);font-weight:500}
.mr-c{font-size:11.5px;color:var(--t50);margin-top:3px}
.mr-c b{color:var(--good);font-weight:500}
.mr-r{text-align:right}
.mr-r > *{display:block}
.mr-v{font-family:var(--f-num);font-size:16px;font-weight:500;letter-spacing:-.01em}

/* ---------- compact three bureau score, with Alerts and Trends attached ---------- */
.scpanel{border-radius:24px;overflow:hidden;position:relative}
.scpanel .sc-head{display:flex;align-items:flex-start;gap:12px;padding:16px 16px 0}
.sc-t{font-family:var(--f-num);font-size:17px;font-weight:500;letter-spacing:-.01em}
.sc-t small{display:block;font-family:var(--f-body);font-size:11.5px;font-weight:400;color:var(--t50);margin-top:2px;letter-spacing:0}
.sc-go{width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.08);display:grid;place-items:center;
  margin-left:auto;color:var(--t70);flex:none}
.sc-go svg{width:13px;height:13px}
.sc-scale{padding:16px 18px 0}
.sc-bar{position:relative;height:13px;border-radius:7px;
  background:linear-gradient(90deg,#FF4242 0%,#FF7A3D 26%,#FFD24D 50%,#A8DE3A 72%,#4DDE00 100%)}
.sc-bar i{position:absolute;top:2px;bottom:2px;width:1.5px;background:rgba(8,8,20,.45);border-radius:1px}
.sc-mark{position:absolute;top:50%;width:0;height:0}
.sc-mark b{position:absolute;left:-2px;top:-11px;width:4px;height:22px;border-radius:3px;display:block;background:#fff;
  box-shadow:0 0 0 2px var(--c),0 0 0 3.4px rgba(8,8,20,.82),0 2px 8px rgba(0,0,0,.55)}
.sc-nums{position:relative;height:13px;margin-top:11px}
.sc-nums span{position:absolute;top:0;font-family:var(--f-num);font-size:10.5px;color:var(--t35);white-space:nowrap}
.sc-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:12px 12px 14px}
.sc-col{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:2px;
  padding:9px 10px;border-radius:15px;color:var(--t100);text-align:left;transition:background .2s}
.sc-col .d{font-size:12px;display:inline-flex;align-items:center;font-family:var(--f-num);font-weight:500}
.sc-col .d.good{color:var(--good)}
.sc-col .d.bad{color:var(--danger)}
.sc-col .ar{width:10px;height:10px;margin-right:2px}
.sc-col .v{font-family:var(--f-num);font-size:26px;font-weight:500;letter-spacing:-.025em;line-height:1}
.sc-col .n{font-size:11px;color:var(--t50);display:flex;align-items:center;gap:5px;white-space:nowrap}
.sc-col .n i{width:6px;height:6px;border-radius:50%;flex:none}
.sc-col[aria-selected="true"]{background:rgba(255,255,255,.07);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.sc-col[aria-selected="true"] .n{color:var(--t100)}
.sc-col:active{transform:scale(.98)}

/* the notched tabs when they hang off the compact widget */
.scpanel .ntabs{--nt-off:rgba(255,255,255,.055)}
.scpanel .nt-row{height:50px}
.scpanel .nt:first-child,.scpanel .nt:last-child{border-top-left-radius:0;border-top-right-radius:0}
.scpanel .nt[aria-selected="true"]{border-radius:18px 18px 0 0}
.scpanel .nt-body{border-radius:0}
.scpanel .nt-body .list{padding-bottom:2px}

/* ---------- collapsible notched tabs ---------- */
.nt .chev{width:13px;height:13px;flex:none;color:var(--t35);margin-left:-3px;
  transition:transform .3s var(--ease),color .2s}
.nt[aria-selected="true"] .chev{transform:rotate(180deg);color:rgba(255,255,255,.8)}
.ntabs.collapsible .nt-wrap{display:grid;grid-template-rows:0fr;transition:grid-template-rows .34s var(--ease)}
.ntabs.collapsible[data-open="1"] .nt-wrap{grid-template-rows:1fr}
.ntabs.collapsible .nt-body{overflow:hidden;min-height:0}
.ntabs.collapsible[data-open="0"] .nt::before{display:none}
.ntabs.collapsible[data-open="0"] .nt{background:var(--nt-off)}
@media (prefers-reduced-motion:reduce){
  .ntabs.collapsible .nt-wrap{transition:none}
  .nt .chev{transition:none}
}
