:root{
  --bg:#0E0E10; --bg2:#141416; --charcoal:#3A3A3C;
  --panel:rgba(30,30,33,.62); --panel-edge:rgba(201,162,39,.18);
  --gold:#C9A227; --gold-hi:#E6C757; --gold-dim:rgba(201,162,39,.55);
  --text:#EDEAE3; --muted:#8F8B82; --down:#C46A5A;
  --r:14px; --gap:clamp(12px,1.6vw,22px);
  --font:"Jost","Century Gothic","Avenir Next",system-ui,-apple-system,"Segoe UI",sans-serif;
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font:400 15px/1.45 var(--font);
  -webkit-font-smoothing:antialiased;overflow:hidden}
[hidden]{display:none!important}
button,input{font:inherit;color:inherit}
.muted{color:var(--muted)} .small{font-size:12px} .gold{color:var(--gold)}
#contours{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}

/* ---------- sign-in */
.login{position:relative;z-index:1;height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;display:grid;place-items:center;align-content:safe center;padding:24px;box-sizing:border-box}
.login-card{width:min(360px,100%);text-align:center}
.logo{height:34px;width:auto;display:block}
.logo-lg{height:auto;width:200px;margin:0 auto}
.rule{height:1px;width:64px;background:var(--gold);margin:28px auto 30px;opacity:.8}
.login form{display:grid;gap:12px;text-align:left}
.login input{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.12);border-radius:10px;
  padding:13px 14px;outline:none;letter-spacing:.08em}
.login input:focus{border-color:var(--gold)}
.err{color:var(--down);min-height:1.2em;margin:0;font-size:13px}

/* ---------- common */
.eyebrow{font-size:11px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);
  margin:0 0 12px;display:flex;align-items:center;gap:8px}
.btn{border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.03);border-radius:999px;
  padding:10px 18px;cursor:pointer;letter-spacing:.04em;transition:.15s}
.btn:hover{border-color:var(--gold-dim)}
.btn-gold{background:var(--gold);border-color:var(--gold);color:#16130a;font-weight:500}
.btn-gold:hover{background:var(--gold-hi)}
.btn-sm{padding:6px 12px;font-size:12px}
.icon-btn{width:36px;height:36px;border-radius:50%;border:1px solid rgba(255,255,255,.1);background:transparent;
  display:grid;place-items:center;cursor:pointer}
.icon-btn svg,.mic svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.icon-btn:hover{border-color:var(--gold-dim);color:var(--gold)}
.dot{width:8px;height:8px;border-radius:50%;background:#555;display:inline-block}
.dot.on{background:var(--gold);box-shadow:0 0 10px var(--gold)}
.badge{background:var(--gold);color:#16130a;border-radius:999px;font-size:11px;padding:1px 8px;letter-spacing:0}

/* ---------- layout */
.hud{position:relative;z-index:1;height:100dvh;display:grid;grid-template-rows:auto 1fr auto;
  padding:max(14px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left))}
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:4px 4px 10px}
.clock{display:flex;gap:12px;align-items:baseline;letter-spacing:.12em;font-weight:300}
#clock-time{font-size:20px;font-variant-numeric:tabular-nums}
.clock .muted{font-size:12px;text-transform:uppercase}
.top-right{display:flex;align-items:center;gap:10px}
.grid{display:grid;grid-template-columns:minmax(300px,390px) 1fr minmax(260px,340px);gap:var(--gap);min-height:0}
.col{display:flex;flex-direction:column;gap:var(--gap);min-height:0;overflow:auto;scrollbar-width:none}
.panel{background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--r);padding:16px 18px;
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);position:relative}
.panel::before{content:"";position:absolute;left:18px;top:-1px;width:28px;height:2px;background:var(--gold)}

