/* Shared UI parts (shared-ui.js): time window, book filter, early label, wallet, data health, per-book positions. */
.shwin, .shbook { gap: 4px; flex-wrap: wrap; align-items: center; }
.shbook .seg, .shwin .seg { min-width: 0; }
.shreset { background: none; border: 1px solid var(--line, #2a3340); color: inherit; border-radius: 6px; padding: 2px 7px; font-size: 12px; opacity: .8; cursor: pointer; }
.shreset[hidden] { display: none; }
.shscope { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; margin: 0 0 8px; }
.shwal { position: fixed; inset: 0; background: rgba(0, 0, 0, .55); z-index: 80; display: flex; align-items: flex-start; justify-content: center; padding: 56px 12px 12px; overflow: auto; }
.shwin2 { background: var(--card, #121821); color: inherit; border: 1px solid var(--line, #2a3340); border-radius: 12px; padding: 14px; width: min(520px, 100%); }
.shtab { width: 100%; border-collapse: collapse; margin-top: 8px; }
.shtab td, .shtab th { padding: 5px 4px; border-bottom: 1px solid var(--line, #2a3340); text-align: left; font-weight: normal; }
.shtab th { opacity: .7; font-size: 12px; }
.shtab .r { text-align: right; font-variant-numeric: tabular-nums; }
.shh { margin: 14px 0 4px; font-size: 14px; }
.shlines { margin: 0; padding-left: 18px; }
.shlines li { margin: 3px 0; }
.shdh { display: flex; gap: 8px; align-items: baseline; padding: 4px 0; flex-wrap: wrap; }
.shdh .dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; background: #22c55e; flex: none; }
.shdh .dot.warn { background: #f59e0b; }
.shpos .pos { color: #22c55e; }
.shpos .neg { color: #ef4444; }
.shwchip { cursor: pointer; }
.shbook1 { margin-top: 8px; }
.shsides { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.shpos { padding: 4px 0; border-top: 1px solid var(--line, #2a3340); }
.shl { text-transform: uppercase; letter-spacing: .04em; font-size: 11px; }
.shord ul { margin: 2px 0 0; padding-left: 18px; }
@media (max-width: 520px) { .shsides { grid-template-columns: 1fr; } }
header .shwchip, .shwal .shx { border: 1px solid var(--line, #1f2a36); background: transparent; color: inherit; border-radius: 999px; padding: 2px 9px; font-size: 12px; cursor: pointer; }
.shwchip small { opacity: .7; margin-right: 3px; }
.shbooks { margin-top: 6px; }
.shsince { margin-top: 6px; }
.shopt { margin-top: 8px; }
.optbook { margin-top: 10px; }
@media (max-width: 520px) { .shwchip small { display: none; } }

/* Market sessions + candle close (shared-ui.js sessionChips). Chips sit in the existing second header row. */
.shsess { display: inline-flex; flex-wrap: wrap; gap: 4px 6px; align-items: center; min-width: 0; }
#pbar .shsess { display: contents; }
.shs { display: inline-flex; align-items: center; gap: 4px; padding: 0 7px; height: 19px; border-radius: 999px; font-size: 11px; font-weight: 700; background: #1b2634; color: inherit; white-space: nowrap; font-variant-numeric: tabular-nums; }
.shs .sd { width: 8px; height: 8px; border-radius: 50%; background: #7b8794; flex: none; display: inline-block; }
.shs.on .sd { background: #22c55e; }
.shs.off { opacity: .8; }
.shs .sn { display: none; }
.shs .sw:empty { display: none; }
.shs .sw { opacity: .75; font-weight: 600; margin-right: -2px; }
.shc .sf { opacity: .75; font-weight: 600; }
@media (max-width: 520px) { .shs .sf { display: none; } .shs .sn { display: inline; font-weight: 700; } .shs .sw { display: none; } }

/* How the brains are doing (public/brains.js) */
.brn{--bg-ok:var(--grn,var(--good,#22c55e));--bg-bad:var(--red,var(--bad,#ef4444));--bg-warn:var(--amb,var(--warn,#f59e0b))}
.brn .brnhd{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.brn .brnsp{flex:1}
.brn .brnblk{margin-top:10px;padding-top:8px;border-top:1px solid rgba(128,128,128,.25)}
.brn .brnv{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:700;border:1px solid currentColor}
.brn .brnv.useful{color:var(--bg-ok)}.brn .brnv.unproven{color:var(--bg-warn)}.brn .brnv.not_useful{color:var(--bg-bad)}
.brn .brnrow{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,2fr) auto;gap:8px;align-items:center;margin:6px 0}
.brn .brnbar{display:flex;height:10px;border-radius:5px;overflow:hidden;background:rgba(128,128,128,.25)}
.brn .brnbar i{display:block;height:100%}.brn .brnbar .t{background:var(--bg-ok)}.brn .brnbar .s{background:var(--bg-bad)}.brn .brnbar .x{background:rgba(128,128,128,.7)}
.brn details{margin:4px 0}.brn summary{cursor:pointer}
.brn table{width:100%;border-collapse:collapse}.brn td,.brn th{padding:3px 6px;text-align:left;font-weight:normal}
@media (max-width:520px){.brn .brnrow{grid-template-columns:1fr auto}.brn .brnrow .brnbar{grid-column:1/-1;order:3}}
/* 3.15.1: stale market data. Red banner (plain words, the age, a calm "Reconnecting…"); advice cards wait until data is fresh again. */
.feedstale{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;justify-content:center;padding:8px 12px;background:#b91c1c;color:#fff;font-size:14px;text-align:center}
.feedstale b{font-weight:800}.feedstale .fsr{opacity:.85;font-weight:600}
body.ot-stale .rsc,body.ot-stale .pdoc{position:relative;min-height:2.2em}
body.ot-stale .rsc>*,body.ot-stale .pdoc>*{visibility:hidden}
body.ot-stale .rsc::after,body.ot-stale .pdoc::after{content:"Waiting for fresh data";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#f59e0b;font-weight:700}

/* "$ | %" unit switch on Stop, Target and the options Strike (units.js) */
.ut{float:right;display:inline-flex;gap:0;margin-left:6px}
.ut button{min-width:0;width:auto;padding:0 6px;line-height:16px;font-size:11px;font-weight:700;border:1px solid var(--line,#8886);background:transparent;color:inherit;border-radius:0;cursor:pointer}
.ut button:first-child{border-radius:4px 0 0 4px}.ut button:last-child{border-radius:0 4px 4px 0;border-left:0}
.ut button.on{background:var(--acc,#3a7);color:#fff}
.uh{display:block;font-size:10px;font-weight:400;opacity:.7;min-height:12px}
