/* XRP Stack: The Live Statement.
   A white statement sheet on a cool desk, one cobalt band, hairline rules,
   a heavy rule over totals and a double rule under them, tabular figures. */
[hidden]{display:none!important}
:root{
  color-scheme: light;
  --desk:#E6E9EE;
  --paper:#FFFFFF;
  --paper-2:#F5F6F8;
  --ink:#15171C;
  --ink-2:#464B56;
  --ink-3:#656B77;
  --rule:#D6DAE1;
  --rule-strong:#15171C;
  --band:#1D3FA6;
  --band-deep:#15308A;
  --band-ink:#FFFFFF;
  --band-ink-2:#CBD5F4;
  --accent:#1D3FA6;
  --accent-wash:#E8EDFB;
  --up:#0B7A3E;
  --down:#B42318;
  --field:#FFFFFF;
  --field-line:#B9C0CC;
  --field-border:#7F8795;
  --select:#CBD7FA;
  --sheet-shadow:0 1px 2px rgba(21,23,28,.06),0 18px 48px -12px rgba(21,23,28,.18);
  --ease-out:cubic-bezier(0.23,1,0.32,1);
  --radius:14px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme: dark;
    --desk:#0B0D11; --paper:#15181E; --paper-2:#1B1F27;
    --ink:#E8EBF1; --ink-2:#B1B8C5; --ink-3:#8D95A4;
    --rule:#2B313C; --rule-strong:#E8EBF1;
    --band:#2A4FC4; --band-deep:#20409F; --band-ink:#FFFFFF; --band-ink-2:#D4DDF8;
    --accent:#8AA6F7; --accent-wash:#1E2640;
    --up:#4CC38A; --down:#F08A80;
    --field:#1B1F27; --field-line:#3A4150; --field-border:#707889; --select:#2B3B6E;
    --sheet-shadow:0 1px 2px rgba(0,0,0,.4),0 18px 48px -12px rgba(0,0,0,.6);
  }
}
:root[data-theme="dark"]{
  color-scheme: dark;
  --desk:#0B0D11; --paper:#15181E; --paper-2:#1B1F27;
  --ink:#E8EBF1; --ink-2:#B1B8C5; --ink-3:#8D95A4;
  --rule:#2B313C; --rule-strong:#E8EBF1;
  --band:#2A4FC4; --band-deep:#20409F; --band-ink:#FFFFFF; --band-ink-2:#D4DDF8;
  --accent:#8AA6F7; --accent-wash:#1E2640;
  --up:#4CC38A; --down:#F08A80;
  --field:#1B1F27; --field-line:#3A4150; --field-border:#707889; --select:#2B3B6E;
  --sheet-shadow:0 1px 2px rgba(0,0,0,.4),0 18px 48px -12px rgba(0,0,0,.6);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scrollbar-color:var(--rule) var(--desk)}
body{
  margin:0;
  background:var(--desk);
  color:var(--ink);
  font-family:"Archivo",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  font-size:15px;
  line-height:1.5;
  font-variant-numeric:tabular-nums lining-nums;
  -webkit-font-smoothing:antialiased;
  caret-color:var(--accent);
  accent-color:var(--accent);
}
::selection{background:var(--select);color:var(--ink)}
button,input,select{font:inherit;color:inherit}
a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
h1,h2,h3{text-wrap:balance;margin:0}
.up{color:var(--up)} .down{color:var(--down)}

/* ---------- desk and sheet ---------- */
.desk{min-height:100vh;padding:0}
.sheet{background:var(--paper);min-height:100vh;display:flex;flex-direction:column}
@media (min-width:760px){
  .desk{padding:28px 24px 48px}
  .sheet{max-width:1280px;margin:0 auto;min-height:0;border-radius:var(--radius);box-shadow:var(--sheet-shadow);overflow:hidden}
}
.pad{padding-inline:18px}
@media (min-width:760px){.pad{padding-inline:36px}}