/* ---------- markets */
.rows{display:flex;flex-direction:column}
.mrow{display:grid;grid-template-columns:1fr auto;align-items:baseline;padding:9px 0;border-top:1px solid rgba(255,255,255,.05)}
.mrow:first-child{border-top:0;padding-top:0}
.mrow .k{font-size:12px;letter-spacing:.14em;color:var(--muted);text-transform:uppercase}
.mrow .v{font-variant-numeric:tabular-nums;font-size:17px;font-weight:400;text-align:right}
.mrow .sub{grid-column:1/-1;display:flex;justify-content:space-between;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.hero{grid-template-columns:1fr}.hero .k{margin-bottom:2px}
.hero .v{text-align:left;font-size:30px;font-weight:300;color:var(--gold-hi);letter-spacing:.01em}
.chg{font-size:12px;margin-left:8px}
.chg.up{color:var(--gold)} .chg.dn{color:var(--down)}
.skeleton{height:120px;border-radius:10px;background:linear-gradient(90deg,rgba(255,255,255,.03),rgba(255,255,255,.07),rgba(255,255,255,.03));background-size:200% 100%;animation:sh 1.4s infinite}
@keyframes sh{to{background-position:-200% 0}}

/* compact market tiles */
.hero-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.hero-row .v{font-size:30px;font-weight:300;color:var(--gold-hi);font-variant-numeric:tabular-nums}
.hero-sub{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;margin:2px 0 12px}
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(255,255,255,.06);border-radius:10px;overflow:hidden}
.tile{background:rgba(22,22,24,.92);padding:8px 10px;min-width:0}
.tile .k{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile .v{font-size:14px;font-variant-numeric:tabular-nums;white-space:nowrap}
.tile .chg{display:block;margin:0;font-size:11px}

/* live */
.live-dot{font-size:9px;letter-spacing:.2em;color:var(--gold);display:inline-flex;align-items:center;gap:5px}
.live-dot::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px var(--gold)}
.live-dot.pulse::before{animation:pulse .9s ease-out}
@keyframes pulse{0%{transform:scale(1.8);opacity:.4}100%{transform:scale(1);opacity:1}}
.flash-up{animation:fu .7s ease-out}.flash-dn{animation:fd .7s ease-out}
@keyframes fu{0%{color:#fff;text-shadow:0 0 14px var(--gold)}}
@keyframes fd{0%{color:var(--down)}}

.fresh{font-size:9px;letter-spacing:.16em;padding:2px 6px;border-radius:999px;margin-left:6px;text-transform:uppercase;vertical-align:1px;white-space:nowrap}
.fresh:empty{display:none}
.fresh.live{color:#16130a;background:var(--gold)}
.fresh.delayed{color:#16130a;background:#D9A441}
.fresh.stale{color:#fff;background:var(--down);animation:blink 1.2s infinite}
.fresh.closed{color:var(--muted);border:1px solid rgba(255,255,255,.15)}

/* charts */
.col-left{overflow:hidden}
.chart-panel{flex:1 1 auto;display:flex;flex-direction:column;min-height:340px}
.chart-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;flex-wrap:wrap}
.chart-head .intervals{max-width:100%;overflow-x:auto;scrollbar-width:none}
.chart-head .eyebrow{margin:0}
.intervals{display:flex;gap:2px;background:rgba(255,255,255,.04);border-radius:999px;padding:2px}
.intervals button{border:0;background:transparent;color:var(--muted);font-size:11px;letter-spacing:.03em;padding:4px 6px;white-space:nowrap;border-radius:999px;cursor:pointer}
.intervals button[aria-selected="true"]{background:var(--gold);color:#16130a;font-weight:500}
.intervals button.mode{color:var(--gold);border-left:1px solid rgba(255,255,255,.1);border-radius:0 999px 999px 0;margin-left:2px;font-weight:500}
.intervals button:hover:not([aria-selected="true"]){color:var(--text)}
.chart-block{flex:1 1 0;display:flex;flex-direction:column;min-height:150px}
.chart-block+.chart-block{margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.06)}
.chart-label{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;margin-bottom:4px}
.chart-label .sym{letter-spacing:.16em;color:var(--muted)}
.chart-label .px{font-variant-numeric:tabular-nums;color:var(--text);font-size:13px}
.chart{flex:1 1 auto;min-height:120px;position:relative}
.chart .tradingview-widget-container,.chart iframe{position:absolute;inset:0;width:100%!important;height:100%!important}
.chart-note{font-size:11px;color:var(--muted);margin:8px 0 0}
.chart-credit{align-self:flex-end;font-size:10px;letter-spacing:.08em;color:rgba(143,139,130,.6);text-decoration:none;margin-top:6px}
.chart-credit:hover{color:var(--gold)}

/* ---------- agenda & mail */
.ev{display:grid;grid-template-columns:52px 1fr;gap:10px;padding:8px 0;border-top:1px solid rgba(255,255,255,.05)}
.ev:first-child{border-top:0;padding-top:0}
.ev time{color:var(--gold);font-variant-numeric:tabular-nums;font-size:13px}
.ev .t{font-size:14px;line-height:1.3}
.ev .l{font-size:12px;color:var(--muted)}
.ml{padding:7px 0;border-top:1px solid rgba(255,255,255,.05);min-width:0}
.ml:first-child{border-top:0;padding-top:0}
.ml .f{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ml .s{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:5px 10px;border-radius:999px;
  border:1px solid rgba(255,255,255,.1);color:var(--muted)}
.chip.on{color:var(--text);border-color:var(--gold-dim)}
.chip .dot{width:6px;height:6px}

.spend{margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.06);display:grid;grid-template-columns:1fr auto;gap:2px 10px;font-size:12px;color:var(--muted)}
.spend b{font-weight:400;color:var(--text);font-variant-numeric:tabular-nums;text-align:right}

/* ---------- core */
.centre{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:0;min-width:0}
.core-wrap{position:relative;width:min(46vh,100%,520px);aspect-ratio:1;max-width:100%}
#core{width:100%;height:100%;display:block}
.core-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}
#core-name{font-size:clamp(14px,1.6vw,18px);letter-spacing:.5em;font-weight:500;color:var(--gold-hi);padding-left:.5em}
#core-state{font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--muted);margin-top:8px;padding-left:.3em}
.caption{max-width:760px;text-align:center;font-size:clamp(16px,1.7vw,21px);font-weight:300;line-height:1.5;
  min-height:3em;margin:18px 0 6px;padding:0 12px;max-height:30vh;overflow:auto}
.caption.heard{color:var(--muted);font-style:italic}
.caption strong{font-weight:500;color:var(--gold-hi)}
.toolline{min-height:20px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold)}
.toolline span{opacity:.9;animation:blink 1.2s infinite}
@keyframes blink{50%{opacity:.35}}

/* ---------- dock */
.dock{display:flex;align-items:center;justify-content:center;gap:14px;padding-top:12px;flex-wrap:wrap}
.composer{flex:0 1 640px;display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--panel-edge);
  border-radius:999px;padding:6px 6px 6px 20px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);min-width:0}
