/* SATOSIG App 1.4.45 • Fixed Heatmap visual system */
@font-face{
  font-family:Inter;
  src:url('../fonts/inter-latin.woff2') format('woff2');
  font-style:normal;
  font-weight:400 600;
  font-display:swap;
}
:root{
  --sa-bg:#202020;
  --sa-surface:#252525;
  --sa-card:#2a2a2a;
  --sa-card-2:#232323;
  --sa-ink:#fffdf4;
  --sa-muted:#9ba3ad;
  --sa-line:rgba(255,255,255,.09);
  --sa-main:#23c983;
  --sa-main-rgb:35,201,131;
  --sa-main-soft:#a9f7cd;
  --sa-accent:#f4a62a;
  --sa-accent-rgb:244,166,42;
  --sa-danger:#ef5b67;
  --sa-blue:#60a5fa;
  --sa-shadow:0 18px 46px rgba(0,0,0,.32);
  --sa-font:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#090d12}
body.satosig-app-page{font-family:var(--sa-font);color:var(--sa-ink);background:
 radial-gradient(circle at 15% -10%,rgba(var(--sa-main-rgb),.23),transparent 35%),
 radial-gradient(circle at 95% 12%,rgba(var(--sa-accent-rgb),.16),transparent 30%),
 #090d12}
button,input{font:inherit}
button{cursor:pointer;-webkit-tap-highlight-color:transparent}
button:focus-visible,input:focus-visible{outline:2px solid var(--sa-main);outline-offset:2px}
[hidden],.hidden{display:none!important}
#satosig-app-root{--sa-css-ready:1;position:relative;width:min(100%,620px);height:100dvh;margin:0 auto;background:linear-gradient(180deg,var(--sa-surface),var(--sa-bg));overflow:hidden;box-shadow:0 30px 90px rgba(0,0,0,.48)}
.app-shell{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:100%;min-height:0}
.app-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:12px 12px 0;padding:10px;border:1px solid var(--sa-line);border-radius:22px;background:linear-gradient(135deg,rgba(255,255,255,.075),rgba(255,255,255,.025));box-shadow:0 14px 36px rgba(0,0,0,.20),inset 0 1px rgba(255,255,255,.06);backdrop-filter:blur(14px)}
.brand{display:flex;align-items:center;gap:10px;min-width:0}.brand-mark{width:42px;height:42px;display:grid;place-items:center;flex:0 0 auto;border-radius:14px;background:linear-gradient(145deg,var(--sa-accent),color-mix(in srgb,var(--sa-accent) 70%,#8a4d00));color:#111;font-size:1.22rem;font-weight:950;box-shadow:0 8px 18px rgba(var(--sa-accent-rgb),.24)}
.brand-copy{min-width:0}.brand-copy>small,.card-eyebrow,.section-head small,.screen-title small,.market-chip small,.entry-head small,.app-info small{display:block;color:var(--sa-main-soft);font-size:.47rem;font-weight:950;letter-spacing:.14em}.brand-copy h1{margin:3px 0 0;font-size:1.08rem;line-height:1;letter-spacing:-.04em}.brand-copy p{margin:5px 0 0;color:var(--sa-muted);font-size:.48rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.market-chip{flex:0 0 auto;min-width:79px;padding:9px;border:1px solid rgba(var(--sa-main-rgb),.22);border-radius:14px;background:linear-gradient(145deg,rgba(var(--sa-main-rgb),.20),rgba(var(--sa-main-rgb),.07));text-align:center}.market-chip strong{display:block;margin-top:3px;font-size:.65rem}
.app-main{position:relative;min-height:0;overflow:hidden}.app-screen{position:absolute;inset:0;display:none;overflow:auto;padding:12px 12px 20px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.app-screen.active{display:block;animation:sa-enter .18s ease}.screen-stack{display:grid;gap:10px;padding-bottom:8px}@keyframes sa-enter{from{opacity:.25;transform:translateY(5px)}to{opacity:1;transform:none}}
.focus-grid{display:grid;grid-template-columns:1.12fr .88fr;gap:9px}.signal-card,.entry-card,.market-card,.panel-card{border:1px solid var(--sa-line);box-shadow:var(--sa-shadow);overflow:hidden}.signal-card,.entry-card,.market-card{position:relative;border-radius:22px}.signal-card{min-height:182px;padding:15px;background:radial-gradient(circle at 100% 0%,rgba(var(--sa-main-rgb),.25),transparent 38%),linear-gradient(145deg,#172231,var(--sa-card-2) 72%);color:var(--sa-ink)}.signal-card:after{content:"";position:absolute;width:118px;height:118px;border-radius:50%;right:-50px;top:-55px;background:rgba(255,255,255,.05)}.card-eyebrow{position:relative;z-index:1;display:flex;align-items:center;gap:6px;color:#aab7c4}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--sa-main);box-shadow:0 0 0 4px rgba(var(--sa-main-rgb),.12);animation:sa-pulse 1.7s infinite}@keyframes sa-pulse{50%{box-shadow:0 0 0 7px rgba(var(--sa-main-rgb),0)}}.signal-title-row{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:12px}.signal-title-row h2{margin:0;padding:7px 10px;border-radius:999px;background:rgba(var(--sa-main-rgb),.15);border:1px solid rgba(var(--sa-main-rgb),.33);font-size:1rem}.signal-title-row span{color:var(--sa-muted);font-size:.5rem}.signal-card p{position:relative;z-index:1;margin:11px 0 0;color:#cbd5df;font-size:.6rem;line-height:1.45}.card-action,.ghost-action{position:relative;z-index:1;width:100%;margin-top:14px;border:0;border-radius:12px;padding:9px 10px;font-size:.55rem;font-weight:950}.card-action{background:linear-gradient(135deg,var(--sa-accent),color-mix(in srgb,var(--sa-accent) 72%,#944d00));color:#111}.ghost-action{background:rgba(255,255,255,.07);border:1px solid var(--sa-line);color:var(--sa-ink)}
.entry-card{padding:13px;background:linear-gradient(145deg,rgba(var(--sa-main-rgb),.12),var(--sa-card-2) 78%)}.entry-head{display:flex;justify-content:space-between;align-items:center;gap:6px}.entry-head span,.soft-pill{padding:5px 7px;border-radius:999px;background:rgba(255,255,255,.07);border:1px solid var(--sa-line);font-size:.45rem;font-weight:950}.entry-card>strong{display:block;margin:16px 0 12px;font-size:1.05rem}.entry-level{display:flex;justify-content:space-between;gap:8px;margin-top:7px;color:var(--sa-muted);font-size:.48rem}.entry-level b{color:var(--sa-ink);font-size:.5rem}.entry-card.active .entry-head span{background:rgba(var(--sa-main-rgb),.18);color:var(--sa-main-soft);border-color:rgba(var(--sa-main-rgb),.30)}.entry-card.wait .entry-head span{background:rgba(var(--sa-accent-rgb),.14);color:var(--sa-accent)}.entry-card.no-entry .entry-head span{background:rgba(239,91,103,.14);color:#ffb4bd}
.market-card{padding:13px;background:linear-gradient(180deg,var(--sa-card),var(--sa-card-2))}.section-head,.screen-title{display:flex;align-items:center;justify-content:space-between;gap:9px}.section-head h2,.screen-title h2{margin:3px 0 0;font-size:.82rem;letter-spacing:-.025em}.move-pill{padding:6px 8px;border-radius:999px;font-size:.5rem;font-weight:950;background:rgba(255,255,255,.07);border:1px solid var(--sa-line)}.move-pill.up{color:var(--sa-main-soft);background:rgba(var(--sa-main-rgb),.13)}.move-pill.down{color:#ffb5bd;background:rgba(239,91,103,.15)}.ohlc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:11px}.ohlc-grid div{min-width:0;padding:8px 5px;border-radius:11px;background:rgba(255,255,255,.045);text-align:center}.ohlc-grid small{display:block;color:var(--sa-muted);font-size:.38rem}.ohlc-grid strong{display:block;margin-top:4px;font-size:.54rem;overflow:hidden;text-overflow:ellipsis}
.panel-card{padding:13px;border-radius:22px;background:linear-gradient(180deg,var(--sa-card),var(--sa-card-2))}.text-action,.refresh-btn{border:1px solid rgba(var(--sa-accent-rgb),.19);background:rgba(var(--sa-accent-rgb),.11);color:var(--sa-accent);border-radius:999px;padding:6px 9px;font-size:.49rem;font-weight:950}.bias-summary{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:10px;color:var(--sa-muted);font-size:.51rem}.bias-summary strong{color:var(--sa-ink)}.bias-summary .bull{color:var(--sa-main-soft)}.bias-summary .bear{color:#ffb3bc}.bias-summary.large{margin-top:0;padding:10px;border-radius:14px;background:rgba(255,255,255,.045);font-size:.58rem}.bias-strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(68px,1fr);gap:6px;margin-top:10px;overflow-x:auto;padding-bottom:3px;scrollbar-width:none}.bias-strip::-webkit-scrollbar{display:none}.bias-chip{border:1px solid var(--sa-line);border-radius:13px;padding:8px 6px;background:rgba(255,255,255,.045);color:var(--sa-ink);text-align:left}.bias-chip .label{display:flex;justify-content:space-between;gap:4px;color:var(--sa-muted);font-size:.42rem}.bias-chip strong{display:block;margin-top:5px;font-size:.58rem}.bias-chip span{display:block;margin-top:4px;font-size:.43rem;color:var(--sa-muted)}.bias-chip.up{border-color:rgba(var(--sa-main-rgb),.22)}.bias-chip.down{border-color:rgba(239,91,103,.23)}.bias-chip.signal{box-shadow:inset 0 0 0 1px var(--sa-blue)}.bias-chip.entry{box-shadow:inset 0 0 0 1px #a78bfa}.bias-chip.missing{opacity:.5}.bias-list{display:grid;gap:8px}.bias-day-card{width:100%;border:1px solid var(--sa-line);border-radius:18px;padding:12px;background:linear-gradient(180deg,var(--sa-card),var(--sa-card-2));color:var(--sa-ink);text-align:left}.bias-day-top{display:flex;justify-content:space-between;gap:8px}.bias-day-top small{color:var(--sa-muted);font-size:.46rem}.bias-day-top strong{font-size:.62rem}.bias-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:9px}.bias-metrics div{padding:8px 6px;border-radius:11px;background:rgba(255,255,255,.045)}.bias-metrics small{display:block;color:var(--sa-muted);font-size:.38rem}.bias-metrics b{display:block;margin-top:4px;font-size:.52rem}
.heat-summary{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}.heat-summary span{padding:5px 7px;border-radius:999px;background:rgba(255,255,255,.055);border:1px solid var(--sa-line);font-size:.44rem;color:var(--sa-muted)}.heat-summary b{color:var(--sa-ink)}.heat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-top:11px}.heat-grid.compact{gap:5px}.heat-cell{min-width:0;min-height:58px;border:1px solid rgba(255,255,255,.13);border-radius:12px;padding:6px 3px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;color:#fff;text-align:center;box-shadow:inset 0 1px rgba(255,255,255,.10)}.heat-cell.up{background:linear-gradient(145deg,rgba(var(--sa-main-rgb),.78),rgba(var(--sa-main-rgb),.42))}.heat-cell.down{background:linear-gradient(145deg,rgba(239,91,103,.82),rgba(170,44,58,.46))}.heat-cell.flat{background:rgba(255,255,255,.08)}.heat-cell small{font-size:.39rem;opacity:.82}.heat-cell strong{font-size:.58rem}.heat-cell em{font-style:normal;font-size:.42rem;opacity:.92}.heat-grid.compact .heat-cell{min-height:48px;padding:4px 2px}.heat-grid.compact .heat-cell strong{font-size:.51rem}.heatmap-full-card{min-height:400px}.date-toolbar{display:grid;grid-template-columns:1fr auto;gap:8px}.date-toolbar label{display:grid;gap:4px;padding:8px 10px;border-radius:13px;background:var(--sa-card);border:1px solid var(--sa-line)}.date-toolbar label span{font-size:.42rem;color:var(--sa-muted);font-weight:850}.date-toolbar input{border:0;outline:0;background:transparent;color:var(--sa-ink);font-size:.62rem}.date-toolbar button{border:0;border-radius:13px;padding:0 15px;background:linear-gradient(135deg,var(--sa-accent),color-mix(in srgb,var(--sa-accent) 72%,#8b4a00));font-size:.56rem;font-weight:950;color:#111}.inline-loader{display:flex;align-items:center;justify-content:center;gap:9px;min-height:82px;margin-top:10px;padding:12px;border:1px solid var(--sa-line);border-radius:14px;background:rgba(255,255,255,.035);color:var(--sa-muted);font-size:.55rem}
.backtest-direction{margin-top:10px}.backtest-direction h3{margin:0 0 8px;font-size:.72rem}.offset-table{width:100%;border-collapse:separate;border-spacing:0 5px}.offset-table th{padding:4px;color:var(--sa-muted);font-size:.4rem;text-align:right}.offset-table th:first-child,.offset-table td:first-child{text-align:left}.offset-table td{padding:8px 5px;background:rgba(255,255,255,.045);font-size:.48rem;text-align:right}.offset-table td:first-child{border-radius:10px 0 0 10px;font-weight:950}.offset-table td:last-child{border-radius:0 10px 10px 0}.offset-table tr.selected td{background:rgba(var(--sa-main-rgb),.14);color:var(--sa-main-soft)}
.app-info strong{display:block;margin-top:4px;font-size:.68rem}.app-info p{margin:9px 0 0;color:var(--sa-muted);font-size:.52rem;line-height:1.5}
.bottom-nav{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:8px 8px max(8px,env(safe-area-inset-bottom));border-top:1px solid var(--sa-line);background:rgba(10,14,18,.92);backdrop-filter:blur(18px)}.bottom-nav button{display:grid;place-items:center;gap:2px;min-height:49px;border:0;border-radius:13px;background:transparent;color:var(--sa-muted)}.bottom-nav button span{font-size:.8rem}.bottom-nav button small{font-size:.42rem;font-weight:900}.bottom-nav button.active{background:linear-gradient(135deg,rgba(var(--sa-main-rgb),.20),rgba(var(--sa-main-rgb),.08));color:var(--sa-main-soft)}
.boot-loader{position:absolute;inset:0;z-index:500;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 50% 30%,rgba(var(--sa-main-rgb),.18),transparent 36%),rgba(7,10,14,.96);transition:opacity .22s ease}.boot-loader.done{opacity:0;pointer-events:none}.boot-card{width:min(330px,100%);display:flex;align-items:center;gap:13px;padding:16px;border:1px solid var(--sa-line);border-radius:18px;background:var(--sa-card);box-shadow:0 20px 60px rgba(0,0,0,.45)}.boot-card strong{display:block;font-size:.72rem}.boot-card small{display:block;margin-top:5px;color:var(--sa-muted);font-size:.5rem}.spinner,.mini-spinner{display:inline-block;border-radius:50%;border:3px solid rgba(255,255,255,.14);border-top-color:var(--sa-main);animation:sa-spin .7s linear infinite}.spinner{width:30px;height:30px;flex:0 0 auto}.mini-spinner{width:16px;height:16px;border-width:2px}@keyframes sa-spin{to{transform:rotate(360deg)}}.tap-feedback{position:absolute;left:50%;top:max(10px,env(safe-area-inset-top));z-index:420;transform:translate(-50%,-18px);display:flex;align-items:center;gap:7px;padding:8px 11px;border:1px solid var(--sa-line);border-radius:999px;background:rgba(10,14,18,.93);box-shadow:0 12px 36px rgba(0,0,0,.35);opacity:0;pointer-events:none;transition:.14s}.tap-feedback.show{opacity:1;transform:translate(-50%,0)}.tap-feedback b{font-size:.5rem}.toast{position:absolute;left:50%;bottom:82px;z-index:430;transform:translate(-50%,12px);padding:8px 11px;border:1px solid var(--sa-line);border-radius:999px;background:#10161d;color:var(--sa-ink);font-size:.5rem;opacity:0;pointer-events:none;transition:.18s;white-space:nowrap;max-width:calc(100% - 28px);overflow:hidden;text-overflow:ellipsis}.toast.show{opacity:1;transform:translate(-50%,0)}
.app-modal{position:absolute;inset:0;z-index:450;display:none;align-items:flex-end;padding:12px;background:rgba(3,6,10,.74);backdrop-filter:blur(7px)}.app-modal.open{display:flex}.modal-panel{width:100%;max-height:91dvh;display:grid;grid-template-rows:auto minmax(0,1fr);border:1px solid var(--sa-line);border-radius:24px 24px 18px 18px;background:linear-gradient(180deg,var(--sa-card),var(--sa-bg));box-shadow:0 25px 70px rgba(0,0,0,.52);animation:sa-sheet .18s ease;overflow:hidden}@keyframes sa-sheet{from{transform:translateY(25px);opacity:.3}to{transform:none;opacity:1}}.modal-panel header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:14px;border-bottom:1px solid var(--sa-line)}.modal-panel header small{color:var(--sa-main-soft);font-size:.45rem;font-weight:950;letter-spacing:.13em}.modal-panel header h2{margin:4px 0 0;font-size:.86rem}.modal-panel header button{width:34px;height:34px;border:1px solid var(--sa-line);border-radius:11px;background:rgba(255,255,255,.06);color:var(--sa-ink);font-size:1.1rem}.modal-body{min-height:180px;overflow:auto;padding:14px}.modal-loading{min-height:180px;display:grid;place-items:center;align-content:center;gap:8px;text-align:center}.modal-loading strong{font-size:.65rem}.modal-loading small{color:var(--sa-muted);font-size:.48rem}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.detail-item{padding:10px;border:1px solid var(--sa-line);border-radius:13px;background:rgba(255,255,255,.04)}.detail-item small{display:block;color:var(--sa-muted);font-size:.42rem}.detail-item strong{display:block;margin-top:5px;font-size:.58rem}.detail-note{margin-top:9px;padding:10px;border-left:3px solid var(--sa-main);border-radius:0 11px 11px 0;background:rgba(var(--sa-main-rgb),.08);color:#d9e2e9;font-size:.52rem;line-height:1.55}.error-card{padding:14px;border:1px solid rgba(239,91,103,.25);border-radius:14px;background:rgba(239,91,103,.09);color:#ffc2c8;font-size:.56rem;line-height:1.5}
@media(max-width:390px){.focus-grid{grid-template-columns:1fr}.signal-card{min-height:160px}.entry-card{min-height:156px}.ohlc-grid{grid-template-columns:repeat(2,1fr)}.brand-copy p{max-width:170px}.heat-grid{gap:5px}.heat-cell{min-height:53px}.bottom-nav button small{font-size:.39rem}}
@media(max-height:720px){.app-header{margin-top:8px;padding:8px}.brand-mark{width:36px;height:36px}.brand-copy h1{font-size:.96rem}.brand-copy p{display:none}.app-screen{padding-top:9px}.signal-card{min-height:155px;padding:12px}.screen-stack{gap:8px}.bottom-nav button{min-height:44px}.heat-cell{min-height:48px}}
@media(min-width:621px){.app-modal{align-items:center}.modal-panel{max-width:560px;border-radius:24px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}


/* ===== v1.3.41 READABILITY + MODAL SCROLL LOCK ===== */
#satosig-app-root{font-size:16px}
#satosig-app-root .brand-copy>small,
#satosig-app-root .card-eyebrow,
#satosig-app-root .section-head small,
#satosig-app-root .screen-title small,
#satosig-app-root .market-chip small,
#satosig-app-root .entry-head small,
#satosig-app-root .app-info small{font-size:.58rem}
#satosig-app-root .brand-copy p{font-size:.64rem}
#satosig-app-root .market-chip strong{font-size:.78rem}
#satosig-app-root .signal-title-row span{font-size:.65rem}
#satosig-app-root .signal-card p{font-size:.75rem;line-height:1.55}
#satosig-app-root .card-action,
#satosig-app-root .ghost-action{min-height:42px;font-size:.7rem}
#satosig-app-root .entry-head span,
#satosig-app-root .soft-pill{font-size:.59rem}
#satosig-app-root .entry-card>strong{font-size:1.18rem}
#satosig-app-root .entry-level{font-size:.66rem}
#satosig-app-root .entry-level b{font-size:.7rem}
#satosig-app-root .section-head h2,
#satosig-app-root .screen-title h2{font-size:1rem}
#satosig-app-root .move-pill{font-size:.66rem}
#satosig-app-root .ohlc-grid small{font-size:.54rem}
#satosig-app-root .ohlc-grid strong{font-size:.73rem}
#satosig-app-root .text-action,
#satosig-app-root .refresh-btn{min-height:36px;font-size:.64rem}
#satosig-app-root .bias-summary{font-size:.68rem;line-height:1.4}
#satosig-app-root .bias-summary.large{font-size:.74rem}
#satosig-app-root .bias-strip{grid-auto-columns:minmax(92px,1fr);gap:8px}
#satosig-app-root .bias-chip{padding:10px 8px}
#satosig-app-root .bias-chip .label{font-size:.56rem}
#satosig-app-root .bias-chip strong{font-size:.72rem}
#satosig-app-root .bias-chip span{font-size:.58rem;line-height:1.35}
#satosig-app-root .bias-day-top small{font-size:.61rem}
#satosig-app-root .bias-day-top strong{font-size:.78rem}
#satosig-app-root .bias-metrics small{font-size:.52rem}
#satosig-app-root .bias-metrics b{font-size:.68rem}
#satosig-app-root .heat-summary span{font-size:.59rem}
#satosig-app-root .heat-grid{gap:7px}
#satosig-app-root .heat-cell{min-height:78px;padding:7px 4px;gap:4px}
#satosig-app-root .heat-cell small{font-size:.52rem;line-height:1.2}
#satosig-app-root .heat-cell strong{font-size:.78rem}
#satosig-app-root .heat-cell .heat-raw{display:block;font-size:.63rem;font-weight:950;line-height:1.15;color:#fff}
#satosig-app-root .heat-cell .heat-raw i{font-style:normal;font-size:.45rem;opacity:.8}
#satosig-app-root .heat-cell em{font-size:.55rem}
#satosig-app-root .heat-grid.compact .heat-cell{min-height:70px;padding:6px 3px}
#satosig-app-root .heat-grid.compact .heat-cell strong{font-size:.72rem}
#satosig-app-root .date-toolbar label span{font-size:.57rem}
#satosig-app-root .date-toolbar input{font-size:.73rem}
#satosig-app-root .date-toolbar button{min-height:46px;font-size:.7rem}
#satosig-app-root .inline-loader{font-size:.7rem}
#satosig-app-root .offset-table th{font-size:.53rem}
#satosig-app-root .offset-table td{font-size:.63rem;padding:10px 6px}
#satosig-app-root .app-info strong{font-size:.8rem}
#satosig-app-root .app-info p{font-size:.66rem}
#satosig-app-root .bottom-nav button small{font-size:.54rem}
#satosig-app-root .boot-card strong{font-size:.85rem}
#satosig-app-root .boot-card small{font-size:.66rem}
#satosig-app-root .tap-feedback b,
#satosig-app-root .toast{font-size:.64rem}

#satosig-app-root .app-modal{touch-action:none}
#satosig-app-root .modal-panel{touch-action:pan-y;overscroll-behavior:contain}
#satosig-app-root .modal-body{
  touch-action:pan-y;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-gutter:stable;
  padding-bottom:max(18px,env(safe-area-inset-bottom));
}
#satosig-app-root .modal-panel header small{font-size:.58rem}
#satosig-app-root .modal-panel header h2{font-size:1.06rem}
#satosig-app-root .modal-panel header button{width:42px;height:42px;font-size:1.3rem}
#satosig-app-root .modal-loading strong{font-size:.8rem}
#satosig-app-root .modal-loading small{font-size:.64rem}
#satosig-app-root .detail-item small{font-size:.56rem}
#satosig-app-root .detail-item strong{font-size:.76rem;line-height:1.35}
#satosig-app-root .detail-note{font-size:.68rem;line-height:1.6}
#satosig-app-root .error-card{font-size:.69rem}

@media(max-width:520px){
  #satosig-app-root .focus-grid{grid-template-columns:1fr}
  #satosig-app-root .ohlc-grid{grid-template-columns:repeat(2,1fr)}
  #satosig-app-root .heat-cell{min-height:76px}
  #satosig-app-root .bottom-nav button small{font-size:.52rem}
}
@media(max-width:360px){
  #satosig-app-root{font-size:15px}
  #satosig-app-root .heat-grid{gap:5px}
  #satosig-app-root .heat-cell{min-height:72px;padding-inline:2px}
  #satosig-app-root .heat-cell .heat-raw{font-size:.58rem}
}


/* ===== v1.3.42 GESTURE-SAFE MODAL TRIGGERS ===== */
#satosig-app-root [data-open-modal]{
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}
#satosig-app-root .app-screen,
#satosig-app-root .bias-strip,
#satosig-app-root .modal-body{
  scroll-behavior:auto;
}


/* v1.3.43: make the Signal H -> Entry H+1 relationship explicit. */
#satosig-app-root .trade-chain{
  display:grid;
  gap:4px;
  padding:11px 13px;
  border:1px solid rgba(var(--sa-accent-rgb),.24);
  border-radius:15px;
  background:linear-gradient(135deg,rgba(var(--sa-accent-rgb),.13),rgba(255,255,255,.035));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
}
#satosig-app-root .trade-chain strong{
  color:var(--sa-ink);
  font-size:.78rem;
  line-height:1.25;
}
#satosig-app-root .trade-chain span{
  color:var(--sa-muted);
  font-size:.61rem;
  line-height:1.38;
  font-weight:750;
}
#satosig-app-root .trade-chain.warning{
  border-color:rgba(244,166,42,.35);
  background:linear-gradient(135deg,rgba(244,166,42,.14),rgba(255,255,255,.03));
}
@media(max-width:520px){
  #satosig-app-root .trade-chain strong{font-size:.84rem}
  #satosig-app-root .trade-chain span{font-size:.68rem}
}


/* v1.3.45: exact Heatmap engine parity details */
.signal-combo{
  margin:8px 0 0;
  padding:8px 10px;
  border:1px solid rgba(255,255,255,.09);
  border-radius:12px;
  background:rgba(255,255,255,.055);
  color:var(--muted);
  font-size:.72rem;
  line-height:1.35;
  font-weight:750;
}
.signal-combo strong{color:var(--ink)}
.engine-parity-note{
  margin-top:10px;
  padding:10px 12px;
  border-radius:12px;
  background:rgba(35,201,131,.09);
  border:1px solid rgba(35,201,131,.18);
  color:#b9f7d5;
  font-size:.74rem;
  line-height:1.45;
}

/* ===== v1.3.46 BIAS DIRECTION COLOR + ALT DETAIL PARITY ===== */
#satosig-app-root .bias-arrow{
  display:inline-grid;
  place-items:center;
  min-width:1.05em;
  font-weight:1000;
  line-height:1;
  filter:drop-shadow(0 2px 5px rgba(0,0,0,.22));
}
#satosig-app-root .bias-arrow.arrow-up{color:#35e39a}
#satosig-app-root .bias-arrow.arrow-down{color:#ff6f7c}
#satosig-app-root .bias-chip .bias-arrow{font-size:1.14em}
#satosig-app-root .bias-metrics .bias-arrow{font-size:1.08em}

#satosig-app-root .alt-hero{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  padding:14px;
  border:1px solid rgba(var(--sa-main-rgb),.22);
  border-radius:18px;
  background:linear-gradient(145deg,rgba(var(--sa-main-rgb),.13),rgba(255,255,255,.035));
}
#satosig-app-root .alt-hero>div{min-width:0}
#satosig-app-root .alt-hero small{
  display:block;
  color:var(--sa-muted);
  font-size:.62rem;
  font-weight:900;
  letter-spacing:.05em;
}
#satosig-app-root .alt-hero strong{
  display:block;
  margin-top:7px;
  color:var(--sa-ink);
  font-size:1.36rem;
  letter-spacing:-.035em;
}
#satosig-app-root .alt-hero span{
  display:block;
  margin-top:5px;
  font-size:.68rem;
  font-weight:900;
}
#satosig-app-root .up-text{color:#35e39a}
#satosig-app-root .down-text{color:#ff7a86}
#satosig-app-root .alt-status{
  flex:0 0 auto;
  padding:7px 9px;
  border:1px solid var(--sa-line);
  border-radius:999px;
  font-size:.61rem;
  line-height:1;
  white-space:nowrap;
}
#satosig-app-root .alt-status.is-win{color:#a9f7cd;background:rgba(35,201,131,.15);border-color:rgba(35,201,131,.28)}
#satosig-app-root .alt-status.is-loss{color:#ffbac1;background:rgba(239,91,103,.15);border-color:rgba(239,91,103,.28)}
#satosig-app-root .alt-status.is-wait{color:#b9dcff;background:rgba(96,165,250,.14);border-color:rgba(96,165,250,.28)}
#satosig-app-root .alt-status.is-warn{color:#ffe0a3;background:rgba(244,166,42,.14);border-color:rgba(244,166,42,.28)}

