/* ==========================================================================
   MACRO/TERMINAL platform skin for Alien Algo.
   All rules are scoped under #aaMacroTerminal so they can never leak into the
   underlying Alien Algo app. Keyframes are mt_ prefixed to avoid clashing with
   the app's own animations. Generated from the uploaded macroterminal.html;
   the ONLY hand-authored part is the "Alien Algo chart bridge" block at the end.
   ========================================================================== */

  #aaMacroTerminal{
    /* DEFAULT (dark) — v1379 WARM DARK CHARCOAL (not blue/grey-black): soft warm off-white text on
       warm charcoal surfaces. The AlienAlgo GREEN accent and the functional
       green/red bull/bear are KEPT. This base is the fallback when no data-theme is set, so it must match the
       data-theme="dark" block below. */
    --bg:#262624;
    --bg-2:#1f1e1d;
    --panel:#30302e;
    --panel-2:#3a3a37;
    --border:#3d3d3a;
    --border-soft:#333330;
    --text:#f5f4ef;
    --text-dim:#c2c0b6;
    --text-faint:#8f8d84;
    --accent:#00f0a3;
    --accent-dim:rgba(0,240,163,.14);
    --bull:#24f29d;
    --bull-dim:rgba(36,242,157,.13);
    --bear:#ff5b64;
    --bear-dim:rgba(255,91,100,.13);
    --neutral:#E8B84B;
    --neutral-dim:rgba(232,184,75,.13);
    --font-display:'Space Grotesk',system-ui,-apple-system,sans-serif;
    --font-mono:'JetBrains Mono',ui-monospace,'SFMono-Regular',monospace;
    --radius:10px;
    --border-strong:#4a4a46;
    --chrome-bg:rgba(38,38,36,.92);
    --float-bg:rgba(48,48,46,.96);
    --shadow:rgba(0,0,0,.5);
    --glow-1:transparent;
    --glow-2:transparent;
  }

  /* Light theme — v1208 PURE-WHITE (TradingView desktop look): the whole platform base is #ffffff and the
     only greys left are the thin borders (the "tiny edges"). Applies BOTH when the OS is light AND when the
     app's own toggle forces data-theme="light" (the previous version only followed the OS scheme, which is why
     an explicit light toggle — and the mobile skin — stayed the old off-white grey). */
  @media (prefers-color-scheme: light){ #aaMacroTerminal{
      --bg:#FFFFFF; --bg-2:#FFFFFF; --panel:#FFFFFF; --panel-2:#FFFFFF;
      --border:#E0E3EB; --border-soft:#EEF0F4; --border-strong:#D1D4DC;
      --text:#131722; --text-dim:#51607A; --text-faint:#8A94A6;
      --accent:#0e9f6e; --accent-dim:rgba(14,159,110,.12);
      --bull:#089981; --bull-dim:rgba(8,153,129,.12);
      --bear:#F23645; --bear-dim:rgba(242,54,69,.12);
      --neutral:#B5820A; --neutral-dim:rgba(181,130,10,.14);
      --chrome-bg:rgba(255,255,255,.94); --float-bg:rgba(255,255,255,.97);
      --shadow:rgba(60,72,96,.12); --glow-1:transparent; --glow-2:transparent;
  }}
  html[data-theme="light"] #aaMacroTerminal{
      --bg:#FFFFFF; --bg-2:#FFFFFF; --panel:#FFFFFF; --panel-2:#FFFFFF;
      --border:#E0E3EB; --border-soft:#EEF0F4; --border-strong:#D1D4DC;
      --text:#131722; --text-dim:#51607A; --text-faint:#8A94A6;
      --accent:#0e9f6e; --accent-dim:rgba(14,159,110,.12);
      --bull:#089981; --bull-dim:rgba(8,153,129,.12);
      --bear:#F23645; --bear-dim:rgba(242,54,69,.12);
      --neutral:#B5820A; --neutral-dim:rgba(181,130,10,.14);
      --chrome-bg:rgba(255,255,255,.94); --float-bg:rgba(255,255,255,.97);
      --shadow:rgba(60,72,96,.12); --glow-1:transparent; --glow-2:transparent;
  }
  /* An explicit dark toggle must beat the light media query above (OS light + user-forced dark). */
  html[data-theme="dark"] #aaMacroTerminal{
      /* v1379 — warm dark charcoal (keep accent/bull/bear from the default block). */
      --bg:#262624; --bg-2:#1f1e1d; --panel:#30302e; --panel-2:#3a3a37;
      --border:#3d3d3a; --border-soft:#333330; --border-strong:#4a4a46;
      --text:#f5f4ef; --text-dim:#c2c0b6; --text-faint:#8f8d84;
      --chrome-bg:rgba(38,38,36,.92); --float-bg:rgba(48,48,46,.96);
      --shadow:rgba(0,0,0,.5); --glow-1:transparent; --glow-2:transparent;
  }
  #aaMacroTerminal, #aaMacroTerminal *{box-sizing:border-box;}
  #aaMacroTerminal, #aaMacroTerminal{margin:0;padding:0;height:100%;}
  #aaMacroTerminal{
    background:
      radial-gradient(circle at 15% 0%, var(--glow-1), transparent 45%),
      radial-gradient(circle at 85% 8%, var(--glow-2), transparent 40%),
      var(--bg);
    color:var(--text);
    font-family:var(--font-display);
    /* Base platform text bumped from the app's 12px root to 16px for a larger, cleaner read.
       Scoped to the terminal so the AlienAlgo chart engine's rem-based geometry (12px root) is
       untouched; only inherited/em text inside the terminal scales up. */
    font-size:16px;
    -webkit-font-smoothing:antialiased;
    height:100vh; height:100dvh;
    display:flex; flex-direction:row;
    overflow:hidden;
  }
  #aaMacroTerminal a{color:var(--accent);}
  #aaMacroTerminal ::selection{background:var(--accent-dim);color:var(--text);}

  /* ---------- Topbar ---------- */
  #aaMacroTerminal .topbar{
    display:flex; align-items:center; flex-wrap:wrap; gap:14px 22px;
    padding:16px 24px;
    background:var(--chrome-bg);
    backdrop-filter:blur(10px);
    border-bottom:1px solid var(--border-soft);
    animation:mt_fadeDown .5s ease both;
  }
  /* Left navigation rail — icon-only by default, expands to icons + labels on hover */
  #aaMacroTerminal .nav-rail{
    flex:0 0 auto; position:relative; z-index:40; width:56px;
    display:flex; flex-direction:column; gap:6px; padding:14px 8px;
    background:var(--bg-2); border-right:1px solid var(--border);
    overflow:hidden; transition:width .2s cubic-bezier(.4,0,.2,1);
  }
  #aaMacroTerminal .nav-rail:hover{width:194px;} /* pushes the stage; chart/watchlist resize with it */
  #aaMacroTerminal .rail-brand{font-family:var(--font-mono); font-weight:700; font-size:1rem; letter-spacing:.02em; padding:2px 6px 12px; white-space:nowrap;}
  #aaMacroTerminal .rail-brand .slash{color:var(--accent);}
  #aaMacroTerminal .rail-btn{
    display:flex; align-items:center; gap:12px; white-space:nowrap; overflow:hidden;
    font-family:var(--font-mono); font-size:.76rem; font-weight:600; text-align:left; letter-spacing:.01em;
    min-height:34px; padding:6px 8px; border-radius:7px; border:1px solid transparent; cursor:pointer;
    background:transparent; color:var(--text-dim); transition:background .15s ease, color .15s ease;
  }
  #aaMacroTerminal .rail-btn:hover{color:var(--text); background:var(--panel-2);}
  #aaMacroTerminal .rail-btn.active{background:var(--accent); color:#1f1e1d;}
  #aaMacroTerminal .rail-ico{flex:0 0 auto; width:22px; height:22px; display:flex; align-items:center; justify-content:center;}
  #aaMacroTerminal .rail-ico svg{width:18px; height:18px;}
  #aaMacroTerminal .rail-label{opacity:0; transition:opacity .12s ease;}
  #aaMacroTerminal .nav-rail:hover .rail-label{opacity:1;}
  /* sub-groups only appear when the rail is expanded (hovered) AND their view is active */
  #aaMacroTerminal .rail-sub{display:none; flex-direction:column; gap:4px; margin:0 0 2px 12px; padding-left:9px; border-left:1px solid var(--border);}
  #aaMacroTerminal .rail-sub[hidden]{display:none;}
  #aaMacroTerminal .nav-rail:hover .rail-sub:not([hidden]){display:flex;}
  #aaMacroTerminal .rail-subbtn{
    font-family:var(--font-mono); font-size:.7rem; font-weight:600; text-align:left; white-space:nowrap;
    padding:8px 10px; border-radius:7px; border:none; cursor:pointer;
    background:transparent; color:var(--text-faint); transition:background .15s ease, color .15s ease;
  }
  #aaMacroTerminal .rail-subbtn:hover{color:var(--text);}
  #aaMacroTerminal .rail-subbtn.active{background:var(--accent-dim); color:var(--accent);}
  #aaMacroTerminal .rail-clock{margin-top:auto; padding:8px 10px; font-family:var(--font-mono); font-size:.62rem; color:var(--text-faint); white-space:nowrap; opacity:0; transition:opacity .12s ease;}
  #aaMacroTerminal .nav-rail:hover .rail-clock{opacity:1;}

  #aaMacroTerminal .main-col{flex:1 1 auto; min-width:0; display:flex; flex-direction:column; min-height:0;}
  #aaMacroTerminal .sticky-top{flex:0 0 auto; position:relative; z-index:25;}
  #aaMacroTerminal .stage{flex:1 1 auto; min-height:0; display:flex; gap:12px; padding:8px 12px 10px;}
  #aaMacroTerminal .topbar{display:none;}
  #aaMacroTerminal .brand{display:flex; align-items:baseline; gap:10px; margin-right:auto;}
  #aaMacroTerminal .brand-mark{font-family:var(--font-mono); font-weight:700; font-size:1.15rem; letter-spacing:.02em;}
  #aaMacroTerminal .brand-mark .slash{color:var(--accent);}
  #aaMacroTerminal .brand-sub{font-size:.72rem; color:var(--text-faint); font-family:var(--font-mono); letter-spacing:.02em;}
  #aaMacroTerminal .controls{display:flex; align-items:flex-end; flex-wrap:wrap; gap:12px 16px;}
  #aaMacroTerminal .field{display:flex; flex-direction:column; gap:4px;}
  #aaMacroTerminal .field label{font-size:.66rem; text-transform:uppercase; letter-spacing:.08em; color:var(--text-faint); font-weight:600;}
  #aaMacroTerminal .field-cap{font-size:.63rem; color:var(--text-faint); max-width:220px;}
  #aaMacroTerminal .key-wrap{position:relative; display:flex;}
  #aaMacroTerminal input[type="password"], #aaMacroTerminal input[type="text"], #aaMacroTerminal input[type="number"], #aaMacroTerminal select{
    background:var(--panel-2); color:var(--text); border:1px solid var(--border);
    border-radius:7px; padding:8px 10px; font-family:var(--font-mono); font-size:.8rem;
    outline:none; transition:border-color .15s ease, box-shadow .15s ease;
  }
  #aaMacroTerminal input:focus, #aaMacroTerminal select:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-dim);}
  #aaMacroTerminal #apiKey{width:230px; padding-right:34px;}
  #aaMacroTerminal .key-toggle{
    position:absolute; right:4px; top:50%; transform:translateY(-50%);
    background:none; border:none; color:var(--text-faint); cursor:pointer;
    font-family:var(--font-mono); font-size:.65rem; padding:4px 6px; letter-spacing:.03em;
  }
  #aaMacroTerminal .key-toggle:hover{color:var(--text);}
  #aaMacroTerminal #modelSelect{width:172px;}
  #aaMacroTerminal #intervalInput{width:70px;}
  #aaMacroTerminal .btn{
    font-family:var(--font-mono); font-size:.78rem; font-weight:600; letter-spacing:.02em;
    padding:9px 16px; border-radius:7px; border:1px solid var(--border); cursor:pointer;
    background:var(--panel-2); color:var(--text); transition:all .15s ease; white-space:nowrap;
  }
  #aaMacroTerminal .btn:hover{border-color:var(--accent); color:var(--accent);}
  #aaMacroTerminal .btn.primary{background:var(--accent); color:#1f1e1d; border-color:var(--accent);}
  #aaMacroTerminal .btn.primary:hover{filter:brightness(1.08); color:#1f1e1d;}
  #aaMacroTerminal .btn.primary.active{background:var(--bear); border-color:var(--bear);}
  #aaMacroTerminal .btn.primary.active:hover{filter:brightness(1.08); color:#1f1e1d;}
  #aaMacroTerminal .btn-row{display:flex; gap:8px;}

  #aaMacroTerminal .status-strip{
    display:flex; align-items:center; gap:20px; flex-wrap:wrap;
    padding:9px 24px; font-family:var(--font-mono); font-size:.72rem; color:var(--text-dim);
    border-bottom:1px solid var(--border-soft); background:var(--bg-2);
  }
  #aaMacroTerminal .status-item{display:flex; align-items:center; gap:6px;}
  #aaMacroTerminal .live-dot{width:7px; height:7px; border-radius:50%; background:var(--text-faint); flex-shrink:0;}
  #aaMacroTerminal .live-dot.on{background:var(--bull);}
  #aaMacroTerminal .live-dot.pulse{background:var(--accent); animation:mt_pulse 1.1s ease-in-out infinite;}
  #aaMacroTerminal .status-text.status-error{color:var(--bear);}
  #aaMacroTerminal #logLine{color:var(--text-faint); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:520px;}

  /* ---------- Ticker ---------- */
  #aaMacroTerminal .ticker{
    overflow:hidden; white-space:nowrap; border-bottom:1px solid var(--border-soft);
    background:var(--panel); padding:7px 0;   /* headlines strip matches the theme (white in light / dark panel) */
  }
  #aaMacroTerminal .sticky-top{ background:var(--panel); }
  #aaMacroTerminal .ticker-track{
    display:inline-block; font-family:var(--font-mono); font-size:.73rem; color:var(--text-faint);
    padding-left:100%; animation:mt_scrollTicker 90s linear infinite;
  }
  #aaMacroTerminal .tk-id{font-weight:700; color:var(--text);}
  #aaMacroTerminal .tk-id.bullish{color:var(--bull);} #aaMacroTerminal .tk-id.bearish{color:var(--bear);} #aaMacroTerminal .tk-id.neutral{color:var(--neutral);}
  #aaMacroTerminal .tk-title{color:var(--text-dim);}
  #aaMacroTerminal .tk-sep{color:var(--accent); margin:0 16px;}
  #aaMacroTerminal .ticker:hover .ticker-track{animation-play-state:paused;}

  /* ---------- Main ---------- */
  #aaMacroTerminal main{max-width:1400px; margin:0 auto; padding:28px 24px 60px;}
  #aaMacroTerminal .category{margin-bottom:38px; animation:mt_fadeUp .5s ease both;}
  #aaMacroTerminal .category:nth-of-type(2){animation-delay:.05s;}
  #aaMacroTerminal .category:nth-of-type(3){animation-delay:.1s;}
  #aaMacroTerminal .category:nth-of-type(4){animation-delay:.15s;}
  #aaMacroTerminal .category-head{position:sticky; top:0; z-index:5; background:var(--bg); display:flex; align-items:baseline; gap:10px; margin-bottom:14px; padding:14px 0 9px; border-bottom:1px solid var(--border-soft);}
  #aaMacroTerminal .cat-eyebrow{
    font-family:var(--font-mono); font-size:.68rem; font-weight:700; letter-spacing:.12em;
    color:var(--accent); background:var(--accent-dim); padding:3px 8px; border-radius:4px;
  }
  #aaMacroTerminal .category-title{font-size:1.02rem; font-weight:600; margin:0; color:var(--text);}
  #aaMacroTerminal .cat-count{font-family:var(--font-mono); font-size:.7rem; color:var(--text-faint); margin-left:auto;}

  #aaMacroTerminal .card-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(272px,1fr)); gap:14px;}
  #aaMacroTerminal .card{
    background:var(--panel); border:1px solid var(--border); border-radius:var(--radius);
    padding:16px; display:flex; flex-direction:column; gap:10px;
    transition:border-color .2s ease, transform .2s ease;
  }
  #aaMacroTerminal .card:hover{border-color:var(--border-strong);}
  /* v1066 — color-code the whole macro-bias pair card to its NET bias so the colours never contradict the
     label (a bearish card must not look green). Left accent bar + tinted border/background per bias. */
  #aaMacroTerminal #pairsMain .card[data-bias]{ border-left-width:4px; }
  #aaMacroTerminal #pairsMain .card[data-bias="bullish"]{ border-left-color:var(--bull); border-color:rgba(52,211,153,.34); background:linear-gradient(180deg, rgba(52,211,153,.06), transparent 60%), var(--panel); }
  #aaMacroTerminal #pairsMain .card[data-bias="bearish"]{ border-left-color:var(--bear); border-color:rgba(251,107,107,.34); background:linear-gradient(180deg, rgba(251,107,107,.06), transparent 60%), var(--panel); }
  #aaMacroTerminal #pairsMain .card[data-bias="neutral"]{ border-left-color:var(--neutral); border-color:rgba(232,184,75,.30); background:linear-gradient(180deg, rgba(232,184,75,.05), transparent 60%), var(--panel); }
  #aaMacroTerminal #macroPane .macro-card{position:relative; overflow:hidden; gap:12px;}
  #aaMacroTerminal #macroPane .macro-card::before{content:""; position:absolute; inset:0 0 auto; height:2px; background:color-mix(in srgb,var(--accent) 72%,transparent); opacity:.55;}
  #aaMacroTerminal #macroPane .macro-card-ident{display:grid; gap:3px; min-width:0;}
  #aaMacroTerminal #macroPane .macro-card-kicker{font-family:var(--font-mono); font-size:.58rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--text-faint);}
  #aaMacroTerminal #macroPane .macro-card .card-name{max-width:48%; line-height:1.35;}
  #aaMacroTerminal #macroPane .macro-card .bias-row{padding:8px 0; border-block:1px solid var(--border-soft);}
  #aaMacroTerminal .card[data-state="error"]{border-color:rgba(251,107,107,.4);}
  #aaMacroTerminal .card[data-state="stale"]{border-color:rgba(232,184,75,.35);}
  #aaMacroTerminal .card[data-state="loading"] .driver{position:relative; color:transparent; border-radius:4px;
    background:linear-gradient(90deg,var(--panel-2) 25%,var(--border) 37%,var(--panel-2) 63%);
    background-size:400% 100%; animation:mt_shimmer 1.4s ease infinite;}

  #aaMacroTerminal .card-top{display:flex; align-items:baseline; justify-content:space-between; gap:8px;}
  #aaMacroTerminal .card-id{font-family:var(--font-mono); font-weight:700; font-size:1.05rem; letter-spacing:.02em;}
  #aaMacroTerminal .card-name{font-size:.72rem; color:var(--text-faint); text-align:right;}

  #aaMacroTerminal .bias-row{display:flex; align-items:center; justify-content:space-between;}
  #aaMacroTerminal .bias-badge{
    font-family:var(--font-mono); font-size:.66rem; font-weight:700; letter-spacing:.08em;
    padding:3px 9px; border-radius:20px; border:1px solid var(--border); color:var(--text-faint);
  }
  #aaMacroTerminal .bias-badge.bullish{color:var(--bull); background:var(--bull-dim); border-color:rgba(52,211,153,.3);}
  #aaMacroTerminal .bias-badge.bearish{color:var(--bear); background:var(--bear-dim); border-color:rgba(251,107,107,.3);}
  #aaMacroTerminal .bias-badge.neutral{color:var(--neutral); background:var(--neutral-dim); border-color:rgba(232,184,75,.3);}
  #aaMacroTerminal .score{font-family:var(--font-mono); font-weight:700; font-size:1rem; color:var(--text-faint);}
  #aaMacroTerminal .score.bullish{color:var(--bull);} #aaMacroTerminal .score.bearish{color:var(--bear);} #aaMacroTerminal .score.neutral{color:var(--neutral);}

  #aaMacroTerminal .meter{position:relative; height:6px; border-radius:4px; background:var(--panel-2); overflow:hidden;}
  #aaMacroTerminal .meter-fill{position:absolute; top:0; left:0; height:100%; width:50%; background:var(--text-faint); border-radius:4px; transition:width .7s cubic-bezier(.4,0,.2,1), background .3s ease;}
  #aaMacroTerminal .meter-fill.bullish{background:var(--bull);} #aaMacroTerminal .meter-fill.bearish{background:var(--bear);} #aaMacroTerminal .meter-fill.neutral{background:var(--neutral);}
  #aaMacroTerminal .meter-zero{position:absolute; left:50%; top:-2px; bottom:-2px; width:1px; background:var(--border);}

  #aaMacroTerminal .driver{font-size:.83rem; font-weight:500; line-height:1.4; min-height:2.4em;}

  #aaMacroTerminal details.detail{font-size:.78rem;}
  #aaMacroTerminal details.detail summary{
    cursor:pointer; color:var(--text-faint); list-style:none; display:flex; align-items:center; gap:6px;
    font-family:var(--font-mono); font-size:.68rem; letter-spacing:.03em; padding:2px 0;
  }
  #aaMacroTerminal details.detail summary::-webkit-details-marker{display:none;}
  #aaMacroTerminal details.detail summary::before{content:"▸"; font-size:.62rem; transition:transform .15s ease; color:var(--accent);}
  #aaMacroTerminal details.detail[open] summary::before{transform:rotate(90deg);}
  #aaMacroTerminal details.detail summary:hover{color:var(--text);}
  #aaMacroTerminal .rationale{color:var(--text-dim); line-height:1.55; margin:8px 0 6px;}
  #aaMacroTerminal .risk{color:var(--text-faint); line-height:1.5; margin:0 0 8px; font-style:italic;}
  #aaMacroTerminal .sources{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; border-top:1px solid var(--border-soft); padding-top:8px;}
  #aaMacroTerminal .sources li{display:flex; flex-direction:column; gap:1px;}
  #aaMacroTerminal .sources a{color:var(--text); text-decoration:none; font-size:.74rem; line-height:1.35;}
  #aaMacroTerminal .sources a:hover{color:var(--accent); text-decoration:underline;}
  #aaMacroTerminal .sources .src{font-family:var(--font-mono); font-size:.63rem; color:var(--text-faint);}

  #aaMacroTerminal .card-foot{display:flex; justify-content:space-between; align-items:center; font-family:var(--font-mono); font-size:.63rem; color:var(--text-faint); padding-top:2px;}
  #aaMacroTerminal .confidence.low{opacity:.55;} #aaMacroTerminal .confidence.medium{opacity:.8;} #aaMacroTerminal .confidence.high{opacity:1; color:var(--text-dim);}

  /* Macro Bias is a decision board: each pair card groups the instrument, current call, score,
     driver, and evidence instead of presenting the generic card stack used by other terminal views. */
  #aaMacroTerminal #macroPane .card-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:12px;}
  #aaMacroTerminal #macroPane .macro-card{
    display:grid; grid-template-columns:minmax(0,1fr) auto; grid-template-areas:
      "head state" "meter meter" "driver driver" "detail detail" "foot foot";
    padding:15px; border-radius:8px; background:var(--panel); box-shadow:0 8px 20px rgba(0,0,0,.14);
  }
  #aaMacroTerminal #macroPane .macro-card[data-bias]{border-left:4px solid var(--border);}
  #aaMacroTerminal #macroPane .macro-card[data-bias="bullish"]{border-left-color:var(--bull); border-color:rgba(52,211,153,.42); background:linear-gradient(145deg,rgba(52,211,153,.10),var(--panel) 58%);}
  #aaMacroTerminal #macroPane .macro-card[data-bias="bearish"]{border-left-color:var(--bear); border-color:rgba(251,107,107,.42); background:linear-gradient(145deg,rgba(251,107,107,.10),var(--panel) 58%);}
  #aaMacroTerminal #macroPane .macro-card[data-bias="neutral"]{border-left-color:var(--neutral); border-color:rgba(232,184,75,.42); background:linear-gradient(145deg,rgba(232,184,75,.10),var(--panel) 58%);}
  html[data-theme="light"] #aaMacroTerminal #macroPane .macro-card{background:#fff; box-shadow:0 7px 18px rgba(20,26,35,.10);}
  html[data-theme="light"] #aaMacroTerminal #macroPane .macro-card[data-bias="bullish"]{border-color:rgba(20,150,107,.42); background:linear-gradient(145deg,rgba(52,211,153,.13),#fff 62%);}
  html[data-theme="light"] #aaMacroTerminal #macroPane .macro-card[data-bias="bearish"]{border-color:rgba(214,77,77,.42); background:linear-gradient(145deg,rgba(251,107,107,.13),#fff 62%);}
  html[data-theme="light"] #aaMacroTerminal #macroPane .macro-card[data-bias="neutral"]{border-color:rgba(186,135,24,.44); background:linear-gradient(145deg,rgba(232,184,75,.14),#fff 62%);}
  #aaMacroTerminal #macroPane .macro-card .card-top{grid-area:head; align-items:flex-start; min-width:0;}
  #aaMacroTerminal #macroPane .macro-card .card-name{padding-top:2px; max-width:56%;}
  #aaMacroTerminal #macroPane .macro-card .bias-row{
    grid-area:state; align-self:start; display:grid; justify-items:end; gap:5px; padding:0; border:0;
  }
  #aaMacroTerminal #macroPane .macro-card .bias-badge{padding:4px 8px; font-size:.6rem;}
  #aaMacroTerminal #macroPane .macro-card .score{font-size:1.18rem; line-height:1; font-variant-numeric:tabular-nums;}
  #aaMacroTerminal #macroPane .macro-card .meter{grid-area:meter; height:5px; margin-top:2px;}
  #aaMacroTerminal #macroPane .macro-card .driver{grid-area:driver; min-height:0; padding:9px 10px; border-radius:6px; background:var(--panel-2); font-size:.78rem; line-height:1.45;}
  #aaMacroTerminal #macroPane .macro-card details.detail{grid-area:detail; padding-top:2px;}
  #aaMacroTerminal #macroPane .macro-card details.detail summary{padding:7px 0 1px; border-top:1px solid var(--border-soft);}
  #aaMacroTerminal #macroPane .macro-card .card-foot{grid-area:foot; padding-top:9px; border-top:1px solid var(--border-soft);}
  @media(max-width:420px){
    #aaMacroTerminal #macroPane .card-grid{grid-template-columns:1fr; gap:10px;}
    #aaMacroTerminal #macroPane .macro-card{padding:13px;}
    #aaMacroTerminal #macroPane .macro-card .card-name{max-width:50%; font-size:.68rem;}
  }

  #aaMacroTerminal footer{max-width:1400px; margin:0 auto; padding:10px 24px 40px; color:var(--text-faint); font-size:.72rem; font-family:var(--font-mono); line-height:1.7;}
  #aaMacroTerminal footer a{color:var(--text-faint); text-decoration:underline;}

  /* Pair breakdown legs */
  #aaMacroTerminal .pair-legs{display:flex; flex-direction:column; gap:7px; margin:2px 0 10px;}
  #aaMacroTerminal .leg{display:flex; align-items:center; gap:9px; font-family:var(--font-mono); font-size:.72rem;}
  #aaMacroTerminal .leg-id{font-weight:700; width:46px; color:var(--text); flex-shrink:0;}
  #aaMacroTerminal .leg-bar{position:relative; flex:1; height:5px; border-radius:3px; background:var(--panel-2); overflow:hidden;}
  #aaMacroTerminal .leg-bar::before{content:""; position:absolute; left:50%; top:0; bottom:0; width:1px; background:var(--border);}
  #aaMacroTerminal .leg-fill{position:absolute; top:0; height:100%; border-radius:3px; background:var(--text-faint);}
  #aaMacroTerminal .leg-fill.bullish{background:var(--bull);} #aaMacroTerminal .leg-fill.bearish{background:var(--bear);} #aaMacroTerminal .leg-fill.neutral{background:var(--neutral);}
  #aaMacroTerminal .leg-score{width:40px; text-align:right; color:var(--text-dim); flex-shrink:0;}
  #aaMacroTerminal .leg-score.bullish{color:var(--bull);} #aaMacroTerminal .leg-score.bearish{color:var(--bear);} #aaMacroTerminal .leg-score.neutral{color:var(--neutral);}

  /* ---------- App frame (screen-in-screen) ---------- */
  #aaMacroTerminal .app-frame{
    flex:1 1 auto; min-width:0; min-height:0;
    padding:5px; display:flex; overflow:hidden;
    background:linear-gradient(180deg, var(--panel-2), var(--bg-2));
    border:1px solid var(--border); border-radius:14px;
    box-shadow:0 20px 60px var(--shadow), inset 0 1px 0 rgba(255,255,255,.03);
  }
  /* Inner card: the ONLY scroll region. The frame fills the stage; only this
     content scrolls, section headers sticking as you go. */
  #aaMacroTerminal .frame-scroll{
    flex:1 1 auto; min-height:0; width:100%;
    overflow-y:auto; overflow-x:hidden;
    background:var(--bg); border:1px solid var(--border-soft); border-radius:10px;
  }
  #aaMacroTerminal .frame-scroll > main{ max-width:none; margin:0; padding:22px 18px 26px; }
  #aaMacroTerminal .frame-scroll > footer{ margin-top:6px; }

  #aaMacroTerminal .top-actions{display:flex; align-items:center; gap:10px; margin-left:auto;}

  /* ---------- Settings view ---------- */
  #aaMacroTerminal .settings-panel{max-width:640px; margin:0 auto; display:flex; flex-direction:column; gap:20px;}
  #aaMacroTerminal .settings-title{font-size:1.1rem; font-weight:600; margin:0; letter-spacing:.01em;}
  #aaMacroTerminal .settings-panel .field{gap:6px;}
  #aaMacroTerminal .settings-panel .field label{font-size:.72rem;}
  #aaMacroTerminal .settings-panel input[type="password"], #aaMacroTerminal .settings-panel input[type="text"], #aaMacroTerminal .settings-panel input[type="number"], #aaMacroTerminal .settings-panel select, #aaMacroTerminal .settings-panel #apiKey, #aaMacroTerminal .settings-panel .key-wrap{width:100%;}
  #aaMacroTerminal .settings-panel .field-cap{max-width:none;}
  #aaMacroTerminal .settings-row{display:grid; grid-template-columns:1fr 1fr; gap:16px;}
  #aaMacroTerminal .settings-panel .btn-row{margin-top:4px;}
  #aaMacroTerminal .settings-panel .btn{flex:1;}
  #aaMacroTerminal .settings-note{font-size:.7rem; color:var(--text-faint); line-height:1.6; border-top:1px solid var(--border-soft); padding-top:14px; margin:0;}
  #aaMacroTerminal .settings-chart{display:flex; flex-direction:column; gap:14px; border-top:1px solid var(--border-soft); padding-top:16px;}
  #aaMacroTerminal .settings-subhead{font-size:.82rem; font-weight:600; margin:0; color:var(--text);}
  #aaMacroTerminal .settings-panel input[type="color"]{width:100%; height:38px; padding:3px; background:var(--panel-2); border:1px solid var(--border); border-radius:7px; cursor:pointer;}
  #aaMacroTerminal .settings-check{display:flex; align-items:center; gap:8px; font-size:.8rem; color:var(--text-dim); cursor:pointer;}
  #aaMacroTerminal .settings-check input{width:16px; height:16px; accent-color:var(--accent);}

  /* ---------- News feed view ---------- */
  #aaMacroTerminal .news-head{display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; margin-bottom:14px; padding-bottom:10px; border-bottom:1px solid var(--border-soft);}
  #aaMacroTerminal .news-count{font-family:var(--font-mono); font-size:.7rem; color:var(--text-faint); margin-left:auto;}
  #aaMacroTerminal .news-filters{display:flex; flex-wrap:wrap; gap:10px 14px; align-items:center; margin-bottom:18px;}
  /* Sticky feed header: the title + filters stay put while the headline list scrolls */
  #aaMacroTerminal .news-topbar{
    position:sticky; top:0; z-index:15;
    background:var(--bg); margin:-22px -18px 16px; padding:16px 18px 12px;
    border-bottom:1px solid var(--border-soft);
  }
  #aaMacroTerminal .news-topbar .news-head{margin-bottom:12px; padding-bottom:0; border-bottom:none;}
  #aaMacroTerminal .news-topbar .news-filters{margin-bottom:0;}
  #aaMacroTerminal .chip-row{display:flex; flex-wrap:wrap; gap:6px;}
  #aaMacroTerminal .chip{
    font-family:var(--font-mono); font-size:.68rem; font-weight:600; letter-spacing:.02em;
    padding:6px 12px; border-radius:999px; border:1px solid var(--border); cursor:pointer;
    background:var(--panel-2); color:var(--text-dim); transition:all .15s ease;
  }
  #aaMacroTerminal .chip:hover{color:var(--text); border-color:var(--border-strong);}
  #aaMacroTerminal .chip.active{background:var(--accent-dim); color:var(--accent); border-color:rgba(0,240,163,.4);}
  #aaMacroTerminal .news-search{min-width:200px; flex:1;}
  #aaMacroTerminal #newsAssetSelect{width:170px;}

  #aaMacroTerminal .news-list{display:flex; flex-direction:column; gap:10px;}
  #aaMacroTerminal .news-item{display:flex; gap:14px; padding:14px; background:var(--panel); border:1px solid var(--border); border-radius:12px; transition:border-color .15s ease;}
  #aaMacroTerminal .news-item:hover{border-color:var(--border-strong);}
  #aaMacroTerminal .news-thumb{width:76px; height:76px; object-fit:cover; border-radius:9px; flex-shrink:0; background:var(--panel-2);}
  #aaMacroTerminal .news-avatar{width:76px; height:76px; border-radius:9px; flex-shrink:0; display:flex; align-items:center; justify-content:center;
    font-family:var(--font-mono); font-weight:700; font-size:1.15rem; color:#c2c0b6; letter-spacing:.02em;}
  /* v1050 — outlet logo (favicon) fallback chip when the article carries no image */
  #aaMacroTerminal .news-logo{width:76px; height:76px; border-radius:9px; flex-shrink:0; padding:20px; object-fit:contain;
    background:var(--panel-2); border:1px solid var(--border-soft);}
  #aaMacroTerminal .news-body{display:flex; flex-direction:column; gap:6px; min-width:0;}
  #aaMacroTerminal .news-title{color:var(--text); text-decoration:none; font-size:.92rem; font-weight:600; line-height:1.4;}
  #aaMacroTerminal .news-title:hover{color:var(--accent);}
  #aaMacroTerminal .news-snippet{margin:0; color:var(--text-dim); font-size:.76rem; line-height:1.5;}
  #aaMacroTerminal .news-meta{display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-family:var(--font-mono); font-size:.66rem; color:var(--text-faint);}
  #aaMacroTerminal .news-source{color:var(--text-dim); font-weight:600;}
  #aaMacroTerminal .news-dot{opacity:.5;}
  #aaMacroTerminal .news-tags{display:flex; gap:4px; flex-wrap:wrap; margin-left:2px;}
  #aaMacroTerminal .news-tag{background:var(--accent-dim); color:var(--accent); border-radius:4px; padding:1px 6px; font-size:.62rem; font-weight:600;}
  #aaMacroTerminal .news-empty{text-align:center; color:var(--text-faint); font-family:var(--font-mono); font-size:.8rem; padding:50px 20px; line-height:1.6;}

  /* ---------- Pair deep-dive overlay + blackhole warp ---------- */
  #aaMacroTerminal #pairsMain .card{cursor:pointer;}
  #aaMacroTerminal #pairsMain .card:hover{transform:translateY(-2px);}
  #aaMacroTerminal #pairDetail{
    position:fixed; inset:0; z-index:60; overflow:hidden;
    background:var(--bg); visibility:hidden; pointer-events:none;
  }
  #aaMacroTerminal #pairDetail.open{visibility:visible; pointer-events:auto;}
  /* Premium blackhole warp: accretion ring + singularity flash + lensed reveal */
  #aaMacroTerminal .bh-core{
    position:absolute; left:var(--ox,50%); top:var(--oy,50%); width:22px; height:22px;
    margin:-11px 0 0 -11px; border-radius:50%; opacity:0; pointer-events:none; z-index:2;
    background:radial-gradient(circle, #fff 0%, var(--accent) 42%, transparent 72%);
    box-shadow:0 0 70px 26px rgba(0,240,163,.55), 0 0 140px 60px rgba(0,240,163,.35);
  }
  #aaMacroTerminal .bh-ring{
    position:absolute; left:var(--ox,50%); top:var(--oy,50%); width:72vmax; height:72vmax;
    margin:-36vmax 0 0 -36vmax; border-radius:50%; opacity:0; pointer-events:none;
    background:conic-gradient(from 0deg,
      transparent 0%, rgba(0,240,163,0) 8%, var(--accent) 26%, #c2c0b6 42%,
      #1f1e1d 52%, #c2c0b6 62%, var(--accent) 78%, transparent 94%);
    filter:blur(11px) drop-shadow(0 0 44px rgba(0,240,163,.5));
    mix-blend-mode:screen;
  }
  /* v1074 — the blackhole warp is replaced by a smooth, premium reveal: the panel eases up + fades in
     with a soft blur-off, and the backdrop cross-fades. No accretion ring / singularity flash. */
  #aaMacroTerminal .bh-core, #aaMacroTerminal .bh-ring{ display:none !important; }
  #aaMacroTerminal #pairDetail{ opacity:0; transition:opacity .34s cubic-bezier(.22,1,.36,1); }
  #aaMacroTerminal #pairDetail.open{ opacity:1; }
  #aaMacroTerminal #pairDetail.closing{ opacity:0; }
  #aaMacroTerminal #pairDetail.warp .detail-inner{animation:mt_reveal .52s cubic-bezier(.22,1,.36,1) both;}
  #aaMacroTerminal #pairDetail.closing .detail-inner{animation:mt_revealOut .30s cubic-bezier(.4,0,1,1) both;}
  @keyframes mt_reveal{
    0%{opacity:0; transform:translateY(16px) scale(.986); filter:blur(7px);}
    60%{opacity:1;}
    100%{opacity:1; transform:none; filter:blur(0);}
  }
  @keyframes mt_revealOut{
    0%{opacity:1; transform:none; filter:blur(0);}
    100%{opacity:0; transform:translateY(10px) scale(.992); filter:blur(5px);}
  }
  #aaMacroTerminal .detail-inner{
    position:absolute; inset:0; overflow-y:auto; padding:calc(26px + env(safe-area-inset-top, 0px)) 22px 90px;
    max-width:1100px; margin:0 auto;
  }
  #aaMacroTerminal .detail-close{
    position:sticky; top:calc(env(safe-area-inset-top, 0px) + 8px); float:right; z-index:2;
    font-family:var(--font-mono); font-size:.72rem; font-weight:600;
    padding:8px 14px; border-radius:8px; border:1px solid var(--border);
    background:var(--panel-2); color:var(--text-dim); cursor:pointer;
  }
  #aaMacroTerminal .detail-close:hover{border-color:var(--accent); color:var(--accent);}
  #aaMacroTerminal .detail-id{font-family:var(--font-mono); font-weight:700; font-size:2rem; letter-spacing:.02em;}
  #aaMacroTerminal .detail-name{color:var(--text-faint); font-size:.9rem; margin-bottom:12px;}
  #aaMacroTerminal .detail-topline{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:6px 0 18px;}
  #aaMacroTerminal .leg-inline{font-family:var(--font-mono); font-size:.74rem; color:var(--text-dim); padding:4px 9px; border:1px solid var(--border); border-radius:6px;}
  #aaMacroTerminal .leg-inline b{color:var(--text);}
  #aaMacroTerminal .detail-section{margin:22px 0; padding-top:16px; border-top:1px solid var(--border-soft);}
  #aaMacroTerminal .detail-section h3{font-size:.78rem; text-transform:uppercase; letter-spacing:.1em; color:var(--accent); margin:0 0 10px; font-family:var(--font-mono);}
  #aaMacroTerminal .detail-section p{color:var(--text-dim); line-height:1.65; margin:0 0 10px; font-size:.9rem;}
  #aaMacroTerminal .detail-list{margin:0; padding-left:18px; color:var(--text-dim); line-height:1.7; font-size:.88rem;}
  #aaMacroTerminal .detail-list li{margin-bottom:6px;}
  #aaMacroTerminal .case-grid{display:grid; grid-template-columns:1fr 1fr; gap:14px;}
  #aaMacroTerminal .case{padding:14px; border-radius:10px; border:1px solid var(--border);}
  #aaMacroTerminal .case.bull{background:var(--bull-dim); border-color:rgba(52,211,153,.3);}
  #aaMacroTerminal .case.bear{background:var(--bear-dim); border-color:rgba(251,107,107,.3);}
  #aaMacroTerminal .case h4{margin:0 0 8px; font-size:.8rem; font-family:var(--font-mono);}
  #aaMacroTerminal .case.bull h4{color:var(--bull);} #aaMacroTerminal .case.bear h4{color:var(--bear);}
  #aaMacroTerminal .detail-caveat{
    background:var(--neutral-dim); border:1px solid rgba(232,184,75,.3); border-radius:10px;
    padding:12px 14px; color:var(--text-dim); font-size:.8rem; line-height:1.6; margin:16px 0;
  }
  #aaMacroTerminal .detail-caveat strong{color:var(--neutral);}
  /* v1043 — trade-signal card */
  #aaMacroTerminal .mt-signal{border-radius:12px; border:1px solid var(--border); padding:16px; background:var(--panel, rgba(255,255,255,.02));}
  #aaMacroTerminal .mt-signal-long{border-color:rgba(52,211,153,.4); background:var(--bull-dim);}
  #aaMacroTerminal .mt-signal-short{border-color:rgba(251,107,107,.4); background:var(--bear-dim);}
  #aaMacroTerminal .mt-signal-none{border-color:rgba(232,184,75,.3); background:var(--neutral-dim);}
  #aaMacroTerminal .mt-sig-head{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:12px;}
  #aaMacroTerminal .mt-sig-dir{font-family:var(--font-mono); font-weight:700; font-size:1rem; letter-spacing:.05em; padding:4px 12px; border-radius:8px;}
  #aaMacroTerminal .mt-sig-dir.long{color:var(--bull); background:rgba(52,211,153,.14);}
  #aaMacroTerminal .mt-sig-dir.short{color:var(--bear); background:rgba(251,107,107,.14);}
  #aaMacroTerminal .mt-sig-dir.none{color:var(--neutral); background:rgba(232,184,75,.14);}
  #aaMacroTerminal .mt-sig-conf{font-family:var(--font-mono); font-size:.8rem; color:var(--text-dim);}
  #aaMacroTerminal .mt-sig-conf.conf-hi{color:var(--bull);} #aaMacroTerminal .mt-sig-conf.conf-mid{color:var(--neutral);} #aaMacroTerminal .mt-sig-conf.conf-lo{color:var(--text-dim);}
  #aaMacroTerminal .mt-sig-bar{flex:1 1 90px; min-width:80px; height:6px; border-radius:4px; background:var(--border); overflow:hidden;}
  #aaMacroTerminal .mt-sig-bar-fill{display:block; height:100%; border-radius:4px; background:var(--accent);}
  #aaMacroTerminal .mt-sig-bar-fill.hi{background:var(--bull);} #aaMacroTerminal .mt-sig-bar-fill.mid{background:var(--neutral);} #aaMacroTerminal .mt-sig-bar-fill.lo{background:var(--text-faint);}
  #aaMacroTerminal .mt-sig-legs{display:grid; grid-template-columns:repeat(auto-fit,minmax(90px,1fr)); gap:10px; margin-bottom:12px;}
  #aaMacroTerminal .mt-sig-leg{display:flex; flex-direction:column; gap:3px; padding:8px 10px; border-radius:8px; border:1px solid var(--border); background:rgba(0,0,0,.12);}
  #aaMacroTerminal .mt-sig-leg-l{font-size:.62rem; text-transform:uppercase; letter-spacing:.1em; color:var(--text-faint); font-family:var(--font-mono);}
  #aaMacroTerminal .mt-sig-leg-v{font-size:.95rem; font-weight:600; font-family:var(--font-mono); color:var(--text);}
  #aaMacroTerminal .mt-sig-rat{margin:0 0 8px; font-size:.85rem; line-height:1.6; color:var(--text-dim);}
  #aaMacroTerminal .mt-sig-inval{margin:0; font-size:.8rem; line-height:1.55; color:var(--text-dim);}
  #aaMacroTerminal .mt-sig-inval strong{color:var(--bear);}
  #aaMacroTerminal .mt-sig-leg.tp.hit{border-color:rgba(52,211,153,.5); background:rgba(52,211,153,.12);}
  #aaMacroTerminal .mt-sig-leg.tp.hit .mt-sig-leg-l{color:var(--bull);}
  /* v1044 — live-monitor progress row */
  #aaMacroTerminal .mt-sig-mon{display:inline-flex; align-items:center; gap:6px; font-family:var(--font-mono); font-size:.72rem; font-weight:600; padding:5px 10px; border-radius:8px; margin-bottom:10px; border:1px solid var(--border);}
  #aaMacroTerminal .mt-sig-mon.pending{color:var(--neutral); background:rgba(232,184,75,.1); border-color:rgba(232,184,75,.3);}
  #aaMacroTerminal .mt-sig-mon.active{color:var(--bull); background:rgba(52,211,153,.1); border-color:rgba(52,211,153,.3);}
  #aaMacroTerminal .mt-sig-mon.done{color:var(--bull); background:rgba(52,211,153,.16); border-color:rgba(52,211,153,.45);}
  #aaMacroTerminal .mt-sig-mon.stopped{color:var(--bear); background:rgba(251,107,107,.1); border-color:rgba(251,107,107,.35);}
  #aaMacroTerminal .detail-loading{display:flex; align-items:center; gap:10px; color:var(--text-dim); font-family:var(--font-mono); font-size:.82rem; padding:20px 0;}
  #aaMacroTerminal .detail-spin{width:14px; height:14px; border:2px solid var(--border); border-top-color:var(--accent); border-radius:50%; animation:mt_spin .8s linear infinite;}
  @keyframes mt_spin{to{transform:rotate(360deg);}}
  @media (max-width:640px){ #aaMacroTerminal .case-grid{grid-template-columns:1fr;}}
  @media (prefers-reduced-motion:reduce){
    #aaMacroTerminal #pairDetail.warp .bh-ring, #aaMacroTerminal #pairDetail.warp .bh-core, #aaMacroTerminal #pairDetail.warp .detail-inner, #aaMacroTerminal #pairDetail.closing .detail-inner{animation:none;}}

  /* ---------- Economic calendar (rendered natively, styled like the news feed) ---------- */
  #aaMacroTerminal .ev-day{
    font-family:var(--font-mono); font-size:.68rem; font-weight:700; letter-spacing:.1em;
    color:var(--text-faint); text-transform:uppercase; margin:16px 2px 8px; padding-bottom:6px;
    border-bottom:1px solid var(--border-soft);
  }
  #aaMacroTerminal .ev-day:first-child{margin-top:0;}
  #aaMacroTerminal .ev-flag{
    width:56px; height:56px; border-radius:9px; flex-shrink:0; display:flex; align-items:center; justify-content:center;
    font-family:var(--font-mono); font-weight:700; font-size:.9rem; letter-spacing:.02em; color:#c2c0b6;
  }
  #aaMacroTerminal .imp-high{--imp:var(--bear);} #aaMacroTerminal .imp-med{--imp:var(--neutral);} #aaMacroTerminal .imp-low{--imp:var(--accent);} #aaMacroTerminal .imp-hol{--imp:var(--text-faint);}
  #aaMacroTerminal .ev-flag.imp-high{background:var(--bear-dim); color:var(--bear);}
  #aaMacroTerminal .ev-flag.imp-med{background:var(--neutral-dim); color:var(--neutral);}
  #aaMacroTerminal .ev-flag.imp-low{background:var(--accent-dim); color:var(--accent);}
  #aaMacroTerminal .ev-flag.imp-hol{background:var(--panel-2); color:var(--text-faint);}
  /* v1049 — flag emoji + currency code stacked in the event chip */
  #aaMacroTerminal .ev-flag-emoji{flex-direction:column; gap:2px;}
  #aaMacroTerminal .ev-flag-ico{font-size:1.4rem; line-height:1;}
  #aaMacroTerminal .ev-flag-ccy{font-size:.6rem; font-weight:700; letter-spacing:.04em; opacity:.9;}
  #aaMacroTerminal .ev-badge{font-weight:700; padding:1px 7px; border-radius:4px; font-size:.62rem; text-transform:uppercase; letter-spacing:.04em;}
  #aaMacroTerminal .ev-badge.imp-high{color:var(--bear); background:var(--bear-dim);}
  #aaMacroTerminal .ev-badge.imp-med{color:var(--neutral); background:var(--neutral-dim);}
  #aaMacroTerminal .ev-badge.imp-low{color:var(--accent); background:var(--accent-dim);}
  #aaMacroTerminal .ev-badge.imp-hol{color:var(--text-faint); background:var(--panel-2);}
  #aaMacroTerminal .ev-time{color:var(--text);}
  #aaMacroTerminal .ev-vals{display:flex; gap:12px; flex-wrap:wrap; margin-left:2px; color:var(--text-faint);}
  #aaMacroTerminal .ev-vals b{color:var(--text-dim); font-weight:600;}
  #aaMacroTerminal .ev-source{font-family:var(--font-mono); font-size:.64rem; color:var(--text-faint); text-align:right; margin-top:8px;}
  #aaMacroTerminal .ev-clickable{cursor:pointer;}
  #aaMacroTerminal .ev-clickable:hover{border-color:var(--border-strong);}
  #aaMacroTerminal .ev-cta{margin-left:auto; color:var(--accent); font-weight:600; white-space:nowrap;}
  #aaMacroTerminal .ev-released{margin-left:8px; font-size:.56rem; font-weight:700; letter-spacing:.06em; color:var(--bull); background:var(--bull-dim); padding:1px 6px; border-radius:4px; vertical-align:middle;}
  #aaMacroTerminal .ev-actual{color:var(--text-dim);} #aaMacroTerminal .ev-actual b{color:var(--text);}

  /* ---------- Chart view: chart FILLS the frame; watchlist is a panel OUTSIDE the frame ---------- */
  /* Watchlist collapses by animating WIDTH; a fixed-width inner keeps the content
     from reflowing (which was the source of the jank), so it slides cleanly. */
  #aaMacroTerminal .watchlist{
    width:240px; flex:0 0 auto; display:none; overflow:hidden;
    transition:width .28s cubic-bezier(.4,0,.2,1), max-height .28s cubic-bezier(.4,0,.2,1), opacity .2s ease, margin-right .28s cubic-bezier(.4,0,.2,1);
    will-change:width;
  }
  #aaMacroTerminal.view-chart .watchlist{display:block;}
  #aaMacroTerminal.view-chart.wl-collapsed .watchlist{width:0; opacity:0; margin-right:-12px; pointer-events:none;}
  #aaMacroTerminal .wl-inner{
    width:240px; height:100%; display:flex; flex-direction:column;
    background:var(--panel); border:1px solid var(--border); border-radius:12px; overflow:hidden;
  }
  #aaMacroTerminal .wl-head{padding:12px 12px 10px; border-bottom:1px solid var(--border-soft);}
  #aaMacroTerminal .wl-head-top{display:flex; align-items:center; justify-content:space-between; gap:8px;}
  #aaMacroTerminal .wl-collapse{background:none; border:none; color:var(--text-faint); cursor:pointer; font-size:.95rem; line-height:1; padding:2px 4px;}
  #aaMacroTerminal .wl-collapse:hover{color:var(--text);}
  #aaMacroTerminal .wl-tabs{display:flex; gap:5px; margin-top:9px;}
  #aaMacroTerminal .wl-tab{
    flex:1; font-family:var(--font-mono); font-size:.68rem; font-weight:600; padding:6px 8px;
    border-radius:7px; border:1px solid var(--border); background:var(--panel-2); color:var(--text-dim); cursor:pointer;
  }
  #aaMacroTerminal .wl-tab.active{background:var(--accent); color:#1f1e1d; border-color:var(--accent);}
  #aaMacroTerminal .wl-list{flex:1; overflow-y:auto; padding:6px;}
  #aaMacroTerminal .wl-cat{font-family:var(--font-mono); font-size:.6rem; font-weight:700; letter-spacing:.1em; color:var(--text-faint); text-transform:uppercase; padding:10px 8px 4px;}
  #aaMacroTerminal .wl-item{display:flex; align-items:center; gap:8px; padding:8px; border-radius:8px; cursor:pointer; transition:background .12s ease;}
  #aaMacroTerminal .wl-item:hover{background:var(--panel-2);}
  #aaMacroTerminal .wl-item.active{background:var(--accent-dim);}
  #aaMacroTerminal .wl-star{background:none; border:none; cursor:pointer; color:var(--text-faint); font-size:.95rem; line-height:1; padding:0; width:16px;}
  #aaMacroTerminal .wl-star.on{color:var(--neutral);}
  #aaMacroTerminal .wl-id{font-family:var(--font-mono); font-weight:700; font-size:.78rem; color:var(--text);}
  #aaMacroTerminal .wl-badge{margin-left:auto; font-family:var(--font-mono); font-size:.72rem; font-weight:700; color:var(--text-faint);}
  #aaMacroTerminal .wl-badge.bullish{color:var(--bull);} #aaMacroTerminal .wl-badge.bearish{color:var(--bear);} #aaMacroTerminal .wl-badge.neutral{color:var(--neutral);}
  #aaMacroTerminal .wl-empty{color:var(--text-faint); font-family:var(--font-mono); font-size:.72rem; padding:16px 10px; line-height:1.6;}

  #aaMacroTerminal #chartMain{padding:0; height:100%;}
  #aaMacroTerminal .chart-area{position:relative; height:100%; width:100%; display:flex; flex-direction:column;}
  #aaMacroTerminal .chart-toolbar{flex:0 0 auto; display:flex; align-items:center; gap:12px; padding:8px 10px; border-bottom:1px solid var(--border-soft);}
  #aaMacroTerminal .tf-row{display:flex; gap:3px;}
  #aaMacroTerminal .tf-btn{font-family:var(--font-mono); font-size:.68rem; font-weight:600; padding:6px 11px; border-radius:7px; border:1px solid var(--border); background:var(--panel-2); color:var(--text-dim); cursor:pointer;}
  #aaMacroTerminal .tf-btn:hover{color:var(--text);}
  #aaMacroTerminal .tf-btn.active{background:var(--accent); color:#1f1e1d; border-color:var(--accent);}
  #aaMacroTerminal .chart-head-right{margin-left:auto; display:flex; align-items:center; gap:10px;}
  #aaMacroTerminal .chart-sym{font-family:var(--font-mono); font-size:.75rem; font-weight:700; color:var(--text-dim);}
  #aaMacroTerminal #chartBias:empty{display:none;}
  #aaMacroTerminal .chart-host{flex:1 1 auto; min-height:0; width:100%;}
  #aaMacroTerminal .chart-host .tradingview-widget-container, #aaMacroTerminal .chart-host iframe{width:100% !important; height:100% !important;}

  /* ---------- Economic calendar filters ---------- */
  #aaMacroTerminal #eventsRegionSelect{width:190px;}

  @media (max-width:760px),(max-height:500px) and (pointer:coarse){
    #aaMacroTerminal{flex-direction:column;}
    /* rail becomes a bottom bar on small screens */
    /* Bottom tab bar: 5 equal-width tabs, icon over a full readable label (no truncation). */
    /* v1238 — premium bottom tab bar to match the desktop design: white (theme panel) bar, flat
       blended buttons, subtle accent-dim highlight on the active tab (no heavy green fill). */
    #aaMacroTerminal .nav-rail{
      order:2; position:static!important; width:auto; flex:0 0 auto!important; flex-direction:row; align-items:stretch; gap:2px;
      overflow:visible; border-right:none; border-top:1px solid var(--border);
      background:var(--panel) !important;
      /* v1289 — no home-indicator safe-area padding in a normal browser tab: the browser's own bottom bar
         already covers that area, so the inset just created an empty "bezel" gap under the tab bar. */
      padding:6px 6px 6px;
    }
    #aaMacroTerminal .main-col{min-height:0!important;}
    #aaMacroTerminal .nav-rail:hover{width:auto;}
    #aaMacroTerminal .rail-brand{display:none;}
    #aaMacroTerminal .rail-btn{
      flex:1 1 0; min-width:0; flex-direction:column; align-items:center; justify-content:center;
      /* v1303 — SHORT tab buttons (was padding:7px). Unconditional (mobile) so it can't be missed by a
         PWA-detection quirk the way the standalone-gated rules were. */
      gap:2px; padding:3px 2px; text-align:center; white-space:normal; overflow:visible; border-radius:10px;
      background:transparent !important; color:var(--text-dim) !important; border:none !important;
      transition:background .12s ease, color .12s ease;
    }
    #aaMacroTerminal .rail-btn:active{ background:color-mix(in srgb, var(--text) 8%, transparent) !important; }
    #aaMacroTerminal .rail-btn.active{ background:var(--accent-dim) !important; color:var(--accent) !important; }
    #aaMacroTerminal .rail-ico{width:20px; height:20px; color:inherit;}
    #aaMacroTerminal .rail-ico svg{width:19px; height:19px;}
    #aaMacroTerminal .rail-label{opacity:1; font-size:.585rem; line-height:1.1; letter-spacing:0; white-space:nowrap; overflow:visible; text-overflow:clip; color:inherit;}
    #aaMacroTerminal .rail-clock{display:none;}
    #aaMacroTerminal .rail-sub{display:none !important;}   /* sub-toggles live at the page bottom on compact */
    #aaMacroTerminal .stage{flex-direction:column; padding:6px 8px 8px;}
    #aaMacroTerminal .watchlist{width:100%; max-height:220px;}
    #aaMacroTerminal .wl-inner{width:100%;}
    #aaMacroTerminal.view-chart.wl-collapsed .watchlist{width:100%; max-height:0; opacity:0; margin-right:0; border:none;}
    #aaMacroTerminal .frame-scroll > main{padding:16px 12px 22px;}
    #aaMacroTerminal #chartMain{min-height:62vh;}
    #aaMacroTerminal .news-item{flex-direction:column;}
    #aaMacroTerminal .news-thumb, #aaMacroTerminal .news-avatar{width:100%; height:120px;}
    #aaMacroTerminal .news-logo{width:100%; height:120px; padding:38px;}
    #aaMacroTerminal .settings-row{grid-template-columns:1fr;}
    #aaMacroTerminal .card-grid{grid-template-columns:1fr;}}
  /* v1498 — LANDSCAPE PHONE structuring: wide-but-short coarse screens (e.g. 844x390) get a SHORT bottom
     tab bar with the icon and label SIDE BY SIDE instead of stacked, so the bar stops eating scarce
     vertical space and the tiny stacked labels stop clipping. Pairs with the JS gate that keeps the
     desktop dock (aa-terminal-bottomnav) OFF these devices — this bar IS the landscape nav. */
  @media (max-height:500px) and (min-width:600px){
    /* The chart host already reserves its own navigation clearance in the installed app.
       Removing the stage's trailing spacer lets the pair/timeframe lane meet the tab lane. */
    #aaMacroTerminal .stage{ padding-bottom:0 !important; }
    #aaMacroTerminal .nav-rail{ padding:3px 8px !important; gap:4px !important; align-items:center !important; }
    #aaMacroTerminal .rail-btn{ flex-direction:row !important; gap:6px !important; padding:4px 8px !important; }
    #aaMacroTerminal .rail-ico{ width:18px !important; height:18px !important; }
    #aaMacroTerminal .rail-ico svg{ width:16px !important; height:16px !important; }
    #aaMacroTerminal .rail-label{ font-size:.68rem !important; line-height:1.2 !important; }
    /* Keep one continuous dock surface: Chart locks a compact pair/timeframe block at the left,
       while only the remaining navigation tabs swipe horizontally. */
    body.aa-terminal-bottomnav #aaDeskDockWrap,
    body.aa-terminal-bottomnav #aaDeskDock,
    body.aa-terminal-bottomnav #aaDeskDock > header,
    body.aa-terminal-bottomnav #aaDeskDock > header > .chart-sim-topbar,
    body.aa-terminal-bottomnav #aaDeskTabs{ background:var(--panel) !important; }
    body.aa-terminal-bottomnav #aaDeskDock > header{ border-bottom:0 !important; }
    body.aa-terminal-bottomnav #aaDeskDock{ position:relative !important; isolation:isolate; width:100% !important; min-width:0 !important; min-height:48px !important; padding:0 10px !important; }
    body.aa-terminal-bottomnav #aaMacroTerminal.view-chart #aaDeskDock > header{ position:relative !important; z-index:2; flex:0 0 auto !important; width:auto !important; min-width:0 !important; overflow:visible !important; }
    body.aa-terminal-bottomnav #aaMacroTerminal.view-chart #aaDeskDock > header > .chart-sim-topbar{ width:auto !important; height:48px !important; }
    body.aa-terminal-bottomnav #aaMacroTerminal.view-chart #aaDeskDock .tv-left{ flex:0 0 auto !important; width:auto !important; max-width:none !important; }
    body.aa-terminal-bottomnav #aaMacroTerminal.view-chart #aaDeskDock .tv-ticker-line{ display:flex !important; min-width:0 !important; }
    body.aa-terminal-bottomnav #aaMacroTerminal.view-chart #aaDeskDock .tv-last,
    body.aa-terminal-bottomnav #aaMacroTerminal.view-chart #aaDeskDock .tv-change,
    body.aa-terminal-bottomnav #aaMacroTerminal.view-chart #aaDeskDock #aaSymbolSelect,
    body.aa-terminal-bottomnav #aaMacroTerminal.view-chart #aaDeskDock #aaTfSelect{ height:28px !important; min-height:28px !important; max-height:28px !important; font-size:.7rem !important; line-height:28px !important; padding:0 8px !important; }
    body.aa-terminal-bottomnav #aaMacroTerminal.view-chart #aaDeskDock #aaSymbolSelect,
    body.aa-terminal-bottomnav #aaMacroTerminal.view-chart #aaDeskDock #aaTfSelect{ width:fit-content !important; min-width:0 !important; field-sizing:content !important; }
    body.aa-terminal-bottomnav #aaDeskTabs{ position:relative !important; z-index:1; flex:1 1 0 !important; min-width:0 !important; width:auto !important; margin-left:4px !important; padding-left:6px !important; border-left:1px solid var(--border) !important; overflow-x:auto !important; overflow-y:hidden !important; -webkit-overflow-scrolling:touch; touch-action:pan-x !important; overscroll-behavior-x:contain; }
    body.aa-terminal-bottomnav #aaDeskChartTools{ display:flex !important; align-items:center !important; flex:0 0 auto !important; gap:5px !important; padding-right:7px !important; margin-right:5px !important; border-right:1px solid var(--border) !important; }
    body.aa-terminal-bottomnav #aaDeskChartTools .tv-center-tools,
    body.aa-terminal-bottomnav #aaDeskChartTools .tv-right-icons{ display:flex !important; align-items:center !important; flex:0 0 auto !important; width:auto !important; height:auto !important; gap:5px !important; }
    body.aa-terminal-bottomnav #aaDeskChartTools #aaIndicatorsBtn,
    body.aa-terminal-bottomnav #aaDeskChartTools #aaBarTypeBtn{ position:static !important; inset:auto !important; }
    body.aa-terminal-bottomnav #aaDeskChartTools .top-tool-btn,
    body.aa-terminal-bottomnav #aaDeskChartTools .aa-tool-main,
    body.aa-terminal-bottomnav #aaDeskChartTools .tv-right-icons button,
    body.aa-terminal-bottomnav #aaDeskChartTools .aa-lane-icobtn,
    body.aa-terminal-bottomnav #aaDeskChartTools .aa-lane-quick{ box-sizing:border-box !important; flex:0 0 32px !important; width:32px !important; min-width:32px !important; max-width:32px !important; min-height:32px !important; height:32px !important; padding:0 !important; font-size:0 !important; line-height:0 !important; text-indent:-9999px !important; white-space:nowrap !important; overflow:hidden !important; }
    body.aa-terminal-bottomnav #aaDeskChartTools .aa-tool-dropdown,
    body.aa-terminal-bottomnav #aaDeskChartTools .aa-lane-quick-grp{ display:flex !important; align-items:center !important; flex:0 0 auto !important; gap:4px !important; }
    body.aa-terminal-bottomnav #aaDeskChartTools .aa-tool-dropdown{ flex:0 0 32px !important; width:32px !important; min-width:32px !important; }
    body.aa-terminal-bottomnav #aaDeskChartTools .aa-tool-dropdown .top-tool-btn{ width:100% !important; }
    body.aa-terminal-bottomnav #aaMacroTerminal:not(.view-chart) #aaDeskChartTools{ display:none !important; }
    body.aa-terminal-bottomnav #aaDeskDock .rail-btn,
    body.aa-terminal-bottomnav #aaDeskDock .rail-subbtn{ box-sizing:border-box !important; flex:0 0 auto !important; width:auto !important; min-width:0 !important; min-height:32px !important; height:32px !important; padding:0 11px !important; font-size:.7rem !important; justify-content:center !important; }
  }
  /* v1290 — no bottom safe-area bezel under the tab bar in ANY normal mode (browser or installed PWA); the tab
     bar's own padding already clears the home indicator. The extra bezel/clearance is reserved for full-screen
     only (handled on the control lanes, not here). */

  @keyframes mt_pulse{0%,100%{opacity:1; transform:scale(1);} 50%{opacity:.35; transform:scale(1.3);}}
  @keyframes mt_shimmer{0%{background-position:100% 0;} 100%{background-position:-100% 0;}}
  @keyframes mt_scrollTicker{from{transform:translateX(0);} to{transform:translateX(-50%);}}
  @keyframes mt_fadeDown{from{opacity:0; transform:translateY(-8px);} to{opacity:1; transform:translateY(0);}}
  @keyframes mt_fadeUp{from{opacity:0;} to{opacity:1;}}

  @media (prefers-reduced-motion:reduce){
    #aaMacroTerminal .ticker-track{animation:none;}
    #aaMacroTerminal .live-dot.pulse{animation:none;}
    #aaMacroTerminal .card[data-state="loading"] .driver{animation:none;}
    #aaMacroTerminal .category, #aaMacroTerminal .topbar{animation:none;}
    #aaMacroTerminal .watchlist, #aaMacroTerminal .nav-rail{transition:none;}}

/* ============================= Alien Algo chart bridge ============================= */
/* The skin is an absolutely-positioned layer inside #aaApp. It stays hidden until
   the user signs in (the platform toggles [hidden]). */
#aaApp.aa-terminal-active{position:relative;}
#aaMacroTerminal{position:absolute; inset:0; z-index:900;}
#aaMacroTerminal[hidden]{display:none !important;}
/* v1298 — INSTALLED APP (standalone), edge-to-edge with a TRANSPARENT status bar so there's NO grey top band.
   The app draws under the status bar + home indicator, so we clear them with the REAL safe-area insets — and,
   critically, we DON'T add a global top inset (that double-stacked with .sticky-top and dropped every page
   before). Instead:
   (1) header pages already self-clear via `.sticky-top{ padding-top:env(safe-area-inset-top) }` — untouched;
   (2) the CHART page has no header, so IT adds the top inset (chart-stack only);
   (3) the bottom tabs add env(safe-area-inset-bottom) so they clear the home indicator (cover removes iOS's
       automatic inset, so we add back exactly that — same visual position, no oversized bezel);
   (4) the whole skin is painted with --bg so the status-bar / home-indicator strips can never read as grey. */
/* v1302 — INSTALLED APP rules. IMPORTANT: iOS does NOT reliably match `@media (display-mode: standalone)`, so
   the previous versions of these rules silently never applied (that's why the bottom strip AND the tab height
   never changed). We now detect the installed PWA in JS (navigator.standalone / matchMedia) and add `aa-pwa`
   to <html>; every installed-app rule is scoped to html.aa-pwa so it actually applies on iOS. */
/* v1303 — BLEND THE GREY BOTTOM STRIP, UNCONDITIONALLY. The grey band at the very bottom is the ROOT element's
   background propagated across the whole viewport canvas — it shows below the height-capped app (#aaApp/body).
   Earlier versions gated this on the installed-app switch, which iOS did not reliably match, so it never applied.
   Painting the ROOT (html) is safe in a normal browser too, so we do it UNCONDITIONALLY, keyed off the theme
   attribute that's always set on <html>. The browser propagates the root background across the ENTIRE viewport,
   reaching the exact strip no in-app element can — so the bottom blends like the transparent top. */
html{ background:#FFFFFF !important; }
html[data-theme="dark"]{ background:#262624 !important; }
@media (prefers-color-scheme: dark){ html:not([data-theme="light"]){ background:#262624 !important; } }
/* Installed-app-only insets (top status bar + home-indicator nav clearance). These are only meaningful in the
   installed PWA, so they stay gated to html.aa-pwa; if the detection misses, the unconditional fixes above still
   land the bottom-blend + short tabs the user actually sees. */
html.aa-pwa #aaMacroTerminal{ background: var(--bg); }
/* v1486 — let the chart content reach the VERY TOP of the screen (behind the status bar), so dragging the chart
   up keeps it visible under the clock. No top padding is added; the status bar overlays the chart. The price
   axis is drawn on the canvas inside the chart's own layout, so it is unaffected — only the dead top band goes. */
html.aa-pwa #aaMacroTerminal .chart-stack{ padding-top: 0; }
html.aa-pwa body:not(.aa-fullscreen) #aaMacroTerminal{ padding-bottom: env(safe-area-inset-bottom, 0px); }

/* iOS standalone landscape keeps the terminal edge-to-edge. Chart and Trade are the two
   fullscreen surfaces, so reserve the compact rail height inside those pages only. */
@media (max-height:500px) and (min-width:600px){
  html.aa-pwa #aaMacroTerminal.view-chart #chartHost{
    padding-bottom:calc(var(--aa-navh,40px) + env(safe-area-inset-bottom,0px)) !important;
  }
  html.aa-pwa #aaMacroTerminal #watchlistMain > .aa-panel-page{
    padding-bottom:calc(var(--aa-navh,40px) + env(safe-area-inset-bottom,0px)) !important;
  }
}

/* When the skin is live, the app's native top chrome + mobile tabs are hidden —
   their content lives inside the skin's Chart tab instead. The side panel is NOT
   hidden: it slides in above the skin when the user opens Account/AI/Calendar. */
#aaApp.aa-terminal-active > header,
#aaApp.aa-terminal-active > .trade-bar,
#aaApp.aa-terminal-active > .aa-mobile-tabs{ display:none !important; }
#aaApp.aa-terminal-active .aa-side-panel{ z-index:1200 !important; }

/* The skin's own Chart toolbar is redundant — the real Alien Algo toolbar (moved
   in with the chart) provides symbol/timeframe/drawing tools. */
#aaMacroTerminal .chart-toolbar{ display:none !important; }
/* Chart-appearance controls in the skin's Settings tab drove the old TradingView
   widget; the Alien Algo chart has its own gear/settings, so hide the dead block. */
#aaMacroTerminal .settings-chart{ display:none !important; }

/* #chartHost now hosts the app's real chart column (header + trade-bar + chart-stack).
   The chart FILLS the top; the pair/timeframe lane (header) + OHLC lane (trade-bar) sit at the
   BOTTOM via flex order (DOM order is untouched, so the app's logic is unaffected). */
#aaMacroTerminal #chartHost{ display:flex; flex-direction:column; padding:0; }
#aaMacroTerminal #chartHost > header,
#aaMacroTerminal #chartHost > .trade-bar{ flex:0 0 auto; }
#aaMacroTerminal #chartHost > header{ order:3; border-bottom:none; border-top:1px solid var(--border-soft); }
/* v1485 — the chart's pair/TF/news-bias header is fully TRANSPARENT so the chart shows through it. The price
   axis is unaffected: it lives on the chart canvas (chart-stack, order:1), whose box is unchanged, so the axis
   stays exactly where it is — only the header's opaque panel is gone. The buttons keep their own chip
   backgrounds so they stay legible over the candles. */
#aaMacroTerminal #chartHost > header,
#aaMacroTerminal #chartHost > header .chart-sim-topbar{ background:transparent !important; border-top-color:transparent !important; box-shadow:none !important; }
#aaMacroTerminal #chartHost > .trade-bar{ order:2; }
#aaApp.aa-terminal-active #chartHost > .chart-stack,
#aaApp.aa-terminal-active #chartHost > .aa-chart-page{
  order:1; flex:1 1 auto; min-height:0; height:auto !important;
}
#aaMacroTerminal .chart-area{ height:100%; }
/* Full-screen chart: with the watchlist sidebar gone, the frame fills the whole stage. */
#aaMacroTerminal.view-chart .app-frame{ padding:0; }
#aaMacroTerminal.view-chart .frame-scroll{ overflow:hidden; }

/* ---- Watchlist + Settings tabs backed by the real Alien Algo panels ----
   The app's own Watchlist/Settings panel pages are relocated into these skin mains
   (see AAChartBridge.aaMountPanelsIntoTerminal). Lay them out to fill the tab and hide
   the skin's old AI-key Settings block. */
#aaMacroTerminal #settingsMain > .settings-panel{ display:none !important; }  /* hide AI API key UI entirely */
#aaMacroTerminal #settingsMain,
#aaMacroTerminal #watchlistMain{ padding:0 !important; height:100%; display:flex; flex-direction:column; min-height:0; }
/* Our display:flex above beats the UA [hidden] rule — restore hiding for inactive tabs. */
#aaMacroTerminal #settingsMain[hidden],
#aaMacroTerminal #watchlistMain[hidden]{ display:none !important; }
#aaMacroTerminal #settingsMain > .aa-panel-page,
#aaMacroTerminal #watchlistMain > .aa-panel-page{ flex:1 1 auto; min-height:0; height:100% !important; width:100%; }
/* Center the Settings page on wide screens; the watchlist stays full-width. */
#aaMacroTerminal #settingsMain > .aa-panel-page{ max-width:860px; margin-inline:auto; }
/* v1032 — Settings sub-pages were only given a proper "fixed stage" inside the compact
   @media(max-width:820px) block, so on the always-full-screen terminal (desktop widths) opening a
   sub-page collapsed the settings page to 0 height and the list bled through. Mirror that stage
   treatment here for every width: the page clips, the main list fills + scrolls, and each absolute
   sub-page fills the page so it slides in cleanly. */
#aaMacroTerminal #settingsMain > .aa-panel-page[data-panel-page="settings"]{
  /* Opening a settings sub-page strips the app's `.active` class off this page (its native drawer
     flow), which would collapse it via `.aa-panel-page{display:none}`. In the terminal the page is
     the tab body, so keep it shown whenever the Settings tab is open (#settingsMain[hidden] hides
     the whole tab when inactive). */
  display:flex !important;
  position:relative !important; height:100% !important; max-height:100% !important; overflow:hidden !important;
}
#aaMacroTerminal #settingsMain > .aa-panel-page[data-panel-page="settings"] > .settings-panel-inline{
  position:absolute; inset:0; overflow-y:auto; overflow-x:hidden; -webkit-overflow-scrolling:touch; overscroll-behavior:contain;
}
#aaMacroTerminal #settingsMain > .aa-panel-page[data-panel-page="settings"] > .aa-settings-subpage{
  position:absolute !important; inset:0 !important; height:100% !important;
}

