/* English home page (www.gsdaq.com), LV2C 2026-10-07.
   Desk (default) is the GSDAQ dark brand; Edition is the newspaper style, chosen in the page's display settings.
   Chart steps (--viz-*) were validated for colour-vision deficiency and 3:1 contrast on each style's surface:
   Desk #1aae7a/#bf3460/#5b86e8 on #14162a, Edition #2e9a6b/#a52a2a/#2f5aa8 on #F4F1EA. The neon accent is for text only. */
:root{
  --bg:#0b0c15;--bg2:#0f1120;--panel:#14162a;--panel2:#1c1f38;--ring:#262a4a;--ring2:#323760;
  --ink:#eef0fb;--ink2:#a6acca;--muted:#8a91b3;
  --accent:#05EA97;--accent2:#7aa2ff;--up-text:#05EA97;--down-text:#ff5c7a;--warn:#f5b84a;
  --btn-bg:#05EA97;--btn-ink:#04120c;
  --viz-up:#1aae7a;--viz-down:#bf3460;--viz-blue:#5b86e8;--viz-mid:#4c5175;--viz-faint:#3b4064;--grid:#20233b;--axis:#3a3f63;
  --card-bg:linear-gradient(180deg,#14162a,#121427);--card-border:1px solid var(--ring);--card-top:0px solid transparent;
  --r:18px;--r2:12px;--max:1240px;--gut:clamp(16px,4vw,40px);
  --sans:-apple-system,"SF Pro Text","Apple SD Gothic Neo","Noto Sans KR",Inter,system-ui,sans-serif;
  --display:-apple-system,"SF Pro Display","Apple SD Gothic Neo",Inter,system-ui,sans-serif;
  --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;
  --big:var(--mono);--h-weight:800;--h-track:-.025em;
  color-scheme:dark;
}
*{box-sizing:border-box}html{background:var(--bg);scroll-padding-top:120px}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 var(--sans);-webkit-font-smoothing:antialiased;word-break:keep-all;overflow-wrap:break-word}
/* keep-all keeps Korean words whole, but Japanese has no spaces, so it would make each heading one unbreakable word.
   Japanese headings and labels keep short phrases whole instead (<ja-ph> from tools/site/phrase.mjs and phrase-ja.js). */