#satosig-app-root .alt-live-price-panel{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-top:10px;
  padding:13px 14px;
  border:1px solid rgba(53,227,154,.34);
  border-radius:16px;
  background:linear-gradient(145deg,rgba(53,227,154,.13),rgba(96,165,250,.07));
}
#satosig-app-root .alt-live-price-panel small{display:block;color:#a9f7cd;font-size:.58rem;font-weight:950;letter-spacing:.06em}
#satosig-app-root .alt-live-price-panel strong{display:block;margin-top:5px;color:#fff;font-size:1.42rem;letter-spacing:-.035em}
#satosig-app-root .alt-live-price-panel span{display:block;margin-top:4px;color:var(--sa-muted);font-size:.58rem;font-weight:800}
#satosig-app-root .alt-live-price-panel [data-alt-live-change]{font-size:.64rem;font-weight:950;letter-spacing:.025em}
#satosig-app-root .alt-live-price-panel [data-alt-live-change].up-text{color:#35e39a}
#satosig-app-root .alt-live-price-panel [data-alt-live-change].down-text{color:#ff7a86}
#satosig-app-root .alt-live-price-panel>b{flex:0 0 auto;padding:7px 9px;border:1px solid var(--sa-line);border-radius:999px;font-size:.57rem;white-space:nowrap}
#satosig-app-root .alt-live-price-panel>b[data-state="live"]{color:#a9f7cd;background:rgba(35,201,131,.15);border-color:rgba(35,201,131,.32)}
#satosig-app-root .alt-live-price-panel>b[data-state="connecting"]{color:#b9dcff;background:rgba(96,165,250,.14);border-color:rgba(96,165,250,.28)}
#satosig-app-root .alt-live-price-panel>b[data-state="error"]{color:#ffbac1;background:rgba(239,91,103,.15);border-color:rgba(239,91,103,.28)}

#satosig-app-root .alt-chart-live-meta{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  margin:8px 0;
  padding:8px 10px;
  border:1px solid rgba(96,165,250,.25);
  border-radius:11px;
  background:rgba(96,165,250,.07);
  color:var(--sa-muted);
  font-size:.58rem;
  font-weight:800;
}
#satosig-app-root .alt-chart-live-meta span:first-child b{color:#b9dcff}
#satosig-app-root .alt-binance-live-ticker{padding:5px 7px;border-radius:9px;background:rgba(255,255,255,.045);font-size:.57rem;font-weight:950;white-space:nowrap}
#satosig-app-root .alt-binance-live-ticker.up{color:#35e39a;background:rgba(35,201,131,.12)}
#satosig-app-root .alt-binance-live-ticker.down{color:#ff7a86;background:rgba(239,91,103,.13)}
#satosig-app-root .alt-binance-live-ticker.flat{color:#d5dde5}
#satosig-app-root .alt-chart-live-meta>strong,
#satosig-app-root [data-sx-live-status]{padding:5px 7px;border:1px solid var(--sa-line);border-radius:999px;font-size:.55rem;font-style:normal;white-space:nowrap}
#satosig-app-root .alt-chart-live-meta>strong[data-state="live"],
#satosig-app-root [data-sx-live-status][data-state="live"]{color:#a9f7cd;background:rgba(35,201,131,.15);border-color:rgba(35,201,131,.32)}
#satosig-app-root .alt-chart-live-meta>strong[data-state="cache"],
#satosig-app-root [data-sx-live-status][data-state="cache"]{color:#ffe0a3;background:rgba(244,166,42,.14);border-color:rgba(244,166,42,.28)}
#satosig-app-root .alt-chart-live-meta>strong[data-state="connecting"],
#satosig-app-root [data-sx-live-status][data-state="connecting"]{color:#b9dcff;background:rgba(96,165,250,.14);border-color:rgba(96,165,250,.28)}
#satosig-app-root .alt-chart-live-meta>strong[data-state="error"],
#satosig-app-root [data-sx-live-status][data-state="error"]{color:#ffbac1;background:rgba(239,91,103,.15);border-color:rgba(239,91,103,.28)}

#satosig-app-root .alt-live-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin-top:10px;
}
#satosig-app-root .alt-live-grid article,
#satosig-app-root .alt-price-plan>div,
#satosig-app-root .alt-history>div{
  min-width:0;
  padding:10px;
  border:1px solid var(--sa-line);
  border-radius:14px;
  background:rgba(255,255,255,.04);
}
#satosig-app-root .alt-live-grid small,
#satosig-app-root .alt-price-plan small,
#satosig-app-root .alt-history small{
  display:block;
  color:var(--sa-muted);
  font-size:.53rem;
  font-weight:950;
  letter-spacing:.055em;
}
#satosig-app-root .alt-live-grid strong,
#satosig-app-root .alt-price-plan strong,
#satosig-app-root .alt-history strong{
  display:block;
  margin-top:5px;
  color:var(--sa-ink);
  font-size:.75rem;
  line-height:1.25;
  word-break:break-word;
}
#satosig-app-root .alt-live-grid span,
#satosig-app-root .alt-price-plan span{
  display:block;
  margin-top:5px;
  color:var(--sa-muted);
  font-size:.57rem;
  line-height:1.35;
}
#satosig-app-root .alt-price-plan{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  margin-top:10px;
}
#satosig-app-root .alt-price-plan .entry{border-color:rgba(96,165,250,.28);background:rgba(96,165,250,.09)}
#satosig-app-root .alt-price-plan .tp{border-color:rgba(35,201,131,.28);background:rgba(35,201,131,.09)}
#satosig-app-root .alt-price-plan .sl{border-color:rgba(239,91,103,.28);background:rgba(239,91,103,.09)}
#satosig-app-root .alt-history{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:7px;
  margin-top:10px;
}
#satosig-app-root .alt-history>div{text-align:center;padding:9px 5px}
#satosig-app-root .alt-history strong{font-size:.72rem}
#satosig-app-root .alt-warning{
  margin-top:10px;
  padding:10px 11px;
  border:1px solid rgba(244,166,42,.30);
  border-radius:13px;
  background:rgba(244,166,42,.11);
  color:#ffe0a3;
  font-size:.63rem;
  font-weight:800;
  line-height:1.5;
}

@media(max-width:430px){
  #satosig-app-root .alt-live-grid{grid-template-columns:1fr}
  #satosig-app-root .alt-history{grid-template-columns:repeat(2,minmax(0,1fr))}
  #satosig-app-root .alt-hero strong{font-size:1.22rem}
  #satosig-app-root .alt-live-price-panel strong{font-size:1.25rem}
  #satosig-app-root .alt-chart-live-meta{align-items:flex-start;flex-wrap:wrap}
  #satosig-app-root .alt-chart-live-meta [data-alt-chart-live-ticker]{order:3;width:100%}
  #satosig-app-root .alt-chart-live-meta [data-alt-rolling-time]{order:4;width:100%}
}


/* ===== v1.3.48 CLEAN LIVE SCREEN ===== */
#satosig-app-root .focus-grid.entry-only{
  grid-template-columns:minmax(0,1fr);
}
#satosig-app-root .focus-grid.entry-only .entry-card{
  width:100%;
}
#satosig-app-root .trade-chain{
  grid-template-columns:minmax(0,1fr);
  align-items:center;
  gap:10px;
}
#satosig-app-root .trade-chain-copy{
  min-width:0;
  display:grid;
  gap:4px;
}
#satosig-app-root .satosig-detail-btn{
  min-height:42px;
  padding:9px 12px;
  border:1px solid rgba(var(--sa-accent-rgb),.26);
  border-radius:12px;
  background:linear-gradient(135deg,rgba(var(--sa-accent-rgb),.19),rgba(var(--sa-accent-rgb),.09));
  color:var(--sa-main-soft);
  font:inherit;
  font-size:.68rem;
  font-weight:900;
  white-space:nowrap;
  touch-action:manipulation;
}
#satosig-app-root .satosig-detail-btn:active{transform:scale(.98)}
#satosig-app-root .entry-actions{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:8px;
  margin-top:14px;
}
#satosig-app-root .entry-actions .ghost-action,
#satosig-app-root .entry-actions .satosig-detail-btn{
  width:100%;
  min-height:44px;
  margin-top:0;
}
@media(max-width:360px){
  #satosig-app-root .entry-actions{grid-template-columns:1fr}
}


/* ===== DAILY HEATMAP ===== */
#satosig-app-root .daily-heat-section{display:grid;gap:10px;min-width:0}
#satosig-app-root .month-box-strip{
  display:grid;
  grid-auto-flow:column;
  grid-auto-columns:minmax(84px,1fr);
  gap:7px;
  overflow-x:auto;
  padding:2px 1px 5px;
  scrollbar-width:none;
  overscroll-behavior-x:contain;
  scroll-snap-type:x proximity;
  touch-action:pan-x pan-y;
}
#satosig-app-root .month-box-strip::-webkit-scrollbar{display:none}
#satosig-app-root .month-box{
  scroll-snap-align:center;
  min-height:72px;
  display:grid;
  place-items:center;
  align-content:center;
  gap:2px;
  padding:8px 6px;
  border:1px solid var(--sa-line);
  border-radius:15px;
  background:linear-gradient(180deg,var(--sa-card),var(--sa-card-2));
  color:var(--sa-muted);
  box-shadow:0 10px 24px rgba(0,0,0,.18);
  touch-action:manipulation;
}
#satosig-app-root .month-box b{color:var(--sa-ink);font-size:.74rem}
#satosig-app-root .month-box span{font-size:.55rem;font-weight:850}
#satosig-app-root .month-box.active{
  border-color:rgba(var(--sa-main-rgb),.42);
  background:linear-gradient(145deg,rgba(var(--sa-main-rgb),.26),rgba(var(--sa-main-rgb),.09));
  color:var(--sa-main-soft);
  box-shadow:0 12px 28px rgba(var(--sa-main-rgb),.13),inset 0 0 0 1px rgba(var(--sa-main-rgb),.12);
}
#satosig-app-root .daily-heat-grid{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:7px;
  margin-top:11px;
}
#satosig-app-root .daily-heat-cell{
  min-width:0;
  min-height:76px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:4px;
  padding:7px 3px;
  border:1px solid rgba(255,255,255,.13);
  border-radius:13px;
  color:#fff;
  text-align:center;
  box-shadow:inset 0 1px rgba(255,255,255,.10),0 8px 18px rgba(0,0,0,.12);
}
#satosig-app-root .heat-cell[data-tone="dark"],
#satosig-app-root .daily-heat-cell[data-tone="dark"]{color:#1f2937}
#satosig-app-root .heat-cell[data-tone="dark"] .heat-raw,
#satosig-app-root .heat-cell[data-tone="dark"] .heat-raw i,
#satosig-app-root .heat-cell[data-tone="dark"] small,
#satosig-app-root .heat-cell[data-tone="dark"] em,
#satosig-app-root .daily-heat-cell[data-tone="dark"] small,
#satosig-app-root .daily-heat-cell[data-tone="dark"] span,
#satosig-app-root .daily-heat-cell[data-tone="dark"] em{color:#1f2937;opacity:.82}
#satosig-app-root .daily-heat-cell.up{background:linear-gradient(145deg,rgba(var(--sa-main-rgb),.80),rgba(var(--sa-main-rgb),.43))}
#satosig-app-root .daily-heat-cell.down{background:linear-gradient(145deg,rgba(239,91,103,.84),rgba(170,44,58,.48))}
#satosig-app-root .daily-heat-cell.flat{background:rgba(255,255,255,.08)}
#satosig-app-root .daily-heat-cell small{font-size:.53rem;opacity:.86}
#satosig-app-root .daily-heat-cell strong{font-size:.76rem;line-height:1}
#satosig-app-root .daily-heat-cell span{font-size:.52rem;font-weight:900;opacity:.92}
#satosig-app-root .daily-heat-cell em{font-style:normal;font-size:.48rem;opacity:.8}
#satosig-app-root .daily-mode-card{min-height:430px}
@media(max-width:430px){
  #satosig-app-root .month-box-strip{grid-auto-columns:minmax(84px,1fr)}
  #satosig-app-root .daily-heat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
  #satosig-app-root .daily-heat-cell{min-height:78px}
}


