/* ==========================================================================
   GSA Dashboard — styles
   Palette inherits the Gold Sniper Academy tokens (dark + gold) from index.html
   and adds the dashboard shell, cards, tiles and chart chrome on top of them.
   Themes/accents in Settings only re-map the tokens declared in :root below.
   ========================================================================== */

:root{
  /* dashboard-specific tokens, defaulting to the academy palette */
  --d-bg:#0b0c10;
  --d-panel:#08090d;
  --d-surface:#14161d;
  --d-surface-2:#1b1e28;
  --d-surface-3:#222634;
  --d-border:#2b2f3d;
  --d-border-lit:#3a4054;
  --d-text:#eef0f6;
  --d-dim:#9199ae;
  --d-faint:#6a7288;
  --d-accent:#dcaa4d;
  --d-accent-lit:#f3c876;
  --d-accent-soft:rgba(220,170,77,0.14);
  --d-accent-line:rgba(220,170,77,0.34);
  --d-ok:#4ead80;
  --d-ok-lit:#63d29b;
  --d-ok-soft:rgba(78,173,128,0.14);
  --d-bad:#e07567;
  --d-bad-lit:#ff8c7c;
  --d-bad-soft:rgba(224,117,103,0.14);
  --d-r:14px;
  --d-shadow:0 12px 30px -16px rgba(0,0,0,0.72);
  --d-sidebar:212px;
}
/* ---------------- shell ---------------- */
.dsh{display:flex;min-height:100vh;min-height:100dvh;background:var(--d-bg);color:var(--d-text)}
.gsa-d .dsh *,
.gsa-d.dsh *{box-sizing:border-box}
.gsa-d .dsh svg,
.gsa-d.dsh svg{width:16px;height:16px;flex:none}
.gsa-d .dside,
.gsa-d.dside{
  position:fixed;top:0;left:0;bottom:0;width:var(--d-sidebar);z-index:60;
  background:var(--d-panel);border-right:1px solid var(--d-border);
  display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;
  padding:calc(14px + env(safe-area-inset-top)) 0 calc(18px + env(safe-area-inset-bottom));
}
.gsa-d .dside::-webkit-scrollbar,
.gsa-d.dside::-webkit-scrollbar{width:6px}
.gsa-d .dside::-webkit-scrollbar-thumb,
.gsa-d.dside::-webkit-scrollbar-thumb{background:var(--d-surface-3);border-radius:9px}
.gsa-d .dlogo,
.gsa-d.dlogo{
  display:flex;align-items:center;gap:9px;padding:4px 16px 16px;margin-bottom:4px;
  font-family:"Archivo",ui-sans-serif,sans-serif;font-weight:800;font-size:16px;letter-spacing:-.01em;
  color:var(--d-text);background:none;border:0;width:100%;text-align:left;cursor:pointer;
}
.gsa-d .dlogo svg,
.gsa-d.dlogo svg{width:22px;height:22px;flex:none;color:var(--d-accent)}
.gsa-d .dlogo small,
.gsa-d.dlogo small{display:block;font:500 10.5px/1.2 "IBM Plex Mono",monospace;color:var(--d-faint);letter-spacing:.08em;text-transform:uppercase}
.gsa-d .dgrp,
.gsa-d.dgrp{font:600 10px/1 "IBM Plex Mono",monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--d-faint);padding:14px 18px 7px}
.gsa-d .dnav,
.gsa-d.dnav{
  display:flex;align-items:center;gap:10px;width:calc(100% - 16px);margin:1px 8px;
  padding:8px 10px;border-radius:9px;border:0;background:none;color:var(--d-dim);
  font:500 13.5px/1.3 "IBM Plex Sans",ui-sans-serif,sans-serif;text-align:left;cursor:pointer;
  transition:background .15s,color .15s;position:relative;
}
.gsa-d .dnav svg,
.gsa-d.dnav svg{width:16px;height:16px;flex:none;opacity:.85}
.gsa-d .dnav:hover,
.gsa-d.dnav:hover{background:var(--d-surface);color:var(--d-text)}
.gsa-d .dnav.on,
.gsa-d.dnav.on{background:var(--d-accent-soft);color:var(--d-accent-lit);font-weight:600}
.gsa-d .dnav.on::before,
.gsa-d.dnav.on::before{content:"";position:absolute;left:-8px;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--d-accent)}
.gsa-d .dnav .lk,
.gsa-d.dnav .lk{margin-left:auto;opacity:.55;width:13px;height:13px}
.gsa-d .dside .sidefoot,
.gsa-d.dside .sidefoot{margin-top:auto;padding:14px 18px 0;font:11.5px/1.5 "IBM Plex Mono",monospace;color:var(--d-faint)}
.gsa-d .dmain,
.gsa-d.dmain{flex:1;min-width:0;margin-left:var(--d-sidebar)}
.gsa-d .dwrap,
.gsa-d.dwrap{max-width:1280px;margin:0 auto;padding:22px calc(24px + env(safe-area-inset-right)) 70px calc(24px + env(safe-area-inset-left))}
.gsa-d .dbar,
.gsa-d.dbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:22px}
.gsa-d .dbar .greet,
.gsa-d.dbar .greet{font-family:"Archivo",sans-serif;font-weight:800;font-size:20px;letter-spacing:-.015em}
.gsa-d .dbar .sub,
.gsa-d.dbar .sub{font-size:12.5px;color:var(--d-dim);margin-top:2px}
.gsa-d .dbar .sp,
.gsa-d.dbar .sp{flex:1;min-width:8px}
.gsa-d .dclock,
.gsa-d.dclock{
  display:flex;flex-direction:column;align-items:flex-end;gap:1px;padding:6px 12px;border-radius:10px;
  border:1px solid var(--d-border);background:var(--d-surface);
}
.gsa-d .dclock b,
.gsa-d.dclock b{font:600 14px/1 "IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;color:var(--d-text)}
.gsa-d .dclock span,
.gsa-d.dclock span{font:10.5px/1 "IBM Plex Mono",monospace;color:var(--d-faint);letter-spacing:.06em}
.gsa-d .drank,
.gsa-d.drank{
  display:flex;align-items:center;gap:9px;padding:6px 12px;border-radius:10px;cursor:pointer;
  border:1px solid var(--d-ok);background:var(--d-ok-soft);color:var(--d-text);text-align:left;
}
.gsa-d .drank svg,
.gsa-d.drank svg{width:17px;height:17px;color:var(--d-ok-lit)}
.gsa-d .drank b,
.gsa-d.drank b{display:block;font:700 12.5px/1.25 "IBM Plex Sans",sans-serif}
.gsa-d .drank span,
.gsa-d.drank span{display:block;font:11px/1.2 "IBM Plex Mono",monospace;color:var(--d-ok-lit)}
/* ---------------- page header ---------------- */
.gsa-d .dhead,
.gsa-d.dhead{margin-bottom:20px}
.gsa-d .dhead h1,
.gsa-d.dhead h1{font-family:"Archivo",sans-serif;font-weight:800;font-size:clamp(23px,3.2vw,31px);letter-spacing:-.02em;margin:0}
.gsa-d .dhead p,
.gsa-d.dhead p{margin:6px 0 0;color:var(--d-dim);font-size:14px;max-width:74ch}
.gsa-d .dhead .row,
.gsa-d.dhead .row{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap}
.gsa-d .dhead .row .sp,
.gsa-d.dhead .row .sp{flex:1;min-width:8px}
/* ---------------- buttons ---------------- */
.gsa-d .btn,
.gsa-d.btn{
  background:var(--d-surface);border:1px solid var(--d-border);color:var(--d-dim);border-radius:9px;
  padding:7px 12px;font:600 12.5px/1.35 "IBM Plex Sans",sans-serif;display:inline-flex;align-items:center;gap:7px;
  cursor:pointer;transition:color .15s,border-color .15s,background .15s;
}
.gsa-d .btn:hover,
.gsa-d.btn:hover{color:var(--d-text);border-color:var(--d-border-lit)}
.gsa-d .btn svg,
.gsa-d.btn svg{width:14px;height:14px}
.gsa-d .btn.pri,
.gsa-d.btn.pri{background:var(--d-accent);border-color:var(--d-accent);color:#12100a;font-weight:700}
.gsa-d .btn.pri:hover,
.gsa-d.btn.pri:hover{background:var(--d-accent-lit);border-color:var(--d-accent-lit);color:#12100a}
.gsa-d .btn.on,
.gsa-d.btn.on{background:var(--d-accent-soft);border-color:var(--d-accent);color:var(--d-accent-lit)}
.gsa-d .btn.danger,
.gsa-d.btn.danger{border-color:rgba(224,117,103,.5);color:var(--d-bad-lit)}
.gsa-d .btn.danger:hover,
.gsa-d.btn.danger:hover{border-color:var(--d-bad);background:var(--d-bad-soft)}
.gsa-d .btn.wide,
.gsa-d.btn.wide{width:100%;justify-content:center;padding:11px 14px;font-size:13.5px}
.gsa-d .btn[disabled],
.gsa-d.btn[disabled]{opacity:.45;cursor:not-allowed}
.gsa-d .btn.sm,
.gsa-d.btn.sm{padding:5px 9px;font-size:11.5px}
.gsa-d .seg,
.gsa-d.seg{display:inline-flex;gap:6px;flex-wrap:wrap}
.gsa-d .seg button,
.gsa-d.seg button{
  background:var(--d-surface-2);border:1px solid var(--d-border);color:var(--d-dim);border-radius:999px;
  padding:6px 13px;font:600 12.5px/1.3 "IBM Plex Sans",sans-serif;cursor:pointer;transition:.15s;
}
.gsa-d .seg button:hover,
.gsa-d.seg button:hover{color:var(--d-text);border-color:var(--d-border-lit)}
.gsa-d .seg button[aria-pressed="true"],
.gsa-d.seg button[aria-pressed="true"]{background:var(--d-accent-soft);border-color:var(--d-accent);color:var(--d-accent-lit);box-shadow:0 0 0 1px var(--d-accent-line)}
.gsa-d .seg.ok button[aria-pressed="true"],
.gsa-d.seg.ok button[aria-pressed="true"]{background:var(--d-ok-soft);border-color:var(--d-ok);color:var(--d-ok-lit);box-shadow:none}
.gsa-d .seg.bad button[aria-pressed="true"],
.gsa-d.seg.bad button[aria-pressed="true"]{background:var(--d-bad-soft);border-color:var(--d-bad);color:var(--d-bad-lit);box-shadow:none}
/* ---------------- cards & grid ---------------- */
.gsa-d .dcard,
.gsa-d.dcard{
  background:var(--d-surface);border:1px solid var(--d-border);border-radius:var(--d-r);
  padding:16px 17px;box-shadow:var(--d-shadow);position:relative;min-width:0;
}
.gsa-d .dcard.top-ok,
.gsa-d.dcard.top-ok{border-top:2px solid var(--d-ok)}
.gsa-d .dcard.top-acc,
.gsa-d.dcard.top-acc{border-top:2px solid var(--d-accent)}
.gsa-d .dcard.top-bad,
.gsa-d.dcard.top-bad{border-top:2px solid var(--d-bad)}
.gsa-d .dcard > .ch,
.gsa-d.dcard > .ch{display:flex;align-items:center;gap:10px;margin-bottom:11px}
.gsa-d .dcard > .ch .sp,
.gsa-d.dcard > .ch .sp{flex:1;min-width:4px}
.gsa-d .lab,
.gsa-d.lab{
  font:600 10.5px/1.2 "IBM Plex Mono",monospace;letter-spacing:.13em;text-transform:uppercase;color:var(--d-faint);
  display:inline-flex;align-items:center;gap:6px;
}
.gsa-d .lab svg,
.gsa-d.lab svg{width:13px;height:13px}
.gsa-d .big,
.gsa-d.big{font-family:"Archivo",sans-serif;font-weight:800;font-size:30px;letter-spacing:-.03em;line-height:1.05;font-variant-numeric:tabular-nums}
.gsa-d .big.sm,
.gsa-d.big.sm{font-size:23px}
.gsa-d .cap,
.gsa-d.cap{font-size:12.2px;color:var(--d-faint);line-height:1.5;margin-top:9px}
.gsa-d .pos,
.gsa-d.pos{color:var(--d-ok-lit)}
.gsa-d .neg,
.gsa-d.neg{color:var(--d-bad-lit)}
.gsa-d .acc,
.gsa-d.acc{color:var(--d-accent-lit)}
.gsa-d .mono,
.gsa-d.mono{font-family:"IBM Plex Mono",ui-monospace,monospace;font-variant-numeric:tabular-nums}
.gsa-d .grid,
.gsa-d.grid{display:grid;gap:14px;margin-bottom:14px}
.gsa-d .g2,
.gsa-d.g2{grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr))}
.gsa-d .g3,
.gsa-d.g3{grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr))}
.gsa-d .g4,
.gsa-d.g4{grid-template-columns:repeat(auto-fit,minmax(min(215px,100%),1fr))}
.gsa-d .g6,
.gsa-d.g6{grid-template-columns:repeat(auto-fit,minmax(min(140px,100%),1fr))}
.gsa-d .split,
.gsa-d.split{display:grid;gap:14px;grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);margin-bottom:14px;align-items:start}
.gsa-d .tile,
.gsa-d.tile{background:var(--d-surface-2);border:1px solid var(--d-border);border-radius:11px;padding:11px 12px;min-width:0}
.gsa-d .tile b,
.gsa-d.tile b{display:block;font-family:"Archivo",sans-serif;font-weight:800;font-size:19px;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-bottom:2px}
.gsa-d .tile span,
.gsa-d.tile span{font:600 10.5px/1.2 "IBM Plex Mono",monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--d-faint)}
.gsa-d .pill,
.gsa-d.pill{
  display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;
  font:600 10.5px/1.5 "IBM Plex Mono",monospace;letter-spacing:.07em;text-transform:uppercase;
  border:1px solid var(--d-border);background:var(--d-surface-2);color:var(--d-dim);
}
.gsa-d .pill.ok,
.gsa-d.pill.ok{border-color:rgba(78,173,128,.45);background:var(--d-ok-soft);color:var(--d-ok-lit)}
.gsa-d .pill.bad,
.gsa-d.pill.bad{border-color:rgba(224,117,103,.45);background:var(--d-bad-soft);color:var(--d-bad-lit)}
.gsa-d .pill.acc,
.gsa-d.pill.acc{border-color:var(--d-accent-line);background:var(--d-accent-soft);color:var(--d-accent-lit)}
.gsa-d .pill i,
.gsa-d.pill i{width:6px;height:6px;border-radius:50%;background:currentColor;display:block}
.gsa-d .pill i.blink,
.gsa-d.pill i.blink{animation:dpulse 1.6s ease-in-out infinite}
@keyframes dpulse{0%,100%{opacity:1}50%{opacity:.25}}
.gsa-d .track,
.gsa-d.track{height:6px;background:var(--d-surface-3);border-radius:99px;overflow:hidden;margin:10px 0 0}
.gsa-d .track>i,
.gsa-d.track>i{display:block;height:100%;background:linear-gradient(90deg,var(--d-accent),var(--d-accent-lit));border-radius:99px;transition:width .3s}
.gsa-d .track.ok>i,
.gsa-d.track.ok>i{background:linear-gradient(90deg,var(--d-ok),var(--d-ok-lit))}
.gsa-d .track.dot,
.gsa-d.track.dot{background:repeating-linear-gradient(90deg,var(--d-surface-3) 0 6px,transparent 6px 10px)}
/* ---------------- forms ---------------- */
.gsa-d .fld,
.gsa-d.fld{display:flex;flex-direction:column;gap:6px;min-width:0}
.gsa-d .fld > label,
.gsa-d.fld > label{font:600 10.5px/1.2 "IBM Plex Mono",monospace;letter-spacing:.11em;text-transform:uppercase;color:var(--d-faint)}
.gsa-d .fld input,
.gsa-d .fld textarea,
.gsa-d .fld select,
.gsa-d.fld input,
.gsa-d.fld textarea,
.gsa-d.fld select{
  background:var(--d-surface-2);border:1px solid var(--d-border);color:var(--d-text);border-radius:9px;
  padding:9px 11px;font:400 13.5px/1.45 "IBM Plex Sans",sans-serif;width:100%;
}
.gsa-d .fld input.mono,
.gsa-d .fld input[type=number],
.gsa-d.fld input.mono,
.gsa-d.fld input[type=number]{font-family:"IBM Plex Mono",monospace}
.gsa-d .fld textarea,
.gsa-d.fld textarea{resize:vertical;min-height:74px}
.gsa-d .fld input:focus,
.gsa-d .fld textarea:focus,
.gsa-d .fld select:focus,
.gsa-d.fld input:focus,
.gsa-d.fld textarea:focus,
.gsa-d.fld select:focus{outline:none;border-color:var(--d-accent);box-shadow:0 0 0 2px var(--d-accent-soft)}
.gsa-d .fld .hint,
.gsa-d.fld .hint{font-size:11.5px;color:var(--d-faint)}
.gsa-d .formgrid,
.gsa-d.formgrid{display:grid;gap:13px;grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr))}
.gsa-d .formgrid .full,
.gsa-d.formgrid .full{grid-column:1/-1}
.gsa-d .chk,
.gsa-d.chk{display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid var(--d-border);border-radius:10px;background:var(--d-surface-2);cursor:pointer;font-size:13.5px;text-align:left;color:var(--d-text);width:100%}
.gsa-d .chk:hover,
.gsa-d.chk:hover{border-color:var(--d-border-lit)}
.gsa-d .chk .bx,
.gsa-d.chk .bx{width:17px;height:17px;flex:none;border:1.6px solid var(--d-border-lit);border-radius:5px;display:grid;place-items:center;color:transparent;font-size:11px;font-weight:800}
.gsa-d .chk.on .bx,
.gsa-d.chk.on .bx{background:var(--d-accent);border-color:var(--d-accent);color:#12100a}
.gsa-d .chk.on,
.gsa-d.chk.on{border-color:var(--d-accent-line)}
.gsa-d .chk.on span.tx,
.gsa-d.chk.on span.tx{color:var(--d-dim);text-decoration:line-through}
/* ---------------- tables ---------------- */
.gsa-d .dtable,
.gsa-d.dtable{width:100%;border-collapse:collapse;font-size:13px}
.gsa-d .dtable th,
.gsa-d.dtable th{
  text-align:left;font:600 10.5px/1.2 "IBM Plex Mono",monospace;letter-spacing:.11em;text-transform:uppercase;
  color:var(--d-faint);padding:8px 9px;border-bottom:1px solid var(--d-border);white-space:nowrap;
}
.gsa-d .dtable th button,
.gsa-d.dtable th button{background:none;border:0;color:inherit;font:inherit;letter-spacing:inherit;cursor:pointer;padding:0}
.gsa-d .dtable td,
.gsa-d.dtable td{padding:9px;border-bottom:1px solid var(--d-border);vertical-align:middle}
.gsa-d .dtable tbody tr,
.gsa-d.dtable tbody tr{cursor:pointer;transition:background .12s}
.gsa-d .dtable tbody tr:hover,
.gsa-d.dtable tbody tr:hover{background:var(--d-surface-2)}
.gsa-d .dtable tr.win td:first-child,
.gsa-d.dtable tr.win td:first-child{box-shadow:inset 3px 0 0 var(--d-ok)}
.gsa-d .dtable tr.loss td:first-child,
.gsa-d.dtable tr.loss td:first-child{box-shadow:inset 3px 0 0 var(--d-bad)}
.gsa-d .dtable tr.be td:first-child,
.gsa-d.dtable tr.be td:first-child{box-shadow:inset 3px 0 0 var(--d-faint)}
.gsa-d .tblwrap,
.gsa-d.tblwrap{overflow-x:auto;margin:0 -3px}
.gsa-d .iconbtn2,
.gsa-d.iconbtn2{background:none;border:0;color:var(--d-faint);cursor:pointer;padding:4px;border-radius:6px;line-height:0}
.gsa-d .iconbtn2:hover,
.gsa-d.iconbtn2:hover{color:var(--d-text);background:var(--d-surface-3)}
.gsa-d .iconbtn2 svg,
.gsa-d.iconbtn2 svg{width:15px;height:15px}
/* ---------------- calendar ---------------- */
.gsa-d .calgrid,
.gsa-d.calgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.gsa-d .calhd,
.gsa-d.calhd{font:600 10.5px/1 "IBM Plex Mono",monospace;letter-spacing:.09em;text-transform:uppercase;color:var(--d-faint);text-align:center;padding:5px 0}
.gsa-d .calcell,
.gsa-d.calcell{
  aspect-ratio:1/.82;border:1px solid var(--d-border);border-radius:9px;background:var(--d-surface-2);
  display:flex;flex-direction:column;padding:6px 7px;font-size:11.5px;color:var(--d-faint);cursor:default;min-height:52px;
  overflow:hidden;min-width:0;
}
.gsa-d .calcell .v,
.gsa-d.calcell .v{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gsa-d .calcell.blank,
.gsa-d.calcell.blank{background:none;border-color:transparent}
.gsa-d .calcell b,
.gsa-d.calcell b{font:600 11.5px/1 "IBM Plex Mono",monospace}
.gsa-d .calcell .v,
.gsa-d.calcell .v{margin-top:auto;font:700 12px/1.2 "IBM Plex Mono",monospace}
.gsa-d .calcell.win,
.gsa-d.calcell.win{background:var(--d-ok-soft);border-color:rgba(78,173,128,.45)}
.gsa-d .calcell.win .v,
.gsa-d.calcell.win .v{color:var(--d-ok-lit)}
.gsa-d .calcell.loss,
.gsa-d.calcell.loss{background:var(--d-bad-soft);border-color:rgba(224,117,103,.45)}
.gsa-d .calcell.loss .v,
.gsa-d.calcell.loss .v{color:var(--d-bad-lit)}
.gsa-d .calcell.has,
.gsa-d.calcell.has{cursor:pointer}
.gsa-d .calcell.has:hover,
.gsa-d.calcell.has:hover{border-color:var(--d-border-lit)}
.gsa-d .calcell.today,
.gsa-d.calcell.today{box-shadow:0 0 0 2px var(--d-accent)}
.gsa-d .legend,
.gsa-d.legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:11.5px;color:var(--d-faint);align-items:center}
.gsa-d .legend i,
.gsa-d.legend i{width:11px;height:11px;border-radius:4px;display:inline-block;margin-right:6px;vertical-align:-1px}
/* ---------------- charts ---------------- */
.gsa-d .chartbox,
.gsa-d.chartbox{width:100%;position:relative}
.gsa-d .chartbox svg,
.gsa-d.chartbox svg{display:block;width:100%;height:auto;overflow:visible}
.gsa-d .axl,
.gsa-d.axl{font:10px "IBM Plex Mono",monospace;fill:var(--d-faint)}
.gsa-d .gridline,
.gsa-d.gridline{stroke:var(--d-border);stroke-width:1;stroke-dasharray:3 4}
.gsa-d .tipdot,
.gsa-d.tipdot{opacity:0;transition:opacity .12s}
.gsa-d .chartbox:hover .tipdot,
.gsa-d.chartbox:hover .tipdot{opacity:1}
.gsa-d .ttip,
.gsa-d.ttip{
  position:absolute;pointer-events:none;background:var(--d-surface-3);border:1px solid var(--d-border-lit);
  border-radius:8px;padding:6px 9px;font:11.5px/1.45 "IBM Plex Mono",monospace;color:var(--d-text);
  white-space:nowrap;z-index:5;transform:translate(-50%,-115%);opacity:0;transition:opacity .12s;box-shadow:var(--d-shadow);
}
.gsa-d .dot,
.gsa-d.dot{width:9px;height:9px;border-radius:3px;flex:none;display:inline-block}
.gsa-d .lrow,
.gsa-d.lrow{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:6px 0;font-size:12.7px;border-bottom:1px solid var(--d-border)}
.gsa-d .lrow:last-child,
.gsa-d.lrow:last-child{border-bottom:0}
.gsa-d .lrow .nm,
.gsa-d.lrow .nm{min-width:78px;font-weight:600}
.gsa-d .lrow .bb,
.gsa-d.lrow .bb{flex:1;height:6px;border-radius:99px;background:var(--d-surface-3);overflow:hidden;min-width:40px}
.gsa-d .lrow .bb>i,
.gsa-d.lrow .bb>i{display:block;height:100%;border-radius:99px}
.gsa-d .lrow .pc,
.gsa-d.lrow .pc{min-width:38px;text-align:right;color:var(--d-faint);font-family:"IBM Plex Mono",monospace}
.gsa-d .lrow .vv,
.gsa-d.lrow .vv{min-width:62px;text-align:right;font-family:"IBM Plex Mono",monospace;font-weight:600}
/* ---------------- misc blocks ---------------- */
.gsa-d .banner,
.gsa-d.banner{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:11px 14px;border-radius:11px;margin-bottom:16px;
  border:1px solid var(--d-accent-line);background:var(--d-accent-soft);font-size:13px;color:var(--d-text);
}
.gsa-d .banner .sp,
.gsa-d.banner .sp{flex:1;min-width:8px}
.gsa-d .locked,
.gsa-d.locked{max-width:560px;margin:36px auto;text-align:center}
.gsa-d .locked .ring,
.gsa-d.locked .ring{
  width:80px;height:80px;border-radius:50%;margin:0 auto 18px;display:grid;place-items:center;position:relative;
  border:1px solid var(--d-border);background:var(--d-surface);color:var(--d-accent);
}
.gsa-d .locked .ring svg,
.gsa-d.locked .ring svg{width:34px;height:34px}
.gsa-d .locked .ring b,
.gsa-d.locked .ring b{
  position:absolute;right:-2px;bottom:-2px;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;
  background:var(--d-surface-3);border:1px solid var(--d-border-lit);color:var(--d-dim);font-size:12px;
}
.gsa-d .locked h1,
.gsa-d.locked h1{font-family:"Archivo",sans-serif;font-weight:800;font-size:28px;margin:12px 0 8px}
.gsa-d .locked p,
.gsa-d.locked p{color:var(--d-dim);font-size:14px;margin:0 auto 20px;max-width:46ch}
.gsa-d .lockrow,
.gsa-d.lockrow{display:flex;align-items:center;gap:11px;padding:11px 13px;border-bottom:1px solid var(--d-border);text-align:left;font-size:13.5px}
.gsa-d .lockrow:last-child,
.gsa-d.lockrow:last-child{border-bottom:0}
.gsa-d .lockrow svg,
.gsa-d.lockrow svg{width:17px;height:17px;color:var(--d-faint);flex:none}
.gsa-d .lockrow .lk,
.gsa-d.lockrow .lk{margin-left:auto;color:var(--d-faint);font-size:12px}
.gsa-d .empty,
.gsa-d.empty{text-align:center;padding:30px 16px;color:var(--d-faint);font-size:13.5px}
.gsa-d .empty svg,
.gsa-d.empty svg{width:30px;height:30px;margin-bottom:10px;color:var(--d-border-lit)}
.gsa-d .insight,
.gsa-d.insight{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-bottom:1px solid var(--d-border)}
.gsa-d .insight:last-of-type,
.gsa-d.insight:last-of-type{border-bottom:0}
.gsa-d .insight .ib,
.gsa-d.insight .ib{width:32px;height:32px;border-radius:9px;flex:none;display:grid;place-items:center;background:var(--d-accent-soft);color:var(--d-accent-lit);border:1px solid var(--d-accent-line)}
.gsa-d .insight .ib svg,
.gsa-d.insight .ib svg{width:16px;height:16px}
.gsa-d .insight b,
.gsa-d.insight b{display:block;font-size:13.8px;margin-bottom:3px}
.gsa-d .insight p,
.gsa-d.insight p{margin:0;font-size:12.6px;color:var(--d-dim);line-height:1.5}
.gsa-d .insight .chip,
.gsa-d.insight .chip{margin-left:auto;flex:none;font:700 12.5px "IBM Plex Mono",monospace;padding:4px 9px;border-radius:8px;background:var(--d-surface-2);border:1px solid var(--d-border)}
.gsa-d .advice,
.gsa-d.advice{margin:2px 0 12px;padding:10px 12px;border-radius:9px;border:1px solid rgba(78,173,128,.4);background:var(--d-ok-soft);font-size:12.8px;color:var(--d-text)}
.gsa-d .linkbtn,
.gsa-d.linkbtn{background:none;border:0;color:var(--d-accent-lit);font:600 12.3px "IBM Plex Sans",sans-serif;cursor:pointer;padding:4px 0 0}
.gsa-d .linkbtn:hover,
.gsa-d.linkbtn:hover{text-decoration:underline}
.gsa-d .rankrow,
.gsa-d.rankrow{display:flex;align-items:center;gap:11px;flex-wrap:wrap;padding:9px 11px;border-radius:9px;font-size:13px;border:1px solid transparent}
.gsa-d .rankrow.cur,
.gsa-d.rankrow.cur{border-color:var(--d-accent);background:var(--d-accent-soft)}
.gsa-d .rankrow .no,
.gsa-d.rankrow .no{font:700 12px "IBM Plex Mono",monospace;color:var(--d-faint);width:22px;flex:none}
.gsa-d .rankrow .nm,
.gsa-d.rankrow .nm{font-weight:700;min-width:104px}
.gsa-d .rankrow .xp,
.gsa-d.rankrow .xp{font:11.5px "IBM Plex Mono",monospace;color:var(--d-faint);min-width:112px}
.gsa-d .rankrow .fl,
.gsa-d.rankrow .fl{color:var(--d-dim);font-size:12.3px;flex:1;min-width:0}
.gsa-d .achv,
.gsa-d.achv{border:1px solid var(--d-border);border-radius:11px;padding:11px 12px;background:var(--d-surface-2);font-size:12.6px}
.gsa-d .achv.lock,
.gsa-d.achv.lock{opacity:.5}
.gsa-d .achv .em,
.gsa-d.achv .em{font-size:19px;line-height:1}
.gsa-d .achv b,
.gsa-d.achv b{display:block;font-size:13px;margin:6px 0 3px}
.gsa-d .achv p,
.gsa-d.achv p{margin:0;color:var(--d-dim);font-size:11.8px;line-height:1.45}
.gsa-d .achv .rar,
.gsa-d.achv .rar{margin-top:8px;display:flex;align-items:center;gap:7px;font:600 10px "IBM Plex Mono",monospace;letter-spacing:.09em;text-transform:uppercase}
.gsa-d .wire,
.gsa-d.wire{max-height:168px;overflow-y:auto;font-size:12.6px}
.gsa-d .wire .w,
.gsa-d.wire .w{display:flex;gap:9px;padding:7px 0;border-bottom:1px solid var(--d-border);align-items:flex-start}
.gsa-d .wire .w:last-child,
.gsa-d.wire .w:last-child{border-bottom:0}
.gsa-d .wire .w i,
.gsa-d.wire .w i{width:7px;height:7px;border-radius:50%;margin-top:6px;flex:none}
.gsa-d .wire .w small,
.gsa-d.wire .w small{color:var(--d-faint);font-family:"IBM Plex Mono",monospace;font-size:11px}
.gsa-d .ticker,
.gsa-d.ticker{overflow:hidden;border:1px solid var(--d-border);border-radius:10px;background:var(--d-surface);padding:8px 0;margin-bottom:16px}
.gsa-d .ticker .tk,
.gsa-d.ticker .tk{display:flex;gap:26px;white-space:nowrap;animation:dscroll 34s linear infinite;font:12.5px "IBM Plex Mono",monospace;padding-left:100%}
@keyframes dscroll{from{transform:translateX(0)}to{transform:translateX(-100%)}}
.gsa-d .globe,
.gsa-d.globe{aspect-ratio:16/9;border-radius:11px;border:1px solid var(--d-border);background:radial-gradient(circle at 50% 45%,#0f1522,#05070c 70%);position:relative;overflow:hidden}
.gsa-d .globe canvas,
.gsa-d.globe canvas{display:block;width:100%;height:100%}
.gsa-d .globe .gctl,
.gsa-d.globe .gctl{position:absolute;top:10px;right:10px;display:flex;gap:6px}
.gsa-d .globe .glg,
.gsa-d.globe .glg{position:absolute;bottom:10px;right:12px;font:11px "IBM Plex Mono",monospace;color:var(--d-dim);text-align:right;line-height:1.7}
.gsa-d .globe .glg i,
.gsa-d.globe .glg i{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px}
.gsa-d .globe .gtag,
.gsa-d.globe .gtag{position:absolute;top:10px;left:12px;font:600 11px "IBM Plex Mono",monospace;letter-spacing:.15em;color:var(--d-accent-lit)}
.gsa-d .tvbox,
.gsa-d.tvbox{border:1px solid var(--d-border);border-radius:11px;overflow:hidden;background:var(--d-surface-2);min-height:420px}
.gsa-d .tvbox iframe,
.gsa-d.tvbox iframe{display:block;width:100%;border:0}
.gsa-d .embed16,
.gsa-d.embed16{position:relative;padding-top:56.25%;border-radius:11px;overflow:hidden;border:1px solid var(--d-border);background:#000}
.gsa-d .embed16 iframe,
.gsa-d.embed16 iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.gsa-d .swatch,
.gsa-d.swatch{border:1px solid var(--d-border);border-radius:11px;padding:9px;background:var(--d-surface-2);cursor:pointer;text-align:left;color:var(--d-text)}
.gsa-d .swatch.on,
.gsa-d.swatch.on{border-color:var(--d-accent);box-shadow:0 0 0 1px var(--d-accent-line)}
.gsa-d .swatch .mock,
.gsa-d.swatch .mock{height:40px;border-radius:7px;padding:7px;display:flex;flex-direction:column;gap:4px;justify-content:center}
.gsa-d .swatch .mock i,
.gsa-d.swatch .mock i{height:4px;border-radius:99px;display:block}
.gsa-d .swatch small,
.gsa-d.swatch small{display:block;margin-top:7px;font:600 11.5px "IBM Plex Sans",sans-serif}
.gsa-d .accdot,
.gsa-d.accdot{width:30px;height:30px;border-radius:50%;border:2px solid transparent;cursor:pointer;display:grid;place-items:center;color:#fff;font-size:13px;font-weight:800}
.gsa-d .accdot.on,
.gsa-d.accdot.on{border-color:var(--d-text)}
.gsa-d .toast,
.gsa-d.toast{
  position:fixed;left:calc(var(--d-sidebar) + 20px);bottom:22px;z-index:90;display:flex;align-items:center;gap:12px;
  background:var(--d-surface-3);border:1px solid var(--d-border-lit);border-radius:11px;padding:11px 14px;
  box-shadow:0 18px 40px -18px #000;font-size:13px;overflow:hidden;
}
.gsa-d .toast .bar,
.gsa-d.toast .bar{position:absolute;left:0;bottom:0;height:2px;background:var(--d-accent);animation:ddrain 5s linear forwards}
@keyframes ddrain{from{width:100%}to{width:0}}
.gsa-d .modalbg,
.gsa-d.modalbg{position:fixed;inset:0;z-index:95;background:rgba(3,5,9,.72);backdrop-filter:blur(4px);display:grid;place-items:center;padding:20px}
.gsa-d .modal,
.gsa-d.modal{background:var(--d-surface);border:1px solid var(--d-border-lit);border-radius:15px;padding:19px 20px;max-width:660px;width:100%;max-height:86vh;overflow-y:auto;box-shadow:0 30px 70px -30px #000}
.gsa-d .modal h3,
.gsa-d.modal h3{font-family:"Archivo",sans-serif;font-weight:800;font-size:19px;margin:0}
.gsa-d .modal .mh,
.gsa-d.modal .mh{display:flex;align-items:center;gap:11px;margin-bottom:15px}
.gsa-d .modal .mh .sp,
.gsa-d.modal .mh .sp{flex:1}
.gsa-d .sidepanel,
.gsa-d.sidepanel{position:fixed;top:0;right:0;bottom:0;width:min(430px,100%);z-index:96;background:var(--d-surface);border-left:1px solid var(--d-border-lit);overflow-y:auto;padding:20px;box-shadow:-30px 0 60px -30px #000}
.gsa-d .accrow,
.gsa-d.accrow{border:1px solid var(--d-border);border-radius:10px;margin-bottom:8px;overflow:hidden;background:var(--d-surface-2)}
.gsa-d .accrow > button,
.gsa-d.accrow > button{width:100%;display:flex;align-items:center;gap:10px;padding:11px 13px;background:none;border:0;color:var(--d-text);font:600 13.3px "IBM Plex Sans",sans-serif;text-align:left;cursor:pointer}
.gsa-d .accrow .body,
.gsa-d.accrow .body{padding:0 13px 12px;font-size:12.9px;color:var(--d-dim);line-height:1.6}
.gsa-d .dfoot,
.gsa-d.dfoot{margin-top:26px;padding-top:14px;border-top:1px solid var(--d-border);font-size:11.8px;color:var(--d-faint);display:flex;gap:14px;flex-wrap:wrap}
/* ---------------- mobile ---------------- */
.gsa-d .dtoggle,
.gsa-d.dtoggle{display:none}
.gsa-d .dscrim,
.gsa-d.dscrim{display:none}
@media(max-width:900px){
.gsa-d .split,
.gsa-d.split{grid-template-columns:1fr}
.gsa-d .dside,
.gsa-d.dside{transform:translateX(-100%);transition:transform .22s ease;width:250px;--d-sidebar:250px}
.gsa-d .dsh.open .dside,
.gsa-d.dsh.open .dside{transform:none}
.gsa-d .dmain,
.gsa-d.dmain{margin-left:0}
.gsa-d .dwrap,
.gsa-d.dwrap{padding:14px 16px calc(64px + env(safe-area-inset-bottom))}
.gsa-d .dtoggle,
.gsa-d.dtoggle{
    display:inline-flex;align-items:center;gap:8px;background:var(--d-surface);border:1px solid var(--d-border);
    color:var(--d-text);border-radius:9px;padding:8px 11px;font:600 12.5px "IBM Plex Sans",sans-serif;cursor:pointer;
  }
.gsa-d .dtoggle svg,
.gsa-d.dtoggle svg{width:16px;height:16px}
.gsa-d .dsh.open .dscrim,
.gsa-d.dsh.open .dscrim{display:block;position:fixed;inset:0;z-index:55;background:rgba(3,5,9,.6)}
.gsa-d .toast,
.gsa-d.toast{left:16px;right:16px}
.gsa-d .big,
.gsa-d.big{font-size:26px}
.gsa-d .calcell,
.gsa-d.calcell{padding:4px 4px;min-height:46px;font-size:10.5px}
.gsa-d .calcell b,
.gsa-d.calcell b{font-size:10.5px}
.gsa-d .calcell .v,
.gsa-d.calcell .v{font-size:9.5px}
.gsa-d .calhd,
.gsa-d.calhd{font-size:9px}
.gsa-d .rankrow .nm,
.gsa-d.rankrow .nm{min-width:0}
.gsa-d .rankrow .xp,
.gsa-d.rankrow .xp{min-width:0}
.gsa-d .rankrow .fl,
.gsa-d.rankrow .fl{flex-basis:100%}
.gsa-d .dbar .greet,
.gsa-d.dbar .greet{font-size:17px}
.gsa-d .formgrid,
.gsa-d.formgrid{grid-template-columns:1fr}


}
@media print{
.gsa-d .dside,
.gsa-d.dside,
.gsa-d .dbar,
.gsa-d.dbar,
.gsa-d .dtoggle,
.gsa-d.dtoggle{display:none}
.gsa-d .dmain,
.gsa-d.dmain{margin-left:0}

}

/* standalone section labels sit on their own line */
.gsa-d div.lab{display:flex}
.gsa-d .fld > label{display:block}