.composer:focus-within{border-color:var(--gold-dim)}
.composer input{flex:1;background:transparent;border:0;outline:none;padding:8px 0;min-width:0;font-size:15px}
.mic{width:44px;height:44px;border-radius:50%;border:1px solid var(--gold-dim);background:rgba(201,162,39,.08);
  color:var(--gold);display:grid;place-items:center;cursor:pointer;flex:none;transition:.15s}
.mic svg{width:20px;height:20px}
.mic.live{background:var(--gold);color:#16130a;box-shadow:0 0 0 6px rgba(201,162,39,.15),0 0 24px rgba(201,162,39,.5)}
.chip-btn{padding:10px 16px;font-size:13px}
.toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:12px;color:var(--muted);letter-spacing:.06em}
.toggle input{position:absolute;opacity:0;pointer-events:none}
.track{width:34px;height:20px;border-radius:999px;background:rgba(255,255,255,.1);position:relative;transition:.2s}
.track::after{content:"";position:absolute;left:3px;top:3px;width:14px;height:14px;border-radius:50%;background:#bbb;transition:.2s}
.toggle input:checked+.track{background:var(--gold)}
.toggle input:checked+.track::after{left:17px;background:#16130a}
.toggle input:focus-visible+.track{outline:2px solid var(--gold);outline-offset:2px}

/* ---------- confirm */
.confirm{position:fixed;left:50%;bottom:110px;transform:translateX(-50%);z-index:20;width:min(560px,calc(100% - 32px));
  background:#161618;border:1px solid var(--gold);border-radius:var(--r);padding:18px 20px;
  box-shadow:0 20px 60px rgba(0,0,0,.6),0 0 40px rgba(201,162,39,.15);animation:rise .25s ease-out}
@keyframes rise{from{opacity:0;transform:translate(-50%,12px)}}
.confirm-head{display:flex;justify-content:space-between;align-items:center}
.confirm .eyebrow{margin:0}
.code{font-variant-numeric:tabular-nums;letter-spacing:.2em;color:var(--gold-hi)}
.confirm pre{white-space:pre-wrap;font:inherit;font-size:14px;margin:12px 0 16px;max-height:34vh;overflow:auto;color:var(--text)}
.confirm-actions{display:flex;gap:10px;justify-content:flex-end}
.confirm .muted{margin:10px 0 0;text-align:right}

/* ---------- transcript */
.log{position:fixed;top:0;right:0;bottom:0;width:min(460px,100%);z-index:30;background:#101012;
  border-left:1px solid var(--panel-edge);display:flex;flex-direction:column;padding:18px;animation:slide .2s ease-out}
@keyframes slide{from{transform:translateX(30px);opacity:0}}
.log-head{display:flex;justify-content:space-between;align-items:center}
.log-head>div{display:flex;gap:8px;align-items:center}
.log-body{flex:1;overflow:auto;display:flex;flex-direction:column;gap:12px;padding:10px 2px}
.msg{max-width:92%;padding:10px 14px;border-radius:12px;font-size:14px;line-height:1.5;overflow-wrap:anywhere}
.msg.user{align-self:flex-end;background:rgba(201,162,39,.12);border:1px solid rgba(201,162,39,.25)}
.msg.assistant{align-self:flex-start;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07)}
.msg.note{align-self:center;font-size:12px;color:var(--muted);background:none;padding:2px 8px}
.msg p{margin:0 0 8px}.msg p:last-child{margin:0}
.msg ul{margin:4px 0 8px;padding-left:18px}
.msg code{background:rgba(255,255,255,.06);padding:1px 5px;border-radius:5px;font-size:13px}
.settings{border-top:1px solid rgba(255,255,255,.08);padding-top:12px;margin-top:4px}
.settings select{width:100%;background:rgba(255,255,255,.05);color:var(--text);border:1px solid rgba(255,255,255,.14);border-radius:10px;padding:9px 10px;font:inherit;font-size:13px}
.settings p{margin:8px 0 0;line-height:1.45}
.settings input{flex:1;min-width:0;background:rgba(255,255,255,.05);color:var(--text);border:1px solid rgba(255,255,255,.14);border-radius:10px;padding:8px 10px;font:inherit;font-size:13px;outline:none}
.settings input:focus{border-color:var(--gold)}
.settings b{color:var(--text);font-weight:500}
.tabs{display:flex;gap:2px;background:rgba(255,255,255,.04);border-radius:999px;padding:2px}
.tabs button{border:0;background:transparent;color:var(--muted);font-size:12px;letter-spacing:.08em;padding:6px 12px;border-radius:999px;cursor:pointer}
.tabs button[aria-selected="true"]{background:var(--gold);color:#16130a}
.tabpane{flex:1;overflow:auto}
.settings-pane{display:flex;flex-direction:column;gap:14px;padding-top:12px}
.settings .row{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.list{display:flex;flex-direction:column;gap:6px}
.list .item{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:13px;padding:8px 10px;border-radius:10px;background:rgba(255,255,255,.04)}
.list .item small{color:var(--muted);display:block;font-size:11px}
.list .item button{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:16px}
.list .item button:hover{color:var(--down)}
.qr{display:grid;place-items:center;margin:14px 0;background:#F4EFE2;border-radius:12px;padding:10px}
.qr svg,.qr img{width:min(260px,72vw);height:auto;aspect-ratio:1/1;display:block;image-rendering:pixelated}
.mono{font-family:ui-monospace,Menlo,monospace;letter-spacing:.08em;word-break:break-all}
.codes{font-family:ui-monospace,Menlo,monospace;background:rgba(255,255,255,.05);border-radius:10px;padding:12px;font-size:14px;line-height:1.8;text-align:center}
#enrol,#recovery{display:grid;gap:10px;text-align:left}
#enrol input,#recovery input{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:13px 14px;outline:none;letter-spacing:.2em;text-align:center;font-size:18px}
#step-code input{letter-spacing:.3em;text-align:center;font-size:18px}
.toast{position:fixed;top:18px;left:50%;transform:translateX(-50%);z-index:40;background:rgba(22,22,24,.96);
  border:1px solid var(--gold-dim);border-radius:999px;padding:9px 18px;font-size:13px;max-width:calc(100% - 32px)}

@media (min-width:1101px) and (max-height:960px){
  .panel{padding:13px 16px}.eyebrow{margin-bottom:9px}
  .ev{padding:6px 0}.ml{padding:5px 0}.mrow{padding:7px 0}
  .spend{margin-top:10px;padding-top:9px}
}

/* ---------- tablet & phone */
@media (max-width:1100px){
  .grid{grid-template-columns:minmax(230px,280px) 1fr}
  .col-right{grid-column:1/-1;flex-direction:row;overflow-x:auto}
  .col-right .panel{min-width:260px;flex:1}
}
@media (max-width:760px){
  body{overflow:auto}
  .hud{height:auto;min-height:100dvh;grid-template-rows:auto auto auto;padding-bottom:calc(150px + env(safe-area-inset-bottom))}
  .grid{grid-template-columns:1fr;display:flex;flex-direction:column}
  .centre{order:-1}
  .core-wrap{width:min(62vw,300px)}
  .caption{min-height:2em;font-size:17px;max-height:none}
  .col,.col-right,.col-left{overflow:visible;flex-direction:column}
  .chart-panel{min-height:0}
  .chart-block{flex:none}
  .chart{height:210px;flex:none}
  .col-right .panel{min-width:0}
  .clock .muted{display:none}
  .dock{position:fixed;left:0;right:0;bottom:0;z-index:10;background:linear-gradient(transparent,var(--bg) 30%);
    padding:24px 16px max(14px,env(safe-area-inset-bottom));gap:10px}
  .composer{flex:1 1 100%;order:-1}
  .confirm{bottom:170px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.settings .rate{display:flex;justify-content:space-between;align-items:baseline;margin-top:12px}
.settings .rate b{font-weight:500;color:var(--gold);font-size:13px}
.settings input[type=range]{width:100%;accent-color:var(--gold);margin:6px 0 2px;padding:0;border:0;background:transparent}