/* ===== THREE-MENU BOTTOM NAV ===== */
#satosig-app-root .bottom-nav{
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:7px;
  padding:9px 10px max(9px,env(safe-area-inset-bottom));
}
#satosig-app-root .bottom-nav button{
  min-height:58px;
  gap:4px;
  border-radius:15px;
}
#satosig-app-root .bottom-nav button span{
  font-size:1.08rem;
  line-height:1;
}
#satosig-app-root .bottom-nav button small{
  font-size:.70rem;
  line-height:1;
  font-weight:950;
  letter-spacing:.01em;
}
@media(max-width:390px){
  #satosig-app-root .bottom-nav button{min-height:55px}
  #satosig-app-root .bottom-nav button span{font-size:1rem}
  #satosig-app-root .bottom-nav button small{font-size:.66rem}
}
@media(max-height:720px){
  #satosig-app-root .bottom-nav button{min-height:51px}
  #satosig-app-root .bottom-nav button small{font-size:.63rem}
}

/* ===== LIVE BTC TICKER HEADER ===== */
#satosig-app-root .btc-ticker-chip{
  min-width:134px;
  padding:8px 9px;
  text-align:left;
}
#satosig-app-root .btc-ticker-meta,
#satosig-app-root .btc-ticker-quote{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:7px;
}
#satosig-app-root .btc-ticker-meta small{
  font-size:.53rem;
  letter-spacing:.08em;
  white-space:nowrap;
}
#satosig-app-root .btc-ticker-meta time{
  color:var(--sa-muted);
  font-size:.48rem;
  font-weight:850;
  white-space:nowrap;
}
#satosig-app-root .btc-ticker-quote{margin-top:5px;align-items:baseline}
#satosig-app-root .btc-ticker-chip .btc-ticker-price{
  display:block;
  margin:0;
  color:var(--sa-ink);
  font-size:.79rem;
  line-height:1;
  letter-spacing:-.025em;
  white-space:nowrap;
}
#satosig-app-root .btc-ticker-change{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:48px;
  padding:3px 5px;
  border:1px solid var(--sa-line);
  border-radius:999px;
  font-size:.48rem;
  font-weight:950;
  line-height:1;
  white-space:nowrap;
}
#satosig-app-root .btc-ticker-change.up{
  color:#8ff0bd;
  border-color:rgba(35,201,131,.30);
  background:rgba(35,201,131,.14);
}
#satosig-app-root .btc-ticker-change.down{
  color:#ff9eaa;
  border-color:rgba(239,91,103,.30);
  background:rgba(239,91,103,.14);
}
#satosig-app-root .btc-ticker-change.flat{
  color:var(--sa-muted);
  background:rgba(255,255,255,.05);
}
@media(max-width:390px){
  #satosig-app-root .btc-ticker-chip{min-width:126px;padding-inline:8px}
  #satosig-app-root .btc-ticker-chip .btc-ticker-price{font-size:.72rem}
  #satosig-app-root .btc-ticker-change{min-width:44px;font-size:.44rem}
}

/* ===== v1.3.58 LIVE DAY/MONTH HEATMAP SWIPE ===== */
#satosig-app-root .live-heat-swipe{
  position:relative;
  min-height:330px;
  overflow:hidden;
  margin-top:2px;
  touch-action:pan-y;
  overscroll-behavior-x:contain;
  transition:height .26s ease;
}
#satosig-app-root .live-heat-track{
  display:flex;
  width:100%;
  align-items:flex-start;
  transform:translateX(0);
  transition:transform .28s cubic-bezier(.22,.74,.24,1);
  will-change:transform;
}
#satosig-app-root .live-heat-slide{
  flex:0 0 100%;
  width:100%;
  min-width:0;
}
#satosig-app-root .live-heat-slide[aria-hidden="true"]{
  pointer-events:none;
}
#satosig-app-root .live-heat-pager{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
  margin-top:12px;
  padding:4px;
  border:1px solid var(--sa-line);
  border-radius:14px;
  background:rgba(255,255,255,.035);
}
#satosig-app-root .live-heat-pager button{
  min-height:36px;
  border:0;
  border-radius:10px;
  background:transparent;
  color:var(--sa-muted);
  font-size:.59rem;
  font-weight:950;
  letter-spacing:.035em;
  touch-action:manipulation;
}
#satosig-app-root .live-heat-pager button.active{
  color:var(--sa-ink);
  background:linear-gradient(145deg,rgba(var(--sa-main-rgb),.31),rgba(var(--sa-main-rgb),.11));
  box-shadow:inset 0 0 0 1px rgba(var(--sa-main-rgb),.22),0 7px 18px rgba(0,0,0,.15);
}
#satosig-app-root .live-heat-hint{
  margin:8px 0 0;
  color:var(--sa-muted);
  font-size:.55rem;
  text-align:center;
}
#satosig-app-root .live-heat-hint:before{
  content:"↔ ";
  color:var(--sa-main-soft);
  font-weight:1000;
}
#satosig-app-root .live-heat-slide .daily-heat-grid.compact{
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:5px;
}
#satosig-app-root .live-heat-slide .daily-heat-grid.compact .daily-heat-cell{
  min-height:64px;
  gap:3px;
  padding:5px 2px;
  border-radius:11px;
}
#satosig-app-root .live-heat-slide .daily-heat-grid.compact .daily-heat-cell small{font-size:.47rem}
#satosig-app-root .live-heat-slide .daily-heat-grid.compact .daily-heat-cell strong{font-size:.64rem}
#satosig-app-root .live-heat-slide .daily-heat-grid.compact .daily-heat-cell span{font-size:.46rem}
#satosig-app-root .live-heat-slide .daily-heat-grid.compact .daily-heat-cell em{font-size:.43rem}
@media(max-width:360px){
  #satosig-app-root .live-heat-slide .daily-heat-grid.compact{gap:4px}
  #satosig-app-root .live-heat-slide .daily-heat-grid.compact .daily-heat-cell{min-height:61px}
  #satosig-app-root .live-heat-slide .daily-heat-grid.compact .daily-heat-cell strong{font-size:.59rem}
}
@media(prefers-reduced-motion:reduce){
  #satosig-app-root .live-heat-track,
  #satosig-app-root .live-heat-swipe{transition:none}
}


/* v1.3.59 · Heatmap click-through BTC chart, dependency-free SVG */
#satosig-app-root .sa-chart-card{
  margin-top:12px;
  padding:11px;
  border:1px solid var(--sa-line);
  border-radius:16px;
  background:rgba(255,255,255,.035);
  overflow:hidden;
}
#satosig-app-root .sa-chart-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  margin-bottom:7px;
}
#satosig-app-root .sa-chart-head small{
  display:block;
  color:var(--sa-muted);
  font-size:.5rem;
  line-height:1.4;
}
#satosig-app-root .sa-chart-head h3{
  margin:3px 0 0;
  font-size:.72rem;
  line-height:1.25;
}
#satosig-app-root .sa-chart-head > span{
  flex:0 0 auto;
  padding:5px 7px;
  border:1px solid rgba(var(--sa-main-rgb),.22);
  border-radius:999px;
  background:rgba(var(--sa-main-rgb),.09);
  color:var(--sa-main-soft);
  font-size:.54rem;
  font-weight:950;
}
#satosig-app-root .sa-chart-scroll{
  width:100%;
  overflow-x:auto;
  overscroll-behavior-x:contain;
  border-radius:12px;
  background:rgba(0,0,0,.12);
}
#satosig-app-root .sa-market-chart{
  display:block;
  width:100%;
  min-width:560px;
  height:auto;
  touch-action:pan-x pan-y;
}
#satosig-app-root .sa-chart-grid-line{
  stroke:rgba(255,255,255,.085);
  stroke-width:1;
  vector-effect:non-scaling-stroke;
}
#satosig-app-root .sa-chart-axis-label{
  fill:var(--sa-muted);
  font-size:12px;
  font-weight:750;
}
#satosig-app-root .sa-chart-axis-label.x{font-size:12px}
#satosig-app-root .sa-candle-wick{
  stroke:currentColor;
  stroke-width:1.4;
  vector-effect:non-scaling-stroke;
}
#satosig-app-root .sa-candle-body{
  fill:currentColor;
  stroke:currentColor;
  stroke-width:1;
  vector-effect:non-scaling-stroke;
}
#satosig-app-root .sa-candle.up{color:var(--sa-main)}
#satosig-app-root .sa-candle.down{color:#ef5b67}
#satosig-app-root .sa-candle.flat{color:#aab4be}
/* Candle pilihan tidak diubah menjadi putih. Warna selalu mengikuti OHLC. */
#satosig-app-root .sa-candle.selected .sa-candle-body{
  stroke:currentColor;
  stroke-width:1;
}
#satosig-app-root .sa-candle.selected .sa-candle-wick{stroke-width:1.3}
#satosig-app-root .sa-price-line{
  fill:none;
  stroke:var(--sa-main);
  stroke-width:3;
  stroke-linecap:round;
  stroke-linejoin:round;
  vector-effect:non-scaling-stroke;
}
#satosig-app-root .sa-selected-guide{
  stroke:rgba(255,255,255,.35);
  stroke-width:1;
  stroke-dasharray:4 5;
  vector-effect:non-scaling-stroke;
}
#satosig-app-root .sa-price-dot{
  fill:var(--sa-main);
  stroke:#fffdf4;
  stroke-width:2;
  vector-effect:non-scaling-stroke;
}
#satosig-app-root .sa-chart-empty{
  margin-top:12px;
  padding:14px;
  border:1px dashed var(--sa-line);
  border-radius:14px;
  color:var(--sa-muted);
  font-size:.56rem;
  text-align:center;
}
@media(max-width:390px){
  #satosig-app-root .sa-chart-card{padding:9px}
  #satosig-app-root .sa-market-chart{min-width:520px}
}

/* ===== v1.3.60 STRICT OHLCV CHART EXPLORER ===== */
#satosig-app-root .modal-panel:has(.sx-explorer){max-width:980px}
#satosig-app-root .sx-explorer{display:grid;gap:10px;min-width:0}
#satosig-app-root .sx-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;position:sticky;top:0;z-index:5;padding-bottom:2px;background:linear-gradient(180deg,var(--sa-bg) 75%,transparent)}
#satosig-app-root .sx-nav button{border:1px solid transparent;border-radius:9px;background:transparent;color:var(--sa-muted);font:900 .58rem/1 var(--sa-font);letter-spacing:.02em;cursor:pointer}
#satosig-app-root .sx-selected{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 11px;border:1px solid rgba(var(--sa-main-rgb),.18);border-radius:12px;background:rgba(var(--sa-main-rgb),.055)}
#satosig-app-root .sx-selected span{color:var(--sa-muted);font-size:.5rem;font-weight:850}
#satosig-app-root .sx-selected strong{font-size:.58rem;text-align:right}
#satosig-app-root .sx-loading{min-height:250px;display:grid;place-items:center;align-content:center;gap:10px;color:var(--sa-muted)}
#satosig-app-root .sx-loading b{font-size:.62rem}
#satosig-app-root .sx-error{display:grid;gap:7px;padding:16px;border:1px solid rgba(239,91,103,.28);border-radius:15px;background:rgba(239,91,103,.09);color:#ffd0d4}
#satosig-app-root .sx-error strong{font-size:.68rem}
#satosig-app-root .sx-error span,#satosig-app-root .sx-error small{font-size:.55rem;line-height:1.55}
#satosig-app-root .sx-error small{color:#e8aeb4}
#satosig-app-root .sx-content{display:grid;gap:9px;min-width:0}
#satosig-app-root .sx-market-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:0 2px}
#satosig-app-root .sx-market-head small{display:block;color:var(--sa-muted);font-size:.5rem}
#satosig-app-root .sx-market-head strong{display:block;margin-top:3px;font-size:1rem;letter-spacing:-.03em}
#satosig-app-root .sx-live-quote{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
#satosig-app-root .sx-live-quote [data-sx-live-change]{padding:4px 7px;border-radius:999px;font-size:.54rem;font-weight:950;white-space:nowrap}
#satosig-app-root .sx-live-quote [data-sx-live-change].up{color:#35e39a;background:rgba(35,201,131,.12)}
#satosig-app-root .sx-live-quote [data-sx-live-change].down{color:#ff7a86;background:rgba(239,91,103,.13)}
#satosig-app-root .sx-live-quote [data-sx-live-change].flat{color:#d5dde5;background:rgba(255,255,255,.06)}
#satosig-app-root .sx-ohlc{max-width:66%;color:#c6d0d9;font:800 .52rem/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;text-align:right}
#satosig-app-root .sx-chart-stage{position:relative;width:100%;overflow:hidden;border:1px solid var(--sa-line);border-radius:15px;background:#0b1016;touch-action:none;user-select:none;cursor:crosshair}
#satosig-app-root .sx-chart-stage:active{cursor:grabbing}
#satosig-app-root .sx-chart-svg{display:block;width:100%;height:auto;min-height:310px}
#satosig-app-root .sx-plot-bg{fill:rgba(255,255,255,.008)}
#satosig-app-root .sx-grid{stroke:rgba(255,255,255,.075);stroke-width:1;vector-effect:non-scaling-stroke}
#satosig-app-root .sx-axis,#satosig-app-root .sx-time-axis{fill:#76818c;font:750 11px/1 var(--sa-font)}
#satosig-app-root .sx-candle line{stroke:currentColor;stroke-width:1.3;vector-effect:non-scaling-stroke}
#satosig-app-root .sx-candle rect{fill:currentColor;stroke:currentColor;stroke-width:1;vector-effect:non-scaling-stroke}
#satosig-app-root .sx-candle.up{color:#23c983}
#satosig-app-root .sx-candle.down{color:#ef5b67}
#satosig-app-root .sx-candle.flat{color:#9aa5af}
/* Penanda waktu memakai garis HEATMAP; candle tetap hijau/merah/abu sesuai OHLC. */
#satosig-app-root .sx-candle.selected rect{stroke:currentColor;stroke-width:1}
#satosig-app-root .sx-candle.selected line{stroke:currentColor;stroke-width:1.3}
#satosig-app-root .sx-volume{opacity:.35}
#satosig-app-root .sx-volume.up{fill:#23c983}
#satosig-app-root .sx-volume.down{fill:#ef5b67}
#satosig-app-root .sx-volume-separator{stroke:rgba(255,255,255,.12);stroke-width:1;vector-effect:non-scaling-stroke}
#satosig-app-root .sx-ema{fill:none;stroke-width:1.6;vector-effect:non-scaling-stroke;opacity:.9}
#satosig-app-root .sx-ema.ema20{stroke:#f4c84a}
#satosig-app-root .sx-ema.ema50{stroke:#56b8ff}
#satosig-app-root .sx-ema.ema200{stroke:#b58cff}
#satosig-app-root .sx-marker-line{stroke:#fff8d9;stroke-width:1.2;stroke-dasharray:5 5;vector-effect:non-scaling-stroke}
#satosig-app-root .sx-marker-label{fill:#fff8d9;font:950 10px/1 var(--sa-font);letter-spacing:.08em}
#satosig-app-root .sx-crosshair{position:absolute;top:0;bottom:0;width:1px;border-left:1px dashed rgba(255,255,255,.38);pointer-events:none}
#satosig-app-root .sx-tooltip{position:absolute;z-index:4;display:grid;gap:3px;width:178px;padding:8px 9px;border:1px solid rgba(255,255,255,.14);border-radius:10px;background:rgba(7,11,16,.93);box-shadow:0 10px 30px rgba(0,0,0,.35);pointer-events:none}
#satosig-app-root .sx-tooltip b{margin-bottom:2px;color:#fff8d9;font-size:.51rem}
#satosig-app-root .sx-tooltip span{color:#c7d0d8;font:750 .48rem/1.25 ui-monospace,SFMono-Regular,Menlo,monospace}
#satosig-app-root .sx-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}
#satosig-app-root .sx-nav button{min-height:36px;border-color:var(--sa-line);background:rgba(255,255,255,.04);color:#d5dde4}
#satosig-app-root .sx-nav button:active{background:rgba(var(--sa-main-rgb),.12);color:var(--sa-main-soft)}
#satosig-app-root .sx-legend{display:flex;flex-wrap:wrap;gap:10px;padding:0 3px;color:var(--sa-muted);font-size:.48rem;font-weight:800}
#satosig-app-root .sx-legend span::before{content:"";display:inline-block;width:14px;height:2px;margin-right:5px;vertical-align:middle;background:currentColor}
#satosig-app-root .sx-legend .ema20{color:#f4c84a}
#satosig-app-root .sx-legend .ema50{color:#56b8ff}
#satosig-app-root .sx-legend .ema200{color:#b58cff}
#satosig-app-root .sx-legend .marker{color:#fff8d9}
#satosig-app-root .sx-legend .marker::before{background:repeating-linear-gradient(90deg,currentColor 0 4px,transparent 4px 7px)}
#satosig-app-root .sx-context{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
#satosig-app-root .sx-context-card{min-width:0;padding:10px;border:1px solid var(--sa-line);border-radius:12px;background:rgba(255,255,255,.035)}
#satosig-app-root .sx-context-card small{display:block;color:var(--sa-muted);font-size:.43rem;font-weight:900;letter-spacing:.06em}
#satosig-app-root .sx-context-card strong{display:block;margin-top:5px;font-size:.59rem;overflow-wrap:anywhere}
#satosig-app-root .sx-context-card span{display:block;margin-top:4px;color:var(--sa-muted);font-size:.47rem;line-height:1.35}
#satosig-app-root .sx-context-card.up strong{color:#77e4b0}
#satosig-app-root .sx-context-card.down strong{color:#ff8d98}
#satosig-app-root .sx-help{margin:0;padding:8px 2px;color:var(--sa-muted);font-size:.49rem;line-height:1.55}
#satosig-app-root .hidden{display:none!important}
@media(max-width:620px){
  #satosig-app-root .modal-body:has(.sx-explorer){padding:10px}
  #satosig-app-root .sx-toolbar{align-items:stretch;flex-direction:column}
  #satosig-app-root .sx-market-head{align-items:flex-start;flex-direction:column}
  #satosig-app-root .sx-ohlc{max-width:100%;text-align:left}
  #satosig-app-root .sx-chart-svg{min-width:0}
  #satosig-app-root .sx-chart-stage{overflow:hidden;touch-action:none}
}
@media(max-width:390px){
  #satosig-app-root .sx-context{grid-template-columns:1fr}
  #satosig-app-root .sx-selected{align-items:flex-start;flex-direction:column}
  #satosig-app-root .sx-selected strong{text-align:left}
}