/* In skin mode the app's own side drawer stays CLOSED for Settings/Watchlist (they render
   inside the skin tabs). v1048 — AI chat is now a skin tab too, so its side panel is pushed off. */
#aaApp.aa-terminal-active[data-panel="settings"] .aa-side-panel,
#aaApp.aa-terminal-active[data-panel="watchlist"] .aa-side-panel,
#aaApp.aa-terminal-active[data-panel="ai"] .aa-side-panel{ transform:translateX(104%) !important; box-shadow:none !important; }

/* ---- Watchlist tab: let the relocated Alien Algo watchlist scroll WITHIN the frame
   (it was getting cut off), and keep its floating Watchlist/Trade-signals switch anchored. */
#aaMacroTerminal #watchlistMain{ overflow:hidden; position:relative; }
#aaMacroTerminal #watchlistMain > .aa-panel-page{ position:relative; height:100% !important; min-height:0; overflow:auto; padding-bottom:64px; -webkit-overflow-scrolling:touch; }

/* ---- Compact-mode News sub-toggle pinned to the bottom of the News page (Data Feed / News
   Events). Hidden on desktop (the nav rail carries the sub-buttons there). */
#aaMacroTerminal .mt-news-bottomsub{ display:none; }
@media (max-width:760px),(max-height:500px) and (pointer:coarse){
  #aaMacroTerminal #railNewsSub{ display:none !important; }   /* de-clutter the bottom tab bar */
  #aaMacroTerminal #newsMain{ position:relative; padding-bottom:calc(var(--aa-navh, 58px) + 54px); }   /* clear the fixed sub-toggle bar + the bottom nav so the last item stays reachable */
  /* v1417 — PIN the sub-toggle just above the bottom tab bar. It was position:sticky, which sits at the END of the
     content — so on an EMPTY / short feed it drifted UP into the middle of the screen. Fixed keeps it in the SAME
     resting spot whether the feed is full or empty (same approach as the Signals Live/History bar).
     v1419 — rest the bar FLUSH on top of the real bottom nav: the offset is now the JS-measured nav height
     (--aa-navh, set by measureNavHeight in the skin), not a hard-coded 50px that left a gap. The background is
     also OPAQUE (var(--panel)) instead of the translucent --float-bg, so no page content shows through it. */
  #aaMacroTerminal .mt-news-bottomsub{
    display:flex; gap:8px; position:fixed; left:0; right:0; bottom:var(--aa-navh, 58px); z-index:20;
    margin:0; padding:10px 12px;
    background:var(--panel); border-top:1px solid var(--border);
  }
  #aaMacroTerminal .mt-news-subbtn{
    flex:1; font-family:var(--font-mono); font-size:.72rem; font-weight:600; letter-spacing:.02em;
    padding:11px 10px; border-radius:9px; border:1px solid var(--border);
    background:var(--panel-2); color:var(--text-dim); cursor:pointer;
  }
  #aaMacroTerminal .mt-news-subbtn.active{ background:var(--accent); color:#1f1e1d; border-color:var(--accent); }
}