/* ---------- cobalt band ---------- */
.band{position:relative;background:var(--band);color:var(--band-ink);display:grid;grid-template-columns:1fr auto;align-items:center;gap:6px 16px;padding:14px 18px calc(14px + 2px);padding-top:calc(14px + env(safe-area-inset-top,0px))}
@media (min-width:760px){.band{padding:18px 36px 20px}}
.mark{display:flex;flex-direction:column;color:inherit;text-decoration:none;line-height:1.1}
.mark-name{font-size:19px;font-weight:750;font-stretch:88%;letter-spacing:-.01em}
.mark-by{font-size:12px;color:var(--band-ink-2);margin-top:3px}
.quote{display:flex;align-items:center;gap:10px;justify-self:end}
.quote-sym{font-size:12px;color:var(--band-ink-2);letter-spacing:.04em}
.quote-px{font-size:17px;font-weight:650}
.quote-chg{font-size:13px;font-weight:600;padding:2px 7px;border-radius:999px;background:rgba(255,255,255,.14)}
.stamp{grid-column:1/-1;margin:0;font-size:12px;color:var(--band-ink-2);text-align:right;min-height:18px}
.live{width:8px;height:8px;border-radius:50%;background:var(--band-ink-2);flex:none;opacity:.6}
.live.on{background:var(--band-ink);opacity:1}
.live.on.ping{animation:live 900ms var(--ease-out) 1}
@keyframes live{0%{box-shadow:0 0 0 0 rgba(255,255,255,.6)}100%{box-shadow:0 0 0 7px rgba(255,255,255,0)}}
.band-btn{width:32px;height:32px;border:0;border-radius:50%;background:rgba(255,255,255,.12);color:var(--band-ink);display:grid;place-items:center;cursor:pointer;padding:0;transition:background-color 160ms ease,transform 160ms var(--ease-out)}
.band-btn:active{transform:scale(.94)}
.band-btn.spin svg{animation:spin .7s linear}
@keyframes spin{to{transform:rotate(360deg)}}
@media (hover:hover) and (pointer:fine){.band-btn:hover{background:rgba(255,255,255,.22)}}
.band :focus-visible{outline-color:var(--band-ink)}

/* printer feed: the thin line that runs under the band while the statement loads */
.feed{position:absolute;left:0;right:0;bottom:0;height:2px;overflow:hidden;opacity:0;transition:opacity 200ms ease}
.feed::before{content:"";position:absolute;inset:0;width:40%;background:var(--band-ink-2);transform:translateX(-100%)}
.sheet[data-state="loading"] .feed{opacity:1}
@media (prefers-reduced-motion:no-preference){.sheet[data-state="loading"] .feed::before{animation:feed 1.1s linear infinite}}
@media (prefers-reduced-motion:reduce){.sheet[data-state="loading"] .feed::before{transform:none;width:100%;opacity:.5}}
@keyframes feed{to{transform:translateX(260%)}}

.notice{margin:0;padding:10px 18px;background:var(--accent-wash);color:var(--ink);font-size:13.5px;border-bottom:1px solid var(--rule)}
@media (min-width:760px){.notice{padding-inline:36px}}

/* ---------- loading skeleton ---------- */
.skeleton{padding-block:28px 40px;display:grid;gap:14px}
.skeleton i{display:block;height:12px;border-radius:3px;background:var(--paper-2)}
.skeleton .sk-label{width:120px}
.skeleton .sk-big{height:64px;width:min(420px,80%);border-radius:6px}
.skeleton .sk-row{height:14px}
.skeleton .sk-rule{height:1px;background:var(--rule);border-radius:0}
.skeleton .sk-chart{height:180px;border-radius:8px;margin-top:10px}
@media (prefers-reduced-motion:no-preference){
  .skeleton i:not(.sk-rule){animation:sk 1.4s ease-in-out infinite}
  @keyframes sk{50%{opacity:.55}}
}

/* the statement prints out of the band when it is ready */
.reveal{animation:print 560ms var(--ease-out) backwards}
@keyframes print{from{clip-path:inset(0 0 100% 0);transform:translateY(-10px)}to{clip-path:inset(0 0 0 0);transform:none}}
@media (prefers-reduced-motion:reduce){
  .reveal{animation:fade 200ms ease backwards}
  @keyframes fade{from{opacity:0}to{opacity:1}}
  .live.on.ping{animation:none}
  .band-btn.spin svg{animation:none}
}