/* ===== v1.3.61 MOBILE CHART + BOLLINGER + INDICATOR VISIBILITY ===== */
#satosig-app-root .sx-toolbar-actions{display:flex;align-items:center;gap:6px;min-width:0}
#satosig-app-root .sx-indicator-toggle{border:1px solid var(--sa-line);border-radius:9px;font:900 .58rem/1 var(--sa-font);letter-spacing:.02em;cursor:pointer}
#satosig-app-root .sx-indicator-toggle{padding:10px 11px;border-color:var(--sa-line);background:rgba(255,255,255,.045);color:#d5dde4;white-space:nowrap}
#satosig-app-root .sx-indicator-toggle b{display:inline-grid;place-items:center;min-width:18px;height:18px;margin-left:4px;padding:0 4px;border-radius:999px;background:rgba(var(--sa-main-rgb),.14);color:var(--sa-main-soft);font-size:.48rem}
#satosig-app-root .sx-indicator-toggle.active{border-color:rgba(var(--sa-main-rgb),.3);background:rgba(var(--sa-main-rgb),.12);color:var(--sa-main-soft)}
#satosig-app-root .sx-indicator-panel{display:grid;gap:8px;padding:9px;border:1px solid rgba(var(--sa-main-rgb),.2);border-radius:13px;background:rgba(var(--sa-main-rgb),.055)}
#satosig-app-root .sx-indicator-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
#satosig-app-root .sx-indicator-head strong{font-size:.48rem;letter-spacing:.08em;color:var(--sa-muted)}
#satosig-app-root .sx-indicator-head>div{display:flex;gap:5px}
#satosig-app-root .sx-indicator-head button{min-height:28px;padding:5px 9px;border-color:var(--sa-line);background:rgba(255,255,255,.04);font-size:.46rem;color:#c8d1d8}
#satosig-app-root .sx-indicator-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px}
#satosig-app-root .sx-indicator-grid button{min-width:0;min-height:34px;padding:6px 4px;border-color:var(--sa-line);background:rgba(255,255,255,.035);color:var(--sa-muted);font-size:.47rem;white-space:nowrap}
#satosig-app-root .sx-indicator-grid button.active{border-color:rgba(var(--sa-main-rgb),.34);background:rgba(var(--sa-main-rgb),.13);color:var(--sa-main-soft);box-shadow:inset 0 0 0 1px rgba(var(--sa-main-rgb),.08)}
#satosig-app-root .sx-chart-stage{height:clamp(400px,56dvh,520px)}
#satosig-app-root .sx-chart-svg{width:100%;height:100%;min-height:0}
#satosig-app-root .sx-indicator-line{fill:none;stroke-width:1.65;vector-effect:non-scaling-stroke;opacity:.92}
#satosig-app-root .sx-indicator-line.ema20{stroke:#f4c84a}
#satosig-app-root .sx-indicator-line.ema50{stroke:#56b8ff}
#satosig-app-root .sx-indicator-line.ema200{stroke:#b58cff}
#satosig-app-root .sx-indicator-line.bb-upper,#satosig-app-root .sx-indicator-line.bb-lower{stroke:#73d8ff;stroke-width:1.35}
#satosig-app-root .sx-indicator-line.bb-middle{stroke:#d5f3ff;stroke-width:1.15;stroke-dasharray:4 4;opacity:.7}
#satosig-app-root .sx-bb-fill{fill:rgba(86,184,255,.085);stroke:none;pointer-events:none}
#satosig-app-root .sx-legend .bb{color:#73d8ff}
#satosig-app-root .sx-legend .bb::before{height:5px;border-top:1px solid currentColor;border-bottom:1px solid currentColor;background:rgba(115,216,255,.14)}
@media(max-width:620px){
  #satosig-app-root .app-modal:has(.sx-explorer){padding:0}
  #satosig-app-root .sx-toolbar{position:static;background:none}
  #satosig-app-root .modal-panel:has(.sx-explorer){width:100%;max-width:none;height:100dvh;max-height:100dvh;border-radius:0}
  #satosig-app-root .modal-body:has(.sx-explorer){max-height:calc(100dvh - 58px);padding:8px 8px 14px}
  #satosig-app-root .sx-explorer{gap:7px}
  #satosig-app-root .sx-toolbar-actions{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);width:100%}
  #satosig-app-root .sx-indicator-toggle{width:100%;min-width:0;padding-inline:8px}
  #satosig-app-root .sx-indicator-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  #satosig-app-root .sx-chart-stage{height:clamp(400px,56dvh,520px);border-radius:12px}
  #satosig-app-root .sx-context{grid-template-columns:repeat(2,minmax(0,1fr))}
  #satosig-app-root .sx-help{padding-bottom:18px}
}
@media(max-height:700px) and (max-width:620px){
  #satosig-app-root .sx-chart-stage{height:360px}
}
@media(max-width:390px){
  #satosig-app-root .sx-chart-stage{height:clamp(390px,55dvh,470px)}
  #satosig-app-root .sx-indicator-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}


/* ===== v1.3.62 KEEP LAST CANDLE TRUE COLOR =====
   Candle aktif/pilihan tidak pernah dicat putih. */


/* ===== v1.3.63 SIGNAL ENTRY DOTS ===== */
#satosig-app-root .sx-signal-dot circle{stroke:#0b1016;stroke-width:1.05;vector-effect:non-scaling-stroke}
#satosig-app-root .sx-signal-dot.long circle{fill:#23c983}
#satosig-app-root .sx-signal-dot.short circle{fill:#ef5b67}
#satosig-app-root .sx-legend .signal-long{color:#23c983}
#satosig-app-root .sx-legend .signal-long::before{width:9px;height:9px;border-radius:50%;background:currentColor}
#satosig-app-root .sx-tooltip .signal-note{margin-top:3px;color:#fff3c0;line-height:1.35}


/* ===== v1.3.64 CSS + SIGNAL DOT VISIBILITY HOTFIX ===== */
#satosig-app-root .sx-signal-dot{pointer-events:none}
#satosig-app-root .sx-signal-dot circle{filter:drop-shadow(0 0 2px rgba(0,0,0,.75))}
#satosig-app-root .sx-legend .signal-long::before{box-shadow:9px 0 0 #ef5b67;margin-right:14px}
@media(max-width:620px){
  #satosig-app-root .sx-context-card{display:grid;align-content:start;min-height:88px}
  #satosig-app-root .sx-context-card small{line-height:1.25}
  #satosig-app-root .sx-context-card strong{line-height:1.25}
  #satosig-app-root .sx-context-card span{line-height:1.45}
}


/* ===== v1.3.66 MOBILE READABLE CHART SCALE ===== */
#satosig-app-root .sx-axis{font-size:13.5px;font-weight:900;fill:#aeb9c3}
#satosig-app-root .sx-time-axis{font-size:11.5px;font-weight:850;fill:#9aa6b1}
#satosig-app-root .sx-marker-label{font-size:10.5px}
#satosig-app-root .sx-chart-svg{shape-rendering:geometricPrecision;text-rendering:geometricPrecision}
@media(max-width:620px){
  #satosig-app-root .sx-chart-stage{height:clamp(470px,62dvh,560px)}
  #satosig-app-root .sx-axis{font-size:14px}
  #satosig-app-root .sx-time-axis{font-size:12px}
  #satosig-app-root .sx-ohlc{font-size:.57rem;line-height:1.6}
  #satosig-app-root .sx-market-head strong{font-size:1.12rem}
}
@media(max-height:700px) and (max-width:620px){
  #satosig-app-root .sx-chart-stage{height:430px}
}
@media(max-width:390px){
  #satosig-app-root .sx-chart-stage{height:clamp(460px,61dvh,530px)}
}


/* ===== v1.3.67 MOBILE PRICE FOCUS ===== */
#satosig-app-root .sx-volume-overlay{opacity:.72;pointer-events:none}
#satosig-app-root .sx-volume-separator{opacity:.45}
#satosig-app-root .sx-axis{font-size:14.5px;font-weight:950;fill:#c4ced7}
#satosig-app-root .sx-time-axis{font-size:12.5px;font-weight:900;fill:#aab5bf}
@media(max-width:620px){
  #satosig-app-root .sx-chart-stage{height:clamp(500px,68dvh,620px)}
  #satosig-app-root .sx-chart-svg{height:100%;min-height:0}
}
@media(max-height:700px) and (max-width:620px){
  #satosig-app-root .sx-chart-stage{height:460px}
}
@media(max-width:390px){
  #satosig-app-root .sx-chart-stage{height:clamp(490px,67dvh,590px)}
}


/* ===== v1.3.71 NORMAL / LARGE MOBILE CHART, NO INTERNAL BLACK GAP ===== */
#satosig-app-root .sx-size-toggle{
  min-height:38px;
  padding:9px 10px;
  border:1px solid var(--sa-line);
  border-radius:9px;
  background:rgba(255,255,255,.045);
  color:#d5dde4;
  font:900 .54rem/1 var(--sa-font);
  white-space:nowrap;
  cursor:pointer;
}
#satosig-app-root .sx-size-toggle[aria-pressed="true"]{
  border-color:rgba(var(--sa-main-rgb),.34);
  background:rgba(var(--sa-main-rgb),.13);
  color:var(--sa-main-soft);
}
#satosig-app-root .sx-chart-stage{
  height:410px;
}
#satosig-app-root .sx-chart-svg{
  display:block;
  width:100%;
  height:100%;
  min-height:0;
}
@media(max-width:620px){
  #satosig-app-root .sx-toolbar-actions{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
  #satosig-app-root .sx-size-toggle,
  #satosig-app-root .sx-indicator-toggle{
    width:100%;
    min-width:0;
    padding-inline:6px;
    font-size:.49rem;
  }
  #satosig-app-root .sx-size-normal .sx-chart-stage{
    height:clamp(370px,48dvh,430px);
  }
  #satosig-app-root .sx-size-large .sx-chart-stage{
    height:clamp(440px,56dvh,500px);
  }
}
@media(max-height:700px) and (max-width:620px){
  #satosig-app-root .sx-size-normal .sx-chart-stage{height:350px}
  #satosig-app-root .sx-size-large .sx-chart-stage{height:410px}
}
@media(max-width:390px){
  #satosig-app-root .sx-size-normal .sx-chart-stage{
    height:clamp(350px,46dvh,410px);
  }
  #satosig-app-root .sx-size-large .sx-chart-stage{
    height:clamp(420px,54dvh,475px);
  }
}


/* ===== v1.3.72 VISIBLE NORMAL / BESAR SWITCH + CACHE HOTFIX ===== */
#satosig-app-root .sx-size-switch{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:8px 10px;
  border:1px solid rgba(var(--sa-main-rgb),.24);
  border-radius:12px;
  background:rgba(var(--sa-main-rgb),.065);
}
#satosig-app-root .sx-size-switch>span{
  color:var(--sa-muted);
  font-size:.48rem;
  font-weight:950;
  letter-spacing:.08em;
}
#satosig-app-root .sx-size-switch>div{
  display:grid;
  grid-template-columns:repeat(2,minmax(72px,1fr));
  gap:5px;
}
#satosig-app-root .sx-size-switch button{
  min-height:34px;
  padding:7px 12px;
  border:1px solid var(--sa-line);
  border-radius:9px;
  background:rgba(255,255,255,.045);
  color:#cbd4dc;
  font:950 .52rem/1 var(--sa-font);
}
#satosig-app-root .sx-size-switch button.active{
  border-color:rgba(var(--sa-main-rgb),.42);
  background:rgba(var(--sa-main-rgb),.18);
  color:var(--sa-main-soft);
  box-shadow:inset 0 0 0 1px rgba(var(--sa-main-rgb),.09);
}
@media(max-width:620px){
  #satosig-app-root .sx-toolbar-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
  #satosig-app-root .sx-size-switch{position:relative;z-index:3}
  #satosig-app-root .sx-size-switch>div{min-width:168px}
}


/* ===== v1.3.73 HARD-SPLIT NORMAL / BESAR HEIGHT ===== */
#satosig-app-root .sx-explorer .sx-chart-stage{
  height:var(--sx-chart-height,365px)!important;
  min-height:var(--sx-chart-height,365px)!important;
  max-height:none!important;
}
#satosig-app-root .sx-size-switch button{
  display:grid;
  place-items:center;
  gap:3px;
}
#satosig-app-root .sx-size-switch button b{font:950 .52rem/1 var(--sa-font)}
#satosig-app-root .sx-size-switch button small{color:var(--sa-muted);font:800 .42rem/1 var(--sa-font)}
#satosig-app-root .sx-size-switch button.active small{color:var(--sa-main-soft)}

/* ===== v1.3.75 ENTRY MAP DOTS + PER-COIN ALT CHART ===== */
#satosig-app-root .month-box,
#satosig-app-root .heat-cell,
#satosig-app-root .daily-heat-cell{position:relative}
#satosig-app-root .entry-dot-stack{
  position:absolute;
  z-index:3;
  top:5px;
  right:5px;
  display:flex;
  align-items:center;
  gap:3px;
  pointer-events:none;
}
#satosig-app-root .entry-map-dot{
  min-width:10px;
  height:10px;
  display:grid;
  place-items:center;
  padding:0 2px;
  border:1.5px solid #071018;
  border-radius:999px;
  box-shadow:0 0 0 1px rgba(255,255,255,.72),0 2px 7px rgba(0,0,0,.38);
  color:#071018;
  font:1000 .38rem/1 var(--sa-font);
}
#satosig-app-root .entry-map-dot.long{background:#23c983}
#satosig-app-root .entry-map-dot.short{background:#ef5b67}
#satosig-app-root .heat-cell .entry-map-dot,
#satosig-app-root .daily-heat-cell .entry-map-dot{width:11px;min-width:11px;height:11px;padding:0}
#satosig-app-root .heat-summary .entry-count-long b{color:#6de3aa}
#satosig-app-root .heat-summary .entry-count-short b{color:#ff8792}
#satosig-app-root .month-box{min-height:84px}
#satosig-app-root .month-box em{
  display:flex;
  gap:4px;
  margin-top:3px;
  font-style:normal;
}
#satosig-app-root .month-box em i{
  min-width:28px;
  padding:3px 5px;
  border-radius:999px;
  font-style:normal;
  font-size:.46rem;
  font-weight:1000;
}
#satosig-app-root .month-box em .long{background:rgba(35,201,131,.14);color:#75e3b0}
#satosig-app-root .month-box em .short{background:rgba(239,91,103,.14);color:#ff8f99}

#satosig-app-root .alt-chart{
  display:grid;
  gap:8px;
  margin:12px 0;
  padding:10px;
  border:1px solid rgba(255,255,255,.12);
  border-radius:16px;
  background:linear-gradient(180deg,rgba(5,10,16,.76),rgba(10,16,23,.92));
  overflow:hidden;
}
#satosig-app-root .alt-chart-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:10px;
}
#satosig-app-root .alt-chart-head>div:first-child{min-width:0}
#satosig-app-root .alt-chart-head small{
  display:block;
  color:var(--sa-main-soft);
  font-size:.43rem;
  font-weight:1000;
  letter-spacing:.08em;
}
#satosig-app-root .alt-chart-head strong{
  display:block;
  margin-top:4px;
  font-size:.63rem;
}
#satosig-app-root .alt-chart-timeframes{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
#satosig-app-root .alt-chart-timeframes button{
  min-width:40px;
  min-height:30px;
  padding:5px 7px;
  border:1px solid var(--sa-line);
  border-radius:9px;
  background:rgba(255,255,255,.04);
  color:var(--sa-muted);
  font-size:.49rem;
  font-weight:1000;
}
#satosig-app-root .alt-chart-timeframes button.active{
  border-color:rgba(var(--sa-main-rgb),.38);
  background:rgba(var(--sa-main-rgb),.15);
  color:var(--sa-main-soft);
}
#satosig-app-root .alt-chart-stage{
  width:100%;
  height:340px;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.08);
  border-radius:12px;
  background:#080d13;
  touch-action:pan-y;
}
#satosig-app-root .alt-chart-stage svg{display:block;width:100%;height:100%}
#satosig-app-root .ax-bg{fill:rgba(255,255,255,.008)}
#satosig-app-root .ax-grid{stroke:rgba(255,255,255,.075);stroke-width:1;vector-effect:non-scaling-stroke}
#satosig-app-root .ax-axis,
#satosig-app-root .ax-time{fill:#8c98a3;font:850 11px/1 var(--sa-font)}
#satosig-app-root .ax-candle line{stroke:currentColor;stroke-width:1.15;vector-effect:non-scaling-stroke}
#satosig-app-root .ax-candle rect{fill:currentColor;stroke:currentColor;stroke-width:1;vector-effect:non-scaling-stroke}
#satosig-app-root .ax-candle.up{color:#23c983}
#satosig-app-root .ax-candle.down{color:#ef5b67}
#satosig-app-root .ax-candle.flat{color:#9aa5af}
#satosig-app-root .ax-level line{stroke-width:1.2;stroke-dasharray:5 4;vector-effect:non-scaling-stroke}
#satosig-app-root .ax-level text{font:1000 10px/1 var(--sa-font)}
#satosig-app-root .ax-level.entry line{stroke:#64a8ff}.ax-level.entry text{fill:#8dc0ff}
#satosig-app-root .ax-level.tp line{stroke:#23c983}.ax-level.tp text{fill:#75e3b0}
#satosig-app-root .ax-level.sl line{stroke:#ef5b67}.ax-level.sl text{fill:#ff8f99}
#satosig-app-root .ax-btc-trigger line{stroke:#fff0a8;stroke-width:1.1;stroke-dasharray:4 5;vector-effect:non-scaling-stroke}
#satosig-app-root .ax-btc-trigger path{fill:#080d13;stroke:#fff0a8;stroke-width:1.5;vector-effect:non-scaling-stroke}
#satosig-app-root .ax-btc-trigger text{fill:#fff0a8;font:1000 9px/1 var(--sa-font)}
#satosig-app-root .ax-alt-entry circle{stroke:#071018;stroke-width:1.6;vector-effect:non-scaling-stroke}
#satosig-app-root .ax-alt-entry.long circle{fill:#23c983}
#satosig-app-root .ax-alt-entry.short circle{fill:#ef5b67}
#satosig-app-root .ax-alt-entry text{fill:#fff;font:1000 9px/1 var(--sa-font)}
#satosig-app-root .alt-chart-info{
  display:grid;
  gap:3px;
  padding:8px 9px;
  border:1px solid rgba(255,255,255,.08);
  border-radius:10px;
  background:rgba(255,255,255,.035);
}
#satosig-app-root .alt-chart-info b{font-size:.54rem;color:#fff7d2}
#satosig-app-root .alt-chart-info span{font:750 .47rem/1.35 ui-monospace,SFMono-Regular,Menlo,monospace;color:#bfc9d1}
#satosig-app-root .alt-chart-legend{display:flex;flex-wrap:wrap;gap:8px;color:var(--sa-muted);font-size:.47rem;font-weight:900}
#satosig-app-root .alt-chart-legend .trigger{color:#fff0a8}
#satosig-app-root .alt-chart-legend .entry{color:#64a8ff}
#satosig-app-root .alt-chart-legend .tp{color:#75e3b0}
#satosig-app-root .alt-chart-legend .sl{color:#ff8f99}
@media(max-width:520px){
  #satosig-app-root .alt-chart{margin-inline:-4px;padding:8px}
  #satosig-app-root .alt-chart-head{align-items:stretch;flex-direction:column}
  #satosig-app-root .alt-chart-timeframes{width:100%}
  #satosig-app-root .alt-chart-timeframes button{min-height:34px}
  #satosig-app-root .alt-chart-stage{height:315px}
  #satosig-app-root .ax-axis,#satosig-app-root .ax-time{font-size:10px}
}
@media(max-height:700px) and (max-width:520px){
  #satosig-app-root .alt-chart-stage{height:280px}
}


/* ===== v1.3.76 BTC + ALT ENTRY DOTS ON EVERY HEATMAP ===== */
#satosig-app-root .entry-dot-stack{
  top:4px;
  right:4px;
  width:min(66px,calc(100% - 8px));
  flex-wrap:wrap;
  justify-content:flex-end;
  align-content:flex-start;
  gap:2px;
}
#satosig-app-root .entry-map-dot{
  width:auto;
  min-width:14px;
  height:12px;
  padding:0 2px;
  border-width:1px;
  font-size:.31rem;
  letter-spacing:-.02em;
}
#satosig-app-root .entry-map-dot.btc{
  min-width:12px;
  box-shadow:0 0 0 1px rgba(255,255,255,.92),0 2px 7px rgba(0,0,0,.42);
}
#satosig-app-root .entry-map-dot.alt{
  box-shadow:0 0 0 1px rgba(191,157,255,.95),0 2px 7px rgba(0,0,0,.42);
}
#satosig-app-root .heat-cell .entry-map-dot,
#satosig-app-root .daily-heat-cell .entry-map-dot{
  width:auto;
  min-width:14px;
  height:12px;
  padding:0 2px;
}
#satosig-app-root .heat-cell,
#satosig-app-root .daily-heat-cell{padding-top:19px}
#satosig-app-root .month-box{min-height:108px;padding-top:18px}
#satosig-app-root .month-box .month-entry-counts{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  width:100%;
  gap:3px;
}
#satosig-app-root .month-box .month-entry-counts i{
  min-width:0;
  padding:3px 2px;
  text-align:center;
}
#satosig-app-root .month-box .month-entry-counts .alt-count{
  outline:1px solid rgba(191,157,255,.34);
}
#satosig-app-root .heat-summary .alt-entry-count{
  border-color:rgba(191,157,255,.28);
  background:rgba(125,86,190,.11);
}
@media(max-width:390px){
  #satosig-app-root .entry-dot-stack{width:min(58px,calc(100% - 6px));top:3px;right:3px}
  #satosig-app-root .entry-map-dot,
  #satosig-app-root .heat-cell .entry-map-dot,
  #satosig-app-root .daily-heat-cell .entry-map-dot{min-width:13px;height:11px;font-size:.28rem}
  #satosig-app-root .heat-cell,
  #satosig-app-root .daily-heat-cell{padding-top:18px}
}
#satosig-app-root .heat-summary .entry-dot-legend{
  flex-basis:100%;
  border-style:dashed;
  color:var(--sa-muted);
  font-size:.4rem;
}
#satosig-app-root .heat-summary .entry-dot-legend b:first-child{color:#f5f7fa}
#satosig-app-root .heat-summary .entry-dot-legend b:last-child{color:#c7adff}