/* ---- Live / History bar, relocated to the bottom-centre of the Signals page. position:fixed keeps it out
   of the document flow, so it CANNOT affect the panes' show/hide (the [hidden] attribute) or page scrolling.
   It is a descendant of #signalsPane, so a hidden #signalsPane / #newsMain hides it automatically — it only
   appears on the Signals sub-page. Desktop: centred, fixed above the bottom. Mobile: sits above the news
   sub-nav + the app's bottom tab bar. */
#aaMacroTerminal .sig-viewbar{
  position:fixed; left:50%; transform:translateX(-50%); bottom:22px; z-index:60;
  display:flex; gap:6px; padding:6px; border-radius:14px;
  background:var(--float-bg); backdrop-filter:blur(12px);
  border:1px solid var(--border); box-shadow:0 14px 38px var(--shadow);
}
#aaMacroTerminal .sig-viewbar .chip{ min-width:120px; text-align:center; justify-content:center; }
#aaMacroTerminal #signalsPane .sig-list{ padding-bottom:80px; }   /* keep the last card clear of the fixed bar */
@media (max-width:760px),(max-height:500px) and (pointer:coarse){
  /* v1234 — the News sub-toggle is hidden on the Signals page now, so the Live/History bar sits LOWER
     (just above the bottom tab bar) on mobile instead of floating high up the page. */
  /* v1314 — sit just ABOVE the bottom tab bar (was too high in the installed app, and mis-stacked in the mobile
     browser). Smaller constant so it hugs the tabs; env keeps it clear of the home indicator on notched phones. */
  #aaMacroTerminal .sig-viewbar{ bottom:calc(50px + env(safe-area-inset-bottom, 0px)); width:calc(100% - 44px); }
  #aaMacroTerminal .sig-viewbar .chip{ flex:1; min-width:0; }
  #aaMacroTerminal #signalsPane .sig-list{ padding-bottom:64px; }
}

/* ---- Full-screen chart (app's #aaFullscreenBtn toggles .aa-fullscreen). In skin mode the
   app's grid rules can't reach the embedded chart, so hide the skin chrome (nav rail + ticker)
   and drop the frame chrome to make the chart fill the viewport. The bottom pair/timeframe +
   OHLC lanes stay put so the exit-fullscreen button remains reachable. */
#aaApp.aa-terminal-active.aa-fullscreen .nav-rail,
#aaApp.aa-terminal-active.aa-fullscreen .sticky-top{ display:none !important; }
/* v1223b — FULLSCREEN must FULLY COLLAPSE the left nav/tabs rail, not just hide its buttons. The rail lives in
   #aaMacroTerminal (a flex row: rail + main-col), so hiding the buttons left the 56px rail column behind as an
   empty "bezel". body.aa-fullscreen is the reliable hook (the toggle stamps it on <body>), so this matches
   regardless of the #aaApp / #aaMacroTerminal nesting and zeroes the rail's width so the chart fills edge-to-edge. */
body.aa-fullscreen #aaMacroTerminal .nav-rail,
#aaApp.aa-fullscreen #aaMacroTerminal .nav-rail,
#aaMacroTerminal.aa-fullscreen .nav-rail{
  display:none !important; width:0 !important; min-width:0 !important; max-width:0 !important;
  flex:0 0 0 !important; flex-basis:0 !important; padding:0 !important; margin:0 !important; border:0 !important; overflow:hidden !important;
}
body.aa-fullscreen #aaMacroTerminal .nav-rail:hover{ width:0 !important; }
body.aa-fullscreen #aaMacroTerminal .main-col,
body.aa-fullscreen #aaMacroTerminal .stage{ margin-left:0 !important; padding-left:0 !important; }
#aaApp.aa-terminal-active.aa-fullscreen .stage{ padding:0 !important; }
#aaApp.aa-terminal-active.aa-fullscreen .app-frame{ padding:0 !important; border:none !important; border-radius:0 !important; box-shadow:none !important; }
#aaApp.aa-terminal-active.aa-fullscreen .frame-scroll{ border:none !important; border-radius:0 !important; }

/* v1253 — MOBILE full-screen: the bottom control lane (pair/TF drawing tools + the news-bias / trade bar)
   was floating transparently over the chart with nothing behind it and sitting on the iOS home-indicator.
   Give it a solid bar to REST ON (a whisper-grey/dark panel distinct from the chart, a top border + soft
   shadow) and pad the last lane for the safe-area, so the buttons have a real "level" in full-screen. */