/* ---------- statement sections ---------- */
.section{padding-block:26px;border-top:1px solid var(--rule)}
.section:first-child{border-top:0}
.sec-head{display:flex;align-items:center;justify-content:space-between;gap:10px 16px;flex-wrap:wrap;margin-bottom:14px}
.sec-title{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-2)}
.sec-title .fn{color:var(--accent)}
.muted{color:var(--ink-3)}

/* statement head: ending value + account summary */
.head-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.for-line{margin:0;font-size:12.5px;color:var(--ink-3);overflow-wrap:anywhere}
.value-title{margin-top:10px;font-size:14px;font-weight:600;color:var(--ink-2)}
.value-big{margin:2px 0 0;font-size:clamp(48px,13.5vw,86px);line-height:1;font-weight:640;font-stretch:84%;letter-spacing:-.025em;font-variant-numeric:lining-nums proportional-nums}
.value-big.pending{color:var(--ink-3)}
.value-line{margin:10px 0 0;font-size:14.5px;color:var(--ink-2)}
.value-line b{color:var(--ink);font-weight:650}
.value-line .chg{font-weight:650}
.hide-btn{flex:none;display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:6px 12px;border-radius:999px;border:1px solid var(--rule);background:var(--paper);color:var(--ink-2);font-size:13px;font-weight:600;cursor:pointer;transition:background-color 160ms ease,transform 160ms var(--ease-out)}
.hide-btn:active{transform:scale(.97)}
.hide-btn .slash{display:none}
.hide-btn.on{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.hide-btn.on .slash{display:inline}
@media (hover:hover) and (pointer:fine){.hide-btn:hover{border-color:var(--ink-3)}}

/* ledger tables: summary and holdings */
.ledger{width:100%;border-collapse:collapse}
.ledger caption{text-align:left}
.ledger th,.ledger td{padding:9px 0;border-bottom:1px solid var(--rule);vertical-align:top}
.ledger td{text-align:right;white-space:nowrap;font-weight:600}
.ledger th[scope=row]{text-align:left;font-weight:500;color:var(--ink-2)}
.ledger th[scope=row] small,.ledger td small{display:block;font-size:12px;font-weight:500;color:var(--ink-3);margin-top:1px}
.ledger td small.up{color:var(--up)} .ledger td small.down{color:var(--down)}
.ledger tr.total th,.ledger tr.total td{border-top:1.5px solid var(--rule-strong);border-bottom:3px double var(--rule-strong);font-weight:700;color:var(--ink);padding-block:11px}
.ledger sup,.fn{font-size:.72em;line-height:0;vertical-align:super;font-weight:600;color:var(--accent);margin-left:2px}
.sum-period{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.sum-dates{font-size:12.5px;color:var(--ink-3)}

/* period switch */
.seg{display:inline-flex;border:1px solid var(--rule);border-radius:999px;padding:2px;background:var(--paper-2)}
.seg button{border:0;background:transparent;font-size:12.5px;font-weight:650;color:var(--ink-2);min-height:30px;padding:4px 10px;border-radius:999px;cursor:pointer;transition:background-color 160ms ease,color 160ms ease}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
@media (hover:hover) and (pointer:fine){.seg button:not([aria-pressed="true"]):hover{color:var(--ink)}}
@media (pointer:coarse){.seg button{min-height:36px;padding-inline:11px}}

/* ---------- chart ---------- */
.chart-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.chart{position:relative;height:210px;margin-top:14px}
.chart svg{display:block;width:100%;height:100%;font-family:inherit;touch-action:pan-y;overflow:visible}
.chart svg:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.chart .gl{stroke:var(--rule);stroke-width:1;shape-rendering:crispEdges}
.chart .ax{fill:var(--ink-3);font-size:11px;font-variant-numeric:tabular-nums}
.chart .area{fill:var(--accent);fill-opacity:.08;stroke:none}
.chart .ln{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.chart .ln.est{stroke-dasharray:4 4;stroke-opacity:.65}
.chart .end{fill:var(--accent);stroke:var(--paper);stroke-width:2}
.chart .end.stale{fill:var(--paper);stroke:var(--accent);stroke-width:2;stroke-opacity:.6}
.chart .endlbl{fill:var(--ink);font-size:12px;font-weight:700}
.chart .mark-ln{stroke:var(--ink-3);stroke-width:1;stroke-dasharray:2 3}
.chart .mark-tx{fill:var(--ink-2);font-size:11px;font-weight:600}
.chart .pin-ln{stroke:var(--ink-2);stroke-width:1}
.chart .pin-dot{fill:var(--paper);stroke:var(--ink);stroke-width:1.5}
.chart .pin-tx{fill:var(--ink);font-size:11px;font-weight:700}
.chart .xh{stroke:var(--ink-3);stroke-width:1}
.chart .xhdot{fill:var(--accent);stroke:var(--paper);stroke-width:2}
.chart .hit{fill:transparent}
.chart-empty{position:absolute;inset:0;display:grid;place-items:center;margin:0;padding:0 16px;text-align:center;color:var(--ink-3);font-size:13.5px;background:var(--paper-2);border-radius:8px}
.chart-foot{display:flex;flex-wrap:wrap;gap:4px 18px;margin:10px 0 0;font-size:12px;color:var(--ink-3)}
.chart-foot span{display:inline-flex;align-items:center;gap:6px}
.chart-foot i{display:inline-block;width:18px;border-top:2px solid var(--accent)}
.chart-foot i.est{border-top-style:dashed;opacity:.65}
.tip{position:absolute;z-index:3;pointer-events:none;background:var(--ink);color:var(--paper);border-radius:8px;padding:6px 10px;font-size:12px;line-height:1.35;white-space:nowrap;transform:translate(-50%,calc(-100% - 12px));box-shadow:0 6px 18px -6px rgba(0,0,0,.35)}
.tip.below{transform:translate(-50%,14px)}
.tip b{display:block;font-size:13.5px;font-weight:700}
details.tv{margin-top:12px;font-size:13px}
details.tv summary{cursor:pointer;color:var(--ink-3);width:fit-content}
.tw{max-height:260px;overflow:auto;margin-top:8px;border:1px solid var(--rule);border-radius:10px}
.tw table{width:100%;border-collapse:collapse}
.tw th,.tw td{padding:7px 10px;text-align:right;border-bottom:1px solid var(--rule);white-space:nowrap}
.tw th:first-child,.tw td:first-child{text-align:left}
.tw thead th{position:sticky;top:0;background:var(--paper);font-size:12px;font-weight:600;color:var(--ink-3)}

/* ---------- holdings ---------- */
.hold th[scope=col]{font-size:12px;font-weight:600;color:var(--ink-3);text-align:right;padding:0 0 8px;border-bottom:1px solid var(--rule-strong)}
.hold th[scope=col]:first-child{text-align:left}
.hold th[scope=row]{color:var(--ink);font-weight:650}
.hold td+td,.hold th[scope=col]+th{padding-left:14px}
.ledger.hold .m-only{display:none}
.hold.one .c-share{display:none}
@container (max-width:560px){
  .hold .c-qty,.hold .c-share,.hold .c-basis,.hold .c-gain{display:none}
  .ledger.hold .m-only{display:block}
}
.hold tr.empty td{text-align:left;font-weight:500;color:var(--ink-3);white-space:normal}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:8px 16px;border-radius:10px;border:1px solid var(--field-line);background:var(--paper);color:var(--ink);font-size:14px;font-weight:650;cursor:pointer;transition:background-color 160ms ease,border-color 160ms ease,transform 160ms var(--ease-out)}
.btn:active{transform:scale(.97)}
.btn.primary{background:var(--band);border-color:var(--band);color:var(--band-ink)}
.btn.quiet{border-color:transparent;background:transparent;color:var(--ink-2);padding-inline:6px}
.btn:disabled{opacity:.55;cursor:default;transform:none}
@media (hover:hover) and (pointer:fine){
  .btn:not(.primary):not(.quiet):hover{border-color:var(--ink-3)}
  .btn.primary:hover{background:var(--band-deep);border-color:var(--band-deep)}
  .btn.quiet:hover{color:var(--ink)}
}
.btn-row{display:flex;flex-wrap:wrap;gap:8px}
.link{border:0;background:none;padding:0;color:var(--accent);font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.note-line{margin:10px 0 0;font-size:12.5px;color:var(--ink-3)}
.note-line:empty{display:none}

/* fields: statement form boxes */
.f label,.f .lbl{display:block;margin-bottom:5px;font-size:12.5px;font-weight:600;color:var(--ink-2)}
.box{display:flex;align-items:center;min-height:44px;border:1px solid var(--field-border);border-radius:10px;background:var(--field);padding:0 12px;transition:border-color 160ms ease,box-shadow 160ms ease}
.box:focus-within{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:2px}
.box input,.box select{flex:1;min-width:0;width:100%;border:0;background:transparent;padding:10px 0;font-weight:600;outline:none}
.box .unit{color:var(--ink-3);font-size:13.5px;font-weight:600;padding-left:8px}
.box .pre{color:var(--ink-3);font-weight:600;padding-right:4px}
.box:has(input[aria-invalid="true"]){border-color:var(--down)}
.hint{margin:6px 0 0;font-size:12.5px;color:var(--ink-3)}
.hint:empty{display:none}
.err{margin:8px 0 0;font-size:13.5px;color:var(--down);font-weight:600}
.err:empty{margin:0}

/* first run: the deposit slip */
.start{padding-block:28px 32px;display:grid;gap:18px;max-width:560px}
.start h1{font-size:clamp(28px,7vw,38px);font-weight:700;font-stretch:86%;letter-spacing:-.02em;line-height:1.05}
.start p{margin:0;color:var(--ink-2)}
.big{min-height:76px;border-width:1.5px}
.big input{font-size:clamp(34px,9vw,44px);font-weight:650;font-stretch:88%;letter-spacing:-.02em;padding:8px 0}
.big .unit{font-size:18px}
.start-alt{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:14px}

/* editing holdings in place */
.edit-row{padding-block:16px;border-bottom:1px solid var(--rule)}
.edit-row:first-child{padding-top:4px}
.edit-top{display:flex;align-items:center;gap:10px}
.edit-top .name{flex:1;min-width:0;border:0;border-bottom:1px solid var(--field-border);background:transparent;padding:6px 2px;font-size:16px;font-weight:650;border-radius:0}
.edit-top .name:focus{border-bottom-color:var(--accent)}
.edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:12px;align-items:end}
.kind{display:flex;border:1px solid var(--field-border);border-radius:10px;padding:3px;min-height:44px;background:var(--paper-2)}
.kind button{flex:1;border:0;background:transparent;border-radius:7px;font-size:13.5px;font-weight:650;color:var(--ink-2);cursor:pointer;white-space:nowrap;padding:6px 8px}
.kind button[aria-pressed="true"]{background:var(--paper);color:var(--ink);box-shadow:0 1px 3px rgba(21,23,28,.14)}
.row-out{margin:10px 0 0;font-size:13px;color:var(--ink-2)}
.row-out b{color:var(--ink)}
.row-out.warn{color:var(--down);font-weight:600}
.buy{margin-top:12px;padding:12px;border-radius:10px;background:var(--paper-2);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:end}

.edit-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}
.edit-total{margin:0;font-size:14px;color:var(--ink-2)}
.edit-total b{color:var(--ink)}
.remove{margin-left:auto;flex:none}

/* ---------- target ---------- */
.chips{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
@media (max-width:430px){.chips{grid-template-columns:repeat(3,minmax(0,1fr))}}
.chip{min-height:40px;border-radius:10px;border:1px solid var(--field-line);background:var(--paper);font-size:14px;font-weight:650;cursor:pointer;transition:background-color 160ms ease,transform 160ms var(--ease-out)}
.chip:active{transform:scale(.97)}
.chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.tgt-row{display:flex;align-items:center;gap:14px;margin-top:14px}
.tgt-row input[type=range]{flex:1;min-width:0}
.tgt-row .box{width:132px;flex:none}
.proj{margin-top:20px;display:grid;gap:2px}
.proj-label{margin:0;font-size:14px;color:var(--ink-2)}
.proj-value{margin:0;font-size:clamp(34px,9vw,46px);line-height:1.05;font-weight:640;font-stretch:84%;letter-spacing:-.02em;font-variant-numeric:lining-nums proportional-nums}
.proj-sub{margin:4px 0 0;font-size:14px;color:var(--ink-2)}
input[type=range]{-webkit-appearance:none;appearance:none;height:30px;background:transparent;cursor:pointer;margin:0}
input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(to right,var(--ink) var(--fill,40%),var(--rule) var(--fill,40%))}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;margin-top:-9px;border-radius:50%;background:var(--paper);border:2px solid var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.25)}
input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:var(--rule)}
input[type=range]::-moz-range-progress{height:4px;border-radius:2px;background:var(--ink)}
input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--paper);border:2px solid var(--ink)}