/* SATOSIG v1.3.77: historical entry dots inside each ALT chart */
#satosig-app-root .ax-alt-entry.historical circle{stroke:#071018;stroke-width:1.8;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 2px rgba(0,0,0,.72))}
#satosig-app-root .ax-alt-entry.historical.current circle{stroke:#fff;stroke-width:2.4;filter:drop-shadow(0 0 4px rgba(255,255,255,.48))}
#satosig-app-root .alt-chart-legend .entry-long{color:#53e7a2}
#satosig-app-root .alt-chart-legend .entry-short{color:#ff7f8a}
#satosig-app-root .alt-chart-legend .entry-count{color:#dce8f4}
#satosig-app-root .alt-entry-note{display:block!important;margin-top:3px;font-weight:950}
#satosig-app-root .alt-entry-note.long{color:#53e7a2}
#satosig-app-root .alt-entry-note.short{color:#ff7f8a}


/* ===== v1.3.82 BTC CHART MATCHES ALT + MINI/NORMAL/LARGE ===== */
#satosig-app-root .sx-size-switch>div{
  grid-template-columns:repeat(3,minmax(74px,1fr));
  width:min(100%,390px);
}
#satosig-app-root .sx-size-switch button{
  min-width:0;
  padding-inline:8px;
}
#satosig-app-root .sx-explorer .sx-chart-stage{
  height:var(--sx-chart-height,315px)!important;
  min-height:var(--sx-chart-height,315px)!important;
  border-radius:12px;
  background:#080d13;
}
#satosig-app-root .sx-axis,
#satosig-app-root .sx-time-axis{
  fill:#8c98a3;
  font-size:10px;
  font-weight:850;
}
#satosig-app-root .sx-candle line{
  stroke-width:1.15;
}
#satosig-app-root .sx-candle rect{
  stroke-width:1;
}
#satosig-app-root .sx-volume-overlay{
  opacity:.42;
}
@media(max-width:620px){
  #satosig-app-root .sx-size-switch{
    align-items:stretch;
    flex-direction:column;
    gap:6px;
  }
  #satosig-app-root .sx-size-switch>div{
    width:100%;
    min-width:0;
  }
  #satosig-app-root .sx-size-switch button{
    min-height:38px;
    padding:6px 4px;
  }
  #satosig-app-root .sx-size-switch button b{font-size:.48rem}
  #satosig-app-root .sx-size-switch button small{font-size:.37rem}
}


/* ===== v1.3.83 ALT SUPPORT / RESISTANCE 100 CANDLE ===== */
#satosig-app-root .alt-chart-sr{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
#satosig-app-root .alt-chart-sr article{
  min-width:0;
  padding:9px 10px;
  border:1px solid rgba(255,255,255,.09);
  border-radius:11px;
  background:rgba(255,255,255,.035);
}
#satosig-app-root .alt-chart-sr article.support{border-color:rgba(35,201,131,.25)}
#satosig-app-root .alt-chart-sr article.resistance{border-color:rgba(239,91,103,.25)}
#satosig-app-root .alt-chart-sr small{
  display:block;
  color:var(--sa-muted);
  font-size:.43rem;
  font-weight:1000;
  letter-spacing:.04em;
}
#satosig-app-root .alt-chart-sr strong{
  display:block;
  margin-top:4px;
  color:#f4f7fa;
  font-size:.64rem;
  overflow-wrap:anywhere;
}
#satosig-app-root .alt-chart-sr .support strong{color:#75e3b0}
#satosig-app-root .alt-chart-sr .resistance strong{color:#ff8f99}
#satosig-app-root .alt-chart-sr span{
  display:block;
  margin-top:3px;
  color:var(--sa-muted);
  font-size:.4rem;
  font-weight:750;
  line-height:1.35;
}
#satosig-app-root .alt-chart-legend .sr{color:#d7dee5}
@media(max-width:390px){
  #satosig-app-root .alt-chart-sr{gap:5px}
  #satosig-app-root .alt-chart-sr article{padding:8px 7px}
  #satosig-app-root .alt-chart-sr small{font-size:.38rem}
  #satosig-app-root .alt-chart-sr strong{font-size:.56rem}
  #satosig-app-root .alt-chart-sr span{font-size:.35rem}
}

/* ===== v1.3.84 S/R 100 CANDLE LINES ON BTC + ALT CHARTS ===== */
#satosig-app-root .sx-sr-line line,
#satosig-app-root .ax-sr-line line{
  stroke-width:1.15;
  stroke-dasharray:6 5;
  vector-effect:non-scaling-stroke;
  opacity:.72;
}
#satosig-app-root .sx-sr-line text,
#satosig-app-root .ax-sr-line text{
  font:1000 9px/1 var(--sa-font);
  paint-order:stroke fill;
  stroke:#080d13;
  stroke-width:3px;
  stroke-linejoin:round;
}
#satosig-app-root .sx-sr-line.support line,
#satosig-app-root .ax-sr-line.support line{stroke:#22d3ee}
#satosig-app-root .sx-sr-line.support text,
#satosig-app-root .ax-sr-line.support text{fill:#67e8f9}
#satosig-app-root .sx-sr-line.resistance line,
#satosig-app-root .ax-sr-line.resistance line{stroke:#f59e0b}
#satosig-app-root .sx-sr-line.resistance text,
#satosig-app-root .ax-sr-line.resistance text{fill:#fbbf24}
#satosig-app-root .sx-legend .sr-support,
#satosig-app-root .alt-chart-legend .sr-support{color:#67e8f9}
#satosig-app-root .sx-legend .sr-resistance,
#satosig-app-root .alt-chart-legend .sr-resistance{color:#fbbf24}
#satosig-app-root .sx-context-card.support{border-color:rgba(34,211,238,.25)}
#satosig-app-root .sx-context-card.support strong{color:#67e8f9}
#satosig-app-root .sx-context-card.resistance{border-color:rgba(245,158,11,.25)}
#satosig-app-root .sx-context-card.resistance strong{color:#fbbf24}
#satosig-app-root .alt-chart-sr article.support{border-color:rgba(34,211,238,.25)}
#satosig-app-root .alt-chart-sr article.resistance{border-color:rgba(245,158,11,.25)}
#satosig-app-root .alt-chart-sr .support strong{color:#67e8f9}
#satosig-app-root .alt-chart-sr .resistance strong{color:#fbbf24}
#satosig-app-root .alt-chart-controls{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:5px;
  align-items:stretch;
}
#satosig-app-root .alt-chart-sr-toggle{
  min-width:68px;
  min-height:30px;
  padding:5px 8px;
  border:1px solid var(--sa-line);
  border-radius:9px;
  background:rgba(255,255,255,.04);
  color:var(--sa-muted);
  font-size:.46rem;
  font-weight:1000;
  white-space:nowrap;
}
#satosig-app-root .alt-chart-sr-toggle.active{
  border-color:rgba(34,211,238,.38);
  background:rgba(34,211,238,.11);
  color:#a5f3fc;
}
@media(max-width:520px){
  #satosig-app-root .alt-chart-controls{grid-template-columns:minmax(0,1fr) 72px}
  #satosig-app-root .sx-sr-line text,
  #satosig-app-root .ax-sr-line text{font-size:8.5px}
}


/* ===== v1.3.85 FAST ALT CHART + MINI/NORMAL/LARGE + PAN/ZOOM ===== */
#satosig-app-root .alt-chart-size-switch{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:5px;
}
#satosig-app-root .alt-chart-size-switch button,
#satosig-app-root .alt-chart-navigation button{
  min-width:0;
  min-height:34px;
  padding:5px 6px;
  border:1px solid var(--sa-line);
  border-radius:9px;
  background:rgba(255,255,255,.04);
  color:var(--sa-muted);
  font-weight:1000;
}
#satosig-app-root .alt-chart-size-switch button b,
#satosig-app-root .alt-chart-size-switch button small{display:block}
#satosig-app-root .alt-chart-size-switch button b{font-size:.47rem}
#satosig-app-root .alt-chart-size-switch button small{margin-top:2px;font-size:.35rem}
#satosig-app-root .alt-chart-size-switch button.active{
  border-color:rgba(var(--sa-main-rgb),.42);
  background:rgba(var(--sa-main-rgb),.15);
  color:var(--sa-main-soft);
}
#satosig-app-root .alt-chart-navigation{
  display:grid;
  grid-template-columns:40px 40px minmax(84px,1fr) 40px 40px;
  gap:5px;
  align-items:center;
}
#satosig-app-root .alt-chart-navigation button{
  padding:0;
  color:#e9f0f6;
  font-size:.82rem;
  line-height:1;
}
#satosig-app-root .alt-chart-navigation button:active{transform:translateY(1px);background:rgba(255,255,255,.1)}
#satosig-app-root .alt-chart-navigation strong{
  display:grid;
  place-items:center;
  min-height:34px;
  padding:5px 8px;
  border:1px solid rgba(255,255,255,.08);
  border-radius:9px;
  background:rgba(255,255,255,.025);
  color:#dce8f4;
  font-size:.46rem;
  white-space:nowrap;
}
#satosig-app-root .alt-chart.alt-size-mini .alt-chart-stage{height:285px}
#satosig-app-root .alt-chart.alt-size-normal .alt-chart-stage{height:340px}
#satosig-app-root .alt-chart.alt-size-large .alt-chart-stage{height:420px}
#satosig-app-root .alt-chart-stage{
  cursor:grab;
  touch-action:pan-y;
  user-select:none;
  -webkit-user-select:none;
}
#satosig-app-root .alt-chart-stage.is-dragging{cursor:grabbing}
#satosig-app-root .alt-chart.is-loading-history .alt-chart-stage{opacity:.58}
#satosig-app-root .alt-chart.is-loading-history button{pointer-events:none}
@media(max-width:520px){
  #satosig-app-root .alt-chart.alt-size-mini .alt-chart-stage{height:255px}
  #satosig-app-root .alt-chart.alt-size-normal .alt-chart-stage{height:315px}
  #satosig-app-root .alt-chart.alt-size-large .alt-chart-stage{height:385px}
  #satosig-app-root .alt-chart-navigation{grid-template-columns:38px 38px minmax(72px,1fr) 38px 38px}
}
@media(max-height:700px) and (max-width:520px){
  #satosig-app-root .alt-chart.alt-size-mini .alt-chart-stage{height:230px}
  #satosig-app-root .alt-chart.alt-size-normal .alt-chart-stage{height:280px}
  #satosig-app-root .alt-chart.alt-size-large .alt-chart-stage{height:340px}
}

/* ===== v1.3.86 DYNAMIC BTC OFFSET -> ALT REBUILD ===== */
#satosig-app-root .dynamic-offset-panel{display:grid;gap:12px}
#satosig-app-root .dynamic-offset-inputs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
#satosig-app-root .dynamic-offset-inputs label{display:grid;gap:6px}
#satosig-app-root .dynamic-offset-inputs label>span{color:var(--sa-muted);font-size:.46rem;font-weight:1000;letter-spacing:.08em}
#satosig-app-root .dynamic-offset-inputs label>div{display:grid;grid-template-columns:28px minmax(0,1fr) 24px;align-items:center;min-height:46px;border:1px solid var(--sa-line);border-radius:12px;background:rgba(255,255,255,.035);overflow:hidden}
#satosig-app-root .dynamic-offset-inputs b,
#satosig-app-root .dynamic-offset-inputs i{display:grid;place-items:center;color:var(--sa-main-soft);font-style:normal;font-size:.78rem;font-weight:1000}
#satosig-app-root .dynamic-offset-inputs input{width:100%;height:44px;border:0;outline:0;background:transparent;color:#f5f8fb;text-align:center;font-size:1rem;font-weight:1000;appearance:textfield}
#satosig-app-root .dynamic-offset-inputs input::-webkit-inner-spin-button,
#satosig-app-root .dynamic-offset-inputs input::-webkit-outer-spin-button{appearance:none;margin:0}
#satosig-app-root .dynamic-offset-actions{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:7px}
#satosig-app-root .dynamic-offset-actions button{min-height:42px;border:1px solid var(--sa-line);border-radius:11px;background:rgba(255,255,255,.04);color:#dce7f1;font-size:.44rem;font-weight:1000;letter-spacing:.03em}
#satosig-app-root .dynamic-offset-actions button:first-child{border-color:rgba(var(--sa-main-rgb),.42);background:rgba(var(--sa-main-rgb),.15);color:var(--sa-main-soft)}
#satosig-app-root .dynamic-offset-actions button:disabled{opacity:.5}
#satosig-app-root .dynamic-offset-note{margin:0;color:var(--sa-muted);font-size:.48rem;line-height:1.55}
#satosig-app-root .dynamic-offset-progress{display:flex;align-items:center;gap:8px;min-height:38px;padding:8px 10px;border:1px solid rgba(var(--sa-main-rgb),.22);border-radius:10px;background:rgba(var(--sa-main-rgb),.08);font-size:.48rem}
#satosig-app-root .offset-table tr[data-backtest-pick]{cursor:pointer}
#satosig-app-root .offset-table tr[data-backtest-pick]:active{background:rgba(255,255,255,.08)}
#satosig-app-root .dynamic-alt-direction{display:grid;gap:8px;margin-top:12px}
#satosig-app-root .dynamic-alt-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
#satosig-app-root .dynamic-alt-grid article{display:grid;gap:3px;min-width:0;padding:10px;border:1px solid var(--sa-line);border-radius:11px;background:rgba(255,255,255,.028)}
#satosig-app-root .dynamic-alt-grid small{color:var(--sa-muted);font-size:.4rem;font-weight:1000;letter-spacing:.05em}
#satosig-app-root .dynamic-alt-grid strong{color:#f5f8fb;font-size:.72rem}
#satosig-app-root .dynamic-alt-grid span{color:var(--sa-muted);font-size:.4rem}
@media(max-width:420px){
  #satosig-app-root .dynamic-offset-actions{grid-template-columns:1fr}
  #satosig-app-root .dynamic-alt-grid{grid-template-columns:1fr 1fr}
}

/* v1.3.87: active offset must stay visible on every Heatmap summary. */
#satosig-app-root .heat-summary .active-offset-chip{
  border-color:rgba(var(--sa-main-rgb),.55);
  background:rgba(var(--sa-main-rgb),.14);
  color:var(--sa-ink);
  font-weight:850;
}
#satosig-app-root .heat-summary .active-offset-chip b{
  color:var(--sa-accent-soft,#9ee6c4);
  margin-right:3px;
}


/* ===== v1.3.89 AUTO FIBO RANGE 100C · BTC + ALT ===== */
#satosig-app-root .sx-fib-line line,
#satosig-app-root .ax-fib-line line{
  stroke:#a78bfa;
  stroke-width:1;
  stroke-dasharray:3 5;
  vector-effect:non-scaling-stroke;
  opacity:.64;
}
#satosig-app-root .sx-fib-line.minor line,
#satosig-app-root .ax-fib-line.minor line{opacity:.34;stroke-width:.8}
#satosig-app-root .sx-fib-line.major line,
#satosig-app-root .ax-fib-line.major line{opacity:.76;stroke-width:1.05}
#satosig-app-root .sx-fib-line text,
#satosig-app-root .ax-fib-line text{
  fill:#c4b5fd;
  font:950 8.5px/1 var(--sa-font);
  paint-order:stroke fill;
  stroke:#080d13;
  stroke-width:3px;
  stroke-linejoin:round;
}
#satosig-app-root .sx-legend .fib,
#satosig-app-root .alt-chart-legend .fib{color:#c4b5fd}
#satosig-app-root .sx-context-card.fib,
#satosig-app-root .alt-chart-sr article.fib{border-color:rgba(167,139,250,.28)}
#satosig-app-root .sx-context-card.fib strong,
#satosig-app-root .alt-chart-sr article.fib strong{color:#c4b5fd}
#satosig-app-root .alt-chart-sr{grid-template-columns:repeat(3,minmax(0,1fr))}
#satosig-app-root .alt-chart-controls{grid-template-columns:minmax(0,1fr) auto auto}
#satosig-app-root .alt-chart-fib-toggle{
  min-width:68px;
  min-height:30px;
  padding:5px 8px;
  border:1px solid var(--sa-line);
  border-radius:9px;
  background:rgba(255,255,255,.04);
  color:var(--sa-muted);
  font-size:.46rem;
  font-weight:1000;
  white-space:nowrap;
}
#satosig-app-root .alt-chart-fib-toggle.active{
  border-color:rgba(167,139,250,.42);
  background:rgba(167,139,250,.13);
  color:#ddd6fe;
}
@media(max-width:520px){
  #satosig-app-root .alt-chart-controls{grid-template-columns:minmax(0,1fr) 66px 68px}
  #satosig-app-root .alt-chart-sr{grid-template-columns:repeat(2,minmax(0,1fr))}
  #satosig-app-root .alt-chart-sr article.fib{grid-column:1/-1}
}

/* ===== v1.3.90 MANUAL FIBO · NO AUTO DETECTION ===== */
#satosig-app-root .sx-fib-switch{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:7px 10px;
  border:1px solid rgba(167,139,250,.24);
  border-radius:12px;
  background:rgba(167,139,250,.065);
}
#satosig-app-root .sx-fib-switch>span{
  color:#c4b5fd;
  font-size:.48rem;
  font-weight:1000;
  letter-spacing:.08em;
}
#satosig-app-root .sx-fib-switch>div,
#satosig-app-root .alt-chart-fib-switch{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:4px;
}
#satosig-app-root .sx-fib-switch button,
#satosig-app-root .alt-chart-fib-switch button{
  min-width:0;
  min-height:31px;
  padding:5px 8px;
  border:1px solid var(--sa-line);
  border-radius:9px;
  background:rgba(255,255,255,.04);
  color:var(--sa-muted);
  font:1000 .47rem/1 var(--sa-font);
  white-space:nowrap;
}
#satosig-app-root .sx-fib-switch button.active,
#satosig-app-root .alt-chart-fib-switch button.active{
  border-color:rgba(167,139,250,.48);
  background:rgba(167,139,250,.16);
  color:#ede9fe;
  box-shadow:inset 0 0 0 1px rgba(167,139,250,.08);
}
#satosig-app-root .alt-chart-controls{
  grid-template-columns:minmax(0,1fr) auto minmax(158px,auto);
}
#satosig-app-root .alt-chart-fib-switch{min-width:158px}
@media(max-width:520px){
  #satosig-app-root .sx-fib-switch{align-items:stretch;flex-direction:column;gap:6px}
  #satosig-app-root .sx-fib-switch>div{width:100%}
  #satosig-app-root .alt-chart-controls{grid-template-columns:68px minmax(0,1fr)}
  #satosig-app-root .alt-chart-timeframes{grid-column:1/-1}
  #satosig-app-root .alt-chart-sr-toggle{grid-column:1}
  #satosig-app-root .alt-chart-fib-switch{grid-column:2;min-width:0}
  #satosig-app-root .alt-chart-fib-switch button{padding-inline:4px;font-size:.43rem}
}


/* v1.4.24: four ALT chart timeframes (1H, 4H, 1D, 1W). */
#satosig-app-root .alt-chart-timeframes{grid-template-columns:repeat(4,minmax(0,1fr))}
#satosig-app-root .alt-chart-timeframes button{min-width:0;padding-left:5px;padding-right:5px}

/* v1.3.95 signal dots are signal-date markers; entries are lines only. */
#satosig-app-root .sx-entry-line line{stroke:#64a8ff;stroke-width:1.25;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}
#satosig-app-root .sx-entry-line text{fill:#8dc0ff;font:1000 10px/1 var(--sa-font)}
#satosig-app-root .sx-entry-line.short line{stroke:#8db8ff}
#satosig-app-root .ax-signal-dot circle{stroke:#071018;stroke-width:1.05;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 1px rgba(0,0,0,.72))}
#satosig-app-root .ax-signal-dot.long circle{fill:#23c983}
#satosig-app-root .ax-signal-dot.short circle{fill:#ef5b67}
#satosig-app-root .ax-signal-dot.current circle{stroke:rgba(255,255,255,.72);stroke-width:1.15}
#satosig-app-root .alt-signal-note{display:block;margin-top:4px;font-weight:900}
#satosig-app-root .alt-signal-note.long{color:#53e7a2}
#satosig-app-root .alt-signal-note.short{color:#ff7f8a}
#satosig-app-root .alt-chart-legend .signal-long{color:#53e7a2}
#satosig-app-root .alt-chart-legend .signal-short{color:#ff7f8a}