@media (max-width:760px),(max-height:500px) and (pointer:coarse){
  body.aa-fullscreen .chart-sim-topbar,
  body.aa-fullscreen #aaApp.aa-terminal-active header,
  body.aa-fullscreen .trade-bar,
  body.aa-fullscreen #tradeBar,
  #aaApp.aa-terminal-active.aa-fullscreen .chart-sim-topbar,
  #aaApp.aa-terminal-active.aa-fullscreen .trade-bar,
  #aaApp.aa-terminal-active.aa-fullscreen #tradeBar{
    background:var(--panel-2, #f2f3f5) !important;
    border-top:1px solid var(--border, #c2c0b6) !important;
    box-shadow:0 -8px 20px -14px rgba(0,0,0,.35) !important;
  }
  /* pad the LOWEST lane so the controls clear the home indicator */
  body.aa-fullscreen .trade-bar,
  body.aa-fullscreen #tradeBar,
  #aaApp.aa-terminal-active.aa-fullscreen .trade-bar,
  #aaApp.aa-terminal-active.aa-fullscreen #tradeBar{
    padding-bottom:calc(7px + env(safe-area-inset-bottom, 0px)) !important;
  }
  /* if the tools lane (chart-sim-topbar) is itself the lowest bar, pad it too */
  body.aa-fullscreen #aaApp.aa-terminal-active .chart-sim-topbar{
    padding-bottom:calc(4px + env(safe-area-inset-bottom, 0px)) !important;
    min-height:calc(42px + env(safe-area-inset-bottom, 0px)) !important;
  }
}

/* ==========================================================================
   Theme: follow the Alien Algo app theme (html[data-theme]) instead of the OS
   colour scheme, using the Alien Algo brand palette (logo green accent). These
   data-theme rules outrank the OS-based defaults above, so the skin always
   matches whatever theme the user picked in the app.
   ========================================================================== */
html[data-theme="dark"] #aaMacroTerminal{
  /* v1379 — WARM DARK CHARCOAL: warm off-white text on warm charcoal surfaces (no blue/grey-black).
     AlienAlgo GREEN accent + functional green/red bull/bear are KEPT. */
  --bg:#262624; --bg-2:#1f1e1d; --panel:#30302e; --panel-2:#3a3a37;
  --border:#3d3d3a; --border-soft:#333330; --border-strong:#4a4a46;
  --text:#f5f4ef; --text-dim:#c2c0b6; --text-faint:#8f8d84;
  --accent:#00f0a3; --accent-dim:rgba(0,240,163,.14);
  --bull:#24f29d; --bull-dim:rgba(36,242,157,.13);
  --bear:#ff5b64; --bear-dim:rgba(255,91,100,.13);
  --neutral:#f5c451; --neutral-dim:rgba(245,196,81,.13);
  --chrome-bg:rgba(38,38,36,.92); --float-bg:rgba(48,48,46,.96);
  --shadow:rgba(0,0,0,.45); --glow-1:transparent; --glow-2:transparent;
}
html[data-theme="light"] #aaMacroTerminal{
  /* TradingView-white: clean white base, whisper-grey panels, thin light borders (blended). */
  --bg:#ffffff; --bg-2:#ffffff; --panel:#ffffff; --panel-2:#f7f8fa;
  --border:#e0e3eb; --border-soft:#eef0f4; --border-strong:#d1d4dc;
  --text:#131722; --text-dim:#51607a; --text-faint:#8a94a6;
  --accent:#0aa06b; --accent-dim:rgba(10,160,107,.12);
  --bull:#089981; --bull-dim:rgba(8,153,129,.12);
  --bear:#f23645; --bear-dim:rgba(242,54,69,.12);
  --neutral:#b5820a; --neutral-dim:rgba(181,130,10,.13);
  --chrome-bg:rgba(255,255,255,.94); --float-bg:rgba(255,255,255,.98);
  --shadow:rgba(60,72,96,.12); --glow-1:transparent; --glow-2:transparent;
}
/* Green accent buttons keep dark text for contrast in both themes. */
html[data-theme="light"] #aaMacroTerminal .rail-btn.active,
html[data-theme="dark"] #aaMacroTerminal .rail-btn.active{ color:#04120c; }

/* ---- Premium zoom controls on the chart page (a polish rule hides the app's zoom
   buttons; re-enable the floating −/+/⟳ box in skin mode, bottom-right, works in
   fullscreen too since it lives inside the chart canvas wrap). */
/* :not([hidden]) — only show when the app un-hides the box, i.e. when the current bar is
   scrolled off-screen (currentBarNeedsRecoveryControls). When the current bar is in view the
   app sets [hidden] and the controls disappear. */
#aaApp.aa-terminal-active #aaChartFloatControls:not([hidden]){
  display:flex !important; flex-direction:row; gap:5px;
  left:50%; right:auto; top:auto; bottom:12px; transform:translateX(-50%); z-index:14;
  padding:4px; border-radius:11px; border:1px solid var(--border);
  background:var(--float-bg); box-shadow:0 10px 28px var(--shadow); backdrop-filter:blur(9px);
}
#aaApp.aa-terminal-active #aaChartFloatControls button{
  width:28px; height:28px; display:flex; align-items:center; justify-content:center;
  border-radius:8px; border:1px solid var(--border); background:var(--panel-2);
  color:var(--text); font-weight:800; font-size:.9rem; line-height:1; cursor:pointer;
  transition:border-color .15s ease, color .15s ease, background .15s ease;
}
#aaApp.aa-terminal-active #aaChartFloatControls button:hover{ border-color:var(--accent); color:var(--accent); background:var(--panel); }
#aaApp.aa-terminal-active #aaChartFloatControls button:active{ transform:translateY(1px); }
/* Nudge it up in fullscreen so it clears the bottom pair/timeframe lane. */
#aaApp.aa-terminal-active.aa-fullscreen #aaChartFloatControls{ bottom:20px; }

/* Compact: shrink the chart zoom/refresh controls and center them at the bottom of the chart
   (near the AlienAlgoAI.com watermark) instead of a big column on the right. Refresh still fires
   the app's manual chart reload. */
@media (max-width:760px),(max-height:500px) and (pointer:coarse){
  #aaApp.aa-terminal-active #aaChartFloatControls:not([hidden]){
    flex-direction:row; gap:5px; left:50%; right:auto; top:auto; bottom:10px;
    transform:translateX(-50%); padding:4px; border-radius:11px;
  }
  #aaApp.aa-terminal-active #aaChartFloatControls button{ width:27px; height:27px; font-size:.85rem; border-radius:8px; }
  #aaApp.aa-terminal-active.aa-fullscreen #aaChartFloatControls:not([hidden]){ bottom:14px; }
}

/* ==========================================================================
   COMPACT (mobile) — full-screen premium. Remove the "frame card" chrome so
   every page is edge-to-edge like a native app; keep tasteful content padding.
   ========================================================================== */
@media (max-width:760px),(max-height:500px) and (pointer:coarse){
  #aaMacroTerminal .stage{ padding:0 !important; gap:0; }
  #aaMacroTerminal .app-frame{
    padding:0 !important; border:none !important; border-radius:0 !important;
    box-shadow:none !important; background:transparent !important;
  }
  #aaMacroTerminal .frame-scroll{ border:none !important; border-radius:0 !important; background:var(--bg); }
  #aaMacroTerminal .frame-scroll > main{ padding:14px 14px 22px; }
  #aaMacroTerminal #chartMain,
  #aaMacroTerminal #watchlistMain,
  #aaMacroTerminal #settingsMain{ padding:0 !important; }
  /* sticky headers span the full width now that side padding shrank */
  #aaMacroTerminal .news-topbar{ margin:-14px -14px 14px; padding:14px 14px 12px; }
  #aaMacroTerminal .category-head{ padding:12px 0 9px; }
  /* premium: respect the notch, keep the ticker flush to the top */
  #aaMacroTerminal .sticky-top{ background:var(--bg); padding-top:env(safe-area-inset-top, 0px); }
  #aaMacroTerminal .ticker{ border-radius:0; }
  /* the relocated Settings page shouldn't be width-capped on a phone */
  #aaMacroTerminal #settingsMain > .aa-panel-page{ max-width:none; }
}

/* Chart page: hide the scrolling headlines ticker on COMPACT only (the mobile chart needs the
   vertical space). On DESKTOP the headlines ticker stays visible on the chart page so users can
   read the scrolling headlines while charting. */
@media (max-width:760px),(max-height:500px) and (pointer:coarse){
  #aaMacroTerminal.view-chart .sticky-top{ display:none !important; }
}

/* ==========================================================================
   DESKTOP chart chrome (min-width:761px)
   - Nav rail expands as an OVERLAY on hover (no stage push) so the chart never
     resizes/janks while hovering the rail/sub-buttons — bars keep their positions.
   - Remove the OHLC trade-bar lane; Undo/Redo was moved up into the header lane by
     AAChartBridge, and AI Chat/Calendar/Settings lived in that bar and go with it.
   - Reveal + slim the News Bias label in the pair/timeframe (header) lane.
   ========================================================================== */
@media (min-width:761px) and (min-height:501px),(min-width:761px) and (pointer:fine){
  #aaMacroTerminal .nav-rail{ position:absolute; left:0; top:0; bottom:0; }
  #aaMacroTerminal .main-col{ margin-left:56px; }
  #aaApp.aa-terminal-active #chartHost > #tradeBar,
  #aaApp.aa-terminal-active #chartHost > .trade-bar{ display:none !important; }
  #aaApp.aa-terminal-active #chartHost > header .tv-newsbias{
    display:inline-flex !important; height:22px; padding:0 9px; margin-left:8px;
    font-size:10.5px; font-weight:800; max-width:none; overflow:visible;
    white-space:nowrap; cursor:pointer;
  }
  #aaApp.aa-terminal-active #chartHost > header .tv-newsbias .k{ margin-right:4px; }
}
/* Remove the Account/MT5 button from the chart header (account is in the Settings tab). */
#aaApp.aa-terminal-active .account-btn{ display:none !important; }

/* v1039 — GUEST SECURITY WALL. A signed-out visitor must NEVER see the app/chart (no bypassing the
   auth dialog to peek at the platform). We hide the whole app + terminal for guests and paint a
   branded backdrop; the auth <dialog> is a top-layer body sibling, so it still shows above this. */
body.aa-guest-locked{ background:#05060a !important; }
body.aa-guest-locked #aaApp,
body.aa-guest-locked #aaMacroTerminal{ visibility:hidden !important; pointer-events:none !important; }
@media (prefers-color-scheme: light){ body.aa-guest-locked{ background:#ffffff !important; } }
html[data-theme="light"] body.aa-guest-locked, body.aa-guest-locked[data-theme="light"]{ background:#ffffff !important; }

/* Brand logo in the nav rail — DESKTOP ONLY (never in the compact bottom tab bar). */
@media (min-width:761px) and (min-height:501px),(min-width:761px) and (pointer:fine){
  #aaMacroTerminal .rail-brand{ display:flex; align-items:center; justify-content:flex-start; }
  #aaMacroTerminal .mt-brand-logo{
    /* v1208 — the ORIGINAL Alien Algo logo (full green/grey alien head + ALIEN ALGO wordmark). object-fit:CONTAIN
       shows the WHOLE mark (never cropped into a mangled head) on a clean white tile, nudged left to sit flush
       with the nav icons below it (so it no longer looks cut off, and the chart reads full-width beside it). */
    width:40px; height:40px; border-radius:10px; object-fit:contain; display:block;
    image-rendering:auto; background:#fff; padding:1px;
    border:1px solid var(--border); margin-left:-2px;
  }
}
@media (max-width:760px),(max-height:500px) and (pointer:coarse){ #aaMacroTerminal .rail-brand{ display:none !important; } }

/* v1030 — GLOBAL CREDIT LOCK. Out of daily Alien credits ⇒ chart + drawings only. The AI-board nav
   tabs (Macro Bias, News) show a lock badge and dim; they still tap (to surface the upgrade nudge)
   but bounce back to the chart. Chart / Watchlist / Settings stay fully usable. */
#aaMacroTerminal.mt-credit-locked #viewAiBtn,
#aaMacroTerminal.mt-credit-locked #viewNewsBtn{ opacity:.42; position:relative; }
#aaMacroTerminal.mt-credit-locked #viewAiBtn .rail-ico::after,
#aaMacroTerminal.mt-credit-locked #viewNewsBtn .rail-ico::after{
  content:'🔒'; position:absolute; top:-4px; right:-4px; font-size:10px; line-height:1;
  filter:drop-shadow(0 1px 1px rgba(0,0,0,.5));
}

/* Favorites bar collapse — animated (max-width/opacity, since display:none can't transition).
   The ⋮ grip stays and remains draggable when collapsed. */
#aaChartFavoritesBar .aa-chart-fav-rows{
  overflow:hidden; transition:max-width .22s cubic-bezier(.4,0,.2,1), opacity .18s ease;
  max-width:680px; opacity:1;
}
#aaChartFavoritesBar.aa-fav-collapsed .aa-chart-fav-rows{ max-width:0; opacity:0; }
#aaChartFavoritesBar{ transition:padding .2s ease; }
#aaChartFavoritesBar.aa-fav-collapsed{ padding:2px !important; }
#aaChartFavoritesBar .aa-chart-fav-drag{ cursor:pointer; touch-action:none; }


/* ============================================================================
   v1049 — AI CHAT: a completely new, clean chat skin. Scoped to #aiMain so the
   app's side-panel AI is untouched. Fills the frame, messages scroll INTERNALLY
   (desktop + compact), composer is pinned to the bottom. All old-skin chrome
   (avatars, timestamps, reply/copy clutter) is stripped for a modern surface.
   ============================================================================ */
/* When the AI tab is open, let it own the whole frame (no outer page scroll). */
#aaMacroTerminal.view-ai .app-frame{ padding:0; }
#aaMacroTerminal.view-ai .frame-scroll{ overflow:hidden; }

/* v1058 — palette now inherits the PLATFORM theme variables (--bg/--surface/--text/--line…) so the AI
   chat matches the rest of the app in both light and dark, instead of its own off-white/grey. The
   signature Alien green stays as the accent for brand + premium feel. Glass is derived from the live
   surface colour so the frosted composer sits naturally on whatever theme is active. */
#aiMain{
  --ai-bg:var(--bg); --ai-surface:var(--surface); --ai-text:var(--text); --ai-muted:var(--text-3);
  --ai-bubble:var(--surface-2); --ai-line:var(--line); --ai-line-2:var(--line-2);
  /* v1076 — code card surfaces derived from the theme: a subtle tint under/behind the code so it reads as
     a code canvas in BOTH light and dark, without hardcoding a GitHub-dark palette. */
  --ai-code-bg:color-mix(in srgb, var(--surface) 88%, var(--text) 12%);
  --ai-code-head:color-mix(in srgb, var(--surface) 80%, var(--text) 20%);
  --ai-accent:#0fb488; --ai-accent-2:#12c99a; --ai-accent-ink:#1f1e1d;
  --ai-shadow:none;
  --ai-glass:color-mix(in srgb, var(--surface) 62%, transparent); --ai-glass-border:color-mix(in srgb, var(--line-2) 72%, transparent); --ai-glass-hi:transparent;
  height:100% !important; padding:0 !important; margin:0 !important; overflow:hidden !important;
  background:var(--ai-bg) !important; min-height:0;
}
html[data-theme="dark"] #aiMain{
  --ai-accent:#00f0a3; --ai-accent-2:#3bffc0; --ai-accent-ink:#04231a;
  --ai-shadow:none;
  --ai-glass:color-mix(in srgb, var(--surface) 48%, transparent); --ai-glass-border:rgba(255,255,255,.16); --ai-glass-hi:transparent;
}
#aiMain:not([hidden]){ display:block !important; }
/* The relocated AI page becomes a full-height flex column: scroll area + composer. */
#aiMain .aa-panel-page[data-panel-page="ai"]{
  position:relative !important; height:100% !important; width:100% !important;
  display:flex !important; flex-direction:column !important; gap:0 !important;
  padding:0 !important; margin:0 !important; overflow:hidden !important;
  background:var(--ai-bg) !important; color:var(--ai-text) !important;
  font-family:ui-sans-serif,-apple-system,"Segoe UI",Inter,system-ui,sans-serif !important;
}
/* ---- Greeting (empty state) ---- */
#aiMain .aa-ai-greeting{
  flex:1 1 auto !important; display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:20px; padding:28px 20px; text-align:center; min-height:0;
}
#aiMain .aa-ai-orb{
  width:52px !important; height:52px !important; border-radius:50% !important;
  background:radial-gradient(circle at 34% 30%, #fff, var(--ai-accent) 78%) !important;
  box-shadow:0 8px 26px color-mix(in srgb, var(--ai-accent) 45%, transparent) !important; animation:none !important;
}
#aiMain .aa-ai-greet-title{
  margin:0 !important; font-size:27px !important; line-height:1.25 !important; font-weight:600 !important;
  letter-spacing:-.02em !important; color:var(--ai-text) !important; max-width:16ch;
}
#aiMain .aa-ai-chips{ display:flex; flex-wrap:wrap; gap:9px; justify-content:center; max-width:560px; }
#aiMain .aa-ai-chip{
  border:1px solid var(--ai-line-2) !important; background:var(--ai-surface) !important;
  color:var(--ai-text) !important; border-radius:999px !important; padding:9px 16px !important;
  font-size:13.5px !important; font-weight:500 !important; cursor:pointer !important;
  box-shadow:0 1px 2px rgba(28,24,18,.05) !important; transition:border-color .15s,color .15s !important;
}
#aiMain .aa-ai-chip:hover{ border-color:var(--ai-accent) !important; color:var(--ai-accent) !important; }
/* ---- Conversation (the internal scroll region) ---- */
#aiMain .aa-ai-messages{
  flex:1 1 auto !important; min-height:0 !important; height:auto !important;
  overflow-y:auto !important; overflow-x:hidden !important; -webkit-overflow-scrolling:touch !important;
  display:flex !important; flex-direction:column !important; gap:18px !important;
  width:100% !important; max-width:820px !important; margin:0 auto !important;
  padding:26px 20px 90px !important; scroll-behavior:smooth;   /* bottom space so bubbles scroll UNDER the glassy composer */
}
#aiMain .aa-msg-row{ width:100% !important; align-items:flex-start !important; gap:0 !important; }
#aiMain .aa-msg-row.user{ justify-content:flex-end !important; }
/* New skin: NO avatars, NO timestamps. */
#aiMain .aa-msg-avatar{ display:none !important; }
#aiMain .aa-msg-meta{ display:none !important; }
#aiMain .aa-msg-stack{ max-width:100% !important; gap:5px !important; }
#aiMain .aa-msg-row.user .aa-msg-stack{ max-width:82% !important; justify-items:end !important; }
#aiMain .aa-msg{
  max-width:100% !important; font-size:15.5px !important; line-height:1.68 !important;
  box-shadow:none !important; color:var(--ai-text) !important;
}
/* Assistant: plain text, full width, no bubble. */
#aiMain .aa-msg.bot{ background:transparent !important; border:0 !important; border-radius:0 !important; padding:2px 0 !important; }
/* User: soft rounded bubble. */
#aiMain .aa-msg.user{
  background:var(--ai-bubble) !important; border:1px solid var(--ai-line) !important;
  border-radius:18px !important; padding:11px 15px !important;
}
/* v1051 — rich text: clickable links, bold/italic, inline code, and the setup chart screenshot. */
#aiMain .aa-msg-text a{ color:var(--ai-accent) !important; text-decoration:underline !important; text-underline-offset:2px; word-break:break-word; }
#aiMain .aa-msg-text strong{ font-weight:700 !important; }
#aiMain .aa-msg-text em{ font-style:italic !important; }
#aiMain .aa-msg-text code{ background:var(--ai-bubble) !important; padding:1px 5px !important; border-radius:5px !important; font-size:.9em !important; font-family:ui-monospace,SFMono-Regular,Menlo,monospace !important; }
/* v1076 — clean code card, THEMED to the platform (uses the app's own surface/line/text vars so it
   matches light AND dark). A subtle tinted code surface keeps it distinct from the chat bubble. */