/* ---------- footnotes and foot ---------- */
.notes{margin:0;padding:0 0 0 18px;font-size:12.5px;color:var(--ink-3);display:grid;gap:4px}
.notes li::marker{color:var(--accent);font-weight:700}
.sheet-foot{margin-top:auto;padding-block:20px 26px;border-top:1px solid var(--rule);font-size:12.5px;color:var(--ink-3);display:grid;gap:14px}
.sheet-foot p{margin:0}
.danger-zone{padding-top:14px;border-top:1px dashed var(--rule)}
.danger{border:0;background:none;padding:0;color:var(--ink-3);font-size:12.5px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}

/* ---------- signed out ---------- */
.out{display:grid;gap:28px;padding-block:30px 34px}
@media (min-width:900px){.out{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;align-items:start;padding-block:44px}}
.out h1{font-size:clamp(34px,8.6vw,54px);line-height:1.02;font-weight:700;font-stretch:84%;letter-spacing:-.025em}
.out .lede{margin:14px 0 0;max-width:44ch;font-size:16px;color:var(--ink-2)}
.slip{margin-top:24px;padding-top:20px;border-top:1.5px solid var(--rule-strong);display:grid;gap:12px;max-width:400px}
.slip h2{font-size:17px;font-weight:700}
.slip p{margin:0;font-size:13.5px;color:var(--ink-2)}
.btn.wide{width:100%;min-height:48px;font-size:15px}
.or{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--ink-3)}
.or::before,.or::after{content:"";flex:1;height:1px;background:var(--rule)}
.form-msg{margin:0;font-size:13.5px;color:var(--ink-2)}
.form-msg.bad{color:var(--down);font-weight:600}
.form-msg:empty{margin:0}
.sample{padding-top:26px;border-top:1px solid var(--rule)}
@media (min-width:900px){.sample{padding:0 0 0 44px;border-top:0;border-left:1px solid var(--rule)}}
.sample-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap}
.sample-tag{font-size:11px;font-weight:700;color:var(--accent);letter-spacing:.05em;text-transform:uppercase}
.sample .value-big{font-size:clamp(40px,10vw,56px)}