/* v1.3.96 TP/SL recommendations: subtle white reference lines. */
#satosig-app-root .ax-level.tp-rek line,
#satosig-app-root .ax-level.sl-rek line{
  stroke:rgba(255,255,255,.26);
  stroke-width:.9;
  stroke-dasharray:3 6;
  vector-effect:non-scaling-stroke;
}
#satosig-app-root .ax-level.tp-rek text,
#satosig-app-root .ax-level.sl-rek text{
  fill:rgba(255,255,255,.48);
  font:900 9px/1 var(--sa-font);
}
#satosig-app-root .sx-reco-line line{
  stroke:rgba(255,255,255,.24);
  stroke-width:.9;
  stroke-dasharray:3 6;
  vector-effect:non-scaling-stroke;
}
#satosig-app-root .sx-reco-line text{
  fill:rgba(255,255,255,.46);
  font:900 9px/1 var(--sa-font);
}
#satosig-app-root .alt-chart-legend .tp,
#satosig-app-root .alt-chart-legend .sl,
#satosig-app-root .sx-legend .reco{color:rgba(255,255,255,.58)}

/* v1.3.99 compact signal markers */
#satosig-app-root .sx-signal-dot circle,#satosig-app-root .ax-signal-dot circle{filter:none}

/* v1.4.09: ALT selectable chart source + stable drag during live updates. */
#satosig-app-root .source-hidden{display:none!important}
#satosig-app-root .alt-chart-source-switch{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:8px 10px;
  border:1px solid rgba(96,165,250,.25);
  border-radius:12px;
  background:rgba(96,165,250,.065);
}
#satosig-app-root .alt-chart-source-switch>span{
  color:#93c5fd;
  font:1000 .48rem/1 var(--sa-font);
  letter-spacing:.08em;
}
#satosig-app-root .alt-chart-source-switch>div{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:4px;
  min-width:min(100%,260px);
}
#satosig-app-root .alt-chart-source-switch button{
  min-height:32px;
  padding:6px 9px;
  border:1px solid var(--sa-line);
  border-radius:9px;
  background:rgba(255,255,255,.04);
  color:var(--sa-muted);
  font:1000 .47rem/1 var(--sa-font);
  white-space:nowrap;
}
#satosig-app-root .alt-chart-source-switch button.active{
  border-color:rgba(96,165,250,.52);
  background:rgba(96,165,250,.17);
  color:#dbeafe;
}
#satosig-app-root .alt-chart-source-switch{margin-bottom:9px}
#satosig-app-root .alt-chart[data-chart-source="binance"] .alt-chart-timeframes{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
#satosig-app-root .alt-chart-stage,
#satosig-app-root .sx-chart-stage{
  cursor:grab;
}
#satosig-app-root .alt-chart-stage.is-dragging,
#satosig-app-root .sx-chart-stage:active{
  cursor:grabbing;
}
@media(max-width:520px){
  #satosig-app-root .alt-chart-source-switch{align-items:stretch;flex-direction:column}
  #satosig-app-root .alt-chart-source-switch>div{width:100%;min-width:0}
}

/* v1.4.24: compact BTC/ALT market pills share one synchronized explorer. */
#satosig-app-root .sx-market-pills{
  display:grid;
  gap:6px;
  min-width:0;
  padding:8px 9px;
  border:1px solid rgba(var(--sa-main-rgb),.2);
  border-radius:13px;
  background:rgba(var(--sa-main-rgb),.055);
}
#satosig-app-root .sx-market-pills>span{
  color:var(--sa-main-soft);
  font:1000 .43rem/1 var(--sa-font);
  letter-spacing:.1em;
}
#satosig-app-root .sx-market-pills>div{
  display:flex;
  gap:5px;
  min-width:0;
  overflow-x:auto;
  overscroll-behavior-x:contain;
  padding:1px 0 3px;
  scrollbar-width:none;
}
#satosig-app-root .sx-market-pills>div::-webkit-scrollbar{display:none}
#satosig-app-root .sx-market-pills button{
  flex:0 0 auto;
  min-width:48px;
  min-height:27px;
  padding:5px 10px;
  border:1px solid var(--sa-line);
  border-radius:999px;
  background:rgba(255,255,255,.04);
  color:var(--sa-muted);
  font:1000 .48rem/1 var(--sa-font);
  letter-spacing:.025em;
}
#satosig-app-root .sx-market-pills button.active{
  border-color:rgba(var(--sa-main-rgb),.48);
  background:rgba(var(--sa-main-rgb),.18);
  color:var(--sa-main-soft);
  box-shadow:inset 0 0 0 1px rgba(var(--sa-main-rgb),.08);
}
#satosig-app-root .sx-market-pills>small{
  color:var(--sa-muted);
  font-size:.42rem;
  line-height:1.35;
}
@media(max-width:390px){
  #satosig-app-root .sx-market-pills{padding:7px 8px}
  #satosig-app-root .sx-market-pills button{min-width:44px;padding-inline:9px}
  #satosig-app-root .sx-market-pills>small{display:none}
}

/* v1.4.26: four compact context cards without descriptions. */
#satosig-app-root .sx-context{gap:5px}
#satosig-app-root .sx-context-card{
  min-height:0;
  padding:7px 8px;
  border-radius:10px;
}
#satosig-app-root .sx-context-card small{
  font-size:.39rem;
  line-height:1.1;
  letter-spacing:.045em;
}
#satosig-app-root .sx-context-card strong{
  margin-top:3px;
  font-size:.54rem;
  line-height:1.15;
}

/* v1.4.30: curated, unique four-tab chart-pattern gallery drawn with inline SVG. */
#satosig-app-root .sx-pattern-browser{
  display:grid;
  gap:9px;
  min-width:0;
  margin-top:3px;
  padding:10px;
  border:1px solid var(--sa-line);
  border-radius:14px;
  background:rgba(255,255,255,.025);
  overflow:hidden;
}
#satosig-app-root .sx-pattern-tabs{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:5px;
}
#satosig-app-root .sx-pattern-tabs button{
  min-width:0;
  min-height:37px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:5px;
  padding:6px 5px;
  border:1px solid var(--sa-line);
  border-radius:9px;
  background:rgba(255,255,255,.035);
  color:var(--sa-muted);
  font:950 .4rem/1.15 var(--sa-font);
  text-transform:uppercase;
  cursor:pointer;
}
#satosig-app-root .sx-pattern-tabs button span{min-width:0;overflow:hidden;text-overflow:ellipsis}
#satosig-app-root .sx-pattern-tabs button b{
  flex:0 0 auto;
  min-width:17px;
  height:17px;
  display:grid;
  place-items:center;
  padding:0 4px;
  border-radius:999px;
  background:rgba(255,255,255,.07);
  font-size:.42rem;
}
#satosig-app-root .sx-pattern-tabs button.active{
  border-color:rgba(var(--sa-main-rgb),.42);
  background:rgba(var(--sa-main-rgb),.14);
  color:var(--sa-main-soft);
}
#satosig-app-root .sx-pattern-browser{grid-template-columns:minmax(0,1fr)}
#satosig-app-root .sx-pattern-panel{min-width:0}
#satosig-app-root .sx-pattern-panel[hidden]{display:none!important}
#satosig-app-root .sx-pattern-track{
  display:flex;
  gap:8px;
  min-width:0;
  margin:0 -10px;
  padding:1px 10px 7px;
  overflow-x:auto;
  overflow-y:hidden;
  scroll-snap-type:x mandatory;
  scroll-padding-inline:10px;
  overscroll-behavior-inline:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
  touch-action:pan-x pan-y;
  cursor:grab;
  user-select:none;
}
#satosig-app-root .sx-pattern-track.is-dragging{cursor:grabbing;scroll-snap-type:none}
#satosig-app-root .sx-pattern-track::-webkit-scrollbar{display:none}
#satosig-app-root .sx-pattern-card{
  flex:0 0 clamp(132px,42vw,176px);
  min-width:0;
  padding:7px;
  border:1px solid var(--sa-line);
  border-radius:11px;
  background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.025));
  scroll-snap-align:start;
  overflow:hidden;
}
#satosig-app-root .sx-pattern-card.bullish{border-color:rgba(35,201,131,.22)}
#satosig-app-root .sx-pattern-card.bearish{border-color:rgba(239,91,103,.22)}
#satosig-app-root .sx-pattern-card.advanced{border-color:rgba(181,140,255,.24)}
#satosig-app-root .sx-pattern-card.continuation{border-color:rgba(86,184,255,.22)}
#satosig-app-root .sx-pattern-card.sx-pattern-card-highlight{
  border-color:var(--sa-main);
  box-shadow:0 0 0 2px rgba(var(--sa-main-rgb),.35),0 0 18px rgba(var(--sa-main-rgb),.4);
  animation:sxPatternHighlightPulse 1.6s ease-in-out 2;
}
@keyframes sxPatternHighlightPulse{
  0%,100%{box-shadow:0 0 0 2px rgba(var(--sa-main-rgb),.35),0 0 18px rgba(var(--sa-main-rgb),.4)}
  50%{box-shadow:0 0 0 2px rgba(var(--sa-main-rgb),.75),0 0 26px rgba(var(--sa-main-rgb),.65)}
}
#satosig-app-root .sx-pattern-image{
  aspect-ratio:16/10;
  display:grid;
  place-items:center;
  border-radius:8px;
  background:radial-gradient(circle at 50% 40%,rgba(var(--sa-main-rgb),.11),transparent 62%),rgba(4,8,12,.72);
  overflow:hidden;
}
#satosig-app-root .sx-pattern-svg{width:100%;height:100%;display:block;pointer-events:none}
#satosig-app-root .sx-pattern-grid{fill:none;stroke:rgba(255,255,255,.045);stroke-width:.65;vector-effect:non-scaling-stroke}
#satosig-app-root .sx-pattern-guide{fill:none;stroke:rgba(255,255,255,.3);stroke-width:1;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}
#satosig-app-root .sx-pattern-price{fill:none;stroke:#56b8ff;stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 3px rgba(86,184,255,.34))}
#satosig-app-root .sx-pattern-confirm{fill:#56b8ff;stroke:#071016;stroke-width:1;vector-effect:non-scaling-stroke}
#satosig-app-root .sx-pattern-arrow{fill:none;stroke:#56b8ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
#satosig-app-root .sx-pattern-svg.up .sx-pattern-price,#satosig-app-root .sx-pattern-svg.up .sx-pattern-arrow{stroke:#23c983}
#satosig-app-root .sx-pattern-svg.up .sx-pattern-confirm{fill:#23c983}
#satosig-app-root .sx-pattern-svg.down .sx-pattern-price,#satosig-app-root .sx-pattern-svg.down .sx-pattern-arrow{stroke:#ef5b67}
#satosig-app-root .sx-pattern-svg.down .sx-pattern-confirm{fill:#ef5b67}
#satosig-app-root .sx-pattern-svg.neutral .sx-pattern-price,#satosig-app-root .sx-pattern-svg.neutral .sx-pattern-arrow{stroke:#56b8ff}
#satosig-app-root .sx-pattern-svg.neutral .sx-pattern-confirm{fill:#56b8ff}
#satosig-app-root .sx-pattern-card strong{
  display:block;
  min-height:28px;
  margin-top:7px;
  color:var(--sa-ink);
  font-size:.52rem;
  line-height:1.3;
}
#satosig-app-root .sx-pattern-note{
  margin:0;
  color:var(--sa-muted);
  font-size:.46rem;
  line-height:1.45;
}
@media(max-width:390px){
  #satosig-app-root .sx-pattern-browser{padding:8px}
  #satosig-app-root .sx-pattern-track{margin-inline:-8px;padding-inline:8px}
  #satosig-app-root .sx-pattern-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}
  #satosig-app-root .sx-pattern-tabs button{font-size:.43rem}
  #satosig-app-root .sx-pattern-card{flex-basis:128px}
}