#aiMain .aa-code-card{ margin:12px 0 !important; border:1px solid var(--ai-line) !important; border-radius:12px !important; overflow:hidden !important; background:var(--ai-code-bg, var(--ai-bubble)) !important; max-width:100% !important; }
#aiMain .aa-code-head{ display:flex !important; align-items:center !important; justify-content:space-between !important; padding:7px 12px !important; background:var(--ai-code-head, var(--ai-surface)) !important; border-bottom:1px solid var(--ai-line) !important; }
#aiMain .aa-code-lang{ font-size:11.5px !important; font-weight:700 !important; letter-spacing:.04em !important; text-transform:uppercase !important; color:var(--ai-muted) !important; font-family:ui-monospace,SFMono-Regular,Menlo,monospace !important; }
#aiMain .aa-code-copy{ display:inline-flex !important; align-items:center !important; gap:5px !important; font-size:12px !important; font-weight:600 !important; color:var(--ai-text) !important; background:transparent !important; border:1px solid var(--ai-line) !important; border-radius:7px !important; padding:3px 10px !important; cursor:pointer !important; transition:background .12s ease, color .12s ease, border-color .12s ease !important; }
#aiMain .aa-code-copy:hover{ background:var(--ai-line) !important; }
#aiMain .aa-code-copy.copied{ color:#22a55a !important; border-color:#22a55a !important; }
#aiMain .aa-code-body{ margin:0 !important; padding:14px 14px !important; overflow-x:auto !important; background:var(--ai-code-bg, var(--ai-bubble)) !important; white-space:pre !important; }
#aiMain .aa-code-body code{ background:transparent !important; padding:0 !important; border-radius:0 !important; font-size:13px !important; line-height:1.6 !important; color:var(--ai-text) !important; font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace !important; white-space:pre !important; }
/* v1078 — HTML card: Preview (sandboxed iframe) / Code toggle + Download. */
#aiMain .aa-html-actions{ display:flex !important; align-items:center !important; gap:6px !important; }
#aiMain .aa-html-tab, #aiMain .aa-html-dl{ font-size:12px !important; font-weight:600 !important; color:var(--ai-text) !important; background:transparent !important; border:1px solid var(--ai-line) !important; border-radius:7px !important; padding:3px 10px !important; cursor:pointer !important; }
#aiMain .aa-html-tab.on{ background:var(--ai-accent) !important; color:var(--ai-accent-ink,#1f1e1d) !important; border-color:var(--ai-accent) !important; }
#aiMain .aa-html-tab:hover, #aiMain .aa-html-dl:hover{ background:var(--ai-line) !important; }
#aiMain .aa-html-open{ font-size:12px !important; font-weight:700 !important; color:var(--ai-accent-ink,#1f1e1d) !important; background:var(--ai-accent) !important; border:1px solid var(--ai-accent) !important; border-radius:7px !important; padding:4px 12px !important; cursor:pointer !important; }
#aiMain .aa-html-open:hover{ filter:brightness(1.05) !important; }
#aiMain .aa-html-preview{ background:#fff !important; }
#aiMain .aa-html-frame{ display:block !important; width:100% !important; height:520px !important; border:0 !important; background:#fff !important; }
#aiMain .aa-html-card .aa-code-body{ border-top:1px solid var(--ai-line) !important; }
@media (max-width:640px){ #aiMain .aa-html-frame{ height:360px !important; } }
/* v1079b — SPLIT PREVIEW PANE (desktop) / overlay (mobile) + draggable divider + fullscreen. */
#aiMain{ --aa-preview-w:50%; }
/* v1092 — must respect the [hidden] attribute: when the user switches to another page (e.g. Chart) while
   the preview split is open, setView() hides #aiMain — without :not([hidden]) the !important display kept
   the AI page (and its preview) painted on top of the chart, so the chart never appeared. */
#aiMain.aa-has-preview:not([hidden]){ display:flex !important; flex-direction:row !important; }
#aiMain.aa-has-preview .aa-panel-page[data-panel-page="ai"]{ flex:1 1 0 !important; width:auto !important; min-width:0 !important; }
.aa-preview-split{ display:none !important; }
#aiMain.aa-has-preview .aa-preview-split{ display:block !important; flex:0 0 7px !important; cursor:col-resize !important; background:var(--ai-line) !important; align-self:stretch !important; }
#aiMain.aa-has-preview .aa-preview-split:hover{ background:var(--ai-accent) !important; }
.aa-preview-pane{ display:none !important; }
#aiMain.aa-has-preview .aa-preview-pane.open{ display:flex !important; flex-direction:column !important; flex:0 0 var(--aa-preview-w) !important; min-width:0 !important; background:var(--ai-surface) !important; }
.aa-preview-pane.open.mobile-overlay{ display:flex !important; flex-direction:column !important; position:absolute !important; inset:0 !important; z-index:60 !important; background:var(--ai-bg) !important; }
.aa-preview-pane.fullscreen{ display:flex !important; flex-direction:column !important; position:fixed !important; inset:0 !important; z-index:2147483000 !important; flex:none !important; width:100vw !important; height:100vh !important; background:var(--ai-bg) !important; }
.aa-preview-head{ display:flex !important; align-items:center !important; gap:10px !important; padding:9px 12px !important; border-bottom:1px solid var(--ai-line) !important; background:var(--ai-code-head, var(--ai-surface)) !important; flex:0 0 auto !important; }
.aa-preview-title{ font-size:12.5px !important; font-weight:700 !important; color:var(--ai-text) !important; }
.aa-preview-tabs{ display:flex !important; gap:6px !important; margin-left:4px !important; }
.aa-preview-tab{ font-size:12px !important; font-weight:600 !important; color:var(--ai-text) !important; background:transparent !important; border:1px solid var(--ai-line) !important; border-radius:7px !important; padding:3px 10px !important; cursor:pointer !important; }
.aa-preview-tab.on{ background:var(--ai-accent) !important; color:var(--ai-accent-ink,#1f1e1d) !important; border-color:var(--ai-accent) !important; }
.aa-preview-tools{ margin-left:auto !important; display:flex !important; gap:6px !important; }
.aa-preview-btn{ width:30px !important; height:30px !important; display:inline-flex !important; align-items:center !important; justify-content:center !important; font-size:14px !important; color:var(--ai-text) !important; background:transparent !important; border:1px solid var(--ai-line) !important; border-radius:8px !important; cursor:pointer !important; }
.aa-preview-btn:hover{ background:var(--ai-line) !important; }
.aa-preview-body{ flex:1 1 auto !important; min-height:0 !important; position:relative !important; background:#fff !important; }
.aa-preview-frame{ display:block !important; width:100% !important; height:100% !important; border:0 !important; background:#fff !important; }
.aa-preview-code{ margin:0 !important; height:100% !important; overflow:auto !important; padding:14px !important; background:var(--ai-code-bg, var(--ai-bubble)) !important; white-space:pre !important; }
/* v1081 — data-view drives Preview vs Code (the `hidden` attr was overridden by display:block !important). */
.aa-preview-pane[data-view="preview"] .aa-preview-code{ display:none !important; }
.aa-preview-pane[data-view="code"] .aa-preview-frame{ display:none !important; }
/* v1094 — OPEN / CLOSE ANIMATIONS for the preview pane, in both split (desktop) and overlay
   (compact) modes. Enter plays when .open is added (display flips none→flex); exit plays via .closing,
   which the close handler adds ~200ms before it actually tears the pane down. */
@keyframes aaPvIn{ from{ opacity:0; transform:translateX(26px) scale(.985); } to{ opacity:1; transform:none; } }
@keyframes aaPvOut{ from{ opacity:1; transform:none; } to{ opacity:0; transform:translateX(26px) scale(.985); } }
@keyframes aaPvOverlayIn{ from{ opacity:0; transform:translateY(30px); } to{ opacity:1; transform:none; } }
@keyframes aaPvOverlayOut{ from{ opacity:1; transform:none; } to{ opacity:0; transform:translateY(30px); } }
#aiMain.aa-has-preview .aa-preview-pane.open{ animation:aaPvIn .28s cubic-bezier(.2,.85,.25,1) both; }
.aa-preview-pane.open.mobile-overlay{ animation:aaPvOverlayIn .3s cubic-bezier(.2,.85,.25,1) both; }
.aa-preview-pane.fullscreen{ animation:aaPvOverlayIn .26s cubic-bezier(.2,.85,.25,1) both; }
.aa-preview-pane.closing{ animation:aaPvOut .2s ease forwards !important; }
.aa-preview-pane.closing.mobile-overlay,.aa-preview-pane.closing.fullscreen{ animation:aaPvOverlayOut .2s ease forwards !important; }
@media (prefers-reduced-motion: reduce){ .aa-preview-pane.open,.aa-preview-pane.closing{ animation-duration:.01ms !important; } }
.aa-preview-split{ transition:background .15s ease !important; }
.aa-preview-pane[data-view="code"] .aa-preview-code{ display:block !important; }
.aa-preview-code code{ font-size:12.5px !important; line-height:1.6 !important; color:var(--ai-text) !important; font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace !important; white-space:pre !important; }
/* v1074 — premium compact image: small, clean, no heavy frame. Tap to open full-screen. */
#aiMain .aa-msg-chart{ display:block !important; width:auto !important; max-width:170px !important; max-height:170px !important; object-fit:cover !important; margin:0 !important; border-radius:14px !important; border:0 !important; box-shadow:0 2px 10px rgba(0,0,0,.18) !important; cursor:zoom-in !important; -webkit-user-select:none !important; user-select:none !important; }
/* Media-only bubbles (image and/or file, no text) drop ALL bubble chrome so the media sits clean — no
   huge bezel/frame around the picture. */
#aiMain .aa-msg.user.aa-msg-media{ background:transparent !important; border:0 !important; padding:0 !important; border-radius:14px !important; display:flex !important; flex-direction:column !important; gap:8px !important; align-items:flex-end !important; }
/* File chip — a clean tappable card showing the uploaded file (opens on click, like an image). */
#aiMain .aa-file-chip{ display:flex !important; align-items:center !important; gap:10px !important; max-width:260px !important; padding:10px 13px !important; border-radius:14px !important; background:var(--ai-bubble) !important; border:1px solid var(--ai-line) !important; cursor:pointer !important; text-decoration:none !important; color:var(--ai-text) !important; margin-top:8px !important; transition:border-color .15s ease, transform .08s ease; }
#aiMain .aa-file-chip:active{ transform:scale(.98) !important; }
#aiMain .aa-file-chip:hover{ border-color:var(--ai-accent) !important; }
#aiMain .aa-file-chip .aa-file-ico{ font-size:22px !important; line-height:1 !important; flex:0 0 auto !important; }
#aiMain .aa-file-chip .aa-file-meta{ min-width:0 !important; display:flex !important; flex-direction:column !important; }
#aiMain .aa-file-chip .aa-file-name{ font-size:13.5px !important; font-weight:600 !important; white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important; max-width:200px !important; }
#aiMain .aa-file-chip .aa-file-sub{ font-size:11.5px !important; opacity:.6 !important; }
/* Full-screen image lightbox (opened by tapping a chat image). */
.aa-img-lightbox{ position:fixed !important; inset:0 !important; z-index:2147483000 !important; display:flex !important; align-items:center !important; justify-content:center !important; background:rgba(0,0,0,.9) !important; padding:24px !important; cursor:zoom-out !important; opacity:0; transition:opacity .16s ease; }
.aa-img-lightbox.open{ opacity:1; }
.aa-img-lightbox img{ max-width:100% !important; max-height:100% !important; width:auto !important; height:auto !important; border-radius:10px !important; box-shadow:0 12px 48px rgba(0,0,0,.6) !important; }
.aa-img-lightbox .aa-img-lightbox-close{ position:absolute !important; top:16px !important; right:20px !important; width:40px !important; height:40px !important; border-radius:50% !important; border:none !important; background:rgba(255,255,255,.14) !important; color:#fff !important; font-size:22px !important; line-height:1 !important; cursor:pointer !important; }
.aa-img-lightbox .aa-img-lightbox-close:hover{ background:rgba(255,255,255,.26) !important; }
/* Reply/copy: subtle, small, understated (kept but decluttered). */
#aiMain .aa-msg-actions{ margin-top:3px !important; opacity:.55 !important; }
#aiMain .aa-msg-actions:hover{ opacity:1 !important; }
#aiMain .aa-msg-actions button{ color:var(--ai-muted) !important; font-size:10px !important; }
#aiMain .aa-msg-actions button:hover{ color:var(--ai-accent) !important; }
#aiMain .aa-msg-reply{ border-left-color:var(--ai-accent) !important; background:color-mix(in srgb, var(--ai-accent) 8%, transparent) !important; }
#aiMain .aa-msg-reply b{ color:var(--ai-accent) !important; }
/* Typing / loading dots keep the accent. */
#aiMain .aa-ai-typing i, #aiMain .aa-typing-dot{ background:var(--ai-accent) !important; }
/* ---- Composer (pinned to the bottom) ---- */
/* 2-ID selector (#aaMacroTerminal #aiMain) so the RESTING composer stays a transparent absolute overlay
   even on compact, where polish.css `#aaApp .aa-panel-page[data-panel-page="ai"] .aa-ai-form` forces
   position:static + background:var(--bg) (opaque). Keeping it absolute + transparent is what lets the
   message bubbles scroll UNDER the frosted shell — the reflective look, on by default (not just when the
   keyboard is up). */
#aaMacroTerminal #aiMain .aa-ai-form,
#aiMain .aa-ai-form{
  position:absolute !important; left:0 !important; right:0 !important; top:auto !important; bottom:0 !important; z-index:5 !important;
  width:100% !important; max-width:820px !important; margin:0 auto !important;
  padding:8px 20px 8px !important;   /* sits just above the bottom tab bar — no blank gap */
  background:transparent !important;   /* the shell itself is the frosted glass; bubbles blur behind it */
  pointer-events:none !important;   /* let taps fall through the transparent padding to the messages */
}
#aiMain .aa-ai-form > *{ pointer-events:auto !important; }
#aiMain .aa-ai-usage-chip{
  max-width:820px !important; margin:0 auto 6px !important; color:var(--ai-muted) !important;
  font-size:11.5px !important; font-weight:600 !important; text-align:center !important;
  background:transparent !important; border:0 !important;
}
/* v1051 — glassy / frosted composer: semi-transparent + backdrop blur so chat bubbles scrolling behind
   it are visible but softly blurred (premium, fluid feel). Doubled ID selector (#aaMacroTerminal #aiMain)
   so it also beats the app's opaque compact-dark composer rule — glass shows on mobile too. */
#aaMacroTerminal #aiMain .aa-ai-input-shell,
body.aa-ai-touch-keyboard #aaMacroTerminal #aiMain .aa-ai-input-shell,
#aiMain .aa-ai-input-shell{
  grid-template-columns:42px minmax(0,1fr) 42px !important; align-items:end !important; gap:8px !important;
  border:1px solid var(--ai-glass-border) !important; border-radius:26px !important;
  /* reflective glass: a soft top-light sheen layered over the translucent tint, with a strong blur so the
     message bubbles read through it softly. Kept translucent on purpose so the chat is visible behind. */
  background:var(--ai-glass) !important;
  padding:8px 9px !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:blur(16px) saturate(1.15) !important; backdrop-filter:blur(16px) saturate(1.15) !important;
}
#aiMain .aa-ai-input-shell:focus-within{ border-color:var(--ai-accent) !important; }
#aiMain .aa-ai-form-v512 textarea, #aiMain #aaAiInput{
  min-height:46px !important; max-height:210px !important; border:0 !important; background:transparent !important;
  box-shadow:none !important; padding:11px 6px !important; color:var(--ai-text) !important;
  font-size:15.5px !important; line-height:1.5 !important; resize:none !important; outline:0 !important;
}
#aiMain #aaAiInput::placeholder{ color:var(--ai-muted) !important; }
#aiMain .aa-ai-icon-btn{
  width:40px !important; height:40px !important; border-radius:50% !important;
  border:1px solid var(--ai-line-2) !important; background:transparent !important;
  color:var(--ai-muted) !important; font-size:18px !important; align-self:center !important;
}
#aiMain .aa-ai-icon-btn.aa-send-icon{
  border:0 !important; color:var(--ai-accent-ink) !important;
  background:linear-gradient(160deg, var(--ai-accent-2), var(--ai-accent)) !important;
  box-shadow:0 4px 14px color-mix(in srgb, var(--ai-accent) 40%, transparent) !important;
}
#aiMain .aa-ai-icon-btn.aa-send-icon:disabled{ opacity:.4 !important; box-shadow:none !important; }
/* v1058 — the send button becomes a STOP button while a reply streams. */
#aiMain .aa-ai-icon-btn.aa-ai-stop-icon{
  border:0 !important; color:var(--ai-accent-ink) !important;
  background:linear-gradient(160deg, var(--ai-accent-2), var(--ai-accent)) !important;
  box-shadow:0 4px 14px color-mix(in srgb, var(--ai-accent) 40%, transparent) !important;
}
/* v1058 — animated "thinking" indicator: a softly pulsing label + three bouncing accent dots, shown
   in place of the frozen "Thinking…" text while the AI works. */
#aiMain .aa-ai-thinking{ display:flex !important; align-items:center !important; gap:10px !important; padding:2px 0 !important; }
#aiMain .aa-ai-thinking-label{
  font-size:15px !important; font-weight:500 !important; color:var(--ai-muted) !important;
  background:linear-gradient(90deg, var(--ai-muted) 0%, var(--ai-text) 50%, var(--ai-muted) 100%) !important;
  background-size:200% 100% !important; -webkit-background-clip:text !important; background-clip:text !important;
  -webkit-text-fill-color:transparent !important; animation:aaThinkShimmer 1.7s ease-in-out infinite !important;
}
#aiMain .aa-ai-thinking-dots{ display:inline-flex !important; gap:4px !important; }
#aiMain .aa-ai-thinking-dots i{
  width:6px !important; height:6px !important; border-radius:50% !important; background:var(--ai-accent) !important;
  display:inline-block !important; animation:aaThinkBounce 1.2s ease-in-out infinite !important;
}
#aiMain .aa-ai-thinking-dots i:nth-child(2){ animation-delay:.18s !important; }
#aiMain .aa-ai-thinking-dots i:nth-child(3){ animation-delay:.36s !important; }
@keyframes aaThinkShimmer{ 0%,100%{ background-position:200% 0; } 50%{ background-position:0 0; } }
@keyframes aaThinkBounce{ 0%,60%,100%{ transform:translateY(0); opacity:.45; } 30%{ transform:translateY(-5px); opacity:1; } }
@media (prefers-reduced-motion:reduce){
  #aiMain .aa-ai-thinking-label, #aiMain .aa-ai-thinking-dots i{ animation:none !important; }
  #aiMain .aa-ai-thinking-label{ -webkit-text-fill-color:var(--ai-muted) !important; }
}
/* v1078 — live "what's happening" thinking panel: a small card with a header spinner and a checklist of
   the real pipeline steps (reading files, OCR, routing to the code model, writing code, composing…). */
#aiMain .aa-ai-think{ display:block !important; width:100% !important; max-width:460px !important; margin:4px 0 !important; padding:15px 17px !important; border:1px solid var(--ai-line) !important; border-radius:16px !important; background:var(--ai-bubble) !important; box-shadow:0 2px 12px rgba(0,0,0,.06) !important; }
#aiMain .aa-ai-think-head{ display:flex !important; align-items:center !important; gap:9px !important; margin-bottom:13px !important; }
#aiMain .aa-ai-think-spin{ width:15px !important; height:15px !important; border-radius:50% !important; border:2px solid var(--ai-line-2) !important; border-top-color:var(--ai-accent) !important; animation:aaThinkSpin .7s linear infinite !important; flex:0 0 auto !important; }
#aiMain .aa-ai-think-title{ font-size:13.5px !important; font-weight:700 !important; letter-spacing:.01em !important; color:var(--ai-text) !important; background:linear-gradient(90deg,var(--ai-muted),var(--ai-text),var(--ai-muted)) !important; background-size:200% 100% !important; -webkit-background-clip:text !important; background-clip:text !important; -webkit-text-fill-color:transparent !important; animation:aaThinkShimmer 2s linear infinite !important; }
#aiMain .aa-ai-think-steps{ display:flex !important; flex-direction:column !important; gap:9px !important; }
#aiMain .aa-ai-think-step{ display:flex !important; align-items:center !important; gap:11px !important; font-size:13.5px !important; line-height:1.4 !important; }
#aiMain .aa-ai-think-ico{ width:15px !important; height:15px !important; flex:0 0 auto !important; border-radius:50% !important; border:1.6px solid var(--ai-line-2) !important; position:relative !important; }
#aiMain .aa-ai-think-step.done .aa-ai-think-ico{ background:var(--ai-accent) !important; border-color:var(--ai-accent) !important; }
#aiMain .aa-ai-think-step.done .aa-ai-think-ico::after{ content:"" !important; position:absolute !important; left:4px !important; top:1px !important; width:3.5px !important; height:7px !important; border:solid var(--ai-accent-ink,#1f1e1d) !important; border-width:0 1.6px 1.6px 0 !important; transform:rotate(45deg) !important; }
#aiMain .aa-ai-think-step.active .aa-ai-think-ico{ border-color:var(--ai-accent) !important; border-top-color:transparent !important; animation:aaThinkSpin .7s linear infinite !important; }
#aiMain .aa-ai-think-step .aa-ai-think-txt{ color:var(--ai-muted) !important; }
#aiMain .aa-ai-think-step.active .aa-ai-think-txt{ color:var(--ai-text) !important; font-weight:600 !important; }
#aiMain .aa-ai-think-step.done .aa-ai-think-txt{ color:var(--ai-muted) !important; }
@keyframes aaThinkSpin{ to{ transform:rotate(360deg); } }
/* v1078 — drag-and-drop overlay for the AI chat (desktop + compact). */
#aiMain{ position:relative !important; }
#aiMain .aa-ai-dropzone{ position:absolute !important; inset:0 !important; z-index:40 !important; display:flex !important; align-items:center !important; justify-content:center !important; background:color-mix(in srgb, var(--ai-bg) 78%, transparent) !important; backdrop-filter:blur(2px) !important; -webkit-backdrop-filter:blur(2px) !important; pointer-events:none !important; }
#aiMain .aa-ai-dropzone-inner{ display:flex !important; flex-direction:column !important; align-items:center !important; gap:6px !important; padding:26px 34px !important; border:2px dashed var(--ai-accent) !important; border-radius:18px !important; background:var(--ai-bubble) !important; color:var(--ai-text) !important; box-shadow:0 12px 40px rgba(0,0,0,.25) !important; }
#aiMain .aa-ai-dropzone-ico{ font-size:30px !important; color:var(--ai-accent) !important; line-height:1 !important; }
#aiMain .aa-ai-dropzone-inner b{ font-size:15px !important; font-weight:700 !important; }
#aiMain .aa-ai-dropzone-inner span{ font-size:12.5px !important; color:var(--ai-muted) !important; }
@media (prefers-reduced-motion:reduce){
  #aiMain .aa-ai-think-spin, #aiMain .aa-ai-think-step.active .aa-ai-think-ico{ animation:none !important; }
  #aiMain .aa-ai-think-title{ animation:none !important; -webkit-text-fill-color:var(--ai-text) !important; }
}
/* v1058 — "jump to latest" pill: hidden until the user scrolls up, floats just above the composer. */
#aiMain .aa-ai-jump-latest{
  position:absolute !important; left:50% !important; bottom:86px !important; transform:translateX(-50%) translateY(8px) !important;
  width:38px !important; height:38px !important; border-radius:50% !important; z-index:6 !important;
  display:flex !important; align-items:center !important; justify-content:center !important;
  border:1px solid var(--ai-glass-border) !important; background:var(--ai-surface) !important; color:var(--ai-text) !important;
  box-shadow:0 6px 20px rgba(0,0,0,.22) !important; cursor:pointer !important;
  opacity:0 !important; pointer-events:none !important; transition:opacity .18s ease, transform .18s ease !important;
}
#aiMain .aa-ai-jump-latest.show{ opacity:1 !important; pointer-events:auto !important; transform:translateX(-50%) translateY(0) !important; }
#aiMain .aa-ai-jump-latest svg{ width:18px !important; height:18px !important; }
/* v1061 — attached-image thumbnail shown in the composer so the user sees the image DID attach. */
#aiMain .aa-ai-attach-preview{ display:flex !important; align-items:center !important; flex-wrap:wrap !important; gap:10px !important; padding:0 4px 8px !important; }
/* v1074 — pending FILE attachment row (before send). */
#aiMain .aa-ai-attach-file{ position:relative !important; display:flex !important; align-items:center !important; gap:8px !important; padding:8px 12px 8px 10px !important; border-radius:12px !important; background:var(--ai-bubble) !important; border:1px solid var(--ai-line-2) !important; max-width:220px !important; }
#aiMain .aa-ai-attach-file .aa-file-ico{ font-size:20px !important; line-height:1 !important; }
#aiMain .aa-ai-attach-fmeta{ display:flex !important; flex-direction:column !important; min-width:0 !important; }
#aiMain .aa-ai-attach-fname{ font-size:12.5px !important; font-weight:600 !important; white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important; max-width:150px !important; }
#aiMain .aa-ai-attach-fsub{ font-size:11px !important; opacity:.6 !important; }
#aiMain .aa-ai-attach-file button{ position:absolute !important; top:-7px !important; right:-7px !important; width:22px !important; height:22px !important; border-radius:50% !important; border:2px solid var(--ai-surface) !important; background:#e5484d !important; color:#fff !important; font-size:14px !important; line-height:1 !important; cursor:pointer !important; display:flex !important; align-items:center !important; justify-content:center !important; padding:0 !important; }
#aiMain .aa-ai-attach-thumb{ position:relative !important; flex:0 0 auto !important; }
#aiMain .aa-ai-attach-thumb img{ width:54px !important; height:54px !important; object-fit:cover !important; border-radius:12px !important; border:1px solid var(--ai-line-2) !important; display:block !important; }
#aiMain .aa-ai-attach-thumb button{
  position:absolute !important; top:-7px !important; right:-7px !important; width:22px !important; height:22px !important;
  border-radius:50% !important; border:2px solid var(--ai-surface) !important; background:#e5484d !important; color:#fff !important;
  font-size:14px !important; line-height:1 !important; cursor:pointer !important; display:flex !important; align-items:center !important; justify-content:center !important; padding:0 !important;
}
#aiMain .aa-ai-attach-cap{ font-size:12.5px !important; font-weight:600 !important; color:var(--ai-muted) !important; }
/* Floating New-chat / menu controls — top corners, subtle. */
#aiMain .aa-ai-float-btn{
  position:absolute !important; top:12px !important; z-index:6 !important;
  width:38px !important; height:38px !important; border-radius:50% !important;
  border:1px solid var(--ai-line-2) !important; background:var(--ai-surface) !important;
  color:var(--ai-text) !important; box-shadow:0 2px 10px rgba(28,24,18,.10) !important;
  display:inline-flex !important; align-items:center !important; justify-content:center !important;
}
#aiMain .aa-ai-float-new{ right:58px !important; }
#aiMain .aa-ai-float-menu{ right:14px !important; }
#aiMain .aa-ai-float-btn svg{ width:18px; height:18px; }
/* Chat-history drawer. */
#aiMain .aa-ai-drawer{ background:var(--ai-surface) !important; border-right:1px solid var(--ai-line) !important; color:var(--ai-text) !important; }
#aiMain .aa-ai-drawer-head, #aiMain .aa-ai-drawer-label{ color:var(--ai-muted) !important; }
#aiMain .aa-ai-drawer-act{ color:var(--ai-text) !important; }
#aiMain .aa-reply-preview{ border-color:var(--ai-line-2) !important; background:var(--ai-surface) !important; }
@media (max-width:760px),(max-height:500px) and (pointer:coarse){
  #aiMain .aa-ai-messages{ padding:16px 13px 88px !important; gap:15px !important; max-width:100% !important; }
  #aiMain .aa-ai-form{ max-width:100% !important; padding:6px 12px 6px !important; }
  #aiMain .aa-ai-greet-title{ font-size:23px !important; }
  #aiMain .aa-ai-orb{ width:46px !important; height:46px !important; }
}
/* v1049 — compact: hide the headline ticker on the AI Chat page (distracting there). */
@media (max-width:760px),(max-height:500px) and (pointer:coarse){
  #aaMacroTerminal.view-ai .sticky-top{ display:none !important; }
}

/* v1057 — iOS keyboard for the AI composer. The "lift only the composer by --aa-keyboard-bottom" model
   double-lifted the composer in installed-app mode (iOS already pins position:fixed to the VISUAL
   viewport there, so adding the keyboard offset floated it a whole keyboard-height ABOVE the keyboard,
   leaving a big gap). Robust model instead: size the AI surface (#aiMain) to the visual viewport
   (height = --aa-vvh, which the app re-syncs every animation frame via trackKeyboard). The composer stays
   a normal bottom-anchored child of that box, so it sits FLUSH on the keyboard with NO offset maths —
   correct in both Safari-tab and installed-app modes. The messages fill what's left; the page itself
   doesn't scroll (window scroll is pinned to 0 while the keyboard is open). */
body.aa-ai-touch-keyboard #aiMain{
  position:fixed !important; left:0 !important; right:0 !important; top:0 !important;
  height:var(--aa-vvh, 100%) !important; z-index:4000 !important; border-radius:0 !important;
}
/* Composer: plain bottom-anchored child (NO keyboard offset), transparent so the bubbles show through.
   2-ID selector (#aaMacroTerminal #aiMain) beats polish.css `#aaApp .aa-ai-form{background:var(--bg)}`,
   which otherwise paints the composer SOLID the moment the keyboard opens (that killed the glass). */
