
:root{
  --bg:#080b10;--panel:#111722;--card:#0c1118;--line:#273141;--text:#f5f7fb;--muted:#8f9bae;
  --blue:#7db7ff;--green:#4be0a4;--red:#ff7482;--amber:#ffc85c;--purple:#aa98ff;--dead:#59616e
}
*{box-sizing:border-box}
body{margin:0;background:radial-gradient(circle at top,#171e2d 0,#080b10 48%);color:var(--text);
font:14px/1.35 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,sans-serif}
.app{max-width:1580px;margin:auto;padding:16px 12px 60px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.between{justify-content:space-between}.muted{color:var(--muted)}.tiny{font-size:11px}.good{color:var(--green)}.bad{color:var(--red)}.amber{color:var(--amber)}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:17px;padding:14px}
.controls{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:8px}
.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}
.metric{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:11px;min-height:70px}
.metric b{display:block;font-size:19px;font-variant-numeric:tabular-nums}
.metric small{display:block;color:var(--muted);margin-top:2px}
label{font-size:11px;color:var(--muted);display:block}
select{width:100%;margin-top:4px;background:#0c121b;color:var(--text);border:1px solid var(--line);border-radius:10px;padding:9px;font-size:14px}
button{border:1px solid var(--line);background:#111923;color:var(--text);border-radius:10px;min-height:40px;padding:8px 12px;font-weight:750;cursor:pointer}
button.primary{background:#17263a;border-color:#31557d}.danger{border-color:#5f3038;color:#ff9aa4;background:#251318}
button:disabled{opacity:.32;cursor:not-allowed}
.tickerShell{margin:12px 0;background:#070a0f;border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;display:flex;align-items:stretch}
.tickerLabel{flex:0 0 auto;display:flex;align-items:center;padding:9px 12px;font-size:10px;font-weight:850;letter-spacing:.12em;background:#171d28;color:var(--amber);z-index:2}
.tickerViewport{overflow:hidden;flex:1;min-width:0}.tickerTrack{display:flex;width:max-content;animation:tiboTicker 42s linear infinite;will-change:transform}
.tickerItem{display:flex;align-items:center;gap:7px;padding:8px 15px;border-right:1px solid var(--line);white-space:nowrap;font-variant-numeric:tabular-nums}
.tickerItem .name{font-size:10px;color:var(--muted);font-weight:800}.tickerItem .val{font-size:13px;font-weight:850}.tickerItem .chg{font-size:11px;font-weight:750}
.tickerItem.dead{opacity:.5}@keyframes tiboTicker{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.feedHero{margin-bottom:12px;border-color:#5b4b27;background:linear-gradient(180deg,#17150e,#111722)}
.feed{max-height:200px;overflow:auto}.feeditem{padding:11px 0 11px 12px;border-bottom:1px solid var(--line);border-left:3px solid var(--amber)}
.feeditem:first-child{background:rgba(255,200,92,.045)}.feeditem:first-child b{font-size:16px}
.market-scroll{overflow:visible;padding-bottom:2px}.market{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;width:100%;align-items:stretch}
.bucket{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:7px 6px;position:relative;min-width:0}
.bucket.dead{opacity:.42;filter:grayscale(1)}.bucket.dead:after{content:"EXPIRED";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(8,11,16,.52);font-size:9px;letter-spacing:.12em;border-radius:13px}
.hist{height:78px;display:flex;align-items:flex-end;justify-content:center;padding:5px 4px 2px;position:relative}
.histbar{width:55%;min-height:2px;background:linear-gradient(180deg,#8998ae,#506074);border-radius:7px 7px 2px 2px;position:relative}
.histbar em{position:absolute;top:-18px;width:100%;text-align:center;font-style:normal;font-size:12px;font-weight:900}
.basemark{position:absolute;left:10%;right:10%;height:1px;background:var(--amber);opacity:.75}
.contract{text-align:center;font-size:11px;font-weight:900;white-space:nowrap}.range{text-align:center;color:var(--text);font-size:10px;font-weight:750;white-space:nowrap;margin-top:2px}
.base{text-align:center;color:var(--amber);font-size:9px;margin-top:3px;white-space:nowrap}
.tokenlane{border-top:1px solid var(--line);margin-top:6px;padding-top:6px;display:grid;grid-template-columns:44px 1fr 44px;gap:4px;align-items:center}
.tokenlane button{height:29px;min-height:29px;padding:0 3px;font-size:9px;border-radius:8px}.plus{color:var(--green);background:#10281f;border-color:#285944}.minus{color:#ff9aa4;background:#2a1217;border-color:#6f303b}
.dots{display:flex;justify-content:center;gap:2px;min-height:9px;flex-wrap:wrap}.dot{width:6px;height:6px;background:var(--green);border-radius:50%}
.grid2{display:grid;grid-template-columns:1.15fr .85fr;gap:12px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.payrow{display:grid;grid-template-columns:76px 1fr 62px;gap:7px;align-items:center;font-size:11px;margin:7px 0}.paybar{height:7px;border-radius:99px;background:var(--line);overflow:hidden}.paybar span{display:block;height:100%;background:var(--purple)}
.leader{width:100%;border-collapse:collapse}.leader td{padding:7px 4px;border-bottom:1px solid var(--line);font-size:12px}.leader td:last-child{text-align:right;font-variant-numeric:tabular-nums}
.auditTable{width:100%;border-collapse:collapse;font-size:12px}.auditTable th,.auditTable td{text-align:right;padding:7px 5px;border-bottom:1px solid var(--line)}.auditTable th:first-child,.auditTable td:first-child{text-align:left}
.auditpass{color:var(--green);font-weight:800}.auditfail{color:var(--red);font-weight:800}.note{margin-top:8px;font-size:11px;color:var(--muted)}
.sotixBox{display:flex;align-items:center;gap:10px}.sotixLamp{width:11px;height:11px;border-radius:50%;background:currentColor;box-shadow:0 0 12px currentColor}
.eventlog{font-size:11px;max-height:165px;overflow:auto}.eventrow{padding:6px 0;border-bottom:1px solid var(--line)}
@media(prefers-reduced-motion:reduce){.tickerTrack{animation:none;flex-wrap:wrap;width:auto}}
@media(max-width:900px){.grid2{grid-template-columns:1fr}.controls{grid-template-columns:1fr 1fr}.metrics{grid-template-columns:1fr 1fr}.market{grid-template-columns:repeat(3,minmax(0,1fr))}}

.tibexRow{display:flex;align-items:flex-end;justify-content:space-between;gap:8px}.tibexMain{font-size:19px;font-weight:900;font-variant-numeric:tabular-nums}
.tibexFut{font-size:12px;font-weight:850;font-variant-numeric:tabular-nums}.spark{width:82px;height:27px;overflow:visible}
.botBadge{font-size:9px;color:var(--muted);border:1px solid var(--line);border-radius:99px;padding:2px 5px;margin-left:5px;white-space:nowrap}



.botTape{margin-top:9px;border-top:1px solid var(--line);padding-top:7px;display:flex;gap:6px;flex-wrap:wrap;min-height:28px}
.botPrint{font-size:10px;border:1px solid var(--line);background:#0b1017;border-radius:8px;padding:4px 6px;color:var(--muted)}
.botPrint.buy{border-color:#285944;color:var(--green)}.botPrint.sell{border-color:#5f3038;color:#ff9aa4}


.runtimeError{display:none;margin:10px 0;padding:10px 12px;border:1px solid #8b313b;background:#2a1217;color:#ff9aa4;border-radius:10px;font-size:12px}
.runtimeError.show{display:block}


.heroMetrics{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin:12px 0}
.tradeHero{display:grid;grid-template-columns:minmax(0,1.45fr) 330px;gap:12px;margin-top:12px}
.curvePanel{background:var(--panel);border:1px solid var(--line);border-radius:17px;padding:14px}
.curveLegend{display:flex;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin-top:6px}
.legendDot{display:inline-flex;align-items:center;gap:6px}
.legendDot i{display:inline-block;width:16px;height:0;border-top:2px solid currentColor}
.legendDash i{border-top-style:dashed}
.densityWrap{margin-top:10px;border:1px solid var(--line);border-radius:14px;background:#0b1017;padding:10px}
.densitySvg{width:100%;height:230px;display:block}
.stripGrid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:7px;margin-top:10px}
.cracCell{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 7px;cursor:pointer;min-width:0}
.cracCell.selected{border-color:#58759a;box-shadow:0 0 0 1px #58759a inset;background:#121a26}
.cracCell.dead{opacity:.5;filter:grayscale(.7)}
.cracHead{display:flex;justify-content:space-between;gap:6px;align-items:center}
.cracName{font-size:11px;font-weight:900;white-space:nowrap}
.cracRange{font-size:10px;color:var(--muted);font-weight:700;white-space:nowrap}
.cracPct{font-size:18px;font-weight:900;font-variant-numeric:tabular-nums;margin-top:5px}
.cracHist{font-size:10px;color:var(--amber);margin-top:2px}
.cracTokens{min-height:13px;margin-top:6px;display:flex;gap:3px;flex-wrap:wrap}
.cracFooter{display:flex;justify-content:space-between;gap:6px;margin-top:6px;font-size:10px;color:var(--muted)}
.selectHint{font-size:10px;color:var(--muted)}
.sideCard{background:var(--panel);border:1px solid var(--line);border-radius:17px;padding:14px}
.sideMain{font-size:27px;font-weight:900}
.sideSub{font-size:12px;color:var(--muted);margin-top:2px}
.sideStat{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding:8px 0;font-size:12px}
.sideStat:last-child{border-bottom:none}
.sideActions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.marketDesk{margin-top:12px}
.marketDesk .metrics{margin:0}
.marketDeskTop{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.marketDesk .tickerShell{margin:10px 0 0}
@media(max-width:1100px){
  .tradeHero{grid-template-columns:1fr}
}
@media(max-width:900px){
  .heroMetrics{grid-template-columns:1fr 1fr}
  .stripGrid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .marketDeskTop{grid-template-columns:1fr}
}


.payoffWrap{margin-top:10px;border:1px solid var(--line);border-radius:14px;background:#0b1017;padding:10px}
.payoffSvg{width:100%;height:245px;display:block}
.payoffLegend{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin-top:6px}
.payoffLegend .gain{color:var(--green)} .payoffLegend .loss{color:var(--red)}


.tradeHero{grid-template-columns:minmax(0,1.55fr) 340px;align-items:start}
.sideFeed{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
.sideFeed .feed{max-height:280px}
.meanTag{font-size:10px;fill:#d7e4f1;font-weight:800}
.meanLine{stroke:#d7e4f1;stroke-width:2;stroke-dasharray:4 4;opacity:.9}
.intervalStripCompact{margin-top:10px}
.intervalStripCompact .cracCell{padding:7px 6px}
.compactNote{font-size:11px;color:var(--muted);margin-top:7px}
.feedCompact{margin-top:8px}
.feedCompact .feedrow{padding:8px 9px}


.stripGrid{grid-template-columns:repeat(16,minmax(0,1fr));gap:2px;padding-left:2.6%;padding-right:1.8%}
.intervalStripCompact .cracCell{padding:6px 3px;border-radius:8px;text-align:center}
.intervalStripCompact .cracHead{display:block}
.intervalStripCompact .cracName{font-size:9px}
.intervalStripCompact .selectHint,.intervalStripCompact .cracRange,.intervalStripCompact .cracHist,.intervalStripCompact .cracFooter{display:none}
.intervalStripCompact .cracPct{font-size:14px;margin-top:3px}
.intervalStripCompact .cracTokens{justify-content:center;min-height:9px;margin-top:4px}
.botMarketStats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:8px 0}
.botMarketStat{background:#0b1017;border:1px solid var(--line);border-radius:9px;padding:7px}
.botMarketStat b{display:block;font-size:15px;font-variant-numeric:tabular-nums}
.botMarketStat span{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
@media(max-width:1100px){.stripGrid{grid-template-columns:repeat(8,minmax(0,1fr))}}


.meanTagHist{font-size:10px;fill:#ffc85c;font-weight:800}
.meanLineHist{stroke:#ffc85c;stroke-width:2;stroke-dasharray:7 5;opacity:.95}
.meanTagMkt{font-size:10px;fill:#d7e4f1;font-weight:800}
.meanLineMkt{stroke:#d7e4f1;stroke-width:2;stroke-dasharray:4 4;opacity:.95}


/* v0.16 responsive/mobile fixes */
html,body{max-width:100%;overflow-x:hidden}
.app{max-width:100%;overflow-x:hidden}
.tickerShell,.tickerViewport{width:100%;max-width:100%;overflow:hidden;min-width:0}
.tickerTrack{display:flex;width:max-content;min-width:max-content;will-change:transform}
.grid2,.grid3,.tradeHero,.curvePanel,.sideCard,.panel{min-width:0}
.heroMetrics{min-width:0}
.mobileMood{display:none}
@media(max-width:700px){
  body{padding:8px}
  .app{width:100%;max-width:100%}
  .heroMetrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .heroMetrics .metric{padding:8px}
  .tradeHero{grid-template-columns:1fr;gap:8px}
  .curvePanel,.sideCard{padding:10px}
  .densityWrap{padding:6px;overflow:hidden}
  .densitySvg{height:190px}
  .stripGrid{
    display:flex;
    overflow-x:auto;
    overscroll-behavior-x:contain;
    scroll-snap-type:x mandatory;
    gap:5px;
    padding:7px 2px 4px;
    scrollbar-width:none
  }
  .stripGrid::-webkit-scrollbar{display:none}
  .intervalStripCompact .cracCell{
    flex:0 0 72px;
    min-width:72px;
    scroll-snap-align:center;
    padding:7px 4px
  }
  .intervalStripCompact .cracName{font-size:10px}
  .intervalStripCompact .cracPct{font-size:15px}
  .payoffSvg{height:190px}
  .sideFeed .feed{max-height:190px}
  .marketDeskTop{grid-template-columns:1fr 1fr}
  .marketDesk .tickerShell{margin-top:7px}
  .botMarketStats{grid-template-columns:repeat(2,1fr)}
  .mobileMood{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    background:var(--card);
    border:1px solid var(--line);
    border-radius:10px;
    padding:8px 10px;
    margin-top:6px
  }
  .mobileMood b{font-size:14px}
}


/* v0.17 mobile-first gameplay */
.mobileQuickTweet,.mobileTradeBar,.mobileTopStats{display:none}
.payoffDetails{display:block}
@media(max-width:700px){
  .app{padding:8px}
  .app > .row.between:first-of-type{align-items:flex-start}
  .app > .row.between:first-of-type > div:first-child .muted{display:none}
  .app > .row.between:first-of-type > div:first-child > div:nth-child(2){font-size:20px!important}
  .app > .row.between:first-of-type > .row{gap:5px}
  .app > .row.between:first-of-type button{min-height:34px;padding:5px 8px;font-size:11px}

  /* Lab controls are secondary on phone. */
  .panel:has(.controls){padding:8px}
  .controls{grid-template-columns:1fr 1fr;gap:5px}
  .controls label{font-size:9px}
  .controls select{padding:6px;font-size:11px}

  /* Replace the large desktop metric wall with a compact 4-stat strip. */
  .heroMetrics{display:none}
  .mobileMood{display:none!important}
  .mobileTopStats{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:4px;
    margin:7px 0
  }
  .mobileTopStat{
    background:var(--panel);
    border:1px solid var(--line);
    border-radius:9px;
    padding:6px 5px;
    min-width:0
  }
  .mobileTopStat span{display:block;font-size:8px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
  .mobileTopStat b{display:block;font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

  .tradeHero{display:block;margin-top:7px}
  .curvePanel{padding:8px;border-radius:12px}
  .curvePanel > .row.between:first-child .muted.tiny{display:none}
  .curveLegend{font-size:9px;gap:7px;margin-top:4px}
  .curveLegend .legendDot:nth-child(3){display:none}
  .densityWrap{margin-top:5px;padding:3px;border-radius:10px}
  .densitySvg{height:172px}

  /* Four-to-five contracts visible, snap centered. */
  .stripGrid{
    display:flex!important;
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    overscroll-behavior-x:contain;
    gap:5px!important;
    padding:6px calc(50% - 36px) 4px!important;
    scrollbar-width:none;
  }
  .stripGrid::-webkit-scrollbar{display:none}
  .intervalStripCompact .cracCell{
    flex:0 0 68px!important;
    min-width:68px!important;
    scroll-snap-align:center;
    padding:7px 3px!important;
    border-radius:9px
  }
  .intervalStripCompact .cracName{font-size:9px}
  .intervalStripCompact .cracPct{font-size:15px}
  .intervalStripCompact .cracTokens{min-height:8px}
  .densityWrap + .tiny{display:none}

  /* Latest Tibo post stays in the primary decision flow. */
  .mobileQuickTweet{
    display:block;
    margin-top:7px;
    padding:8px 9px;
    border:1px solid #5b4b27;
    border-radius:10px;
    background:linear-gradient(180deg,#17150e,#10151e)
  }
  .mobileQuickTweet .tweetText{font-size:12px;font-weight:800}
  .mobileQuickTweet .tweetMeta{font-size:9px;color:var(--muted);margin-top:2px}

  /* Hide the desktop side card/feed from the first mobile screen. */
  .sideCard{display:none}

  /* Payoff is useful but not first-screen critical. */
  .payoffDetails{
    display:block;
    margin-top:7px;
    border-top:1px solid var(--line);
    padding-top:6px
  }
  .payoffDetails summary{
    cursor:pointer;
    color:var(--muted);
    font-size:10px;
    font-weight:800;
    list-style:none
  }
  .payoffDetails summary::-webkit-details-marker{display:none}
  .payoffDetails:not([open]) #payoff{display:none}
  .payoffWrap{margin-top:6px;padding:4px}
  .payoffSvg{height:160px}
  .payoffLegend{font-size:9px;gap:5px}

  /* Everything below becomes secondary scroll content. */
  .panel:has(#eventLog), .grid2:has(#leader), .marketDesk, .panel:has(#auditBody){margin-top:8px}
  .marketDeskTop{grid-template-columns:1fr 1fr}
  .tickerShell{max-width:100%;overflow:hidden}
  .tickerViewport{max-width:100%;overflow:hidden}

  /* Permanent one-thumb trade action. */
  .mobileTradeBar{
    position:relative;
    display:grid;
    grid-template-columns:minmax(0,1fr) 82px 82px;
    gap:6px;
    align-items:center;
    width:100%;
    margin-top:7px;
    padding:8px;
    z-index:4;
    background:linear-gradient(180deg,rgba(18,27,39,.98),rgba(10,15,22,.98));
    border:1px solid var(--line);
    border-radius:11px;
    box-shadow:0 8px 24px rgba(0,0,0,.18)
  }
  .mobileTradeInfo{min-width:0}
  .mobileTradeInfo b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mobileTradeInfo span{font-size:10px;color:var(--muted)}
  .mobileTradeBar button{min-height:44px;padding:7px 6px;font-size:12px;font-weight:850}
}


/* v0.19 engine/UI separation */
.perfGood{color:var(--green)}
.perfWarn{color:var(--amber)}
.invariantGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-top:9px}
.invariantCard{background:#0b1017;border:1px solid var(--line);border-radius:9px;padding:8px}
.invariantCard span{display:block;font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.invariantCard b{display:block;font-size:14px;margin-top:2px}
@media(max-width:700px){.invariantGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* v0.21 simplify + direct curve selection */
.densitySvg{cursor:crosshair;touch-action:manipulation}
@media(max-width:700px){
  /* Mean locations remain as guide lines, but numeric labels are noise on phone. */
  .densitySvg .meanTagHist,.densitySvg .meanTagMkt{display:none}
  /* The contract probabilities + trade bar already provide execution feedback. */
  #tradeMsg{display:none}
  /* Keep payoff visible without turning it into a second giant chart. */
  .payoffDetails{margin-top:7px;padding-top:5px}
  .payoffDetails summary{font-size:9px}
  .payoffSvg{height:108px!important}
  .payoffLegend{display:none!important}
  .payoffWrap{margin-top:4px!important;padding:2px!important}
}


/* v0.22 authoritative local ledger overrides */
:root{--local:#66d9ff}
button,input,select{font:inherit}
input.userInput{background:#0b1017;color:var(--text);border:1px solid var(--line);border-radius:7px;padding:7px 9px;width:110px}
.serverBadge{display:inline-flex;align-items:center;gap:6px;border:1px solid #24566a;background:#0a1b23;border-radius:999px;padding:5px 8px;color:#8fe7ff;font-size:10px;font-weight:800;white-space:nowrap}
.serverDot{width:7px;height:7px;border-radius:50%;background:#4be0a4;box-shadow:0 0 10px rgba(75,224,164,.6)}
.syncLine{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-top:8px}
.adminBar{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.adminBar button{min-height:34px}
.densitySvg{cursor:crosshair;touch-action:manipulation}
.ledgerTable{width:100%;border-collapse:collapse;font-size:11px}
.ledgerTable th,.ledgerTable td{padding:7px 6px;border-bottom:1px solid var(--line);text-align:left;font-variant-numeric:tabular-nums}
.ledgerTable th{color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.05em}
.tradeFlash{min-height:18px;font-size:11px;margin-top:6px}
.tradeFlash.good{color:var(--green)}.tradeFlash.bad{color:var(--red)}
.marketPrints{display:flex;flex-direction:column;gap:5px;max-height:220px;overflow:auto;margin-top:8px}
.marketPrint{display:grid;grid-template-columns:48px 1fr auto;gap:7px;align-items:center;padding:6px 7px;border:1px solid var(--line);border-radius:8px;background:#0b1017;font-size:10px}
.marketPrint .who{font-weight:800;overflow:hidden;text-overflow:ellipsis}.marketPrint .side.buy{color:var(--green)}.marketPrint .side.sell{color:var(--red)}
.ledgerMeta{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:7px;color:var(--muted);font-size:10px}
.ledgerMeta b{color:var(--text)}
.mobileTradeBar{display:none}
.connectionWarn{display:none;border:1px solid #6a4624;background:#271b0d;color:#ffc85c;border-radius:8px;padding:8px;margin:8px 0;font-size:11px}
.connectionWarn.show{display:block}
#densityChart .meanTagHist,#densityChart .meanTagMkt{font-size:11px;font-weight:800}
.payoffDetails{display:block;margin-top:8px;border-top:1px solid var(--line);padding-top:7px}
.payoffDetails summary{cursor:pointer;color:var(--muted);font-size:10px;font-weight:800;list-style:none}.payoffDetails summary::-webkit-details-marker{display:none}
.payoffSvg{height:175px}
.localOnly{border-color:#24566a!important}
.smallBtn{padding:6px 8px!important;min-height:32px!important;font-size:10px!important}
@media(max-width:700px){
  body{padding:0}.app{padding:8px}
  .desktopOnly{display:none!important}
  .app>.row.between:first-of-type{align-items:flex-start;gap:6px}
  .app>.row.between:first-of-type>div:first-child>div:nth-child(2){font-size:20px!important}
  .app>.row.between:first-of-type>div:first-child>.muted{display:none}
  .serverBadge{font-size:8px;padding:4px 6px}
  .controls{grid-template-columns:1fr 1fr;gap:5px}.controls label{font-size:9px}.controls select,.controls input{font-size:11px;padding:6px}
  .panel:has(.controls){padding:8px}
  .heroMetrics{display:none}
  .mobileTopStats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin:7px 0}
  .mobileTopStat{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:6px 5px;min-width:0}
  .mobileTopStat span{display:block;font-size:8px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
  .mobileTopStat b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
  .tradeHero{display:block;margin-top:7px}.curvePanel{padding:8px;border-radius:12px}.sideCard{display:none}
  .curveLegend{font-size:9px;gap:7px}.densityWrap{margin-top:5px;padding:3px;border-radius:10px}.densitySvg{height:172px}
  #densityChart .meanTagHist,#densityChart .meanTagMkt{display:none}
  .stripGrid{display:flex!important;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;gap:5px!important;padding:6px calc(50% - 36px) 4px!important;scrollbar-width:none}
  .stripGrid::-webkit-scrollbar{display:none}.intervalStripCompact .cracCell{flex:0 0 68px!important;min-width:68px!important;scroll-snap-align:center;padding:7px 3px!important;border-radius:9px}
  .intervalStripCompact .cracName{font-size:9px}.intervalStripCompact .cracPct{font-size:15px}
  .mobileTradeBar{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 82px 82px;gap:6px;align-items:center;width:100%;margin-top:7px;padding:8px;background:linear-gradient(180deg,rgba(18,27,39,.98),rgba(10,15,22,.98));border:1px solid var(--line);border-radius:11px}
  .mobileTradeInfo{min-width:0}.mobileTradeInfo b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobileTradeInfo span{font-size:10px;color:var(--muted)}.mobileTradeBar button{min-height:44px;padding:7px 6px;font-size:12px;font-weight:850}
  .payoffSvg{height:108px!important}.payoffLegend{display:none!important}.payoffWrap{margin-top:4px!important;padding:2px!important}
  .grid2,.grid3{grid-template-columns:1fr!important}.marketPrints{max-height:150px}.ledgerTable{font-size:9px}.ledgerTable th,.ledgerTable td{padding:6px 3px}
  .adminBar{gap:4px}.adminBar button{font-size:9px;padding:5px 6px}.userInput{width:82px!important}
}


/* v0.23 settlement / player-switch lab */
.playerQuick{border-color:#24566a!important;color:#8fe7ff!important}
#ledgerStatus.auditfail{color:#ff7482}
@media(max-width:700px){
  .playerQuick{min-width:46px}
}

/* v0.24 explicit lifecycle status */
.cycleChip{
  display:inline-flex;align-items:center;padding:4px 8px;border:1px solid var(--line);
  border-radius:999px;font-size:10px;font-weight:800;color:#d8e4f1;background:#111a27;
  white-space:nowrap
}
.marketLifecycle{
  margin-top:5px;padding:6px 8px;border-radius:8px;border:1px solid transparent;
  font-size:11px;font-weight:750
}
.marketLifecycle.rollover{color:#7ee8c1;background:rgba(75,224,164,.07);border-color:rgba(75,224,164,.22)}
.marketLifecycle.reset{color:#ffd47a;background:rgba(255,200,92,.07);border-color:rgba(255,200,92,.22)}
@media(max-width:700px){
  .cycleChip{font-size:9px;padding:4px 6px}
  .marketLifecycle{font-size:10px}
}

/* v0.25 fun layer — read-only around the validated market core */
.funGrid{align-items:stretch}
.miniTable{width:100%;border-collapse:collapse;font-size:11px}
.miniTable th,.miniTable td{padding:6px 7px;border-bottom:1px solid var(--line);text-align:left}
.miniTable th{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.activityStrip{display:flex;gap:8px;flex-wrap:wrap}
.activityStrip span{display:inline-flex;gap:4px;align-items:baseline;border:1px solid var(--line);border-radius:8px;padding:6px 8px;background:#0e1622}
.activityStrip small{color:var(--muted)}
.tiboLiveCard{background:linear-gradient(180deg,#17150e,#111723)}
.tiboLiveText{font-size:20px;font-weight:850;line-height:1.25;margin-top:14px;min-height:54px}
@media(max-width:700px){
  .funGrid{grid-template-columns:1fr!important}
  .tiboLiveText{font-size:16px;min-height:auto;margin-top:10px}
  .miniTable{font-size:10px}
  .miniTable th,.miniTable td{padding:5px}
}

/* v0.36 Google + GitHub + email magic-link authentication */
.topRight{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.authBox{display:flex;align-items:center}
.authProviders{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.authBtn{
  border:1px solid #586675;background:#0f1722;color:#eef5fb;border-radius:10px;
  padding:8px 12px;font-weight:800;cursor:pointer
}
.authBtn:hover{background:#182333}
.authBtnGoogle{background:#f7f9fc;color:#17202a;border-color:#cbd5df}
.authBtnGoogle:hover{background:#fff}
.authProviderMark{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;margin-right:7px;border-radius:6px;border:1px solid currentColor;font-size:9px;font-weight:900;line-height:1}
.authIdentity{
  display:flex;align-items:center;gap:7px;border:1px solid rgba(75,224,164,.38);
  background:rgba(75,224,164,.08);border-radius:999px;padding:6px 8px 6px 9px
}
.authDot{width:7px;height:7px;border-radius:50%;background:#4be0a4;box-shadow:0 0 8px rgba(75,224,164,.65)}
#authHandle{font-size:11px;font-weight:850;color:#dff9ef}
.authLogout,.authAccountBtn{
  border:0;background:transparent;color:#9db1c3;font-size:10px;cursor:pointer;padding:2px 4px
}
.authLogout:hover,.authAccountBtn:hover{color:#fff}
.authAccountBtn{border-left:1px solid rgba(157,177,195,.25);padding-left:8px}
.userInput:disabled,.smallBtn:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:700px){
  .topRight{gap:5px}
  .authProviders{gap:5px;max-width:420px}
  .authBtn{padding:7px 9px;font-size:11px}
  .authIdentity{padding:5px 7px}
}

/* v0.30.1: author CSS must not override the HTML hidden state */
.authIdentity[hidden],
.authProviders[hidden],
.authBtn[hidden]{
  display:none !important;
}

/* v0.31 market-name onboarding */
.handleModal[hidden]{display:none!important}
.handleModal{
  position:fixed;inset:0;z-index:9999;background:rgba(4,9,15,.74);
  display:flex;align-items:center;justify-content:center;padding:18px;
  backdrop-filter:blur(5px)
}
.handleCard{
  width:min(420px,100%);background:#111b29;border:1px solid #435a70;
  border-radius:16px;padding:22px;box-shadow:0 24px 70px rgba(0,0,0,.45)
}
.handleCard h2{margin:7px 0 6px;font-size:25px}
.handleCard p{font-size:12px;line-height:1.45}
.handleInput{
  width:100%;box-sizing:border-box;margin-top:10px;background:#0b1420;color:#f2f7fb;
  border:1px solid #57728c;border-radius:10px;padding:11px 12px;font-size:17px;font-weight:800;
  outline:none
}
.handleInput:focus{border-color:#4be0a4;box-shadow:0 0 0 2px rgba(75,224,164,.12)}
.handleError{min-height:18px;margin-top:6px;font-size:11px;color:#ff7777}
.handleSaveBtn{
  width:100%;border:1px solid #2aa572;background:#125d42;color:#f0fff9;border-radius:10px;
  padding:10px 12px;font-weight:850;cursor:pointer
}
.handleSaveBtn:hover{background:#177453}
.handleSaveBtn:disabled{opacity:.55;cursor:wait}


/* v0.33 linked sign-in methods */
.accountModal[hidden]{display:none!important}
.accountModal{position:fixed;inset:0;z-index:9998;background:rgba(4,9,15,.72);display:flex;align-items:center;justify-content:center;padding:18px;backdrop-filter:blur(5px)}
.accountCard{position:relative;width:min(460px,100%);background:#111b29;border:1px solid #435a70;border-radius:16px;padding:22px;box-shadow:0 24px 70px rgba(0,0,0,.45)}
.accountCard h2{margin:7px 0 6px;font-size:25px}.accountCard>p{font-size:12px;line-height:1.45;margin-bottom:14px}
.accountClose{position:absolute;right:12px;top:10px;border:0;background:transparent;color:#91a7ba;font-size:24px;cursor:pointer}.accountClose:hover{color:#fff}
.loginMethodRow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid rgba(136,158,178,.18)}
.loginMethodRow>div{display:flex;flex-direction:column;gap:2px}.loginMethodRow small{font-size:10px;color:#91a7ba}.loginMethodRow small.linked{color:#6fe7b2}
.linkMethodBtn{border:1px solid #586675;background:#0f1722;color:#eef5fb;border-radius:9px;padding:7px 10px;font-weight:800;cursor:pointer}.linkMethodBtn:hover{background:#182333}.linkMethodBtn.authBtnGoogle{background:#f7f9fc;color:#17202a;border-color:#cbd5df}.linkMethodBtn:disabled{opacity:.48;cursor:default}

/* v0.34 destructive merge + unlink */
.unlinkMethodBtn{border-color:#6b3b45!important;background:#24151a!important;color:#ffb7bf!important}
.unlinkMethodBtn:hover{background:#311a21!important}
.mergeModal{z-index:10000}
.mergeCard{border-color:#7d3f49;box-shadow:0 26px 80px rgba(0,0,0,.55),0 0 0 1px rgba(255,94,110,.08) inset}
.mergeDangerLabel{display:inline-flex;align-items:center;border:1px solid #7d3f49;background:#2c161b;color:#ff9aa4;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.mergeWarning{margin-top:14px;border:1px solid #71343f;background:#251318;border-radius:12px;padding:14px;color:#ffd9dd;font-size:12px;line-height:1.48}
.mergeWarning p{margin:8px 0 0}.mergeWarning .tiny{color:#d8aeb4}
.mergeActions{display:flex;justify-content:flex-end;gap:9px;margin-top:15px}
.mergeActions button{border:1px solid #586675;background:#0f1722;color:#eef5fb;border-radius:9px;padding:9px 12px;font-weight:800;cursor:pointer}
.mergeActions .mergeConfirm{border-color:#7d3f49;background:#421d25;color:#ffe8eb}
.mergeActions .mergeConfirm:hover{background:#562630}
.mergeActions button:disabled{opacity:.5;cursor:wait}


/* v0.36 email magic-link */
.emailInput{
  width:100%;box-sizing:border-box;margin-top:10px;background:#0b1420;color:#f2f7fb;
  border:1px solid #57728c;border-radius:10px;padding:11px 12px;font-size:15px;font-weight:750;outline:none
}
.emailInput:focus{border-color:#66d9ff;box-shadow:0 0 0 2px rgba(102,217,255,.12)}
#emailError.good{color:#6fe7b2;line-height:1.35}
.emailCard .compactNote{line-height:1.42}
@media(max-width:700px){
  .authProviders{max-width:350px}
  #emailLoginBtn{flex-basis:100%}
}

/* v0.37 passkeys */
.passkeyCard{width:min(500px,100%)}
.passkeyList{display:flex;flex-direction:column;gap:8px;margin:12px 0}
.passkeyItem{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px;border:1px solid rgba(136,158,178,.22);border-radius:10px;background:#0d1622}
.passkeyItemMeta{display:flex;flex-direction:column;gap:2px;min-width:0}
.passkeyItemMeta b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.passkeyItemMeta small{font-size:10px;color:#91a7ba}
.passkeyDeleteBtn{border:1px solid #7a3d49;background:#2b141a;color:#ff9aa6;border-radius:8px;padding:6px 9px;font-weight:800;cursor:pointer}
.passkeyDeleteBtn:disabled{opacity:.45;cursor:default}


/* v0.38 player/admin separation */
.devAdminBtn{border:1px solid #725d2e;background:#211a0d;color:#ffd36b;border-radius:999px;padding:5px 8px;font-size:9px;font-weight:900;letter-spacing:.08em;cursor:pointer}
.devAdminBtn:hover{background:#302512}.devAdminBtn[hidden]{display:none!important}
.devAdminModal{z-index:10020}.devAdminCard{width:min(620px,100%);max-height:min(86vh,760px);overflow:auto;border-color:#705d35}
.devDangerLabel{display:inline-flex;align-items:center;border:1px solid #705d35;background:#251e10;color:#ffd36b;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.devSection{margin-top:14px;padding-top:12px;border-top:1px solid rgba(136,158,178,.18)}
.devSectionTitle{font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:#d7e2ec}
.devDiag{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;color:#91a7ba;font-size:10px}.devDiag b{color:#e8f0f7}
.devDestructive{border-top-color:rgba(255,116,130,.25)}
.dangerDevBtn{margin-top:10px;border:1px solid #7d3f49;background:#421d25;color:#ffe8eb;border-radius:9px;padding:8px 11px;font-weight:850;cursor:pointer}.dangerDevBtn:hover{background:#562630}
@media(max-width:700px){.devAdminCard{padding:18px}.devAdminCard .adminBar{gap:6px}.devAdminCard .adminBar button{min-height:36px}.devDiag{gap:7px}}

/* v0.39.1 resolver consensus + operator control room */
.controlRoomSafety{border-top-color:rgba(255,193,79,.28)}
.resolverModeBadge{display:inline-flex;align-items:center;border:1px solid #6f5a28;background:#221b0d;color:#ffd66e;border-radius:999px;padding:4px 8px;font-size:9px;font-weight:900;letter-spacing:.06em}
.controlRoomSummary{margin-top:9px;display:flex;gap:7px;flex-wrap:wrap}
.controlStateChip{border:1px solid var(--line);background:#0e1622;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:850}
.controlStateChip.good{color:#75e6b7;border-color:rgba(75,224,164,.35);background:rgba(75,224,164,.07)}
.controlStateChip.warn{color:#ffd36b;border-color:rgba(255,198,79,.35);background:rgba(255,198,79,.07)}
.controlStateChip.bad{color:#ff9aa4;border-color:rgba(255,94,110,.38);background:rgba(255,94,110,.08)}
.devReasonInput,.resolverField input,.resolverCompose textarea,.resolverCompose input{box-sizing:border-box;background:#0b1420;color:#edf5fb;border:1px solid #4b6176;border-radius:8px;padding:8px 9px;outline:none}
.devReasonInput{width:100%;margin-top:8px}.devReasonInput:focus,.resolverField input:focus,.resolverCompose textarea:focus,.resolverCompose input:focus{border-color:#66d9ff}
.nuclearBtn{width:100%;margin-top:9px;border:1px solid #a43d4d;background:#5a1824;color:#fff1f3;border-radius:10px;padding:9px 11px;font-weight:950;letter-spacing:.05em;cursor:pointer}.nuclearBtn:hover{background:#731f2f}
.resolverSection{border-top-color:rgba(102,217,255,.22)}
.resolverCompose{margin-top:10px}.resolverCompose textarea{width:100%;resize:vertical;min-height:72px;font-family:inherit;line-height:1.35}
.resolverComposeRow{display:flex;align-items:end;gap:7px;flex-wrap:wrap;margin-top:7px}.resolverComposeRow label{display:flex;flex-direction:column;gap:4px;font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.resolverComposeRow input{min-width:190px}
.resolverEvents{margin-top:10px;border:1px solid rgba(136,158,178,.18);border-radius:10px;overflow:hidden;max-height:250px;overflow-y:auto}
.resolverEvent{display:grid;grid-template-columns:86px 1fr auto;gap:8px;align-items:start;padding:9px 10px;border-top:1px solid rgba(136,158,178,.12);cursor:pointer}.resolverEvent:first-child{border-top:0}.resolverEvent:hover{background:#132030}.resolverEventText{font-size:11px;line-height:1.35}.resolverEventMeta{font-size:9px;color:var(--muted);margin-top:3px}
.resolverClassBadge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:4px 7px;font-size:9px;font-weight:900;letter-spacing:.04em;border:1px solid #526273;background:#101925;color:#cbd7e3;white-space:nowrap}.resolverClassBadge.confirmed{color:#6fe7b2;border-color:#2d8f68;background:#0f2d22}.resolverClassBadge.future{color:#7fc8ff;border-color:#366a8f;background:#102637}.resolverClassBadge.verifying{color:#ffd36b;border-color:#725d2e;background:#241d0e}.resolverClassBadge.limited{color:#ffb1bd;border-color:#763c49;background:#2b151b}.resolverClassBadge.rule_change{color:#c9b5ff;border-color:#5a4787;background:#1b1530}.resolverClassBadge.irrelevant{color:#99a8b7}
.resolverDecisionPane{margin-top:10px;border:1px solid #42566a;background:#0d1622;border-radius:10px;padding:11px}.resolverDecisionPane[hidden]{display:none!important}.resolverDecisionText{font-size:13px;font-weight:800;line-height:1.35;margin-top:8px}.resolverField{display:flex;flex-direction:column;gap:4px;margin-top:8px;font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.resolverDecisionActions{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}.resolverDecisionActions .dangerDevBtn{margin-top:0}
@media(max-width:700px){.resolverEvent{grid-template-columns:74px 1fr}.resolverEvent>small{grid-column:2}.resolverComposeRow>*{width:100%}.resolverComposeRow input{width:100%;min-width:0}.resolverDecisionActions button{flex:1}}

.resolverModeBadge.armed{border-color:#2d8f68;background:#0f2d22;color:#79efb9;box-shadow:0 0 0 1px rgba(73,210,147,.08) inset}.resolverAutoBtn.armed{border-color:#2d8f68!important;color:#79efb9!important;background:#0f2d22!important}.resolverAutoBtn:not(.armed){border-color:#8a6d2c;color:#ffd36b}.resolverClassBadge.auto_eligible{color:#6fe7b2;border-color:#2d8f68;background:#0f2d22}

/* =========================================================
   v0.40 · PLAYER-FIRST SHELL
   Everything below intentionally overrides the older lab UI.
   ========================================================= */
.playerFirst{background:radial-gradient(circle at 50% -15%,#1c2638 0,#0a0e14 38%,#07090d 75%);min-height:100vh}
.playerApp{max-width:1260px;padding:14px 16px 54px;margin:0 auto}
.playerHeader{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:2px 0 12px}
.brandBlock{display:flex;align-items:center;gap:10px;min-width:0}.brandMark{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:linear-gradient(145deg,#19283a,#0d141e);border:1px solid #345071;color:#fff;font-weight:950;letter-spacing:-.04em}.brandName{font-size:19px;font-weight:900;line-height:1.05}.brandSub{font-size:11px;color:var(--muted);margin-top:3px}.betaPill,.labBadge{display:inline-flex;align-items:center;border:1px solid #5b4b27;background:#1b170e;color:var(--amber);border-radius:999px;padding:2px 6px;font-size:8px;letter-spacing:.1em;vertical-align:middle;margin-left:5px}.headerActions{display:flex;align-items:center;justify-content:flex-end;gap:7px;min-width:0}.headerActions .authProviders{gap:5px}.headerActions .authBtn{min-height:34px;padding:5px 9px;font-size:10px}.headerActions .serverBadge{min-height:34px}

.marketTape{display:flex;align-items:stretch;overflow-x:auto;white-space:nowrap;border:1px solid var(--line);border-radius:11px;background:#070a0f;scrollbar-width:none;margin-bottom:14px}.marketTape::-webkit-scrollbar{display:none}.tapeBrand{display:flex;align-items:center;padding:8px 11px;background:#1b2330;color:var(--amber);font-size:9px;font-weight:950;letter-spacing:.11em}.tapeItem{display:flex;align-items:center;gap:7px;padding:7px 12px;border-left:1px solid var(--line);font-variant-numeric:tabular-nums}.tapeItem span{font-size:9px;color:var(--muted);font-weight:850;letter-spacing:.06em}.tapeItem b{font-size:12px}.tapeSelected b{color:var(--green)}

.gameIntro{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(360px,.8fr);gap:14px;align-items:stretch;margin-bottom:12px}.introCopy,.howSteps{background:linear-gradient(180deg,#121a26,#0d131c);border:1px solid var(--line);border-radius:18px}.introCopy{padding:19px 21px}.eyebrow{font-size:9px;font-weight:900;letter-spacing:.14em;color:var(--amber);text-transform:uppercase}.introCopy h1,.sectionHead h2{margin:4px 0 4px;letter-spacing:-.025em}.introCopy h1{font-size:31px;line-height:1.05}.introCopy p{font-size:14px;color:#c7d0dc;max-width:720px;margin:8px 0 0}.cracExample{display:flex;align-items:center;gap:10px;margin-top:13px;padding:9px 11px;border:1px solid #2f4158;border-radius:11px;background:#0a1119;font-size:11px;color:#c8d2df}.cracExample>b{color:var(--blue);text-transform:uppercase;font-size:9px;letter-spacing:.08em}.cracExample strong{color:#fff}
.howSteps{display:grid;grid-template-columns:1fr;padding:8px 14px}.howStep{display:flex;align-items:center;gap:11px;padding:9px 2px;border-bottom:1px solid rgba(39,49,65,.72)}.howStep:last-child{border-bottom:none}.howStep i{font-style:normal;width:27px;height:27px;border-radius:50%;display:grid;place-items:center;background:#172436;border:1px solid #31557d;color:var(--blue);font-weight:900;font-size:11px}.howStep div{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}.howStep b{font-size:12px}.howStep span{font-size:10px;color:var(--muted)}

.portfolioStrip{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 9px}.portfolioCard{background:#101722;border:1px solid var(--line);border-radius:14px;padding:11px 13px;min-width:0}.portfolioCard.primaryPortfolio{border-color:#345071}.portfolioCard>span{display:block;color:var(--muted);font-size:9px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.portfolioCard>b{display:block;font-size:23px;line-height:1.1;margin-top:2px;font-variant-numeric:tabular-nums}.portfolioCard small{display:block;color:var(--muted);font-size:9px;margin-top:3px}.portfolioCard small strong{color:#cfd7e3}.portfolioCard small strong.good{color:var(--green)}.portfolioCard small strong.bad{color:var(--red)}.playerLifecycle{margin:0 0 9px;padding:7px 10px;border-radius:9px;border:1px solid transparent;font-size:10px;background:rgba(17,23,34,.55)}
.portfolioStrip[hidden],.payoffCard[hidden],.tradeHistoryDetails[hidden]{display:none!important}

.playerTradeLayout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:10px;align-items:start}.marketCard,.tradeTicket,.payoffCard,.tiboCard,.leaderCard{background:var(--panel);border:1px solid var(--line);border-radius:17px;padding:14px}.sectionHead{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.sectionHead h2{font-size:20px;line-height:1.1}.sectionHead p{margin:3px 0 0;color:var(--muted);font-size:10px}.cycleMini{text-align:right;color:var(--muted);font-size:9px;white-space:nowrap}.cycleMini b{display:block;color:#fff;font-size:17px}.cycleMini span{display:block}.playerDensity{margin-top:10px;padding:6px}.playerDensity .densitySvg{height:205px}.playerLegend{justify-content:flex-start;margin:3px 7px 1px}.playerLegend .legendHelp{margin-left:auto;color:var(--muted);font-size:9px}.playerCracs{margin-top:8px}.playerCracs .cracCell{transition:border-color .12s ease,transform .12s ease,background .12s ease}.playerCracs .cracCell:hover{transform:translateY(-1px);border-color:#3a4c63}.playerCracs .cracCell.selected{border-color:var(--blue);background:#152236;box-shadow:0 0 0 1px rgba(125,183,255,.35) inset}.cracFootnote{font-size:9px;color:var(--muted);margin:6px 2px 0;text-align:center}

.tradeTicket{position:sticky;top:10px;border-color:#33455d;background:linear-gradient(180deg,#111a27,#0d131c)}.ticketTop{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-top:5px}.ticketName{font-size:29px;font-weight:950;letter-spacing:-.045em}.ticketRange{font-size:11px;color:var(--muted);font-weight:700}.ticketChance{text-align:right}.ticketChance span{display:block;color:var(--muted);font-size:9px}.ticketChance b{display:block;font-size:24px;color:var(--green);font-variant-numeric:tabular-nums}.ticketExplain{margin:11px 0 8px;padding:9px 10px;border-radius:10px;background:#0a1119;border:1px solid #2a394d;color:#d4dce7;font-size:11px;line-height:1.4}.ticketPay,.ticketStats>div{display:flex;justify-content:space-between;gap:10px;align-items:center}.ticketPay{padding:7px 0;border-bottom:1px solid var(--line);font-size:10px}.ticketPay span,.ticketStats span{color:var(--muted)}.ticketPay b{color:var(--amber)}.ticketStats{padding-top:2px}.ticketStats>div{padding:6px 0;font-size:10px;border-bottom:1px solid rgba(39,49,65,.55)}.bigTradeActions{display:grid;grid-template-columns:1.35fr .85fr;gap:7px;margin-top:12px}.bigTradeActions button{min-height:52px;font-size:13px;border-radius:12px;letter-spacing:.02em}.buyHero{background:#103324;border-color:#2c7657;color:#70efb7}.sellHero{background:#2a1418;border-color:#743743;color:#ff9eaa}.tradeTicket .tradeFlash{margin-top:8px;min-height:18px;font-size:10px}.ticketMicro{color:var(--muted);font-size:9px;border-top:1px solid var(--line);padding-top:7px;margin-top:7px}.playerMobileTrade{display:none!important}

.payoffCard{margin-top:10px}.compactHead{align-items:center}.payoffKey{font-size:9px;color:var(--muted);display:flex;align-items:center;gap:6px;white-space:nowrap}.gainDot,.lossDot{width:7px;height:7px;border-radius:50%;display:inline-block}.gainDot{background:var(--green)}.lossDot{background:var(--red)}.payoffCard .payoffWrap{border:none;background:transparent;padding:0;margin-top:5px}.payoffCard .payoffSvg{height:210px}.payoffCard .payoffLegend{display:none}

.adSlot{min-height:84px;margin:10px 0;border:1px dashed #3b4656;border-radius:13px;background:repeating-linear-gradient(-45deg,#0b1017,#0b1017 9px,#0d1219 9px,#0d1219 18px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--muted);gap:2px}.adSlot>span{font-size:8px;letter-spacing:.14em}.adSlot>b{font-size:11px;color:#a8b2bf}.adSlot small{font-size:8px}

.contentGrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.tiboCard blockquote{margin:13px 0 8px;padding:14px;border-radius:12px;background:#0a1119;border:1px solid #2a394d;font-size:18px;font-weight:750;line-height:1.35;letter-spacing:-.015em}.postMeta{font-size:9px;color:var(--muted)}.postRule{font-size:9px;color:var(--muted);margin-top:9px;padding-top:8px;border-top:1px solid var(--line)}.population{font-size:9px;color:var(--muted)}.playerLeader{margin-top:9px}.playerLeader th,.playerLeader td{padding:7px 5px}.playerLeader tbody tr:first-child td{font-weight:800}

.supportRow{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;padding:12px 14px;border:1px solid #493c24;background:linear-gradient(90deg,#15120c,#101722);border-radius:14px}.supportCopy{display:flex;align-items:center;gap:10px}.coffeeIcon{font-size:24px}.supportCopy b,.supportCopy span{display:block}.supportCopy b{font-size:12px}.supportCopy div>span{font-size:9px;color:var(--muted);margin-top:2px}.coffeeBtn{background:#f4d59b;color:#25190b;border-color:#f4d59b;min-height:36px;font-size:10px}

.advancedDetails{margin-top:10px;border:1px solid var(--line);border-radius:13px;background:#0d1219;overflow:hidden}.advancedDetails>summary{cursor:pointer;padding:10px 12px;font-size:10px;font-weight:800;color:#b7c1cf}.advancedDetails>summary span{float:right;color:var(--muted);font-size:8px;text-transform:uppercase;letter-spacing:.08em}.advancedGrid{display:grid;grid-template-columns:.7fr 1.3fr;gap:8px;padding:0 9px 9px}.advancedPanel{background:#0a0f16;border:1px solid var(--line);border-radius:10px;padding:10px;min-width:0}.ledgerScroll{overflow:auto;max-height:260px}.playerFooter{text-align:center;color:#6f7a89;font-size:8px;padding:18px 5px 0}.playerHiddenTelemetry{display:none!important}

/* Make old component internals fit the new player shell. */
.playerFirst .stripGrid{grid-template-columns:repeat(16,minmax(0,1fr));gap:3px;padding:0}.playerFirst .intervalStripCompact .cracCell{padding:7px 3px}.playerFirst .intervalStripCompact .cracName{font-size:9px}.playerFirst .intervalStripCompact .cracPct{font-size:13px}.playerFirst .miniTable{width:100%;border-collapse:collapse}.playerFirst .miniTable th,.playerFirst .miniTable td{border-bottom:1px solid var(--line);text-align:left;font-size:10px}.playerFirst .miniTable th:last-child,.playerFirst .miniTable td:last-child{text-align:right}.playerFirst .miniTable th:nth-child(3),.playerFirst .miniTable td:nth-child(3){text-align:right}.playerFirst .marketPrints{margin-top:8px}.playerFirst .marketPrint{font-size:9px}.playerFirst .ledgerMeta{font-size:9px}.playerFirst .ledgerTable{font-size:9px}.playerFirst .authBox{max-width:none}

@media(max-width:980px){
  .gameIntro{grid-template-columns:1fr}.howSteps{grid-template-columns:repeat(3,1fr);padding:8px 10px}.howStep{border-bottom:none;border-right:1px solid rgba(39,49,65,.72);padding:7px 9px}.howStep:last-child{border-right:none}.howStep div{display:block}.howStep span{display:block;margin-top:2px}
  .playerTradeLayout{grid-template-columns:1fr}.tradeTicket{position:static}.contentGrid{grid-template-columns:1fr}.advancedGrid{grid-template-columns:1fr}
  .playerFirst .stripGrid{grid-template-columns:repeat(8,minmax(0,1fr))}
}

@media(max-width:700px){
  .playerFirst{padding:0}.playerApp{padding:9px 9px 40px}.playerHeader{align-items:flex-start}.brandMark{width:34px;height:34px;border-radius:9px}.brandName{font-size:17px}.brandSub{font-size:9px}.headerActions{gap:4px}.headerActions .authProviders{max-width:175px;justify-content:flex-end}.headerActions .authBtn{min-height:30px;padding:4px 7px;font-size:9px}.headerActions .authPasskeyCompact{display:none}.headerActions .serverBadge{min-height:30px;font-size:8px}.marketTape{margin-bottom:9px;border-radius:9px}.tapeItem{padding:6px 9px}.tapeBrand{padding:7px 9px}
  .gameIntro{gap:7px;margin-bottom:7px}.introCopy{padding:14px}.introCopy h1{font-size:26px}.introCopy p{font-size:12px;line-height:1.45}.cracExample{align-items:flex-start;font-size:10px}.howSteps{display:grid;grid-template-columns:1fr 1fr 1fr;padding:5px}.howStep{display:block;text-align:center;padding:6px 3px}.howStep i{margin:0 auto 5px;width:23px;height:23px}.howStep b{font-size:10px}.howStep span{font-size:8px;line-height:1.25}
  .portfolioStrip{gap:5px}.portfolioCard{padding:8px 7px}.portfolioCard>b{font-size:17px}.portfolioCard>span{font-size:7px}.portfolioCard small{font-size:7px}.playerLifecycle{font-size:9px}
  .marketCard,.tradeTicket,.payoffCard,.tiboCard,.leaderCard{padding:10px;border-radius:13px}.sectionHead h2{font-size:17px}.cycleMini b{font-size:14px}.playerDensity .densitySvg{height:150px}.playerLegend{font-size:8px}.playerFirst .stripGrid{display:flex!important;overflow-x:auto;scroll-snap-type:x mandatory;gap:5px!important;padding:6px calc(50% - 36px) 4px!important;scrollbar-width:none}.playerFirst .stripGrid::-webkit-scrollbar{display:none}.playerFirst .intervalStripCompact .cracCell{flex:0 0 68px!important;min-width:68px!important;scroll-snap-align:center;padding:7px 4px}.playerFirst .intervalStripCompact .cracName{font-size:9px}.playerFirst .intervalStripCompact .cracPct{font-size:14px}
  .ticketName{font-size:25px}.ticketChance b{font-size:21px}.ticketExplain{font-size:10px}.bigTradeActions button{min-height:48px;font-size:12px}.payoffCard .payoffSvg{height:165px}.adSlot{min-height:72px}.tiboCard blockquote{font-size:16px;padding:12px}.supportRow{padding:10px}.supportCopy div>span{max-width:210px}.advancedDetails{margin-top:8px}
}
.playerAuthBox{display:flex;align-items:center}.signInLauncher{min-height:34px;padding:6px 13px;background:#17263a;border-color:#31557d;color:#eaf3ff;font-size:10px}.loginChoiceCard{max-width:430px}.loginProviderStack{display:grid!important;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}.loginProviderStack .authBtn{min-height:46px;justify-content:flex-start;padding:8px 12px}.loginProviderStack[hidden]{display:none!important}
@media(max-width:700px){.signInLauncher{min-height:30px;padding:4px 9px;font-size:9px}.loginProviderStack{grid-template-columns:1fr}}

/* =========================================================
   v0.40.2 · PLAYER CLARITY / CNBC TAPE / CORRECT TAIL CURVE
   ========================================================= */
.srOnly{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* The tape now ends in an actual news strip instead of empty navy space. */
.cnbcTape{display:grid!important;grid-template-columns:auto auto auto auto auto minmax(220px,1fr);align-items:stretch;overflow:visible!important;position:relative;border-top:2px solid #f0b84b;background:#09101a;box-shadow:0 5px 18px rgba(0,0,0,.18)}
.cnbcTape .tapeBrand{display:flex;align-items:center;background:#142238;color:#ffc85c;font-weight:950;letter-spacing:.08em}
.cnbcTape .tapeItem{position:relative;display:grid;grid-template-columns:auto auto;grid-template-rows:auto auto;column-gap:7px;align-content:center;min-width:106px;padding:7px 10px;border-right:1px solid #344258;background:#0d1725;white-space:nowrap}
.cnbcTape .tapeItem>span{grid-column:1;grid-row:1 / span 2;align-self:center;color:#aeb8c6;font-size:8px;font-weight:900;letter-spacing:.06em}
.cnbcTape .tapeItem>b{grid-column:2;grid-row:1;align-self:end;color:#f4f7fb;font-size:12px;font-variant-numeric:tabular-nums}
.cnbcTape .tapeItem>small{grid-column:2;grid-row:2;color:#77869a;font-size:7px;line-height:1}
.cnbcTape .tapeSelected b{color:#58e1ae}.cnbcTape .tapeSelected span{color:#d9e6f7}
.breakingStrip{min-width:0;display:flex;align-items:center;overflow:hidden;background:linear-gradient(90deg,#121b2a,#0a1018);font-size:9px}
.breakingStrip>span{height:100%;display:flex;align-items:center;padding:0 10px;background:#a9182b;color:#fff;font-size:8px;font-weight:950;letter-spacing:.09em;flex:0 0 auto}
.breakingStrip>div{min-width:0;padding:0 12px;color:#e5ebf3;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tapeTooltip{cursor:help}.tapeTooltip:after{content:attr(data-tooltip);position:absolute;z-index:80;left:6px;top:calc(100% + 8px);width:280px;max-width:70vw;padding:8px 10px;border:1px solid #3a4a60;border-radius:8px;background:#080d14;color:#dce5f0;font-size:9px;line-height:1.4;font-weight:500;letter-spacing:0;white-space:normal;box-shadow:0 10px 28px rgba(0,0,0,.38);opacity:0;pointer-events:none;transform:translateY(-3px);transition:.12s ease}
.tapeTooltip:hover:after,.tapeTooltip:focus-within:after{opacity:1;transform:none}

/* Top ad placeholder: horizontal, clearly labelled and away from trading actions. */
.topBannerAd{min-height:72px;margin:8px 0 10px;border-radius:10px;background:repeating-linear-gradient(-45deg,#0a0f16,#0a0f16 10px,#0c121a 10px,#0c121a 20px)}
.topBannerAd>b{font-size:10px}.topBannerAd small{font-size:8px}

.termGrid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:9px}.termCard{display:grid;grid-template-columns:38px 1fr;gap:9px;align-items:start;padding:9px 10px;border:1px solid #38506b;border-radius:10px;background:#0d1827}.termCard>b{color:#63c7ff;font-size:10px;letter-spacing:.05em}.termCard>span{color:#cbd5e1;font-size:9px;line-height:1.35}.termCard strong{color:#f3f6fa}
.tokenLimitNote{margin:3px 7px 7px;padding:7px 8px;border-top:1px solid rgba(39,49,65,.8);color:#aeb8c6;font-size:9px;text-align:center}.tokenLimitNote b{color:#fff}

/* Remove persistent lifecycle toast from the player surface; only operational pauses may reveal it via JS. */
.playerLifecycle[hidden]{display:none!important}

.playerMarketWithSignal{grid-template-columns:minmax(0,1fr) 345px;align-items:start}.centralSignalCard{position:sticky;top:10px;border-color:#594b2d;background:linear-gradient(180deg,#121c2b,#0d141e)}.centralSignalCard blockquote{margin:22px 0 10px;padding:16px;border-radius:12px;background:#0b1522;border:1px solid #426081;font-size:19px;font-weight:800;line-height:1.45}.centralSignalCard .postRule{margin-top:12px}
.marketSectionHead{align-items:flex-end}.densityExplainer{max-width:700px!important;line-height:1.45!important}.densityExplainer b{color:#dfe8f4}.cycleMini b{margin-top:2px}.playerDensity{padding:7px 8px 4px}.playerDensity .densitySvg{height:auto;aspect-ratio:1000/230;max-height:230px}
.playerLegend{display:flex!important;align-items:center;gap:16px!important;margin:5px 7px 2px!important;flex-wrap:wrap}.legendLine{display:inline-flex;align-items:center;gap:7px;color:#c2ccd9;font-size:8px;font-weight:850;letter-spacing:.04em}.legendLine i{display:inline-block;width:25px;height:0;border-top:3px solid}.legendLine.marketLine i{border-color:#4be0a4}.legendLine.historyLine i{border-color:#ffc85c;border-top-style:dashed;border-top-width:2px}.tailLegend{margin-left:auto;padding:3px 7px;border:1px solid #3a4759;border-radius:6px;color:#c6d0dc;font-size:8px;background:#0a1119}

/* Selected contract + only two trade buttons. */
.compactTradeBar{margin-top:9px;padding:10px;border:1px solid #334760;border-radius:12px;background:linear-gradient(90deg,#101a28,#0b111a)}.compactTradeSelected{display:grid;grid-template-columns:minmax(130px,1.1fr) .8fr .8fr;gap:10px;align-items:center}.compactTradeSelected>div{min-width:0}.compactTradeSelected span,.compactTradeSelected small{display:block;color:#8390a1;font-size:8px}.compactTradeSelected b{display:block;color:#f3f6fb;font-size:15px;line-height:1.15}.compactTradeSelected>div:first-child>b{font-size:22px;letter-spacing:-.03em}.compactChance b{color:#58e1ae}.compactOwned{text-align:right}.compactOwned small{margin-top:2px}
.simpleTradeButtons{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}.simpleTradeButtons button{min-height:54px;border-radius:11px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:12px;font-weight:900}.simpleTradeButtons button span{font-weight:950}.simpleTradeButtons button b{font-size:13px;font-variant-numeric:tabular-nums}.compactTradeBar .tradeFlash{margin:6px 2px 0;min-height:14px;font-size:9px;text-align:center}.playerMobileTrade{display:none!important}

/* Payoff: readable axis, less height, no stretched SVG text. */
.compactPayoffCard{padding-bottom:10px}.compactPayoffCard .payoffSvg{height:auto;aspect-ratio:1000/250;max-height:250px;min-height:165px}.compactPayoffCard .payoffWrap{margin-top:3px}.payoffKey{font-size:8px}

.fullLeaderCard{margin-top:10px}.leaderPager{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:9px}.leaderPager button{min-width:92px}.leaderPager span{font-size:9px;color:#9ba8b8;font-variant-numeric:tabular-nums}.leaderYou{margin-top:8px;padding:8px 10px;border:1px solid #3a5575;border-radius:9px;background:#101c2c;font-size:10px}.leaderYou:empty{display:none}.leaderYou b{color:#fff}.leaderYou .good{color:var(--green)}.leaderYou .bad{color:var(--red)}.playerLeader tr.isYou td{background:rgba(70,120,180,.12);font-weight:850}

.headlineControl{display:grid;grid-template-columns:1fr auto;gap:7px;margin-top:7px}.headlineControl button{min-width:100px}.svgMark{display:inline-flex!important;align-items:center;justify-content:center}.svgMark svg{width:18px;height:18px;fill:currentColor}.googleMark{font-family:Arial,sans-serif;font-weight:950;background:conic-gradient(from -45deg,#4285f4 0 25%,#34a853 0 50%,#fbbc05 0 75%,#ea4335 0);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:20px}

@media(max-width:1050px){.cnbcTape{grid-template-columns:auto auto auto auto auto;overflow-x:auto!important}.breakingStrip{grid-column:1/-1;min-height:28px}.playerMarketWithSignal{grid-template-columns:1fr}.centralSignalCard{position:static}.centralSignalCard blockquote{margin-top:12px}}
@media(max-width:700px){.cnbcTape{display:flex!important;overflow-x:auto!important;scrollbar-width:none}.cnbcTape::-webkit-scrollbar{display:none}.cnbcTape .tapeItem{min-width:105px}.breakingStrip{min-width:250px;min-height:auto}.topBannerAd{min-height:58px}.termGrid{grid-template-columns:1fr}.compactTradeSelected{grid-template-columns:1fr 1fr}.compactOwned{grid-column:1/-1;text-align:left;display:flex;align-items:center;gap:8px}.compactOwned span,.compactOwned b,.compactOwned small{display:inline}.simpleTradeButtons button{min-height:50px}.playerLegend{gap:10px!important}.tailLegend{margin-left:0}.centralSignalCard blockquote{font-size:16px}.leaderPager{gap:7px}.leaderPager button{min-width:78px;padding:6px 8px}}
.tailLegend.selectedTail{border-color:#6ea6df;background:#13243a;color:#eef6ff;box-shadow:0 0 0 1px rgba(110,166,223,.2) inset}


/* =========================================================
   v0.40.3 · COMPACT RULES / CLEAN NEWS / EXACT CRAC ANCHORS
   ========================================================= */
.gameRules{margin:0 0 8px;border:1px solid var(--line);border-radius:12px;background:linear-gradient(180deg,#111925,#0c121a);overflow:hidden}
.gameRules>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:14px;cursor:pointer;padding:8px 11px;user-select:none}
.gameRules>summary::-webkit-details-marker{display:none}.rulesLead{display:flex;align-items:center;gap:10px;min-width:0}.rulesLead .eyebrow{flex:0 0 auto}.rulesLead>b{font-size:10px;color:#dce4ee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rulesMeta{display:flex;align-items:center;gap:10px;flex:0 0 auto}.rulesMeta span{color:#8f9bad;font-size:8px}.rulesMeta strong{font-size:9px;color:#7db7ff;border:1px solid #345271;border-radius:999px;padding:4px 8px;font-weight:850}.rulesMeta strong:after{content:' ▾';color:#8ea6c0}.gameRules[open] .rulesMeta strong:after{content:' ▴'}
.rulesBody{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(330px,.65fr);gap:10px;padding:0 10px 9px;border-top:1px solid rgba(73,91,114,.35)}.rulesCopy{padding-top:8px}.rulesCopy p{margin:0 0 5px;color:#b9c4d1;font-size:9px;line-height:1.45}.rulesCopy p:last-child{margin-bottom:0}.rulesCopy b,.rulesCopy strong{color:#f0f4f8}.compactHow{grid-template-columns:repeat(3,1fr);padding:5px 4px;background:transparent;border:0;border-radius:0}.compactHow .howStep{border-bottom:0;border-right:1px solid rgba(39,49,65,.72);padding:6px 7px}.compactHow .howStep:last-child{border-right:0}.compactHow .howStep i{width:22px;height:22px;font-size:9px}.compactHow .howStep b{font-size:10px}.compactHow .howStep span{font-size:8px}

/* The top ad placeholder was consuming prime trading space. Keep ad infrastructure elsewhere, not above the game. */
.topBannerAd{display:none!important}

/* Compact financial-news treatment: no oversized red slab. */
.breakingStrip{position:relative;border-left:2px solid #d22d46;background:linear-gradient(90deg,#0d1724,#09101a)}
.breakingStrip>span{height:auto;padding:0 9px;background:transparent;color:#ff6676;border-right:1px solid #344258;font-size:7px;letter-spacing:.11em;gap:6px}
.breakingStrip>span i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#e33850;box-shadow:0 0 8px rgba(227,56,80,.55)}
.breakingStrip>div{padding:0 10px;color:#e8edf4;font-size:8px;font-weight:800}

/* CRAC strip: all 16 contracts remain visible; no horizontal mobile carousel. */
@media(max-width:700px){
  .gameRules>summary{padding:7px 8px;gap:7px}.rulesLead{display:block}.rulesLead .eyebrow{display:block;margin-bottom:2px}.rulesLead>b{display:block;max-width:245px;font-size:8px}.rulesMeta span{display:none}.rulesMeta strong{font-size:8px;padding:4px 6px}.rulesBody{grid-template-columns:1fr;padding:0 7px 7px}.compactHow{grid-template-columns:repeat(3,1fr)}
  .playerFirst .stripGrid{display:grid!important;grid-template-columns:repeat(8,minmax(0,1fr))!important;overflow:visible!important;scroll-snap-type:none!important;gap:3px!important;padding:4px 0!important}
  .playerFirst .intervalStripCompact .cracCell{min-width:0!important;flex:none!important;padding:5px 1px!important;scroll-snap-align:none!important;border-radius:7px}.playerFirst .intervalStripCompact .cracName{font-size:7px!important}.playerFirst .intervalStripCompact .cracPct{font-size:10px!important;margin-top:2px!important}.playerFirst .intervalStripCompact .cracTokens{min-height:5px!important;margin-top:2px!important}.playerFirst .intervalStripCompact .dot{width:4px;height:4px}
  .marketSectionHead{gap:7px}.densityExplainer{font-size:8px!important;line-height:1.35!important}.playerDensity{margin-top:5px}.playerDensity .densitySvg{height:auto!important;max-height:150px}.playerLegend{margin-top:2px!important}.cracFootnote{margin-top:3px}.compactTradeBar{margin-top:6px;padding:8px}.simpleTradeButtons{margin-top:6px}.simpleTradeButtons button{min-height:46px}
  .breakingStrip{min-width:235px}
}

/* =========================================================
   v0.40.4 · ACTION-FIRST MOBILE / MIDPOINT CURVE / AD FIRST
   ========================================================= */
.topBannerAd{display:flex!important;min-height:62px;margin:0 0 8px;border:1px solid #2a3442;border-radius:11px;background:linear-gradient(135deg,#0a1018,#101927);align-items:center;justify-content:center;gap:10px;text-align:center;position:relative;overflow:hidden}
.topBannerAd:before,.topBannerAd:after{content:'';position:absolute;inset:auto;width:160px;height:160px;border:1px solid rgba(125,183,255,.05);transform:rotate(45deg)}
.topBannerAd:before{left:-90px}.topBannerAd:after{right:-90px}.topBannerAd .adKicker{font-size:7px;letter-spacing:.16em;color:#657388;font-weight:900}.topBannerAd>b{font-size:12px;color:#dce4ee}.topBannerAd small{font-size:8px;color:#718096}
.lowerMarketTape{margin-top:10px}

/* The selected/probability/token summary no longer consumes player space. */
.actionOnlyTrade{padding:8px 9px}.actionOnlyTrade .compactTradeSelected{display:none!important}.actionOnlyTrade .simpleTradeButtons{margin-top:0}.actionOnlyTrade .tradeFlash{margin-top:5px}

/* The rightmost chart bin is the open-ended 150+ tail. */
.tailLegend{border-color:#52677f;background:#0d1724}.playerDensity{overflow:hidden}

@media(max-width:700px){
  .topBannerAd{min-height:46px;margin-bottom:6px;gap:7px;border-radius:9px}.topBannerAd>b{font-size:10px}.topBannerAd small{font-size:7px}.topBannerAd .adKicker{font-size:6px}
  .portfolioStrip{margin-bottom:6px}.portfolioCard{padding-top:7px!important;padding-bottom:7px!important}.portfolioCard small{font-size:7px!important}.portfolioCard b{font-size:14px!important}
  .marketCard{padding:8px}.marketSectionHead{margin-bottom:2px}.marketSectionHead .densityExplainer{display:none}.marketSectionHead h2{font-size:16px}
  .playerDensity{margin-top:3px!important;padding:3px 4px 2px!important}.playerDensity .densitySvg{max-height:128px!important}
  .playerLegend{margin:1px 4px 0!important;gap:7px!important}.legendLine{font-size:7px}.legendLine i{width:18px}.tailLegend{font-size:7px;padding:2px 5px}
  .playerFirst .stripGrid{padding:2px 0!important;margin-top:4px!important}.cracFootnote{display:none}
  .actionOnlyTrade{margin-top:4px!important;padding:5px!important;border-radius:9px}.actionOnlyTrade .simpleTradeButtons{gap:5px!important}.actionOnlyTrade .simpleTradeButtons button{min-height:42px!important;border-radius:8px;font-size:11px}.actionOnlyTrade .simpleTradeButtons button b{font-size:12px}.actionOnlyTrade .tradeFlash{font-size:7px;min-height:10px;margin-top:3px}
  .lowerMarketTape{margin-top:7px;margin-bottom:7px}
}

/* =========================================================
   v0.40.5 · POSITION TICKER / MIDPOINT-TO-MIDPOINT CURVE
   ========================================================= */
/* Market tape now lives beneath Your Position and moves continuously like a financial ticker. */
.marketTapeMarquee{width:100%;max-width:100%;overflow:hidden;border-top:2px solid #f0b84b;border-bottom:1px solid #273141;background:#09101a}
.marketTapeMarqueeTrack{display:flex;width:max-content;will-change:transform;animation:marketTapeMarquee 34s linear infinite}
.marketTapeMarquee .cnbcTape{display:flex!important;grid-template-columns:none!important;flex:0 0 auto;width:max-content;margin:0!important;border:0!important;box-shadow:none!important;overflow:visible!important}
.marketTapeMarquee .cnbcTape .tapeBrand{flex:0 0 auto}
.marketTapeMarquee .cnbcTape .tapeItem{flex:0 0 auto}
.marketTapeMarquee .breakingStrip{flex:0 0 430px;min-width:430px;min-height:100%}
.marketTapeMarquee:hover .marketTapeMarqueeTrack{animation-play-state:paused}
@keyframes marketTapeMarquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.marketTapeMarqueeTrack{animation:none}.tapeMirror{display:none!important}}
@media(max-width:700px){
  .marketTapeMarqueeTrack{animation-duration:29s}
  .marketTapeMarquee .cnbcTape .tapeItem{min-width:105px}
  .marketTapeMarquee .breakingStrip{flex-basis:300px;min-width:300px}
  .lowerMarketTape{margin-top:7px;margin-bottom:7px}
}

/* v0.42 Resolver Lab */
.resolverFeedMeta{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.feedStatus{display:inline-flex;border:1px solid #4b6176;border-radius:999px;padding:3px 7px;font-size:8px;font-weight:900;letter-spacing:.05em}.feedStatus.fresh{color:#6fe7b2;border-color:#2d8f68;background:#0f2d22}.feedStatus.stale,.feedStatus.error{color:#ffb1bd;border-color:#763c49;background:#2b151b}.feedStatus.never_synced{color:#ffd36b;border-color:#725d2e;background:#241d0e}.resolverCheck{display:flex!important;flex-direction:row!important;align-items:center;gap:5px!important;padding:7px 4px}.resolverCheck input{min-width:auto!important}.resolverLabResult{margin-top:8px;border:1px solid #40566a;border-radius:9px;background:#0b1420;padding:9px;font-size:10px;line-height:1.45}.resolverLabResult[hidden]{display:none!important}.resolverLabHeadline{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:5px}.resolverLabHeadline b{font-size:12px}.resolverLabPosts{margin-top:7px;border-top:1px solid rgba(136,158,178,.16);padding-top:6px}.resolverLabPost{display:grid;grid-template-columns:28px 90px 1fr;gap:6px;padding:4px 0;border-top:1px solid rgba(136,158,178,.09)}.resolverLabPost:first-child{border-top:0}.resolverSequenceLab{margin-top:8px;border-top:1px solid rgba(136,158,178,.14);padding-top:7px}.resolverSequenceLab summary{cursor:pointer;font-size:9px;font-weight:800;color:#a9bac9}.resolverSequenceLab textarea{width:100%;margin:7px 0;box-sizing:border-box;background:#0b1420;color:#edf5fb;border:1px solid #4b6176;border-radius:8px;padding:8px 9px;resize:vertical;font-family:inherit}.controlStateChip.freeze{color:#ffd36b;border-color:#725d2e;background:#241d0e}
@media(max-width:700px){.resolverLabPost{grid-template-columns:24px 72px 1fr}.resolverFeedMeta{justify-content:flex-start}}

/* v0.42.1 Simple Resolver — keep the safety machinery, hide the cockpit. */
.simpleResolverSection{border-top-color:rgba(102,217,255,.30)}
.simpleResolverHeader{gap:12px;align-items:flex-start}
.simpleResolverCompose{margin-top:12px}
.simpleFieldLabel{display:block;margin:0 0 5px;font-size:9px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:#a9bac9}
.simpleActionsRow{align-items:end}
.simpleActionsRow .smallBtn{min-height:34px}
.followupControls{margin-top:8px}.textBtn{appearance:none;border:0;background:transparent;color:#73dfff;font-size:9px;font-weight:900;letter-spacing:.05em;cursor:pointer;padding:4px 0}.textBtn:hover{text-decoration:underline}
#resolverFollowupWrap{margin-top:6px;padding:8px;border:1px dashed #40566a;border-radius:9px;background:rgba(11,20,32,.55)}
.simpleResolverResult{padding:0!important;overflow:hidden}
.simpleVerdict{padding:12px 13px;border-left:4px solid #607080}.simpleVerdict.confirmed{border-left-color:#48dca2;background:rgba(19,66,49,.28)}.simpleVerdict.review{border-left-color:#ffd36b;background:rgba(83,66,20,.24)}.simpleVerdict.noreset{border-left-color:#7e8d9b;background:rgba(55,66,76,.22)}
.simpleVerdictTitle{font-size:15px;font-weight:950;letter-spacing:.02em}.simpleVerdict.confirmed .simpleVerdictTitle{color:#7af0bd}.simpleVerdict.review .simpleVerdictTitle{color:#ffdc84}.simpleVerdict.noreset .simpleVerdictTitle{color:#c0ccd6}
.simpleVerdictReason{margin-top:5px;color:#dce7ef;font-size:10px;line-height:1.45}.simpleEffectiveTime{margin-top:7px;font-size:9px;color:#a9bac9}
.simpleAdvanced{margin-top:9px;border-top:1px solid rgba(136,158,178,.14);padding-top:7px}.simpleAdvanced>summary{cursor:pointer;font-size:9px;font-weight:850;color:#9fb1c0;user-select:none}.resolverAdvancedBody{padding:8px 0 2px}.resolverTechnicalResult{margin-top:8px;line-height:1.5;border:1px solid rgba(136,158,178,.15);border-radius:8px;padding:8px;background:#0b1420}
.simpleSubhead{margin:13px 0 6px;font-size:9px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:#a9bac9}
.simpleVerdictChip{display:inline-flex;align-items:center;justify-content:center;min-width:84px;padding:4px 7px;border:1px solid #526475;border-radius:999px;font-size:8px;font-weight:950;letter-spacing:.04em;white-space:nowrap}.simpleVerdictChip.confirmed{color:#78efbb;border-color:#2d8f68;background:#0f2d22}.simpleVerdictChip.review{color:#ffda79;border-color:#725d2e;background:#241d0e}.simpleVerdictChip.noreset{color:#b9c4ce;border-color:#52606c;background:#17212b}.simpleVerdictChip.neutral{color:#a9bac9}
.simpleResolverEvent{grid-template-columns:108px 1fr auto;align-items:center}.simpleTimeSection .tiny{margin-top:3px}.simpleTimeButtons{gap:6px;flex-wrap:wrap}.setAgeRow{display:flex;align-items:end;gap:7px;flex-wrap:wrap;margin-top:9px}.setAgeRow label{display:flex;align-items:center;gap:6px;font-size:9px;color:#a9bac9}.setAgeRow input{width:78px;background:#0b1420;color:#edf5fb;border:1px solid #4b6176;border-radius:8px;padding:8px}.trueResetSimple{margin-top:9px}
.devAdvancedControls{padding-top:10px}.devAdvancedControls>summary{cursor:pointer;font-size:10px;font-weight:900;letter-spacing:.05em;text-transform:uppercase;color:#a9bac9}.advancedSafetyBody{padding-top:8px}.compactAdvanced{margin-top:8px}
@media(max-width:700px){.simpleActionsRow>*{width:100%}.simpleResolverEvent{grid-template-columns:1fr}.simpleResolverEvent>small{grid-column:1}.simpleVerdictChip{justify-self:start}.setAgeRow>*{width:100%}.setAgeRow label{justify-content:space-between}.setAgeRow input{width:120px}.simpleTimeButtons .smallBtn{flex:1 1 28%}}

/* v0.42.2 DEV resolver: market-age input instead of calendar arithmetic for test events. */
.resolverAgeInputRow{display:flex;align-items:center;gap:7px}.resolverAgeInputRow input{width:110px}.resolverAgeInputRow span{font-size:11px;color:#c9d4df;text-transform:none;letter-spacing:0}

/* v0.42.3 on-demand round / trade history */
.tradeHistoryDetails{margin-top:10px;border:1px solid #344760;border-radius:14px;background:#142337;overflow:hidden}
.tradeHistoryDetails>summary{list-style:none;cursor:pointer;padding:13px 16px;display:flex;align-items:center;justify-content:space-between;gap:14px}
.tradeHistoryDetails>summary::-webkit-details-marker{display:none}
.tradeHistoryDetails>summary>div{display:grid;gap:2px}
.tradeHistoryDetails>summary b{font-size:14px;color:#f4f7fb}
.tradeHistoryDetails>summary small{font-size:9px;color:#8797aa;font-weight:600}
.tradeHistoryChevron{font-size:9px;color:#8fb5dc;text-transform:uppercase;letter-spacing:.06em;font-weight:800}
.tradeHistoryDetails[open] .tradeHistoryChevron{font-size:0}
.tradeHistoryDetails[open] .tradeHistoryChevron:after{content:'Hide details';font-size:9px}
.tradeHistoryBody{border-top:1px solid #2a3a4f;padding:13px 15px 15px}
.tradeHistoryToolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.tradeHistoryToolbar p{margin:0;color:#899aaf;font-size:9px}
.tradeHistoryGrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}
.tradeHistoryRound{border:1px solid #30445d;border-radius:12px;background:#101d2c;overflow:hidden;min-width:0}
.tradeHistoryRoundHead{padding:11px 12px;border-bottom:1px solid #2b3d53;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.tradeHistoryRoundHead h3{margin:2px 0 0;font-size:13px;color:#f3f6fa}
.tradeHistoryRoundHead p{margin:3px 0 0;color:#8d9db1;font-size:9px}
.tradeHistoryRoundResult{text-align:right;white-space:nowrap}
.tradeHistoryRoundResult b{display:block;font-size:15px}
.tradeHistoryRoundResult small{font-size:8px;color:#8d9db1}
.tradeHistoryAudit{margin:9px 10px 0;padding:9px 10px;border:1px solid #2f5162;border-radius:9px;background:#102936;color:#b9d9e1;font-size:9px;line-height:1.5}
.tradeHistoryAudit b{color:#f0f6f8}
.tradeHistoryScroll{overflow:auto;max-height:310px}
.tradeHistoryTable{width:100%;border-collapse:collapse;font-size:9px;min-width:570px}
.tradeHistoryTable th,.tradeHistoryTable td{padding:8px 9px;border-bottom:1px solid #26384d;text-align:left;font-variant-numeric:tabular-nums;vertical-align:top}
.tradeHistoryTable th{position:sticky;top:0;background:#132337;color:#899aaf;text-transform:uppercase;letter-spacing:.04em;font-size:8px;z-index:1}
.tradeHistoryTable td:nth-child(4),.tradeHistoryTable th:nth-child(4),.tradeHistoryTable td:nth-child(5),.tradeHistoryTable th:nth-child(5){text-align:right}
.tradeHistoryType{font-weight:850;color:#dce8f6}
.tradeHistoryType.buy{color:#55e2a6}.tradeHistoryType.sell{color:#ff8b96}.tradeHistoryType.settlement{color:#76caff}.tradeHistoryType.late_trade_void{color:#ffc85c}.tradeHistoryType.round_reset{color:#c9a7ff}
.tradeHistoryReversed{text-decoration:line-through;opacity:.55}
.tradeHistoryBadge{display:inline-block;margin-left:5px;padding:1px 4px;border-radius:4px;background:#4a3420;color:#ffd582;font-size:7px;font-weight:900;letter-spacing:.04em;vertical-align:1px}
.tradeHistoryEmpty{padding:18px 12px;text-align:center;color:#75869b;font-size:9px}
.tradeHistoryMoney.good{color:#4be0a4}.tradeHistoryMoney.bad{color:#ff7482}
.tradeHistoryNote{display:block;color:#77889c;font-size:8px;margin-top:2px;max-width:240px}
@media(max-width:780px){.tradeHistoryGrid{grid-template-columns:1fr}.tradeHistoryDetails>summary{padding:12px}.tradeHistoryBody{padding:10px}.tradeHistoryToolbar{align-items:flex-start}.tradeHistoryRoundHead{padding:10px}.tradeHistoryScroll{max-height:270px}}

#tiboReplyContext{border-left:2px solid var(--line);padding-left:8px;margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-wrap;overflow-wrap:anywhere}
#tiboReplyContext[hidden]{display:none}