/* v1.4.31–1.4.33: closed-candle detection, scored overlays, and multi-scale local/macro output. */
#satosig-app-root .sx-auto-pattern-toggle{
  min-width:0;
  padding:10px 11px;
  border:1px solid var(--sa-line);
  border-radius:9px;
  background:rgba(255,255,255,.045);
  color:#d5dde4;
  font:900 .56rem/1 var(--sa-font);
  letter-spacing:.02em;
  white-space:nowrap;
  cursor:pointer;
}
#satosig-app-root .sx-auto-pattern-toggle b{
  display:inline-grid;
  place-items:center;
  min-width:23px;
  height:18px;
  margin-left:4px;
  padding:0 5px;
  border-radius:999px;
  background:rgba(255,255,255,.07);
  color:var(--sa-muted);
  font-size:.43rem;
}
#satosig-app-root .sx-auto-pattern-toggle.active{
  border-color:rgba(181,140,255,.4);
  background:rgba(181,140,255,.13);
  color:#e5d8ff;
}
#satosig-app-root .sx-auto-pattern-toggle.active b{
  background:rgba(181,140,255,.2);
  color:#eee5ff;
}
#satosig-app-root .sx-auto-pattern-result{
  display:grid;
  gap:6px;
  min-width:0;
  padding:10px 11px;
  border:1px solid rgba(86,184,255,.25);
  border-radius:13px;
  background:linear-gradient(135deg,rgba(86,184,255,.09),rgba(255,255,255,.025));
}
#satosig-app-root .sx-auto-pattern-result.bullish{
  border-color:rgba(35,201,131,.34);
  background:linear-gradient(135deg,rgba(35,201,131,.1),rgba(255,255,255,.025));
}
#satosig-app-root .sx-auto-pattern-result.bearish{
  border-color:rgba(239,91,103,.34);
  background:linear-gradient(135deg,rgba(239,91,103,.1),rgba(255,255,255,.025));
}
#satosig-app-root .sx-auto-pattern-result.empty{border-style:dashed;background:rgba(255,255,255,.025)}
#satosig-app-root .sx-auto-pattern-result.multi-scale{
  gap:8px;
  border-color:rgba(86,184,255,.2);
  background:linear-gradient(135deg,rgba(86,184,255,.055),rgba(181,140,255,.035));
}
#satosig-app-root .sx-auto-pattern-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
}
#satosig-app-root .sx-auto-pattern-title>div{display:grid;gap:2px;min-width:0}
#satosig-app-root .sx-auto-pattern-title small{
  color:#8ea0ae;
  font-size:.39rem;
  font-weight:950;
  letter-spacing:.08em;
}
#satosig-app-root .sx-auto-pattern-title strong{color:#e7f0f6;font-size:.63rem}
#satosig-app-root .sx-auto-pattern-title>b{
  flex:0 0 auto;
  padding:5px 7px;
  border:1px solid rgba(86,184,255,.24);
  border-radius:999px;
  background:rgba(86,184,255,.09);
  color:#9ed8ff;
  font-size:.36rem;
}
#satosig-app-root .sx-auto-pattern-layers{display:grid;gap:7px}
#satosig-app-root .sx-auto-pattern-layer{
  display:grid;
  gap:6px;
  min-width:0;
  padding:9px;
  border:1px solid rgba(255,255,255,.085);
  border-radius:11px;
  background:rgba(5,10,15,.42);
}
#satosig-app-root .sx-auto-pattern-layer.local{border-left:3px solid rgba(86,184,255,.75)}
#satosig-app-root .sx-auto-pattern-layer.macro{border-left:3px solid rgba(181,140,255,.72)}
#satosig-app-root .sx-auto-pattern-layer.empty{border-style:dashed;opacity:.78}
#satosig-app-root .sx-auto-pattern-layer-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:8px;
}
#satosig-app-root .sx-auto-pattern-layer-head>div{display:grid;gap:2px;min-width:0}
#satosig-app-root .sx-auto-pattern-layer-head small{
  color:#8999a6;
  font-size:.36rem;
  font-weight:950;
  letter-spacing:.045em;
}
#satosig-app-root .sx-auto-pattern-layer-head strong{
  overflow:hidden;
  color:#e6edf2;
  font-size:.62rem;
  text-overflow:ellipsis;
  white-space:nowrap;
}
#satosig-app-root .sx-auto-pattern-layer.bullish .sx-auto-pattern-layer-head strong{color:#80e8b9}
#satosig-app-root .sx-auto-pattern-layer.bearish .sx-auto-pattern-layer-head strong{color:#ff9da6}
#satosig-app-root .sx-auto-pattern-layer>p{
  margin:0;
  color:#9cacb8;
  font-size:.41rem;
  line-height:1.45;
}
#satosig-app-root .sx-auto-pattern-layer.context>p{color:#b9afd5}
#satosig-app-root .sx-auto-pattern-layer.context .sx-auto-pattern-badges b:first-child{
  border-color:rgba(181,140,255,.32);
  background:rgba(181,140,255,.12);
  color:#d4bfff;
}
#satosig-app-root .sx-auto-pattern-evidence{
  display:flex;
  flex-wrap:wrap;
  gap:4px;
}
#satosig-app-root .sx-auto-pattern-evidence i{
  display:flex;
  align-items:center;
  gap:4px;
  padding:4px 6px;
  border-radius:7px;
  background:rgba(255,255,255,.05);
  color:#cbd5dc;
  font-size:.35rem;
  font-style:normal;
}
#satosig-app-root .sx-auto-pattern-evidence small{color:#7f909e;font-size:inherit}
#satosig-app-root .sx-auto-pattern-evidence b{font-size:inherit}
#satosig-app-root .sx-auto-pattern-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:9px;
  min-width:0;
}
#satosig-app-root .sx-auto-pattern-head>div{min-width:0}
#satosig-app-root .sx-auto-pattern-head small{
  display:block;
  color:var(--sa-muted);
  font-size:.4rem;
  font-weight:950;
  letter-spacing:.07em;
}
#satosig-app-root .sx-auto-pattern-head strong{
  display:block;
  margin-top:3px;
  color:#eaf2f8;
  font-size:.64rem;
  line-height:1.2;
}
#satosig-app-root .sx-auto-pattern-result.bullish .sx-auto-pattern-head strong{color:#80e8b9}
#satosig-app-root .sx-auto-pattern-result.bearish .sx-auto-pattern-head strong{color:#ff9da6}
#satosig-app-root .sx-auto-pattern-result>span{
  color:var(--sa-muted);
  font-size:.45rem;
  line-height:1.45;
}
#satosig-app-root .sx-auto-pattern-badges{display:flex;gap:4px;flex:0 0 auto}
#satosig-app-root .sx-auto-pattern-badges b,
#satosig-app-root .sx-auto-pattern-head>b,
#satosig-app-root .sx-auto-pattern-layer-head>b{
  padding:5px 7px;
  border:1px solid rgba(255,255,255,.1);
  border-radius:999px;
  background:rgba(255,255,255,.055);
  color:#dbe5ed;
  font-size:.39rem;
  white-space:nowrap;
}
#satosig-app-root .sx-auto-pattern-result.confirmed .sx-auto-pattern-badges b:first-child{
  border-color:rgba(35,201,131,.28);
  background:rgba(35,201,131,.12);
  color:#88ebbe;
}
#satosig-app-root .sx-auto-pattern-result.forming .sx-auto-pattern-badges b:first-child{
  border-color:rgba(244,166,42,.3);
  background:rgba(244,166,42,.12);
  color:#ffd998;
}
#satosig-app-root .sx-auto-pattern-result.failed .sx-auto-pattern-badges b:first-child{
  color:#ff9da6;
  border-color:rgba(239,91,103,.4);
  background:rgba(239,91,103,.12);
}
#satosig-app-root .sx-auto-pattern-layer.confirmed .sx-auto-pattern-badges b:first-child{
  border-color:rgba(35,201,131,.28);
  background:rgba(35,201,131,.12);
  color:#88ebbe;
}
#satosig-app-root .sx-auto-pattern-layer.forming .sx-auto-pattern-badges b:first-child{
  border-color:rgba(244,166,42,.3);
  background:rgba(244,166,42,.12);
  color:#ffd998;
}
#satosig-app-root .sx-auto-pattern-layer.failed .sx-auto-pattern-badges b:first-child{
  color:#ff9da6;
  border-color:rgba(239,91,103,.4);
  background:rgba(239,91,103,.12);
}
#satosig-app-root .sx-auto-pattern-alternatives{
  display:flex;
  align-items:center;
  gap:5px;
  min-width:0;
  overflow-x:auto;
  scrollbar-width:none;
}
#satosig-app-root .sx-auto-pattern-alternatives::-webkit-scrollbar{display:none}
#satosig-app-root .sx-auto-pattern-alternatives small{
  flex:0 0 auto;
  color:var(--sa-muted);
  font-size:.38rem;
  font-weight:900;
}
#satosig-app-root .sx-auto-pattern-alternatives i{
  flex:0 0 auto;
  padding:4px 6px;
  border-radius:999px;
  background:rgba(255,255,255,.055);
  color:#c8d2da;
  font-size:.38rem;
  font-style:normal;
  font-weight:850;
}
#satosig-app-root .sx-auto-pattern-overlay{
  color:#56b8ff;
  pointer-events:none;
}
#satosig-app-root .sx-auto-pattern-overlay.bullish{color:#42d99a}
#satosig-app-root .sx-auto-pattern-overlay.bearish{color:#ff7480}
#satosig-app-root .sx-auto-pattern-line{
  stroke:currentColor;
  stroke-width:1.8;
  vector-effect:non-scaling-stroke;
  opacity:.92;
}
#satosig-app-root .sx-auto-pattern-overlay.forming .sx-auto-pattern-line{stroke-dasharray:6 4;opacity:.75}
#satosig-app-root .sx-auto-pattern-overlay.failed .sx-auto-pattern-line{stroke-dasharray:3 3;opacity:.9}
#satosig-app-root .sx-auto-pattern-overlay.macro{opacity:.58}
#satosig-app-root .sx-auto-pattern-overlay.local{opacity:1}
#satosig-app-root .sx-auto-pattern-line.pole{stroke-width:2.3}
#satosig-app-root .sx-auto-pattern-line.approach{stroke-width:2.5;opacity:1}
#satosig-app-root .sx-auto-pattern-line.neckline{stroke-dasharray:7 4}
#satosig-app-root .sx-auto-pattern-point{
  fill:#080d13;
  stroke:currentColor;
  stroke-width:1.5;
  vector-effect:non-scaling-stroke;
}
#satosig-app-root .sx-auto-pattern-breakout circle{
  fill:currentColor;
  stroke:#080d13;
  stroke-width:1.6;
  vector-effect:non-scaling-stroke;
}
#satosig-app-root .sx-auto-pattern-breakout.buy{color:#42d99a}
#satosig-app-root .sx-auto-pattern-breakout.sell{color:#ff7480}
#satosig-app-root .sx-auto-pattern-breakout text{
  fill:currentColor;
  font:1000 8px/1 var(--sa-font);
  paint-order:stroke fill;
  stroke:#080d13;
  stroke-width:2px;
}
#satosig-app-root .sx-legend .auto-pattern{color:#56b8ff}
#satosig-app-root .sx-legend .auto-pattern.bullish{color:#42d99a}
#satosig-app-root .sx-legend .auto-pattern.bearish{color:#ff7480}
#satosig-app-root .sx-legend .auto-pattern::before{
  height:4px;
  border-top:1px solid currentColor;
  border-bottom:1px solid currentColor;
  background:transparent;
}
@media(max-width:620px){
  #satosig-app-root .sx-toolbar-actions{display:flex;width:100%}
  #satosig-app-root .sx-toolbar-actions .sx-indicator-toggle,
  #satosig-app-root .sx-toolbar-actions .sx-auto-pattern-toggle{
    flex:1 1 0;
    width:auto;
    min-width:0;
    padding-inline:6px;
    font-size:.47rem;
  }
}
@media(max-width:390px){
  #satosig-app-root .sx-auto-pattern-head{align-items:flex-start;flex-direction:column}
  #satosig-app-root .sx-auto-pattern-badges{width:100%}
  #satosig-app-root .sx-auto-pattern-badges b{flex:1;text-align:center}
}
/* ===== v1.4.44 CSV COIN CATALOG ===== */
#satosig-app-root .coin-settings-card{padding:14px}
#satosig-app-root .coin-sync-badge{
  flex:0 0 auto;
  padding:6px 8px;
  border:1px solid var(--sa-line);
  border-radius:999px;
  color:var(--sa-muted);
  background:rgba(255,255,255,.05);
  font-size:.58rem;
  font-weight:950;
  line-height:1;
}
#satosig-app-root .coin-sync-badge.synced{color:#a9f7cd;border-color:rgba(35,201,131,.32);background:rgba(35,201,131,.14)}
#satosig-app-root .coin-sync-badge.stale{color:#ffe0a3;border-color:rgba(244,166,42,.34);background:rgba(244,166,42,.13)}
#satosig-app-root .coin-sync-badge.error{color:#ffbac1;border-color:rgba(239,91,103,.32);background:rgba(239,91,103,.13)}
#satosig-app-root .coin-settings-copy{
  margin:10px 0 0;
  color:var(--sa-muted);
  font-size:.66rem;
  line-height:1.55;
}
#satosig-app-root .coin-source-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  margin-top:12px;
}
#satosig-app-root .coin-source-grid>div{
  min-width:0;
  padding:10px;
  border:1px solid var(--sa-line);
  border-radius:13px;
  background:rgba(255,255,255,.04);
}
#satosig-app-root .coin-source-grid small{display:block;color:var(--sa-muted);font-size:.52rem;font-weight:950;letter-spacing:.06em}
#satosig-app-root .coin-source-grid strong{display:block;margin-top:5px;font-size:.68rem;line-height:1.35;overflow-wrap:anywhere}
#satosig-app-root .coin-admin-actions{
  display:grid;
  gap:9px;
  margin-top:12px;
  padding:11px;
  border:1px solid rgba(var(--sa-main-rgb),.21);
  border-radius:15px;
  background:rgba(var(--sa-main-rgb),.07);
}
#satosig-app-root .coin-file-picker{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  align-items:center;
  gap:10px;
  min-height:44px;
  padding:7px;
  border:1px dashed rgba(255,255,255,.18);
  border-radius:12px;
  cursor:pointer;
}
#satosig-app-root .coin-file-picker>span{
  padding:8px 10px;
  border-radius:9px;
  color:#111;
  background:var(--sa-accent);
  font-size:.62rem;
  font-weight:950;
}
#satosig-app-root .coin-file-picker>strong{min-width:0;color:var(--sa-muted);font-size:.61rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#satosig-app-root .coin-action-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
#satosig-app-root .coin-action{
  min-height:42px;
  border:1px solid var(--sa-line);
  border-radius:11px;
  padding:8px;
  color:var(--sa-ink);
  font-size:.65rem;
  font-weight:950;
}
#satosig-app-root .coin-action.primary{border-color:rgba(var(--sa-main-rgb),.32);background:linear-gradient(135deg,var(--sa-main),color-mix(in srgb,var(--sa-main) 70%,#11643f));color:#06140e}
#satosig-app-root .coin-action.secondary{background:rgba(255,255,255,.07)}
#satosig-app-root .coin-action:disabled{cursor:not-allowed;opacity:.42;filter:saturate(.45)}
#satosig-app-root .coin-admin-note{color:var(--sa-muted);font-size:.57rem;line-height:1.45}
#satosig-app-root .coin-login-note,
#satosig-app-root .coin-action-status{
  margin:11px 0 0;
  padding:9px 10px;
  border:1px solid var(--sa-line);
  border-radius:12px;
  color:var(--sa-muted);
  background:rgba(255,255,255,.04);
  font-size:.62rem;
  line-height:1.45;
}
#satosig-app-root .coin-action-status.success{color:#b9f7d5;border-color:rgba(35,201,131,.27);background:rgba(35,201,131,.09)}
#satosig-app-root .coin-action-status.error{color:#ffc2c8;border-color:rgba(239,91,103,.28);background:rgba(239,91,103,.09)}
#satosig-app-root .coin-sr-scanner{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:10px;
  margin-top:13px;
  padding:11px;
  border:1px solid rgba(86,184,255,.25);
  border-radius:14px;
  background:rgba(86,184,255,.07);
}
#satosig-app-root .coin-sr-scanner>div{display:grid;gap:4px;min-width:0}
#satosig-app-root .coin-sr-scanner small{color:#85cfff;font-size:.52rem;font-weight:950;letter-spacing:.06em}
#satosig-app-root .coin-sr-scanner strong{font-size:.69rem;line-height:1.25}
#satosig-app-root .coin-sr-scanner span{color:var(--sa-muted);font-size:.55rem;line-height:1.4}
#satosig-app-root .coin-sr-scanner .coin-action{min-width:122px}
#satosig-app-root .coin-sr-scan-status{
  margin:8px 0 0;
  color:#a9f7cd;
  font-size:.57rem;
  line-height:1.4;
}
#satosig-app-root .coin-sr-scan-status.has-errors{color:#ffe0a3}
#satosig-app-root .coin-search{display:grid;gap:6px;margin-top:13px}
#satosig-app-root .coin-search>span{color:var(--sa-muted);font-size:.56rem;font-weight:950;letter-spacing:.06em}
#satosig-app-root .coin-search input{
  width:100%;
  min-height:42px;
  border:1px solid var(--sa-line);
  border-radius:11px;
  padding:8px 10px;
  color:var(--sa-ink);
  background:rgba(255,255,255,.055);
  font-size:.7rem;
}
#satosig-app-root .coin-search input::placeholder{color:var(--sa-muted)}
#satosig-app-root .coin-list{
  display:grid;
  gap:5px;
  max-height:430px;
  margin-top:9px;
  padding-right:3px;
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  -webkit-overflow-scrolling:touch;
}
#satosig-app-root .coin-list-head,
#satosig-app-root .coin-row{
  display:grid;
  grid-template-columns:34px minmax(76px,1fr) minmax(58px,.72fr) minmax(58px,.72fr);
  align-items:center;
  gap:8px;
}
#satosig-app-root .coin-list-head{
  position:sticky;
  top:0;
  z-index:2;
  padding:6px 9px;
  color:var(--sa-muted);
  background:var(--sa-bg,#17191d);
  font-size:.5rem;
  font-weight:950;
  letter-spacing:.06em;
  text-align:center;
}
#satosig-app-root .coin-list-head span:nth-child(2){text-align:left}
#satosig-app-root .coin-row{
  min-height:43px;
  padding:8px 9px;
  border:1px solid var(--sa-line);
  border-radius:11px;
  background:rgba(255,255,255,.035);
  cursor:pointer;
}
#satosig-app-root .coin-rank{color:var(--sa-muted);font-size:.56rem;font-weight:850}
#satosig-app-root .coin-symbol{
  display:grid;
  gap:3px;
  min-width:0;
  padding:0;
  border:0;
  color:var(--sa-ink);
  background:transparent;
  text-align:left;
  cursor:pointer;
}
#satosig-app-root .coin-symbol strong{font-size:.7rem;line-height:1.2;overflow-wrap:anywhere}
#satosig-app-root .coin-symbol small{color:var(--sa-main-soft);font-size:.5rem;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#satosig-app-root .coin-sr-cell{
  display:grid;
  gap:2px;
  min-width:0;
  min-height:36px;
  place-content:center;
  padding:4px 3px;
  border:1px solid var(--sa-line);
  border-radius:9px;
  color:var(--sa-muted);
  background:rgba(255,255,255,.035);
  text-align:center;
}
button.coin-sr-cell{cursor:pointer}
#satosig-app-root .coin-sr-cell strong{font-size:.63rem;line-height:1}
#satosig-app-root .coin-sr-cell small{font-size:.47rem;font-weight:850;line-height:1}
#satosig-app-root .coin-sr-cell.range-low{color:#ff9ea7;border-color:rgba(239,91,103,.30);background:rgba(239,91,103,.09)}
#satosig-app-root .coin-sr-cell.range-mid-low{color:#ffe0a3;border-color:rgba(244,166,42,.28);background:rgba(244,166,42,.08)}
#satosig-app-root .coin-sr-cell.range-mid-high{color:#75dcff;border-color:rgba(86,184,255,.28);background:rgba(86,184,255,.08)}
#satosig-app-root .coin-sr-cell.range-high{color:#8ff0bd;border-color:rgba(35,201,131,.32);background:rgba(35,201,131,.10)}
#satosig-app-root .coin-sr-cell.error{color:#ff9ea7;font-size:.52rem;font-weight:900}
#satosig-app-root .coin-sr-cell.waiting{font-size:.7rem}
#satosig-app-root .coin-list-message{
  padding:15px;
  border:1px dashed var(--sa-line);
  border-radius:12px;
  color:var(--sa-muted);
  font-size:.65rem;
  line-height:1.5;
  text-align:center;
}
#satosig-app-root .coin-list-message.error{color:#ffc2c8;border-color:rgba(239,91,103,.28)}
#satosig-app-root .coin-match-section{margin-top:13px}
#satosig-app-root .section-head-mini{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}
#satosig-app-root .section-head-mini>span:first-child{color:var(--sa-muted);font-size:.5rem;font-weight:950;letter-spacing:.08em}
#satosig-app-root .coin-match-list{display:grid;gap:6px;max-height:260px;overflow-y:auto;overscroll-behavior:contain;padding-right:3px;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch}
#satosig-app-root .coin-match-card{width:100%;padding:9px 10px;border:1px solid rgba(var(--sa-main-rgb),.32);border-radius:12px;background:linear-gradient(145deg,rgba(var(--sa-main-rgb),.14),rgba(255,255,255,.035));color:var(--sa-ink);text-align:left;cursor:pointer}
#satosig-app-root .coin-match-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
#satosig-app-root .coin-match-name{display:flex;align-items:center;gap:5px;min-width:0}
#satosig-app-root .coin-rank-badge{flex:none;padding:1px 5px;border:1px solid var(--sa-line);border-radius:999px;color:var(--sa-muted);font-size:.5rem;font-weight:900;letter-spacing:.02em}
#satosig-app-root .coin-match-head strong{font-size:.68rem}
#satosig-app-root .coin-match-badge{flex:0 0 auto;padding:3px 7px;border-radius:999px;background:rgba(var(--sa-main-rgb),.20);border:1px solid rgba(var(--sa-main-rgb),.36);color:var(--sa-main-soft);font-size:.46rem;font-weight:950;white-space:nowrap}
#satosig-app-root .coin-match-meta{margin:5px 0 0;color:var(--sa-muted);font-size:.47rem;line-height:1.55}
#satosig-app-root .coin-match-card-wrap{display:grid;gap:5px}
#satosig-app-root .coin-match-card-wrap .coin-match-card{cursor:pointer}
#satosig-app-root .demo-live-open-btn{width:100%;min-height:34px;padding:6px 8px;font-size:.5rem;font-weight:900;border-radius:10px}
@media(max-width:390px){
  #satosig-app-root .coin-source-grid{grid-template-columns:1fr}
  #satosig-app-root .coin-sr-scanner{grid-template-columns:1fr}
  #satosig-app-root .coin-sr-scanner .coin-action{width:100%}
  #satosig-app-root .coin-list-head,
  #satosig-app-root .coin-row{grid-template-columns:27px minmax(60px,1fr) minmax(52px,.72fr) minmax(52px,.72fr);gap:5px;padding-inline:6px}
  #satosig-app-root .coin-sr-cell strong{font-size:.57rem}
  #satosig-app-root .coin-sr-cell small{font-size:.43rem}
}

/* Chart candle count, independent of interval and panel height. */
#satosig-app-root .sx-options-panel .sx-candle-count{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;font-size:11px;color:#aab4be}
#satosig-app-root .sx-options-panel .sx-candle-count select{max-width:60%;min-height:32px;padding:5px 8px;border:1px solid rgba(255,255,255,.15);border-radius:8px;background:#161d25;color:#fffdf4;font:inherit}
#satosig-app-root .sx-options-panel .sx-candle-count select:focus-visible{outline:2px solid #23c983;outline-offset:2px}