body.aa-ai-touch-keyboard #aaMacroTerminal #aiMain .aa-ai-form,
body.aa-ai-touch-keyboard #aiMain .aa-ai-form{
  position:absolute !important; left:0 !important; right:0 !important; top:auto !important; bottom:0 !important;
  z-index:5 !important; width:100% !important; max-width:820px !important; margin:0 auto !important;
  padding:8px 20px 8px !important; background:transparent !important; transition:none !important;
}
body.aa-ai-touch-keyboard #aiMain .aa-ai-messages{
  padding-bottom:100px !important; transition:none !important;
}
@media (max-width:760px),(max-height:500px) and (pointer:coarse){
  body.aa-ai-touch-keyboard #aaMacroTerminal #aiMain .aa-ai-form,
  body.aa-ai-touch-keyboard #aiMain .aa-ai-form{ max-width:100% !important; padding:6px 12px 8px !important; }
}

  /* v1073 — Macro bias deep-dive: deterministic fundamentals + technical breakdown */
  #aaMacroTerminal .mt-macro-head .mt-macro-verdict{display:flex;align-items:center;gap:10px;margin:6px 0 8px;}
  #aaMacroTerminal .mt-macro-conf{font-family:var(--mono,monospace);font-size:.82rem;color:var(--text-faint);}
  #aaMacroTerminal .mt-macro-resolve{font-size:.92rem;line-height:1.5;color:var(--text);margin:0;}
  #aaMacroTerminal .mt-fund h3,#aaMacroTerminal .mt-tech h3{display:flex;align-items:center;gap:8px;}
  #aaMacroTerminal .mt-sub{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:12px 0 5px;font-weight:600;}
  #aaMacroTerminal .mt-fund-dollar{margin:6px 0 2px;padding:7px 10px;border-radius:8px;font-size:.82rem;line-height:1.45;
    background:var(--panel-2);border:1px solid var(--border);border-left:3px solid var(--text-faint);}
  #aaMacroTerminal .mt-fund-dollar.bullish{border-left-color:var(--bull);}
  #aaMacroTerminal .mt-fund-dollar.bearish{border-left-color:var(--bear);}
  #aaMacroTerminal .mt-fund-index{margin:6px 0 2px;padding:7px 10px;border-radius:8px;font-size:.8rem;line-height:1.45;
    color:var(--text-dim);background:var(--panel-2);border:1px solid var(--border);border-left:3px solid var(--accent);}
  #aaMacroTerminal .mt-fund-calendar{margin:7px 0;padding:7px 10px;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:8px;background:var(--panel-2);font-size:.8rem;line-height:1.45;color:var(--text-dim);}
  #aaMacroTerminal .mt-fund-calendar.bullish{border-left-color:var(--bull);}
  #aaMacroTerminal .mt-fund-calendar.bearish{border-left-color:var(--bear);}
  #aaMacroTerminal .mt-fund-calendar.neutral{border-left-color:var(--neutral);}
  #aaMacroTerminal .mt-real-market{margin:7px 0;padding:7px 10px;border:1px solid var(--border);border-radius:8px;background:var(--panel-2);font-size:.8rem;color:var(--text-dim);}
  #aaMacroTerminal .mt-real-market-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;align-items:center;margin-top:5px;}
  #aaMacroTerminal .mt-real-market-row span:nth-child(2){font-family:var(--mono,monospace);font-weight:700;}
  #aaMacroTerminal .mt-real-market-row span.bullish{color:var(--bull);}
  #aaMacroTerminal .mt-real-market-row span.bearish{color:var(--bear);}
  #aaMacroTerminal .mt-real-market-row small{grid-column:1 / -1;color:var(--text-faint);}
  #aaMacroTerminal .mt-legs{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 2px;}
  #aaMacroTerminal .mt-leg{display:flex;align-items:center;gap:7px;padding:5px 10px;border:1px solid var(--border);border-radius:8px;background:var(--panel-2);}
  #aaMacroTerminal .mt-leg-code{font-weight:700;font-size:.9rem;}
  #aaMacroTerminal .mt-leg-badge{font-size:.62rem;letter-spacing:.05em;padding:1px 6px;border-radius:5px;font-weight:700;}
  #aaMacroTerminal .mt-leg-badge.bullish,#aaMacroTerminal .mt-leg-score.bullish{color:var(--bull);} 
  #aaMacroTerminal .mt-leg-badge.bearish,#aaMacroTerminal .mt-leg-score.bearish{color:var(--bear);} 
  #aaMacroTerminal .mt-leg-badge.neutral,#aaMacroTerminal .mt-leg-score.neutral{color:var(--neutral);} 
  #aaMacroTerminal .mt-leg-badge.bullish{background:var(--bull-dim);} 
  #aaMacroTerminal .mt-leg-badge.bearish{background:var(--bear-dim);} 
  #aaMacroTerminal .mt-leg-badge.neutral{background:var(--neutral-dim);} 
  #aaMacroTerminal .mt-leg-score{font-family:var(--mono,monospace);font-size:.85rem;font-weight:700;}
  #aaMacroTerminal .mt-tech .detail-list li{margin-bottom:5px;line-height:1.5;}
  #aaMacroTerminal .mt-tech-hist{display:grid;gap:0;min-width:0;margin:8px 0 12px;}
  #aaMacroTerminal .mt-tech-hist-h{line-height:1.45;overflow-wrap:anywhere;}
  #aaMacroTerminal .mt-tech-vote-row{display:grid;grid-template-columns:58px minmax(0,1fr);gap:3px 10px;align-items:start;min-width:0;padding:7px 0;border-bottom:1px solid var(--border-soft);}
  #aaMacroTerminal .mt-tech-vote-main{grid-column:1/-1;display:flex;align-items:center;flex-wrap:wrap;gap:5px 9px;min-width:0;line-height:1.4;}
  #aaMacroTerminal .mt-tech-vote-main b{min-width:38px;}
  #aaMacroTerminal .mt-tech-vote-meta{grid-column:1/-1;min-width:0;padding-left:47px;color:var(--text-faint);font-size:.76em;line-height:1.45;overflow-wrap:anywhere;word-break:normal;}
  @media (max-width:600px){
    #aaMacroTerminal .mt-tech-vote-row{grid-template-columns:1fr;gap:2px;padding:8px 0;}
    #aaMacroTerminal .mt-tech-vote-main{gap:5px 8px;}
    #aaMacroTerminal .mt-tech-vote-main b{min-width:34px;}
    #aaMacroTerminal .mt-tech-vote-meta{padding-left:0;}
  }

  /* v1076 — Signals page: premium, verifiable signal cards */
  #aaMacroTerminal .sig-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px;padding:6px 0 40px;}
  #aaMacroTerminal .sig-card{position:relative;display:flex;align-items:stretch;gap:12px;width:100%;text-align:left;cursor:pointer;
    background:linear-gradient(180deg, color-mix(in srgb, var(--panel) 92%, transparent), var(--panel));
    border:1px solid var(--border);border-radius:14px;padding:14px 14px 14px 18px;overflow:hidden;
    transition:transform .16s cubic-bezier(.22,1,.36,1), border-color .16s, box-shadow .16s;}
  #aaMacroTerminal .sig-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 45%,var(--border));box-shadow:0 10px 28px rgba(0,0,0,.30);}
  #aaMacroTerminal .sig-accent{position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:14px 0 0 14px;}
  #aaMacroTerminal .sig-card.long .sig-accent{background:linear-gradient(180deg,var(--bull),color-mix(in srgb,var(--bull) 40%,transparent));}
  #aaMacroTerminal .sig-card.short .sig-accent{background:linear-gradient(180deg,var(--bear),color-mix(in srgb,var(--bear) 40%,transparent));}
  #aaMacroTerminal .sig-card.live{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 22%,transparent);}
  #aaMacroTerminal .sig-c-main{display:flex;flex-direction:column;gap:7px;flex:1;min-width:0;}
  #aaMacroTerminal .sig-c-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
  #aaMacroTerminal .sig-c-pair{font-weight:800;font-size:1.05rem;letter-spacing:.01em;}
  #aaMacroTerminal .sig-c-side{font-size:.72rem;font-weight:800;padding:2px 8px;border-radius:6px;letter-spacing:.03em;}
  #aaMacroTerminal .sig-c-side.long{color:var(--bull);background:var(--bull-dim);}
  #aaMacroTerminal .sig-c-side.short{color:var(--bear);background:var(--bear-dim);}
  #aaMacroTerminal .sig-live-badge{font-size:.62rem;font-weight:800;letter-spacing:.06em;color:var(--accent);
    background:color-mix(in srgb,var(--accent) 16%,transparent);padding:2px 7px;border-radius:20px;
    display:inline-flex;align-items:center;gap:4px;animation:mt_sigpulse 1.8s ease-in-out infinite;}
  @keyframes mt_sigpulse{0%,100%{opacity:1;}50%{opacity:.55;}}
  #aaMacroTerminal .sig-past-badge{font-size:.6rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);
    background:var(--panel-2);border:1px solid var(--border);padding:1px 7px;border-radius:20px;}
  #aaMacroTerminal .sig-c-sub{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:.78rem;color:var(--text-faint);font-family:var(--font-mono);}
  #aaMacroTerminal .sig-c-kind{color:var(--text);font-weight:600;}
  #aaMacroTerminal .sig-c-tf{background:var(--panel-2);border:1px solid var(--border);border-radius:5px;padding:0 6px;}
  #aaMacroTerminal .sig-c-lvl{color:var(--text-faint);}
  /* ── Premium Auto-trade panel (v1151) ─────────────────────────────────────── */
  #aaMacroTerminal .sig-mt5bar{display:flex;flex-direction:column;align-items:stretch;gap:0;
    margin:0 0 8px;border:1px solid var(--border);border-radius:10px;overflow:hidden;
    background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 70%,var(--bg)),var(--panel-2));
    box-shadow:0 1px 0 rgba(255,255,255,.03) inset,0 6px 20px rgba(0,0,0,.14);}
  /* v1167 — LOCK the auto-trade card: it stays pinned (just below the sticky Signals topbar, offset set in
     JS) while the signal list scrolls under it. Opaque background so nothing shows through. */
  #aaMacroTerminal #signalsPane .sig-mt5bar{position:sticky;top:var(--sig-sticky-top,0px);z-index:14;
    background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 82%,var(--bg)),var(--bg));}
  #aaMacroTerminal #signalsPane .sig-mt5bar.on{background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 82%,var(--bg)),var(--bg));}
  #aaMacroTerminal .sig-mt5bar.on{border-color:color-mix(in srgb,var(--bull) 42%,var(--border));
    box-shadow:0 0 0 1px color-mix(in srgb,var(--bull) 22%,transparent),0 8px 26px color-mix(in srgb,var(--bull) 14%,rgba(0,0,0,.16));}
  /* v1166 — the whole header row is a clickable card that slides the settings open/shut. */
  #aaMacroTerminal .sig-mt5-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;
    cursor:pointer;transition:background .15s;-webkit-tap-highlight-color:transparent;}
  #aaMacroTerminal .sig-mt5-left{display:flex;align-items:center;gap:8px;min-width:0;flex:1;}
  #aaMacroTerminal .sig-mt5-row:hover{background:color-mix(in srgb,var(--text-faint) 6%,transparent);}
  #aaMacroTerminal .sig-mt5-row:focus-visible{outline:2px solid color-mix(in srgb,var(--accent,#00f0a3) 60%,transparent);outline-offset:-2px;}
  #aaMacroTerminal .sig-mt5-brand{display:flex;align-items:center;gap:8px;font-weight:800;font-size:.92rem;letter-spacing:.01em;color:var(--text);}
  #aaMacroTerminal .sig-mt5-dot{width:8px;height:8px;border-radius:50%;background:var(--text-faint);flex:none;transition:.2s;}
  #aaMacroTerminal .sig-mt5bar.on .sig-mt5-dot{background:var(--bull);box-shadow:0 0 0 4px color-mix(in srgb,var(--bull) 22%,transparent);animation:aaMt5Pulse 2s infinite;}
  @keyframes aaMt5Pulse{0%,100%{box-shadow:0 0 0 3px color-mix(in srgb,var(--bull) 26%,transparent);}50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--bull) 8%,transparent);}}
  #aaMacroTerminal .sig-mt5-sub{font-size:.68rem;color:var(--text-faint);display:block;margin:0;min-width:0;max-width:none;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  #aaMacroTerminal .sig-mt5bar:not(.settings-open) .sig-mt5-sub{display:none;}
  #aaMacroTerminal .sig-mt5-right{display:flex;align-items:center;gap:9px;}
  /* v1166 — "Settings ⌄" is now just a non-interactive affordance; the row itself is the button. The
     chevron flips up when the panel is open. */
  #aaMacroTerminal .sig-mt5-gear{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:8px;border:1px solid var(--border);
    background:var(--panel);color:var(--text-faint);font-weight:700;font-size:.75rem;white-space:nowrap;pointer-events:none;transition:all .15s;}
  #aaMacroTerminal .sig-mt5-gear-ico{transition:transform .28s;font-size:.9rem;line-height:1;}
  #aaMacroTerminal .sig-mt5-row:hover .sig-mt5-gear{color:var(--text);border-color:color-mix(in srgb,var(--text-faint) 45%,var(--border));}
  #aaMacroTerminal .sig-mt5bar.settings-open .sig-mt5-gear{color:var(--text);border-color:color-mix(in srgb,var(--accent,#00f0a3) 55%,var(--border));background:color-mix(in srgb,var(--accent,#00f0a3) 8%,var(--panel));}
  #aaMacroTerminal .sig-mt5bar.settings-open .sig-mt5-gear-ico{transform:rotate(180deg);}
  #aaMacroTerminal .sig-mt5-toggle{display:inline-flex;align-items:center;gap:6px;min-width:62px;padding:5px 9px 5px 6px;border-radius:18px;border:1px solid var(--border);
    background:var(--panel);color:var(--text-faint);font-weight:800;font-size:.72rem;letter-spacing:.06em;cursor:pointer;transition:all .18s;}
  #aaMacroTerminal .sig-mt5-toggle-knob{width:18px;height:18px;border-radius:50%;background:var(--text-faint);transition:.18s;flex:none;}
  #aaMacroTerminal .sig-mt5-toggle.on{background:linear-gradient(180deg,color-mix(in srgb,var(--bull) 92%,#fff),var(--bull));border-color:var(--bull);color:#04120b;}
  #aaMacroTerminal .sig-mt5-toggle.on .sig-mt5-toggle-knob{background:#04120b;box-shadow:0 1px 3px rgba(0,0,0,.3);}
  /* v1167 — smaller inline toggle for the News filter row */
  #aaMacroTerminal .sig-mt5-toggle-sm{min-width:60px;padding:5px 10px 5px 6px;font-size:.66rem;}
  #aaMacroTerminal .sig-mt5-toggle-sm .sig-mt5-toggle-knob{width:15px;height:15px;}
  #aaMacroTerminal .sig-mt5-news-rows{display:flex;flex-direction:column;gap:8px;margin-top:2px;}
  #aaMacroTerminal .sig-mt5-news-rows[hidden]{display:none;}
  /* v1165/v1166 — the settings SLIDE down from the header card. Closed = max-height 0 (collapsed); open =
     capped at 56vh with its own internal scroll so it never takes the whole page and the signal list below
     stays reachable. */
  #aaMacroTerminal .sig-mt5-settings{border-top:1px solid transparent;padding:0 15px;display:flex;flex-direction:column;gap:13px;
    background:color-mix(in srgb,var(--panel-2) 55%,transparent);max-height:0;overflow:hidden;opacity:.4;
    transition:max-height .32s cubic-bezier(.4,0,.2,1),padding .32s cubic-bezier(.4,0,.2,1),opacity .24s ease,border-color .2s;}
  #aaMacroTerminal .sig-mt5-settings.open{border-top-color:var(--border);padding:13px 15px 14px;max-height:56vh;overflow-y:auto;opacity:1;overscroll-behavior:contain;}
  @media (prefers-reduced-motion: reduce){ #aaMacroTerminal .sig-mt5-settings{transition:none;} }

  /* v1242 — the date/range filter now lives in the EA bar header, so the Signals top bar's filter slot
     is empty; collapse it and tighten the header so the EA bar (and everything below) sits higher. */
  #aaMacroTerminal #signalsPane .news-filters{ display:none !important; }
  #aaMacroTerminal #signalsPane .news-topbar{ padding-bottom:8px !important; }
  /* v1267 — free users get the History date filter beside the Signals title (the .news-filters row it used
     to live in is display:none on this page). Lay the topbar out as a row so the filter sits on the right. */
  #aaMacroTerminal #signalsPane .news-topbar{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; }
  #aaMacroTerminal #signalsPane .news-topbar > .news-head{ flex:1 1 auto; }
  #aaMacroTerminal #signalsPane .news-topbar > #signalsDateRangeWrap{ margin-left:auto; }
  #aaMacroTerminal .sig-mt5-left .sig-daterange{ margin-top:6px; }

  /* v1241 — FREE-user premium auto-trade ad (shown in place of the EA bar). Compact card so it never
     swallows the signals list; routes to the payment chooser via the data-auth-open CTA. */
  #aaMacroTerminal .sig-mt5-upsell{ position:relative; margin:0 0 12px; border-radius:14px; overflow:hidden;
    border:1px solid color-mix(in srgb, var(--accent,#0aa06b) 42%, var(--border));
    background:linear-gradient(180deg, color-mix(in srgb, var(--accent,#0aa06b) 9%, var(--panel)), var(--panel));
    box-shadow:0 12px 34px color-mix(in srgb, var(--accent,#0aa06b) 12%, transparent); }
  #aaMacroTerminal .sig-mt5-upsell .upsell-inner{ padding:16px 16px 14px; display:flex; flex-direction:column; gap:9px; }
  #aaMacroTerminal .sig-mt5-upsell .upsell-tag{ align-self:flex-start; font-size:.62rem; font-weight:800; letter-spacing:.08em;
    color:var(--accent,#0aa06b); background:var(--accent-dim,rgba(10,160,107,.12)); padding:4px 10px; border-radius:999px;
    border:1px solid color-mix(in srgb, var(--accent,#0aa06b) 35%, transparent); }
  #aaMacroTerminal .sig-mt5-upsell .upsell-head{ font-size:1.02rem; font-weight:800; line-height:1.24; color:var(--text); }
  #aaMacroTerminal .sig-mt5-upsell .upsell-copy{ margin:0; font-size:.8rem; line-height:1.5; color:var(--text-dim); }
  #aaMacroTerminal .sig-mt5-upsell .upsell-copy b{ color:var(--text); }
  #aaMacroTerminal .sig-mt5-upsell .upsell-points{ display:grid; grid-template-columns:1fr 1fr; gap:5px 14px; margin:2px 0; }
  #aaMacroTerminal .sig-mt5-upsell .upsell-points span{ font-size:.74rem; font-weight:600; color:var(--text-dim); }
  #aaMacroTerminal .sig-mt5-upsell .upsell-cta{ margin-top:5px; align-self:flex-start; padding:11px 22px; border:none; border-radius:10px;
    background:var(--accent,#0aa06b); color:#1f1e1d; font-size:.86rem; font-weight:800; cursor:pointer;
    box-shadow:0 6px 18px color-mix(in srgb, var(--accent,#0aa06b) 35%, transparent); transition:filter .12s ease, transform .12s ease; }
  #aaMacroTerminal .sig-mt5-upsell .upsell-cta:hover{ filter:brightness(1.07); }
  #aaMacroTerminal .sig-mt5-upsell .upsell-cta:active{ transform:scale(.97); }
  #aaMacroTerminal .sig-mt5-upsell .upsell-fine{ font-size:.64rem; color:var(--text-faint); line-height:1.4; margin-top:1px; }
  @media (max-width:560px){ #aaMacroTerminal .sig-mt5-upsell .upsell-points{ grid-template-columns:1fr; } }

  /* v1242 — slide-up promo sheet (upgrade for free users / affiliate for premium). Covers the lower
     part of the screen, slides up from the bottom, dismissible; shown at most once every few days. */
  #aaMacroTerminal .aa-promo-sheet{ position:fixed; inset:0; z-index:2147483200; pointer-events:none; }
  #aaMacroTerminal .aa-promo-backdrop{ position:absolute; inset:0; background:rgba(0,0,0,.5); opacity:0; transition:opacity .3s ease; pointer-events:auto; }
  #aaMacroTerminal .aa-promo-sheet.show .aa-promo-backdrop{ opacity:1; }
  #aaMacroTerminal .aa-promo-card{ position:absolute; left:50%; bottom:0; transform:translate(-50%,100%); width:min(560px,100%); max-height:64vh; overflow-y:auto; pointer-events:auto;
    background:var(--panel); border:1px solid var(--border); border-bottom:none; border-radius:20px 20px 0 0;
    box-shadow:0 -20px 60px rgba(0,0,0,.4); padding:22px 22px calc(22px + env(safe-area-inset-bottom,0px));
    transition:transform .34s cubic-bezier(.32,.72,0,1); display:flex; flex-direction:column; gap:11px; }
  #aaMacroTerminal .aa-promo-sheet.show .aa-promo-card{ transform:translate(-50%,0); }
  #aaMacroTerminal .aa-promo-x{ position:absolute; right:14px; top:14px; width:32px; height:32px; border-radius:50%; border:1px solid var(--border); background:var(--panel-2); color:var(--text-dim); font-size:1.3rem; line-height:1; cursor:pointer; }
  #aaMacroTerminal .aa-promo-tag{ align-self:flex-start; font-size:.64rem; font-weight:800; letter-spacing:.08em; color:var(--accent,#0aa06b); background:var(--accent-dim,rgba(10,160,107,.12)); border:1px solid color-mix(in srgb,var(--accent,#0aa06b) 35%,transparent); padding:5px 11px; border-radius:999px; }
  #aaMacroTerminal .aa-promo-head{ margin:2px 40px 0 0; font-size:1.35rem; font-weight:900; line-height:1.2; color:var(--text); }
  #aaMacroTerminal .aa-promo-copy{ margin:0; font-size:.86rem; line-height:1.55; color:var(--text-dim); }
  #aaMacroTerminal .aa-promo-copy b{ color:var(--text); }
  #aaMacroTerminal .aa-promo-points{ display:grid; grid-template-columns:1fr 1fr; gap:6px 16px; margin:3px 0; }
  #aaMacroTerminal .aa-promo-points span{ font-size:.78rem; font-weight:600; color:var(--text-dim); }
  #aaMacroTerminal .aa-promo-cta{ margin-top:6px; padding:14px 22px; border:none; border-radius:12px; background:var(--accent,#0aa06b); color:#1f1e1d; font-size:.95rem; font-weight:800; cursor:pointer; box-shadow:0 8px 22px color-mix(in srgb,var(--accent,#0aa06b) 35%,transparent); }
  #aaMacroTerminal .aa-promo-cta:hover{ filter:brightness(1.06); }
  #aaMacroTerminal .aa-promo-skip{ padding:8px; border:none; background:transparent; color:var(--text-faint); font-size:.8rem; font-weight:600; cursor:pointer; }
  #aaMacroTerminal .aa-promo-fine{ font-size:.66rem; color:var(--text-faint); text-align:center; line-height:1.4; }
  @media (max-width:560px){ #aaMacroTerminal .aa-promo-points{ grid-template-columns:1fr; } #aaMacroTerminal .aa-promo-card{ max-height:72vh; } }
  #aaMacroTerminal .sig-mt5-block{display:flex;flex-direction:column;gap:9px;}
  #aaMacroTerminal .sig-mt5-block-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;}
  #aaMacroTerminal .sig-mt5-block-title{font-size:.8rem;font-weight:800;color:var(--text);letter-spacing:.01em;}
  #aaMacroTerminal .sig-mt5-block-title em{color:var(--text-faint);font-style:normal;font-weight:600;font-size:.72rem;margin-left:2px;}
  #aaMacroTerminal .sig-mt5-block-hint{font-size:.68rem;color:var(--text-faint);}
  /* segmented control */
  #aaMacroTerminal .sig-mt5-seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:5px;padding:4px;border-radius:12px;
    background:color-mix(in srgb,var(--panel) 60%,#0000);border:1px solid var(--border);}
  #aaMacroTerminal .sig-seg-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 8px;border-radius:9px;border:1px solid transparent;
    background:transparent;color:var(--text-faint);font-weight:700;font-size:.78rem;cursor:pointer;transition:all .15s;text-align:center;line-height:1.2;}
  #aaMacroTerminal .sig-seg-btn small{font-weight:600;font-size:.63rem;color:var(--text-faint);opacity:.85;}
  #aaMacroTerminal .sig-seg-btn:hover{color:var(--text);}
  #aaMacroTerminal .sig-seg-btn.on{background:var(--panel);color:var(--text);border-color:color-mix(in srgb,var(--accent,#00f0a3) 45%,var(--border));
    box-shadow:0 2px 8px rgba(0,0,0,.16);}
  #aaMacroTerminal .sig-seg-btn.on small{color:color-mix(in srgb,var(--accent,#00f0a3) 75%,var(--text-faint));opacity:1;}
  /* numeric input rows */
  #aaMacroTerminal .sig-mt5-input-row{display:flex;align-items:center;justify-content:space-between;gap:12px;
    padding:9px 12px;border-radius:11px;border:1px solid var(--border);background:var(--panel);}
  #aaMacroTerminal .sig-mt5-input-row label{font-size:.76rem;font-weight:700;color:var(--text);}
  #aaMacroTerminal #signalsMt5CommissionLimit{width:112px;padding:7px 9px;border-radius:8px;border:1px solid var(--border);
    background:var(--panel-2);color:var(--text);font:700 .86rem var(--font-mono);}
  #aaMacroTerminal .sig-mt5-num{display:inline-flex;align-items:center;gap:6px;}
  #aaMacroTerminal .sig-mt5-num input{width:78px;padding:7px 9px;border-radius:8px;border:1px solid var(--border);
    background:var(--panel-2);color:var(--text);font-family:var(--font-mono);font-size:.9rem;font-weight:700;text-align:right;}
  #aaMacroTerminal .sig-mt5-num span{font-size:.72rem;color:var(--text-faint);font-weight:700;min-width:26px;}
  /* pairs */
  /* v1165/v1166 — collapsible pair-grid header, styled as an obvious clickable button (border + hint) so it
     reads as "tap to view & edit the pairs", with a caret that rotates when the grid is open. */
  #aaMacroTerminal .sig-mt5-pairs-toggle{display:inline-flex;align-items:center;gap:8px;padding:7px 11px;border:1px solid var(--border);
    border-radius:10px;background:var(--panel);cursor:pointer;text-align:left;color:inherit;transition:all .14s;}
  #aaMacroTerminal .sig-mt5-pairs-toggle:hover{color:var(--text);border-color:color-mix(in srgb,var(--accent,#00f0a3) 50%,var(--border));
    background:color-mix(in srgb,var(--accent,#00f0a3) 7%,var(--panel));}
  #aaMacroTerminal .sig-mt5-caret{display:inline-flex;font-size:.68rem;color:var(--accent,#00f0a3);transition:transform .18s;flex:none;}
  #aaMacroTerminal .sig-mt5-pairs-toggle[aria-expanded="true"] .sig-mt5-caret{transform:rotate(90deg);}
  #aaMacroTerminal .sig-mt5-pairs-hint{font-size:.63rem;font-weight:800;color:var(--accent,#00f0a3);letter-spacing:.03em;text-transform:uppercase;
    white-space:nowrap;margin-left:2px;}
  #aaMacroTerminal .sig-mt5-pairs-toggle[aria-expanded="true"] .sig-mt5-pairs-hint{opacity:.6;}
  #aaMacroTerminal .sig-mt5-pairs-btns{display:flex;gap:6px;}
  #aaMacroTerminal .sig-mt5-mini{padding:4px 12px;border-radius:14px;border:1px solid var(--border);background:var(--panel);
    color:var(--text-faint);font-size:.68rem;font-weight:700;cursor:pointer;transition:.12s;}
  #aaMacroTerminal .sig-mt5-mini:hover{color:var(--text);border-color:color-mix(in srgb,var(--text-faint) 45%,var(--border));}
  #aaMacroTerminal .sig-mt5-pairs{display:flex;flex-direction:column;gap:9px;max-height:190px;overflow-y:auto;
    padding:10px;border:1px solid var(--border);border-radius:12px;background:var(--panel);margin-top:2px;}
  #aaMacroTerminal .sig-mt5-pairs[hidden]{display:none;}
  #aaMacroTerminal .sig-mt5-pgrp{display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
  #aaMacroTerminal .sig-mt5-pgrp-lbl{font-size:.6rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;
    color:var(--text-faint);width:100%;margin-bottom:3px;}
  #aaMacroTerminal .sig-mt5-pchip{padding:5px 11px;border-radius:9px;border:1px solid var(--border);background:var(--panel-2);
    color:var(--text-faint);font-size:.7rem;font-weight:700;font-family:var(--font-mono);letter-spacing:.02em;cursor:pointer;transition:all .12s;}
  #aaMacroTerminal .sig-mt5-pchip:hover{color:var(--text);border-color:color-mix(in srgb,var(--text-faint) 40%,var(--border));}
  #aaMacroTerminal .sig-mt5-pchip.on{background:color-mix(in srgb,var(--bull) 20%,var(--panel));border-color:color-mix(in srgb,var(--bull) 60%,var(--border));color:var(--text);}
  /* v1512 — pairs the connected broker doesn't list are shown, but plainly unavailable rather than silently missing. */
  #aaMacroTerminal .sig-mt5-pchip.unavailable{opacity:.34;cursor:not-allowed;text-decoration:line-through;}
  #aaMacroTerminal .sig-mt5-pchip.unavailable:hover{color:var(--text-faint);border-color:var(--border);}
  #aaMacroTerminal .sig-mt5-pairs-note{font-size:.66rem;color:var(--text-faint);line-height:1.5;padding-top:6px;}
  #aaMacroTerminal .sig-mt5-pairs-note[hidden]{display:none;}
  /* v1512 — an explicit Save. Settings still save on change; this makes it visible that they landed. */
  #aaMacroTerminal .sig-mt5-savebar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-top:2px;}
  #aaMacroTerminal .sig-mt5-save{padding:9px 20px;border-radius:10px;border:1px solid color-mix(in srgb,var(--bull) 55%,var(--border));
    background:color-mix(in srgb,var(--bull) 22%,var(--panel));color:var(--text);font-size:.74rem;font-weight:800;
    letter-spacing:.03em;cursor:pointer;transition:all .12s;}
  #aaMacroTerminal .sig-mt5-save:hover{background:color-mix(in srgb,var(--bull) 34%,var(--panel));}
  #aaMacroTerminal .sig-mt5-save:disabled{opacity:.6;cursor:default;}
  #aaMacroTerminal .sig-mt5-save-msg{font-size:.7rem;font-weight:700;color:var(--text-faint);}
  #aaMacroTerminal .sig-mt5-save-msg.ok{color:var(--bull);}
  #aaMacroTerminal .sig-mt5-save-msg.err{color:var(--bear);}
  #aaMacroTerminal .sig-mt5-set-note{display:flex;align-items:flex-start;gap:7px;font-size:.7rem;color:var(--text-faint);line-height:1.5;
    padding-top:2px;}
  #aaMacroTerminal .sig-mt5-note-ico{color:var(--bull);font-weight:800;flex:none;}
  #aaMacroTerminal .sig-c-ea{font-size:.62rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--text-faint);}
  #aaMacroTerminal .sig-c-bias{font-size:.62rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
    border-radius:20px;padding:1px 7px;border:1px solid transparent;}
  #aaMacroTerminal .sig-c-bias.bullish{color:var(--bull);background:color-mix(in srgb,var(--bull) 14%,transparent);border-color:color-mix(in srgb,var(--bull) 34%,transparent);}
  #aaMacroTerminal .sig-c-bias.bearish{color:var(--bear);background:color-mix(in srgb,var(--bear) 14%,transparent);border-color:color-mix(in srgb,var(--bear) 34%,transparent);}
  #aaMacroTerminal .sig-c-dot{opacity:.5;}
  #aaMacroTerminal .sig-c-right{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:2px;text-align:right;padding-left:6px;min-width:104px;}
  #aaMacroTerminal .sig-c-pnl{font-family:var(--font-mono);font-size:1.28rem;font-weight:800;line-height:1;}
  #aaMacroTerminal .sig-c-pnl.pos{color:var(--bull);} #aaMacroTerminal .sig-c-pnl.neg{color:var(--bear);}
  #aaMacroTerminal .sig-c-pnlsub{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;}
  #aaMacroTerminal .sig-c-pnlsub.pos{color:color-mix(in srgb,var(--bull) 80%,var(--text-faint));}
  #aaMacroTerminal .sig-c-pnlsub.neg{color:color-mix(in srgb,var(--bear) 80%,var(--text-faint));}
  #aaMacroTerminal .sig-c-age{font-size:.72rem;color:var(--text-faint);font-family:var(--font-mono);margin-top:3px;}
  #aaMacroTerminal .sig-c-cta{position:absolute;right:14px;bottom:10px;font-size:.68rem;font-weight:700;color:var(--accent);opacity:0;transition:opacity .16s;}
  #aaMacroTerminal .sig-card:hover .sig-c-cta{opacity:1;}
  @media (max-width:480px){ #aaMacroTerminal .sig-c-cta{display:none;} }

  /* v1077 — Signals: summary bar, TP ladder, live status, history outcomes */
  /* v1167 — History date-range dropdown (Today / Yesterday / … / Overall) */
  #aaMacroTerminal .sig-mt5-retrigger{ width:100%; padding:11px 14px; border-radius:11px; border:1px solid color-mix(in srgb,var(--accent,#00f0a3) 45%,var(--border)); background:color-mix(in srgb,var(--accent,#00f0a3) 12%,transparent); color:var(--text); font-weight:800; font-size:.86rem; cursor:pointer; transition:background .15s,border-color .15s; }
  #aaMacroTerminal .sig-mt5-retrigger:hover{ background:color-mix(in srgb,var(--accent,#00f0a3) 20%,transparent); }
  #aaMacroTerminal .sig-mt5-retrigger:disabled{ opacity:.6; cursor:default; }
  #aaMacroTerminal .sig-mt5-retrigger-hint{ font-size:.7rem; color:var(--dim); margin-top:7px; line-height:1.5; }
  #aaMacroTerminal .sig-mt5-retrigger-msg{ font-size:.76rem; margin-top:8px; padding:8px 10px; border-radius:9px; background:color-mix(in srgb,var(--accent,#00f0a3) 10%,transparent); color:var(--text); }
  #aaMacroTerminal .sig-mt5-retrigger-msg.ok{ background:color-mix(in srgb,#25c281 16%,transparent); }
  #aaMacroTerminal .sig-mt5-retrigger-msg.err{ background:color-mix(in srgb,#e5484d 16%,transparent); }
  #aaMacroTerminal .sig-daterange{display:inline-flex;align-items:center;gap:6px;margin-left:auto;
    background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:5px 10px;cursor:pointer;transition:border-color .14s;}
  #aaMacroTerminal .sig-daterange[hidden]{display:none !important;}
  #aaMacroTerminal .sig-daterange:hover{border-color:color-mix(in srgb,var(--accent,#00f0a3) 50%,var(--border));}
  #aaMacroTerminal .sig-daterange-ico{font-size:.8rem;opacity:.8;line-height:1;}
  #aaMacroTerminal .sig-daterange select{border:0;background:transparent;color:var(--text);font-size:.76rem;font-weight:700;
    cursor:pointer;outline:none;padding-right:2px;-webkit-appearance:none;appearance:none;}
  #aaMacroTerminal .sig-daterange select option{background:var(--panel);color:var(--text);}
  #aaMacroTerminal .sig-summary{margin:0 0 7px;overflow:hidden;}
  #aaMacroTerminal .sig-sum-row{display:flex;gap:5px;overflow-x:auto;scrollbar-width:none;}
  #aaMacroTerminal .sig-sum-row::-webkit-scrollbar{display:none;}
  #aaMacroTerminal .sig-sum-cell{display:flex;align-items:center;gap:6px;flex:1 0 auto;min-width:max-content;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:5px 8px;}
  #aaMacroTerminal .sig-sum-cell b{font-family:var(--font-mono);font-size:.88rem;font-weight:800;line-height:1;}
  #aaMacroTerminal .sig-sum-cell b.pos{color:var(--bull);} #aaMacroTerminal .sig-sum-cell b.neg{color:var(--bear);}
  #aaMacroTerminal .sig-sum-cell small{font-size:.56rem;text-transform:uppercase;letter-spacing:.03em;color:var(--text-faint);font-weight:600;white-space:nowrap;}
  /* v1166 — extended History stats grid (streaks, best/worst pair, max excursion). Smaller value type than
     the headline row since these hold "PAIR +1.23R" strings. */
  #aaMacroTerminal .sig-stats2{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:10px;}
  #aaMacroTerminal .sig-stats2 .sig-sum-cell b{font-size:.94rem;font-family:var(--font-mono);letter-spacing:-.01em;}
  #aaMacroTerminal .sig-stats2 .sig-sum-cell{padding:9px 12px;}
  @media (max-width:640px){ #aaMacroTerminal .sig-stats2{grid-template-columns:repeat(2,1fr);} }
  /* v1166 — cumulative-R performance curve */
  #aaMacroTerminal .sig-equity-wrap{margin-top:11px;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:12px 13px 10px;}
  #aaMacroTerminal .sig-equity-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:8px;}
  #aaMacroTerminal .sig-equity-title{font-size:.72rem;font-weight:800;letter-spacing:.02em;color:var(--text);}
  #aaMacroTerminal .sig-equity-val{font-family:var(--font-mono);font-size:.82rem;font-weight:800;}
  #aaMacroTerminal .sig-equity-val.pos{color:var(--bull);} #aaMacroTerminal .sig-equity-val.neg{color:var(--bear);}
  #aaMacroTerminal .sig-equity{display:block;width:100%;height:96px;}
  #aaMacroTerminal .sig-equity-zero{stroke:var(--border-strong,var(--border));stroke-width:.5;stroke-dasharray:1.5 1.5;vector-effect:non-scaling-stroke;}
  #aaMacroTerminal .sig-equity-line{fill:none;stroke-width:2;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round;}
  #aaMacroTerminal .sig-equity-line.pos{stroke:var(--bull);} #aaMacroTerminal .sig-equity-line.neg{stroke:var(--bear);}
  #aaMacroTerminal .sig-equity-fill{stroke:none;}
  #aaMacroTerminal .sig-equity-fill.pos{fill:color-mix(in srgb,var(--bull) 15%,transparent);} #aaMacroTerminal .sig-equity-fill.neg{fill:color-mix(in srgb,var(--bear) 15%,transparent);}
  #aaMacroTerminal .sig-equity-foot{font-size:.64rem;color:var(--text-faint);margin-top:7px;line-height:1.45;}
  /* v1169 — AI Performance Desk */
  #aaMacroTerminal .sig-aidesk{margin:12px 0 10px;border:1px solid var(--border);border-radius:12px;padding:0;overflow:hidden;transition:border-color .15s;
    background:linear-gradient(180deg,color-mix(in srgb,var(--accent,#00f0a3) 6%,var(--panel)),var(--panel-2));}
  #aaMacroTerminal .sig-aidesk:hover{border-color:color-mix(in srgb,var(--accent,#00f0a3) 45%,var(--border));}
  #aaMacroTerminal .sig-aidesk .desk-head{width:100%;border:0;background:transparent;color:inherit;padding:11px 13px;margin:0;cursor:pointer;}
  #aaMacroTerminal .desk-head-right{display:flex;align-items:center;gap:8px;}
  #aaMacroTerminal .desk-caret{font-size:.9rem;color:var(--text-faint);transition:transform .2s;}
  #aaMacroTerminal .sig-aidesk.open .desk-caret{transform:rotate(180deg);}
  #aaMacroTerminal .sig-aidesk .desk-body{padding:0 13px 12px;border-top:1px solid var(--border);}
  #aaMacroTerminal .sig-aidesk .desk-body[hidden]{display:none;}
  #aaMacroTerminal .desk-more{display:block;width:100%;margin:12px 0 2px;padding:9px 12px;border-radius:10px;cursor:pointer;
    border:1px solid color-mix(in srgb,var(--accent,#00f0a3) 35%,var(--border));background:color-mix(in srgb,var(--accent,#00f0a3) 10%,transparent);
    color:var(--accent,#00f0a3);font-weight:800;font-size:.76rem;text-align:center;transition:all .14s;}
  #aaMacroTerminal .desk-more:hover{background:color-mix(in srgb,var(--accent,#00f0a3) 18%,transparent);}
  /* v1170 — full-screen desk breakdown */
  #aaMacroTerminal .dd-overlay{position:absolute;inset:0;z-index:60;display:none;}
  #aaMacroTerminal .dd-overlay.open{display:block;}
  #aaMacroTerminal .dd-scrim{position:absolute;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(3px);}
  #aaMacroTerminal .dd-card{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--bg);
    max-width:760px;margin:0 auto;border-left:1px solid var(--border);border-right:1px solid var(--border);box-shadow:0 0 60px rgba(0,0,0,.4);}
  #aaMacroTerminal .dd-top{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:calc(14px + env(safe-area-inset-top, 0px)) 16px 14px;border-bottom:1px solid var(--border);
    background:linear-gradient(180deg,color-mix(in srgb,var(--accent,#00f0a3) 8%,var(--panel)),var(--panel));flex:none;}
  #aaMacroTerminal .dd-top-l{display:flex;align-items:center;gap:10px;}
  #aaMacroTerminal .dd-title{font-size:1rem;font-weight:800;color:var(--text);}
  #aaMacroTerminal .dd-x{width:34px;height:34px;border-radius:9px;border:1px solid var(--border);background:var(--panel);color:var(--text);font-size:1rem;cursor:pointer;flex:none;}
  #aaMacroTerminal .dd-x:hover{background:var(--panel-2);}
  #aaMacroTerminal .dd-body{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px;}
  #aaMacroTerminal .dd-headline{font-size:.95rem;font-weight:700;color:var(--text);line-height:1.5;margin-bottom:14px;}
  #aaMacroTerminal .dd-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:16px;}
  #aaMacroTerminal .dd-stat{background:var(--panel);border:1px solid var(--border);border-radius:11px;padding:9px 11px;}
  #aaMacroTerminal .dd-stat-h{font-size:.6rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);font-weight:800;}
  #aaMacroTerminal .dd-stat-row{display:flex;flex-wrap:wrap;gap:3px 10px;margin-top:5px;font-family:var(--font-mono);font-size:.72rem;font-weight:700;color:var(--text);}
  #aaMacroTerminal .dd-stat-row .pos{color:var(--bull);} #aaMacroTerminal .dd-stat-row .neg{color:var(--bear);}
  #aaMacroTerminal .dd-sec{margin:0 0 18px;}
  #aaMacroTerminal .dd-sec h4{font-size:.8rem;font-weight:800;color:var(--text);margin:0 0 8px;padding-bottom:6px;border-bottom:1px solid var(--border);}
  #aaMacroTerminal .dd-sec h4.ok{color:var(--bull);} #aaMacroTerminal .dd-sec h4.neg{color:var(--bear);}
  #aaMacroTerminal .dd-sec h4.adapt{color:var(--accent,#00f0a3);} #aaMacroTerminal .dd-sec h4.warn{color:var(--neutral,#e0a340);}
  #aaMacroTerminal .dd-note{font-size:.75rem;color:var(--text-faint);line-height:1.5;margin:0 0 11px;}
  #aaMacroTerminal .dd-pairtune{background:var(--panel);border:1px solid var(--border);border-radius:11px;padding:11px 12px;margin-bottom:9px;}
  #aaMacroTerminal .dd-pairtune-h{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-bottom:6px;}
  #aaMacroTerminal .dd-pairtune-h b{font-size:.86rem;color:var(--text);font-family:var(--font-mono);}
  #aaMacroTerminal .dd-chip{font-size:.64rem;font-weight:700;padding:2px 8px;border-radius:14px;background:color-mix(in srgb,var(--accent,#00f0a3) 12%,transparent);
    color:var(--accent,#00f0a3);border:1px solid color-mix(in srgb,var(--accent,#00f0a3) 28%,transparent);}
  #aaMacroTerminal .dd-chip.hot{background:color-mix(in srgb,var(--bull) 14%,transparent);color:var(--bull);border-color:color-mix(in srgb,var(--bull) 32%,transparent);}
  #aaMacroTerminal .dd-why,#aaMacroTerminal .dd-next{font-size:.76rem;color:var(--text);line-height:1.45;margin-top:3px;}
  #aaMacroTerminal .dd-why b,#aaMacroTerminal .dd-next b{color:var(--text-faint);font-weight:800;}
  #aaMacroTerminal .dd-evi{font-size:.68rem;color:var(--text-faint);margin-top:6px;font-family:var(--font-mono);line-height:1.4;}
  #aaMacroTerminal .dd-ul{margin:0;padding:0 0 0 2px;list-style:none;display:flex;flex-direction:column;gap:5px;}
  #aaMacroTerminal .dd-ul li{font-size:.8rem;color:var(--text);line-height:1.45;padding-left:15px;position:relative;}
  #aaMacroTerminal .dd-ul li::before{content:'›';position:absolute;left:0;color:var(--text-faint);font-weight:800;}
  #aaMacroTerminal .dd-table{width:100%;border-collapse:collapse;font-size:.74rem;}
  #aaMacroTerminal .dd-table th{text-align:left;font-size:.62rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);font-weight:800;padding:5px 8px;border-bottom:1px solid var(--border);}
  #aaMacroTerminal .dd-table td{padding:6px 8px;border-bottom:1px solid var(--border-soft,var(--border));font-family:var(--font-mono);font-weight:600;color:var(--text);}
  #aaMacroTerminal .dd-table td.pos{color:var(--bull);} #aaMacroTerminal .dd-table td.neg{color:var(--bear);}
  #aaMacroTerminal .dd-outlook{font-size:.8rem;color:var(--text);line-height:1.55;background:var(--panel);border:1px solid var(--border);border-radius:11px;padding:11px 13px;margin-bottom:16px;}
  #aaMacroTerminal .dd-method{border-top:1px solid var(--border);padding-top:14px;}
  #aaMacroTerminal .dd-method h4{font-size:.76rem;font-weight:800;color:var(--text-faint);margin:0 0 7px;}
  #aaMacroTerminal .dd-method p{font-size:.73rem;color:var(--text-faint);line-height:1.6;margin:0 0 6px;}
  #aaMacroTerminal .dd-updated{font-style:italic;}
  #aaMacroTerminal .dd-empty{font-size:.78rem;color:var(--text-faint);line-height:1.5;background:var(--panel);border:1px dashed var(--border);border-radius:11px;padding:12px;}
  @media (max-width:640px){ #aaMacroTerminal .dd-stats{grid-template-columns:1fr;} }
  #aaMacroTerminal .desk-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px;}
  #aaMacroTerminal .desk-title{font-size:.92rem;font-weight:800;letter-spacing:.01em;color:var(--text);}
  #aaMacroTerminal .desk-badge{font-size:.68rem;font-weight:800;padding:3px 10px;border-radius:20px;white-space:nowrap;border:1px solid var(--border);}
  #aaMacroTerminal .desk-badge.ok{color:var(--bull);background:color-mix(in srgb,var(--bull) 14%,transparent);border-color:color-mix(in srgb,var(--bull) 35%,transparent);}
  #aaMacroTerminal .desk-badge.warn{color:var(--neutral,#e0a340);background:color-mix(in srgb,var(--neutral,#e0a340) 15%,transparent);border-color:color-mix(in srgb,var(--neutral,#e0a340) 38%,transparent);}
  #aaMacroTerminal .desk-badge.adapt{color:var(--accent,#00f0a3);background:color-mix(in srgb,var(--accent,#00f0a3) 14%,transparent);border-color:color-mix(in srgb,var(--accent,#00f0a3) 40%,transparent);}
  #aaMacroTerminal .desk-badge.mute{color:var(--text-faint);background:var(--panel-2);}
  #aaMacroTerminal .desk-headline{font-size:.86rem;font-weight:600;color:var(--text);line-height:1.45;margin:2px 0 10px;}
  #aaMacroTerminal .desk-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px;}
  #aaMacroTerminal .desk-strip .desk-cell{display:flex;flex-direction:column;gap:2px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:8px 10px;}
  #aaMacroTerminal .desk-strip .desk-cell b{font-family:var(--font-mono);font-size:1.02rem;font-weight:800;line-height:1;}
  #aaMacroTerminal .desk-strip .desk-cell b.pos{color:var(--bull);} #aaMacroTerminal .desk-strip .desk-cell b.neg{color:var(--bear);}
  #aaMacroTerminal .desk-strip .desk-cell small{font-size:.6rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);font-weight:600;}
  #aaMacroTerminal .desk-adapt-echo{font-size:.72rem;font-weight:700;color:var(--accent,#00f0a3);background:color-mix(in srgb,var(--accent,#00f0a3) 8%,transparent);
    border:1px solid color-mix(in srgb,var(--accent,#00f0a3) 25%,var(--border));border-radius:9px;padding:7px 10px;margin-bottom:11px;line-height:1.4;}
  #aaMacroTerminal .desk-block{margin:0 0 11px;}
  #aaMacroTerminal .desk-block-h{font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);margin-bottom:5px;}
  #aaMacroTerminal .desk-block-h.ok{color:var(--bull);} #aaMacroTerminal .desk-block-h.neg{color:var(--bear);}
  #aaMacroTerminal .desk-block-h.adapt{color:var(--accent,#00f0a3);} #aaMacroTerminal .desk-block-h.warn{color:var(--neutral,#e0a340);}
  #aaMacroTerminal .desk-ul{margin:0;padding:0 0 0 2px;list-style:none;display:flex;flex-direction:column;gap:4px;}
  #aaMacroTerminal .desk-ul li{font-size:.78rem;color:var(--text);line-height:1.4;padding-left:14px;position:relative;}
  #aaMacroTerminal .desk-ul li::before{content:'›';position:absolute;left:0;color:var(--text-faint);font-weight:800;}
  #aaMacroTerminal .desk-cause{display:flex;align-items:center;gap:9px;margin-bottom:5px;}
  #aaMacroTerminal .desk-cause-l{font-size:.74rem;color:var(--text);min-width:120px;flex:none;}
  #aaMacroTerminal .desk-bar{flex:1;height:7px;border-radius:5px;background:var(--panel-2);overflow:hidden;border:1px solid var(--border);}
  #aaMacroTerminal .desk-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--bear),var(--neutral,#e0a340) 55%,var(--bull));}
  #aaMacroTerminal .desk-cause-r{font-family:var(--font-mono);font-size:.7rem;font-weight:700;min-width:78px;text-align:right;flex:none;}
  #aaMacroTerminal .desk-cause-r.pos{color:var(--bull);} #aaMacroTerminal .desk-cause-r.neg{color:var(--bear);}
  #aaMacroTerminal .desk-pairs{display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
  #aaMacroTerminal .desk-pair-lbl{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);margin:0 2px 0 4px;}
  #aaMacroTerminal .desk-pair{font-family:var(--font-mono);font-size:.7rem;font-weight:700;padding:3px 9px;border-radius:8px;border:1px solid var(--border);}
  #aaMacroTerminal .desk-pair.pos{color:var(--bull);background:color-mix(in srgb,var(--bull) 12%,transparent);border-color:color-mix(in srgb,var(--bull) 30%,transparent);}
  #aaMacroTerminal .desk-pair.neg{color:var(--bear);background:color-mix(in srgb,var(--bear) 12%,transparent);border-color:color-mix(in srgb,var(--bear) 30%,transparent);}
  #aaMacroTerminal .desk-outlook{font-size:.78rem;color:var(--text);line-height:1.5;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:9px 11px;margin-top:2px;}
  #aaMacroTerminal .desk-outlook b{color:var(--text);}
  #aaMacroTerminal .desk-foot{font-size:.63rem;color:var(--text-faint);margin-top:9px;line-height:1.45;}
  @media (max-width:640px){ #aaMacroTerminal .desk-strip{grid-template-columns:repeat(2,1fr);} #aaMacroTerminal .desk-cause-l{min-width:96px;} }
  /* live-card adaptive confidence + held badge */
  #aaMacroTerminal .sig-conf{font-size:.6rem;font-weight:800;letter-spacing:.02em;padding:1px 7px;border-radius:10px;border:1px solid transparent;white-space:nowrap;}
  #aaMacroTerminal .sig-conf.hi{color:var(--bull);background:color-mix(in srgb,var(--bull) 14%,transparent);border-color:color-mix(in srgb,var(--bull) 32%,transparent);}
  #aaMacroTerminal .sig-conf.mid{color:var(--neutral,#e0a340);background:color-mix(in srgb,var(--neutral,#e0a340) 15%,transparent);}
  #aaMacroTerminal .sig-conf.lo{color:var(--bear);background:color-mix(in srgb,var(--bear) 13%,transparent);}
  #aaMacroTerminal .sig-conf.held{color:var(--text);background:color-mix(in srgb,var(--neutral,#e0a340) 22%,transparent);border-color:color-mix(in srgb,var(--neutral,#e0a340) 45%,transparent);}
  #aaMacroTerminal .sig-c-adapt{display:block;font-size:.68rem;color:var(--neutral,#e0a340);margin-top:4px;line-height:1.4;}
  #aaMacroTerminal .sig-tunechip{font-size:.6rem;font-weight:800;letter-spacing:.02em;padding:1px 7px;border-radius:10px;white-space:nowrap;
    color:var(--accent,#00f0a3);background:color-mix(in srgb,var(--accent,#00f0a3) 13%,transparent);border:1px solid color-mix(in srgb,var(--accent,#00f0a3) 30%,transparent);}
  #aaMacroTerminal .sig-card.suppressed{opacity:.82;}
  #aaMacroTerminal .sig-card.suppressed .sig-accent{background:var(--neutral,#e0a340)!important;}
  #aaMacroTerminal #signalsViewChips .chip{font-weight:700;}
  #aaMacroTerminal .sig-c-status{font-size:.64rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--text-faint);background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:1px 7px;}
  #aaMacroTerminal .sig-tps{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;}
  #aaMacroTerminal .sig-tp{font-family:var(--font-mono);font-size:.66rem;font-weight:600;color:var(--text-faint);background:var(--panel-2);border:1px solid var(--border);border-radius:5px;padding:2px 6px;white-space:nowrap;}
  #aaMacroTerminal .sig-tp.sl{color:var(--bear);border-color:color-mix(in srgb,var(--bear) 35%,var(--border));}
  #aaMacroTerminal .sig-tp.hit{color:var(--bull);border-color:color-mix(in srgb,var(--bull) 45%,var(--border));background:var(--bull-dim);}
  #aaMacroTerminal .sig-out-badge{font-size:.64rem;font-weight:800;letter-spacing:.04em;padding:2px 8px;border-radius:6px;}
  #aaMacroTerminal .sig-out-badge.win{color:var(--bull);background:var(--bull-dim);}
  #aaMacroTerminal .sig-out-badge.loss{color:var(--bear);background:var(--bear-dim);}
  #aaMacroTerminal .sig-out-badge.be{color:var(--neutral);background:var(--neutral-dim);}
  #aaMacroTerminal .sig-out-badge.flat{color:var(--text-faint);background:var(--panel-2);border:1px solid var(--border);}
  #aaMacroTerminal .sig-card.hist{cursor:default;}
  #aaMacroTerminal .sig-card.hist:hover{transform:none;box-shadow:none;border-color:var(--border);}
  #aaMacroTerminal .sig-card.hist.win .sig-accent{background:linear-gradient(180deg,var(--bull),color-mix(in srgb,var(--bull) 30%,transparent));}
  #aaMacroTerminal .sig-card.hist.loss .sig-accent{background:linear-gradient(180deg,var(--bear),color-mix(in srgb,var(--bear) 30%,transparent));}
  #aaMacroTerminal .sig-card.hist.be .sig-accent{background:var(--neutral);}
  #aaMacroTerminal .sig-card.hist.flat .sig-accent{background:var(--border-strong);}
  @media (max-width:640px){ #aaMacroTerminal .sig-mt5-sub{display:none;} }

  /* v1078 — closed-signal trade-detail modal */
  #aaMacroTerminal #sigDetail{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:20px;}
  #aaMacroTerminal #sigDetail[hidden]{display:none;}
  #aaMacroTerminal #sigDetail .sig-modal-backdrop{position:absolute;inset:0;background:rgba(20,19,17,.62);backdrop-filter:blur(3px);}
  #aaMacroTerminal #sigDetail .sig-modal-card{position:relative;z-index:1;width:min(460px,94vw);max-height:88vh;overflow-y:auto;
    background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:calc(20px + env(safe-area-inset-top, 0px)) 20px 22px;box-shadow:0 24px 60px rgba(0,0,0,.5);
    animation:mt_reveal .38s cubic-bezier(.22,1,.36,1) both;}
  #aaMacroTerminal #sigDetail .sig-modal-close{position:absolute;right:12px;top:12px;background:var(--panel-2);border:1px solid var(--border);color:var(--text-faint);
    width:30px;height:30px;border-radius:8px;cursor:pointer;font-size:.9rem;}
  #aaMacroTerminal #sigDetail .sig-modal-close:hover{color:var(--bear);border-color:var(--bear);}
  @media (max-width:820px){
    #aaMacroTerminal #sigDetail .sig-modal-close{top:calc(env(safe-area-inset-top, 0px) + 12px);}
  }
  #aaMacroTerminal #sigDetail .sd-head{border-bottom:1px solid var(--border-soft);padding-bottom:14px;margin-bottom:14px;}
  #aaMacroTerminal #sigDetail .sd-h-top{display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
  #aaMacroTerminal #sigDetail .sd-pair{font-size:1.35rem;font-weight:800;}
  #aaMacroTerminal #sigDetail .sd-h-sub{font-size:.78rem;color:var(--text-faint);font-family:var(--font-mono);margin-top:6px;}
  #aaMacroTerminal #sigDetail .sd-r{font-family:var(--font-mono);font-size:2rem;font-weight:800;margin-top:8px;}
  #aaMacroTerminal #sigDetail .sd-r.pos{color:var(--bull);} #aaMacroTerminal #sigDetail .sd-r.neg{color:var(--bear);}
  #aaMacroTerminal #sigDetail .sd-sec{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin:16px 0 8px;}
  /* v1453 (B93) — audit note when one candle traded both a TP and the stop. */
  #aaMacroTerminal #sigDetail .sd-note{margin-top:12px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--panel);color:var(--text-dim);font-size:.74rem;line-height:1.5;}
  #aaMacroTerminal #sigDetail .sd-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;}
  #aaMacroTerminal #sigDetail .sd-row{display:flex;justify-content:space-between;gap:10px;font-size:.86rem;border-bottom:1px solid var(--border-soft);padding-bottom:5px;}
  #aaMacroTerminal #sigDetail .sd-l{color:var(--text-faint);} #aaMacroTerminal #sigDetail .sd-v{font-family:var(--font-mono);font-weight:600;text-align:right;}
  #aaMacroTerminal #sigDetail .sd-v.pos{color:var(--bull);} #aaMacroTerminal #sigDetail .sd-v.neg{color:var(--bear);}
  #aaMacroTerminal #sigDetail .sd-tps{display:flex;flex-direction:column;gap:5px;}
  #aaMacroTerminal #sigDetail .sd-tp{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:.82rem;color:var(--text-faint);
    background:var(--panel-2);border:1px solid var(--border);border-radius:7px;padding:6px 10px;}
  #aaMacroTerminal #sigDetail .sd-tp.hit{color:var(--bull);border-color:color-mix(in srgb,var(--bull) 45%,var(--border));background:var(--bull-dim);}
  #aaMacroTerminal #sigDetail .sd-chart-btn{width:100%;margin-top:18px;background:var(--accent);color:#1f1e1d;border:0;border-radius:10px;padding:11px;font-weight:700;font-size:.9rem;cursor:pointer;}
  #aaMacroTerminal #sigDetail .sd-chart-btn:hover{filter:brightness(1.06);}
  #aaMacroTerminal .sig-out-badge.live{color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent);}

/* ==========================================================================
   v1228 — DESKTOP "chart-first", SLIM (body.aa-terminal-bottomnav, >=761px).
   The tabs live ON the pair/timeframe lane. One universal bottom dock (built in
   JS as #aaDeskDockWrap > [#railNewsSub][#aaDeskDock]) holds:
       [ news sub-tabs bar (Macro Bias / Data Feed / Events / Signals) ]   <- above
       [ pair/TF header (left)              |    nav tabs (right) ]        <- the lane
   The pair/TF header is relocated out of #chartHost into the dock so it can sit on
   the same row as the tabs; it is hidden on non-chart tabs. Also kills the old left
   rail + its 56px left bezel.
   ========================================================================== */
@media (min-width:761px) and (min-height:501px),(min-width:761px) and (pointer:fine){
  body.aa-terminal-bottomnav #aaMacroTerminal{ flex-direction:column !important; }
  /* chart-first content column: no card chrome, no left bezel */
  body.aa-terminal-bottomnav #aaMacroTerminal .main-col{ order:1 !important; min-width:0 !important; margin-left:0 !important; }
  body.aa-terminal-bottomnav #aaMacroTerminal .sticky-top{ display:block !important; }
  body.aa-terminal-bottomnav #aaMacroTerminal .stage{ padding:0 !important; margin-left:0 !important; }
  body.aa-terminal-bottomnav #aaMacroTerminal .app-frame{ padding:0 !important; border:none !important; border-radius:0 !important; box-shadow:none !important; background:transparent !important; }
  body.aa-terminal-bottomnav #aaMacroTerminal .frame-scroll{ border:none !important; border-radius:0 !important; }
  /* chart fills #chartHost now that the header has been lifted out to the dock */
  body.aa-terminal-bottomnav #aaApp.aa-terminal-active #chartHost{ display:flex !important; flex-direction:column !important; }
  body.aa-terminal-bottomnav #aaApp.aa-terminal-active #chartHost > .aa-chart-page,
  body.aa-terminal-bottomnav #aaApp.aa-terminal-active #chartHost > .chart-stack{ flex:1 1 auto !important; min-height:0 !important; height:auto !important; }

  /* ---------- the universal bottom dock ----------
     ONE lane, ONE background (var(--panel): white in light / dark panel in dark) so the
     pair/TF area and the tabs read as a single continuous lane — every child is transparent
     and there are NO dividers between the header and the tabs (no colour mismatch, no gap). */
  body.aa-terminal-bottomnav #aaDeskDockWrap{
    order:9 !important; flex:0 0 auto !important; display:flex !important; flex-direction:column !important;
    background:var(--panel) !important; border-top:1px solid var(--border) !important; z-index:40 !important;
    /* v1252 — pin the whole lane to the viewport width and clip any horizontal spill so the tab group can
       never run off the right edge (the "tabs lane cut off" bug on some desktops). */
    width:100% !important; max-width:100% !important; overflow:hidden !important; box-sizing:border-box !important;
  }
  /* THE LANE: [ pair/TF header (left) ][ ONE contiguous, uniform 8-tab segmented group ].
     • All 8 tabs (Watchlist·Chart·Signals·Settings·Macro Bias·Data Feed·Events·AI Chat) are one
       segmented control — same size/style, NO gaps between them (borders collapse).
     • LOCKED: off the Chart tab the pair/TF header is hidden with visibility (its box KEEPS its
       width), so the tabs never shift when you switch pages.
     • When the window is too narrow the WHOLE lane scrolls sideways (no overlap) — a right-edge
       fade + chevron hints there's more. */
  /* The DOCK does NOT scroll — the pair/TF header is LOCKED in place; only #aaDeskTabs scrolls. */
  body.aa-terminal-bottomnav #aaDeskDock{
    --aa-dock-icon-size:clamp(18px, 2.15vw, 28px); --aa-dock-icon-gap:clamp(1px, .45vw, 6px);
    display:flex !important; align-items:center !important; min-height:44px !important;
    background:transparent !important; padding:0 14px !important; gap:6px !important; justify-content:flex-start !important;
    overflow:visible !important;
    /* v1252 — the dock fills the wrap and never grows past it; only #aaDeskTabs scrolls inside. */
    width:100% !important; max-width:100% !important; min-width:0 !important; box-sizing:border-box !important; flex-wrap:nowrap !important;
  }
  /* pair/TF header: FIXED (never scrolls) and sized to its CONTENT. The grid lives on the
     .chart-sim-topbar INSIDE <header>, and its minmax(...190px...1fr) columns reserve ~500px of empty
     width even when the right/centre icon columns are empty — that invisible width is what pushed the
     tabs far right and "covered" them. Switch it to inline-flex so empty parts collapse and the tab
     group starts right after the analysis-hub (⋯) button. */
  body.aa-terminal-bottomnav #aaDeskDock > header{
    flex:0 0 auto !important; align-self:center !important; margin:0 !important; width:auto !important;
    border:none !important; box-shadow:none !important; background:transparent !important;
  }
  body.aa-terminal-bottomnav #aaDeskDock > header > .chart-sim-topbar{
    display:inline-flex !important; align-items:center !important; gap:8px !important;
    width:auto !important; min-width:0 !important; max-width:none !important; padding:0 !important; height:28px !important;
    grid-template-columns:none !important;
  }
  /* Chart tools leave the fixed header for their own dock column. */
  body.aa-terminal-bottomnav #aaDeskDock > header .tv-center-icons,
  body.aa-terminal-bottomnav #aaDeskDock > header .tv-right-icons{ display:none !important; }
  /* the ticker line + its left column just size to content (no forced min-width) */
  body.aa-terminal-bottomnav #aaDeskDock > header .tv-left,
  body.aa-terminal-bottomnav #aaDeskDock > header .tv-ticker-line{ flex:0 0 auto !important; width:auto !important; min-width:0 !important; }
  /* #aaDeskTabs — the ONLY horizontally-scrolling part of the lane (the tabs). It fills the space to the
     right of the locked pair/TF header and scrolls when the tabs don't fit. */
  body.aa-terminal-bottomnav #aaDeskTabs{
    /* v1252 — flex-basis 0 (not auto): the tab group takes ONLY the space left after the pair/TF header and
       scrolls internally, so it can never expand the lane past the viewport and get clipped. */
    flex:1 1 0 !important; min-width:0 !important; width:auto !important; display:flex !important; align-items:center !important; gap:2px !important;
    overflow-x:auto !important; overflow-y:hidden !important; scrollbar-width:none !important;
  }
  body.aa-terminal-bottomnav #aaDeskTabs,
  body.aa-terminal-bottomnav #aaDeskTabs > .nav-rail,
  body.aa-terminal-bottomnav #aaDeskTabs > .rail-sub,
  body.aa-terminal-bottomnav #aaDeskChartTools{
    flex-wrap:nowrap !important; white-space:nowrap !important;
  }
  body.aa-terminal-bottomnav #aaDeskChartTools{
    display:flex !important; align-items:center !important; justify-content:space-between !important; flex:1 1 0 !important; min-width:0 !important;
    gap:var(--aa-dock-icon-gap) !important; overflow-x:auto !important; overflow-y:hidden !important; scrollbar-width:none;
    padding:0 8px !important; margin:0 !important; border-right:1px solid var(--border) !important;
  }
  body.aa-terminal-bottomnav #aaDeskChartTools::-webkit-scrollbar{ display:none; }
  body.aa-terminal-bottomnav #aaDeskChartTools > *{ flex:0 0 var(--aa-dock-icon-size) !important; width:var(--aa-dock-icon-size) !important; min-width:var(--aa-dock-icon-size) !important; max-width:var(--aa-dock-icon-size) !important; height:var(--aa-dock-icon-size) !important; min-height:var(--aa-dock-icon-size) !important; }
  body.aa-terminal-bottomnav #aaDeskChartTools button,
  body.aa-terminal-bottomnav #aaDeskChartTools .aa-tool-dropdown,
  body.aa-terminal-bottomnav #aaDeskChartTools .aa-tool-dropdown .top-tool-btn,
  body.aa-terminal-bottomnav #aaDeskChartTools .aa-lane-quick-grp{
    box-sizing:border-box !important; width:var(--aa-dock-icon-size) !important; min-width:var(--aa-dock-icon-size) !important; max-width:var(--aa-dock-icon-size) !important; height:var(--aa-dock-icon-size) !important; min-height:var(--aa-dock-icon-size) !important;
  }
  body.aa-terminal-bottomnav #aaDeskChartTools .aa-lane-quick-grp{ display:contents !important; }
  body.aa-terminal-bottomnav #aaDeskChartTools #aaIndicatorsBtn,
  body.aa-terminal-bottomnav #aaDeskChartTools #aaBarTypeBtn{ position:static !important; inset:auto !important; }
  body.aa-terminal-bottomnav #aaDeskChartTools .aa-sr-only{
    position:absolute !important; width:1px !important; height:1px !important; padding:0 !important; margin:-1px !important;
    overflow:hidden !important; clip:rect(0,0,0,0) !important; white-space:nowrap !important; border:0 !important;
  }
  body.aa-terminal-bottomnav #aaDeskChartTools button svg{ width:17px !important; height:17px !important; pointer-events:none; }
  body.aa-terminal-bottomnav #aaDeskTabs::-webkit-scrollbar{ display:none !important; }
  /* News Feed is removed from the DESKTOP bar (Data Feed IS the news feed); mobile keeps it. */
  /* Remove News Feed from the DESKTOP bar (Data Feed IS the news feed). Two IDs so it beats the
     uniform `#aaDeskDock .rail-btn{display:inline-flex}` rule that was re-showing it. Mobile keeps it. */
  body.aa-terminal-bottomnav #aaDeskDock #viewNewsBtn,
  body.aa-terminal-bottomnav #aaDeskTabs #viewNewsBtn{ display:none !important; }
  /* horizontal-scroll affordance for the lane */
  body.aa-terminal-bottomnav #aaDeskDockWrap{ position:relative !important; }
  body.aa-terminal-bottomnav #aaDeskDockWrap.aa-dock-scrollable::after{
    content:'' !important; position:absolute !important; right:0; top:0; bottom:0; width:54px !important;
    background:linear-gradient(90deg, transparent, var(--panel)) !important; pointer-events:none !important; z-index:2 !important;
  }
  body.aa-terminal-bottomnav #aaDeskDockWrap.aa-dock-scrollable::before{
    content:'\203A' !important; position:absolute !important; right:12px !important; top:50%; transform:translateY(-50%);
    font-size:20px !important; font-weight:700 !important; color:var(--text-dim) !important; pointer-events:none !important; z-index:3 !important;
    animation:aaDockHint 1.4s ease-in-out infinite !important;
  }
  @keyframes aaDockHint{ 0%,100%{ transform:translateY(-50%) translateX(0); opacity:.55 } 50%{ transform:translateY(-50%) translateX(3px); opacity:1 } }

  /* NEWS BIAS: kill the horizontal scroll-clip on the pair/TF line for DESKTOP ONLY so the label
     shows in full (mobile keeps its own scrolling lane, untouched). */
  body.aa-terminal-bottomnav #aaDeskDock > header,
  body.aa-terminal-bottomnav #aaDeskDock .tv-left,
  body.aa-terminal-bottomnav #aaDeskDock .tv-ticker-line{ overflow:visible !important; }
  body.aa-terminal-bottomnav #aaDeskDock > header .tv-newsbias{
    display:inline-flex !important; height:28px; padding:0 9px; margin-left:8px;
    font-size:10.5px; font-weight:800; max-width:none !important; overflow:visible !important;
    white-space:nowrap; cursor:pointer;
  }
  body.aa-terminal-bottomnav #aaDeskDock #aaSymbolSelect,
  body.aa-terminal-bottomnav #aaDeskDock #aaTfSelect{
    height:28px !important; min-height:28px !important; max-height:28px !important;
  }
  body.aa-terminal-bottomnav #aaDeskDock > header .tv-newsbias .k{ margin-right:4px; }

  /* ---- the tab containers are one clean row; small, even spacing (premium, TradingView-style) ---- */
  body.aa-terminal-bottomnav #aaDeskTabs > .nav-rail,
  body.aa-terminal-bottomnav #aaDeskTabs > .rail-sub,
  body.aa-terminal-bottomnav #aaDeskTabs > .rail-sub[hidden]{
    display:flex !important; flex-direction:row !important; align-items:center !important;
    flex:0 0 auto !important; gap:2px !important; margin:0 2px 0 0 !important; padding:0 !important; border:none !important; background:transparent !important;
  }
  body.aa-terminal-bottomnav #aaMacroTerminal .nav-rail{
    position:static !important; left:auto !important; top:auto !important; bottom:auto !important;
    width:auto !important; min-width:0 !important; height:auto !important; overflow:visible !important; transition:none !important;
  }
  body.aa-terminal-bottomnav #aaMacroTerminal .nav-rail:hover{ width:auto !important; }
  body.aa-terminal-bottomnav #aaMacroTerminal .rail-brand,
  body.aa-terminal-bottomnav #aaMacroTerminal .rail-clock{ display:none !important; }
  /* EVERY tab button — flat, no box/border, blends into the lane; subtle hover; subtle accent when active */
  body.aa-terminal-bottomnav #aaDeskDock .rail-btn,
  body.aa-terminal-bottomnav #aaDeskDock .rail-subbtn{
    flex:0 0 auto !important; height:30px !important; padding:0 11px !important; margin:0 2px 0 0 !important;
    display:inline-flex !important; align-items:center !important; justify-content:center !important; gap:0 !important;
    border:none !important; border-radius:7px !important; background:transparent !important;
    color:var(--text-dim) !important; font-size:.75rem !important; font-weight:600 !important; letter-spacing:.005em !important;
    white-space:nowrap !important; text-align:center !important; cursor:pointer !important;
    transition:background .12s ease, color .12s ease !important;
  }
  /* Main desktop navigation stays icon-first. Text remains available to assistive technology. */
  body.aa-terminal-bottomnav #aaDeskDock .rail-btn{ width:28px !important; min-width:28px !important; max-width:28px !important; height:28px !important; min-height:28px !important; padding:0 !important; }
  body.aa-terminal-bottomnav #aaDeskDock .rail-btn .rail-ico{ display:block !important; width:17px !important; height:17px !important; }
  body.aa-terminal-bottomnav #aaDeskDock .rail-btn .rail-label{
    position:absolute !important; width:1px !important; height:1px !important; padding:0 !important; margin:-1px !important;
    overflow:hidden !important; clip:rect(0,0,0,0) !important; white-space:nowrap !important; border:0 !important;
  }
  body.aa-terminal-bottomnav #aaDeskDock .rail-subbtn,
  body.aa-terminal-bottomnav #aaDeskChartTools .aa-lane-trade{
    width:28px !important; min-width:28px !important; max-width:28px !important; height:28px !important; min-height:28px !important; padding:0 !important;
  }
  body.aa-terminal-bottomnav #aaDeskDock .rail-subbtn .aa-dock-icon{
    display:inline-flex !important; width:17px !important; height:17px !important; align-items:center !important; justify-content:center !important;
  }
  body.aa-terminal-bottomnav #aaDeskDock .rail-subbtn .aa-dock-icon svg{ width:17px !important; height:17px !important; }
  body.aa-terminal-bottomnav #aaDeskDock .rail-subbtn .aa-dock-label,
  body.aa-terminal-bottomnav #aaDeskChartTools .aa-lane-trade .aa-trade-btn-label{
    position:absolute !important; width:1px !important; height:1px !important; padding:0 !important; margin:-1px !important;
    overflow:hidden !important; clip:rect(0,0,0,0) !important; white-space:nowrap !important; border:0 !important;
  }
  /* The dock action area fills available width by distributing fixed-size icon controls. */
  body.aa-terminal-bottomnav #aaDeskTabs{
    display:flex !important; align-items:center !important; justify-content:space-between !important; gap:0 !important;
  }
  body.aa-terminal-bottomnav #aaDeskTabs > .nav-rail,
  body.aa-terminal-bottomnav #aaDeskTabs > .rail-sub,
  body.aa-terminal-bottomnav #aaDeskTabs > .rail-sub[hidden]{ display:contents !important; }
  body.aa-terminal-bottomnav #aaDeskTabs .rail-btn,
  body.aa-terminal-bottomnav #aaDeskTabs .rail-subbtn{ flex:0 0 28px !important; width:28px !important; max-width:28px !important; margin:0 !important; }
  body.aa-terminal-bottomnav #aaDeskChartTools .aa-lane-icobtn,
  body.aa-terminal-bottomnav #aaDeskChartTools .aa-lane-quick{
    background:transparent !important; border-color:transparent !important; color:var(--text-dim) !important;
  }
  body.aa-terminal-bottomnav #aaDeskChartTools .aa-lane-icobtn:hover,
  body.aa-terminal-bottomnav #aaDeskChartTools .aa-lane-quick:hover{ background:color-mix(in srgb, var(--text) 8%, transparent) !important; color:var(--text) !important; }
  body.aa-terminal-bottomnav #aaDeskChartTools .aa-lane-icobtn.is-on,
  body.aa-terminal-bottomnav #aaDeskChartTools .aa-lane-icobtn.active,
  body.aa-terminal-bottomnav #aaDeskChartTools .aa-lane-icobtn[aria-pressed="true"]{
    background:color-mix(in srgb, var(--accent) 14%, transparent) !important; border-color:color-mix(in srgb, var(--accent) 32%, transparent) !important; color:var(--accent) !important;
  }

  /* At usable desktop widths, treat every dock icon as one equal action item. The fixed
     pair/timeframe/news-bias segment stays intact while the remaining space is shared evenly. */
  @media (min-width:1024px){
    body.aa-terminal-bottomnav #aaDeskDock{
      display:grid !important; grid-template-columns:auto repeat(var(--aa-dock-grid-items, 20), minmax(var(--aa-dock-icon-size), 1fr)) !important;
      grid-template-rows:minmax(0,1fr) !important; grid-auto-flow:column !important; grid-auto-columns:minmax(var(--aa-dock-icon-size),1fr) !important;
      column-gap:var(--aa-dock-icon-gap) !important; align-items:center !important; justify-content:stretch !important;
    }
    body.aa-terminal-bottomnav #aaDeskDock > header{ grid-column:1 !important; }
    body.aa-terminal-bottomnav #aaDeskChartTools,
    body.aa-terminal-bottomnav #aaDeskTabs,
    body.aa-terminal-bottomnav #aaDeskChartTools .aa-tool-dropdown,
    body.aa-terminal-bottomnav #aaDeskTabs > .nav-rail,
    body.aa-terminal-bottomnav #aaDeskTabs > .rail-sub,
    body.aa-terminal-bottomnav #aaDeskTabs > .rail-sub[hidden]{ display:contents !important; }
    body.aa-terminal-bottomnav #aaDeskChartTools > *,
    body.aa-terminal-bottomnav #aaDeskChartTools button,
    body.aa-terminal-bottomnav #aaDeskTabs .rail-btn,
    body.aa-terminal-bottomnav #aaDeskTabs .rail-subbtn{
      justify-self:center !important; width:var(--aa-dock-icon-size) !important; min-width:var(--aa-dock-icon-size) !important; max-width:var(--aa-dock-icon-size) !important;
      height:var(--aa-dock-icon-size) !important; min-height:var(--aa-dock-icon-size) !important; margin:0 !important;
    }
    body.aa-terminal-bottomnav #aaDeskDock .rail-btn,
    body.aa-terminal-bottomnav #aaDeskDock .rail-subbtn{
      display:flex !important; box-sizing:border-box !important; justify-self:center !important;
      width:var(--aa-dock-icon-size) !important; min-width:var(--aa-dock-icon-size) !important; max-width:var(--aa-dock-icon-size) !important;
      height:var(--aa-dock-icon-size) !important; min-height:var(--aa-dock-icon-size) !important; padding:0 !important;
    }
  }
  body.aa-terminal-bottomnav #aaDeskDock .rail-btn:hover,
  body.aa-terminal-bottomnav #aaDeskDock .rail-subbtn:hover{ background:color-mix(in srgb, var(--text) 9%, transparent) !important; color:var(--text) !important; }
  body.aa-terminal-bottomnav #aaDeskDock .rail-btn.active,
  body.aa-terminal-bottomnav #aaDeskDock .rail-subbtn.active{ background:var(--accent-dim) !important; color:var(--accent) !important; }

  /* Signals page: lift the Live/History toggle above the dock, and give the AI Performance Desk (which
     sits at the bottom of the page) enough clearance so the fixed toggle + dock never cover it. */
  body.aa-terminal-bottomnav #aaMacroTerminal .sig-viewbar{ bottom:68px !important; }
  body.aa-terminal-bottomnav #aaMacroTerminal #signalsPane .sig-list{ padding-bottom:14px !important; }
  body.aa-terminal-bottomnav #aaMacroTerminal #signalsPane .sig-aidesk{ margin-bottom:150px !important; }

  /* fullscreen collapses the whole dock so the chart is edge-to-edge */
  body.aa-fullscreen.aa-terminal-bottomnav #aaDeskDockWrap{ display:none !important; }
}