.toast{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:10;background:var(--ink);color:var(--paper);padding:10px 16px;border-radius:10px;font-size:13.5px;font-weight:600;box-shadow:0 10px 30px -8px rgba(0,0,0,.4);max-width:calc(100% - 32px);text-align:center;animation:toast 220ms var(--ease-out)}
@keyframes toast{from{opacity:0;transform:translate(-50%,8px)}}
@media (prefers-reduced-motion:reduce){.toast{animation:none}}

@media (pointer:coarse){.box input,.box select,.edit-top .name,input[type=email]{font-size:16px}}

/* ---------- plain pages (privacy) ---------- */
.doc{padding-block:28px 40px;max-width:68ch}
.doc h1{font-size:clamp(28px,7vw,40px);line-height:1.05;font-weight:700;font-stretch:86%;letter-spacing:-.02em;margin:0 0 10px}
.doc h2{font-size:17px;margin:26px 0 6px}
.doc p,.doc li{color:var(--ink-2)}
.doc ul{padding-left:20px}
.doc-back{margin-top:28px}
/* Sign in with Apple: black on light, white on dark, per Apple's button rules */
.btn.apple{background:var(--paper);border-color:var(--ink);color:var(--ink)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .btn.apple{background:#fff;border-color:#fff;color:#000}}
:root[data-theme="dark"] .btn.apple{background:#fff;border-color:#fff;color:#000}
@media (hover:hover) and (pointer:fine){.btn.apple:hover{opacity:.88}}
.code-step{display:grid;gap:10px;padding-top:12px;border-top:1px dashed var(--rule)}
.mark-name,.mark-by{white-space:nowrap}
@media (max-width:420px){.quote-sym{display:none}.quote{gap:8px}}

/* ending value with its quantity beside it on wide screens */
.value-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 20px}
.value-qty{margin:0;display:grid;gap:1px;font-size:14.5px;color:var(--ink-2)}
.value-qty b{font-size:17px;color:var(--ink);font-weight:650}
@media (max-width:759px){.value-qty{display:block;margin-top:10px}.value-qty b{font-size:inherit;margin-right:4px}}
.head-actions{margin-top:18px}
.slip-total{margin-top:2px}
.slip-total tr.total th,.slip-total tr.total td{font-size:16px}
::placeholder{color:var(--ink-3);opacity:1}

/* a statement prints like one: the band, the rules, no controls */
@media print{
  body,.desk{background:#fff}
  .desk{padding:0}
  .sheet{box-shadow:none;border-radius:0;max-width:none}
  .band{print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .band-btn,.hide-btn,.seg,.head-actions,.buy,#holdEditLink,.chips,.tgt-row,details.tv,.sheet-foot,.notice,.toast,.feed{display:none!important}
  .reveal{animation:none}
}

/* very narrow phones: the band stacks so nothing runs off the edge */
@media (max-width:359px){.band{grid-template-columns:1fr}.quote{justify-self:start}.stamp{text-align:left}}

/* each account in the editor is a fieldset */
fieldset.edit-row{margin:0;padding-inline:0;border:0;border-bottom:1px solid var(--rule);min-width:0}

/* delete confirmation */
dialog.confirm{border:0;border-radius:var(--radius);padding:24px;width:min(440px,calc(100% - 32px));background:var(--paper);color:var(--ink);box-shadow:var(--sheet-shadow)}
dialog.confirm::backdrop{background:rgba(11,13,17,.55)}
dialog.confirm h2{font-size:19px;line-height:1.25;margin:0 0 8px}
dialog.confirm p{margin:0 0 16px;color:var(--ink-2);font-size:14.5px}
dialog.confirm .btn-row{justify-content:flex-end;margin-top:6px}
.btn.danger-btn{background:var(--down);border-color:var(--down);color:var(--paper)}
@media (hover:hover) and (pointer:fine){.btn.danger-btn:hover{filter:brightness(.92)}}
@media (prefers-reduced-motion:no-preference){dialog.confirm[open]{animation:pop 200ms var(--ease-out)}}
@keyframes pop{from{opacity:0;transform:scale(.97)}}

/* chart labels read over the line and the gridlines through a thin paper halo, not a block */
.chart .mark-tx,.chart .pin-tx,.chart .endlbl{paint-order:stroke;stroke:var(--paper);stroke-width:3px;stroke-linejoin:round}
.chart path.mark-tx{stroke:none}
.hold th[scope=col]{white-space:nowrap}

/* ---------- the statement as a dashboard ---------- */
.dash-col:empty{display:none}
.lead{padding-block:24px 22px;border-top:0}
.dash > #sumSec{border-top:0;padding-top:0}
#holdSec,#tgtSec{container-type:inline-size}
@container (max-width:820px){.hold .c-share{display:none}}
@container (max-width:400px){.chips{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* tablets: value and summary side by side, everything else full width */
@media (min-width:760px) and (max-width:1039px){
  .dash{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);column-gap:0}
  .dash > .section{grid-column:1/-1}
  .dash > #valueSec{grid-column:1;padding-block:32px}
  .dash > #sumSec{grid-column:2;padding-top:32px;padding-left:12px}
}
/* wide screens: value, chart and holdings on the left; summary, target and notes on the right */
@media (min-width:1040px){
  .dash{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:start}
  .dash-side{border-left:1px solid var(--rule);align-self:stretch}
  .dash-col > .section:first-child{border-top:0}
  .dash-main > #valueSec{padding-block:30px 24px}
  .dash-side > #sumSec{padding-top:30px}
  .dash-col .pad{padding-inline:32px}
}

/* Google's own button renders into this box */
.gsi{min-height:44px;display:flex;justify-content:center}