/* Demo Trading, 1.4.57 */
#satosig-app-root .bottom-nav{grid-template-columns:repeat(4,minmax(0,1fr))}
#satosig-app-root .coin-brute-action{grid-column:2/-1;min-height:30px;padding:6px;font-size:.6rem}
#satosig-app-root .coin-brute-all{display:grid;gap:6px;padding:12px;border:1px solid var(--sa-line);border-radius:12px;background:rgba(var(--sa-main-rgb),.06)}
#satosig-app-root .coin-brute-all p{margin:0;font-size:.67rem;line-height:1.5}
#satosig-app-root .demo-screen{gap:10px}
#satosig-app-root .demo-screen [hidden]{display:none!important}
#satosig-app-root .demo-screen [data-demo-panel]{display:grid;gap:10px}
#satosig-app-root .demo-screen [data-demo-panel] .demo-section-title{margin:2px 0 -4px}
#satosig-app-root .demo-screen [data-demo-panel] .demo-area-list{margin-top:0}
#satosig-app-root .demo-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
#satosig-app-root #demoBacktestSummary{grid-template-columns:repeat(3,minmax(0,1fr))}
#satosig-app-root .demo-summary>div{display:grid;gap:3px;padding:9px 8px;border:1px solid var(--sa-line);border-radius:10px;background:rgba(255,255,255,.035);min-width:0}
#satosig-app-root .demo-summary small{font-size:.48rem;font-weight:850;color:var(--sa-muted)}
#satosig-app-root .demo-summary strong{font-size:.9rem;overflow-wrap:anywhere}
#satosig-app-root .demo-summary span{font-size:.53rem;color:var(--sa-muted)}
#satosig-app-root .demo-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;padding:4px;border:1px solid var(--sa-line);border-radius:11px}
#satosig-app-root .demo-tabs.live-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}
#satosig-app-root .demo-tabs button{border:0;background:transparent;color:var(--sa-muted);border-radius:8px;padding:10px 5px;font-weight:850;font-size:.68rem}
#satosig-app-root .demo-tabs button.active{background:rgba(var(--sa-main-rgb),.16);color:var(--sa-main-soft)}
#satosig-app-root .demo-tabs button[data-demo-tab="market-bullish"].active{background:rgba(var(--sa-main-rgb),.16);color:#8ff0bd}
#satosig-app-root .demo-tabs button[data-demo-tab="market-bearish"].active{background:rgba(239,91,103,.16);color:#ffadb5}
#satosig-app-root .demo-scan-card{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 11px}
#satosig-app-root .demo-scan-card strong{font-size:.72rem}
#satosig-app-root .demo-scan-card p{margin:3px 0 0;font-size:.58rem;line-height:1.4;color:var(--sa-muted)}
#satosig-app-root .demo-formula-card{padding:10px 11px}
#satosig-app-root .demo-formula-card strong{font-size:.72rem}
#satosig-app-root .demo-formula-card p{margin:3px 0 0;font-size:.58rem;line-height:1.5;color:var(--sa-muted)}
#satosig-app-root .demo-formula-card .demo-actions{margin-top:8px}
#satosig-app-root .demo-formula-hint{margin:6px 0 0;font-size:.54rem;line-height:1.5;color:var(--sa-muted)}
#satosig-app-root .demo-formula-inputs{display:flex;flex-direction:column;gap:8px;margin-top:10px}
#satosig-app-root .demo-formula-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}
#satosig-app-root .demo-formula-inputs .coin-search{margin-top:0}
@media(max-width:360px){#satosig-app-root .demo-formula-pair{gap:6px}}
#satosig-app-root .demo-actions{display:flex;flex-wrap:wrap;gap:6px}
#satosig-app-root .demo-actions button{flex:1;min-width:120px}
#satosig-app-root .demo-caption{font-size:.59rem;line-height:1.45;color:var(--sa-muted);margin:0}
#satosig-app-root .demo-caption.error{color:#ffc2c8}
#satosig-app-root .demo-area-formula{font-size:.62rem;line-height:1.6;color:var(--sa-muted);margin:0 0 6px;padding:7px 9px;border:1px solid var(--sa-line);border-radius:9px;background:rgba(255,255,255,.03)}
#satosig-app-root .demo-area-formula b{color:var(--sa-text,#e9edf3);font-weight:800}
#satosig-app-root .demo-disclaimer{text-align:center;opacity:.8}
#satosig-app-root .demo-filters{display:grid;grid-template-columns:1fr;gap:10px}
#satosig-app-root .demo-filters label{display:grid;gap:5px;min-width:0;font-size:.66rem;color:var(--sa-muted)}
#satosig-app-root .demo-filters input,#satosig-app-root .demo-filters select{width:100%;min-width:0;box-sizing:border-box;padding:8px 9px;border:1px solid var(--sa-line);border-radius:9px;background:#161d25;color:var(--sa-ink);font:inherit}
#satosig-app-root .demo-backtest-shell{display:grid;grid-template-columns:minmax(130px,.42fr) minmax(0,1.58fr);align-items:stretch;gap:7px;padding:9px;margin-top:0}
#satosig-app-root .demo-market-context{display:grid;align-content:center;gap:2px;padding:9px 10px;border:1px solid rgba(86,184,255,.25);border-radius:10px;background:linear-gradient(145deg,rgba(86,184,255,.10),rgba(255,255,255,.025))}
#satosig-app-root .demo-market-context small{font-size:.45rem;font-weight:900;letter-spacing:.05em;color:var(--sa-muted)}
#satosig-app-root .demo-market-context h3{margin:0;font-size:.78rem;color:#9edcff}
#satosig-app-root .demo-market-context.bullish{border-color:rgba(var(--sa-main-rgb),.32);background:linear-gradient(145deg,rgba(var(--sa-main-rgb),.12),rgba(255,255,255,.025))}
#satosig-app-root .demo-market-context.bullish h3{color:#8ff0bd}
#satosig-app-root .demo-market-context.bearish{border-color:rgba(239,91,103,.32);background:linear-gradient(145deg,rgba(239,91,103,.12),rgba(255,255,255,.025))}
#satosig-app-root .demo-market-context.bearish h3{color:#ffadb5}
#satosig-app-root .demo-backtest-sides{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
#satosig-app-root .demo-backtest-sides button{display:grid;align-content:center;gap:3px;min-width:0;padding:9px 10px;border:1px solid var(--sa-line);border-radius:10px;background:rgba(255,255,255,.035);color:var(--sa-ink);font:inherit;text-align:left;cursor:pointer}
#satosig-app-root .demo-backtest-sides button strong{font-size:.78rem}
#satosig-app-root .demo-backtest-sides button span{min-width:0;font-size:.52rem;line-height:1.35;color:var(--sa-muted);overflow-wrap:anywhere}
#satosig-app-root .demo-backtest-sides button b{font-weight:850;color:inherit}
#satosig-app-root .demo-backtest-sides button.long.active{border-color:rgba(var(--sa-main-rgb),.50);background:rgba(var(--sa-main-rgb),.14);box-shadow:inset 3px 0 0 var(--sa-main)}
#satosig-app-root .demo-backtest-sides button.long.active strong{color:#8ff0bd}
#satosig-app-root .demo-backtest-sides button.short.active{border-color:rgba(239,91,103,.50);background:rgba(239,91,103,.14);box-shadow:inset 3px 0 0 var(--sa-danger)}
#satosig-app-root .demo-backtest-sides button.short.active strong{color:#ffadb5}
#satosig-app-root .demo-screen .positive,#satosig-app-root .live-trade-detail .positive,#satosig-app-root #livePortfolioCard .positive{color:#65e5ad}
#satosig-app-root .demo-screen .negative,#satosig-app-root .live-trade-detail .negative,#satosig-app-root #livePortfolioCard .negative{color:#ff9da9}
#satosig-app-root .demo-trade-list,#satosig-app-root .demo-area-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
#satosig-app-root .demo-trade,#satosig-app-root .demo-area{min-width:0;padding:11px;border:1px solid var(--sa-line);border-radius:12px;background:rgba(255,255,255,.03)}
#satosig-app-root .demo-trade.needs-check{border-color:rgba(255,191,80,.4)}
#satosig-app-root .demo-trade-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 8px;font-size:.8rem}
#satosig-app-root .demo-side{display:inline-block;margin-left:4px;font-size:.57rem;padding:4px 6px;border-radius:6px;background:rgba(255,255,255,.05)}
#satosig-app-root .demo-side.long,#satosig-app-root .demo-trade .won{color:#65e5ad}
#satosig-app-root .demo-side.short,#satosig-app-root .demo-trade .lost{color:#ff9da9}
#satosig-app-root .demo-trade .breakeven{color:#ffcf85}
#satosig-app-root .demo-mode-badge{display:inline-block;margin:2px 0 4px;padding:3px 7px;border-radius:999px;font-size:.48rem;font-weight:950;letter-spacing:.04em}
#satosig-app-root .demo-mode-badge.trailing{color:#65e5ad;background:rgba(101,229,173,.14);border:1px solid rgba(101,229,173,.3)}
#satosig-app-root .demo-mode-badge.rescue{color:#ffcf85;background:rgba(255,207,133,.14);border:1px solid rgba(255,207,133,.3)}
#satosig-app-root .demo-screen [data-demo-panel] .demo-history-head .demo-section-title{margin:0}
#satosig-app-root .demo-history-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
#satosig-app-root .demo-history-head>span{font-size:.54rem;color:var(--sa-muted)}
#satosig-app-root .demo-history-row{display:grid;gap:7px;padding:9px 10px}
#satosig-app-root .demo-history-values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
#satosig-app-root .demo-history-values>div{display:grid;gap:2px;min-width:0}
#satosig-app-root .demo-history-values small{font-size:.46rem;color:var(--sa-muted)}
#satosig-app-root .demo-history-values b{font-size:.62rem;overflow-wrap:anywhere}
#satosig-app-root .demo-history-subdate{font-size:.42rem;color:var(--sa-muted);font-weight:400}
#satosig-app-root .demo-history-meta{margin:0;font-size:.52rem;color:var(--sa-muted)}
#satosig-app-root .demo-trade-collapsible{padding:0}
#satosig-app-root .demo-trade-summary{all:unset;box-sizing:border-box;display:grid;gap:4px;width:100%;padding:11px;cursor:pointer;border-radius:12px}
#satosig-app-root .demo-trade-summary:focus-visible{outline:2px solid var(--sa-main-soft);outline-offset:-2px}
#satosig-app-root .demo-trade-summary-meta{display:flex;justify-content:space-between;align-items:center;font-size:.5rem;color:var(--sa-muted)}
#satosig-app-root .demo-trade-caret{font-size:.6rem;color:var(--sa-muted);transition:transform .15s ease}
#satosig-app-root .demo-trade-details{display:grid;gap:7px;padding:0 11px 11px}
#satosig-app-root .demo-trade-collapsible.is-expanded .demo-trade-summary{padding-bottom:4px}
#satosig-app-root .demo-running-warning{display:block;margin-top:3px;color:#ffcf85}
#satosig-app-root .demo-history-pager{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:7px}
#satosig-app-root .demo-history-pager button{min-height:32px;padding:6px 9px;border:1px solid var(--sa-line);border-radius:9px;background:rgba(255,255,255,.05);color:var(--sa-ink);font:inherit;font-size:.57rem;font-weight:850;cursor:pointer}
#satosig-app-root .demo-history-pager button:last-child{justify-self:stretch}
#satosig-app-root .demo-history-pager button:disabled{opacity:.4;cursor:default}
#satosig-app-root .demo-history-pager>span{min-width:65px;text-align:center;font-size:.54rem;color:var(--sa-muted)}
#satosig-app-root .demo-section-title{font-size:.8rem;margin:12px 0 6px}
#satosig-app-root .demo-section-title:has(.demo-day-history-btn){display:flex;align-items:center;justify-content:space-between;gap:8px}
#satosig-app-root .demo-day-history-btn{width:auto;min-width:0;padding:4px 10px;font-size:.68rem;border-radius:999px}
#satosig-app-root .demo-area-list{margin-top:12px}
#satosig-app-root .demo-area h3{font-size:.75rem;margin:0 0 10px}
#satosig-app-root .demo-area table{width:100%;border-collapse:collapse;font-size:.62rem;font-variant-numeric:tabular-nums}
#satosig-app-root .demo-area th,#satosig-app-root .demo-area td{text-align:right;padding:7px 3px;border-bottom:1px solid var(--sa-line);white-space:nowrap}
#satosig-app-root .demo-area th:first-child,#satosig-app-root .demo-area td:first-child{text-align:left}
#satosig-app-root .demo-area th{color:var(--sa-muted);font-size:.58rem}
#satosig-app-root .demo-area p{font-size:.61rem;line-height:1.6;color:var(--sa-muted)}
#satosig-app-root .demo-area-breakdown-title{font-size:.6rem;color:var(--sa-muted);margin:10px 0 4px;font-weight:800}
#satosig-app-root .demo-area-breakdown{width:100%;border-collapse:collapse;font-size:.62rem;font-variant-numeric:tabular-nums}
#satosig-app-root .demo-area-breakdown th,#satosig-app-root .demo-area-breakdown td{text-align:right;padding:5px 3px;border-bottom:1px solid var(--sa-line);white-space:nowrap}
#satosig-app-root .demo-area-breakdown th:first-child,#satosig-app-root .demo-area-breakdown td:first-child{text-align:left;white-space:normal}
#satosig-app-root .demo-area-breakdown th{color:var(--sa-muted);font-size:.55rem}
#satosig-app-root .demo-empty,#satosig-app-root .demo-notice{grid-column:1/-1;padding:14px;border:1px dashed var(--sa-line);border-radius:11px;font-size:.68rem;line-height:1.5;color:var(--sa-muted)}
#satosig-app-root .demo-notice a{color:var(--sa-main-soft)}
/* Heatmap arah tunggal area 15M × 1H (10×10 = 100, 2 halaman @ 50).
   .demo-area-stats butuh display:block sendiri karena .demo-area-list di atas
   memaksa grid 2 kolom untuk anak langsungnya (toolbar/caption/grid/detail
   harus tumpuk vertikal, bukan berbagi 2 kolom). */
#satosig-app-root .demo-area-stats{display:block}
#satosig-app-root .demo-area-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
#satosig-app-root .demo-area-pager{display:flex;gap:6px;flex-wrap:wrap}
#satosig-app-root .demo-area-pager button{border:1px solid var(--sa-line);background:rgba(255,255,255,.05);color:var(--sa-muted);border-radius:999px;padding:6px 11px;font-size:.55rem;font-weight:900}
#satosig-app-root .demo-area-pager button.active{color:var(--sa-main-soft);border-color:rgba(var(--sa-main-rgb),.35);background:rgba(var(--sa-main-rgb),.14)}
#satosig-app-root .demo-area-legend{display:flex;align-items:center;gap:5px;font-size:.5rem;color:var(--sa-muted);flex-wrap:wrap}
#satosig-app-root .demo-area-legend span{display:inline-block;width:10px;height:10px;border-radius:3px;margin-left:8px}
#satosig-app-root .demo-area-legend span:first-child{margin-left:0}
#satosig-app-root .demo-area-legend span.lose{background:var(--sa-danger)}
#satosig-app-root .demo-area-legend span.flat{background:rgba(255,255,255,.14)}
#satosig-app-root .demo-area-legend span.win{background:var(--sa-main)}
#satosig-app-root .demo-heatgrid{display:grid;grid-template-columns:24px repeat(10,minmax(0,1fr));gap:3px;margin-top:10px}
#satosig-app-root .demo-heatgrid .coin-list-message{grid-column:1/-1}
#satosig-app-root .demo-heatgrid .axis-label{display:flex;align-items:center;justify-content:center;font-size:.44rem;font-weight:900;color:var(--sa-muted)}
#satosig-app-root .demo-heatgrid .col-label{padding-bottom:2px}
#satosig-app-root .demo-heat-cell{appearance:none;position:relative;min-height:34px;border-radius:7px;border:1px solid rgba(255,255,255,.10);background:rgba(255,255,255,.045);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;color:#fff;font-size:.42rem;line-height:1.1;padding:2px 1px}
#satosig-app-root .demo-heat-cell strong{font-size:.5rem}
#satosig-app-root .demo-heat-cell.empty{color:var(--sa-muted);cursor:default}
#satosig-app-root .demo-heat-cell.thin{border-style:dashed}
#satosig-app-root .demo-heat-cell.selected{outline:2px solid var(--sa-ink);outline-offset:1px;transform:scale(1.07);z-index:2;box-shadow:0 6px 16px rgba(0,0,0,.35)}
#satosig-app-root .demo-heat-cell.trap{border-color:rgba(var(--sa-danger-rgb,239,91,103),.65)}
#satosig-app-root .demo-heat-trap{position:absolute;top:-5px;left:-5px;min-width:13px;height:13px;padding:0 2px;border-radius:999px;background:var(--sa-danger);color:#fff;font-size:.5rem;font-weight:950;line-height:13px;text-align:center;font-style:normal;border:1px solid rgba(0,0,0,.3);box-shadow:0 2px 6px rgba(0,0,0,.35);z-index:1}
#satosig-app-root .demo-heat-trap-legend{display:inline-flex;align-items:center;justify-content:center;width:12px;height:12px;border-radius:999px;background:var(--sa-danger);color:#fff;font-size:.44rem;font-weight:950;font-style:normal;margin-left:8px;margin-right:5px}
#satosig-app-root .demo-heat-strength{position:absolute;bottom:-3px;right:-3px;width:9px;height:9px;border-radius:999px;border:1px solid rgba(0,0,0,.35);box-shadow:0 1px 4px rgba(0,0,0,.35);font-style:normal}
#satosig-app-root .demo-heat-strength.strong{background:var(--sa-main)}
#satosig-app-root .demo-heat-strength.weak{background:#e8b93a}
#satosig-app-root .demo-heat-strength-legend{display:inline-block;width:9px;height:9px;border-radius:999px;margin-left:8px;margin-right:5px;font-style:normal}
#satosig-app-root .demo-heat-strength-legend.strong{background:var(--sa-main)}
#satosig-app-root .demo-heat-strength-legend.weak{background:#e8b93a}
#satosig-app-root .demo-area-trap-warning{font-size:.62rem;line-height:1.55;color:var(--sa-danger);background:rgba(var(--sa-danger-rgb,239,91,103),.1);border:1px solid rgba(var(--sa-danger-rgb,239,91,103),.3);border-radius:9px;padding:8px 9px;margin:0 0 9px}
#satosig-app-root .demo-area-trap-warning b{color:var(--sa-danger)}
#satosig-app-root .demo-area-detail{margin-top:8px}
#satosig-app-root .demo-area-detail .demo-area{padding:10px}
#satosig-app-root .heatmap-live-card .demo-heatgrid{margin-top:8px}
#satosig-app-root .heatmap-live-card .heatmap-live-short-head{margin-top:14px}
#satosig-app-root .coin-settings-copy #heatmapLiveRegime{color:var(--sa-main)}
#satosig-app-root .heatmap-live-card.is-bearish .coin-settings-copy #heatmapLiveRegime{color:#ff7a86}
#satosig-app-root .demo-heat-cell.has-live{cursor:pointer;border-color:rgba(var(--sa-main-rgb),.55)}
#satosig-app-root .demo-heat-cell .live-dot{position:absolute;top:-5px;right:-5px;min-width:13px;height:13px;padding:0 3px;border-radius:999px;background:var(--sa-main);color:#04140c;font-size:.42rem;font-weight:950;line-height:13px;text-align:center;border:1px solid rgba(0,0,0,.25);box-shadow:0 2px 6px rgba(0,0,0,.35)}
#satosig-app-root .demo-area-legend b.live-dot-legend{display:inline-block;width:10px;height:10px;border-radius:999px;margin-left:8px;background:var(--sa-main);border:1px solid rgba(0,0,0,.25)}
@media(max-width:640px){
  #satosig-app-root .demo-heat-cell .live-dot{min-width:11px;height:11px;font-size:.38rem;line-height:11px}
  #satosig-app-root .demo-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  #satosig-app-root #demoBacktestSummary{grid-template-columns:repeat(3,minmax(0,1fr))}
  #satosig-app-root .demo-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}
  #satosig-app-root .demo-backtest-shell{grid-template-columns:minmax(0,1fr)}
  #satosig-app-root .demo-scan-card{display:grid}
  #satosig-app-root .demo-trade-list,#satosig-app-root .demo-area-list{grid-template-columns:minmax(0,1fr)}
  #satosig-app-root .demo-screen .screen-title h2{font-size:1rem}
  #satosig-app-root .demo-heatgrid{grid-template-columns:18px repeat(10,minmax(0,1fr));gap:2px}
  #satosig-app-root .demo-heat-cell{min-height:28px;font-size:.38rem}
  #satosig-app-root .demo-heat-cell strong{font-size:.44rem}
  #satosig-app-root .demo-tabs button{padding-inline:3px;font-size:.58rem}
}

/* v1.4.68: compact daily cells, two calendar months per view. */
#satosig-app-root .daily-period-strip{
  display:grid;grid-auto-flow:row;grid-auto-columns:auto;
  grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;
  overflow:visible;padding:0;scroll-snap-type:none;
}
#satosig-app-root .daily-period-strip .month-box{
  min-width:0;min-height:32px;padding:6px 7px;gap:0;border-radius:999px;
  background:rgba(255,255,255,.05);box-shadow:none;
}
#satosig-app-root .daily-period-strip .month-box b{
  font-size:.56rem;line-height:1.25;font-weight:800;color:var(--sa-muted);
}
#satosig-app-root .daily-period-strip .month-box.active{
  border-color:rgba(var(--sa-main-rgb),.35);
  background:rgba(var(--sa-main-rgb),.14);box-shadow:none;
}
#satosig-app-root .daily-period-strip .month-box.active b{color:var(--sa-main-soft)}
#satosig-app-root .daily-compact-card{min-height:0;padding:12px;border-radius:16px}
#satosig-app-root .daily-compact-card .section-head{align-items:flex-start}
#satosig-app-root .daily-compact-card .section-head>div{min-width:0}
#satosig-app-root .daily-compact-card .section-head h2{font-size:.82rem;line-height:1.3}
#satosig-app-root .daily-compact-card .section-head small{font-size:.49rem}
#satosig-app-root .daily-compact-card .soft-pill{flex-shrink:0;font-size:.51rem;padding:5px 7px}
#satosig-app-root .daily-compact-card .heat-summary{gap:5px;margin-top:7px}
#satosig-app-root .daily-compact-card .heat-summary span{font-size:.52rem;padding:4px 6px}
#satosig-app-root .daily-mini-grid{
  grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;margin-top:10px;
}
#satosig-app-root .daily-mini-grid .daily-mini-cell{
  appearance:none;min-width:0;min-height:48px;height:auto;padding:3px 2px;
  border:1px solid rgba(255,255,255,.12);border-radius:7px;gap:1px;
  box-shadow:none;line-height:1.1;font-variant-numeric:tabular-nums;
  cursor:pointer;touch-action:manipulation;
}
#satosig-app-root .daily-mini-grid .daily-mini-cell small{
  font-size:.49rem;line-height:1.1;white-space:nowrap;opacity:.87;
}
#satosig-app-root .daily-mini-grid .daily-mini-cell strong{
  font-size:.45rem;line-height:1.1;letter-spacing:-.02em;white-space:nowrap;font-weight:800;
}
#satosig-app-root .daily-mini-grid .daily-mini-cell em{
  font-style:normal;font-size:.42rem;line-height:1.1;white-space:nowrap;opacity:.82;font-weight:700;
}
#satosig-app-root .daily-mini-grid .daily-mini-cell.empty{
  background:rgba(255,255,255,.035);color:var(--sa-muted);
  border-color:rgba(255,255,255,.07);opacity:1;cursor:default;
}
#satosig-app-root .daily-mini-grid .daily-mini-cell.empty strong{opacity:.4}
#satosig-app-root .daily-mini-grid .daily-mini-cell.is-open{border-style:dashed}
#satosig-app-root .daily-mini-cell:not(:disabled):focus-visible,
#satosig-app-root .daily-period-strip .month-box:focus-visible{
  outline:2px solid var(--sa-ink);outline-offset:2px;z-index:1;
}
#satosig-app-root .daily-heat-hint{
  margin:9px 0 0;color:var(--sa-muted);font-size:.5rem;line-height:1.5;
}
#satosig-app-root .daily-heat-empty{
  grid-column:1/-1;margin:0;padding:12px;font-size:.68rem;color:var(--sa-muted);
}
@media(max-width:380px){
  #satosig-app-root .daily-mini-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
  #satosig-app-root .daily-period-strip .month-box{padding-inline:4px}
  #satosig-app-root .daily-period-strip .month-box b{font-size:.52rem}
}


/* Heatmap Engine: tombol update di menu Heatmap + stempel waktu */
.hm-update-bar{display:grid;gap:8px;margin:0 0 12px}
.hm-update-bar .coin-action{width:100%}
.hm-stamp{margin:2px 0 10px;font-size:12px;line-height:1.4;opacity:.78}
.hm-stamp b{font-weight:700;opacity:1}

.hm-progress{display:grid;gap:6px;padding:12px 14px;border:1px solid rgba(255,255,255,.08);border-radius:16px;background:rgba(255,255,255,.03)}
.hm-progress[hidden]{display:none}
.hm-progress-row{display:flex;justify-content:space-between;gap:10px;font-size:13px}
.hm-progress-row span{opacity:.8}
.hm-progress-bar{height:6px;border-radius:99px;background:rgba(255,255,255,.08);overflow:hidden}
.hm-progress-bar i{display:block;height:100%;width:0;border-radius:99px;background:#22c55e;transition:width .35s ease}
.hm-progress-current{font-size:12px;opacity:.7;min-height:1em}

/* Cegah konten melebar keluar layar HP (grid tanpa min-width:0 bisa "bocor" ke samping). */
#satosig-app-root .screen-stack{grid-template-columns:minmax(0,1fr)}
#satosig-app-root .screen-stack>*{min-width:0;max-width:100%}
#satosig-app-root .app-screen{overflow-x:hidden}
#satosig-app-root .hm-update-bar,#satosig-app-root .hm-progress{min-width:0;max-width:100%;box-sizing:border-box}
#satosig-app-root .hm-stamp,#satosig-app-root .coin-action-status{overflow-wrap:anywhere}