/* MOBILE: the News sub-toggle (Macro Bias / Data Feed / Events / AI Chat) must NOT show on the
   Signals page — Signals is its own tab there. (Desktop keeps them: they are normal top tabs now.) */
@media (max-width:760px),(max-height:500px) and (pointer:coarse){
  /* Reserve a complete control lane above the bottom navigation. */
  #aaMacroTerminal #chartHost > header{
    position:relative !important; z-index:4 !important; flex:0 0 35px !important; min-height:35px !important; max-height:35px !important;
    box-sizing:border-box !important; overflow:hidden !important;
  }
  #aaMacroTerminal .nav-rail{ position:relative !important; z-index:5 !important; flex-shrink:0 !important; }
  #aaMacroTerminal.view-signals .mt-news-bottomsub{ display:none !important; }
}

/* The desktop dock never clips the pair/timeframe selectors or the News Bias label on any page;
   the tabs own the remaining space and scroll instead. */
@media (min-width:761px) and (min-height:501px),(min-width:761px) and (pointer:fine){
  body.aa-terminal-bottomnav #aaDeskDock > header .tv-left,
  body.aa-terminal-bottomnav #aaDeskDock > header .tv-ticker-line{max-width:none!important;overflow:visible!important;flex:0 0 auto!important;}
  body.aa-terminal-bottomnav #aaDeskDock > header #aaSymbolSelect,
  body.aa-terminal-bottomnav #aaDeskDock > header #aaTfSelect,
  body.aa-terminal-bottomnav #aaDeskDock > header .aa-selector-dock{display:inline-flex!important;visibility:visible!important;flex:0 0 auto!important;}
  body.aa-terminal-bottomnav #aaDeskDock > header .tv-newsbias{display:inline-flex!important;visibility:visible!important;flex:0 0 auto!important;max-width:none!important;min-width:max-content!important;overflow:visible!important;text-overflow:clip!important;}
  body.aa-terminal-bottomnav #aaDeskDock > header .tv-newsbias .group{max-width:none!important;overflow:visible!important;text-overflow:clip!important;}
  body.aa-terminal-bottomnav #aaDeskTabs{min-width:0!important;overflow-x:auto!important;}
  /* Vertically centre the pair/timeframe/News Bias controls inside the dock lane. */
  body.aa-terminal-bottomnav #aaDeskDock{align-items:center!important;}
  body.aa-terminal-bottomnav #aaDeskDock > header{display:flex!important;align-items:center!important;align-self:center!important;height:100%!important;min-height:0!important;margin:0!important;padding:0!important;transform:none!important;}
  body.aa-terminal-bottomnav #aaDeskDock > header > .chart-sim-topbar{align-items:center!important;align-self:center!important;height:100%!important;min-height:0!important;margin:0!important;padding:0!important;}
  body.aa-terminal-bottomnav #aaDeskDock > header .tv-left,
  body.aa-terminal-bottomnav #aaDeskDock > header .tv-ticker-line{display:flex!important;align-items:center!important;align-self:center!important;height:100%!important;margin:0!important;padding:0!important;}
  body.aa-terminal-bottomnav #aaDeskDock > header #aaSymbolSelect,
  body.aa-terminal-bottomnav #aaDeskDock > header #aaTfSelect,
  body.aa-terminal-bottomnav #aaDeskDock > header .tv-newsbias{align-self:center!important;margin-top:0!important;margin-bottom:0!important;position:static!important;top:auto!important;transform:none!important;}
  body.aa-terminal-bottomnav #aaDeskDock > header .tv-newsbias{align-items:center!important;box-sizing:border-box!important;height:28px!important;line-height:1!important;}
}

