/* ===== Fonts (self-hosted, SIL OFL 1.1 — see fonts/OFL-*.txt) ===== */
@font-face{font-family:"Press Start 2P";src:url(fonts/press-start-2p-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Tajawal";src:url(fonts/tajawal-arabic-400-normal.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0898-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC}
@font-face{font-family:"Tajawal";src:url(fonts/tajawal-arabic-500-normal.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0898-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC}
@font-face{font-family:"Tajawal";src:url(fonts/tajawal-arabic-700-normal.woff2) format("woff2");font-weight:700;font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0898-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC}
@font-face{font-family:"Tajawal";src:url(fonts/tajawal-latin-400-normal.woff2) format("woff2");font-weight:400 500;font-display:swap;unicode-range:U+0000-00FF,U+2000-206F,U+20AC,U+2122}
@font-face{font-family:"Tajawal";src:url(fonts/tajawal-latin-700-normal.woff2) format("woff2");font-weight:700;font-display:swap;unicode-range:U+0000-00FF,U+2000-206F,U+20AC,U+2122}

/* ===== Theme: dark neon pixel-art (single source; JS reads these for the charts) ===== */
:root{
  --bg:#0B0F14; --bg-2:#0E141B; --panel:#121821; --panel-2:#17202B;
  --line:#243142; --line-hi:#2F4157; --grid:rgba(61,123,255,.07);
  --text:#E6EDF3; --muted:#7D8A99;
  --up:#22E36B; --down:#FF4D4D; --neon:#22E36B;
  --bot-scout:#FFC83D; --bot-news:#FF5A5A; --bot-sentiment:#B65CFF; --bot-charts:#3D7BFF; --bot-risk:#3DDC84; --bot-decision:#FF8A1F;
  /* chart line mapping */
  --c-sma:var(--bot-scout); --c-ema:var(--bot-charts); --c-bb:var(--bot-sentiment); --c-volma:var(--bot-scout);
  --c-rsi:var(--bot-risk); --c-rsi-band:var(--bot-news); --c-macd:var(--bot-charts); --c-signal:var(--bot-decision);
  --font-ar:"Tajawal",system-ui,sans-serif; --font-pixel:"Press Start 2P",monospace;
  --px:2px; /* pixel border unit */
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;color:var(--text);font-family:var(--font-ar);
  background:
    linear-gradient(var(--grid) 1px,transparent 1px) 0 0/24px 24px,
    linear-gradient(90deg,var(--grid) 1px,transparent 1px) 0 0/24px 24px,
    radial-gradient(ellipse at 50% -10%,#13202e,var(--bg) 65%) fixed;
  background-color:var(--bg)}
.app{display:flex;flex-direction:column;height:100vh;padding:12px;gap:10px}

/* pixel panel: square corners, double-ish border, hard shadow */
.px{background:var(--panel);border:var(--px) solid var(--line);box-shadow:0 0 0 var(--px) #000,4px 4px 0 0 #000}

header{display:flex;flex-wrap:wrap;align-items:center;gap:12px;justify-content:space-between}
.brand{display:flex;flex-direction:column;gap:6px}
.brand .pixel{font-family:var(--font-pixel);font-size:1rem;color:var(--text);letter-spacing:1px;direction:ltr;text-align:right;
  text-shadow:2px 2px 0 #000}
.brand .pixel b{color:var(--up);font-weight:400;text-shadow:2px 2px 0 #000,0 0 10px rgba(34,227,107,.5)}
.brand .ar{font-size:.95rem;color:var(--muted);font-weight:500}
.controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
select,button{font:inherit;font-weight:500;color:var(--text);background:var(--panel);border:var(--px) solid var(--line);border-radius:0;padding:7px 12px;cursor:pointer;
  box-shadow:3px 3px 0 #000;transition:transform .05s}
select:focus,button:hover{border-color:var(--up);outline:none}
button:active{transform:translate(2px,2px);box-shadow:1px 1px 0 #000}
#timeframes{display:flex;gap:6px}
#timeframes button.active{background:rgba(34,227,107,.12);border-color:var(--up);color:var(--up);box-shadow:3px 3px 0 #000,0 0 10px rgba(34,227,107,.35)}

.notice{background:rgba(255,200,61,.07);border:var(--px) dashed var(--bot-scout);color:var(--bot-scout);padding:6px 12px;font-size:.9rem}
.indicators{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--panel);border:var(--px) solid var(--line);padding:4px 10px;font-size:.85rem;cursor:pointer;box-shadow:2px 2px 0 #000}
.chip::before{content:"";width:8px;height:8px;background:var(--c,var(--muted));box-shadow:0 0 6px var(--c,transparent)}
.chip:has(input:checked){border-color:var(--c,var(--up));color:var(--text)}
.chip:not(:has(input:checked)){opacity:.6}
.chip input{accent-color:var(--up);margin:0}

.quote{display:flex;gap:14px;align-items:baseline;flex-wrap:wrap}
#symTitle{font-weight:700}
#last{font-family:var(--font-pixel);font-size:1.05rem;direction:ltr;text-shadow:2px 2px 0 #000}
.up{color:var(--up)}.down{color:var(--down)}
#change{direction:ltr;unicode-bidi:isolate;font-family:var(--font-pixel);font-size:.7rem}
.badge{font-size:.8rem;padding:3px 10px;border:var(--px) solid var(--line);background:var(--panel)}
.badge::before{content:"■ "}
.badge.ok{color:var(--up);border-color:var(--up);box-shadow:0 0 8px rgba(34,227,107,.35)}
.badge.warn{color:var(--bot-scout);border-color:var(--bot-scout)}.badge.err{color:var(--down);border-color:var(--down)}
.badge.demo{color:var(--bot-sentiment);border-color:var(--bot-sentiment)}
#mode{color:var(--muted);font-size:.8rem}
.quote.stale #last,.quote.stale #change{opacity:.45}

.chart-wrap{position:relative;flex:1;min-height:300px;display:flex;flex-direction:column;background:var(--panel);
  border:var(--px) solid var(--line-hi);box-shadow:0 0 0 var(--px) #000,6px 6px 0 #000,inset 0 0 40px rgba(34,227,107,.04);overflow:hidden}
.pane{position:relative;direction:ltr;border-bottom:var(--px) solid var(--line)}
.pane:last-of-type{border-bottom:0}
.pane[hidden]{display:none}
.pane.main{flex:3;min-height:220px}.pane.sub{flex:1;min-height:90px}
.pc{position:absolute;inset:0}
/* pane title: top-LEFT of the (LTR) plot area, away from the right price axis labels */
.ptitle{position:absolute;top:4px;left:6px;z-index:3;font-family:var(--font-ar);font-size:.72rem;line-height:1.2;color:var(--muted);direction:rtl;
  background:rgba(11,15,20,.85);border:1px solid var(--line);padding:1px 6px;pointer-events:none}
.overlay{position:absolute;inset:0;display:flex;flex-direction:column;gap:10px;align-items:center;justify-content:center;background:rgba(11,15,20,.8);z-index:5;text-align:center;padding:20px}
.overlay[hidden]{display:none}.overlay.error{color:var(--down)}.overlay small{color:var(--muted);direction:ltr}
.spinner{width:24px;height:24px;background:var(--up);animation:blink .6s steps(2) infinite;box-shadow:0 0 12px var(--up)}
@keyframes blink{50%{opacity:.15}}

/* ===== Bot team strip (decorative, matches reference) ===== */
.bots{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
.bot{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--panel);border:var(--px) solid var(--line);box-shadow:2px 2px 0 #000;min-width:0}
.bot .n{font-family:var(--font-pixel);font-size:.5rem;color:var(--muted);direction:ltr;white-space:nowrap}
.bot .ar{font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bot .led{width:6px;height:6px;background:var(--up);margin-inline-start:auto;box-shadow:0 0 6px var(--up)}
.blob{flex:none;width:22px;height:18px;background:var(--c);position:relative;
  clip-path:polygon(25% 0,75% 0,75% 11%,88% 11%,88% 22%,100% 22%,100% 100%,0 100%,0 22%,12% 22%,12% 11%,25% 11%)}
.blob::before,.blob::after{content:"";position:absolute;top:7px;width:3px;height:5px;background:#0B0F14}
.blob::before{left:7px}.blob::after{right:7px}
.bot.scout{--c:var(--bot-scout)}.bot.news{--c:var(--bot-news)}.bot.sentiment{--c:var(--bot-sentiment)}
.bot.charts{--c:var(--bot-charts);border-color:var(--bot-charts)}.bot.risk{--c:var(--bot-risk)}.bot.decision{--c:var(--bot-decision)}

/* ===== Narrow screens ===== */
@media(max-width:640px){
  .app{height:auto;min-height:100vh;padding:8px}
  .brand .pixel{font-size:.78rem}
  .controls{width:100%}select{flex:1}
  #timeframes{width:100%}#timeframes button{flex:1;padding:7px 4px}
  .notice{font-size:.8rem;padding:5px 10px}
  /* chips: one scrollable row; inner padding + scroll-padding so nothing clips at the RTL edges */
  .indicators{flex-wrap:nowrap;overflow-x:auto;padding:2px 6px 6px;scroll-padding-inline:6px;scroll-snap-type:x proximity;scrollbar-width:none;
    -webkit-mask-image:linear-gradient(to left,#000 calc(100% - 22px),transparent);mask-image:linear-gradient(to left,#000 calc(100% - 22px),transparent)}
  .indicators::-webkit-scrollbar{display:none}
  .indicators::after{content:"";flex:0 0 18px}
  .chip{white-space:nowrap;font-size:.78rem;padding:3px 8px;scroll-snap-align:start;flex:none}
  .chart-wrap{flex:none;height:max(560px,78vh)}
  .pane.main{flex:3;min-height:230px}.pane.sub{flex:1;min-height:100px}
  .ptitle{font-size:.68rem}
  .bots{grid-template-columns:repeat(3,1fr)}
  .bot .n{display:none}
}

/* ===== Batch A: layers, drawing tools, extra indicators ===== */
:root{ --c-vwap:#00E5FF; --c-atr:var(--bot-decision); --c-stoch:var(--bot-sentiment); --c-stoch-d:var(--bot-scout);
  --c-draw:#E6EDF3; --c-hline:var(--bot-scout); --c-channel:var(--bot-charts); --c-fib:var(--bot-sentiment); --c-fib-key:var(--bot-decision); }
.bar-title{font-size:.8rem;color:var(--muted);white-space:nowrap;align-self:center}
.layers,.drawbar{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.layer{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;font-size:.85rem}
.layer .sq{width:10px;height:10px;border:2px solid var(--muted)}
.layer[aria-pressed="true"]{border-color:var(--up);color:var(--text)}
.layer[aria-pressed="true"] .sq{background:var(--up);border-color:var(--up);box-shadow:0 0 6px var(--up)}
.layer[aria-pressed="false"]{opacity:.65}
.layer .soon{font-size:.65rem;color:var(--bot-scout);border:1px solid var(--bot-scout);padding:0 4px}
/* «إعادة الضبط» (clean preset): end of the layers bar, muted until hover */
.layer.reset{margin-inline-start:auto;color:var(--muted);border-color:var(--line)}
.layer.reset:hover{color:var(--up);border-color:var(--up)}
.chip-group{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center}
.chip-group[hidden]{display:none}
.grp-label{font-size:.75rem;color:var(--muted)}
.drawbar[hidden]{display:none}
.drawbar .tools{display:inline-flex;gap:4px}
.drawbar button{padding:4px 9px;font-size:.82rem;display:inline-flex;gap:5px;align-items:center}
.drawbar button .ico{font-family:monospace;font-size:1rem;line-height:1}
.drawbar button.active{border-color:var(--bot-charts);color:var(--bot-charts);background:rgba(61,123,255,.12)}
.drawbar button.danger:not(:disabled):hover{border-color:var(--down);color:var(--down)}
.drawbar button:disabled{opacity:.4;cursor:default}
.soon-note{position:absolute;top:8px;left:50%;transform:translateX(-50%);z-index:4;font-size:.78rem;color:var(--bot-scout);background:rgba(11,15,20,.9);border:2px dashed var(--bot-scout);padding:3px 10px;pointer-events:none}
.soon-note[hidden]{display:none}
/* drawing overlay (inside the LTR price pane) */
.draw-layer{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none;overflow:hidden} /* never paint outside the price pane */
.draw-layer .hit{stroke:transparent;stroke-width:16;pointer-events:stroke;cursor:move;touch-action:none}
.draw-layer .stroke,.draw-layer .dlabel,.draw-layer .hit-fill{pointer-events:none}
.draw-layer .dlabel{font:600 11px var(--font-ar);paint-order:stroke;stroke:#0B0F14;stroke-width:3px}
.draw-layer .handle{fill:#0B0F14;stroke:var(--text);stroke-width:2;pointer-events:all;cursor:grab;touch-action:none}
.draw-layer .selected .stroke{filter:drop-shadow(0 0 4px currentColor)}
.draw-capture{position:absolute;inset:0;z-index:4;cursor:crosshair;touch-action:none;background:transparent}
.draw-capture[hidden]{display:none}
.pane.drawing-mode{outline:2px dashed var(--bot-charts);outline-offset:-2px}
@media(max-width:640px){
  .layers,.drawbar{flex-wrap:nowrap;overflow-x:auto;padding:2px 6px 6px;scrollbar-width:none;scroll-padding-inline:6px}
  .layers::-webkit-scrollbar,.drawbar::-webkit-scrollbar{display:none}
  .layer,.drawbar button{flex:none;white-space:nowrap}
  .drawbar button .lbl{display:none}            /* icons only on phones; title has the Arabic name */
  .drawbar button.danger .lbl,.drawbar button.danger{font-size:.75rem}
  .chip-group{flex-wrap:nowrap}
  .chart-wrap{height:max(640px,85vh)}
}
:root{--c-avwap:#FF6BD6}
.draw-layer .hitp{fill:none;stroke:transparent;stroke-width:16;pointer-events:stroke;cursor:move;touch-action:none}
.chip.na{opacity:.35;text-decoration:line-through}
.app{height:auto;min-height:100vh}
.pane.main{overflow:hidden}
#ptsDialog{background:var(--panel);color:var(--text);border:2px solid var(--line-hi);box-shadow:6px 6px 0 #000;padding:14px 16px;max-width:min(520px,94vw)}
#ptsDialog::backdrop{background:rgba(0,0,0,.6)}
#ptsDialog h3{margin:0 0 6px;font-size:1rem}#ptsDialog .hint{color:var(--muted);font-size:.78rem;margin:0 0 10px}
.pt-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}.pt-row .pn{min-width:90px;font-weight:700;font-size:.85rem}
.pt-row input{font:inherit;background:var(--bg);color:var(--text);border:2px solid var(--line);padding:4px 6px;width:150px}
.row-btns{display:flex;gap:8px;justify-content:flex-start}#ptsDialog .err{color:var(--down);font-size:.8rem}
@media(max-width:640px){.draw-layer .dlabel.fib{font-size:10px}}

/* ---------- Batch B ---------- */
:root{ --c-poc:var(--bot-decision); --c-va:var(--bot-sentiment); --c-obv:var(--bot-scout); --c-pattern:var(--bot-news); --c-doji:var(--muted); }
.vp-layer{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}
.pat-tip{position:absolute;z-index:6;pointer-events:none;max-width:240px;background:#0B0F14ee;border:var(--px) solid var(--line);color:var(--text);
  font:500 .78rem/1.35 var(--font-ar);padding:5px 8px;direction:rtl;white-space:normal}
.pat-tip b{display:block}.pat-tip .bull{color:var(--up)}.pat-tip .bear{color:var(--down)}.pat-tip .neutral{color:var(--muted)}
.vp-note{position:absolute;top:4px;right:90px;z-index:4;font:500 .72rem var(--font-ar);color:var(--muted);direction:rtl;pointer-events:none}
.data-banner{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:4px 0;padding:6px 10px;font:600 .82rem var(--font-ar);border:var(--px) solid}
.data-banner[hidden]{display:none}
.data-banner.yellow{color:#FFD23F;border-color:#FFD23F;background:#FFD23F14}
.data-banner.red{color:#FF4D4D;border-color:#FF4D4D;background:#FF4D4D14}
.data-banner button{font:inherit;color:inherit;background:transparent;border:var(--px) solid currentColor;padding:2px 10px;cursor:pointer}

/* ---------- Batch C: Smart Money ---------- */
:root{ --c-bos-bull:#22E36B; --c-bos-bear:#FF4D4D; --c-choch-bull:#3D7BFF; --c-choch-bear:#FFB020;
  --c-ob-bull:#00C2A8; --c-ob-bear:#FF5CA8; --c-fvg-bull:#7CF5FF; --c-fvg-bear:#C77DFF; --c-smc-old:#6B7686; }
.smc-layer{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}
.smc-params{display:inline-flex;gap:6px;align-items:center;font:500 .74rem var(--font-ar);color:var(--muted)}
.smc-params select,.smc-params input{font:inherit;background:var(--panel);color:var(--text);border:var(--px) solid var(--line);padding:1px 4px}
.smc-params input{width:52px}
.pat-tip .st{color:var(--muted);font-size:.72rem}

/* QA C-3: on phones the layer/item chip rows wrap instead of scrolling (nothing clipped at the edges) */
@media(max-width:640px){
  .layers,.indicators{flex-wrap:wrap;overflow-x:visible;padding:2px 6px 4px}
  .indicators::after{display:none}
  .chip-group{flex-wrap:wrap;max-width:100%}
  .chip{white-space:nowrap;flex:none}
  .smc-params{flex-wrap:wrap}
}

/* ===== Auth: login screen + logout ===== */
html.auth-pending body{visibility:hidden}
.login-page{display:flex;min-height:100vh}
.login-wrap{margin:auto;padding:16px;width:100%;max-width:400px}
.login-card{display:flex;flex-direction:column;gap:10px;padding:24px}
.login-card .brand{align-items:center;margin-bottom:6px}
.login-card .brand .pixel{text-align:center}
.login-card h1{margin:4px 0 6px;font-size:1.25rem;font-weight:700;color:var(--neon);text-shadow:0 0 10px rgba(34,227,107,.4)}
.login-card label{font-size:.9rem;color:var(--muted)}
.login-card input{font:inherit;color:var(--text);background:var(--bg-2);border:var(--px) solid var(--line);border-radius:0;padding:9px 12px;outline:none}
.login-card input:focus{border-color:var(--neon);box-shadow:0 0 0 var(--px) rgba(34,227,107,.25)}
.login-remember{display:flex;align-items:center;gap:8px}
.login-card .login-remember input[type="checkbox"]{width:18px;height:18px;margin:0;padding:0;flex:none;cursor:pointer;accent-color:var(--neon);box-shadow:none}
.login-card .login-remember input[type="checkbox"]:focus-visible{outline:var(--px) solid var(--neon);outline-offset:2px}
.login-card .login-remember label{cursor:pointer;color:var(--text)}
.login-btn{margin-top:8px;border-color:var(--neon);color:var(--neon);box-shadow:3px 3px 0 #000,0 0 12px rgba(34,227,107,.25)}
.login-btn:disabled{opacity:.6;cursor:wait}
.login-err{color:var(--down);border:var(--px) solid var(--down);background:rgba(255,77,77,.08);padding:7px 10px;font-size:.9rem}
.login-hint{margin:6px 0 0;font-size:.78rem;color:var(--muted);text-align:center}
.session{display:flex;gap:8px;align-items:center}
.session #whoami{font-size:.85rem;color:var(--muted);direction:ltr}
#logoutBtn{border-color:var(--down);color:var(--down)}

/* SMC events (§11): marker colours + alert toasts (smc-events.js) */
:root{ --c-mm:#FFB020; --c-abs:#B388FF; }
.smc-alerts{position:absolute;top:8px;inset-inline-start:8px;z-index:7;display:flex;flex-direction:column;gap:6px;max-width:min(320px,80%);pointer-events:none}
.smc-alert{background:#0B0F14ee;border:var(--px) solid var(--c-mm);box-shadow:2px 2px 0 #000;padding:6px 10px;font-size:.8rem;color:var(--text)}
.smc-alert b{display:block;color:var(--c-mm)}.smc-alert span{color:var(--muted);font-size:.75rem}
/* ===== Tuwaiq shell (nav, home, module pages) ===== */
.tw-nav{display:flex;align-items:center;gap:12px;padding:8px 12px;background:rgba(11,15,20,.92);border-bottom:var(--px) solid var(--line);box-shadow:0 2px 0 #000;position:relative;z-index:5}
.tw-brand{display:flex;flex-direction:column;align-items:flex-start;text-decoration:none;color:var(--text);flex:none}
.tw-brand .pixel{font-family:var(--font-pixel);font-size:.8rem;color:var(--up);text-shadow:2px 2px 0 #000,0 0 10px rgba(34,227,107,.5);direction:ltr}
.tw-brand .ar{font-size:.75rem;color:var(--muted)}
.tw-links{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;flex:1;min-width:0}
.tw-links::-webkit-scrollbar{display:none}
.tw-links a{flex:none;display:inline-flex;align-items:center;gap:6px;padding:5px 12px;color:var(--muted);text-decoration:none;border:var(--px) solid transparent;font-size:.9rem;white-space:nowrap}
.tw-links a:hover{color:var(--text);border-color:var(--line)}
.tw-links a[aria-current=page]{color:var(--text);border-color:var(--up);box-shadow:0 0 8px rgba(34,227,107,.45),2px 2px 0 #000;background:var(--panel)}
.tw-links .i{font-size:.95rem}
.tw-user{display:flex;align-items:center;gap:8px;flex:none}
.tw-who{font-size:.8rem;color:var(--muted)}
.tw-logout{padding:4px 10px;color:var(--down)}
.tw-page{height:auto;min-height:100%}
.tw-main{max-width:1240px;margin:0 auto;padding:16px 12px 32px;display:flex;flex-direction:column;gap:14px}
.tw-hero h1{margin:0 0 4px;font-size:1.6rem;text-shadow:0 0 12px rgba(61,123,255,.5)}
.tw-hero p{margin:0;color:var(--muted)}
.tw-decision-card{padding:12px 14px}.tw-decision-card h2{margin:0 0 8px;font-size:1.05rem;color:var(--bot-decision)}
.tw-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.tw-card{display:flex;flex-direction:column;gap:6px;padding:12px 14px;color:var(--text);text-decoration:none;border-color:var(--c,var(--line));transition:box-shadow .15s}
.tw-card:hover{box-shadow:0 0 0 var(--px) #000,4px 4px 0 0 #000,0 0 14px var(--c)}
.tw-card-head{display:flex;align-items:center;gap:8px}.tw-card-head h2,.tw-card-head h1{margin:0;font-size:1.15rem;color:var(--c,var(--text))}
.tw-card-head .i{font-size:1.3rem}
.tw-desc{margin:0;color:var(--text);font-size:.88rem}.tw-agents{margin:0;color:var(--muted);font-size:.78rem}
.tw-body{margin-top:6px}
.tw-empty{display:flex;flex-direction:column;gap:4px;padding:10px;border:var(--px) dashed var(--line);color:var(--muted);font-size:.82rem}
.tw-empty b{color:var(--text);font-weight:600}
.tw-loading{color:var(--muted);font-size:.8rem}
.tw-sum-head{display:flex;justify-content:space-between;align-items:center;font-size:.75rem;color:var(--muted)}
.badge.st-ok{color:var(--up);border-color:var(--up)}.badge.st-warn{color:var(--bot-scout);border-color:var(--bot-scout)}.badge.st-error{color:var(--down);border-color:var(--down)}
.tw-headline{margin:6px 0;font-size:.9rem}
.tw-metrics{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:4px 10px;font-size:.8rem}
.tw-metrics li{display:flex;justify-content:space-between;gap:6px}.tw-metrics span{color:var(--muted)}
.tr.up{color:var(--up)}.tr.down{color:var(--down)}
.tw-decision{margin-top:6px;font-size:.85rem}.tw-decision.a-buy b{color:var(--up)}.tw-decision.a-sell b{color:var(--down)}
.tw-module{padding:16px}.tw-module h2{font-size:1rem;margin:16px 0 4px}
.tw-soon,.tw-sub{color:var(--muted);font-size:.8rem}
.tw-btn{display:inline-block;margin-top:10px;padding:6px 14px;border:var(--px) solid var(--up);color:var(--text);text-decoration:none}
@media(max-width:767px){
  .tw-nav{gap:8px;padding:6px 8px}.tw-brand .ar{display:none}.tw-who{display:none}
  .tw-links a{padding:4px 9px;font-size:.82rem}
  .tw-hero h1{font-size:1.3rem}.tw-cards{grid-template-columns:1fr}
}
.tw-markets{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:.8rem}
.tw-markets .badge.ok{color:var(--up);border-color:var(--up)}.tw-markets .badge.off{color:var(--muted);opacity:.7;text-decoration:line-through}
/* Tuwaiq summary states (backend envelope status) */
.badge.st-ok{color:var(--up);border-color:var(--up)}
.badge.st-partial{color:#ffc53d;border-color:#ffc53d}
.badge.st-ni{color:var(--muted);border-color:var(--muted);border-style:dashed}
.badge.st-disabled{color:#7d8590;border-color:#4b535d;text-decoration:line-through}
.badge.st-error{color:var(--down);border-color:var(--down)}
.tw-card-not_implemented{border-style:dashed;opacity:.85}
.tw-card-disabled{filter:grayscale(1);opacity:.55}
.tw-card-error{box-shadow:0 0 0 2px var(--down) inset}
.tw-card-partial .tw-card-head h2::after{content:" ◐";color:#ffc53d;font-size:.8em}
.tw-err{color:var(--down);font-size:.85rem}
.tw-items{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:4px}.tw-items li{display:flex;gap:8px;justify-content:space-between}
.tw-items .tr.up{color:var(--up)}.tw-items .tr.down{color:var(--down)}.tw-items-n{color:var(--muted);font-size:.8rem;margin:6px 0 0}
.tw-pending{margin-top:6px;font-size:.78rem;color:var(--muted)}.tw-pending ul{margin:4px 0 0;padding-inline-start:18px}
.tw-nav .tw-child{font-size:.85em;opacity:.9}.tw-nav .tw-child::before{content:"↳";margin-inline-end:2px;color:var(--muted)}
.tw-nav .tw-off{opacity:.45;filter:grayscale(1)}
.tw-counts{display:inline-flex;gap:6px;margin-inline-start:auto;flex-wrap:wrap}
.tw-crumb{font-size:.85rem;color:var(--muted);margin:0 0 6px}.tw-crumb a{color:var(--muted)}
.tw-decision.v-approve b{color:var(--up)}.tw-decision.v-reject b{color:var(--down)}
.tw-nav-err{color:var(--down);font-size:.8rem;align-self:center}
.tw-card-degraded{box-shadow:0 0 0 2px #ffc53d inset}.tw-stale{color:#ffc53d;font-size:.75em;margin-inline:6px}
/* ===== Tuwaiq pages (fe/tuwaiq-pages): nav touch targets + scroll affordance, module page views ===== */
.tw-links-wrap{position:relative;flex:1;min-width:0;display:flex}
.tw-links{flex:1;padding-bottom:2px}
.tw-links a{min-height:44px;min-width:44px;box-sizing:border-box}
.tw-logout{min-height:44px;min-width:44px}
.tw-brand{min-height:44px;justify-content:center}
.tw-more{display:none;position:absolute;top:0;bottom:4px;width:28px;align-items:center;justify-content:center;pointer-events:none;color:var(--up);font-size:1.2rem;z-index:1}
.tw-more-start{right:0;background:linear-gradient(to left,rgba(11,15,20,.98) 30%,rgba(11,15,20,0))}
.tw-more-end{left:0;background:linear-gradient(to right,rgba(11,15,20,.98) 30%,rgba(11,15,20,0))}
.tw-links-wrap.more-start .tw-more-start,.tw-links-wrap.more-end .tw-more-end{display:flex}
@media(max-width:767px){
  .tw-nav{flex-wrap:wrap;row-gap:4px}
  .tw-links-wrap{order:3;flex:1 1 100%}
  .tw-brand{order:1;margin-inline-end:auto}.tw-user{order:2}
  .tw-links{scrollbar-width:thin;scrollbar-color:var(--up) transparent}
  .tw-links::-webkit-scrollbar{display:block;height:3px}.tw-links::-webkit-scrollbar-thumb{background:var(--up)}
  .tw-links a{padding:4px 12px;font-size:.85rem}
}
.tw-warn{margin:4px 0;padding:6px 8px;border:var(--px) solid #ffc53d;color:#ffc53d;font-size:.82rem}
.tw-mut{color:var(--muted);font-size:.8em}
.tw-ib{display:inline-flex;gap:4px;flex-wrap:wrap;align-items:center}
.tw-ib .badge{font-size:.7rem;padding:1px 6px}
.badge.src-okx{color:var(--up);border-color:var(--up)}.badge.src-other{color:#ffc53d;border-color:#ffc53d}
.tw-items li{flex-wrap:wrap}
.tw-table-wrap{overflow-x:auto;max-width:100%}
.tw-table{width:100%;border-collapse:collapse;font-size:.85rem}
.tw-table th,.tw-table td{text-align:start;padding:8px 6px;border-bottom:1px solid var(--line);white-space:nowrap}
.tw-table th{color:var(--muted);font-weight:600;font-size:.78rem}
.tw-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.tw-list li{padding:8px;border:1px solid var(--line)}.tw-list p{margin:4px 0;font-size:.85rem}
.tw-module h3{font-size:.92rem;margin:10px 0 6px}
.tw-kids{display:flex;flex-wrap:wrap;gap:8px}.tw-kids .tw-btn{min-height:44px;display:inline-flex;align-items:center;margin-top:4px}
.tw-module .tw-metrics{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
@media(max-width:767px){.tw-module{padding:12px}.tw-table th,.tw-table td{padding:8px 4px}}
@media(max-width:767px){
  /* tables become stacked rows on phones (no hidden columns, no sideways scrolling) */
  .tw-table thead{display:none}
  .tw-table,.tw-table tbody,.tw-table tr,.tw-table td{display:block;width:auto}
  .tw-table tr{padding:8px 0;border-bottom:1px solid var(--line)}
  .tw-table td{border:0;padding:2px 0;white-space:normal}
  .tw-table td[data-l]::before{content:attr(data-l) ": ";color:var(--muted);font-size:.78rem}
  .tw-more{width:34px;font-size:1.4rem}
}
/* chart page inside the shell: the Tuwaiq nav carries the brand */
.tw-nav ~ .app > header > .brand{display:none}
.badge.st-degraded{color:#ffc53d;border-color:#ffc53d;border-style:double}
.tw-links [data-href-blocked]{flex:none;display:inline-flex;align-items:center;gap:6px;padding:5px 12px;color:var(--muted);font-size:.9rem;white-space:nowrap}
/* SMC signals (§11, smc-signals.js): buy-signal summary + rejection reasons, labelled «غير معتمد». Theme variables only. */
.smc-sig-panel{position:absolute;top:8px;inset-inline-end:8px;z-index:6;max-width:min(300px,70%);background:var(--panel);border:var(--px) solid var(--line);
  box-shadow:2px 2px 0 var(--bg);padding:3px 8px;font:500 .74rem var(--font-ar);color:var(--muted);direction:rtl}
.smc-sig-panel[hidden]{display:none}
.smc-sig-panel summary{cursor:pointer;display:flex;gap:6px;align-items:baseline;flex-wrap:wrap;color:var(--text)}
.smc-sig-panel summary b{color:var(--up);font-weight:700}
.smc-sig-panel .ua{color:var(--c-mm);font-weight:700}
.smc-sig-panel .st{margin:4px 0;color:var(--muted)}
.smc-sig-panel ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.smc-sig-panel li{display:flex;gap:6px;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--line)}
.smc-sig-panel li code{direction:ltr;unicode-bidi:isolate;color:var(--muted);font-size:.68rem;word-break:break-all}
.smc-sig-panel li .c{color:var(--text);direction:ltr;unicode-bidi:isolate;font-weight:700}
@media(max-width:640px){.smc-sig-panel{max-width:62%}}