html:lang(ja) body{word-break:normal;word-break:auto-phrase;line-break:strict}ja-ph{white-space:nowrap}
a{color:inherit}.n{font-family:var(--mono);font-variant-numeric:tabular-nums;word-break:normal;letter-spacing:-.01em}
.big{font-family:var(--big);font-weight:700;letter-spacing:-.02em;word-break:normal}
.up{color:var(--up-text)}.down{color:var(--down-text)}.flat{color:var(--ink2)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gut)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:999px;font:600 15px/1 var(--sans);text-decoration:none;border:1px solid transparent;cursor:pointer;white-space:nowrap}
.btn-primary{background:var(--btn-bg);color:var(--btn-ink)}.btn-primary:hover{filter:brightness(1.08)}
.btn-ghost{background:transparent;border-color:var(--ring2);color:var(--ink)}.btn-ghost:hover{background:var(--panel2)}
.btn-apple{background:#000;color:#fff}:focus-visible{outline:2px solid var(--accent2);outline-offset:2px}
.hd{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--ring)}
@supports not (backdrop-filter:blur(1px)){.hd{background:var(--bg)}}
.hd .wrap{display:flex;align-items:center;gap:28px;height:64px}
.logo{display:flex;align-items:center;gap:10px;font:800 19px/1 var(--display);letter-spacing:-.01em;text-decoration:none}
.logo img{width:30px;height:auto}.nav{display:flex;gap:22px;font-size:14.5px;color:var(--ink2)}
.nav a{text-decoration:none}.nav a:hover{color:var(--ink)}
.hd-r{margin-left:auto;display:flex;align-items:center;gap:10px}.lang{font-size:13px;color:var(--muted);margin-right:2px}
.lang a{text-decoration:none;padding:4px}.lang b{color:var(--accent)}
.set{position:relative}
.set-btn{width:44px;height:44px;border-radius:50%;border:1px solid var(--ring2);background:transparent;color:var(--ink);display:grid;place-items:center;cursor:pointer}
.set-btn svg{width:20px;height:20px}
.set-panel{position:absolute;right:0;top:54px;width:300px;background:var(--panel);border:1px solid var(--ring2);border-radius:16px;padding:16px;box-shadow:0 20px 50px rgba(0,0,0,.35);z-index:30}
.set-panel fieldset{border:0;margin:0;padding:0;display:grid;gap:8px}
.set-panel legend{font:700 12px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.opt{display:grid;grid-template-columns:56px minmax(0,1fr);gap:12px;align-items:center;padding:10px;border-radius:12px;border:1px solid var(--ring);cursor:pointer}
.opt:has(input:checked){border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.opt input{position:absolute;opacity:0;pointer-events:none}.opt:has(input:focus-visible){outline:2px solid var(--accent2);outline-offset:2px}
.sw{height:40px;border-radius:8px;display:grid;place-items:center;font-weight:700;font-size:15px}
.sw.desk{background:#0b0c15;color:#05EA97;font-family:var(--mono);border:1px solid #323760}
.sw.edition{background:#F4F1EA;color:#1B1A17;font-family:"Iowan Old Style","Charter",Georgia,serif;border:1px solid #CFC7B8}
.opt b{display:block;font-size:14.5px}.opt span{font-size:12.5px;color:var(--muted)}
.set-note{font-size:12px;color:var(--muted);margin:10px 0 0}
.set-lang{margin-top:14px;padding-top:14px;border-top:1px solid var(--ring)}
.set-h{font:700 12px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 10px}
.seg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.seg a{min-height:44px;display:grid;place-items:center;padding:0 4px;border:1px solid var(--ring);border-radius:12px;text-decoration:none;font-size:14px;font-weight:600;color:var(--ink)}
.seg a:hover{border-color:var(--ring2)}.seg a:focus-visible{outline:2px solid var(--accent2);outline-offset:2px}
.seg a[aria-current]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.tape{border-bottom:1px solid var(--ring);background:var(--bg2);position:relative;overflow:hidden;display:flex;align-items:stretch}
.tape-ctl{flex:none;display:flex;align-items:center;gap:10px;padding:0 14px 0 var(--gut);background:var(--bg2);z-index:1;border-right:1px solid var(--ring);font:600 11px/1 var(--sans);letter-spacing:.08em;color:var(--muted);text-transform:uppercase}
.tape-ctl button{font:600 11px/1 var(--sans);background:var(--panel);color:var(--ink2);border:1px solid var(--ring);border-radius:6px;padding:5px 8px;cursor:pointer;letter-spacing:.04em}
.live{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}
.tape-view{overflow:hidden;flex:1;min-width:0}.tape-track{display:flex;width:max-content;will-change:transform}
.tk{display:flex;align-items:center;gap:10px;padding:10px 22px;border-right:1px solid var(--ring);font-size:13px;white-space:nowrap}
.tk .lb{color:var(--ink2)}.tk .spark{width:54px;height:18px}
.tk .spark.up{color:var(--viz-up)}.tk .spark.down{color:var(--viz-down)}
.hero{padding:48px 0 36px}.hero .wrap{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:44px;align-items:start}
.kicker{display:flex;align-items:center;gap:10px;font:700 12px/1.3 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.kicker .stamp{color:var(--muted);letter-spacing:.06em}
h1{font:var(--h-weight) clamp(32px,3.5vw,46px)/1.08 var(--display);letter-spacing:var(--h-track);margin:16px 0 16px;text-wrap:balance}
h1 .soft{color:var(--ink2)}.dek{color:var(--ink2);font-size:17px;margin:0 0 22px}
.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:24px}
.tile{background:var(--panel);border:1px solid var(--ring);border-radius:var(--r2);padding:12px 14px;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:end}
.tile .lb{grid-column:1/-1;font-size:12px;color:var(--muted)}.tile .val{font-size:24px;line-height:1.1}
.tile .dl{font:600 12.5px/1.2 var(--mono)}.tile .spark{width:88px;height:30px;grid-row:2/4;grid-column:2;align-self:center}
.tile .spark.up{color:var(--viz-up)}.tile .spark.down{color:var(--viz-down)}.tile .spark.blue{color:var(--viz-blue)}
.cta-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.cta-note{font-size:13px;color:var(--muted);margin-top:12px}
.board{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.card{background:var(--card-bg);border:var(--card-border);border-top:var(--card-top);border-radius:var(--r);padding:18px;position:relative;min-width:0}
.card-h{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 10px}
.card-h h3{margin:0;font-size:13px;font-weight:600;color:var(--ink2)}.card-h .as{font-weight:500;color:var(--muted);font-size:12px;text-align:right}
.tbtn{font:600 12px/1 var(--sans);color:var(--accent2);background:none;border:0;padding:6px 0 6px 8px;cursor:pointer;white-space:nowrap}
.c-gate{grid-column:span 4}.c-fg{grid-column:span 2}.c-fed{grid-column:span 3}.c-cal{grid-column:span 3}
.gate-row{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.gate-on{font:800 42px/1 var(--display);color:var(--accent);letter-spacing:-.02em}.gate-sub{color:var(--ink2);font-size:14px}
.gate-strip{display:flex;gap:2px;margin-top:10px;height:10px}.gate-strip span{flex:1;border-radius:2px;background:var(--viz-up)}
.gate-strip span.off{background:var(--viz-down)}
.cap{display:flex;justify-content:space-between;gap:10px;font-size:11.5px;color:var(--muted);margin-top:6px;flex-wrap:wrap}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink2);margin:8px 0 2px}
.legend i{display:inline-block;width:14px;height:2px;margin-right:6px;vertical-align:4px;border-radius:1px}
.legend i.sq{width:9px;height:9px;border-radius:2px;vertical-align:0}
.legend i.tri-up{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:9px solid var(--viz-up);background:none!important;border-radius:0;vertical-align:0}
.legend i.tri-down{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:9px solid var(--viz-down);background:none!important;border-radius:0;vertical-align:0}
.k-up{background:var(--viz-up)}.k-down{background:var(--viz-down)}.k-blue{background:var(--viz-blue)}.k-mid{background:var(--viz-mid)}.k-faint{background:var(--viz-faint)}
.fg{display:grid;justify-items:center;text-align:center}.fg .v-gauge{width:100%;max-width:180px;height:auto}
.fg-v{font-size:30px;margin-top:-34px;line-height:1}.fg-z{font-size:13px;color:var(--ink2);text-transform:capitalize;margin-top:4px}
.fed-rows{display:grid;gap:12px}.fed-row{display:grid;grid-template-columns:62px minmax(0,1fr) 54px;gap:10px;align-items:center;font-size:13px}
.fed-row .ir{text-align:right;color:var(--ink2)}.fed-k{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink2);margin-top:10px}
.cal{list-style:none;margin:0;padding:0}
.cal li{display:grid;grid-template-columns:84px minmax(0,1fr) auto;gap:10px;padding:7px 0;border-top:1px solid var(--ring);font-size:13.5px;align-items:baseline}
.cal li:first-child{border-top:0;padding-top:2px}
.cal .when{color:var(--ink2);font-size:12.5px}.cal .today{color:var(--accent)}
.cal .d{font:600 12px/1 var(--mono);color:var(--accent2)}.chart{width:100%;min-width:0;min-height:40px}
/* A chart drawn at an earlier, wider width must not hold its column open: cap it so the container can shrink and redraw. */
.v-svg{display:block;overflow:visible;font-family:var(--sans);max-width:100%;height:auto}.v-grid{stroke:var(--grid);stroke-width:1}
.v-axis{stroke:var(--axis);stroke-width:1}.v-tick{fill:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}
.v-lab{fill:var(--ink2);font-size:12.5px}.v-val{fill:var(--ink);font-size:12.5px;font-family:var(--mono);font-variant-numeric:tabular-nums}
.v-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.v-line.thin{stroke-width:1.5}
.v-area{stroke:none;opacity:.12}.v-dot{stroke:var(--panel);stroke-width:2}
.v-line.up{stroke:var(--viz-up)}.v-line.down{stroke:var(--viz-down)}.v-line.blue{stroke:var(--viz-blue)}.v-line.mid{stroke:var(--viz-mid)}
.v-area.up,.v-dot.up,.v-bar.up,.v-pt.up,.v-seg.up{fill:var(--viz-up)}
.v-area.down,.v-dot.down,.v-bar.down,.v-pt.down,.v-seg.down{fill:var(--viz-down)}
.v-area.blue,.v-dot.blue,.v-bar.blue,.v-seg.blue{fill:var(--viz-blue)}.v-dot.mid,.v-bar.mid,.v-seg.mid{fill:var(--viz-mid)}
.v-pt.faint{fill:var(--viz-faint)}.v-pt.up,.v-pt.down{stroke:var(--panel);stroke-width:2;paint-order:stroke}
.v-band.lo{fill:color-mix(in srgb,var(--viz-up) 9%,transparent)}.v-band.mi{fill:color-mix(in srgb,var(--viz-mid) 14%,transparent)}
.v-band.hi{fill:color-mix(in srgb,var(--viz-down) 10%,transparent)}.v-band.xhi{fill:color-mix(in srgb,var(--viz-down) 18%,transparent)}
.v-ref{stroke:var(--ink2);stroke-width:1;stroke-dasharray:4 4;opacity:.7}.v-reft{fill:var(--ink2);font-size:11px}
.v-hair{stroke:var(--ink2);stroke-width:1}.v-hit,.v-hitbar,.v-hitpt{fill:transparent;cursor:crosshair}
.v-hit:focus-visible{outline:none;stroke:var(--accent2);stroke-width:2}.v-mark{cursor:default;outline:none}
.v-mark.hot .v-bar,.v-mark.hot .v-pt,.v-seg.hot{filter:brightness(1.25)}
.v-mark:focus-visible .v-hitbar,.v-mark:focus-visible .v-hitpt{stroke:var(--accent2);stroke-width:1.5}
.v-plabel{fill:var(--ink);font:600 11.5px var(--mono)}.v-in{fill:#fff;font:700 12px var(--sans)}
.v-in.dark{fill:#0b0c15}
.v-ev.in{fill:var(--viz-up)}.v-ev.out{fill:var(--panel);stroke:var(--ink2);stroke-width:2}.v-ev.rd{fill:var(--viz-blue)}
.v-stem{stroke:var(--axis);stroke-width:1}.v-elabel{fill:var(--ink);font:600 11.5px var(--mono)}
.v-now{stroke:var(--accent);stroke-width:1.5}.v-arc{fill:none;stroke-linecap:butt}
.v-arc.z1{stroke:var(--viz-down)}.v-arc.z2{stroke:color-mix(in srgb,var(--viz-down) 50%,var(--viz-mid))}.v-arc.z3{stroke:var(--viz-mid)}
.v-arc.z4{stroke:color-mix(in srgb,var(--viz-up) 50%,var(--viz-mid))}.v-arc.z5{stroke:var(--viz-up)}
.v-knob{fill:var(--ink);stroke:var(--panel);stroke-width:3}
.vtip{position:fixed;z-index:60;pointer-events:none;background:var(--ink);color:var(--bg);border-radius:10px;padding:8px 10px;font:12.5px/1.4 var(--sans);box-shadow:0 10px 30px rgba(0,0,0,.35);max-width:260px}
.vtip[hidden]{display:none}.vtip-h{font-weight:600;opacity:.7;margin-bottom:4px}
.vtip-r{display:flex;align-items:center;gap:8px}.vtip-r b{font-family:var(--mono);font-variant-numeric:tabular-nums}
.vtip-r span{opacity:.75}.key{display:inline-block;width:12px;height:2px;border-radius:1px}
.key.up{background:var(--viz-up)}.key.down{background:var(--viz-down)}.key.blue{background:var(--viz-blue)}.key.mid{background:var(--viz-mid)}
.v-table{margin-top:10px;overflow-x:auto;border-top:1px solid var(--ring)}.v-table[hidden]{display:none}
.v-table table{border-collapse:collapse;width:100%;font-size:12.5px}
.v-table th,.v-table td{text-align:left;padding:6px 8px 6px 0;border-bottom:1px solid var(--ring);white-space:nowrap;font-weight:500}
.v-table td{font-family:var(--mono);font-variant-numeric:tabular-nums}.v-table thead th{color:var(--muted);font-weight:600}
section.blk{padding:64px 0;border-top:1px solid var(--ring)}
.sec-hd{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:24px;flex-wrap:wrap}
.sec-hd h2{font:var(--h-weight) clamp(26px,2.6vw,34px)/1.15 var(--display);letter-spacing:var(--h-track);margin:6px 0 0;text-wrap:balance}
.sec-hd p{margin:8px 0 0;color:var(--ink2)}.eyebrow{font:700 12px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--accent2)}
.link{color:var(--accent);text-decoration:none;font-weight:600;font-size:14.5px}.link:hover{text-decoration:underline;text-underline-offset:3px}
.mix{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:16px;margin-bottom:16px}
.mix .legend b{color:var(--ink);font-family:var(--mono)}.sig{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.sig-col{background:var(--panel);border:1px solid var(--ring);border-radius:var(--r);overflow:hidden;min-width:0}
.sig-col header{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--ring)}
.sig-col header h3{margin:0;font-size:16px}.sig-col header .cnt{margin-left:auto;font-size:13px;color:var(--muted)}
.dot{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:6px;font-size:13px;font-weight:800}
.dot.long{background:color-mix(in srgb,var(--viz-up) 18%,transparent);color:var(--up-text)}
.dot.short{background:color-mix(in srgb,var(--viz-down) 18%,transparent);color:var(--down-text)}.rows{list-style:none;margin:0;padding:0}
.row{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1.5fr) minmax(0,1fr) auto;gap:14px;align-items:center;padding:12px 18px;border-top:1px solid var(--ring)}
.row:first-child{border-top:0}.sym{font:700 15px/1.2 var(--mono)}
.nm{display:block;font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.why{font-size:13.5px;color:var(--ink2);line-height:1.35}.minis{display:grid;gap:5px;font-size:11px;color:var(--muted)}
.mini{display:grid;grid-template-columns:28px minmax(0,1fr);gap:6px;align-items:center}.mini>span:first-child{white-space:nowrap}
html:not(:lang(en)) .minis>.mini{grid-template-columns:40px minmax(0,1fr)}
.track{position:relative;height:6px;background:var(--panel2);border-radius:3px}.track b{position:absolute;top:0;bottom:0;border-radius:3px}
.track.div::before{content:"";position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:var(--axis)}.px{text-align:right;font-size:14px}
.px small{display:block;font-size:12.5px}.locked{position:relative}
.locked .rows,.locked .tbl{filter:blur(5px);opacity:.55;pointer-events:none;user-select:none}
.unlock{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--panel) 90%,transparent) 55%)}
.sig-foot{margin-top:14px;font-size:13px;color:var(--muted)}.sepa{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:16px}
.tblwrap{overflow-x:auto}.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{font-size:12px;font-weight:600;color:var(--muted);text-align:left;padding:12px 14px;border-bottom:1px solid var(--ring);white-space:nowrap}
.tbl td{padding:11px 14px;border-top:1px solid var(--ring);vertical-align:middle}.tbl tr:first-child td{border-top:0}
.tbl .r{font:700 14px/1 var(--mono);color:var(--accent2);width:44px}.tbl .num{text-align:right}
.pil{display:flex;gap:3px;align-items:end;height:24px}.pil i{display:block;width:7px;border-radius:2px 2px 0 0;background:var(--viz-blue)}
.pil i.lo{background:var(--viz-mid)}.mom{display:flex;align-items:center;gap:8px;min-width:110px}
.mom .track{flex:1}
.track .over{position:absolute;right:-7px;top:-3px;width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:7px solid var(--viz-blue)}
.zone{font-size:12.5px;color:var(--ink2);white-space:nowrap}.side{display:grid;gap:16px;align-content:start}
.sepa-extra{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:12px;padding:0 18px 18px}
.sepa-extra .card{background:transparent;border:0;border-top:1px solid var(--ring);border-radius:0;padding:12px 0 0}
.k-z1{background:var(--viz-blue)}.k-z2{background:color-mix(in srgb,var(--viz-blue) 60%,var(--panel2))}.k-z3{background:color-mix(in srgb,var(--viz-blue) 30%,var(--panel2))}
.v-seg.z1{fill:var(--viz-blue)}.v-seg.z2{fill:color-mix(in srgb,var(--viz-blue) 60%,var(--panel2))}.v-seg.z3{fill:color-mix(in srgb,var(--viz-blue) 30%,var(--panel2))}
.wleft{display:grid;gap:12px;align-content:start}.minis-grid{display:grid;gap:10px}
.mrow{display:grid;grid-template-columns:minmax(0,1fr) 92px 64px;gap:10px;align-items:center;font-size:13px;padding-top:8px;border-top:1px solid var(--ring)}
.mrow:first-child{border-top:0;padding-top:0}
.mrow .lb{color:var(--ink2)}.mrow .lb b{display:block;color:var(--ink);font-family:var(--big);font-size:18px;font-weight:600}
.mrow .spark{width:92px;height:30px;color:var(--viz-blue)}.mrow .v{text-align:right;font:600 12.5px var(--mono)}
.log{list-style:none;margin:0;padding:4px 18px 12px}
.log li{display:grid;grid-template-columns:62px 18px minmax(0,1fr);gap:10px;padding:10px 0;border-top:1px solid var(--ring);font-size:14px;align-items:start}
.log li:first-child{border-top:0}.log time{font:12.5px/1.4 var(--mono);color:var(--muted)}
.mark{width:12px;height:12px;border-radius:3px;margin-top:4px}
.mark.in{background:var(--viz-up)}.mark.out{border:2px solid var(--ink2)}
.log .s{display:block;color:var(--muted);font-size:12.5px}.bul{display:grid;gap:10px;font-size:13px}
.bul-row{display:grid;grid-template-columns:108px minmax(0,1fr) 60px;gap:10px;align-items:center}.bul-row .lb{color:var(--ink2)}
.bul-row .v{text-align:right;font-family:var(--mono)}.bul .track{height:10px;border-radius:2px}
.bul .track b{border-radius:2px;background:var(--viz-blue)}.bul .ref{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink)}
.segs{display:flex;gap:3px}.segs i{flex:1;height:10px;border-radius:2px;background:var(--viz-blue)}
.segs i.off{background:var(--panel2)}.wgrid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}
.s3{grid-column:span 3}.s4{grid-column:span 4}.s5{grid-column:span 5}.s6{grid-column:span 6}.s7{grid-column:span 7}.s8{grid-column:span 8}.s12{grid-column:span 12}
.w .sub{font-size:12.5px;color:var(--muted);margin:-4px 0 8px}
.w .head-num{display:flex;align-items:baseline;gap:10px;margin-bottom:6px;flex-wrap:wrap}.w .head-num .big{font-size:28px;line-height:1.1}
.w .head-num small{font:600 12.5px var(--mono)}.src{font-size:11.5px;color:var(--muted);margin:8px 0 0}
.heat{width:100%;border-collapse:separate;border-spacing:2px;font-size:12.5px}
.heat th{font-weight:600;color:var(--muted);text-align:left;padding:4px 6px;white-space:nowrap}.heat th.c{text-align:center}
.heat td{padding:0;text-align:center}.heat .cell{display:block;border-radius:4px;padding:6px 4px;font:600 12px/1.2 var(--mono);color:var(--ink)}
.heat .cell.on{color:#fff}.heat .sp{width:84px;height:22px;display:block}
.heat .sp.up{color:var(--viz-up)}.heat .sp.down{color:var(--viz-down)}
.season{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}.cmp{display:grid;gap:8px;font-size:12.5px}
.cmp-row{display:grid;grid-template-columns:72px minmax(0,1fr) 46px;gap:8px;align-items:center}.cmp-row .v{text-align:right;font-family:var(--mono)}
.cmp .track b{background:var(--viz-blue)}.cmp .track b.dim{background:var(--viz-mid)}
.wire{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:32px}
.wire li{padding:14px 0;border-top:1px solid var(--ring)}.wire a{text-decoration:none;display:grid;grid-template-columns:52px minmax(0,1fr);gap:12px}
.wire time{font:12.5px/1.6 var(--mono);color:var(--muted)}.wire .h{font-weight:600;line-height:1.35}
.wire a:hover .h{text-decoration:underline;text-underline-offset:3px}.wire .src2{display:block;font-size:12.5px;color:var(--muted);margin-top:3px}
.wire-grid{display:grid;grid-template-columns:minmax(0,8fr) minmax(0,4fr);gap:24px;align-items:start}.car-ctl{display:flex;gap:8px}
.car-ctl button{width:44px;height:44px;border-radius:50%;border:1px solid var(--ring2);background:var(--panel);color:var(--ink);font-size:18px;cursor:pointer}
.car-ctl button:disabled{opacity:.35;cursor:default}
.ctrack{position:relative;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(300px,calc((100% - 48px)/3.3));gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gut);padding:2px var(--gut) 18px;margin:0 calc(var(--gut) * -1);scrollbar-width:thin;scrollbar-color:var(--ring2) transparent}
.post{scroll-snap-align:start;text-decoration:none;display:block;min-width:0}
.post .cov{aspect-ratio:16/10;border-radius:var(--r);overflow:hidden;background:var(--panel2);position:relative}
.post .cov img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.post:hover .cov img{transform:scale(1.035)}
.post .cov::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}
.post .meta{font-size:12.5px;color:var(--muted);margin:14px 0 6px}.post .meta b{color:var(--accent2);font-weight:600}
.post h3{margin:0;font:700 17.5px/1.3 var(--display);letter-spacing:-.01em}
.post p{margin:8px 0 0;color:var(--ink2);font-size:14px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.typo{display:grid;align-content:end;height:100%;padding:18px;background:radial-gradient(120% 90% at 85% 10%,rgba(5,234,151,.22),transparent 55%),linear-gradient(160deg,#171a33,#0d0f1e);color:#eef0fb}
.typo span{font:800 24px/1.1 var(--display);letter-spacing:-.02em}
.typo small{color:var(--accent);font:700 11px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;margin-bottom:10px}
.start{padding:72px 0;border-top:1px solid var(--ring);background:radial-gradient(60% 80% at 80% 30%,color-mix(in srgb,var(--accent) 10%,transparent),transparent 60%),var(--bg2)}
.start .wrap{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:48px;align-items:center}
.start h2{font:var(--h-weight) clamp(30px,3.2vw,42px)/1.1 var(--display);letter-spacing:var(--h-track);margin:10px 0 14px;text-wrap:balance}
.gets{list-style:none;padding:0;margin:0 0 28px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 24px}
.gets li{display:flex;gap:10px;color:var(--ink2);font-size:15px}
.gets li::before{content:"";flex:none;width:16px;height:16px;margin-top:4px;border-radius:5px;background:var(--accent);mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
.shots{position:relative;margin:0;padding-bottom:72px}
.shots .chartimg{display:block;width:100%;max-width:520px;height:auto;border-radius:22px;border:1px solid var(--ring2);box-shadow:0 30px 70px rgba(0,0,0,.35)}
.shots .pop{position:absolute;right:0;bottom:0;width:58%;height:auto;border-radius:16px;border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);box-shadow:0 24px 50px rgba(0,0,0,.45)}
.shots figcaption{font-size:12px;color:var(--muted);margin-top:12px}
.qr-row{display:flex;align-items:center;gap:14px;margin-top:22px;font-size:13px;color:var(--muted)}
.qr-row img{width:76px;height:76px;border-radius:10px;background:#fff;padding:5px}
.ft{padding:40px 0 56px;border-top:1px solid var(--ring);font-size:13px;color:var(--muted)}.ft .wrap{display:grid;gap:14px}
.ft nav{display:flex;gap:18px;flex-wrap:wrap}
.ft a{text-decoration:none}.ft a:hover{color:var(--ink)}
dialog.signin{border:1px solid var(--ring2);border-radius:24px;background:var(--panel);color:var(--ink);padding:28px;width:min(640px,calc(100vw - 32px));box-shadow:0 30px 80px rgba(0,0,0,.6)}
dialog.signin::backdrop{background:rgba(5,6,12,.6);backdrop-filter:blur(4px)}.signin-close{position:absolute;right:14px;top:12px}
.signin-close button{width:40px;height:40px;border-radius:50%;border:0;background:var(--panel2);color:var(--ink);font-size:22px;cursor:pointer}
.signin-kicker{margin:0;font:700 12px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.signin h2{margin:10px 0 8px;font:var(--h-weight) 26px/1.15 var(--display);letter-spacing:-.02em}.signin-lede{margin:0 0 20px;color:var(--ink2)}
.signin-paths{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:14px}
.signin-path{background:var(--bg2);border:1px solid var(--ring);border-radius:16px;padding:16px;display:grid;gap:10px;align-content:start}
.signin-path h3{margin:0;font-size:13px;color:var(--ink2);font-weight:600}.signin-mail{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.signin-mail input{min-width:0;height:44px;border-radius:12px;border:1px solid var(--ring2);background:var(--panel);color:var(--ink);padding:0 12px;font:15px var(--sans)}
.signin-note{margin:0;font-size:12.5px;color:var(--warn)}.signin-note:empty{display:none}
.badge img{display:block}.qr{margin:0;display:flex;gap:10px;align-items:center;font-size:12.5px;color:var(--muted)}
.qr img{width:88px;height:88px;border-radius:8px;background:#fff;padding:4px}.signin-fine{margin:16px 0 0;font-size:12.5px;color:var(--muted)}
/* Instagram reels (IGR1, 2026-10-08): a sideways row of 9:16 tiles, about 4.6 on a wide screen and 1.6 on a phone (n tiles
   and n-1 gaps of 16px fill the row, so the next tile peeks in). The video stays transparent until it plays, so its poster
   <img> underneath never flashes black. The whole picture is the play/pause button. position:relative keeps each caption's
   visually hidden text (.sr, absolute) inside the scroller; without it that text escaped the row and widened a phone page. */
.rtrack{position:relative;list-style:none;display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 64px)/4.6);gap:16px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gut);padding:2px var(--gut) 6px;margin:0 calc(var(--gut) * -1);scrollbar-width:thin;scrollbar-color:var(--ring2) transparent}
.reel{scroll-snap-align:start;min-width:0}
.reel-media{position:relative;aspect-ratio:9/16;border-radius:var(--r);overflow:hidden;background:var(--panel2)}
.reel-media img,.reel-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.reel-media video{opacity:0;transition:opacity .3s}.reel.is-ready video{opacity:1}
.reel-media::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(255,255,255,.12);pointer-events:none}
.reel-btn{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:10px;border:0;background:none;color:#fff;cursor:pointer;display:flex;align-items:flex-end;justify-content:flex-end}
.reel-btn[hidden]{display:none}.reel-btn:focus-visible{outline:2px solid var(--accent2);outline-offset:-4px;border-radius:inherit}
.reel-ic{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:rgba(11,12,21,.66);box-shadow:0 0 0 1px rgba(255,255,255,.2)}
.reel[data-playing] .reel-ic{opacity:.72}.reel-btn:hover .reel-ic,.reel-btn:focus-visible .reel-ic{opacity:1}.reel-ic svg{width:16px;height:16px}.reel-btn[aria-pressed="true"] .i-play,.reel-btn[aria-pressed="false"] .i-pause{display:none}
/* Each caption is a 44px tap target (LNK2 N1): 12px of padding above and below instead of a 12px top margin, so the text
   sits where it did, and the row's bottom padding gives back the same 12px (18px → 6px), so the row is as tall as before.
   Its focus ring is drawn inside that box (offset -2px), so it no longer overlaps the picture above it (LNK2 review),
   and 4px of side padding, given back by a -4px side margin, keeps the ring 2px clear of the first and last letter
   while the text stays aligned with the picture and wraps as before (C1, IGR4 review). */
.reel-cap{display:block;padding:12px 4px;margin:0 -4px;min-height:44px;font:600 15px/1.35 var(--sans);color:var(--ink);text-decoration:none}
.reel-cap:hover{text-decoration:underline;text-underline-offset:3px}.reel-cap:focus-visible{outline-offset:-2px}.reel-cap span[aria-hidden]{color:var(--muted)}
.reels .eyebrow .handle{text-transform:none;letter-spacing:.02em;color:var(--muted)}.reel-more{margin-top:10px}
.reels .ig{flex:none;width:18px;height:18px}.reels .eyebrow .ig{width:14px;height:14px;margin-right:6px;vertical-align:-2px}
@media (max-width:1100px){
  .hero .wrap{grid-template-columns:minmax(0,1fr);gap:32px}
  .nav{display:none}
  .s3,.s4,.s5{grid-column:span 6}.s7,.s8{grid-column:span 12}
  .rtrack{grid-auto-columns:calc((100% - 48px)/3.6)}
}
@media (max-width:860px){
  .sig,.sepa,.mix,.wire-grid,.sepa-extra{grid-template-columns:minmax(0,1fr)}
  .start .wrap{grid-template-columns:minmax(0,1fr)}
  .wire{grid-template-columns:minmax(0,1fr)}
  .s3,.s4,.s5,.s6{grid-column:span 12}
  .rtrack{grid-auto-columns:calc((100% - 32px)/2.6)}
}
@media (max-width:640px){
  :root{--gut:16px}
  .hd .wrap{gap:10px;height:58px}
  .lang,.hd-r .btn-ghost{display:none}
  .hd-r .btn-primary{min-height:40px;padding:0 14px;font-size:14px}
  .set-btn{width:40px;height:40px}
  .set-panel{position:fixed;left:12px;right:12px;top:66px;width:auto}
  .hero{padding:28px 0 28px}
  .kicker{flex-wrap:wrap;row-gap:4px}.kicker .stamp{flex-basis:100%;padding-left:17px}
  h1{font-size:30px}
  .tile .spark{width:64px}
  .tile .val{font-size:20px}
  .board{grid-template-columns:minmax(0,1fr)}
  .c-gate,.c-fg,.c-fed,.c-cal{grid-column:1/-1}
  .fg{grid-template-columns:auto minmax(0,1fr);justify-items:start;text-align:left;column-gap:16px;align-items:center}
  .fg .v-gauge{max-width:140px}.fg-v{margin-top:0}
  .row{grid-template-columns:minmax(0,1fr) auto;gap:6px 12px}
  .row .why{grid-column:1/-1;grid-row:2}
  .row .minis{grid-column:1/-1;grid-row:3}
  .tbl .hide-s{display:none}
  .tbl th,.tbl td{padding:10px 10px}
  .ctrack{grid-auto-columns:82%}
  .rtrack{grid-auto-columns:calc((100% - 16px)/1.6)}
  .gets{grid-template-columns:minmax(0,1fr)}
  .signin-paths{grid-template-columns:minmax(0,1fr)}
  .cta-row .btn{flex:1}
  section.blk{padding:48px 0}
  .season{grid-template-columns:minmax(0,1fr)}
  .qr-row{display:none}
  .heat .sp{width:56px}
}
@media (prefers-reduced-motion:reduce){.post .cov img,.reel-media video{transition:none}}
.wait{min-height:120px;display:grid;place-items:center;color:var(--muted);font-size:13.5px;border:1px dashed var(--ring);border-radius:var(--r2)}
.wait.err{color:var(--ink2);align-content:center;gap:16px} /* held at its box's height on an error (IGR5): text and button stay together */
.wait button{margin-left:8px;font:600 13px var(--sans);background:none;border:1px solid var(--ring2);color:var(--ink);border-radius:999px;padding:6px 12px;cursor:pointer}
/* Room for the hero's data (IGR5). /api/landing fills the tape, the headline, the tiles and the board after first paint;
   with no room kept for them the hero grew by 300-1000px and pushed everything below it, the reels row included (CLS
   0.30 at 1440x900). Until the data lands each live slot holds about the size it will have:
   - exactly: the tape one row of quotes, the time stamp its line, the charts the height landing.js draws them at;
   - as usual for the width and style: the headline, the tiles, the gate line, the gauge, the rates and the calendar.
     Their text varies by language and day, so a line or a calendar event of difference can remain.
   The rules end with the data, which removes [data-live] and fills the tape. An error keeps the room on screen
   (landing-widgets.js fail()). */
.tape-track:empty::before{content:"\00a0";display:block;padding:10px 0;font-size:13px}
.hero:has([data-live]) .kicker .stamp:empty::before{content:"\00a0"}
.hero:has([data-live]) h1{min-height:calc(3em * 1.08)}
.tiles[data-live]{min-height:190px}[data-style="edition"] .tiles[data-live]{min-height:180px}
.tiles>.wait,.board>.wait,.wgrid>.wait{grid-column:1/-1;margin:0} /* the note spans its grid */
.board>.wait.err{align-content:start;padding:48px 16px} /* a tall board: the note at its top, in view */
.board[data-live] .gate-row{min-height:78px}[data-style="edition"] .board[data-live] .gate-row{min-height:0}
/* The gate caption's fixed half sits right of the live half and wraps below it where both don't fit. Before the data it
   would jump sideways from the right of an empty first line, the largest move in the frame, so it shows with the data. */
.board[data-live] .gate-strip+.cap>span:last-child{visibility:hidden}
.board[data-live] [data-chart="qqq"]{min-height:170px}.board[data-live] [data-qqq-cap]{min-height:calc(2em * 1.55)}
.board[data-live] [data-fg]{min-height:154px}.board[data-live] [data-chart="fg"]{min-height:110px}
.board[data-live] [data-rates]{min-height:218px}
.board[data-live] [data-cal]{min-height:308px}[data-style="edition"] .board[data-live] [data-cal]{min-height:287px}
.board[data-live] [data-chart="cal"]{min-height:64px}
@media (max-width:1199px){.board[data-live] [data-cal]{min-height:350px}[data-style="edition"] .board[data-live] [data-cal]{min-height:308px}}
@media (max-width:1100px){
  .hero:has([data-live]) h1{min-height:0}
  .board[data-live] .gate-row,[data-style="edition"] .board[data-live] .gate-row{min-height:0}
  .board[data-live] [data-qqq-cap]{min-height:1.55em}
  .board[data-live] [data-cal],[data-style="edition"] .board[data-live] [data-cal]{min-height:246px}
}
@media (max-width:860px){
  .hero:has([data-live]) h1{min-height:calc(2em * 1.08)}
  .board[data-live] .gate-row{min-height:78px}
  .board[data-live] [data-qqq-cap]{min-height:calc(2em * 1.55)}
  .board[data-live] [data-cal]{min-height:308px}[data-style="edition"] .board[data-live] [data-cal]{min-height:287px}
}
@media (max-width:640px){
  .tiles[data-live]{min-height:181px}[data-style="edition"] .tiles[data-live]{min-height:171px}
  .board[data-live] .gate-row{min-height:0}
  .board[data-live] [data-fg]{min-height:84px}
  .board[data-live] [data-cal],[data-style="edition"] .board[data-live] [data-cal]{min-height:246px}
}
@media (max-width:460px){ /* phones: the live headline takes three lines, the gate line and its caption wrap */
  .hero:has([data-live]) h1{min-height:calc(3em * 1.08)}
  html:lang(en)[data-style="desk"] .tiles[data-live]{min-height:200px} /* "S&P 500 futures · 20 sessions" takes two lines */
  .board[data-live] .gate-row{min-height:99px}[data-style="edition"] .board[data-live] .gate-row{min-height:78px}
  .board[data-live] .gate-strip+.cap{min-height:46px}[data-style="edition"] .board[data-live] .gate-strip+.cap{min-height:0}
  .board[data-live] [data-cal],[data-style="edition"] .board[data-live] [data-cal]{min-height:287px}
}
@media (min-width:401px) and (max-width:460px){html:lang(en)[data-style="desk"] .hero:has([data-live]) h1{min-height:calc(2em * 1.08)}} /* two lines from about 410px */
.ph-row{height:46px;margin:10px 18px;border-radius:8px;background:var(--panel2)}.only-beta{display:none!important}
#faq .wrap{max-width:900px}#faq details{border-top:1px solid var(--ring);padding:14px 0}
#faq details:last-of-type{border-bottom:1px solid var(--ring)}#faq summary{cursor:pointer;font-weight:600;font-size:16.5px}
#faq details p{color:var(--ink2);margin:10px 0 0}#faq a{color:var(--accent)}
#faq .kicker{color:var(--accent2)}
#faq h2{font:var(--h-weight) clamp(26px,2.6vw,34px)/1.15 var(--display);letter-spacing:var(--h-track);margin:6px 0 18px}
.ft .fine{font-size:12.5px;line-height:1.6}.ft .brand{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--ink)}
.k-out{border:2px solid var(--ink2);background:none!important;width:9px!important;height:9px!important}.k-round{border-radius:50%!important}
.shots .chartimg{aspect-ratio:904/790;object-fit:cover;object-position:top}
.c-fed .rates-spark{width:100%;height:56px;margin:6px 0 4px}
.c-fed .mini{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0 0;padding-top:12px;border-top:1px solid var(--ring)}
.c-fed .mini dt{font-size:11.5px;color:var(--muted)}.c-fed .mini dd{margin:3px 0 2px;font-size:15px;font-weight:600}
.c-fed .mini .spark{width:100%;height:22px;color:var(--viz-blue)}.c-fed .ms{font-size:11.5px;color:var(--muted)}
.c-fed .head-num{display:flex;align-items:baseline;gap:10px}.c-fed .head-num .big{font-size:28px}.c-fed .head-num small{font:600 12.5px var(--mono)}

/* Keep the serif logo, display control and localized app link inside narrow phones. */
@media (max-width:360px){
  [data-style="edition"] .hd .logo{font-size:19px;gap:6px}
  [data-style="edition"] .hd .logo img{width:24px}
  [data-style="edition"] .hd-r .btn-primary{font-size:13px;padding:0 10px}
}