/* The signed-in compact terminal owns this news-bias lane; keep it visibly separate from the fixed nav. */
@media (max-width:760px),(max-height:500px) and (pointer:coarse){
  #aaMacroTerminal .main-col{order:1!important;flex:1 1 auto!important;min-height:0!important;}
  #aaMacroTerminal #chartHost{flex:1 1 auto!important;min-height:0!important;overflow:hidden!important;}
  #aaMacroTerminal #chartHost > header{position:relative!important;z-index:4!important;flex:0 0 35px!important;min-height:35px!important;max-height:35px!important;width:100%!important;box-sizing:border-box!important;overflow:hidden!important;background:var(--panel)!important;border-top:1px solid var(--border)!important;}
  #aaMacroTerminal #chartHost > header{flex-basis:42px!important;min-height:42px!important;max-height:42px!important;}
  #aaMacroTerminal #chartHost > .trade-bar{position:relative!important;z-index:2!important;flex:0 0 31px!important;min-height:31px!important;}
  #aaMacroTerminal #chartHost > .aa-chart-page,
  #aaMacroTerminal #chartHost > .chart-stack{min-height:0!important;}
  #aaMacroTerminal .nav-rail{position:relative!important;z-index:5!important;order:2!important;flex:0 0 auto!important;}
}

/* v1478 — closed-market honesty on the Macro Bias board. */
#aaMacroTerminal .pair-card[data-market="closed"],
#aaMacroTerminal .macro-card[data-market="closed"],
#aaMacroTerminal [id^="pcard-"][data-market="closed"]{
  filter:grayscale(.82)!important;
  border-color:color-mix(in srgb,var(--text-faint,#8f8d84) 42%,var(--line,#3d3d3a))!important;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface,#30302e) 82%,#8f8d84 18%),color-mix(in srgb,var(--bg-2,#1f1e1d) 88%,#8f8d84 12%))!important;
}
#aaMacroTerminal [id^="pcard-"][data-market="closed"]::after{
  content:"Market closed";position:absolute;right:12px;top:12px;z-index:3;
  padding:4px 8px;border-radius:999px;border:1px solid color-mix(in srgb,var(--text-faint,#8f8d84) 45%,transparent);
  background:color-mix(in srgb,var(--surface,#30302e) 78%,transparent);color:var(--text-dim,#c2c0b6);
  font-size:.62rem;font-weight:850;letter-spacing:.05em;text-transform:uppercase;
}
#aaMacroTerminal .mt-market-closed{
  border-color:color-mix(in srgb,var(--text-faint,#8f8d84) 42%,var(--line,#3d3d3a))!important;
  background:color-mix(in srgb,var(--surface-2,#3a3a37) 75%,#8f8d84 25%)!important;
}

/* Macro bias pairs are decision cards, not loose text rows. */
#aaMacroTerminal #pairsMain .card{
  display:grid!important;
  gap:10px!important;
  min-width:0!important;
  padding:14px!important;
  border:1px solid color-mix(in srgb,var(--border) 76%,var(--text) 24%)!important;
  border-radius:8px!important;
  background:linear-gradient(145deg,color-mix(in srgb,var(--panel) 96%,var(--text) 4%),var(--panel))!important;
  box-shadow:inset 0 1px 0 color-mix(in srgb,var(--text) 9%,transparent),0 8px 20px rgba(0,0,0,.16)!important;
}
#aaMacroTerminal #pairsMain .card[data-bias="bullish"]{border-left:4px solid var(--bull)!important;background:linear-gradient(145deg,color-mix(in srgb,var(--bull) 10%,var(--panel)),var(--panel) 58%)!important;}
#aaMacroTerminal #pairsMain .card[data-bias="bearish"]{border-left:4px solid var(--bear)!important;background:linear-gradient(145deg,color-mix(in srgb,var(--bear) 10%,var(--panel)),var(--panel) 58%)!important;}
#aaMacroTerminal #pairsMain .card[data-bias="neutral"]{border-left:4px solid var(--neutral)!important;background:linear-gradient(145deg,color-mix(in srgb,var(--neutral) 8%,var(--panel)),var(--panel) 58%)!important;}
#aaMacroTerminal #pairsMain .card:hover{
  border-color:color-mix(in srgb,var(--accent) 46%,var(--border))!important;
  box-shadow:inset 0 1px 0 color-mix(in srgb,var(--text) 12%,transparent),0 12px 26px rgba(0,0,0,.2)!important;
}
#aaMacroTerminal #pairsMain .card-top{align-items:flex-start!important}
#aaMacroTerminal #pairsMain .card-name{color:var(--text-dim)!important;text-align:right!important}
#aaMacroTerminal #pairsMain .driver{color:var(--text-dim)!important;min-height:2.8em!important}
#aaMacroTerminal #pairsMain .card-foot{padding-top:8px!important;border-top:1px solid var(--border-soft)!important}
