/* ============================================================ zengtrade · Crypto Algo Studio, Bull/Bear Terminal Brand-synced: white base · Plus Jakarta Sans Accent green #00AB4E · navy #0F1A2A · blue #1667D9 ============================================================ */ :root{ --white:#ffffff; --bg:#f4f6fa; /* app canvas */ --surface:#ffffff; --surface-2:#f8fafc; --line:#e6eaf1; --line-2:#d8deea; --navy:#0f1a2a; /* primary text / dark CTA */ --slate:#64748b; --slate-2:#94a3b8; --blue:#1667d9; /* interactive accent */ --green:#00ab4e; /* brand up / bull accent */ --green-d:#079a49; --red:#e5383b; /* down / bear */ --red-d:#cc2a2f; --amber:#e8821f; /* warnings (from brand assets) */ --radius:15px; --radius-s:10px; --shadow:0 1px 2px rgba(16,30,54,.04), 0 4px 14px -6px rgba(16,30,54,.09); --shadow-hover:0 2px 5px rgba(16,30,54,.06), 0 18px 36px -14px rgba(16,30,54,.22); --shadow-lg:0 20px 54px -14px rgba(16,30,54,.30), 0 5px 14px -8px rgba(16,30,54,.14); --ring:0 0 0 3px var(--accent-soft); --tint-down:#fdecec; --tint-warn:#fdf0e0; --tint-info:#eef2f8; --bd-down:#f6c4c5; --bd-warn:#f6dcb8; --up-flash:rgba(0,171,78,.16); --down-flash:rgba(229,56,59,.16); --glass:rgba(255,255,255,.74); --glass-hi:rgba(255,255,255,.75); --sans:'Plus Jakarta Sans',system-ui,-apple-system,sans-serif; --mono:'Roboto Mono',ui-monospace,monospace; /* regime-driven accent (default bull = brand green) */ --accent:#00ab4e; --accent-d:#079a49; --accent-soft:#e6f7ee; --accent-line:#b6e8cc; --gap:14px; } html[data-regime="bull"]{ --accent:#00ab4e; --accent-d:#079a49; --accent-soft:#e7f8ef; --accent-line:#b6e8cc; --gap:15px; } html[data-regime="neutral"]{ --accent:#1667d9; --accent-d:#1257bd; --accent-soft:#e8f0fc; --accent-line:#bcd5f5; --gap:14px; } html[data-regime="bear"]{ --accent:#e5383b; --accent-d:#cc2a2f; --accent-soft:var(--tint-down); --accent-line:var(--bd-down); --gap:11px; } *{box-sizing:border-box} html,body{margin:0;height:100%} html{overflow-x:hidden} .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0} @media(prefers-reduced-motion:reduce){ *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important} .floor-sweep,.regime-sweep{display:none!important} } body{ background: radial-gradient(120% 70% at 100% -15%, var(--accent-soft), transparent 52%), linear-gradient(var(--bg),var(--bg)); color:var(--navy); overflow-x:hidden; font-family:var(--sans); font-size:13.5px; line-height:1.45; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; display:flex; flex-direction:column; height:100vh; overflow-y:hidden; transition:background .5s ease; } /* refined scrollbars */ *::-webkit-scrollbar{width:9px;height:9px} *::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:6px;border:2px solid transparent;background-clip:content-box} *::-webkit-scrollbar-thumb:hover{background:var(--slate-2);background-clip:content-box} *::-webkit-scrollbar-track{background:transparent} :focus-visible{outline:none;box-shadow:var(--ring);border-radius:8px} .num{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.2px} .up{color:var(--green)} .down{color:var(--red)} html[data-regime="bull"] .up{font-weight:700} html[data-regime="bear"] .down{font-weight:700} html[data-regime="bear"] .up{opacity:.75} html[data-regime="bull"] .down{opacity:.78} /* ================= TOP BAR ================= */ .topbar{ display:flex;align-items:center;gap:16px;padding:10px 18px; background:var(--surface);border-bottom:1px solid var(--line); position:sticky;top:0;z-index:50; } /* inline SVG mark: color drives the ensō square via currentColor, so it breathes with the regime */ .brand-logo{height:26px;width:auto;aspect-ratio:1;display:block;color:var(--accent);transition:color .25s} .brand-pro{font-weight:800;font-size:15px;color:var(--navy);letter-spacing:-.3px; padding-left:11px;margin-left:1px;border-left:1px solid var(--line-2)} .brand-pro::after{content:"";display:inline-block;width:6px;height:6px;border-radius:50%; background:var(--accent);margin-left:6px;vertical-align:middle;transition:background .4s} .search{flex:0 1 360px;display:flex;align-items:center;gap:9px;background:var(--surface-2); border:1px solid var(--line);border-radius:10px;padding:8px 12px;color:var(--slate)} .search:focus-within{border-color:var(--accent-line);background:var(--white)} .search .ico{color:var(--slate-2)} .search input{flex:1;border:0;background:transparent;outline:none;font-family:var(--sans); font-size:13px;color:var(--navy)} .search kbd{font-family:var(--mono);font-size:10px;color:var(--slate-2);background:var(--white); border:1px solid var(--line-2);border-radius:5px;padding:1px 6px} .topbar-index{display:flex;gap:6px;margin-left:2px} .tix{display:flex;flex-direction:column;line-height:1.15;padding:4px 11px;border-radius:9px; background:var(--surface-2);border:1px solid var(--line);min-width:96px} .tix-name{font-size:9.5px;color:var(--slate);font-weight:600;letter-spacing:.2px} .tix-row{display:flex;align-items:baseline;gap:6px} .tix-val{font-family:var(--mono);font-size:12.5px;font-weight:600} .tix-chg{font-family:var(--mono);font-size:10.5px;font-weight:600} .topbar-right{margin-left:auto;display:flex;align-items:center;gap:12px} .regime-control{display:flex;align-items:center;gap:8px} .seg{display:flex;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:3px} .seg-btn{border:0;background:transparent;color:var(--slate);font-family:var(--sans);font-weight:600; font-size:12.5px;padding:6px 12px;border-radius:7px;cursor:pointer;display:flex;align-items:center;gap:7px;transition:.16s} .ico{display:block;flex:0 0 auto} .seg-dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto;box-shadow:0 0 0 3px transparent;transition:.2s} .dot-bull{background:var(--green)} .dot-neutral{background:var(--blue)} .dot-bear{background:var(--red)} .dot-amber{background:var(--amber)} .seg-btn.active .seg-dot{box-shadow:0 0 0 3px var(--accent-soft)} .seg-btn:hover{color:var(--navy)} .seg-btn.active{background:var(--white);color:var(--accent);box-shadow:var(--shadow);font-weight:700} .auto-pill{display:flex;align-items:center;gap:7px;cursor:pointer;background:var(--surface-2); border:1px solid var(--line);border-radius:9px;padding:7px 11px;color:var(--slate);font-weight:600;font-size:12px} .auto-pill .auto-conf{font-family:var(--mono);color:var(--slate-2)} .auto-dot{width:8px;height:8px;border-radius:50%;background:var(--slate-2)} .auto-pill.on{border-color:var(--accent-line);color:var(--navy);background:var(--accent-soft)} .auto-pill.on .auto-conf{color:var(--accent-d)} .auto-pill.on .auto-dot{background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);animation:pulse 1.8s infinite} @keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}} .engine-btn{border:1px solid var(--line);background:var(--surface-2);color:var(--navy);display:flex;align-items:center;gap:7px; border-radius:9px;padding:7px 12px;font-family:var(--sans);font-weight:600;font-size:12px;cursor:pointer} .engine-btn .ico{color:var(--accent-d)} .engine-btn:hover{border-color:var(--accent-line);color:var(--accent-d)} .funds-chip{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15;padding-left:12px; border-left:1px solid var(--line)} .funds-chip span{font-size:9.5px;color:var(--slate)} .funds-chip b{font-family:var(--mono);font-size:13px} .profile{width:32px;height:32px;border-radius:9px;background:var(--navy);color:#fff;display:grid; place-items:center;font-weight:700;font-size:11px} /* ================= REGIME INSIGHT BAR ================= */ .regime-bar{display:flex;align-items:center;gap:16px;padding:11px 18px; background:linear-gradient(90deg,var(--accent-soft),var(--surface) 60%); border-bottom:1px solid var(--line);transition:background .4s} .rb-badge{display:flex;align-items:center;gap:9px;flex:0 0 auto} .rb-emo{width:38px;height:38px;border-radius:11px;background:var(--white);border:1px solid var(--accent-line); display:grid;place-items:center;color:var(--accent-d);box-shadow:var(--shadow)} .rb-title{font-weight:800;font-size:15px;letter-spacing:-.2px;line-height:1.1} .rb-title small{display:block;font-weight:600;font-size:10.5px;color:var(--accent-d);letter-spacing:.4px;text-transform:uppercase} .rb-read{flex:1;font-size:12.5px;color:var(--slate);max-width:60ch;line-height:1.4} .rb-read b{color:var(--navy);font-weight:700} .rb-stats{display:flex;gap:8px;flex:0 0 auto} .rb-stat{background:var(--white);border:1px solid var(--line);border-radius:10px;padding:6px 12px;text-align:center;min-width:78px} .rb-stat span{display:block;font-size:9px;color:var(--slate);text-transform:uppercase;letter-spacing:.4px} .rb-stat b{font-family:var(--mono);font-size:15px} /* ================= TERMINAL 3-PANE ================= */ .terminal{flex:1;min-height:0;display:grid;grid-template-columns:300px 1fr 332px;gap:var(--gap);padding:var(--gap) 18px; align-items:stretch;transition:gap .4s,grid-template-columns .4s} html[data-regime="bear"] .terminal{grid-template-columns:332px 1fr 300px} /* risk pane widens left */ .pane{display:flex;flex-direction:column;gap:var(--gap);min-width:0;min-height:0} .topbar,.ticker-bar,.regime-bar{flex-shrink:0} /* app-shell: each column scrolls independently inside the fixed shell */ .pane-center,.pane-right{height:100%;min-height:0;overflow-y:auto;overflow-x:hidden;padding-bottom:2px} .card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)} /* ---- LEFT watchlist ---- */ .pane-left{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius); box-shadow:var(--shadow);overflow:hidden;gap:0;height:100%} .pane-head{display:flex;align-items:center;justify-content:space-between;padding:11px 13px 9px;border-bottom:1px solid var(--line)} .wl-tabs{display:flex;gap:3px} .wl-tab{border:0;background:transparent;color:var(--slate);font-family:var(--sans);font-weight:600; font-size:12px;padding:5px 9px;border-radius:7px;cursor:pointer} .wl-tab.active{background:var(--accent-soft);color:var(--accent-d)} .icon-btn{border:1px solid var(--line);background:var(--surface-2);width:28px;height:28px;border-radius:8px; cursor:pointer;color:var(--slate);font-size:14px;display:grid;place-items:center} .icon-btn:hover{color:var(--accent-d);border-color:var(--accent-line)} .wl-search{display:flex;align-items:center;gap:8px;margin:9px 13px;padding:7px 11px;background:var(--surface-2); border:1px solid var(--line);border-radius:9px;color:var(--slate)} .wl-search input{flex:1;border:0;background:transparent;outline:none;font-family:var(--sans);font-size:12.5px} .wl-meta{display:flex;justify-content:space-between;padding:2px 14px 8px;font-size:10px;color:var(--slate-2); text-transform:uppercase;letter-spacing:.4px;font-weight:600} .wl-rows{overflow-y:auto;flex:1} .wl-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 13px; border-top:1px solid var(--line);cursor:pointer;position:relative} .wl-row:hover{background:var(--surface-2)} .wl-l{min-width:0} .wl-sym{font-weight:700;font-size:12.5px;display:flex;align-items:center;gap:6px} .hold-star{color:var(--amber);display:inline-flex;align-items:center} .wl-sub{font-size:10px;color:var(--slate);margin-top:1px;display:flex;gap:7px;align-items:center} .wl-r{text-align:right;flex:0 0 auto} .wl-ltp{font-family:var(--mono);font-size:12.5px;font-weight:600} .wl-chg{font-family:var(--mono);font-size:10.5px;font-weight:600} .beta{font-family:var(--mono);font-size:9.5px;color:var(--slate-2)} .badge{font-size:8.5px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;padding:2px 6px;border-radius:5px} .b-up{background:var(--accent-soft);color:var(--green-d)} .b-down{background:var(--tint-down);color:var(--red-d)} .b-warn{background:var(--tint-warn);color:var(--amber)} .b-hold{background:var(--tint-info);color:var(--slate)} .spark{width:46px;height:18px;display:block} /* ---- CENTER ---- */ /* ================= INTERACTIVE CHART ================= */ .chart-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius); box-shadow:var(--shadow);padding:0;display:flex;flex-direction:column;height:430px;min-height:300px;overflow:hidden} .ch-bar{display:flex;align-items:center;gap:7px;padding:8px 10px;border-bottom:1px solid var(--line);flex-wrap:wrap} .ch-id{display:flex;align-items:baseline;gap:9px;margin-right:2px} .ch-name{font-weight:800;font-size:15px;letter-spacing:-.3px} .ch-last{font-family:var(--mono);font-size:13px;font-weight:600;color:var(--slate)} .ch-last .up{color:var(--green);font-weight:700} .ch-last .down{color:var(--red);font-weight:700} .ch-seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:2px;gap:1px} .ch-pill{border:1px solid var(--line);background:var(--surface);color:var(--slate);border-radius:8px; padding:5px 10px;font-size:11px;font-weight:700;cursor:pointer;font-family:var(--sans);white-space:nowrap} .ch-seg .ch-pill{border:none;background:transparent;padding:4px 9px} .ch-pill:hover{color:var(--navy);border-color:var(--line-2)} .ch-seg .ch-pill.on,.ch-pill.on{background:var(--accent-soft);color:var(--accent-d);border-color:var(--accent-line)} .ch-flex{flex:1} .ch-menu-wrap{position:relative} .ch-pop{position:absolute;top:calc(100% + 5px);left:0;z-index:30;min-width:158px;background:var(--surface); border:1px solid var(--line-2);border-radius:11px;box-shadow:var(--shadow-lg);padding:5px;display:none} .ch-pop.show{display:block;animation:fadeUp .16s ease both} .ch-pop>button{display:block;width:100%;text-align:left;border:none;background:transparent;color:var(--navy); padding:7px 10px;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;font-family:var(--sans)} .ch-pop>button:hover{background:var(--surface-2)} .ch-pop-ind label{display:flex;align-items:center;gap:8px;padding:6px 9px;border-radius:7px;cursor:pointer;font-size:12px;font-weight:600} .ch-pop-ind label:hover{background:var(--surface-2)} .ch-pop-ind input{accent-color:var(--accent);width:14px;height:14px} .ch-pop-ind .ch-tag{margin-left:auto;font-size:8.5px;font-weight:700;text-transform:uppercase;color:var(--slate-2); border:1px solid var(--line);border-radius:5px;padding:1px 5px;font-style:normal} .ch-stage{flex:1;display:flex;min-height:0} .ch-tools{display:flex;flex-direction:column;gap:3px;padding:7px 5px;border-right:1px solid var(--line);background:var(--surface-2)} .ch-tool{width:30px;height:30px;display:grid;place-items:center;border:1px solid transparent;background:transparent; color:var(--slate);border-radius:8px;cursor:pointer} .ch-tool:hover{background:var(--surface);color:var(--navy);border-color:var(--line)} .ch-tool.on{background:var(--accent-soft);color:var(--accent-d);border-color:var(--accent-line)} .ch-canvas-wrap{position:relative;flex:1;min-width:0} #chCanvas{display:block;cursor:crosshair;touch-action:none} .ch-read{position:absolute;top:9px;left:11px;display:flex;align-items:center;gap:7px;flex-wrap:wrap; font-size:11px;color:var(--slate);pointer-events:none;background:var(--glass);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px); border:1px solid var(--line);border-radius:9px;padding:4px 9px;max-width:calc(100% - 22px)} .ch-read b{font-size:12px;color:var(--navy);font-weight:800} .ch-read .ch-tf{color:var(--slate-2);font-weight:700;font-size:10px} .ch-read i{font-style:normal;color:var(--slate-2);font-weight:700;margin-left:2px} .ch-legend{position:absolute;top:43px;left:11px;display:flex;gap:11px;flex-wrap:wrap;pointer-events:none;font-size:10.5px;color:var(--slate)} .ch-lg{display:inline-flex;align-items:center;gap:4px} .ch-lg i{width:9px;height:3px;border-radius:2px;display:inline-block} .ch-lg b{color:var(--navy)} .ch-trade-chip{position:absolute;right:11px;bottom:11px;width:245px;background:var(--glass);-webkit-backdrop-filter:blur(9px) saturate(1.3);backdrop-filter:blur(9px) saturate(1.3); border:1px solid var(--line-2);border-radius:12px;box-shadow:var(--shadow-hover);padding:9px 11px;display:none;z-index:10} .ch-trade-chip.show{display:block;animation:fadeUp .2s ease both} .tc-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px} .tc-row b{font-size:12px} .tc-rr{font-family:var(--mono);font-size:10.5px;font-weight:700;color:var(--accent-d);background:var(--accent-soft);border-radius:6px;padding:1px 6px} .tc-lv{display:flex;justify-content:space-between;font-size:10px;color:var(--slate);margin-bottom:8px;gap:6px} .tc-lv b{display:block;font-size:11.5px;color:var(--navy)} .tc-lv .up b{color:var(--green)} .tc-lv .down b{color:var(--red)} .tc-acts{display:flex;gap:5px} .tc-exec{flex:1.4;border:none;background:linear-gradient(135deg,#00ab4e,#00893f);color:#fff;border-radius:8px;padding:6px 7px;font-size:10.5px;font-weight:700;cursor:pointer;font-family:var(--sans);display:inline-flex;align-items:center;justify-content:center;gap:4px;box-shadow:0 2px 6px rgba(0,171,78,0.25);transition:filter .15s,transform .1s} .tc-exec:hover{filter:brightness(1.1);transform:translateY(-0.5px)} .tc-exec:active{transform:translateY(0.5px)} .tc-send{flex:1;border:1px solid var(--line);background:var(--surface);color:var(--navy);border-radius:8px;padding:6px 4px;font-size:10.5px;font-weight:600;cursor:pointer;font-family:var(--sans);transition:background .15s} .tc-send:hover{background:var(--surface-2)} .tc-clear{border:1px solid var(--line);background:var(--surface);color:var(--slate);border-radius:8px;width:26px;cursor:pointer;display:flex;align-items:center;justify-content:center} .tc-clear:hover{color:var(--red);border-color:var(--red)} @keyframes padFlash{0%{box-shadow:0 0 0 0 var(--accent-soft)}40%{box-shadow:0 0 0 4px var(--accent-soft)}100%{box-shadow:var(--shadow)}} .flash-pad .order-card{animation:padFlash .7s ease} .panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden} .panel-tabs{display:flex;gap:2px;padding:8px 10px 0;border-bottom:1px solid var(--line);overflow-x:auto} .p-tab{border:0;background:transparent;color:var(--slate);font-family:var(--sans);font-weight:600;font-size:12.5px; padding:9px 13px;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;display:flex;align-items:center;gap:7px} .p-tab .pt-count{font-family:var(--mono);font-size:10px;background:var(--surface-2);border:1px solid var(--line); border-radius:20px;padding:0 6px;color:var(--slate)} .p-tab.active{color:var(--accent-d);border-bottom-color:var(--accent)} .p-tab.active .pt-count{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-d)} .panel-body{padding:6px 4px 8px} /* table */ .tbl{width:100%;border-collapse:collapse} .tbl th{font-size:9.5px;color:var(--slate);text-transform:uppercase;letter-spacing:.4px;font-weight:600; text-align:right;padding:7px 14px;border-bottom:1px solid var(--line)} .tbl th:first-child{text-align:left} .tbl td{padding:9px 14px;border-bottom:1px solid var(--line);text-align:right;font-size:12.5px} .tbl td:first-child{text-align:left} .tbl tr:last-child td{border-bottom:0} .tbl tr:hover td{background:var(--surface-2)} .t-sym{font-weight:700;display:flex;align-items:center;gap:7px} .side-chip{font-size:9px;font-weight:700;padding:2px 7px;border-radius:5px;text-transform:uppercase} .side-buy{background:var(--accent-soft);color:var(--green-d)} .side-sell{background:var(--tint-down);color:var(--red-d)} .panel-note{display:flex;align-items:center;gap:8px;margin:8px 14px 4px;padding:9px 12px;border-radius:9px;font-size:11.5px} .note-go{background:var(--accent-soft);color:var(--green-d);border:1px solid var(--accent-line)} .note-warn{background:var(--tint-warn);color:var(--amber);border:1px solid var(--bd-warn)} .note-info{background:var(--tint-info);color:var(--slate);border:1px solid var(--line-2)} /* risk cards (bear positions) */ .riskcards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;padding:10px 14px} .rcard{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:9px 11px} .rcard span{font-size:9.5px;color:var(--slate);text-transform:uppercase;letter-spacing:.3px} .rcard b{display:block;font-family:var(--mono);font-size:17px;margin-top:3px} /* ---- RIGHT order pad ---- */ .order-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden} .order-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--line)} .order-head .oh-sym{font-weight:800;font-size:14px} .order-head .oh-px{font-family:var(--mono);font-size:12px} .order-body{padding:13px 14px;display:flex;flex-direction:column;gap:11px} .side-tabs{display:flex;gap:7px} .side-tab{flex:1;text-align:center;padding:9px;border-radius:9px;font-weight:700;font-size:12.5px;cursor:pointer; border:1px solid var(--line);background:var(--surface-2);color:var(--slate)} .side-tab.buy.active{background:var(--accent-soft);color:var(--green-d);border-color:var(--accent-line)} .side-tab.sell.active{background:var(--tint-down);color:var(--red-d);border-color:var(--bd-down)} .type-row{display:flex;gap:6px;flex-wrap:wrap} .type-pill{font-size:10.5px;font-weight:600;padding:5px 9px;border-radius:7px;border:1px solid var(--line); background:var(--surface-2);color:var(--slate);cursor:pointer} .type-pill.on{background:var(--accent-soft);color:var(--accent-d);border-color:var(--accent-line)} .type-pill.disabled{opacity:.45;text-decoration:line-through} .fld{display:flex;flex-direction:column;gap:4px;min-width:0} .fld label{font-size:10px;color:var(--slate);text-transform:uppercase;letter-spacing:.3px;display:flex;justify-content:space-between} .fld label i{font-style:normal} .inp{background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:9px 11px; font-family:var(--mono);font-size:13px;color:var(--navy);display:flex;justify-content:space-between;align-items:center} .fld-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px} .order-note{font-size:11px;padding:8px 10px;border-radius:8px;display:flex;align-items:center;gap:7px} .cta{border:0;border-radius:10px;padding:12px;font-weight:700;font-size:13.5px;cursor:pointer;font-family:var(--sans);color:#fff} .cta-buy{background:var(--green)} .cta-buy:hover{background:var(--green-d)} .cta-sell{background:var(--red)} .cta-sell:hover{background:var(--red-d)} .cta-navy{background:var(--navy)} /* context module (right, under order) */ .ctx-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden} .ctx-head{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-bottom:1px solid var(--line)} .ctx-head b{font-size:13px;display:flex;align-items:center;gap:8px} .ctx-pill{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:3px 8px;border-radius:20px; background:var(--accent-soft);color:var(--accent-d);border:1px solid var(--accent-line)} .ctx-row{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-top:1px solid var(--line)} .ctx-row:first-of-type{border-top:0} .ctx-ico{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;flex:0 0 auto} .ic-up{background:var(--accent-soft);color:var(--green-d)} .ic-down{background:var(--tint-down);color:var(--red-d)} .ic-warn{background:var(--tint-warn);color:var(--amber)} .ic-info{background:var(--tint-info);color:var(--slate)} .ctx-rico{color:var(--accent-d);display:inline-flex;align-items:center} .ctx-row .ct-b{font-weight:700;font-size:12px} .ctx-row .ct-s{font-size:10.5px;color:var(--slate);margin-top:1px} .ctx-row .ct-val{margin-left:auto;text-align:right;font-family:var(--mono);font-size:12px;font-weight:600;flex:0 0 auto} /* heat (sectors) inside context */ .heat{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;padding:10px 14px} .hc{border-radius:8px;padding:7px 8px} .hc-s{font-size:10px;font-weight:700} .hc-c{font-family:var(--mono);font-size:11.5px;font-weight:700} .hc.def{outline:1.5px solid var(--accent);outline-offset:-1px} /* ================= REGIME ENGINE PANEL ================= */ .engine-scrim{position:fixed;inset:0;background:rgba(15,26,42,.32);z-index:79;opacity:0;visibility:hidden;transition:.3s} .engine-scrim.show{opacity:1;visibility:visible} .engine{position:fixed;right:0;top:0;height:100vh;width:360px;z-index:80;background:var(--surface); border-left:1px solid var(--line);box-shadow:var(--shadow-lg);transform:translateX(0);transition:transform .32s ease; display:flex;flex-direction:column} .engine.collapsed{transform:translateX(380px)} .engine-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line)} .engine-head b{font-size:14px} .engine-head span{display:block;font-size:11px;color:var(--slate);margin-top:2px} .engine-body{padding:16px 18px;overflow-y:auto;flex:1} .presets{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:16px} .preset{padding:9px;border-radius:9px;border:1px solid var(--line);background:var(--surface-2);color:var(--navy); font-family:var(--sans);font-weight:600;font-size:12px;cursor:pointer} .preset:hover{border-color:var(--accent-line);background:var(--accent-soft)} .preset-spike{grid-column:span 2;color:var(--amber);border-color:var(--bd-warn);background:var(--tint-warn)} .sliders{display:flex;flex-direction:column;gap:14px;margin-bottom:16px} .sld{display:flex;flex-direction:column;gap:5px} .sld-top{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;color:var(--slate)} .sld-top i{font-style:normal;color:var(--slate-2);font-size:10px} .sld-top b{font-family:var(--mono);color:var(--navy);font-size:13px} .sld-ends{display:flex;justify-content:space-between;color:var(--slate-2);font-size:9.5px} .sld-ends i{font-style:normal} input[type=range]{-webkit-appearance:none;appearance:none;height:5px;border-radius:5px;background:var(--line-2);outline:none;cursor:pointer} input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent); box-shadow:0 0 0 4px var(--accent-soft);cursor:pointer} input[type=range]::-moz-range-thumb{width:16px;height:16px;border:0;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)} .sld-toggle{flex-direction:row;align-items:center;justify-content:space-between;font-size:12px;color:var(--slate)} .mini-toggle{border:1px solid var(--accent-line);background:var(--accent-soft);color:var(--green-d);border-radius:7px; padding:6px 11px;font-weight:700;font-size:11.5px;cursor:pointer;font-family:var(--mono)} .mini-toggle[data-on="false"]{color:var(--red-d);background:var(--tint-down);border-color:var(--bd-down)} .sim-run{width:100%;padding:11px;border-radius:10px;border:1px solid var(--accent-line);cursor:pointer; background:var(--accent-soft);color:var(--accent-d);font-family:var(--sans);font-weight:700;font-size:13px;margin-bottom:18px} .sim-run.running{background:var(--accent);color:#fff;border-color:var(--accent)} /* regime panel source badge: LIVE (mirrors Kite) · what-if · offline */ .eng-src{display:flex;align-items:center;gap:8px;margin-bottom:13px;padding:8px 11px;border-radius:10px; font-size:11.5px;font-weight:600;border:1px solid var(--line);background:var(--surface-2);color:var(--slate)} .eng-src .es-txt{flex:1;min-width:0} .eng-src .es-txt b{font-weight:700} .eng-src .es-dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto;background:var(--slate-2)} .eng-src.live{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent-d)} .eng-src.live .es-dot{background:var(--green)} .eng-src.live .es-dot.live{box-shadow:0 0 0 3px var(--accent-soft);animation:pulse 1.8s infinite} .eng-src.sim{border-color:#f3d9b0;background:#fdf4e6;color:#9a5e12} .eng-src.sim .es-dot{background:var(--amber)} .eng-src.off .es-dot{background:var(--slate-2)} .es-reset{flex:0 0 auto;border:1px solid var(--accent-line);background:var(--surface);color:var(--accent-d); font-family:var(--sans);font-weight:700;font-size:11px;padding:4px 9px;border-radius:7px;cursor:pointer} .es-reset:hover{background:var(--accent-soft)} .readout{border-top:1px solid var(--line);padding-top:16px} .gauge{margin-bottom:13px} .gauge-track{position:relative;height:32px;border-radius:9px;overflow:hidden;display:flex;border:1px solid var(--line)} .gz{display:grid;place-items:center;font-size:9px;font-weight:700;letter-spacing:.4px;color:#fff} .gz-bear{background:#f6a6a8;flex:1.5} .gz-neutral{background:#c7d2e4;flex:1} .gz-bull{background:#86d6ab;flex:1.5} .gauge-needle{position:absolute;top:-2px;bottom:-2px;width:3px;left:50%;background:var(--navy);border-radius:3px; box-shadow:0 0 0 2px #fff;transition:left .5s cubic-bezier(.4,1.3,.5,1)} .gauge-scale{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9px;color:var(--slate-2);margin-top:4px} .er-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:13px} .er{background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:8px 6px;text-align:center} .er span{display:block;font-size:9px;color:var(--slate);text-transform:uppercase;letter-spacing:.3px} .er b{font-family:var(--mono);font-size:16px;display:block;margin-top:3px;color:var(--accent-d)} /* 4-state regime label colour (Bull/Bear/Choppy/High-Vol), independent of the live theme accent */ #erRegime[data-reg="Bull"]{color:var(--green-d)} #erRegime[data-reg="Bear"]{color:var(--red-d)} #erRegime[data-reg="Choppy"]{color:var(--blue)} #erRegime[data-reg="High-Vol"]{color:var(--amber)} .signals{display:flex;flex-direction:column;gap:7px} .sig{display:flex;align-items:center;gap:8px;font-size:11px} .sig-name{width:78px;flex:0 0 auto;color:var(--slate)} .sig-bar{flex:1;height:6px;border-radius:4px;background:var(--line);position:relative;overflow:hidden} .sig-bar::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--line-2)} .sig-fill{position:absolute;top:0;bottom:0;border-radius:4px;transition:.4s} .sig-fill.pos{left:50%;background:var(--green)} .sig-fill.neg{right:50%;background:var(--red)} .sig-val{width:34px;text-align:right;font-family:var(--mono);font-size:10.5px;color:var(--slate)} /* ================= TOASTS ================= */ .toast-wrap{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:90;display:flex;flex-direction:column;gap:10px; align-items:center;width:min(580px,92vw)} .toast{width:100%;background:var(--surface);border:1px solid var(--accent-line);border-radius:13px;box-shadow:var(--shadow-lg); padding:13px 15px;display:flex;align-items:center;gap:13px;animation:tin .4s cubic-bezier(.2,1.2,.4,1) both} .toast.hard{border-color:var(--bd-warn)} @keyframes tin{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}} .toast.out{animation:tout .3s ease forwards}@keyframes tout{to{opacity:0;transform:translateY(14px)}} .toast-ico{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;flex:0 0 auto;background:var(--accent-soft);color:var(--accent-d)} .toast.hard .toast-ico{background:var(--tint-warn);color:var(--amber)} .toast-body{flex:1;min-width:0}.toast-body b{display:block;font-size:13.5px}.toast-body span{font-size:11.5px;color:var(--slate)} .toast-acts{display:flex;gap:8px;flex:0 0 auto} .tbtn{border:0;border-radius:9px;padding:9px 15px;font-weight:700;font-size:12.5px;cursor:pointer;font-family:var(--sans)} .tbtn.primary{background:var(--accent);color:#fff} .tbtn.ghost{background:var(--surface-2);color:var(--slate);border:1px solid var(--line)} /* ================= RESPONSIVE ================= */ @media(max-width:1240px){ /* below desktop: leave the fixed app-shell -> natural page scroll */ body{height:auto;overflow-y:visible} .pane-left,.pane-center,.pane-right{height:auto;overflow:visible} html .algo-view{height:auto} /* narrow layout scrolls the whole page: `html` raises specificity so this beats the later unconditional `.algo-view{height:100%}` even inside this media query */ .terminal,html[data-regime="bear"] .terminal{grid-template-columns:260px 1fr} .pane-right{grid-column:1 / -1;flex-direction:row} .pane-right > *{flex:1} .topbar-index{display:none} /* header must wrap here too, else right-side controls clip off-screen */ .topbar{flex-wrap:wrap;gap:9px 10px} .tb-spacer{display:none} .search{order:10;flex:1 1 100%;max-width:none;min-width:0} .topbar-right{order:11;margin-left:0;flex:1 1 100%;flex-wrap:wrap;gap:8px;justify-content:flex-end} .regime-control{flex:1 1 100%;justify-content:center} } @media(max-width:880px){ .topbar{flex-wrap:wrap;gap:9px 10px} .tb-spacer{display:none} .search{order:10;flex:1 1 100%;max-width:none;min-width:0} .topbar-right{order:11;margin-left:0;flex:1 1 100%;flex-wrap:wrap;gap:8px;justify-content:flex-end} .regime-control{flex:1 1 100%;justify-content:center} .terminal,html[data-regime="bear"] .terminal{grid-template-columns:1fr} body{height:auto;overflow-y:visible} .pane-center,.pane-right{height:auto;overflow:visible} .pane-left{height:auto;position:static}.pane-right{flex-direction:column} .regime-bar{flex-wrap:wrap}.rb-read{order:5;flex:1 1 100%} .engine{width:92vw}.engine.collapsed{transform:translateX(96vw)} .riskcards{grid-template-columns:1fr 1fr} } @media(max-width:600px){ .topbar{padding:8px 12px;gap:8px} .brand-pro{font-size:14px;padding-left:9px} .mkt-status .mkt-live{display:none} .regime-control{gap:7px} .regime-control .seg{flex:1 1 auto} .seg-btn{flex:1;justify-content:center;padding:7px 4px;gap:5px} .funds-chip{display:none} .regime-bar{padding:10px 12px;gap:10px} .rb-stats{flex:1 1 100%;order:6} .rb-stat{flex:1} .ticker-bar .tix{padding:6px 12px} .hero{padding:16px}.hm-val{font-size:22px} .modal{width:94vw} } /* ===================== INTERACTIONS ===================== */ /* global search dropdown */ .search{position:relative} .search-results{position:absolute;top:calc(100% + 7px);left:0;right:0;background:var(--surface);border:1px solid var(--line); border-radius:12px;box-shadow:var(--shadow-lg);padding:5px;z-index:60;display:none;max-height:330px;overflow:auto} .search-results.show{display:block} .sr-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border-radius:9px;cursor:pointer} .sr-item:hover{background:var(--accent-soft)} .sr-l{display:flex;flex-direction:column;min-width:0} .sr-l b{font-size:13px;font-weight:700} .sr-l span{font-size:10.5px;color:var(--slate);white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .sr-r{display:flex;flex-direction:column;align-items:flex-end;flex:0 0 auto} .sr-r span:first-child{font-size:12.5px;font-weight:600}.sr-r span:last-child{font-size:10.5px} .sr-empty{padding:14px;text-align:center;color:var(--slate-2);font-size:12px} /* universal instrument search: segment badges, keyboard-active row, add affordance */ .sr-item.active{background:var(--accent-soft)} .sr-l b{display:flex;align-items:center;gap:6px} .sr-seg{font-size:8.5px;font-weight:800;letter-spacing:.3px;padding:1px 5px;border-radius:5px;background:var(--surface-2);color:var(--slate);border:1px solid var(--line)} .sr-seg.fut{color:var(--blue);border-color:color-mix(in srgb,var(--blue) 35%,transparent)} .sr-seg.ce{color:var(--green);border-color:color-mix(in srgb,var(--green) 35%,transparent)} .sr-seg.pe{color:var(--red);border-color:color-mix(in srgb,var(--red) 35%,transparent)} .sr-add{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:7px;color:var(--accent);background:var(--accent-soft);flex:0 0 auto} .wl-search{position:relative} .wl-results{top:calc(100% + 5px)} .wl-empty{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:26px 18px;color:var(--slate);font-size:11.5px;line-height:1.5} .wl-empty svg{color:var(--slate-2)} /* watchlist: select + drag */ .wl-row{justify-content:flex-start;gap:7px} /* universal watchlist: per-instrument remove + segment tag */ .wl-x{opacity:0;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:6px;border:0;background:transparent;color:var(--slate-2);cursor:pointer;transition:opacity .15s,color .15s,background .15s} .wl-row:hover .wl-x{opacity:.85} .wl-x:hover{color:var(--red);background:color-mix(in srgb,var(--red) 14%,transparent)} .wl-seg{font-size:8px;font-weight:800;letter-spacing:.3px;padding:1px 4px;border-radius:4px;background:var(--surface-2);color:var(--slate);border:1px solid var(--line);vertical-align:middle} .wl-seg.fut{color:var(--blue)}.wl-seg.ce{color:var(--green)}.wl-seg.pe{color:var(--red)} .wl-row .wl-l{flex:1} .wl-grip{color:var(--slate-2);opacity:0;cursor:grab;display:inline-flex;align-items:center;transition:opacity .15s;flex:0 0 auto;margin-left:-4px} .wl-row:hover .wl-grip{opacity:.7} .wl-grip:active{cursor:grabbing} .wl-spark{flex:0 0 auto;margin-left:8px} .wl-row.sel{background:var(--accent-soft)} .wl-row.sel::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent)} .wl-row.dragging{opacity:.45} .wl-row.drag-over{box-shadow:inset 0 2px 0 var(--accent)} .wl-reset{border:0;background:none;color:var(--blue);cursor:pointer;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;padding:0} /* resize handles */ .pane-resize{position:absolute;top:0;bottom:0;width:11px;cursor:col-resize;z-index:8} .pr-right{right:-6px}.pr-left{left:-6px} .pane-resize::after{content:"";position:absolute;top:50%;left:50%;transform:translateY(-50%);margin-left:-1px;width:2px;height:42px; border-radius:2px;background:var(--line-2);transition:.15s} .pane-resize:hover::after{background:var(--accent);height:84px} .chart-resize{height:9px;margin:-5px 6px 0;cursor:row-resize;display:flex;align-items:center;justify-content:center;position:relative;z-index:3} .chart-resize::after{content:"";width:42px;height:3px;border-radius:3px;background:var(--line-2);transition:.15s} .chart-resize:hover::after{background:var(--accent);width:84px} body.resizing{user-select:none;cursor:col-resize} /* order ticket steppers + orderbook */ .qty-step{display:flex;align-items:stretch;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--surface-2)} .qbtn{border:0;background:var(--white);color:var(--navy);width:34px;font-size:16px;cursor:pointer;font-family:var(--mono)} .qbtn:hover{background:var(--accent-soft);color:var(--accent-d)} .qty-inp{flex:1;border:0;background:transparent;text-align:center;font-size:13px;color:var(--navy);outline:none;min-width:0;font-family:var(--mono)} .mini-cancel{border:1px solid var(--bd-down);background:var(--tint-down);color:var(--red-d);border-radius:7px;padding:4px 10px;font-family:var(--sans);font-weight:600;font-size:11px;cursor:pointer} .mini-cancel:hover{background:var(--red);color:#fff} /* BUG FIX (2026-09-20): had no disabled state at all - looked identically clickable whether enabled or not (e.g. DCA "Buy now" while paused, or before a live price loads). */ .mini-cancel:disabled{opacity:.45;cursor:not-allowed;pointer-events:none} .mini-cancel:disabled:hover{background:var(--tint-down);color:var(--red-d)} .empty-state{padding:26px 18px;text-align:center;color:var(--slate-2);font-size:12.5px} /* order confirmation modal */ .modal-scrim{position:fixed;inset:0;background:rgba(15,26,42,.4);z-index:95;opacity:0;visibility:hidden;transition:.2s} .modal-scrim.show{opacity:1;visibility:visible} .modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-46%);width:min(440px,92vw);background:var(--surface); border-radius:16px;box-shadow:var(--shadow-lg);z-index:96;opacity:0;visibility:hidden;transition:.22s} .modal.show{opacity:1;visibility:visible;transform:translate(-50%,-50%)} .modal-head{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;border-bottom:1px solid var(--line)} .modal-head b{font-size:15px} .modal-body{padding:16px 18px} .modal-top{display:flex;align-items:center;gap:13px;padding:12px 14px;border-radius:11px;margin-bottom:14px} .modal-top.is-buy{background:var(--accent-soft)}.modal-top.is-sell{background:var(--tint-down)} .modal-side{font-weight:800;font-size:12px;letter-spacing:.4px;padding:5px 9px;border-radius:7px;background:var(--white)} .is-buy .modal-side{color:var(--green-d)}.is-sell .modal-side{color:var(--red-d)} .modal-sym{font-weight:800;font-size:16px}.modal-name{font-size:11px;color:var(--slate)} .modal-px{margin-left:auto;font-size:15px;font-weight:700} .modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:11px;overflow:hidden} .modal-grid > div{background:var(--surface);padding:10px 13px} .modal-grid span{font-size:10px;color:var(--slate);text-transform:uppercase;letter-spacing:.3px} .modal-grid b{display:block;font-size:14px;margin-top:2px} .modal-note{display:flex;align-items:flex-start;gap:8px;margin-top:13px;font-size:11px;color:var(--slate);background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:9px 11px} .modal-note .ico{color:var(--accent-d);flex:0 0 auto;margin-top:1px} .modal-foot{display:flex;gap:9px;padding:14px 18px;border-top:1px solid var(--line)} .modal-foot .tbtn{flex:1;padding:11px} .tbtn.danger{background:var(--red);color:#fff} /* pricing modal: reuses .modal-scrim (the dimming layer) but needs real width for 3 plan cards side by side, so it's a distinct variant rather than a squeeze into the 440px order-confirm modal. Fixed green (not the regime-reactive --accent) on purpose: a "bear regime" market read shouldn't turn the upgrade button red, money UI stays visually constant regardless of market. Compacted deliberately (2026-09-16 revision) to fit common desktop viewports without an internal scrollbar: tighter spacing throughout, 4 trimmed-to-the-essential features per plan instead of 5 (the full list is one click away via the /pricing/ link in the footer - this modal is a fast, honest snapshot, not the exhaustive comparison). overflow-y:auto stays on as a safety net, never overflow:hidden: a short viewport (a small window, a laptop with devtools open) should still be able to scroll to the CTA rather than have it silently clipped and unreachable - that failure mode is worse for conversion than an occasional scrollbar. */ .pricing-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%) scale(.97);width:min(860px,94vw); max-height:92vh;overflow-y:auto;background:var(--surface);border-radius:18px;box-shadow:var(--shadow-lg); z-index:96;opacity:0;visibility:hidden;transition:opacity .18s ease,transform .18s ease} .pricing-modal.show{opacity:1;visibility:visible;transform:translate(-50%,-50%) scale(1)} @media(prefers-reduced-motion:reduce){.pricing-modal{transition:opacity .01s}} .pm-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line)} .pm-close{background:none;border:0;border-radius:8px;color:var(--slate-2);cursor:pointer;padding:5px;line-height:1;font-size:19px;transition:background .12s,color .12s} .pm-close:hover{color:var(--navy);background:var(--surface-2)} .pm-close:focus-visible{outline:2px solid var(--green);outline-offset:1px} .pm-body{padding:16px 22px 18px} .pm-body.center{text-align:center} .pm-eyebrow{display:flex;align-items:center;gap:7px;margin-bottom:5px;font:700 10.5px/1 var(--mono); letter-spacing:.07em;text-transform:uppercase;color:var(--green-d)} .pm-body.center .pm-eyebrow{justify-content:center} .pm-eyebrow .dot{width:6px;height:6px;border-radius:50%;background:var(--green)} .pm-body h2{font:800 20px/1.2 var(--sans);letter-spacing:-.02em;margin:0 0 3px} .pm-body>p{margin:0 0 12px;font-size:13px;color:var(--slate)} .pm-cycle{display:inline-flex;gap:3px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:3px;margin-bottom:14px} .pm-cycle button{border:0;background:transparent;color:var(--slate);font:700 12px/1 var(--sans);padding:7px 13px;border-radius:7px;cursor:pointer;transition:background .12s,color .12s} .pm-cycle button.on{background:var(--surface);color:var(--navy);box-shadow:0 1px 2px rgba(16,30,54,.08)} .pm-cycle button:focus-visible{outline:2px solid var(--green);outline-offset:1px} .pm-cycle .save{font:700 9.5px/1 var(--mono);color:var(--green-d);margin-left:4px} .pm-grid{display:grid;grid-template-columns:1fr;gap:12px} @media(min-width:680px){.pm-grid{grid-template-columns:repeat(3,1fr)}} .pm-plan{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:14px 14px 16px;display:flex;flex-direction:column;transition:border-color .15s,transform .15s} .pm-plan.feat{border-color:var(--green);background:color-mix(in srgb,var(--green) 4%,var(--surface)); box-shadow:0 0 0 2px color-mix(in srgb,var(--green) 18%,transparent),0 10px 28px -14px color-mix(in srgb,var(--green) 45%,transparent)} .pm-ribbon{position:absolute;top:-10px;left:50%;transform:translateX(-50%);background:var(--green);color:#04140a; font:800 9px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;padding:4px 10px;border-radius:99px;white-space:nowrap} .pm-top{display:flex;align-items:center;gap:9px;margin-bottom:9px} .pm-ic{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;font-size:13px;font-weight:800; background:var(--surface-2);color:var(--slate);flex:0 0 auto} .pm-plan.feat .pm-ic{background:color-mix(in srgb,var(--green) 16%,var(--surface));color:var(--green-d)} .pm-name{font:700 11px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--slate-2)} .pm-plan.feat .pm-name{color:var(--green-d)} .pm-price{font:800 25px/1 var(--sans);letter-spacing:-.02em;margin-bottom:1px} .pm-price span{font:600 11.5px/1 var(--sans);color:var(--slate)} .pm-tag{font-size:11.5px;color:var(--slate);min-height:16px;margin-bottom:10px} .pm-plan ul{list-style:none;padding:0;margin:0 0 12px;flex:1;display:flex;flex-direction:column;gap:5px} .pm-plan li{position:relative;padding-left:18px;font-size:12px;color:var(--slate);line-height:1.35} .pm-plan li::before{content:"✓";position:absolute;left:0;color:var(--green-d);font-weight:700} .pm-cta{border:0;border-radius:9px;padding:10px;font:700 12.5px/1 var(--sans);cursor:pointer;width:100%; display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:filter .1s,transform .1s} .pm-cta.primary{background:var(--green);color:#04140a} .pm-cta.primary:hover{filter:brightness(1.07);transform:translateY(-1px)} .pm-cta.ghost{background:var(--surface);color:var(--navy);border:1px solid var(--line-2,var(--line))} .pm-cta.ghost:hover{border-color:var(--green);transform:translateY(-1px)} .pm-cta:focus-visible{outline:2px solid var(--green);outline-offset:2px} .pm-cta[disabled]{opacity:.6;cursor:default;transform:none} .pm-trust{margin-top:8px;text-align:center;font-size:10.5px;color:var(--slate-2)} @media(max-width:560px){.pricing-modal{width:96vw}.pm-body{padding:14px}} @media(max-width:1180px){.pane-resize{display:none}} /* ===================== LOOK & FEEL POLISH ===================== */ /* regime-change motion: top sweep bar */ .regime-sweep{position:fixed;top:0;left:0;right:0;height:3px;z-index:100;pointer-events:none; background:linear-gradient(90deg,transparent,var(--accent),transparent);transform:translateX(-100%);opacity:0} .regime-sweep.go{animation:sweep .7s cubic-bezier(.4,0,.2,1)} @keyframes sweep{0%{transform:translateX(-100%);opacity:1}100%{transform:translateX(100%);opacity:0}} /* live market status */ .mkt-status{display:flex;align-items:center;gap:7px;padding:5px 11px;border-radius:20px;background:var(--surface-2);border:1px solid var(--line);margin-left:2px} .mkt-dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px rgba(0,171,78,.16);animation:pulse 2s infinite} .mkt-txt{font-size:11px;font-weight:600;color:var(--slate)} .mkt-time{font-size:11.5px;color:var(--navy);border-left:1px solid var(--line-2);padding-left:7px} .brand-pro{letter-spacing:-.2px} .topbar{box-shadow:0 1px 0 var(--line)} /* card depth + hover lift */ .chart-card,.panel,.order-card,.ctx-card,.pane-left{transition:box-shadow .25s ease, transform .25s ease, border-color .25s} .chart-card:hover,.order-card:hover,.ctx-card:hover{box-shadow:var(--shadow-hover)} /* regime insight bar = hero band */ .regime-bar{background: linear-gradient(90deg, var(--accent-soft), transparent 46%), radial-gradient(70% 180% at 0% 0%, var(--accent-soft), transparent 42%), var(--surface); box-shadow:inset 0 -1px 0 var(--line)} .rb-emo{box-shadow:0 6px 18px -6px var(--accent-line), var(--shadow);position:relative} .rb-emo::after{content:"";position:absolute;inset:-4px;border-radius:14px;border:1px solid var(--accent-line);opacity:.55} .rb-title{font-size:16px} .rb-stat{transition:transform .2s, box-shadow .2s} .rb-stat:hover{transform:translateY(-1px);box-shadow:var(--shadow)} /* primary CTAs: gradient + depth + press */ .cta{box-shadow:0 6px 16px -7px rgba(16,30,54,.5);transition:filter .15s, transform .08s, box-shadow .2s;letter-spacing:.2px} .cta:hover{transform:translateY(-1px);filter:brightness(1.03)} .cta:active{transform:translateY(0)} .cta-buy{background:linear-gradient(180deg,#16c46a,var(--green))} .cta-sell{background:linear-gradient(180deg,#f04a4d,var(--red))} .cta-navy{background:linear-gradient(180deg,#1d2c42,var(--navy))} /* control smoothing */ .seg-btn,.p-tab,.type-pill,.wl-tab,.ch-tab,.side-tab,.engine-btn,.auto-pill,.preset,.qbtn,.tbtn{transition:.18s} .engine-btn:hover,.auto-pill:hover{box-shadow:var(--shadow)} .tbtn:active{transform:translateY(1px)} /* watchlist + index polish */ .wl-row{transition:background .15s} .wl-row.sel{background:linear-gradient(90deg,var(--accent-soft),transparent 82%)} .wl-ltp,.hm-val,.bs-v,.rc-v{letter-spacing:-.4px} .tix{transition:transform .2s, box-shadow .2s, border-color .2s} .tix:hover{transform:translateY(-1px);box-shadow:var(--shadow);border-color:var(--line-2)} /* gauge: gradient zones + glow needle */ .gz-bear{background:linear-gradient(90deg,#f28b8d,#f6a6a8)} .gz-bull{background:linear-gradient(90deg,#86d6ab,#5cc78f)} .gauge-needle{box-shadow:0 0 0 2px #fff, 0 0 10px rgba(15,26,42,.4)} .spark{overflow:visible} /* chart re-render entrance */ .chart-card{animation:fadeUp .4s ease both} @keyframes fadeUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}} /* label weight */ .fld label,.rcard span,.er span,.modal-grid span,.wl-meta{font-weight:600} /* ===================== MODERN HEADER + NSE/BSE/MCX ===================== */ .topbar{gap:14px;padding:9px 16px;background:var(--topbar-bg,var(--surface));-webkit-backdrop-filter:saturate(140%) blur(10px);backdrop-filter:saturate(140%) blur(10px); box-shadow:0 1px 0 var(--line), 0 8px 24px -20px rgba(16,30,54,.5)} .tb-brand{display:flex;align-items:center;gap:10px;flex:0 0 auto} /* Investing/Trading/Algo Studio mode toggle, reuses .seg/.seg-btn (same control as Bull/Neutral/Bear) */ .mode-switch{flex:0 0 auto} .mkt-status{display:flex;align-items:center;gap:7px;background:none;border:0;padding:0 2px 0 2px} .mkt-live{font-size:9px;font-weight:800;letter-spacing:.6px;color:var(--green)} .mkt-time{font-size:11.5px;color:var(--slate);border-left:0;padding-left:0} .tb-spacer{flex:1 1 auto} .search{flex:0 1 240px;min-width:150px;max-width:320px} .topbar-right{margin-left:0;gap:9px} /* dedicated full-width ticker tape */ .ticker-bar{flex:0 0 auto;display:flex;align-items:center;padding:0 10px;background:var(--surface); border-bottom:1px solid var(--line);overflow:hidden} .tb-viewport{flex:1 1 auto;min-width:0;overflow:hidden;display:flex; mask-image:linear-gradient(to right, transparent, black 28px, black calc(100% - 28px), transparent); -webkit-mask-image:linear-gradient(to right, transparent, black 28px, black calc(100% - 28px), transparent)} .tb-viewport.static{overflow-x:auto;scrollbar-width:none} .tb-viewport.static::-webkit-scrollbar{display:none} .tb-ticker{display:flex;align-items:center;width:max-content;will-change:transform} .tb-seq{display:flex;align-items:center;flex:0 0 auto} /* continuous marquee: track holds two identical sequences, slide one full sequence then loop */ #topIndex.rolling{animation:tkRoll var(--tk-dur,30s) linear infinite} .ticker-bar:hover #topIndex.rolling{animation-play-state:paused} @keyframes tkRoll{from{transform:translateX(0)}to{transform:translateX(-50%)}} @media(prefers-reduced-motion:reduce){#topIndex.rolling{animation:none}} .tb-gear{flex:0 0 auto;margin-left:8px;width:30px;height:28px;display:flex;align-items:center;justify-content:center; border:1px solid var(--line);border-radius:8px;background:var(--surface-2);color:var(--slate);cursor:pointer;transition:.15s} .tb-gear:hover{color:var(--accent-d);border-color:var(--accent-line)} .tb-gear[aria-expanded="true"]{color:var(--accent-d);border-color:var(--accent);box-shadow:var(--ring)} .tb-gear:focus-visible{outline:none;box-shadow:var(--ring)} .tix-empty{font-size:11.5px;color:var(--slate-2);padding:6px 4px;white-space:nowrap} .tb-ticker .tix{flex:0 0 auto;flex-direction:column;border:0;background:none;border-radius:0; padding:6px 18px;position:relative;white-space:nowrap;line-height:1.2} .tb-ticker .tix-row{flex-wrap:nowrap;gap:7px} .tb-ticker .tix + .tix::before{content:"";position:absolute;left:0;top:22%;bottom:22%;width:1px;background:var(--line)} .tb-seq-b .tix:first-child::before{content:"";position:absolute;left:0;top:22%;bottom:22%;width:1px;background:var(--line)} /* divider at the loop seam */ .tb-ticker .tix-name{font-size:9.5px;letter-spacing:.4px;text-transform:uppercase} .tb-ticker .tix-val{font-size:13px} .tb-ticker .tix-chg{font-size:11px} /* ---- ticker settings popover ---- */ .tk-settings{position:fixed;z-index:90;width:300px;max-width:92vw;background:var(--surface);border:1px solid var(--line-2); border-radius:14px;box-shadow:var(--shadow-lg);padding:14px;animation:wgIn .16s ease both} .tk-settings[hidden]{display:none} .tk-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px} .tk-head b{font-size:14px;color:var(--navy)} .tk-row{display:flex;align-items:center;gap:10px;margin:12px 0} .tk-toggle-row{justify-content:space-between} .tk-row label{font-size:12.5px;color:var(--slate);font-weight:600;flex:0 0 auto} .tk-speed-row{flex-wrap:wrap;row-gap:4px} .tk-speed-row input[type=range]{flex:1 1 100%;accent-color:var(--accent)} .tk-ends{display:flex;justify-content:space-between;width:100%;font-size:10px;color:var(--slate-2)} .tk-ends i{font-style:normal} .tk-disabled{opacity:.45} .tk-sec{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--slate-2);margin:14px 0 8px;display:flex;gap:7px;align-items:center} .tk-sec i{font-style:normal;background:var(--surface-2);border-radius:10px;padding:1px 7px;font-size:10px;color:var(--slate)} .tk-chips{display:flex;flex-wrap:wrap;gap:6px;max-height:128px;overflow-y:auto} .tk-none{font-size:11.5px;color:var(--slate-2)} .tk-chip{display:inline-flex;align-items:center;gap:5px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px; padding:4px 6px 4px 9px;font-size:11.5px;font-weight:600;color:var(--navy)} .tk-chip-x{border:0;background:none;color:var(--slate-2);cursor:pointer;display:flex;padding:1px;border-radius:5px;transition:.12s} .tk-chip-x:hover{color:#e5383b;background:rgba(229,56,59,.1)} .tk-add{margin-top:10px;position:relative} .tk-search-wrap{display:flex;align-items:center;gap:7px;padding:0 9px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2); color:var(--slate-2);transition:.15s} .tk-search-wrap:focus-within{border-color:var(--accent);box-shadow:var(--ring);background:var(--surface)} .tk-search{flex:1;min-width:0;border:0;background:none;outline:none;padding:8px 0;font-family:var(--sans);font-size:12.5px;color:var(--navy)} .tk-search::placeholder{color:var(--slate-2)} .tk-search-clear{border:0;background:none;color:var(--slate-2);cursor:pointer;display:flex;padding:2px;border-radius:5px;transition:.12s} .tk-search-clear:hover{color:var(--navy);background:var(--surface-2)} .tk-search-clear[hidden]{display:none} .tk-results{margin-top:6px;max-height:210px;overflow-y:auto;border:1px solid var(--line);border-radius:9px;background:var(--surface); box-shadow:0 14px 30px -18px rgba(16,30,54,.5);padding:4px} .tk-results[hidden]{display:none} .tk-res-grp{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--slate-2);padding:7px 8px 3px} .tk-res{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:0;background:none;cursor:pointer; padding:6px 8px;border-radius:7px;color:var(--navy);transition:.1s} .tk-res:hover,.tk-res.on{background:var(--accent-soft)} .tk-res-nm{flex:1;min-width:0;font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .tk-res-nm mark{background:color-mix(in srgb,var(--accent) 26%,transparent);color:inherit;border-radius:3px;padding:0 1px} .tk-res-px{font-size:11px;color:var(--slate-2)} .tk-res-add{display:flex;color:var(--slate-2);opacity:0;transition:.1s} .tk-res:hover .tk-res-add,.tk-res.on .tk-res-add{opacity:1;color:var(--accent-d)} .tk-res-empty,.tk-res-more{font-size:11.5px;color:var(--slate-2);padding:8px;text-align:center} .tk-res-more{border-top:1px solid var(--line);margin-top:2px} .tk-foot{margin-top:12px;display:flex;align-items:center;justify-content:space-between;gap:10px} .tk-foot-hint{font-size:10.5px;color:var(--slate-2)} .engine-btn.icon-only{padding:0;width:36px;height:34px;justify-content:center;gap:0} .surface-toggle{border:1px solid var(--line);background:var(--surface-2);color:var(--navy);width:36px;height:34px; border-radius:9px;display:grid;place-items:center;cursor:pointer;transition:.18s} .surface-toggle:hover{border-color:var(--accent-line);color:var(--accent-d);box-shadow:var(--shadow)} .funds-chip{padding-left:10px} /* live tape: uptick/downtick flash + micro-roll */ .wl-ltp,.tix-val,#ordLtp{display:inline-block;border-radius:5px;padding:0 3px;margin:0 -3px} .tk-up{animation:tkUp .55s ease} .tk-down{animation:tkDown .55s ease} @keyframes tkUp{0%{background:var(--up-flash);color:var(--green);transform:translateY(2px)}100%{background:transparent;transform:translateY(0)}} @keyframes tkDown{0%{background:var(--down-flash);color:var(--red);transform:translateY(-2px)}100%{background:transparent;transform:translateY(0)}} /* floor power-on shimmer (Day -> Night) */ .floor-sweep{position:fixed;inset:0;z-index:99;pointer-events:none;opacity:0; background:linear-gradient(115deg,transparent 32%,var(--accent-soft) 47%,rgba(255,255,255,.10) 50%,var(--accent-soft) 53%,transparent 68%);background-size:280% 100%} .floor-sweep.go{animation:floorOn .85s ease} @keyframes floorOn{0%{opacity:0;background-position:120% 0}12%{opacity:1}100%{opacity:0;background-position:-50% 0}} /* ===================== NIGHT: TRADING FLOOR SURFACE ===================== */ html[data-surface="night"]{ --bg:#080d18; --surface:#101a2e; --surface-2:#0c1424; --white:#16223a; --line:#1f2c46; --line-2:#2c3d5e; --navy:#e8eefb; --slate:#9aabc9; --slate-2:#62759a; --green:#1fd07a; --green-d:#28e08a; --red:#ff5a5d; --red-d:#ff7e80; --blue:#5b9dff; --amber:#f5b148; --tint-down:rgba(255,90,93,.15); --tint-warn:rgba(245,177,72,.15); --tint-info:rgba(120,140,180,.14); --bd-down:rgba(255,90,93,.42); --bd-warn:rgba(245,177,72,.42); --up-flash:rgba(31,208,122,.30); --down-flash:rgba(255,90,93,.30); --topbar-bg:rgba(16,26,46,.72); --glass:rgba(18,28,48,.58); --glass-hi:rgba(255,255,255,.07); --shadow:0 1px 2px rgba(0,0,0,.5),0 10px 28px -12px rgba(0,0,0,.7); --shadow-hover:0 2px 6px rgba(0,0,0,.5),0 22px 44px -16px rgba(0,0,0,.85); --shadow-lg:0 26px 60px -16px rgba(0,0,0,.9); } html[data-surface="night"][data-regime="bull"]{--accent:#1fd07a;--accent-d:#3ae892;--accent-soft:rgba(31,208,122,.15);--accent-line:rgba(31,208,122,.45)} html[data-surface="night"][data-regime="neutral"]{--accent:#5b9dff;--accent-d:#84b6ff;--accent-soft:rgba(91,157,255,.15);--accent-line:rgba(91,157,255,.42)} html[data-surface="night"][data-regime="bear"]{--accent:#ff5a5d;--accent-d:#ff8385;--accent-soft:rgba(255,90,93,.15);--accent-line:rgba(255,90,93,.45)} html[data-surface="night"] .cta{box-shadow:0 0 24px -7px var(--accent-line),0 6px 16px -8px rgba(0,0,0,.7);color:#06121f} html[data-surface="night"] .rb-emo{box-shadow:0 0 26px -5px var(--accent-line),var(--shadow)} html[data-surface="night"] .chart-svg{filter:drop-shadow(0 0 7px var(--accent-line))} html[data-surface="night"] .mkt-dot{box-shadow:0 0 0 3px rgba(31,208,122,.2),0 0 12px var(--green)} html[data-surface="night"] .profile{background:var(--surface-2);color:var(--navy);border:1px solid var(--line-2)} html[data-surface="night"] .regime-bar{box-shadow:inset 0 -1px 0 var(--line),0 0 50px -24px var(--accent-line)} html[data-surface="night"] .surface-toggle{color:var(--amber)} /* ===================== NIGHT / DARK MODE REFINEMENTS ===================== */ html[data-surface="night"] .av-head, html[data-theme="dark"] .av-head { background: var(--surface) !important; border-color: var(--line) !important; box-shadow: var(--shadow) !important; } html[data-surface="night"] .av-scroll, html[data-theme="dark"] .av-scroll { background: transparent !important; border-color: var(--line) !important; } html[data-surface="night"] .av-tabs, html[data-theme="dark"] .av-tabs, html[data-surface="night"] .sec-tabs, html[data-theme="dark"] .sec-tabs { background: var(--surface-2) !important; border: 1px solid var(--line) !important; } html[data-surface="night"] .av-tab, html[data-theme="dark"] .av-tab, html[data-surface="night"] .sec-tab, html[data-theme="dark"] .sec-tab { color: var(--slate) !important; } html[data-surface="night"] .av-tab:hover, html[data-theme="dark"] .av-tab:hover, html[data-surface="night"] .sec-tab:hover, html[data-theme="dark"] .sec-tab:hover { color: var(--navy) !important; } html[data-surface="night"] .av-tab.on, html[data-theme="dark"] .av-tab.on, html[data-surface="night"] .sec-tab.on, html[data-theme="dark"] .sec-tab.on { background: var(--surface) !important; color: var(--accent) !important; border: 1px solid var(--line-2) !important; box-shadow: 0 4px 12px rgba(0,0,0,0.4) !important; } html[data-surface="night"] .lib-instr-tab, html[data-theme="dark"] .lib-instr-tab { background: var(--surface) !important; border: 1px solid var(--line) !important; box-shadow: var(--shadow) !important; } html[data-surface="night"] .lib-instr-tab:hover, html[data-theme="dark"] .lib-instr-tab:hover { background: var(--surface-2) !important; border-color: var(--accent-line) !important; transform: translateY(-2px); box-shadow: 0 12px 36px rgba(0,0,0,0.4) !important; } html[data-surface="night"] .lib-instr-tab.on, html[data-theme="dark"] .lib-instr-tab.on { background: rgba(31, 208, 122, 0.12) !important; border: 1px solid var(--accent) !important; box-shadow: 0 0 24px -6px var(--accent-line), var(--shadow) !important; transform: translateY(-1px); } html[data-surface="night"] .lib-instr-tab .lii-top, html[data-theme="dark"] .lib-instr-tab .lii-top { color: var(--navy) !important; } html[data-surface="night"] .lib-instr-tab .lii-top .ico, html[data-theme="dark"] .lib-instr-tab .lii-top .ico { color: var(--accent) !important; } html[data-surface="night"] .lib-instr-tab .lii-desc, html[data-theme="dark"] .lib-instr-tab .lii-desc { color: var(--slate) !important; } html[data-surface="night"] .lib-instr-tab .lii-dep, html[data-theme="dark"] .lib-instr-tab .lii-dep { color: var(--slate-2) !important; } html[data-surface="night"] .lib-instr-tab .lii-dep b, html[data-theme="dark"] .lib-instr-tab .lii-dep b { color: var(--navy) !important; } html[data-surface="night"] .lib-instr-tab .lii-n, html[data-theme="dark"] .lib-instr-tab .lii-n { background: var(--surface-2) !important; color: var(--slate-2) !important; border: 1px solid var(--line) !important; } html[data-surface="night"] .lib-instr-tab.on .lii-top, html[data-theme="dark"] .lib-instr-tab.on .lii-top { color: var(--accent-d) !important; } html[data-surface="night"] .lib-instr-tab.on .lii-desc, html[data-theme="dark"] .lib-instr-tab.on .lii-desc { color: var(--accent) !important; opacity: 0.9 !important; } html[data-surface="night"] .lib-instr-tab.on .lii-dep, html[data-theme="dark"] .lib-instr-tab.on .lii-dep { color: var(--accent) !important; opacity: 0.9 !important; } html[data-surface="night"] .lib-instr-tab.on .lii-dep b, html[data-theme="dark"] .lib-instr-tab.on .lii-dep b { color: #fff !important; } html[data-surface="night"] .lib-instr-tab.on .lii-n, html[data-theme="dark"] .lib-instr-tab.on .lii-n { background: var(--accent) !important; color: #06121f !important; border-color: transparent !important; } html[data-surface="night"] .sec-stat, html[data-theme="dark"] .sec-stat { background: var(--surface) !important; border: 1px solid var(--line) !important; box-shadow: var(--shadow) !important; } html[data-surface="night"] .sec-stat:hover, html[data-theme="dark"] .sec-stat:hover { background: var(--surface-2) !important; border-color: var(--accent-line) !important; box-shadow: 0 8px 24px rgba(0,0,0,0.3) !important; } html[data-surface="night"] .sec-stat .ss-l, html[data-theme="dark"] .sec-stat .ss-l { color: var(--slate) !important; } html[data-surface="night"] .sec-stat .ss-v, html[data-theme="dark"] .sec-stat .ss-v { color: var(--navy) !important; } html[data-surface="night"] .sec-stat .ss-v.up, html[data-theme="dark"] .sec-stat .ss-v.up { color: var(--green) !important; } html[data-surface="night"] .sec-stat .ss-v.down, html[data-theme="dark"] .sec-stat .ss-v.down { color: var(--red) !important; } html[data-surface="night"] .sec-stat .ss-s, html[data-theme="dark"] .sec-stat .ss-s { color: var(--slate-2) !important; } html[data-surface="night"] button.ss-help, html[data-theme="dark"] button.ss-help { color: var(--slate) !important; text-decoration-color: var(--slate-2) !important; } html[data-surface="night"] button.ss-help:hover, html[data-theme="dark"] button.ss-help:hover { color: var(--accent) !important; text-decoration-color: var(--accent) !important; } html[data-surface="night"] .ss-q, html[data-theme="dark"] .ss-q { background: var(--surface-2) !important; border: 1px solid var(--line) !important; color: var(--slate) !important; } html[data-surface="night"] .cx-preview-note, html[data-theme="dark"] .cx-preview-note { background: rgba(245, 177, 72, 0.08) !important; border: 1px solid rgba(245, 177, 72, 0.25) !important; color: #e2c18c !important; box-shadow: 0 4px 16px rgba(0,0,0,0.2) !important; } html[data-surface="night"] .cx-preview-note b, html[data-theme="dark"] .cx-preview-note b { color: #f5b148 !important; } html[data-surface="night"] .cx-preview-note .ico, html[data-theme="dark"] .cx-preview-note .ico, html[data-surface="night"] .cx-preview-note svg, html[data-theme="dark"] .cx-preview-note svg { color: #f5b148 !important; } html[data-surface="night"] .cx-card, html[data-theme="dark"] .cx-card, html[data-surface="night"] .cx-mv-col, html[data-theme="dark"] .cx-mv-col, html[data-surface="night"] .cx-lb-grp, html[data-theme="dark"] .cx-lb-grp, html[data-surface="night"] .cxm-tbl, html[data-theme="dark"] .cxm-tbl, html[data-surface="night"] .cxbt-chart, html[data-theme="dark"] .cxbt-chart, html[data-surface="night"] .bt-an, html[data-theme="dark"] .bt-an, html[data-surface="night"] .bt-vr, html[data-theme="dark"] .bt-vr, html[data-surface="night"] .lb-row, html[data-theme="dark"] .lb-row { background: var(--surface) !important; border: 1px solid var(--line) !important; box-shadow: var(--shadow) !important; } html[data-surface="night"] .cx-card:hover, html[data-theme="dark"] .cx-card:hover, html[data-surface="night"] .lb-row:hover, html[data-theme="dark"] .lb-row:hover { background: var(--surface-2) !important; border-color: var(--accent-line) !important; } html[data-surface="night"] .bt-anc, html[data-theme="dark"] .bt-anc, html[data-surface="night"] .bt-vrcol, html[data-theme="dark"] .bt-vrcol, html[data-surface="night"] .cxm-head, html[data-theme="dark"] .cxm-head, html[data-surface="night"] .cx-mv-h, html[data-theme="dark"] .cx-mv-h, html[data-surface="night"] .cx-lb-h, html[data-theme="dark"] .cx-lb-h { background: var(--surface-2) !important; border-color: var(--line) !important; } html[data-surface="night"] .cxm-row, html[data-theme="dark"] .cxm-row, html[data-surface="night"] .cx-mv-row, html[data-theme="dark"] .cx-mv-row, html[data-surface="night"] .cx-lb-row, html[data-theme="dark"] .cx-lb-row { border-color: var(--line) !important; } html[data-surface="night"] .cxm-row:hover, html[data-theme="dark"] .cxm-row:hover { background: var(--surface-2) !important; } html[data-surface="night"] .cxm-chip, html[data-theme="dark"] .cxm-chip { background: var(--surface-2) !important; border-color: var(--line) !important; color: var(--slate) !important; } html[data-surface="night"] .msc-chip, html[data-theme="dark"] .msc-chip, html[data-surface="night"] .cxbt-chip, html[data-theme="dark"] .cxbt-chip, html[data-surface="night"] .mon-dep-cell, html[data-theme="dark"] .mon-dep-cell { background: var(--surface-2) !important; border: 1px solid var(--line) !important; color: var(--slate) !important; box-shadow: none !important; } html[data-surface="night"] .msc-chip:hover, html[data-theme="dark"] .msc-chip:hover, html[data-surface="night"] .cxbt-chip:hover, html[data-theme="dark"] .cxbt-chip:hover, html[data-surface="night"] .mon-dep-cell:hover, html[data-theme="dark"] .mon-dep-cell:hover { background: var(--surface) !important; border-color: var(--accent-line) !important; color: var(--navy) !important; } html[data-surface="night"] .msc-chip.on, html[data-theme="dark"] .msc-chip.on, html[data-surface="night"] .cxbt-chip.on, html[data-theme="dark"] .cxbt-chip.on { background: var(--accent) !important; border-color: transparent !important; color: #06121f !important; font-weight: 800 !important; box-shadow: 0 4px 14px rgba(31,208,122,0.3) !important; } html[data-surface="night"] .lb-rank, html[data-theme="dark"] .lb-rank { background: var(--surface-2) !important; color: var(--slate) !important; } /* ===================== PREMIUM EXPERIENCE LAYER ===================== */ /* ambient animated aurora + data grid (regime-tinted, behind content) */ .ambient{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none} .ticker-bar,.regime-bar,.terminal{position:relative;z-index:1} /* topbar sits above the panes so its dropdowns (workspace selector, search) overlay page content */ .topbar{position:relative;z-index:60} .aurora{position:absolute;border-radius:50%;filter:blur(55px);will-change:transform;mix-blend-mode:multiply} .aurora.a1{width:46vw;height:46vw;left:-8vw;top:-14vh;opacity:.4; background:radial-gradient(circle at 50% 50%,var(--accent),transparent 67%);animation:auroraA 30s ease-in-out infinite} .aurora.a2{width:38vw;height:38vw;right:-6vw;top:6vh;opacity:.28; background:radial-gradient(circle at 50% 50%,var(--accent-d),transparent 70%);animation:auroraB 36s ease-in-out infinite} .aurora.a3{width:52vw;height:52vw;left:32vw;bottom:-26vh;opacity:.2; background:radial-gradient(circle at 50% 50%,var(--accent),transparent 72%);animation:auroraC 44s ease-in-out infinite} @keyframes auroraA{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(13vw,9vh) scale(1.18)}} @keyframes auroraB{0%,100%{transform:translate(0,0) scale(1.05)}50%{transform:translate(-11vw,7vh) scale(.9)}} @keyframes auroraC{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(7vw,-9vh) scale(1.16)}} .grid-motion{position:absolute;inset:-60%;opacity:.10;animation:gridPan 26s linear infinite; background-image:linear-gradient(var(--accent) 1px,transparent 1px),linear-gradient(90deg,var(--accent) 1px,transparent 1px);background-size:48px 48px} @keyframes gridPan{from{transform:translate(0,0)}to{transform:translate(48px,48px)}} html[data-surface="night"] .aurora{mix-blend-mode:screen} html[data-surface="night"] .aurora.a1{opacity:.5} html[data-surface="night"] .grid-motion{opacity:.14} body{background:var(--bg)} /* glassmorphism on key surfaces */ .regime-bar,.chart-card,.panel,.order-card,.ctx-card,.pane-left,.engine,.modal,.search-results,.toast, /* algo / ai / trader-desk panels, same glass as the floor so every persona reads consistently */ .av-head,.av-scroll,.ai-main,.ais-card,.desk-wrap{ background:var(--glass)!important;backdrop-filter:blur(13px) saturate(1.4);-webkit-backdrop-filter:blur(13px) saturate(1.4); box-shadow:var(--shadow),inset 0 1px 0 var(--glass-hi)} .engine,.modal{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)} .modal-scrim,.engine-scrim{backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)} /* keep inner sub-surfaces readable (not double-glassed) */ .surface-2,.inp,.qty-step,.wl-search,.rcard,.risk-cell{backdrop-filter:none;-webkit-backdrop-filter:none} /* CTA: animated light sheen sweep */ .cta{position:relative;overflow:hidden;isolation:isolate} .cta::after{content:"";position:absolute;top:0;left:-70%;width:55%;height:100%;z-index:1; background:linear-gradient(100deg,transparent,rgba(255,255,255,.4),transparent);transform:skewX(-18deg);animation:sheen 5s ease-in-out infinite} @keyframes sheen{0%,55%{left:-70%}78%,100%{left:150%}} /* card hover: accent glow halo + lift */ .chart-card:hover,.order-card:hover,.ctx-card:hover,.panel:hover{ box-shadow:var(--shadow-hover),0 0 0 1px var(--accent-line),0 0 34px -12px var(--accent-line),inset 0 1px 0 var(--glass-hi)} .wl-row:hover{box-shadow:inset 0 0 0 1px var(--accent-line)} /* breathing glow on signature live elements */ .rb-emo{animation:breathe 4.5s ease-in-out infinite} @keyframes breathe{0%,100%{box-shadow:0 6px 18px -6px var(--accent-line),var(--shadow)}50%{box-shadow:0 8px 30px -4px var(--accent-line),var(--shadow)}} .auto-pill.on{animation:autoGlow 3s ease-in-out infinite} @keyframes autoGlow{0%,100%{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 16px -4px var(--accent-line)}} @keyframes personaMorph{0%{opacity:.5;transform:scale(.996)}100%{opacity:1;transform:none}} .persona-morph .pane-right,.persona-morph .panel,.persona-morph .regime-bar,.persona-morph .pane-left{animation:personaMorph .42s ease both} html[data-persona="investor"] .ch-tool[data-tool="trade"]{display:none} /* ================= PERSONA: first-run gate ================= */ .persona-gate{position:fixed;inset:0;z-index:300;display:none;align-items:center;justify-content:center;padding:24px; background:rgba(8,13,24,.55);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)} .persona-gate.show{display:flex;animation:fadeIn .25s ease both} @keyframes fadeIn{from{opacity:0}to{opacity:1}} .pg-card{width:min(560px,94vw);background:var(--surface);border:1px solid var(--line-2);border-radius:20px; box-shadow:var(--shadow-lg);padding:30px 28px;text-align:center;animation:fadeUp .3s ease both} .pg-logo{height:25px;width:auto;aspect-ratio:1;margin-bottom:18px;color:var(--accent)} .pg-title{font-size:21px;font-weight:800;margin:0 0 8px;letter-spacing:-.4px;color:var(--navy)} .pg-sub{color:var(--slate);font-size:13px;margin:0 auto 22px;max-width:450px;line-height:1.5} .pg-opts{display:grid;grid-template-columns:1fr 1fr;gap:14px} .pg-opt{display:flex;flex-direction:column;align-items:flex-start;gap:7px;text-align:left;cursor:pointer; border:1.5px solid var(--line-2);background:var(--surface-2);border-radius:15px;padding:18px 16px;transition:.18s;font-family:var(--sans)} .pg-opt:hover,.pg-opt:focus-visible{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-2px);box-shadow:var(--shadow-hover);outline:none} .pg-ic{display:grid;place-items:center;width:46px;height:46px;border-radius:12px;background:var(--surface); border:1px solid var(--line);color:var(--accent-d);margin-bottom:4px} .pg-opt:hover .pg-ic{background:#fff} .pg-opt b{font-size:15px;color:var(--navy)} .pg-desc{color:var(--slate);font-size:11.5px;line-height:1.45} .pg-skip{margin-top:20px;border:none;background:transparent;color:var(--slate);font-size:12px;font-weight:600; cursor:pointer;text-decoration:underline;font-family:var(--sans)} .pg-skip:hover{color:var(--navy)} @media(max-width:560px){.pg-opts{grid-template-columns:1fr}} /* ---- onboarding wizard: stepper + connect-Kite step ---- */ .pg-steps{display:flex;gap:7px;justify-content:center;margin:-6px 0 18px} .pg-dot{width:7px;height:7px;border-radius:50%;background:var(--line-2);transition:.2s} .pg-dot.on{background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)} .persona-gate[data-step="1"] .pg-step2{display:none} .persona-gate[data-step="2"] .pg-step1{display:none} .pg-step2{animation:fadeUp .26s ease both} .ob-status{display:flex;align-items:flex-start;gap:11px;text-align:left;border-radius:13px;padding:14px 15px; border:1px solid var(--line-2);background:var(--surface-2);margin-bottom:13px} .ob-status b{display:block;font-size:13.5px;color:var(--navy);margin-bottom:2px} .ob-status span{font-size:12px;color:var(--slate);line-height:1.5} .ob-status.ok{border-color:color-mix(in srgb,var(--green) 45%,var(--line-2));background:color-mix(in srgb,var(--green) 8%,var(--surface))} .ob-status.warn{border-color:color-mix(in srgb,var(--amber) 45%,var(--line-2));background:color-mix(in srgb,var(--amber) 8%,var(--surface))} .ob-status.off{border-color:var(--line-2)} .ob-status .live-dot{margin-top:3px;flex:0 0 auto} .ob-status>svg{flex:0 0 auto;margin-top:2px;color:var(--slate)} .ob-cmd{display:flex;align-items:center;gap:9px;text-align:left;background:var(--navy);border-radius:11px; padding:9px 11px;margin-bottom:11px;flex-wrap:wrap} .ob-cmd-l{font-size:10px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:rgba(255,255,255,.55)} .ob-cmd code{flex:1;min-width:160px;font-family:var(--mono,monospace);font-size:11.5px;color:#dfe7f5;white-space:nowrap;overflow-x:auto} .ob-copy{border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);color:#fff;border-radius:7px; padding:4px 10px;font-size:11px;font-weight:600;cursor:pointer;font-family:var(--sans);transition:.15s} .ob-copy:hover{background:rgba(255,255,255,.18)} .ob-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px} .ob-actions .tbtn{flex:0 0 auto} .ob-hint{font-size:11.5px;color:var(--slate);line-height:1.45;text-align:left} .ob-legend{display:flex;flex-wrap:wrap;gap:6px 14px;justify-content:flex-start;text-align:left; border-top:1px dashed var(--line-2);padding-top:13px;margin-bottom:4px;font-size:11px;color:var(--slate)} .ob-legend>span{display:inline-flex;align-items:center;gap:5px} .ob-legend p{flex-basis:100%;margin:2px 0 0;font-size:11px;color:var(--slate);font-style:italic} .ob-tag{font-size:9.5px;font-weight:800;letter-spacing:.4px;padding:2px 6px;border-radius:5px;line-height:1} .ob-tag.live{color:#fff;background:var(--green)} .ob-tag.paper{color:var(--navy);background:color-mix(in srgb,var(--amber) 28%,#fff);border:1px solid color-mix(in srgb,var(--amber) 50%,#fff)} .ob-tag.demo{color:var(--slate);background:var(--surface-2);border:1px solid var(--line-2)} .ob-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px} .ob-foot .pg-skip{margin-top:0} .ob-start{flex:0 0 auto} /* ================= INVESTOR: goals + allocation ================= */ .goals-wrap{display:flex;flex-direction:column;gap:10px;padding:4px 2px 2px} .goal-card{border:1px solid var(--line);border-radius:11px;padding:11px 13px;background:var(--surface-2)} .goal-h{display:flex;align-items:center;gap:9px;margin-bottom:8px;font-size:13px;font-weight:700} .goal-h b{flex:1;color:var(--navy)} .goal-h .num{color:var(--accent-d)} .goal-bar{height:7px;border-radius:5px;background:var(--line);overflow:hidden} .goal-bar span{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,var(--accent),var(--accent-d))} .goal-sub{display:flex;justify-content:space-between;font-size:10.5px;color:var(--slate);margin-top:6px;font-family:var(--mono)} .alloc{display:flex;flex-direction:column;gap:10px;padding:9px 2px 2px} .alloc-row{display:flex;align-items:center;gap:10px} .alloc-a{width:54px;font-size:12px;font-weight:600;color:var(--navy)} .alloc-track{position:relative;flex:1;height:8px;border-radius:5px;background:var(--line)} .alloc-fill{display:block;height:100%;border-radius:5px;transition:width .4s ease} .al-green{background:var(--green)} .al-blue{background:var(--blue)} .al-amber{background:var(--amber)} .al-slate{background:var(--slate-2)} .alloc-track i{position:absolute;top:-3px;width:2px;height:14px;background:var(--navy);border-radius:2px;opacity:.5} .alloc-v{width:36px;text-align:right;font-size:11.5px;font-weight:700;color:var(--navy)} /* ================= CINEMATIC REVEAL ================= */ .reveal-stage{position:fixed;inset:0;z-index:150;pointer-events:none;display:none;overflow:hidden} .reveal-stage.go{display:block} .rv-back{position:absolute;inset:0} .reveal-regime .rv-back{background:radial-gradient(75% 75% at 50% 45%,rgba(6,10,20,.78),rgba(6,10,20,.9)); animation:rvBack 1.4s ease both} @keyframes rvBack{0%{opacity:0}14%{opacity:1}70%{opacity:1}100%{opacity:0}} /* card vanish + smoky return */ .rv-out{animation:rvOut .32s cubic-bezier(.4,0,.7,1) both;animation-delay:var(--rvd,0ms)} @keyframes rvOut{to{opacity:0;transform:translateY(12px) scale(.93);filter:blur(8px)}} .rv-in{animation:rvIn .62s cubic-bezier(.2,.75,.3,1) both;animation-delay:var(--rvd,0ms)} @keyframes rvIn{0%{opacity:0;transform:translateY(16px) scale(.95);filter:blur(13px) saturate(.4)} 55%{filter:blur(2px) saturate(.85)}100%{opacity:1;transform:none;filter:none}} /* mascot core */ .rv-core{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);display:grid;place-items:center;--c:#00ab4e;--cd:#0a7d3c;--cl:#5fe293} .rv-core.bull{--c:#13b85a;--cd:#0a7d3c;--cl:#5fe293} .rv-core.neutral{--c:#3b86ff;--cd:#1f5bd0;--cl:#8fb8ff} .rv-core.bear{--c:#ef3b3e;--cd:#b3262a;--cl:#ff8587} .rv-burst{position:absolute;width:120px;height:120px;border-radius:50%;border:2px solid var(--c);opacity:0; animation:rvBurst 1.05s ease-out both} .rv-burst.b2{animation-delay:.18s;width:90px;height:90px} @keyframes rvBurst{0%{transform:scale(.2);opacity:.7}80%{opacity:0}100%{transform:scale(3.6);opacity:0}} .rv-glyph{position:relative;display:grid;place-items:center;animation:rvAppear 1.45s ease both} @keyframes rvAppear{0%{opacity:0}10%{opacity:1}80%{opacity:1}100%{opacity:0;filter:blur(9px);transform:scale(1.1)}} .rv-img{max-height:300px;max-width:540px;width:auto;height:auto;display:block;-webkit-user-drag:none} .rv-svg{width:168px;height:168px;filter:drop-shadow(0 3px 16px var(--c))} /* soft diffuse aura only: no boxy disc (background removed) */ .rv-halo{position:absolute;width:560px;height:560px;border-radius:50%; background:radial-gradient(circle,var(--c),transparent 55%);opacity:0;filter:blur(70px);animation:rvHalo 1.45s ease both;mix-blend-mode:screen} @keyframes rvHalo{0%{opacity:0;transform:scale(.5)}25%{opacity:.26}60%{opacity:.15}100%{opacity:0;transform:scale(1.25)}} /* rotating energy rays behind the mascot (conic sunburst) */ .rv-rays{position:absolute;width:640px;height:640px;border-radius:50%; background:repeating-conic-gradient(from 0deg,var(--c) 0 1.4deg,transparent 1.4deg 15deg); opacity:0;mix-blend-mode:screen;will-change:transform,opacity; -webkit-mask:radial-gradient(circle,transparent 30%,#000 38%,#000 62%,transparent 73%); mask:radial-gradient(circle,transparent 30%,#000 38%,#000 62%,transparent 73%); animation:rvRays 1.45s cubic-bezier(.2,.7,.3,1) both} @keyframes rvRays{0%{opacity:0;transform:rotate(-26deg) scale(.55)} 20%{opacity:.17}70%{opacity:.1;transform:rotate(26deg) scale(1.04)}100%{opacity:0;transform:rotate(46deg) scale(1.2)}} /* owl: finer, calmer ray fan */ .rv-neutral .rv-rays{animation-duration:1.5s;background:repeating-conic-gradient(from 0deg,var(--c) 0 .8deg,transparent .8deg 11deg)} /* ground shockwave at the feet, bull charge & bear slam impact */ .rv-ground{position:absolute;width:236px;height:56px;border-radius:50%;border:2px solid var(--c); opacity:0;mix-blend-mode:screen;filter:blur(.5px)} .rv-bull .rv-ground{animation:rvGround 1.05s ease-out both;animation-delay:.14s} .rv-bear .rv-ground{animation:rvGround .95s ease-out both;animation-delay:.06s} .rv-neutral .rv-ground{display:none} @keyframes rvGround{0%{opacity:0;transform:translateY(118px) scale(.2)}18%{opacity:.85}100%{opacity:0;transform:translateY(118px) scale(1.75)}} /* per-regime mascot motion */ .rv-bull .rv-img{animation:bullCharge 1.45s cubic-bezier(.18,.9,.3,1) both} @keyframes bullCharge{0%{opacity:0;transform:translateX(-155px) scale(.72) rotate(-4deg);filter:drop-shadow(0 0 0 transparent)} 16%{opacity:1;transform:translateX(12px) scale(1.05) rotate(0);filter:drop-shadow(0 0 36px var(--c))}26%{transform:translateX(-5px) scale(.99);filter:drop-shadow(0 7px 20px var(--c))} 36%{transform:translateX(2px) scale(1.01)}48%{transform:none;filter:drop-shadow(0 7px 18px var(--c))}82%{transform:none;filter:drop-shadow(0 7px 18px var(--c))}100%{opacity:0;transform:scale(1.12);filter:drop-shadow(0 0 42px var(--c))}} .rv-bear .rv-img{animation:bearLungeImg 1.45s cubic-bezier(.2,.85,.3,1) both} @keyframes bearLungeImg{0%{opacity:0;transform:scale(.34);filter:drop-shadow(0 0 0 transparent)}14%{opacity:1;transform:scale(1.13);filter:drop-shadow(0 0 48px var(--c))}24%{transform:scale(.97);filter:drop-shadow(0 9px 22px var(--c))} 32%{transform:scale(1.05)}40%{transform:scale(1);filter:drop-shadow(0 9px 20px var(--c))}46%{transform:translateX(-4px)}51%{transform:translateX(4px)} 56%{transform:translateX(0);filter:drop-shadow(0 9px 20px var(--c))}82%{transform:none;filter:drop-shadow(0 9px 20px var(--c))}100%{opacity:0;transform:scale(1.14);filter:drop-shadow(0 0 46px var(--c))}} .rv-neutral .rv-img{animation:owlSettle 1.5s ease both} @keyframes owlSettle{0%{opacity:0;transform:translateY(-22px) scale(.72);filter:drop-shadow(0 0 0 transparent)}18%{opacity:1;transform:translateY(0) scale(1.02);filter:drop-shadow(0 0 30px var(--c))} 32%{transform:translateY(2px) scale(1);filter:drop-shadow(0 6px 18px var(--c))}52%{transform:translateY(-3px);filter:drop-shadow(0 11px 28px var(--c))}72%{transform:translateY(1px);filter:drop-shadow(0 6px 18px var(--c))}82%{transform:none}100%{opacity:0;transform:scale(1.06);filter:drop-shadow(0 0 30px var(--c))}} /* filled mascot art */ .m-body{fill:var(--c)} .m-dark{fill:var(--cd)} .m-light{fill:var(--cl)} .m-horn{fill:#f3e9d2} .m-stroke{stroke:var(--cd);stroke-width:3.4;stroke-linejoin:round;stroke-linecap:round;paint-order:stroke} .m-claw{fill:none;stroke:#f3e9d2;stroke-width:3;stroke-linecap:round} .m-chain{fill:none;stroke:var(--cd);stroke-width:2.4;stroke-linecap:round} .m-eye{fill:#f5b62b} .snort,.bear-jaw,.bear-arm,.scale-beam,.m-all{transform-box:fill-box} .rv-bull .m-all,.rv-bear .m-all{transform-origin:center} .rv-bull .m-all{animation:bullLunge 1.15s cubic-bezier(.2,.9,.3,1) both} .rv-bear .m-all{animation:bearLunge 1.15s cubic-bezier(.2,.9,.3,1) both} .rv-neutral .m-all{transform-origin:center;animation:owlBob 1.3s ease both} @keyframes owlBob{0%{transform:translateY(-12px) scale(.82)}18%{transform:translateY(2px) scale(1.03)}34%{transform:translateY(0) scale(1)}54%{transform:translateY(-3px)}74%{transform:translateY(1px)}100%{transform:none}} @keyframes bullLunge{0%{transform:translate(30px,-9px)}16%{transform:translate(-4px,2px)}32%{transform:translate(1px,0)}48%{transform:none}100%{transform:none}} @keyframes bearLunge{0%{transform:translateY(24px) scale(.9)}18%{transform:translateY(-4px) scale(1.05)}34%{transform:translateY(1px) scale(.99)}50%{transform:none}100%{transform:none}} .snort{transform-origin:center;opacity:0;animation:snort 1.3s ease-out both} .snort.s2{animation-delay:.12s} @keyframes snort{0%{opacity:0;transform:scale(.4)}25%{opacity:.75}100%{opacity:0;transform:translateY(16px) scale(1.9)}} .bear-jaw{transform-origin:center top;animation:bearRoar 1.25s ease both} @keyframes bearRoar{0%{transform:scaleY(.25)}22%{transform:scaleY(1.18)}42%{transform:scaleY(.94)}62%{transform:scaleY(1.05)}100%{transform:scaleY(1)}} .bear-arm{transform-origin:center;animation:bearSwipe 1.2s ease both} @keyframes bearSwipe{0%{transform:rotate(0)}30%{transform:rotate(-9deg)}60%{transform:rotate(5deg)}100%{transform:rotate(0)}} .scale-beam{transform-origin:center;animation:scaleTilt 1.45s ease-in-out both} @keyframes scaleTilt{0%{transform:rotate(0)}20%{transform:rotate(-7deg)}50%{transform:rotate(6deg)}75%{transform:rotate(-3deg)}100%{transform:rotate(0)}} /* streaks of energy */ .rv-streaks{position:absolute;inset:0;display:grid;place-items:center} .rv-streak{position:absolute;width:3px;height:38px;border-radius:3px;background:linear-gradient(to top,transparent,var(--c)); opacity:0;animation:rvStreak .85s ease-out both;animation-delay:var(--d)} @keyframes rvStreak{0%{opacity:0;transform:rotate(var(--a)) translateY(-18px) scaleY(.3)} 35%{opacity:.85}100%{opacity:0;transform:rotate(var(--a)) translateY(-104px) scaleY(1)}} /* directional particles */ .rv-pcl{position:absolute;width:var(--sz);height:var(--sz);border-radius:50%;background:var(--c);opacity:0; box-shadow:0 0 9px var(--c);animation:rvPcl 1.2s ease-out both;animation-delay:var(--dl)} @keyframes rvPcl{0%{opacity:0;transform:translate(0,0) scale(.4)}25%{opacity:.95} 100%{opacity:0;transform:translate(var(--tx),var(--ty)) scale(1)}} /* smoke puffs */ .rv-smoke{position:absolute;width:var(--sz);height:var(--sz);border-radius:50%; background:radial-gradient(circle,rgba(255,255,255,.5),rgba(255,255,255,0) 65%);opacity:0;filter:blur(6px); animation:rvSmoke 1.3s ease-out both;animation-delay:var(--dl)} @keyframes rvSmoke{0%{opacity:0;transform:translate(0,12px) scale(.4)}30%{opacity:.5} 100%{opacity:0;transform:translate(calc(var(--x)*72px),-58px) scale(2.3)}} /* regime word */ .rv-word{position:absolute;bottom:-186px;left:50%;transform:translateX(-50%);text-align:center;color:#fff; font-family:var(--sans);font-weight:800;font-size:36px;letter-spacing:3px;text-shadow:0 2px 22px var(--c);white-space:nowrap; animation:rvWord 1.4s cubic-bezier(.2,.8,.3,1) both} .rv-word small{display:block;font-size:11.5px;font-weight:600;letter-spacing:1.5px;opacity:.82;margin-top:5px;text-transform:uppercase} @keyframes rvWord{0%{opacity:0;transform:translateX(-50%) translateY(18px);filter:blur(8px)} 22%{opacity:1;transform:translateX(-50%) translateY(0);filter:blur(0)}74%{opacity:1}100%{opacity:0;filter:blur(4px)}} /* persona sweep + emblem */ .reveal-persona.trader{--c:#1667d9} .reveal-persona.investor{--c:#00ab4e} .reveal-persona .rv-back{background:rgba(8,13,24,.24);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:rvBack .85s ease both} .rv-sweep{position:absolute;top:0;bottom:0;width:42vw;left:-48vw; background:linear-gradient(100deg,transparent,var(--c),transparent);opacity:0;filter:blur(16px); animation:rvSweep .82s cubic-bezier(.5,0,.3,1) both} @keyframes rvSweep{0%{left:-48vw;opacity:0}30%{opacity:.55}100%{left:106vw;opacity:0}} .rv-emblem{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);display:grid;place-items:center;gap:9px; color:#fff;text-align:center;animation:rvEmblem .85s ease both} .rv-emblem .rve-ic{display:grid;place-items:center;width:76px;height:76px;border-radius:22px;background:var(--c); box-shadow:0 14px 44px -8px var(--c)} .rv-emblem .rve-ic .ico{color:#fff;stroke:#fff} .rv-emblem b{font-family:var(--sans);font-weight:800;font-size:21px;letter-spacing:.5px} .rv-emblem small{font-size:11px;opacity:.82;text-transform:uppercase;letter-spacing:1.4px} @keyframes rvEmblem{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)} 25%{opacity:1;transform:translate(-50%,-50%) scale(1.05)}70%{opacity:1;transform:translate(-50%,-50%) scale(1)} 100%{opacity:0;transform:translate(-50%,-50%) scale(1.12)}} .pm-out{animation:pmOut .26s ease both;animation-delay:var(--rvd,0ms)} @keyframes pmOut{to{opacity:0;transform:translateY(8px) scale(.97);filter:blur(5px)}} .pm-in{animation:pmIn .55s cubic-bezier(.2,.8,.3,1) both;animation-delay:var(--rvd,0ms)} @keyframes pmIn{0%{opacity:0;transform:translateY(10px) scale(.98);filter:blur(8px)}100%{opacity:1;transform:none;filter:none}} /* regime-bar mascot badge */ .rb-mascot{width:42px;height:42px;object-fit:contain;display:block} .rb-emo:has(.rb-mascot){width:48px;height:48px;background:transparent;border-color:transparent;box-shadow:none;padding:2px;border-radius:13px} .rb-emo:has(.rb-mascot)::after{display:none} .rb-emo-ic{display:inline-flex;align-items:center;justify-content:center;color:var(--accent-d)} html[data-surface="night"] .rb-emo:has(.rb-mascot){filter:drop-shadow(0 0 10px var(--accent-line))} /* ================= CARD MINIMIZE / MAXIMIZE ================= */ .card-ctl{display:inline-flex;gap:3px;align-items:center} .card-ctl-abs{position:absolute;top:8px;right:11px;z-index:6} .cc-btn{width:23px;height:23px;display:grid;place-items:center;border:1px solid var(--line);background:var(--surface); color:var(--slate);border-radius:7px;cursor:pointer;transition:.15s;padding:0} .cc-btn:hover{color:var(--accent-d);border-color:var(--accent-line);background:var(--accent-soft)} .cc-btn:focus-visible{outline:none;box-shadow:var(--ring)} .cc-close:hover{color:#e5383b;border-color:#e5383b;background:rgba(229,56,59,.09)} .cc-btn .ico{width:13px;height:13px} /* closed/hidden cards collapse out of the layout; restore via + Widgets → Layout panels */ .card-hidden{display:none!important} .chart-card.card-hidden + .chart-resize{display:none} .ch-bar .card-ctl{margin-left:2px} .pane-head{align-items:center} .pane-head .card-ctl{margin-left:auto} .order-head{align-items:center;gap:7px} .order-head .oh-sym{flex:1} .ctx-head{align-items:center} .ctx-head>b{flex:1} .ctx-head .card-ctl{margin-left:6px} /* minimized → collapse to a header strip */ .pane-left.card-min{height:auto!important;align-self:start;overflow:hidden} .pane-left.card-min .wl-search,.pane-left.card-min .wl-meta,.pane-left.card-min .wl-rows,.pane-left.card-min .pane-resize{display:none} .chart-card.card-min{height:auto!important;min-height:0} .chart-card.card-min .ch-stage,.chart-card.card-min .chart-resize{display:none} .panel.card-min .panel-body{display:none} #orderPad.card-min .order-body{display:none} #contextModule.card-min .ctx-card>*:not(:first-child){display:none} #contextModule.card-min .ctx-card{padding-bottom:0} /* maximized → focus mode over the workspace */ .card-scrim{position:fixed;inset:0;z-index:120;background:rgba(8,13,24,.5); opacity:0;visibility:hidden;transition:opacity .2s} .card-scrim.show{opacity:1;visibility:visible} .card-max{position:fixed!important;top:62px!important;right:18px!important;bottom:18px!important;left:18px!important; z-index:128;width:auto!important;height:auto!important; max-width:none!important;min-width:0!important;min-height:0!important;overflow:auto;box-shadow:var(--shadow-lg); border:1px solid var(--line-2)!important;animation:cardMaxIn .22s ease both} @keyframes cardMaxIn{0%{opacity:.55;transform:scale(.985)}100%{opacity:1;transform:none}} /* maximized cards must be fully OPAQUE, no glass see-through over the scrim */ .card-max,.chart-card.card-max,.panel.card-max,.pane-left.card-max, #orderPad.card-max,#contextModule.card-max{ background:var(--surface)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important} #orderPad.card-max .order-card,#contextModule.card-max .ctx-card{ background:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important; box-shadow:none!important;border:none!important;max-width:560px;margin:0 auto} .card-max .ch-stage,.card-max .ch-canvas-wrap,.card-max .panel-body,.card-max .wl-rows{background:var(--surface)} .chart-card.card-max{display:flex;flex-direction:column} .panel.card-max{display:flex;flex-direction:column} .panel.card-max .panel-body{flex:1;overflow:auto} .pane-left.card-max{display:flex;flex-direction:column} .pane-left.card-max .wl-rows{flex:1} body.card-maxed .chart-resize{display:none} /* while a card is maxed, dissolve .terminal's z-index:1 stacking context so the fixed maxed card (z128) escapes ABOVE the body-level scrim (z120). Without this the scrim paints over the maxed card, dimming it AND swallowing every click. */ .terminal.has-max{z-index:auto} /* reduced-motion: kill the ambient + flourishes */ @media(prefers-reduced-motion:reduce){ .ambient,.cta::after{display:none} .reveal-stage{display:none!important} .card-max{animation:none} } /* ============================================================ INVESTING MODE: recolor + "Invest & Trade" hub All rules scoped to html[data-persona="investor"] (or hub-only classes that only render in investor mode). Trading mode is completely unaffected. ============================================================ */ /* Investor: accent follows the REGIME (green/blue/red) like Trading/Algo/AI, no fixed emerald pin. Only the page-bg keeps a slightly cooler canvas; the regime colour reads through the whole skin. */ html[data-persona="investor"]{ --bg:#eef3f1; } html[data-persona="investor"][data-surface="night"]{ --bg:#08120e; } /* center-pane swap: hub replaces the chart in investor mode only */ #investHub{display:none} html[data-persona="investor"] #investHub{display:flex;flex-direction:column;flex:1;min-height:0} html[data-persona="investor"] #chartCard, html[data-persona="investor"] #chartResize{display:none!important} .invest-hub{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;animation:fadeUp .3s ease both} .ih-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 16px;border-bottom:1px solid var(--line)} .ih-h-tl b{display:block;font-size:15px;font-weight:800;color:var(--navy)} .ih-h-tl span{font-size:11.5px;color:var(--slate)} .ih-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:14px;overflow-y:auto} .ih-tile{display:flex;align-items:center;gap:12px;text-align:left;width:100%;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-s);padding:13px 14px;cursor:pointer;font-family:var(--sans);transition:transform .16s,box-shadow .16s,border-color .16s,background .16s} .ih-tile:hover{border-color:var(--accent-line);background:var(--accent-soft);transform:translateY(-1px);box-shadow:var(--shadow-hover)} .ih-tile:focus-visible{outline:none;box-shadow:var(--ring)} .ih-ic{flex:none;width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:var(--accent-soft);color:var(--accent-d);border:1px solid var(--accent-line)} .ih-ic.sm{width:26px;height:26px;border-radius:8px} .ih-tbody{flex:1;min-width:0} .ih-tbody b{display:flex;align-items:center;gap:7px;font-size:13.5px;font-weight:700;color:var(--navy)} .ih-tag{font-style:normal;font-size:10px;font-weight:700;color:var(--accent-d);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:20px;padding:1px 7px} .ih-desc{display:block;font-size:11.5px;color:var(--slate);margin-top:2px;line-height:1.35} .ih-go{flex:none;width:7px;height:7px;border-top:2px solid var(--slate-2);border-right:2px solid var(--slate-2);transform:rotate(45deg);transition:border-color .16s} .ih-tile:hover .ih-go{border-color:var(--accent-d)} .ih-back{display:inline-flex;align-items:center;gap:5px;background:none;border:none;cursor:pointer;color:var(--accent-d);font-weight:700;font-size:12.5px;font-family:var(--sans);padding:0} .ih-back::before{content:"";width:7px;height:7px;border-left:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg)} .ih-back:focus-visible{outline:none;box-shadow:var(--ring);border-radius:6px} .ih-secttl{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:800;color:var(--navy)} .ih-stub{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;text-align:center;padding:46px 24px;color:var(--slate)} .ih-stub-ic{width:66px;height:66px;display:grid;place-items:center;border-radius:18px;background:var(--accent-soft);color:var(--accent-d);border:1px solid var(--accent-line)} .ih-stub b{font-size:17px;color:var(--navy)} .ih-stub p{font-size:12.5px;max-width:300px;line-height:1.5;margin:0} .ih-soon{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-d);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:20px;padding:3px 11px;margin-top:4px} @media(max-width:880px){ .ih-grid{grid-template-columns:1fr} } /* ============================================================ DAY / NIGHT CASCADE: trading floor powers on/off, pane by pane Applied transiently by cascadeSurface(); works in both personas. ============================================================ */ .theme-flip{position:relative;transition:background-color .42s ease,color .42s ease,border-color .42s ease,box-shadow .42s ease,fill .42s ease} .theme-flip *{transition:background-color .42s ease,color .42s ease,border-color .42s ease,box-shadow .42s ease,fill .42s ease} .theme-flip::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:40;opacity:0; background:radial-gradient(circle at var(--fx,90%) var(--fy,0%),var(--accent-soft),transparent 72%); box-shadow:inset 0 0 30px -6px var(--accent-line),0 0 18px -7px var(--accent-line); animation:themeFlash .55s cubic-bezier(.4,0,.2,1)} @keyframes themeFlash{0%{opacity:0}22%{opacity:.95}100%{opacity:0}} @media(prefers-reduced-motion:reduce){.theme-flip,.theme-flip *{transition:none!important}.theme-flip::after{display:none}} /* ============================================================ INVESTING HUB DEPTH: portfolio overview hero + events/news ============================================================ */ .ih-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column} .ih-scroll .ih-grid{overflow:visible} .ih-sub{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:6px 16px 0} .ih-sub b{font-size:13px;font-weight:800;color:var(--navy)} .ih-sub span{font-size:11px;color:var(--slate)} .pf-hero{margin:14px 14px 2px;padding:14px 16px;background:linear-gradient(180deg,var(--accent-soft),var(--surface) 72%);border:1px solid var(--accent-line);border-radius:var(--radius-s)} .pf-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px;flex-wrap:wrap} .pf-tabs{display:inline-flex;gap:3px;background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:3px} .pf-tab{border:none;background:none;cursor:pointer;font-family:var(--sans);font-size:11.5px;font-weight:700;color:var(--slate);padding:5px 11px;border-radius:7px;transition:.15s} .pf-tab.on{background:var(--surface);color:var(--accent-d);box-shadow:var(--shadow)} .pf-acts{display:inline-flex;gap:7px} .pf-act{cursor:pointer;font-family:var(--sans);font-size:11.5px;font-weight:700;padding:6px 12px;border-radius:8px;border:1px solid var(--accent);background:var(--accent);color:#fff;transition:.15s} .pf-act:hover{filter:brightness(1.06);transform:translateY(-1px)} .pf-act.ghost{background:transparent;color:var(--accent-d);border-color:var(--accent-line)} .pf-row{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:14px;align-items:end} .pf-lbl{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--slate);font-weight:700} .pf-val{display:block;font-size:26px;font-weight:800;color:var(--navy);line-height:1.1;margin:2px 0} .pf-sub{font-size:11.5px;color:var(--slate)} .pf-stat b{display:block;font-size:16px;font-weight:800;margin:3px 0 1px} .pf-pct{font-size:11.5px;font-weight:700} .pf-breakup{margin-top:13px;padding-top:12px;border-top:1px solid var(--line)} .pf-bar{display:flex;height:8px;border-radius:6px;overflow:hidden;background:var(--surface-2)} .pf-seg{height:100%}.pf-seg.eq{background:var(--accent)}.pf-seg.mf{background:var(--blue)} .pf-leg{display:flex;gap:16px;align-items:center;margin-top:9px;font-size:11px;color:var(--slate);font-weight:600;flex-wrap:wrap} .pf-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle} .pf-dot.eq{background:var(--accent)}.pf-dot.mf{background:var(--blue)} .pf-surplus{margin-left:auto;color:var(--slate)}.pf-surplus b{color:var(--navy)} .badge.b-neu{background:var(--surface-2);color:var(--slate);border:1px solid var(--line-2)} .news-wrap{display:flex;flex-direction:column} .news-item{padding:10px 4px;border-bottom:1px solid var(--line)} .news-item:last-child{border-bottom:none} .news-h{font-size:12.5px;font-weight:600;color:var(--navy);line-height:1.4} .news-m{display:flex;gap:10px;margin-top:4px;font-size:11px;color:var(--slate)} .news-m .t-sym{color:var(--accent-d);font-weight:700} @media(max-width:1240px){.pf-row{grid-template-columns:1fr 1fr}.pf-main{grid-column:1/-1}} /* fit hero + tiles + panel into the investing center column: hub becomes the dominant scroll area; panel is a compact secondary strip */ html[data-persona="investor"] .panel{flex:0 1 auto;max-height:212px;overflow:hidden} html[data-persona="investor"] .panel-body{overflow-y:auto} .pf-hero{padding:12px 14px;margin:12px 12px 2px} .pf-top{margin-bottom:9px} .pf-val{font-size:22px} .pf-breakup{margin-top:9px;padding-top:9px} .ih-grid{gap:8px;padding:10px 14px 16px} .ih-tile{padding:10px 12px} .ih-ic{width:34px;height:34px} .ih-sub{padding:8px 16px 0} /* tiles: compact icon+label grid (matches the real dashboard) so all 7 fit */ .ih-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;padding:8px 14px 14px} .ih-desc{display:none} .ih-tile{padding:11px 12px;gap:10px} .ih-tbody b{font-size:12.5px} .ih-ic{width:32px;height:32px} html[data-persona="investor"] .panel{max-height:200px} .pf-hero{padding:11px 14px;margin:11px 12px 2px} .pf-breakup{margin-top:8px;padding-top:8px} .pf-bar{height:6px} /* ============================================================ WIDGETS: persona-aware composable cards Trading = real-time market & execution · Investing = wealth & planning Shared chrome (.wg-card / .wg-gallery); accent token differs per persona. ============================================================ */ /* topbar trigger (mirrors .engine-btn) */ .widget-btn{border:1px solid var(--line);background:var(--surface-2);color:var(--navy);display:flex;align-items:center;gap:7px; height:34px;padding:0 12px;border-radius:9px;font-family:var(--sans);font-weight:700;font-size:12px;cursor:pointer;transition:.18s} .widget-btn .ico{color:var(--accent-d)} .widget-btn:hover{border-color:var(--accent-line);color:var(--accent-d);box-shadow:var(--shadow)} .widget-btn:focus-visible{outline:none;box-shadow:var(--ring)} /* right-rail stack of live widget cards */ #widgetStack{display:flex;flex-direction:column;gap:var(--gap)} .wg-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow); overflow:hidden;animation:wgIn .26s ease both} @keyframes wgIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}} .wg-card.wg-drag{opacity:.45;box-shadow:var(--shadow-hover)} .wg-head{display:flex;align-items:center;gap:8px;padding:9px 11px;border-bottom:1px solid var(--line); background:linear-gradient(180deg,var(--surface-2),transparent)} .wg-ic{display:inline-flex;width:24px;height:24px;align-items:center;justify-content:center;border-radius:7px; background:var(--accent-soft);color:var(--accent-d);flex:0 0 auto} .wg-head b{font-size:12px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .wg-grip{color:var(--slate-2);cursor:grab;display:inline-flex;opacity:.7} .wg-grip:active{cursor:grabbing} .wg-x{border:none;background:transparent;color:var(--slate-2);width:22px;height:22px;border-radius:6px;cursor:pointer; display:inline-flex;align-items:center;justify-content:center;transition:.15s} .wg-x:hover{background:var(--tint-down);color:var(--red-d)} .wg-body{padding:10px 12px;display:flex;flex-direction:column;gap:6px} /* slide-in widget library (mirrors .engine) */ .wg-gallery{position:fixed;right:0;top:0;height:100vh;width:368px;z-index:80;background:var(--surface); border-left:1px solid var(--line);box-shadow:var(--shadow-lg);transform:translateX(0);transition:transform .32s ease; display:flex;flex-direction:column} .wg-gallery.collapsed{transform:translateX(390px)} .wg-gallery-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line)} .wg-gallery-head b{font-size:14px} .wg-gallery-head span{display:block;font-size:11px;color:var(--slate);margin-top:2px} .wg-gallery-body{padding:14px 16px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:9px} .wgl-note{font-size:11px;color:var(--slate);background:var(--accent-soft);border:1px solid var(--accent-line); border-radius:9px;padding:8px 11px;line-height:1.45} .wgl-note b{color:var(--accent-d)} .wgl-sec{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--slate-2);margin:13px 4px 7px} .wgl-item{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:11px 12px;cursor:pointer; border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface-2);transition:.16s;font-family:var(--sans)} .wgl-item:hover{border-color:var(--accent-line);background:var(--surface)} .wgl-item.on{border-color:var(--accent-line);background:var(--accent-soft)} .wgl-ic{display:inline-flex;width:34px;height:34px;align-items:center;justify-content:center;border-radius:9px; background:var(--surface);border:1px solid var(--line);color:var(--accent-d);flex:0 0 auto} .wgl-item.on .wgl-ic{background:var(--accent);border-color:var(--accent);color:#fff} .wgl-tb{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px} .wgl-tb b{font-size:12.5px;color:var(--navy)} .wgl-tb span{font-size:11px;color:var(--slate);white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .wgl-add{display:inline-flex;width:26px;height:26px;align-items:center;justify-content:center;border-radius:7px; background:var(--surface);border:1px solid var(--line-2);color:var(--slate);flex:0 0 auto} .wgl-item.on .wgl-add{background:var(--accent);border-color:var(--accent);color:#fff} /* ---- widget content primitives ---- */ .wg-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--navy)} .wg-row > span:first-child{color:var(--slate)} .wg-row .num{margin-left:auto} .wg-grow{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--navy)!important} .wg-split{display:grid;grid-template-columns:1fr 1fr;gap:12px} .wg-split .wg-row{gap:6px} .wg-cap{font-size:9.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;margin-bottom:4px;color:var(--slate)} .wg-cap.up{color:var(--green-d)} .wg-cap.down{color:var(--red-d)} .wg-big{font-family:var(--mono);font-size:21px;font-weight:700;letter-spacing:-.5px;margin:1px 0 4px} .wg-big small{font-size:11px;font-weight:600;color:var(--slate)} .wg-sub{font-size:10.5px;color:var(--slate);margin-top:2px} /* heatmap */ .wg-heat{display:grid;grid-template-columns:repeat(3,1fr);gap:5px} .wg-tile{padding:7px 8px;border-radius:8px;display:flex;flex-direction:column;gap:2px;border:1px solid transparent} .wg-tile b{font-size:10.5px;font-weight:700} .wg-tile .num{font-size:11px} .wg-tile.up{background:color-mix(in srgb,var(--green) calc(var(--i)*22%),var(--surface-2));border-color:var(--accent-line)} .wg-tile.down{background:color-mix(in srgb,var(--red) calc(var(--i)*22%),var(--surface-2));border-color:var(--bd-down)} .wg-tile.up b,.wg-tile.up .num{color:var(--green-d)} .wg-tile.down b,.wg-tile.down .num{color:var(--red-d)} /* market depth ladder */ .wg-depth{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:6px;font-size:11px;align-items:center} .wg-depth .num{margin:0} .wg-dhead{font-size:9px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;color:var(--slate-2)} .wg-q{font-family:var(--mono);color:var(--slate);text-align:center;font-size:10.5px} /* option-chain OI */ .wg-oi{display:flex;flex-direction:column;gap:3px} .wg-oirow{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;font-size:11px} .wg-oirow b{text-align:center;min-width:42px;color:var(--slate)} .wg-oirow.atm b{color:var(--accent-d);font-weight:700} .wg-obar{height:9px;border-radius:3px} .wg-obar.call{justify-self:end;background:linear-gradient(90deg,transparent,var(--red))} .wg-obar.put{justify-self:start;background:linear-gradient(90deg,var(--green),transparent)} /* progress bar track (allocation / goals / health / margin) */ .wg-bar-track{height:6px;border-radius:99px;background:var(--surface-2);border:1px solid var(--line);overflow:hidden} .wg-bar-track > span{display:block;height:100%;background:var(--accent);border-radius:99px} .wg-goal{display:flex;flex-direction:column;gap:5px} .wg-tgt{font-style:normal;color:var(--slate-2);font-weight:600;font-size:10.5px} .wg-day{display:inline-flex;width:24px;height:24px;align-items:center;justify-content:center;border-radius:7px; background:var(--accent-soft);color:var(--accent-d);font-family:var(--mono);font-size:11px;font-weight:700;flex:0 0 auto} .wg-score{display:flex;align-items:baseline;gap:4px;margin-bottom:2px} .wg-score b{font-family:var(--mono);font-size:26px;font-weight:700;color:var(--accent-d);letter-spacing:-1px} .wg-score span{font-size:12px;color:var(--slate)} /* persona differentiator: trading = denser, sharper corners; investing = airier */ html[data-persona="trader"] .wg-body{gap:5px} html[data-persona="trader"] .wg-card{border-radius:12px} html[data-persona="investor"] .wg-body{gap:8px} /* mobile: stack flows under context, gallery becomes full sheet */ @media(max-width:900px){.wg-gallery,.wg-gallery.collapsed{width:100vw}.wg-gallery.collapsed{transform:translateX(100vw)}} /* ============================================================ INVEST & TRADE: live tool sections Scoped to the investing hub; reuses design tokens so day/night + persona accents cascade automatically. ============================================================ */ .sec-scroll{padding-bottom:6px} .sec-body{padding:12px 14px 18px;display:flex;flex-direction:column;gap:12px} .ih-secttag{margin-left:auto;font-size:10.5px;font-weight:700;color:var(--accent-d);background:var(--accent-soft);border:1px solid var(--accent-line);padding:3px 9px;border-radius:99px} /* shared atoms */ .sec-tabs{display:flex;gap:4px;background:rgba(244,246,250,0.6);border:1px solid rgba(255,255,255,0.5);border-radius:12px;padding:4px} .sec-tab{flex:1;border:0;background:transparent;color:var(--slate);font-family:var(--sans);font-weight:700;font-size:12px; padding:8px 6px;border-radius:8px;cursor:pointer;transition:.16s;display:inline-flex;align-items:center;justify-content:center;gap:6px} .sec-tab:hover{color:var(--navy)} .sec-tab.on{background:var(--surface);color:var(--accent-d);box-shadow:0 4px 12px rgba(0,0,0,0.05)} .sec-tn{font-style:normal;font-size:10px;font-weight:700;background:var(--accent-soft);color:var(--accent-d);border-radius:99px;padding:1px 6px;min-width:16px;text-align:center} .sec-tab:not(.on) .sec-tn{background:var(--line);color:var(--slate)} .sec-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px} .sec-stat{background:rgba(255,255,255,0.6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,0.9);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:3px;box-shadow:0 8px 32px rgba(0,0,0,0.04);transition:transform 0.2s} .sec-stat:hover{transform:translateY(-2px);box-shadow:0 12px 40px rgba(0,0,0,0.06);border-color:var(--accent-line)} .ss-l{font-size:10px;color:var(--slate);text-transform:uppercase;letter-spacing:.3px;font-weight:600} .ss-v{font-size:17px;font-weight:700;letter-spacing:-.4px} .ss-s{font-size:10.5px;color:var(--slate-2)} button.ss-help{background:none;border:none;padding:0;font:inherit;text-transform:inherit;letter-spacing:inherit;cursor:help;display:inline-flex;align-items:center;gap:4px;text-decoration:underline dotted var(--slate);text-underline-offset:2px} button.ss-help:hover,button.ss-help:focus-visible{color:var(--accent-d);text-decoration-color:var(--accent-d)} .ss-q{width:11px;height:11px;border-radius:50%;background:var(--line-2,var(--line));color:var(--slate);font-size:8px;font-weight:700;font-style:normal;display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:1} .gloss-tip{position:fixed;z-index:80;max-width:260px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-s);box-shadow:var(--shadow-lg);padding:10px 12px;font-size:12.5px;line-height:1.45;color:var(--navy);opacity:0;transform:translateY(4px);pointer-events:none;transition:opacity .12s ease,transform .12s ease} .gloss-tip.show{opacity:1;transform:translateY(0)} .gloss-tip a{display:inline-block;margin-top:4px;color:var(--accent-d);font-weight:600;white-space:nowrap;text-decoration:none} .gloss-tip a:hover{text-decoration:underline} /* header book-P&L chip: Net by default, Realised·Unrealised on hover (pnl-pop) */ .pnl-chip{position:relative;cursor:default} .pnl-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:40;display:none;background:var(--surface);border:1px solid var(--line-2);border-radius:10px;padding:8px 11px;box-shadow:0 8px 24px rgba(0,0,0,.28);white-space:nowrap;gap:10px} .pnl-chip:hover .pnl-pop,.pnl-chip:focus-within .pnl-pop{display:flex} .pnl-pop .he-stat{gap:1px} .sec-empty{text-align:center;padding:34px 18px;display:flex;flex-direction:column;align-items:center;gap:7px; background:var(--surface);border:1px dashed var(--line-2);border-radius:14px} .se-ic{display:inline-flex;width:52px;height:52px;align-items:center;justify-content:center;border-radius:50%;background:var(--accent-soft);color:var(--accent-d)} .sec-empty b{font-size:14px} .sec-empty p{font-size:12px;color:var(--slate);max-width:320px;line-height:1.5} .sec-hint{display:flex;align-items:flex-start;gap:7px;font-size:11px;color:var(--slate);line-height:1.45} .sec-hint .ico{color:var(--accent-d);flex:0 0 auto;margin-top:1px} .rating{display:inline-flex;gap:1px;vertical-align:middle} .rating .star{color:var(--line-2)} .rating .star.on{color:var(--amber)} /* buttons */ .btn-primary{border:0;background:var(--accent);color:#fff;font-family:var(--sans);font-weight:700;font-size:12.5px; padding:9px 16px;border-radius:9px;cursor:pointer;transition:.16s;display:inline-flex;align-items:center;justify-content:center;gap:6px} .btn-primary:hover{background:var(--accent-d);box-shadow:var(--shadow-hover)} .btn-primary.sm{padding:7px 13px;font-size:12px} .btn-primary.block{width:100%;padding:11px} .btn-ghost{border:1px solid var(--line-2);background:var(--surface);color:var(--navy);font-family:var(--sans);font-weight:700;font-size:12px; padding:8px 13px;border-radius:9px;cursor:pointer;transition:.16s;display:inline-flex;align-items:center;gap:6px} .btn-ghost:hover{border-color:var(--accent-line);color:var(--accent-d);background:var(--accent-soft)} .btn-ghost.sm{padding:6px 11px;font-size:11.5px} .btn-ghost.danger{color:var(--red-d)} .btn-ghost.danger:hover{border-color:var(--bd-down);background:var(--tint-down);color:var(--red-d)} .btn-primary .ico,.btn-ghost .ico{flex:0 0 auto} .icon-mini{border:1px solid var(--line);background:var(--surface);color:var(--slate);width:28px;height:28px;border-radius:8px; display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s} .icon-mini:hover{border-color:var(--accent-line);color:var(--accent-d);background:var(--accent-soft)} .icon-mini.danger:hover{border-color:var(--bd-down);color:var(--red-d);background:var(--tint-down)} .applied-badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--green-d); background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:8px;padding:7px 11px} .vol-chip{font-size:10px;font-weight:700;padding:2px 8px;border-radius:99px} .vol-chip.b-up{background:var(--accent-soft);color:var(--green-d)} .vol-chip.b-warn{background:var(--tint-warn);color:var(--amber)} .vol-chip.b-neu{background:var(--surface-2);color:var(--slate);border:1px solid var(--line-2)} /* focus visibility (a11y) */ .sec-tab:focus-visible,.mf-chip:focus-visible,.btn-primary:focus-visible,.btn-ghost:focus-visible,.icon-mini:focus-visible, .flow-input:focus-visible,.step-btn:focus-visible,.rep-card:focus-visible,.ih-secttl:focus-visible{outline:none;box-shadow:var(--ring)} .flow-input:focus-visible{border-color:var(--accent)} /* ---- IPO ---- */ .ipo-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:11px} .ipo-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:13px 14px;display:flex;flex-direction:column;gap:11px;box-shadow:var(--shadow)} .ipo-h{display:flex;align-items:flex-start;justify-content:space-between;gap:8px} .ipo-h b{font-size:13.5px} .ipo-biz{display:block;font-size:11px;color:var(--slate);margin-top:1px} .ipo-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px} .ipo-grid > div{display:flex;flex-direction:column;gap:1px} .ipo-grid span{font-size:9.5px;color:var(--slate);text-transform:uppercase;letter-spacing:.2px} .ipo-grid b{font-size:13px} .ipo-sub2{font-size:10px;color:var(--slate-2);font-style:normal} .ipo-sub-bar{display:flex;flex-direction:column;gap:5px} .ipo-sub-top{display:flex;justify-content:space-between;font-size:11px;color:var(--slate)} .ipo-close{color:var(--slate-2)} .ipo-act{display:flex} .ipo-act .btn-primary{width:100%} /* ---- Algo ---- */ .algo-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:11px} .algo-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow)} .algo-card.is-live{border-color:var(--accent-line);box-shadow:0 0 0 1px var(--accent-line),var(--shadow)} .algo-h{display:flex;align-items:flex-start;justify-content:space-between;gap:8px} .algo-h b{font-size:14px} .algo-cat{display:block;font-size:10.5px;color:var(--slate);margin-top:1px} .algo-desc{font-size:11.5px;color:var(--slate);line-height:1.5;margin:0} .algo-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:9px} .algo-stats > div{display:flex;flex-direction:column;gap:1px} .algo-stats span{font-size:9px;color:var(--slate);text-transform:uppercase;letter-spacing:.2px} .algo-stats b{font-size:13px} .algo-act{display:flex;align-items:center;gap:8px;flex-wrap:wrap} .algo-act .btn-primary{width:100%} .live-pill{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--green-d);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:8px;padding:6px 10px} .live-pill.paused{color:var(--amber);background:var(--tint-warn);border-color:var(--bd-warn)} .algo-ctrls{display:flex;gap:6px;margin-left:auto} /* ---- Smart Basket ---- */ .bsk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:11px} .bsk-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:13px 14px;display:flex;flex-direction:column;gap:9px;box-shadow:var(--shadow)} .bsk-h{display:flex;align-items:center;justify-content:space-between;gap:8px} .bsk-h b{font-size:13.5px} .bsk-desc{font-size:11px;color:var(--slate);line-height:1.45;margin:0;flex:1} .bsk-meta{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;align-items:center} .bsk-meta > div{display:flex;flex-direction:column;gap:2px} .bsk-meta span:first-child{font-size:9px;color:var(--slate);text-transform:uppercase;letter-spacing:.2px} .bsk-meta b{font-size:13px} .bsk-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid var(--line);padding-top:9px} .bsk-min{font-size:11px;color:var(--slate);font-weight:600} .bsk-const{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:13px} .bc-row{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;background:var(--surface);padding:9px 12px;font-size:12px} .bc-nm{font-weight:500;color:var(--slate);font-size:10.5px;margin-left:7px} .bc-w{color:var(--accent-d);font-weight:700} /* ---- Portfolio Analyser ---- */ .anl-hero{display:flex;align-items:center;gap:16px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px 18px;box-shadow:var(--shadow)} .anl-score{position:relative;width:84px;height:84px;flex:0 0 auto} .anl-ring{width:84px;height:84px;transform:rotate(-90deg)} .anl-bg{fill:none;stroke:var(--surface-2);stroke-width:3.4} .anl-fg{fill:none;stroke:var(--accent);stroke-width:3.4;stroke-linecap:round;transition:stroke-dasharray .8s ease} .anl-score-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center} .anl-score-c b{font-family:var(--mono);font-size:24px;font-weight:700;letter-spacing:-1px;line-height:1} .anl-score-c span{font-size:10px;color:var(--slate)} .anl-grade b{font-size:18px;display:block} .anl-grade > span{font-size:11.5px;color:var(--slate)} .anl-mini{margin-top:6px;font-size:11px;color:var(--slate-2)} .anl-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:13px 15px;box-shadow:var(--shadow)} .anl-ttl{font-size:12px;font-weight:700;margin-bottom:10px} .anl-row{display:grid;grid-template-columns:78px 1fr 38px;gap:10px;align-items:center;margin-bottom:7px;font-size:11.5px} .anl-s{color:var(--slate)} .anl-row .num{text-align:right;font-size:11.5px} .anl-track{height:7px;border-radius:99px;background:var(--surface-2);border:1px solid var(--line);overflow:hidden} .anl-fill{display:block;height:100%;background:var(--accent);border-radius:99px} .anl-flags{display:flex;flex-direction:column;gap:8px} .anl-flag{display:flex;align-items:flex-start;gap:10px;border-radius:12px;padding:11px 13px;border:1px solid var(--line);background:var(--surface)} .anl-flag.warn{background:var(--tint-warn);border-color:var(--bd-warn)} .anl-flag.info{background:var(--surface-2)} .af-ic{flex:0 0 auto;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;background:var(--surface);color:var(--accent-d)} .anl-flag.warn .af-ic{color:var(--amber)} .af-b{flex:1;min-width:0} .af-b b{font-size:12px;display:block} .af-b span{font-size:11px;color:var(--slate);line-height:1.45} .anl-flag .btn-ghost{flex:0 0 auto;align-self:center} /* ---- Mutual Funds ---- */ .mf-bar{display:flex;flex-direction:column;gap:9px} .mf-search{display:flex;align-items:center;gap:9px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 12px} .mf-search:focus-within{border-color:var(--accent-line)} .mf-sic{color:var(--slate-2);flex:0 0 auto} .mf-input{flex:1;border:0;background:transparent;outline:none;font-family:var(--sans);font-size:13px;color:var(--navy);min-width:0} .mf-clear{border:0;background:transparent;color:var(--slate-2);cursor:pointer;display:inline-flex;padding:2px;border-radius:6px} .mf-clear:hover{color:var(--navy)} .mf-clear.hide{display:none} .mf-chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px} .mf-chip{border:1px solid var(--line);background:var(--surface);color:var(--slate);font-family:var(--sans);font-weight:600;font-size:11.5px; padding:6px 12px;border-radius:99px;cursor:pointer;white-space:nowrap;transition:.15s} .mf-chip:hover{border-color:var(--accent-line);color:var(--accent-d)} .mf-chip.on{background:var(--accent);border-color:var(--accent);color:#fff} .mf-head{display:grid;grid-template-columns:1fr 48px 48px 48px 78px;gap:8px;padding:2px 13px;font-size:9px;color:var(--slate-2);text-transform:uppercase;letter-spacing:.3px;font-weight:700} .mf-head span{text-align:right} .mf-head .mf-hn{text-align:left} .mf-list{display:flex;flex-direction:column;gap:8px} .mf-card{display:grid;grid-template-columns:1fr 48px 48px 48px 78px;gap:8px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:11px 13px;box-shadow:var(--shadow)} .mf-fn{min-width:0} .mf-fn b{font-size:12.5px;display:flex;align-items:center;gap:6px} .mf-cat{display:flex;align-items:center;gap:7px;font-size:10.5px;color:var(--slate);margin-top:2px;flex-wrap:wrap} .mf-ret{text-align:right} .mf-ret b{font-size:12px} .mf-inv{display:flex;justify-content:flex-end} .mf-inv .btn-primary{width:100%} .held-tag{font-style:normal;font-size:9px;font-weight:700;color:var(--accent-d);background:var(--accent-soft);border:1px solid var(--accent-line);padding:1px 6px;border-radius:99px;text-transform:uppercase;letter-spacing:.2px} /* ---- Stock SIP ---- */ .sip-list{display:flex;flex-direction:column;gap:9px} .sip-card{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:11px 13px;box-shadow:var(--shadow)} .sip-card.paused{opacity:.72} .sip-l{display:flex;align-items:center;gap:11px} .sip-day{display:inline-flex;width:36px;height:36px;align-items:center;justify-content:center;border-radius:10px;background:var(--accent-soft);color:var(--accent-d);font-family:var(--mono);font-size:13px;font-weight:700;flex:0 0 auto} .sip-l b{font-size:13px} .sip-nm{display:block;font-size:10.5px;color:var(--slate)} .sip-m{text-align:right} .sip-m b{font-size:13.5px} .sip-m span{display:block;font-size:10.5px;color:var(--slate)} .sip-r{display:flex;flex-direction:column;align-items:flex-end;gap:7px} .sip-status{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.2px;padding:2px 8px;border-radius:99px} .sip-status.active{background:var(--accent-soft);color:var(--green-d)} .sip-status.paused{background:var(--tint-warn);color:var(--amber)} .sip-acts{display:flex;gap:5px} /* ---- Research ---- */ .call-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:11px} .call-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:13px 14px;display:flex;flex-direction:column;gap:9px;box-shadow:var(--shadow)} .call-h{display:flex;align-items:center;justify-content:space-between} .call-h .t-sym{font-size:14px} .call-nm{font-weight:500;color:var(--slate);font-size:10.5px;margin-left:8px} .call-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:9px} .call-grid > div{display:flex;flex-direction:column;gap:1px} .call-grid span{font-size:9px;color:var(--slate);text-transform:uppercase;letter-spacing:.2px} .call-grid b{font-size:12.5px} .call-why{font-size:11.5px;color:var(--slate);line-height:1.5;margin:0} .call-foot{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:9px} .call-hz{font-size:11px;color:var(--slate-2);display:inline-flex;align-items:center;gap:5px} .rep-list{display:flex;flex-direction:column;gap:9px} .rep-card{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;transition:.15s;box-shadow:var(--shadow)} .rep-card:hover{border-color:var(--accent-line);box-shadow:var(--shadow-hover)} .rep-ic{display:inline-flex;width:36px;height:36px;align-items:center;justify-content:center;border-radius:10px;background:var(--accent-soft);color:var(--accent-d);flex:0 0 auto} .rep-b{flex:1;min-width:0} .rep-b b{font-size:12.5px;display:block} .rep-b span{font-size:10.5px;color:var(--slate)} .rep-go{color:var(--slate-2)} /* ---- flow modals (reuse #orderModal) ---- */ .modal-body{max-height:min(72vh,560px);overflow-y:auto} .flow-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;border-radius:11px;background:var(--surface-2);border:1px solid var(--line);margin-bottom:13px} .flow-top b{font-size:14px} .flow-sub{display:block;font-size:11px;color:var(--slate);margin-top:1px} .flow-field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px} .flow-field label{font-size:11.5px;font-weight:700;color:var(--navy)} .flow-field label i{font-style:normal;font-weight:500;color:var(--slate)} .flow-input{border:1px solid var(--line-2);background:var(--surface);color:var(--navy);font-family:var(--sans);font-size:14px; padding:10px 12px;border-radius:10px;outline:none;transition:.15s;width:100%} .flow-input.num{font-family:var(--mono)} .flow-input.inval{border-color:var(--red);background:var(--tint-down)} select.flow-input{cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:34px} .flow-2col{display:grid;grid-template-columns:1fr 1fr;gap:10px} .flow-rows{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:11px;overflow:hidden;margin-bottom:13px} .flow-rows > div{background:var(--surface);padding:9px 12px;display:flex;flex-direction:column;gap:1px} .flow-rows span{font-size:10px;color:var(--slate);text-transform:uppercase;letter-spacing:.2px} .flow-rows b{font-size:13.5px} .flow-rows b i{font-style:normal;font-size:11px} .flow-note{display:flex;align-items:flex-start;gap:8px;font-size:11px;color:var(--slate);background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:9px 11px;margin:0} .flow-note .ico{color:var(--accent-d);flex:0 0 auto;margin-top:1px} .flow-thesis{font-size:12.5px;color:var(--navy);line-height:1.6;margin:0 0 13px} .flow-confirm{font-size:13px;color:var(--navy);line-height:1.55;margin:2px 0 4px} .flow-err{display:flex;align-items:center;gap:7px;font-size:11.5px;font-weight:600;color:var(--red-d);background:var(--tint-down);border:1px solid var(--bd-down);border-radius:9px;padding:8px 11px;margin-top:-4px;margin-bottom:12px} .flow-err .ico{flex:0 0 auto} /* BUG FIX (2026-09-20): .flow-err's own display:flex outranks the [hidden] attribute's built-in display:none (a class selector beats a UA-stylesheet attribute selector on specificity) - this class was defined but never actually wired to the hidden attribute until the GYOK connect modal, which is what surfaced it: the empty error bar showed on every open, not just on a real validation failure. Same fix already applied elsewhere in this file for the same reason (.tk-settings[hidden], .layout-menu[hidden], .ws-empty[hidden]). */ .flow-err[hidden]{display:none} .flow-check{display:flex;align-items:flex-start;gap:9px;font-size:11.5px;color:var(--navy);line-height:1.45;margin-bottom:12px;cursor:pointer} .flow-check input{margin-top:1px;width:16px;height:16px;flex:0 0 auto;accent-color:var(--accent)} .flow-seg{margin-bottom:13px} .seg-btn.on{background:var(--surface);color:var(--accent-d);box-shadow:var(--shadow);font-weight:700} .stepper{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line-2);border-radius:10px;background:var(--surface-2);padding:3px;width:fit-content} .step-btn{border:0;background:var(--surface);color:var(--navy);width:38px;height:34px;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:.15s} .step-btn:hover:not(:disabled){background:var(--accent-soft);color:var(--accent-d)} .step-btn:disabled{opacity:.4;cursor:not-allowed} .step-val{min-width:46px;text-align:center;font-size:16px;font-weight:700} /* responsive: tighter grids on narrow center column */ @media(max-width:560px){ .ipo-list,.algo-list,.bsk-grid,.call-list{grid-template-columns:1fr} .mf-head{display:none} .mf-card{grid-template-columns:1fr auto;gap:6px 10px} .mf-fn{grid-column:1/-1} .mf-inv .btn-primary{width:auto} .flow-2col{grid-template-columns:1fr} } /* ============================================================ TRADING: Layout presets bar + Derivatives Desk ============================================================ */ #deskView{display:none} .db-label{font-size:10px;font-weight:700;color:var(--slate);text-transform:uppercase;letter-spacing:.4px;flex:0 0 auto} .db-chips{display:flex;gap:6px} .db-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface-2);color:var(--slate); font-family:var(--sans);font-weight:700;font-size:12px;padding:7px 12px;border-radius:9px;cursor:pointer;white-space:nowrap;transition:.15s} .db-chip .ico{color:var(--slate-2)} .db-chip:hover{border-color:var(--accent-line);color:var(--accent-d)} .db-chip:hover .ico{color:var(--accent-d)} .db-chip.on{background:var(--accent);border-color:var(--accent);color:#fff} .db-chip.on .ico{color:#fff} .db-chip:focus-visible{outline:none;box-shadow:var(--ring)} /* preset → workspace reconfiguration */ html[data-persona="trader"][data-layout="options"] #chartCard, html[data-persona="trader"][data-layout="options"] #chartResize, html[data-persona="trader"][data-layout="futures"] #chartCard, html[data-persona="trader"][data-layout="futures"] #chartResize, html[data-persona="trader"][data-layout="build"] #chartCard, html[data-persona="trader"][data-layout="build"] #chartResize{display:none} html[data-persona="trader"][data-layout="options"] #deskView, html[data-persona="trader"][data-layout="futures"] #deskView, html[data-persona="trader"][data-layout="build"] #deskView{display:flex;flex:1 1 auto;min-height:0} html[data-persona="trader"][data-layout="charts"] .panel{display:none} html[data-persona="trader"][data-layout="charts"] #chartCard{flex:1 1 auto} html[data-persona="trader"][data-layout="build"] .panel{display:none} @media(min-width:1241px){ html[data-persona="trader"][data-layout="watchlist"] .terminal{grid-template-columns:380px 1fr 290px} } /* desk shell */ .desk-view{flex-direction:column;min-height:0} .desk-wrap{display:flex;flex-direction:column;min-height:0;flex:1;background:var(--surface);border:1px solid var(--line); border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden} .desk-head{border-bottom:1px solid var(--line);padding:8px 10px 0} .desk-tabs{display:flex;gap:2px;overflow-x:auto} .desk-tab{position:relative;border:0;background:transparent;color:var(--slate);font-family:var(--sans);font-weight:700;font-size:12.5px; padding:9px 13px;cursor:pointer;border-radius:8px 8px 0 0;white-space:nowrap;transition:.15s;border-bottom:2px solid transparent} .desk-tab:hover{color:var(--navy)} .desk-tab.on{color:var(--accent-d);border-bottom-color:var(--accent)} .desk-tab:focus-visible{outline:none;box-shadow:var(--ring)} .desk-tn{font-style:normal;font-size:9.5px;font-weight:700;background:var(--accent);color:#fff;border-radius:99px;padding:0 5px;margin-left:4px;vertical-align:1px} .desk-scroll{overflow-y:auto;flex:1;padding:12px 14px} .desk-hint{display:flex;align-items:flex-start;gap:7px;font-size:10.5px;color:var(--slate);margin:12px 2px 2px;line-height:1.45} .desk-hint .ico{color:var(--accent-d);flex:0 0 auto;margin-top:1px} /* desk controls (underlying / expiry / summary) */ .desk-ctrls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--surface-2)} .dc-sel{display:flex;flex-direction:column;gap:4px} .dc-lab{font-size:9.5px;font-weight:700;color:var(--slate);text-transform:uppercase;letter-spacing:.3px} .dc-input{border:1px solid var(--line-2);background:var(--surface);color:var(--navy);font-family:var(--sans);font-weight:600;font-size:12.5px; padding:7px 30px 7px 10px;border-radius:9px;cursor:pointer;appearance:none;-webkit-appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center} .dc-input:focus-visible{outline:none;box-shadow:var(--ring);border-color:var(--accent)} .dc-stats{display:flex;gap:7px;margin-left:auto;flex-wrap:wrap} .dc-stat{display:flex;flex-direction:column;gap:1px;background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:6px 11px;min-width:62px} .dc-stat span{font-size:9px;color:var(--slate);text-transform:uppercase;letter-spacing:.2px} .dc-stat b{font-size:13px} /* live/connect chip on the derivatives desk + honest ", " cells (real-data, no synthetic chain) */ .dc-live{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;color:var(--green);text-transform:uppercase;letter-spacing:.3px;white-space:nowrap} .dc-live.off{color:var(--slate)} .dc-live svg{opacity:.7} /* Kite reconnect (daily-token self-heal), topbar + algo banner */ .mkt-relogin,.bot-relogin,.pf-relogin,.ais-relogin{font:inherit;font-size:10.5px;font-weight:700;cursor:pointer;border-radius:7px;padding:3px 9px;margin-left:2px; border:1px solid color-mix(in srgb,var(--amber) 45%,transparent);background:color-mix(in srgb,var(--amber) 16%,transparent);color:var(--amber);transition:background .15s} .mkt-relogin:hover,.bot-relogin:hover,.pf-relogin:hover,.ais-relogin:hover{background:color-mix(in srgb,var(--amber) 28%,transparent)} .mkt-relogin:disabled,.bot-relogin:disabled{opacity:.6;cursor:default} /* honest "connect Kite" notes (portfolio hero + AI signals), shown instead of fake numbers offline */ .pf-connect{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:11px;border-top:1px solid var(--line);font-size:11.5px;color:var(--slate);line-height:1.5} .pf-connect b{color:var(--ink)} .pf-row.pf-offline .pf-val.muted,.pf-row.pf-offline .num.muted{color:var(--slate-2)} .ais-off .ais-note{line-height:1.55} .ais-sub{font-size:9px;font-weight:600;color:var(--slate-2);font-style:normal;text-transform:uppercase;letter-spacing:.3px;margin-left:5px} /* ===================== MONETIZATION, plan chip + pricing storefront ===================== */ .plan-chip{display:inline-flex;align-items:center;gap:5px;font:inherit;font-size:11.5px;font-weight:700;cursor:pointer; padding:6px 11px;border-radius:10px;border:1px solid color-mix(in srgb,var(--accent) 40%,transparent); background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 16%,transparent),color-mix(in srgb,var(--accent) 6%,transparent));color:var(--accent);transition:filter .15s} .plan-chip:hover{filter:brightness(1.08)} /* GYOK header entry point: same box model as .plan-chip (shared class), its own accent per state - neutral/inviting when not connected, a quiet confirmed green once it is. Never red/urgent here, that treatment is reserved for Trading mode's actual Live-order flow, not this discovery chip. */ .ex-chip{border-color:var(--line-2);background:var(--surface-2);color:var(--slate)} .ex-chip.ex-on{border-color:color-mix(in srgb,var(--green) 40%,transparent); background:linear-gradient(135deg,color-mix(in srgb,var(--green) 16%,transparent),color-mix(in srgb,var(--green) 6%,transparent));color:var(--green-d)} .ex-chip .ex-dot{width:6px;height:6px;border-radius:50%;background:var(--slate-2);flex:0 0 auto;margin-right:1px} .ex-chip.ex-on .ex-dot{background:var(--green);box-shadow:0 0 0 3px var(--green-soft);animation:pulse 1.8s infinite} /* BUG FIX (2026-09-20): same shape as .flow-err/.tk-settings/.layout-menu/.ws-empty below - the inherited .plan-chip display:inline-flex beats the browser's [hidden]{display:none} UA rule regardless of specificity, so #exChip's own "never shows without window.ztExchange" guarantee (assets/app.js renderExchangeChip()) was unverified against this exact bug. */ .ex-chip[hidden]{display:none} /* GYOK connect form: a scannable trust strip instead of burying "non-custodial, encrypted, trade-only" inside a wall of prose, plus icon-prefixed inputs matching the search bar's own icon+input pattern elsewhere in the header. */ .trust-row{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:11px} .trust-badge{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;color:var(--accent-d); background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:999px;padding:4px 9px} .inp-ic{color:var(--slate-2);flex:0 0 auto;display:flex} .gyok-inp{flex:1;border:0;background:transparent;font-size:13px;color:var(--navy);outline:none;min-width:0;font-family:var(--mono)} .gyok-inp::placeholder{color:var(--slate-2);font-family:var(--sans)} /* UX FIX (2026-09-20): show/hide toggle for the API key/secret fields - lets a user verify what they actually pasted before submitting, real friction point for two 64-char random strings. */ .gyok-eye{background:transparent;border:0;padding:3px;margin:-3px;color:var(--slate-2);cursor:pointer;display:flex;align-items:center;border-radius:6px;flex:0 0 auto} .gyok-eye:hover{color:var(--navy);background:var(--surface)} /* UX REWORK (2026-09-20): Connect Binance modal's guided 2-step layout - .se-ic is the same 52px hero-icon circle secEmpty() already uses elsewhere, reused here rather than a new style. */ .gyok-hero{display:flex;justify-content:center;margin-bottom:10px} .gyok-sub{text-align:center;font-size:12px;color:var(--slate);line-height:1.55;margin:0 0 14px;padding:0 6px} .gyok-step{margin:16px 0 0} .gyok-step-h{display:flex;align-items:center;gap:8px;margin-bottom:10px} .gyok-step-n{display:inline-flex;align-items:center;justify-content:center;width:19px;height:19px;border-radius:50%;background:var(--accent-soft);color:var(--accent-d);font-size:11px;font-weight:800;flex:0 0 auto} .gyok-step-h b{font-size:12.5px;color:var(--navy)} .gyok-checklist{list-style:none;margin:0 0 11px;padding:0;display:flex;flex-direction:column;gap:7px} .gyok-checklist li{display:flex;align-items:flex-start;gap:7px;font-size:12px;color:var(--slate);line-height:1.5} .gyok-checklist li b{color:var(--navy)} .gyok-check-ic{color:var(--green);flex:0 0 auto;margin-top:2px;display:flex} .gyok-step .fld{margin-top:9px} .flow-links{display:flex;flex-wrap:wrap;gap:14px;margin:-3px 0 13px} .flow-links a{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--accent-d);text-decoration:none} .flow-links a:hover{text-decoration:underline} .pricing-ov{position:fixed;inset:0;z-index:200;background:color-mix(in srgb,#04070c 62%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:flex-start;justify-content:center;overflow:auto;padding:36px 18px} .pricing-panel{width:min(1080px,100%);background:var(--bg);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow-lg);padding:26px 28px 22px;animation:pxin .22s ease} @keyframes pxin{from{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:none}} .pricing-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px} .pricing-top h2{font-size:21px;font-weight:800;letter-spacing:-.4px;margin:0} .pricing-top p{font-size:12.5px;color:var(--slate);margin:5px 0 0;max-width:620px;line-height:1.5} .pricing-x{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--slate);cursor:pointer} .pricing-x:hover{background:var(--surface-2)} .pricing-founder{display:flex;align-items:center;gap:9px;margin-top:16px;padding:10px 14px;border-radius:12px;font-size:12px;color:var(--ink); background:linear-gradient(135deg,color-mix(in srgb,var(--amber) 18%,transparent),transparent);border:1px solid color-mix(in srgb,var(--amber) 35%,transparent)} .pricing-founder svg{color:var(--amber);flex:0 0 auto} .pricing-founder i{color:var(--slate);font-style:normal} .pricing-toggle{display:inline-flex;gap:3px;margin:16px 0 4px;padding:3px;background:var(--surface-2);border:1px solid var(--line);border-radius:11px} .pt-opt{font:inherit;font-size:12px;font-weight:700;cursor:pointer;border:0;background:transparent;color:var(--slate);padding:6px 14px;border-radius:8px;display:inline-flex;align-items:center;gap:6px} .pt-opt.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)} .pt-opt i{font-size:9.5px;font-weight:700;color:var(--green);font-style:normal} .pricing-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:14px} .pc-card{position:relative;display:flex;flex-direction:column;gap:9px;padding:16px 15px;border-radius:15px;background:var(--surface);border:1px solid var(--line)} .pc-card.star{border-color:color-mix(in srgb,var(--pc) 55%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--pc) 30%,transparent)} .pc-card.cur{background:var(--surface-2)} .pc-flag{position:absolute;top:-9px;left:50%;transform:translateX(-50%);font-size:9px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:#fff;background:var(--pc);padding:3px 9px;border-radius:20px;white-space:nowrap} .pc-h{display:flex;flex-direction:column;gap:1px} .pc-h b{font-size:15px;font-weight:800} .pc-h i{font-size:10px;color:var(--slate);font-style:normal;text-transform:uppercase;letter-spacing:.3px} .pc-price{display:flex;align-items:baseline;gap:6px} .pc-price b{font-size:23px;font-weight:800;letter-spacing:-.5px;color:var(--pc)} .pc-price span{font-size:10.5px;color:var(--slate)} .pc-blurb{font-size:11px;color:var(--slate);line-height:1.45;min-height:30px;margin:0} .pc-feats{list-style:none;margin:2px 0 0;padding:0;display:flex;flex-direction:column;gap:6px} .pc-feats li{display:flex;align-items:flex-start;gap:7px;font-size:11px;line-height:1.35;color:var(--ink)} .pc-tk{flex:0 0 auto;color:var(--pc);margin-top:1px;display:inline-flex} .pc-cta{margin-top:auto;font:inherit;font-size:12px;font-weight:700;cursor:pointer;padding:9px;border-radius:10px;border:1px solid var(--pc);background:var(--pc);color:#fff;transition:filter .15s} .pc-cta:hover{filter:brightness(1.08)} .pc-cta.cur{background:transparent;color:var(--slate);border-color:var(--line);cursor:default;display:flex;align-items:center;justify-content:center;gap:5px} .pricing-addons{margin-top:18px} .pc-addons-h{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--slate);margin-bottom:8px} .pc-addon{display:flex;flex-direction:column;gap:2px;padding:10px 13px;border:1px solid var(--line);border-radius:11px;margin-bottom:7px;background:var(--surface)} .pc-an{display:flex;align-items:baseline;gap:9px} .pc-an b{font-size:12.5px} .pc-an span{font-size:10.5px;color:var(--slate)} .pc-addon p{margin:0;font-size:11px;color:var(--slate)} .pricing-b2b{display:flex;align-items:flex-start;gap:11px;margin-top:14px;padding:13px 15px;border-radius:13px;background:var(--surface-2);border:1px solid var(--line);font-size:12px;line-height:1.5} .pricing-b2b svg{color:var(--accent);flex:0 0 auto;margin-top:1px} .pricing-b2b b{font-weight:800} .pc-link{font:inherit;font-size:12px;font-weight:700;color:var(--accent);background:none;border:0;cursor:pointer;padding:0} .pricing-demo{display:flex;align-items:flex-start;gap:7px;margin:16px 0 0;font-size:11px;color:var(--slate-2);line-height:1.5} .pricing-demo svg{flex:0 0 auto;margin-top:1px} .up-lock{display:flex;align-items:center;gap:12px;padding:4px 0 2px} .up-lock-ic{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px;background:color-mix(in srgb,var(--amber) 16%,transparent);color:var(--amber)} .up-lock b{display:block;font-size:14px} .up-lock span{font-size:11.5px;color:var(--slate)} /* honesty markers: roadmap (○ soon) vs live (✓), paper tag on the order pad */ .pc-feats li.soon{color:var(--slate-2)} .pc-feats li.soon .pc-tk{color:var(--slate-2)} .soon-pill{font-size:8px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;color:var(--amber);background:color-mix(in srgb,var(--amber) 16%,transparent);border-radius:5px;padding:1px 4px;font-style:normal;margin-left:3px} .leg-now{color:var(--green)} .leg-soon{color:var(--slate)} .paper-tag{font-size:8.5px;font-weight:800;letter-spacing:.4px;color:var(--amber);background:color-mix(in srgb,var(--amber) 15%,transparent);border:1px solid color-mix(in srgb,var(--amber) 35%,transparent);border-radius:5px;padding:1px 5px;font-style:normal;vertical-align:middle;cursor:help} /* real-order Live mode: deliberately red, not green - this is "you are about to risk real money", not a routine status chip, and must never be visually confusable with .paper-tag at a glance. */ .live-tag{font-size:8.5px;font-weight:800;letter-spacing:.4px;color:var(--red-d);background:color-mix(in srgb,var(--red) 15%,transparent);border:1px solid color-mix(in srgb,var(--red) 40%,transparent);border-radius:5px;padding:1px 5px;font-style:normal;vertical-align:middle;cursor:help} .live-toggle{display:flex;align-items:center;gap:8px;margin:0 0 11px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)} .live-toggle .lt-label{font-size:11.5px;font-weight:700;color:var(--slate);flex:1} .live-toggle .lt-seg{display:flex;border:1px solid var(--line-2);border-radius:8px;overflow:hidden} .live-toggle .lt-btn{border:0;background:var(--surface);color:var(--slate);font-family:var(--sans);font-weight:700;font-size:11px;padding:6px 12px;cursor:pointer} .live-toggle .lt-btn.on{background:var(--red);color:#fff} .live-toggle .lt-btn[data-lt="paper"].on{background:var(--slate);color:#fff} .live-toggle .lt-btn.locked{opacity:0.8;display:inline-flex;align-items:center;gap:4px;color:var(--slate-2);background:var(--surface-2)} .live-toggle .lt-btn.locked:hover{opacity:1;color:var(--accent-d);background:color-mix(in srgb,var(--amber) 10%,var(--surface))} .live-connect-hint{font-size:11.5px;color:var(--slate);margin:0 0 11px} .live-connect-hint a{color:var(--accent-d);font-weight:600;text-decoration:none} .live-connect-hint a:hover{text-decoration:underline} .cta-live{background:var(--red)!important;color:#fff!important} .cta-live:hover{filter:brightness(1.08)} .ih-demo{display:inline-flex;align-items:center;font-size:9.5px;font-weight:700;letter-spacing:.2px;color:var(--amber);background:color-mix(in srgb,var(--amber) 14%,transparent);border-radius:6px;padding:2px 7px;cursor:help;white-space:nowrap} .ih-live{display:inline-flex;align-items:center;gap:3px;font-size:9.5px;font-weight:700;letter-spacing:.2px;color:var(--green);background:color-mix(in srgb,var(--green) 14%,transparent);border-radius:6px;padding:2px 7px;cursor:help;white-space:nowrap} .anl-sec{font-size:9.5px;color:var(--slate-2);font-style:normal;margin-left:5px} .anl-pnl{min-width:74px;text-align:right;margin-left:8px} .anl-note{font-size:9.5px;color:var(--slate-2);font-weight:500;font-style:normal;margin-left:5px} @media(max-width:880px){ .pricing-grid{grid-template-columns:repeat(2,1fr)} } @media(max-width:520px){ .pricing-grid{grid-template-columns:1fr} } .bot-relogin{margin-left:auto} .live-dot.warn{background:var(--amber)} .live-dot.pulse{animation:dotpulse 1.1s ease-in-out infinite} @keyframes dotpulse{0%,100%{opacity:1}50%{opacity:.35}} .ch-na{color:var(--slate-2);opacity:.7} .cvch-off{display:flex;align-items:center;gap:7px;justify-content:center;padding:14px 8px;font-size:11.5px;color:var(--slate);text-align:center} /* option chain table */ .ch-tbl{width:100%;border-collapse:collapse;font-size:11.5px} .ch-tbl thead th{position:sticky;top:0;background:var(--surface);z-index:1} .ch-grp{padding:6px;font-size:9.5px;font-weight:800;letter-spacing:.5px;border-bottom:1px solid var(--line)} .ch-grp.call{color:var(--red-d);text-align:right} .ch-grp.put{color:var(--green-d);text-align:left} .ch-grp.k{color:var(--slate);text-align:center} .ch-sub th{padding:5px 8px;font-size:9px;color:var(--slate-2);text-transform:uppercase;letter-spacing:.2px;border-bottom:1px solid var(--line);text-align:right} .ch-sub th:nth-child(4){text-align:center} .ch-tbl tbody td{padding:5px 8px;text-align:right;border-bottom:1px solid var(--line)} .ch-oi{color:var(--slate)} .ch-ltp{padding:3px 4px!important} .ch-add{width:100%;border:0;background:transparent;color:var(--navy);font-family:var(--mono);font-size:11.5px;font-weight:600; padding:4px 6px;border-radius:6px;cursor:pointer;text-align:right;transition:.12s} .ch-add:hover{background:var(--accent-soft);color:var(--accent-d)} .ch-add:focus-visible{outline:none;box-shadow:var(--ring)} .ch-ltp.itm .ch-add{background:rgba(0,171,78,.07)} .ch-k{text-align:center!important;font-weight:700;color:var(--navy);background:var(--surface-2)} .ch-iv{display:block;font-style:normal;font-size:9px;color:var(--slate-2);font-weight:500} .ch-atm{background:var(--accent-soft)} .ch-atm .ch-k{background:var(--accent);color:#fff} /* OI analysis */ .oi-legend{display:flex;gap:16px;justify-content:center;font-size:10.5px;color:var(--slate);margin-bottom:10px} .oi-dot{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:-1px} .oi-dot.call{background:var(--red)} .oi-dot.put{background:var(--green)} .oi-chart{display:flex;flex-direction:column;gap:3px} .oi-row{display:grid;grid-template-columns:1fr 80px 1fr;align-items:center;gap:8px} .oi-row.atm{background:var(--accent-soft);border-radius:7px} .oi-call{display:flex;align-items:center;justify-content:flex-end;gap:6px} .oi-put{display:flex;align-items:center;gap:6px} .oi-bar{height:13px;border-radius:3px} .oi-bar.call{background:linear-gradient(90deg,var(--red),rgba(229,56,59,.45))} .oi-bar.put{background:linear-gradient(90deg,rgba(0,171,78,.45),var(--green))} .oi-v{font-size:10px;color:var(--slate);min-width:34px} .oi-call .oi-v{text-align:right} .oi-put .oi-v{text-align:left} .oi-k{text-align:center;font-weight:700;font-size:11.5px;padding:5px 0;position:relative} .oi-tag{display:block;font-style:normal;font-size:8px;font-weight:700;text-transform:uppercase;letter-spacing:.2px;margin-top:1px} .oi-tag.sup{color:var(--green-d)} .oi-tag.res{color:var(--red-d)} .oi-tag.mp{color:var(--amber)} /* strategy builder */ .strat-presets{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:13px} .strat-preset{border:1px solid var(--line-2);background:var(--surface);color:var(--navy);font-family:var(--sans);font-weight:600;font-size:11.5px; padding:6px 11px;border-radius:8px;cursor:pointer;transition:.15s;display:inline-flex;align-items:center;gap:5px} .strat-preset:hover{border-color:var(--accent-line);color:var(--accent-d);background:var(--accent-soft)} .strat-preset:focus-visible{outline:none;box-shadow:var(--ring)} .strat-preset.clear{margin-left:auto;color:var(--slate)} .strat-preset.clear[disabled]{opacity:.4;cursor:not-allowed} .strat-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:14px} .strat-legs{display:flex;flex-direction:column;gap:7px} .leg-row{display:grid;grid-template-columns:auto 1fr auto auto auto;gap:8px;align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:7px 9px} .leg-side{border:0;border-radius:7px;font-family:var(--sans);font-weight:800;font-size:10px;letter-spacing:.3px;padding:5px 9px;cursor:pointer;transition:.15s} .leg-side.buy{background:var(--accent-soft);color:var(--green-d)} .leg-side.sell{background:var(--tint-down);color:var(--red-d)} .leg-side.sm{padding:3px 7px;font-size:9px} .leg-side:focus-visible{outline:none;box-shadow:var(--ring)} .leg-desc{font-size:12px} .leg-type{font-style:normal;font-weight:700;font-size:10px;padding:1px 5px;border-radius:4px} .leg-type.ce{background:rgba(229,56,59,.12);color:var(--red-d)} .leg-type.pe{background:rgba(0,171,78,.12);color:var(--green-d)} .leg-ltp{font-size:11.5px;color:var(--slate)} .leg-qty{display:inline-flex;align-items:center;gap:3px;border:1px solid var(--line-2);border-radius:8px;background:var(--surface);padding:2px} .leg-qty button{border:0;background:transparent;color:var(--navy);width:24px;height:24px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center} .leg-qty button:hover{background:var(--accent-soft);color:var(--accent-d)} .leg-qty b{min-width:18px;text-align:center;font-size:12px} .leg-x{border:0;background:transparent;color:var(--slate-2);width:26px;height:26px;border-radius:7px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center} .leg-x:hover{background:var(--tint-down);color:var(--red-d)} .strat-analysis{display:flex;flex-direction:column;gap:9px} .strat-stats{display:grid;grid-template-columns:1fr 1fr;gap:7px} .ss2{background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:8px 11px;display:flex;flex-direction:column;gap:1px} .ss2 span{font-size:9.5px;color:var(--slate);text-transform:uppercase;letter-spacing:.2px} .ss2 b{font-size:14px} .pf-svg{width:100%;height:150px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px} .pf-zero{stroke:var(--line-2);stroke-width:1;stroke-dasharray:3 3} .pf-spot{stroke:var(--slate-2);stroke-width:1;stroke-dasharray:2 3} .pf-line{fill:none;stroke-width:2.2} .pf-line.up{stroke:var(--green)} .pf-line.down{stroke:var(--red)} .pf-be{fill:var(--navy)} .pf-axis{display:flex;justify-content:space-between;font-size:9.5px;color:var(--slate-2);font-family:var(--mono);margin-top:-2px} .pf-spotlab{color:var(--accent-d);font-weight:700} .strat-confirm{display:flex;flex-direction:column;gap:5px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:13px} /* futures buildup */ .fut-tbl{width:100%;border-collapse:collapse;font-size:11.5px} .fut-tbl thead th{position:sticky;top:0;background:var(--surface);text-align:right;padding:7px 9px;font-size:9px;color:var(--slate-2);text-transform:uppercase;letter-spacing:.2px;border-bottom:1px solid var(--line)} .fut-tbl thead th:first-child{text-align:left} .fut-tbl tbody td{padding:8px 9px;text-align:right;border-bottom:1px solid var(--line)} .fut-tbl tbody td:first-child{text-align:left} .bu-chip{font-size:9.5px;font-weight:700;padding:3px 9px;border-radius:99px;white-space:nowrap} .bu-chip.up{background:var(--accent-soft);color:var(--green-d)} .bu-chip.down{background:var(--tint-down);color:var(--red-d)} .bu-chip.warn{background:var(--tint-warn);color:var(--amber)} @media(max-width:680px){ .strat-grid{grid-template-columns:1fr} .dc-stats{margin-left:0;width:100%} } /* ============================================================ BUILD-YOUR-OWN: custom widget canvas ============================================================ */ .cv-topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 14px;border-bottom:1px solid var(--line)} .cv-title b{font-size:13.5px;display:inline-flex;align-items:center;gap:7px} .cv-title b .ico{color:var(--accent-d)} .cv-title span{display:block;font-size:11px;color:var(--slate);margin-top:1px} .cv-tools{display:flex;gap:8px;flex:0 0 auto} .cv-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;align-content:start} .cv-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-s);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;animation:wgIn .24s ease both;position:relative} .cv-card.span-2{grid-column:span 2} .cv-card.span-3{grid-column:span 3} .cv-card.cv-drag{opacity:.45;box-shadow:var(--shadow-hover)} .cv-head{display:flex;align-items:center;gap:8px;padding:8px 11px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--surface-2),transparent)} .cv-ic{display:inline-flex;width:23px;height:23px;align-items:center;justify-content:center;border-radius:7px;background:var(--accent-soft);color:var(--accent-d);flex:0 0 auto} .cv-head b{font-size:12px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .cv-grip{color:var(--slate-2);cursor:grab;display:inline-flex;opacity:.7} .cv-grip:active{cursor:grabbing} .cv-span,.cv-x{border:0;background:transparent;color:var(--slate-2);width:24px;height:24px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:.15s} .cv-span:hover{background:var(--accent-soft);color:var(--accent-d)} .cv-x:hover{background:var(--tint-down);color:var(--red-d)} .cv-span:focus-visible,.cv-x:focus-visible{outline:none;box-shadow:var(--ring)} .cv-body{padding:10px 12px;display:flex;flex-direction:column;gap:6px;flex:1} /* canvas empty state + templates */ .cv-empty{text-align:center;display:flex;flex-direction:column;align-items:center;gap:9px;padding:26px 18px} .cv-empty b{font-size:15px} .cv-empty>p{font-size:12px;color:var(--slate);max-width:420px;line-height:1.5;margin:0} .cv-tpls{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;width:100%;max-width:620px;margin:6px 0} .cv-tpl{text-align:left;border:1px solid var(--line);background:var(--surface-2);border-radius:12px;padding:12px 14px;cursor:pointer;transition:.16s;display:flex;flex-direction:column;gap:3px} .cv-tpl:hover{border-color:var(--accent-line);background:var(--accent-soft)} .cv-tpl:focus-visible{outline:none;box-shadow:var(--ring)} .cv-tpl b{font-size:13px} .cv-tpl span{font-size:11px;color:var(--slate);line-height:1.4} .cv-tpl i{font-style:normal;font-size:10px;font-weight:700;color:var(--accent-d);display:inline-flex;align-items:center;gap:4px;margin-top:3px} /* canvas mini option-chain widget */ .cvch{display:flex;flex-direction:column;gap:2px} .cvch-row{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;padding:3px 6px;border-radius:6px;font-size:12px} .cvch-row b{text-align:center;min-width:54px} .cvch-row span:first-child{text-align:right} .cvch-row span:last-child{text-align:left} .cvch-row.atm{background:var(--accent-soft)} .cvch-row.atm b{color:var(--accent-d)} .cvch-h{font-size:8.5px;color:var(--slate-2);text-transform:uppercase;letter-spacing:.2px} .cvch-h b,.cvch-h span{color:var(--slate-2)!important} /* canvas widget picker (modal) */ .cv-pick-note{font-size:11.5px;color:var(--slate);margin:0 0 11px;line-height:1.45} .cv-pick{display:flex;flex-direction:column;gap:7px} .cv-pick-item{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:10px 12px;cursor:pointer; border:1px solid var(--line);border-radius:10px;background:var(--surface-2);transition:.15s;font-family:var(--sans)} .cv-pick-item:hover{border-color:var(--accent-line);background:var(--surface)} .cv-pick-item.on{border-color:var(--accent-line);background:var(--accent-soft)} .cv-pick-ic{display:inline-flex;width:32px;height:32px;align-items:center;justify-content:center;border-radius:9px;background:var(--surface);border:1px solid var(--line);color:var(--accent-d);flex:0 0 auto} .cv-pick-item.on .cv-pick-ic{background:var(--accent);border-color:var(--accent);color:#fff} .cv-pick-tb{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px} .cv-pick-tb b{font-size:12.5px} .cv-pick-tb span{font-size:10.5px;color:var(--slate)} .cv-pick-add{display:inline-flex;width:25px;height:25px;align-items:center;justify-content:center;border-radius:7px;background:var(--surface);border:1px solid var(--line-2);color:var(--slate);flex:0 0 auto} .cv-pick-item.on .cv-pick-add{background:var(--accent);border-color:var(--accent);color:#fff} .cv-pick-item:focus-visible{outline:none;box-shadow:var(--ring)} @media(max-width:1100px){ .cv-grid{grid-template-columns:repeat(2,minmax(0,1fr))} .cv-card.span-3{grid-column:span 2} } @media(max-width:640px){ .cv-grid{grid-template-columns:1fr} .cv-card.span-2,.cv-card.span-3{grid-column:span 1} .cv-resize{display:none} } /* ---- Layout-builder P3: tabbed workspaces · drag-resize grid · sync groups (?v=14) ---- */ .cv-tabs{display:flex;align-items:flex-end;gap:4px;padding:7px 14px 0;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:2px} .cv-tabwrap{display:flex;align-items:center;border:1px solid var(--line);border-bottom:none;border-radius:9px 9px 0 0;background:var(--surface-2);overflow:hidden} .cv-tabwrap.on{background:var(--surface);border-color:var(--accent-line);box-shadow:0 -2px 0 var(--accent) inset} .cv-tab{border:0;background:transparent;font-family:var(--sans);font-weight:700;font-size:11.5px;color:var(--slate);padding:7px 11px;cursor:pointer;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .cv-tabwrap.on .cv-tab,.cv-tab:hover{color:var(--accent-d)} .cv-tabbtn{border:0;background:transparent;color:var(--slate-2);width:20px;height:28px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s} .cv-tabbtn:hover{color:var(--accent-d)} .cv-tab-add{border:1px dashed var(--line-2);background:transparent;color:var(--slate);width:28px;height:30px;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:.15s} .cv-tab-add:hover{border-color:var(--accent-line);color:var(--accent-d);background:var(--accent-soft)} .cv-tab:focus-visible,.cv-tabbtn:focus-visible,.cv-tab-add:focus-visible{outline:none;box-shadow:var(--ring)} /* drag-resize handle on the card's right edge */ .cv-resize{position:absolute;top:0;right:0;width:9px;height:100%;cursor:ew-resize;z-index:3;touch-action:none} .cv-resize::after{content:"";position:absolute;top:50%;right:3px;transform:translateY(-50%);width:3px;height:32px;border-radius:2px;background:var(--line-2);opacity:0;transition:.15s} .cv-card:hover .cv-resize::after{opacity:.75} .cv-resize:hover::after{background:var(--accent);opacity:1} .cv-card.cv-resizing{outline:2px solid var(--accent-line);box-shadow:var(--shadow-hover);z-index:4} .cv-card.cv-resizing .cv-resize::after{background:var(--accent);opacity:1} /* sync groups */ .cv-grps{display:inline-flex;gap:3px;flex:0 0 auto} .cv-grp{width:19px;height:19px;border-radius:6px;border:1px solid var(--line-2);background:var(--surface-2);color:var(--slate-2);font-family:var(--mono,var(--sans));font-weight:800;font-size:9.5px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:.15s;padding:0} .cv-grp:hover{border-color:var(--slate-2)} .cv-grp.cv-grp-a.on{background:var(--blue);border-color:var(--blue);color:#fff} .cv-grp.cv-grp-b.on{background:var(--amber);border-color:var(--amber);color:#08121f} .cv-grp:focus-visible{outline:none;box-shadow:var(--ring)} .cv-card.grp-a{box-shadow:var(--shadow),inset 3px 0 0 var(--blue)} .cv-card.grp-b{box-shadow:var(--shadow),inset 3px 0 0 var(--amber)} .cv-sym{font-family:var(--sans);font-weight:700;font-size:10.5px;color:var(--accent-d);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:6px;padding:2px 4px;cursor:pointer;max-width:96px;flex:0 0 auto} .cv-sym:focus-visible{outline:none;box-shadow:var(--ring)} /* ============================================================ ALGO + AI MODES: distinct accents + full-width takeovers ============================================================ */ /* Algo & AI: accent now follows the REGIME (green/blue/red) like Trading, no fixed persona accent pin. Only the page-bg keeps a whisper of persona texture; the regime colour reads through the whole skin. */ html[data-persona="algo"]{ --bg:#eef0f7; } html[data-persona="algo"][data-surface="night"]{ --bg:#0a0c1c; } html[data-persona="ai"]{ --bg:#eef4f3; } html[data-persona="ai"][data-surface="night"]{ --bg:#06120f; } /* BUG FIX (2026-09-19): the old 3-pane layout (chart/watchlist/order-pad + legacy panel tabs) was only ever hidden for the algo/ai personas - trader/investor still had it fully live underneath. All four modes now use the same single-container-per-mode pattern (#algoView/#aiView/ #tradingView/#investHub), so this is universal, not persona-conditional. */ #algoView,#aiView,#tradingView,#investHub{display:none} html[data-persona="algo"] #algoView{display:flex;flex-direction:column;flex:1;min-height:0} html[data-persona="ai"] #aiView{display:flex;flex-direction:column;flex:1;min-height:0} html[data-persona="trader"] #tradingView{display:flex;flex-direction:column;flex:1;min-height:0} html[data-persona="investor"] #investHub{display:flex;flex-direction:column;flex:1;min-height:0} /* BUG FIX (2026-09-19): a bare `.terminal` selector here loses to the older, more specific regime-scoped 3-pane width rules still further up the file (e.g. html[data-regime="bear"] .terminal{grid-template-columns:332px 1fr 300px}, plus narrow-viewport media-query variants) - CSS specificity, not source order, decides the winner, and those rules were never removed when the 3-pane layout retired. That left the single-column containers above squeezed into one of the old pane's widths, with nothing drawn over most of the screen but the ambient background. !important makes the intent explicit: no persona/regime keeps a multi-column terminal anymore. */ .terminal{grid-template-columns:1fr!important} .pane-left,.pane-right{display:none} #chartCard,#chartResize,.panel,#deskBar,#deskView{display:none!important} /* shared takeover shell */ /* .algo-view must be a flex column that FILLS the pane height, else .av-wrap's flex:1 has no basis and .av-scroll expands to full content height, killing its internal scroll (the tabs scroll away instead of staying fixed). This completes the fixed-header + scrolling-body chain the Crypto Spot/Perps/Options view (and every Algo tab) relies on. */ .algo-view,.invest-hub{display:flex;flex-direction:column;height:100%;min-height:0} .av-wrap,.ai-wrap{flex:1;min-height:0;display:flex;flex-direction:column} .av-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:16px 20px;background:rgba(255,255,255,0.7);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,0.9);border-radius:18px 18px 0 0;border-bottom:1px solid rgba(0,0,0,0.04);box-shadow:0 8px 32px rgba(0,0,0,0.03)} .av-title{display:flex;align-items:center;gap:11px} .av-ic{display:inline-flex;width:34px;height:34px;align-items:center;justify-content:center;border-radius:10px;background:var(--accent-soft);color:var(--accent-d);flex:0 0 auto} .av-title b{font-size:15px;display:block} .av-title span{font-size:11.5px;color:var(--slate)} .av-tabs{display:flex;gap:4px;background:rgba(244,246,250,0.6);border:1px solid rgba(255,255,255,0.5);border-radius:12px;padding:4px} .av-tab{border:0;background:transparent;color:var(--slate);font-family:var(--sans);font-weight:700;font-size:12.5px;padding:8px 16px;border-radius:8px;cursor:pointer;transition:.15s} .av-tab:hover{color:var(--navy)} .av-tab.on{background:var(--surface);color:var(--accent-d);box-shadow:0 4px 12px rgba(0,0,0,0.05);border-radius:10px} .av-tab:focus-visible{outline:none;box-shadow:var(--ring)} .av-tn{font-style:normal;font-size:9.5px;background:var(--accent);color:#fff;border-radius:99px;padding:0 5px;margin-left:3px} .av-scroll{flex:1;min-height:0;overflow-y:auto;background:rgba(255,255,255,0.4);border:1px solid rgba(255,255,255,0.9);border-top:0;border-radius:0 0 18px 18px;padding:16px 20px;display:flex;flex-direction:column;gap:16px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)} /* ===== Algo Studio market toggle (Indian ⇄ Crypto) ===== */ .mkt-toggle{display:flex;gap:3px;background:var(--surface-2);border:1px solid var(--line-2);border-radius:10px;padding:3px} .mkt-tab{border:0;background:transparent;color:var(--slate);font-family:var(--sans);font-weight:700;font-size:12.5px;padding:8px 14px;border-radius:8px;cursor:pointer;transition:.15s;display:inline-flex;align-items:center;gap:6px} .mkt-tab:hover{color:var(--navy)} .mkt-tab.on{background:var(--surface);color:var(--navy);box-shadow:var(--shadow)} .mkt-tab:focus-visible{outline:none;box-shadow:var(--ring)} .mkt-fl{font-size:13px;line-height:1} /* header-mounted market toggle (left of the search bar), compact variant */ .hdr-mkt{display:flex;align-items:center;flex:0 0 auto} .hdr-mkt:empty{display:none} .mkt-toggle.hdr{padding:2px;border-radius:9px} .mkt-toggle.hdr .mkt-tab{padding:6px 11px;font-size:12px;gap:5px} .mkt-toggle.hdr .mkt-fl{font-size:12px} /* CRYPTO tape: the right-hand Indian regime cluster is swapped for an honest Binance source label */ .tb-crypto-src{display:none;align-items:center;font-size:11px;font-weight:700;color:var(--green-d);white-space:nowrap} .ticker-bar.crypto .tb-crypto-src{display:inline-flex} .ticker-bar.crypto #mktStatus,.ticker-bar.crypto .tb-mdiv,.ticker-bar.crypto #hdrEngine,.ticker-bar.crypto .tb-gear{display:none} /* ===== crypto layer ===== */ .cx-preview-note{display:flex;gap:10px;align-items:flex-start;background:rgba(253,244,230,0.6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(243,217,176,0.8);color:#7c4f12;border-radius:14px;padding:12px 14px;font-size:11.5px;line-height:1.5;box-shadow:0 8px 32px rgba(0,0,0,0.03)} .cx-preview-note b{color:#5e3c0d} .cx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px} .cx-card{display:flex;flex-direction:column;gap:9px;border:1px solid rgba(255,255,255,0.9);border-radius:16px;background:rgba(255,255,255,0.6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:16px;box-shadow:0 8px 32px rgba(0,0,0,0.04);transition:transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.25s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.25s} .cx-card:hover{transform:translateY(-3px);box-shadow:0 12px 40px rgba(0,0,0,0.08);border-color:var(--accent-line)} .cx-card-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px} .cx-card-h b{font-size:13.5px;color:var(--navy);font-weight:800} .cx-cat{display:block;font-size:10px;color:var(--slate-2);margin-top:2px;font-weight:600} .cx-what{font-size:11.5px;color:var(--slate);line-height:1.45;margin:0} .cx-line{display:flex;gap:7px;align-items:flex-start;font-size:11px;line-height:1.45;color:var(--slate)} .cx-line b{color:var(--navy);font-weight:700} .cx-line svg{flex:0 0 auto;margin-top:1px} .cx-rule svg{color:var(--accent)} .cx-works svg{color:var(--green)} .cx-fails svg{color:var(--red)} .cx-guard svg{color:var(--blue)} .cx-card-f{display:flex;justify-content:space-between;align-items:center;margin-top:3px;padding-top:9px;border-top:1px solid var(--line)} .cx-tag{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2);background:var(--surface-2);border:1px solid var(--line);padding:3px 8px;border-radius:6px} /* crypto movers (Opportunity) + leaderboard */ .cx-movers{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px} .cx-mv-col{border:1px solid rgba(255,255,255,0.9);border-radius:14px;background:rgba(255,255,255,0.6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);overflow:hidden;box-shadow:0 8px 32px rgba(0,0,0,0.04)} .cx-mv-h{display:flex;align-items:center;gap:7px;font-size:11.5px;font-weight:700;color:var(--navy);padding:10px 12px;background:var(--surface-2);border-bottom:1px solid var(--line)} .cx-mv-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line)} .cx-mv-row:last-child{border-bottom:0} .cx-mv-tk b{font-size:12.5px;font-weight:800;color:var(--navy)} .cx-mv-tk span{display:block;font-size:9.5px;color:var(--slate-2)} .cx-mv-px{font-size:12px;font-weight:700;color:var(--navy)} .cx-mv-chg{font-size:11.5px;font-weight:700;min-width:62px;text-align:right} .cx-mv-empty{padding:12px;color:var(--slate-2);font-size:11.5px;text-align:center} .cx-lb{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px} .cx-lb-grp{border:1px solid rgba(255,255,255,0.9);border-radius:14px;background:rgba(255,255,255,0.6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);overflow:hidden;box-shadow:0 8px 32px rgba(0,0,0,0.04)} .cx-lb-h{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:var(--navy);padding:9px 12px;background:var(--surface-2);border-bottom:1px solid var(--line)} .cx-lb-h i{font-style:normal;font-size:9.5px;background:var(--accent);color:#fff;border-radius:99px;padding:0 6px;margin-left:auto} .cx-lb-row{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--line)} .cx-lb-row:last-child{border-bottom:0} .cx-lb-row b{font-size:12px;color:var(--navy);font-weight:700;flex:1} .cx-lb-row .cx-cat{font-size:10px;color:var(--slate-2)} /* live crypto paper book (Monitor) */ .cxm-tbl-h{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700;color:var(--navy);margin:14px 2px 8px} .cxm-tbl-h span{margin-left:auto;font-size:10.5px;font-weight:600;color:var(--slate-2)} .cxm-tbl{border:1px solid rgba(255,255,255,0.9);border-radius:14px;background:rgba(255,255,255,0.6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);overflow:hidden;flex-shrink:0;box-shadow:0 8px 32px rgba(0,0,0,0.04)} .cxm-row{display:grid;grid-template-columns:1fr 52px 92px 92px 100px;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line)} .cxm-row:last-child{border-bottom:0} .cxm-head{background:var(--surface-2);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2)} .cxm-head .cxm-n,.cxm-head .cxm-name{text-align:right} .cxm-head .cxm-name{text-align:left} .cxm-name b{font-size:12.5px;font-weight:700;color:var(--navy)} .cxm-n{font-size:12px;font-weight:700;text-align:right;color:var(--navy)} .cxm-pos{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px} .cxm-chip{font-size:9.5px;font-weight:700;color:var(--slate);background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:2px 6px} /* Investing: Goals tab progress bar */ .goal-row{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:12px 14px;display:flex;flex-direction:column;gap:8px;margin-bottom:10px} .goal-row-h{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;font-weight:700;color:var(--navy)} .goal-bar{height:8px;border-radius:999px;background:var(--surface-2);overflow:hidden} .goal-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .3s ease} .cxm-chip i{font-style:normal;font-weight:700;margin-left:3px} .cxm-chip.up{color:var(--green);border-color:#bfe6c8} .cxm-chip.down{color:var(--red);border-color:#f2c9c9} /* crypto Risk Governor bars */ .cxr-bars{display:flex;flex-direction:column;gap:7px;border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:11px 13px} .cxr-row{display:grid;grid-template-columns:120px 1fr 54px;align-items:center;gap:10px} .cxr-l{font-size:11.5px;font-weight:600;color:var(--navy)} .cxr-track{height:8px;background:var(--surface-2);border-radius:99px;overflow:hidden} .cxr-fill{display:block;height:100%;background:var(--blue);border-radius:99px} .cxr-fill.over{background:var(--red)} .cxr-v{font-size:11.5px;font-weight:700;text-align:right;color:var(--navy)} .cxr-empty{font-size:11.5px;color:var(--slate-2);padding:2px} /* crypto backtest */ .cxbt-pick{display:flex;flex-direction:column;gap:8px;margin:2px 0 4px} .cxbt-pick-r{display:flex;flex-wrap:wrap;gap:6px} .cxbt-chip{font-size:11.5px;font-weight:700;color:var(--slate);background:rgba(255,255,255,0.5);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,0.8);border-radius:10px;padding:6px 14px;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px rgba(0,0,0,0.02)} .cxbt-chip:hover{border-color:var(--navy);background:rgba(255,255,255,0.8);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,0.04)} .cxbt-chip.on{background:var(--accent);color:#fff;border-color:transparent;box-shadow:0 4px 16px color-mix(in srgb,var(--accent) 30%,transparent)} .cxbt-chart{border:1px solid rgba(255,255,255,0.9);border-radius:16px;background:rgba(255,255,255,0.6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:14px;box-shadow:0 8px 32px rgba(0,0,0,0.04)} .cxbt-svg{width:100%;height:150px;display:block} .cxbt-eq{fill:none;stroke:var(--blue);stroke-width:2;vector-effect:non-scaling-stroke} .cxbt-bh{fill:none;stroke:var(--slate-2);stroke-width:1.3;stroke-dasharray:4 3;vector-effect:non-scaling-stroke;opacity:.7} .cxbt-base{stroke:var(--line);stroke-width:1;stroke-dasharray:2 3;vector-effect:non-scaling-stroke} .cxbt-legend{display:flex;gap:12px;margin:8px 2px 4px;font-size:11px;font-weight:600} .cxbt-lg{color:var(--slate)} .cxbt-lg.eq{color:var(--blue)} .cxbt-lg.bh{color:var(--slate-2)} /* crypto analytics: realised equity curve (cumulative net, tone-coloured) */ .cxeq-svg{width:100%;height:140px;display:block} .cxeq-line{fill:none;stroke-width:2;vector-effect:non-scaling-stroke} .cxeq-line.up{stroke:var(--green)} .cxeq-line.down{stroke:var(--red)} .cxeq-area{stroke:none;opacity:.12} .cxeq-area.up{fill:var(--green)} .cxeq-area.down{fill:var(--red)} /* crypto analytics: by-hour mini bars */ .cxhr-bars{display:flex;align-items:flex-end;gap:5px;padding:12px 13px;border:1px solid var(--line);border-radius:12px;background:var(--surface);overflow-x:auto} .cxhr-col{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:22px;flex:1} .cxhr-track{width:100%;height:64px;display:flex;align-items:flex-end;justify-content:center;background:var(--bg);border-radius:5px;overflow:hidden} .cxhr-fill{width:70%;border-radius:4px 4px 0 0;min-height:4px} .cxhr-fill.up{background:var(--green)} .cxhr-fill.down{background:var(--red)} .cxhr-lbl{font-size:10px;color:var(--slate);font-variant-numeric:tabular-nums} /* crypto analytics: exit-reason chip + CSV export button */ .cxrsn{display:inline-block;padding:1px 7px;border-radius:20px;font-size:10.5px;font-weight:600;background:var(--bg);border:1px solid var(--line);color:var(--slate)} .cxrsn-target,.cxrsn-signal{color:var(--green);border-color:color-mix(in srgb,var(--green) 35%,var(--line))} .cxrsn-stop,.cxrsn-thesisdecay,.cxrsn-rebalance,.cxrsn-trendflip,.cxrsn-scorecollapse{color:var(--red);border-color:color-mix(in srgb,var(--red) 35%,var(--line))} .cxan-csv{margin-left:auto;display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--slate);font-size:11px;font-weight:600;cursor:pointer} .cxan-csv:hover{border-color:var(--blue);color:var(--blue)} /* crypto forward test / accuracy table (6 cols) */ .cxf-row{grid-template-columns:1.4fr 58px 58px 52px 92px 92px} .cxf-cls{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2);background:var(--surface-2);border:1px solid var(--line);border-radius:5px;padding:1px 5px;margin-left:4px} /* per-strategy regime + activity badges (Monitor rows) */ .cxb{display:inline-flex;align-items:center;gap:4px;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;border-radius:5px;padding:1px 6px;margin-left:5px;vertical-align:middle} .cxb.reg-fit{color:var(--green);background:color-mix(in srgb,var(--green) 12%,transparent);border:1px solid color-mix(in srgb,var(--green) 30%,var(--line))} .cxb.reg-unfit{color:var(--slate);background:var(--surface-2);border:1px solid var(--line)} .cxb.reg-gath{color:var(--slate-2);background:var(--surface-2);border:1px dashed var(--line)} .cxb.reg-live{color:var(--green);background:color-mix(in srgb,var(--green) 14%,transparent);border:1px solid color-mix(in srgb,var(--green) 34%,var(--line))} .cxb.reg-paused{color:var(--amber,#b5730a);background:color-mix(in srgb,var(--amber,#d9903a) 13%,transparent);border:1px solid color-mix(in srgb,var(--amber,#d9903a) 32%,var(--line))} .cxb.reg-paused .ico{width:10px;height:10px} .cxe-paused{background:color-mix(in srgb,var(--amber,#d9903a) 9%,var(--surface-2));color:var(--slate)} .cxb-dot{width:6px;height:6px;border-radius:50%;background:var(--green);animation:cxbpulse 1.6s ease-in-out infinite} @keyframes cxbpulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.72)}} @media (prefers-reduced-motion:reduce){.cxb-dot{animation:none}} /* the honest "Live Engine" panel */ .cxe-panel{border:1px solid var(--line);border-radius:14px;padding:14px 15px;margin:4px 0 2px;background:var(--surface);position:relative;overflow:hidden} .cxe-panel::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px} .cxe-panel.ok::before{background:var(--green)} .cxe-panel.warn::before{background:var(--amber,#d9903a)} .cxe-head{display:flex;align-items:flex-start;gap:11px} .cxe-ic{flex:none;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:var(--surface-2);color:var(--accent)} .cxe-hx{flex:1;min-width:0} .cxe-hx b{font-size:14px} .cxe-hx span{display:block;font-size:11.5px;color:var(--slate);line-height:1.5;margin-top:2px} .cxe-tag{flex:none;display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;border-radius:8px;padding:4px 9px;white-space:nowrap} .cxe-tag.ok{color:var(--green);background:color-mix(in srgb,var(--green) 12%,transparent)} .cxe-tag.warn{color:var(--amber,#b5730a);background:color-mix(in srgb,var(--amber,#d9903a) 14%,transparent)} .cxe-edge{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:13px 0 2px} .cxe-metric{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:9px 11px} .cxe-metric span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--slate-2);font-weight:700} .cxe-metric b{display:block;font-size:20px;font-weight:750;letter-spacing:-.01em;margin-top:2px} .cxe-metric i{font-size:10.5px;color:var(--slate-2);font-style:normal} .cxe-run{margin-top:12px} .cxe-run-l{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--slate-2);font-weight:700} .cxe-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px} .cxe-chip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;border:1px solid var(--line);border-radius:20px;padding:3px 10px;background:var(--bg)} .cxe-chip.on{border-color:color-mix(in srgb,var(--green) 40%,var(--line));background:color-mix(in srgb,var(--green) 8%,transparent)} .cxe-chip.muted{color:var(--slate-2);font-weight:500} .cxe-chip i{font-style:normal;font-weight:700;font-variant-numeric:tabular-nums} .cxe-stood{display:flex;gap:8px;align-items:flex-start;margin-top:12px;padding:10px 12px;border-radius:10px;background:var(--surface-2);font-size:11.5px;line-height:1.5;color:var(--slate)} .cxe-foot{display:flex;gap:7px;align-items:flex-start;margin:11px 0 0;font-size:11px;color:var(--slate-2);line-height:1.5} @media (max-width:640px){.cxe-edge{grid-template-columns:repeat(2,1fr)}.cxe-head{flex-wrap:wrap}.cxe-tag{order:3}} /* per-strategy capital allocation dial (expanded Monitor row) */ .mon-alloc{margin:10px 0 2px;padding:11px 13px;border:1px solid var(--line);border-radius:11px;background:var(--bg)} .ma-h{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;font-weight:700;color:var(--slate)} .ma-h span{display:inline-flex;align-items:center;gap:5px} .ma-val{font-size:15px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums} .ma-slider{width:100%;margin:9px 0 3px;-webkit-appearance:none;appearance:none;height:6px;border-radius:6px; background:linear-gradient(90deg,var(--accent) 0%,var(--accent) 50%,var(--surface-2) 50%);cursor:pointer} .ma-slider::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent);border:2px solid var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.25);cursor:pointer} .ma-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--accent);border:2px solid var(--surface);cursor:pointer} .ma-slider:focus-visible{outline:none;box-shadow:var(--ring)} .ma-scale{display:flex;justify-content:space-between;font-size:10px;color:var(--slate-2);font-weight:600} .ma-note{margin:7px 0 0;font-size:10.5px;color:var(--slate-2);line-height:1.5} /* "on deck": why an inactive strategy is kept (its regime bench) */ .mon-ondeck{display:flex;gap:7px;align-items:flex-start;margin:2px 0 4px;padding:9px 11px;border-radius:10px; background:color-mix(in srgb,var(--accent) 6%,var(--bg));border:1px solid color-mix(in srgb,var(--accent) 18%,var(--line)); font-size:11.5px;line-height:1.5;color:var(--slate)} .mon-ondeck b{color:var(--ink)} /* go-live readiness gate */ .rdy-banner{display:flex;align-items:center;gap:12px;border-radius:12px;padding:12px 15px;margin:2px 0 4px} .rdy-banner.no{background:color-mix(in srgb,var(--red) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--red) 30%,var(--line))} .rdy-banner.ok{background:var(--accent-soft);border:1px solid var(--accent-line)} .rdy-banner svg{flex:0 0 auto;color:var(--navy)} .rdy-banner b{font-size:14px;color:var(--navy);display:block} .rdy-banner span{font-size:11.5px;color:var(--slate)} .rdy-bar{margin-left:auto;font-size:10.5px;font-weight:600;color:var(--slate-2);text-align:right;max-width:320px;line-height:1.4} .rdy-row{grid-template-columns:1.7fr 58px 58px 52px 96px} .rdy-badge{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;border-radius:5px;padding:1px 6px;margin-left:5px;vertical-align:middle} .rdy-badge.ready{color:#fff;background:var(--green)} .rdy-badge.gathering{color:var(--amber,#b06a2e);background:color-mix(in srgb,var(--amber,#f5b148) 18%,var(--surface));border:1px solid color-mix(in srgb,var(--amber,#f5b148) 40%,var(--line))} .rdy-badge.cull{color:#fff;background:var(--red)} /* strategy × regime fit matrix */ .rf-grid{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:12px;background:var(--surface);overflow:hidden} .rf-row{display:grid;align-items:center;gap:8px;padding:7px 12px;border-bottom:1px solid var(--line)} .rf-row:last-child{border-bottom:0} .rf-head{background:var(--surface-2);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2)} .rf-name{font-size:12px;color:var(--navy)} .rf-name b{font-weight:700} .rf-col{text-align:center} .rf-col.cur{color:var(--accent-d);font-weight:800} /* BUG FIX (2026-09-20): distinct from .cur (the real, backend-computed live regime) - marks the header's manually-toggled regime as a separate "viewing" lens, never overwrites .cur itself. */ .rf-col.sel{text-decoration:underline;text-decoration-style:dashed;text-underline-offset:3px} .rf-cell{display:inline-flex;align-items:center;justify-content:center;gap:4px;font-size:9.5px;font-weight:800;border-radius:6px;padding:3px 0} .rf-cell i{font-style:normal;font-weight:700;opacity:.7} .rf-fit{color:#fff;background:var(--green)} .rf-unfit{color:#fff;background:var(--red)} .rf-gathering{color:var(--slate-2);background:var(--surface-2);border:1px solid var(--line)} .rf-none{color:var(--slate-2);text-align:center;font-weight:400} /* algo marketplace grid */ .algo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px} .algo-build{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:170px;cursor:pointer; border:1.5px dashed var(--line-2);border-radius:14px;background:transparent;color:var(--slate);font-family:var(--sans);transition:.16s;text-align:center;padding:14px} .algo-build:hover{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent-d)} .algo-build b{font-size:13.5px} .algo-build span{font-size:11px;color:var(--slate)} .algo-build .ico{color:var(--accent-d)} .algo-build:focus-visible{outline:none;box-shadow:var(--ring)} /* backtest */ .bt-controls{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap} .bt-periods{display:flex;gap:3px;background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:3px} .bt-period{border:0;background:transparent;color:var(--slate);font-family:var(--mono);font-weight:600;font-size:12px;padding:6px 13px;border-radius:7px;cursor:pointer;transition:.15s} .bt-period:hover{color:var(--navy)} .bt-period.on{background:var(--surface);color:var(--accent-d);box-shadow:var(--shadow)} .bt-period:focus-visible{outline:none;box-shadow:var(--ring)} .bt-card{background:var(--surface-2);border:1px solid var(--line);border-radius:14px;padding:13px;overflow:hidden;min-height:206px} .bt-cardh{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px} /* title truncates (never clips/wraps), subtitle stays on one line, header height can't blow up */ .bt-cardh b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0} .bt-cardh span{font-size:10.5px;color:var(--slate);white-space:nowrap;flex:0 0 auto} .eq-svg{width:100%;height:160px;display:block} .eq-area{fill:var(--accent-soft);opacity:.6} .eq-line{fill:none;stroke:var(--accent);stroke-width:2.2} .eq-svg.down .eq-line{stroke:var(--red)} .eq-svg.down .eq-area{fill:var(--tint-down)} .eq-base{stroke:var(--line-2);stroke-width:1;stroke-dasharray:3 3} /* out-of-sample shading + split line on the backtest curve (walk-forward viz) */ .eq-oos{fill:color-mix(in srgb,var(--slate) 9%,transparent)} .eq-split{stroke:var(--slate);stroke-width:1;stroke-dasharray:4 3;opacity:.55} .eq-oostx{fill:var(--slate);font-size:8px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;opacity:.7} /* trade analytics panel */ .bt-an{background:rgba(244,246,250,0.6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,0.9);border-radius:16px;padding:16px;box-shadow:0 8px 32px rgba(0,0,0,0.04)} .bt-anh{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--slate);display:flex;align-items:center;gap:6px;margin-bottom:12px} .bt-anh i{font-style:normal;color:var(--slate-2);font-weight:700;font-size:10px} .bt-angrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px} .bt-anc{display:flex;flex-direction:column;gap:4px;background:rgba(255,255,255,0.7);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,0.8);border-radius:12px;padding:10px 12px;box-shadow:0 2px 8px rgba(0,0,0,0.02)} .bt-anc>span{font-size:9px;color:var(--slate);text-transform:uppercase;letter-spacing:.2px} .bt-anc>b{font-size:14px} /* quantitative anchors under the curve, so the backtest reads as numbers, not just a shape */ .eq-cap{display:flex;justify-content:space-between;gap:10px;margin-top:9px;padding-top:9px;border-top:1px solid var(--line);flex-wrap:wrap} .eq-cap span{font-size:10px;color:var(--slate);text-transform:uppercase;letter-spacing:.2px;display:flex;align-items:baseline;gap:5px} .eq-cap b{font-size:13px} .eq-cap i{font-size:11px;font-style:normal} /* validation report: the honest in-sample vs out-of-sample cut (the moat) */ .bt-vr{background:rgba(244,246,250,0.6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,0.9);border-radius:16px;padding:16px;margin-top:2px;box-shadow:0 8px 32px rgba(0,0,0,0.04)} .bt-vrh{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--slate);display:flex;align-items:center;gap:6px;margin-bottom:12px} .bt-vrgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px} .bt-vrcol{display:flex;flex-direction:column;gap:4px;background:rgba(255,255,255,0.7);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,0.8);border-radius:12px;padding:12px 14px;box-shadow:0 2px 8px rgba(0,0,0,0.02)} .bt-vrcol>span{font-size:9.5px;color:var(--slate);text-transform:uppercase;letter-spacing:.2px} .bt-vrcol>b{font-size:18px;letter-spacing:-.3px} .bt-vrcol>i{font-size:10px;color:var(--slate);font-style:normal} .bt-vrverdict{display:flex;align-items:flex-start;gap:7px;margin:11px 0 0;font-size:11px;line-height:1.5;color:var(--ink)} .bt-vrverdict.ok{color:var(--ink)} .bt-vrverdict.warn{color:var(--ink)} .bt-vrverdict.ok svg{color:var(--green);flex:0 0 auto;margin-top:1px} .bt-vrverdict.warn svg{color:var(--amber);flex:0 0 auto;margin-top:1px} /* ===== Strategy Leaderboard ===== */ .lb-ctrl{display:flex;align-items:center;gap:10px;flex-wrap:wrap} .lb-lab{font-size:11px;font-weight:700;color:var(--slate);text-transform:uppercase;letter-spacing:.3px} .lb-sorts{display:inline-flex;gap:3px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:3px} .lb-sort{font:inherit;font-size:12px;font-weight:700;cursor:pointer;border:0;background:transparent;color:var(--slate);padding:6px 13px;border-radius:8px} .lb-sort.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)} .lb-list{display:flex;flex-direction:column;gap:10px;margin-top:16px} .lb-row{display:flex;align-items:center;gap:13px;padding:12px 16px;background:rgba(255,255,255,0.6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,0.9);border-radius:14px;box-shadow:0 4px 16px rgba(0,0,0,0.03)} .lb-row.active{border-color:color-mix(in srgb,var(--green) 50%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--green) 22%,transparent)} .lb-rank{flex:0 0 auto;width:26px;height:26px;border-radius:8px;background:var(--surface-2);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:var(--slate)} .lb-row:nth-child(1) .lb-rank{background:color-mix(in srgb,var(--amber) 22%,transparent);color:var(--amber)} .lb-name{flex:1 1 180px;min-width:140px;display:flex;flex-direction:column;gap:1px} .lb-name b{font-size:13.5px;display:flex;align-items:center;gap:7px} .lb-name span{font-size:10.5px;color:var(--slate)} .lb-active{font-size:8.5px;font-weight:800;letter-spacing:.3px;color:var(--green);background:color-mix(in srgb,var(--green) 15%,transparent);border-radius:5px;padding:1px 5px} .lb-stat{display:flex;flex-direction:column;gap:1px;min-width:52px;text-align:right} .lb-stat>span{font-size:8.5px;color:var(--slate);text-transform:uppercase;letter-spacing:.2px} .lb-stat>b{font-size:13px} .lb-stat.hi{background:var(--accent-soft);border-radius:8px;padding:4px 8px;margin:-4px 0} .lb-bt{flex:0 0 auto} @media(max-width:920px){ .lb-stat:nth-child(n+5){display:none} .lb-bt{display:none} } .lb-matrix{margin-top:18px;background:var(--surface-2);border:1px solid var(--line);border-radius:14px;padding:14px 16px} .lb-mh{font-size:12px;font-weight:800;display:flex;align-items:center;gap:5px;margin-bottom:11px} .lb-mscroll{overflow-x:auto} .lb-mtbl{width:100%;border-collapse:collapse;font-size:12px} .lb-mtbl th{font-size:10px;color:var(--slate);text-transform:uppercase;letter-spacing:.3px;padding:5px 8px;text-align:center;font-weight:700} .lb-mtbl th.live,.lb-mcell.live{outline:1.5px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:-1.5px;border-radius:6px} .lb-mname{text-align:left;font-weight:700;white-space:nowrap;padding:5px 10px 5px 4px} .lb-mcell{text-align:center;padding:6px 8px;font-weight:700;font-variant-numeric:tabular-nums} .lb-mcell.rg-good{background:color-mix(in srgb,var(--green) 18%,transparent);color:var(--green)} .lb-mcell.rg-weak{background:color-mix(in srgb,var(--amber) 16%,transparent);color:var(--amber)} .lb-mcell.rg-bad{background:color-mix(in srgb,var(--red) 14%,transparent);color:var(--red)} .lb-mnote{display:flex;align-items:flex-start;gap:7px;margin:11px 0 0;font-size:11px;color:var(--slate);line-height:1.5} .lb-mnote svg{flex:0 0 auto;margin-top:1px;color:var(--accent)} .bt-logwrap{display:flex;flex-direction:column;gap:8px} .bt-logttl{font-size:12px;font-weight:700} .bt-log .side-chip{text-transform:uppercase;font-size:9px} .bt-cta{display:flex;justify-content:center;padding-top:4px} /* monitor */ .mon-list{display:flex;flex-direction:column;gap:9px} .mon-row{display:grid;grid-template-columns:1fr auto auto;gap:14px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;box-shadow:var(--shadow)} .mon-row.paused{opacity:.72} .mon-l{display:flex;align-items:center;gap:11px} .mon-l b{font-size:13.5px} .mon-cat{display:block;font-size:10.5px;color:var(--slate)} .live-dot{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px var(--accent-soft);flex:0 0 auto} .live-dot.paused{background:var(--amber)} .live-dot.live{animation:pulse 1.8s infinite} @keyframes pulse{0%,100%{opacity:1}50%{opacity:.45}} .mon-pnl{text-align:right} .mon-pnl b{font-size:14px;display:block} .mon-pnl span{font-size:10px;color:var(--slate-2)} .mon-ctrls{display:flex;gap:6px} /* ---------- AI copilot ---------- */ .ai-wrap{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px} .ai-main{display:flex;flex-direction:column;min-height:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden} .ai-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 15px;border-bottom:1px solid var(--line)} .ai-title{display:flex;align-items:center;gap:11px} .ai-ic{display:inline-flex;width:32px;height:32px;align-items:center;justify-content:center;border-radius:10px;background:var(--accent-soft);color:var(--accent-d);flex:0 0 auto} .ai-title b{font-size:14px;display:block} .ai-title span{font-size:11px;color:var(--slate)} .ai-log{flex:1;min-height:0;overflow-y:auto;padding:16px 15px;display:flex;flex-direction:column;gap:13px} .ai-msg{display:flex;gap:9px;max-width:88%} .ai-msg.user{align-self:flex-end} .ai-msg.ai{align-self:flex-start} .ai-av{display:inline-flex;width:26px;height:26px;align-items:center;justify-content:center;border-radius:8px;background:var(--accent-soft);color:var(--accent-d);flex:0 0 auto;margin-top:2px} .ai-bubble{font-size:12.5px;line-height:1.55;padding:10px 13px;border-radius:13px} .ai-msg.ai .ai-bubble{background:var(--surface-2);border:1px solid var(--line);border-top-left-radius:4px;color:var(--navy)} .ai-msg.user .ai-bubble{background:var(--accent);color:#fff;border-top-right-radius:4px} .ai-data,.ai-data2{margin-top:9px;display:flex;gap:14px} .ai-data2{flex-direction:column;gap:4px} .ai-col{flex:1} .ai-coln{font-size:9px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;margin-bottom:4px} .ai-coln.up{color:var(--green-d)} .ai-coln.down{color:var(--red-d)} .ais-row{display:flex;align-items:center;gap:8px;font-size:11.5px;padding:2px 0} .ais-row .t-sym{flex:1} .ais-row .num{min-width:50px;text-align:right} .ais-tag{font-size:9.5px;color:var(--slate);background:var(--surface);border:1px solid var(--line);border-radius:99px;padding:1px 7px} .ais-score{font-family:var(--mono);font-weight:700;color:var(--accent-d);min-width:24px;text-align:center} .ai-conf{display:block;font-size:10px;color:var(--slate-2);margin-top:7px} .ai-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px} .ai-act{border:1px solid var(--accent-line);background:var(--accent-soft);color:var(--accent-d);font-family:var(--sans);font-weight:700;font-size:11px;padding:6px 11px;border-radius:8px;cursor:pointer;transition:.15s} .ai-act:hover{background:var(--accent);color:#fff} .ai-act:focus-visible{outline:none;box-shadow:var(--ring)} .ai-chips{display:flex;gap:7px;overflow-x:auto;padding:10px 13px 0} .ai-chip{border:1px solid var(--line-2);background:var(--surface-2);color:var(--navy);font-family:var(--sans);font-weight:600;font-size:11.5px;padding:7px 12px;border-radius:99px;cursor:pointer;white-space:nowrap;transition:.15s;flex:0 0 auto} .ai-chip:hover{border-color:var(--accent-line);color:var(--accent-d);background:var(--accent-soft)} .ai-chip:focus-visible{outline:none;box-shadow:var(--ring)} .ai-input{display:flex;gap:8px;padding:11px 13px;border-top:1px solid var(--line)} .ai-input input{flex:1;border:1px solid var(--line-2);background:var(--surface-2);border-radius:11px;padding:11px 14px;font-family:var(--sans);font-size:13px;color:var(--navy);outline:none;transition:.15s} .ai-input input:focus{border-color:var(--accent);background:var(--surface)} .ai-send{flex:0 0 auto;width:42px;border:0;background:var(--accent);color:#fff;border-radius:11px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:.15s} .ai-send:hover{background:var(--accent-d)} .ai-send:focus-visible{outline:none;box-shadow:var(--ring)} .ai-disc{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--slate-2);margin:0;padding:0 13px 11px} .ai-disc .ico{color:var(--accent-d);flex:0 0 auto} .ai-side{display:flex;flex-direction:column;gap:11px;overflow-y:auto;min-height:0} .ai-side-ttl{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--navy)} .ai-side-ttl .ico{color:var(--accent-d)} .ais-card{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:12px 13px;box-shadow:var(--shadow)} .ais-h{font-size:11px;font-weight:700;color:var(--slate);text-transform:uppercase;letter-spacing:.3px;margin-bottom:8px} .ais-note{display:flex;align-items:flex-start;gap:7px;font-size:11.5px;color:var(--navy);line-height:1.45;margin:0} .ais-note .ico{color:var(--accent-d);flex:0 0 auto;margin-top:1px} .ais-card .ai-act{margin-top:9px} @media(max-width:1000px){ .ai-wrap{grid-template-columns:1fr} .ai-side{flex-direction:row;flex-wrap:wrap} .ais-card{flex:1;min-width:200px} } @media(max-width:680px){ .av-head{flex-direction:column;align-items:stretch} /* Eight Algo Studio tabs never fit a phone width in one row (justify-content:space-between doesn't help once content overflows, it only redistributes slack that doesn't exist here); found via a mobile QA pass where Accuracy/Analytics/Risk Governor/Backtest rendered off-screen with no way to reach them at all. Horizontal swipe-scroll instead of trying to force everything to fit. */ .av-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;max-width:100%} .av-tabs::-webkit-scrollbar{display:none} } /* ============================================================ LAYOUT BUILDER: compact Layout menu + named layouts + gallery ============================================================ */ html[data-persona="trader"] #deskBar{position:relative} .layout-btn{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line-2);background:var(--surface-2);color:var(--navy);font-family:var(--sans);font-weight:700;font-size:12.5px;padding:8px 13px;border-radius:10px;cursor:pointer;transition:.15s} .layout-btn .ico{color:var(--accent-d)} .lb-chev{color:var(--slate-2)} .layout-btn:hover{border-color:var(--accent-line)} .layout-btn[aria-expanded="true"]{border-color:var(--accent);box-shadow:var(--ring)} .lb-name{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .lb-newq{margin-left:auto} .layout-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:70;width:300px;max-height:62vh;overflow-y:auto; background:var(--surface);border:1px solid var(--line-2);border-radius:13px;box-shadow:var(--shadow-lg);padding:7px;animation:wgIn .16s ease both} .layout-menu[hidden]{display:none} .lm-sec{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--slate-2);padding:8px 9px 4px} .lm-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:0;background:transparent;border-radius:9px;padding:8px 9px;cursor:pointer;transition:.13s;font-family:var(--sans)} .lm-item:hover{background:var(--surface-2)} .lm-item.on{background:var(--accent-soft)} .lm-check{width:15px;flex:0 0 auto;color:var(--accent-d);display:inline-flex;align-items:center} .lm-tb{flex:1;min-width:0} .lm-tb b{font-size:12.5px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .lm-tb span{font-size:10.5px;color:var(--slate)} .lm-acts{display:flex;gap:3px;flex:0 0 auto} .lm-mini{display:inline-flex;width:24px;height:24px;align-items:center;justify-content:center;border-radius:7px;color:var(--slate-2);cursor:pointer;transition:.13s} .lm-mini:hover{background:var(--surface);color:var(--accent-d)} .lm-mini.danger:hover{color:var(--red-d);background:var(--tint-down)} .lm-empty{font-size:11.5px;color:var(--slate-2);padding:6px 10px} .lm-new{display:flex;align-items:center;gap:7px;width:100%;border:0;border-top:1px solid var(--line);margin-top:5px;background:transparent;color:var(--accent-d);font-family:var(--sans);font-weight:700;font-size:12.5px;padding:10px 9px 6px;cursor:pointer} .lm-new:hover{color:var(--accent)} .lm-item:focus-visible,.lm-new:focus-visible,.lm-mini:focus-visible{outline:none;box-shadow:var(--ring)} /* template gallery (modal) */ .lg-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:stretch} .lg-tile{position:relative;display:flex;flex-direction:column;text-align:center;border:1px solid var(--line);background:var(--surface); border-radius:14px;padding:14px 14px 12px;cursor:pointer;transition:transform .18s,box-shadow .18s,border-color .18s;overflow:hidden} .lg-tile:hover{border-color:var(--lg-accent,var(--accent));transform:translateY(-3px);box-shadow:0 16px 34px -20px var(--lg-accent,rgba(16,30,54,.6))} .lg-tile:focus-visible{outline:none;box-shadow:var(--ring)} .lg-tile.is-suggested{border-color:var(--lg-accent)} /* stage: big muted icon by default → cross-fades to a live layout wireframe on hover */ .lg-stage{position:relative;height:108px;border-radius:11px;background:var(--surface-2);border:1px solid var(--line); display:flex;align-items:center;justify-content:center;margin-bottom:12px;overflow:hidden} .lg-stage-ic{color:var(--lg-accent,var(--accent-d));opacity:.85;transition:opacity .2s,transform .2s} .lg-tile:hover .lg-stage-ic{opacity:0;transform:scale(.85)} .lg-stage-wire{position:absolute;inset:9px;opacity:0;transform:scale(.97);transition:opacity .2s,transform .2s} .lg-tile:hover .lg-stage-wire{opacity:1;transform:none} .lg-stage-dash{border-style:dashed} .lg-wire{position:absolute;inset:0;display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;gap:4px} .lg-wcell{background:var(--surface);border:1px solid var(--line-2);border-radius:5px;padding:5px;overflow:hidden;display:flex;flex-direction:column;justify-content:center;gap:3px} .lg-wcell.wsp-2{grid-column:span 2} .lg-wcell.wsp-3{grid-column:span 3} .sk{display:flex;flex-direction:column;gap:2.5px;width:100%;height:100%;justify-content:center} /* quotes: watchlist/movers rows: label bar + green/red value */ .sk-q i{display:flex;align-items:center;gap:3px} .sk-q i b{display:block;height:3px;border-radius:2px} .sk-q i b:first-child{flex:1;background:var(--line-2)} .sk-q i b:last-child{width:32%} .sk-q .up{background:color-mix(in srgb,#10b981 72%,transparent)} .sk-q .dn{background:color-mix(in srgb,#ef4444 66%,transparent)} /* heatmap: green/red/neutral cells */ .sk-heat{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;gap:2.5px} .sk-heat i{border-radius:2px} .sk-heat .g{background:color-mix(in srgb,#10b981 46%,transparent)} .sk-heat .r{background:color-mix(in srgb,#ef4444 42%,transparent)} .sk-heat .n{background:var(--line-2)} /* option chain: header + call/put rows, ATM highlighted */ .sk-chain i{display:flex;gap:3px;align-items:center} .sk-chain i.hd{height:3px;width:62%;align-self:center;border-radius:2px;background:color-mix(in srgb,var(--lg-accent,var(--accent)) 55%,transparent)} .sk-chain i b{flex:1;height:3px;border-radius:2px} .sk-chain i b.g{background:color-mix(in srgb,#10b981 46%,transparent)} .sk-chain i b.r{background:color-mix(in srgb,#ef4444 42%,transparent)} .sk-chain i.atm{background:color-mix(in srgb,var(--lg-accent,var(--accent)) 14%,transparent);border-radius:3px;padding:1.5px 2px} /* OI: paired vertical bars */ .sk-bars{flex-direction:row;align-items:flex-end;gap:2.5px} .sk-bars i{flex:1;border-radius:1.5px} .sk-bars .g{background:color-mix(in srgb,#10b981 58%,transparent)} .sk-bars .r{background:color-mix(in srgb,#ef4444 52%,transparent)} .sk-bars i:nth-child(1){height:50%}.sk-bars i:nth-child(2){height:82%}.sk-bars i:nth-child(3){height:62%}.sk-bars i:nth-child(4){height:92%}.sk-bars i:nth-child(5){height:70%} /* candlesticks */ .sk-cndl{flex-direction:row;align-items:center;gap:3px} .sk-cndl i{flex:1;position:relative;border-radius:1px} .sk-cndl i::before{content:"";position:absolute;left:50%;top:-2.5px;bottom:-2.5px;width:1px;transform:translateX(-50%);background:inherit;opacity:.55} .sk-cndl .g{background:color-mix(in srgb,#10b981 66%,transparent)} .sk-cndl .r{background:color-mix(in srgb,#ef4444 60%,transparent)} .sk-cndl i:nth-child(odd){height:50%}.sk-cndl i:nth-child(even){height:74%} /* market depth: bids over asks */ .sk-depth i{display:block;height:3.5px;border-radius:2px} .sk-depth .g{background:color-mix(in srgb,#10b981 52%,transparent)} .sk-depth .r{background:color-mix(in srgb,#ef4444 46%,transparent)} .sk-depth i:nth-child(1){width:86%}.sk-depth i:nth-child(2){width:64%}.sk-depth i:nth-child(3){width:76%}.sk-depth i:nth-child(4){width:54%} /* PCR meter */ .sk-meter i{display:block;height:5px;border-radius:3px;position:relative;background:linear-gradient(90deg,#ef4444,#f59e0b,#10b981)} .sk-meter i::after{content:"";position:absolute;left:62%;top:-1.5px;bottom:-1.5px;width:3px;border-radius:2px;background:var(--navy)} /* P&L / margin: big figure + sparkline */ .sk-pnl{align-items:flex-start;gap:4px} .sk-pnl .fig{display:block;height:8px;width:58%;border-radius:3px;background:color-mix(in srgb,#10b981 36%,var(--line-2))} .sk-pnl .spk{display:flex;align-items:flex-end;gap:2px;width:100%;height:42%} .sk-pnl .spk i{flex:1;border-radius:1px;background:color-mix(in srgb,var(--lg-accent,var(--accent)) 42%,transparent)} .sk-pnl .spk i:nth-child(1){height:40%}.sk-pnl .spk i:nth-child(2){height:72%}.sk-pnl .spk i:nth-child(3){height:54%}.sk-pnl .spk i:nth-child(4){height:92%} .lg-meta{display:flex;flex-direction:column;gap:2px;align-items:center;flex:1} .lg-meta b{font-size:13.5px;color:var(--navy);line-height:1.2} .lg-tag{font-style:normal;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--lg-accent,var(--accent-d))} .lg-desc{font-size:11px;color:var(--slate);line-height:1.4;margin-top:2px} .lg-flag{position:absolute;top:11px;right:11px;display:inline-flex;align-items:center;gap:3px;font-size:9px;font-weight:800;letter-spacing:.3px;z-index:2; color:#fff;background:var(--lg-accent,var(--accent));border-radius:20px;padding:3px 8px;box-shadow:var(--shadow)} .lg-cta{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:11px;padding-top:10px;border-top:1px solid var(--line)} .lg-n{font-size:10px;font-weight:700;color:var(--slate-2);display:inline-flex;align-items:center;gap:4px} .lg-go{font-style:normal;font-size:11px;font-weight:800;color:var(--lg-accent,var(--accent-d));opacity:0;transform:translateX(-4px);transition:.18s} .lg-tile:hover .lg-go{opacity:1;transform:none} .lg-tile:hover .lg-n{display:none} .lg-scratch{background:var(--surface-2)} .lg-hint{display:inline-flex;align-items:center;gap:3px;font-weight:700;color:var(--accent-d)} @media(max-width:560px){.lg-grid{grid-template-columns:1fr}} /* full-canvas / inline setup landing */ .lg-inline{grid-template-columns:repeat(auto-fill,minmax(216px,1fr))} .ws-empty{flex:1;min-height:0;display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;padding:14px 6px 96px} .ws-empty[hidden]{display:none} .ws-empty-inner{width:100%;max-width:1180px;display:flex;flex-direction:column;gap:20px} .ws-empty-head{text-align:center;display:flex;flex-direction:column;gap:5px} .ws-empty-head b{font-size:19px;color:var(--navy);letter-spacing:-.2px} .ws-empty-head span{font-size:12.5px;color:var(--slate);max-width:580px;margin:0 auto;line-height:1.45} /* restore + dismiss row (opt-out) */ .ws-restore-row{display:inline-flex;align-items:center;gap:8px;align-self:center;margin-top:10px} .ws-restore{display:inline-flex;align-items:center;gap:6px} .ws-dismiss{color:var(--slate-2)} .ws-dismiss:hover{color:var(--navy)} /* gallery sections (Quick layouts / Build your own) */ .lg-section{display:flex;flex-direction:column;gap:11px} .lg-section+.lg-section{margin-top:4px} .lg-sec-head{display:flex;align-items:baseline;gap:10px;padding-bottom:2px;border-bottom:1px solid var(--line);flex-wrap:wrap} .lg-sec-head b{font-size:13px;font-weight:800;color:var(--navy);letter-spacing:.1px} .lg-sec-head span{font-size:11.5px;color:var(--slate-2)} /* quick-layout pane schematic (fixed-pane terminals) */ .lg-pwire{position:absolute;inset:0;display:flex;gap:4px} .lg-pane{display:flex;flex-direction:column;gap:3px;background:var(--surface);border:1px solid var(--line-2);border-radius:5px;padding:4px;overflow:hidden;min-width:0} .lg-pane-hd{height:3px;border-radius:2px;background:color-mix(in srgb,var(--lg-accent,var(--accent)) 45%,transparent);flex:0 0 auto} .lg-pane-bd{flex:1;min-height:0;display:flex} .lg-pane-bd .sk{justify-content:flex-start} /* orders / scanner list skeleton */ .sk-list{gap:3px} .sk-list .tabs{display:flex;gap:2px} .sk-list .tabs b{height:3px;flex:1;border-radius:2px;background:var(--line-2)} .sk-list .tabs b.on{background:color-mix(in srgb,var(--lg-accent,var(--accent)) 60%,transparent)} .sk-list .ln{display:block;height:3px;border-radius:2px;background:var(--line-2)} .sk-list .ln:nth-child(2){width:90%}.sk-list .ln:nth-child(3){width:72%}.sk-list .ln:nth-child(4){width:84%} /* saved-workspace tiles */ .lg-saved .lg-tag{color:var(--slate-2)} .lg-wire-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--slate-2);border:1px dashed var(--line-2);border-radius:6px} /* distinct, full-width "start from scratch" CTA, surfaced upfront, separate from the tile grid */ .lg-scratch-bar{display:flex;align-items:center;gap:14px;width:100%;text-align:left;cursor:pointer; border:1.5px dashed var(--line-2);background:var(--surface-2);border-radius:13px;padding:13px 16px;transition:.16s} .lg-scratch-bar:hover{border-color:var(--accent);background:var(--surface);box-shadow:0 14px 30px -22px var(--accent)} .lg-scratch-bar:focus-visible{outline:none;box-shadow:var(--ring)} .lsb-ic{flex:0 0 auto;width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--line);color:var(--accent-d);transition:.16s} .lg-scratch-bar:hover .lsb-ic{background:var(--accent-soft);border-color:var(--accent-line)} .lsb-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px} .lsb-tx b{font-size:13.5px;color:var(--navy)} .lsb-tx span{font-size:11.5px;color:var(--slate);line-height:1.4} .lsb-go{flex:0 0 auto;font-style:normal;font-size:12px;font-weight:800;color:var(--accent-d);white-space:nowrap} .lg-scratch-bar:hover .lsb-go{color:var(--accent)} /* when the landing gallery is up, give it the full width (Dext-style) and hide the empty side rails */ .terminal.ws-landing{grid-template-columns:1fr!important} .terminal.ws-landing .pane-left,.terminal.ws-landing .pane-right{display:none} /* ============================================================ AI COPILOT: live-mode badge, settings, streaming indicator ============================================================ */ .ai-head-acts{display:flex;align-items:center;gap:8px;flex:0 0 auto} .ai-mode{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:700;padding:4px 10px;border-radius:99px; background:var(--surface-2);color:var(--slate);border:1px solid var(--line)} .ai-mode.live{background:var(--accent-soft);color:var(--accent-d);border-color:var(--accent-line)} .ai-mode .ai-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);animation:pulse 1.6s infinite} .ai-typing{display:inline-flex;gap:4px;align-items:center;padding:2px 0} .ai-typing i{width:6px;height:6px;border-radius:50%;background:var(--slate-2);display:inline-block;animation:aiTyp 1s infinite ease-in-out} .ai-typing i:nth-child(2){animation-delay:.15s} .ai-typing i:nth-child(3){animation-delay:.3s} @keyframes aiTyp{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}} .ai-warn{display:inline-flex;align-items:flex-start;gap:7px;font-size:12px;color:var(--amber);line-height:1.45} .ai-warn .ico{flex:0 0 auto;margin-top:1px} .ai-test-msg{font-size:11.5px;color:var(--slate);margin-left:8px} .ai-test-msg.ok{color:var(--green-d)} .ai-test-msg.bad{color:var(--red-d)} #aiTestRow{margin-bottom:12px} .cv-pick-note code{font-family:var(--mono);font-size:11px;background:var(--surface-2);border:1px solid var(--line);border-radius:5px;padding:1px 5px} /* CUXO audit: Widgets live in the right rail (trader/investor only). Hide the topbar Widgets button in Algo/AI, where the rail is replaced by a full-width takeover. */ #widgetBtn{display:none} /* ===== Regime-switched Algo Studio ===== */ .rg-banner{display:flex;align-items:center;gap:9px;margin:0 0 12px;padding:10px 13px;border-radius:11px; font-size:12.5px;font-weight:600;color:var(--navy,#0F1A2A);background:rgba(15,26,42,.04);border:1px solid rgba(15,26,42,.10)} .rg-banner.on{background:rgba(0,171,78,.10);border-color:rgba(0,171,78,.26)} .rg-banner.aside{background:rgba(245,158,11,.10);border-color:rgba(245,158,11,.30);color:#9a6a00} .rg-banner b{font-weight:800} .seg-tabs{display:flex;gap:8px;margin:0 0 14px;flex-wrap:wrap} .seg-tab{display:flex;flex-direction:column;gap:1px;padding:7px 14px;border-radius:10px;cursor:pointer; background:rgba(15,26,42,.04);border:1px solid rgba(15,26,42,.10);color:var(--navy,#0F1A2A);text-align:left} .seg-tab b{font-size:12.5px;font-weight:700} .seg-tab i{font-size:10px;font-style:normal;opacity:.6} .seg-tab.on{background:var(--green,#00ab4e);border-color:var(--green,#00ab4e);color:#fff} .seg-tab.on i{opacity:.85} .vbadge-row{display:flex;align-items:center;gap:7px;margin:2px 0 8px;flex-wrap:wrap} .vbadge{font-size:10px;font-weight:800;padding:2px 8px;border-radius:999px;letter-spacing:.2px;text-transform:uppercase} .vbadge.ok{background:rgba(0,171,78,.14);color:#00803b} .vbadge.cand{background:rgba(245,158,11,.16);color:#9a6a00} .rg-tag{font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:999px;background:rgba(22,103,217,.12);color:#1556bd} .rg-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin:9px 0 2px} .rg-cell{display:flex;flex-direction:column;align-items:center;gap:1px;padding:5px 2px;border-radius:7px; font-size:9.5px;font-weight:600;opacity:.92;border:1px solid transparent} .rg-cell b{font-size:11px;font-weight:800} .rg-cell.rg-good{background:rgba(0,171,78,.13);color:#00803b} .rg-cell.rg-weak{background:rgba(245,158,11,.13);color:#9a6a00} .rg-cell.rg-bad{background:rgba(229,56,59,.10);color:#b3261e} .rg-cell.rg-live{outline:2px solid var(--navy,#0F1A2A);outline-offset:1px} .algo-card.is-active{border-color:var(--green,#00ab4e);box-shadow:0 0 0 2px rgba(0,171,78,.18)} .active-flag{display:inline-block;font-size:10px;font-weight:800;color:#00803b;letter-spacing:.3px;margin-bottom:6px} .cand-pill{font-size:11.5px;font-weight:700;color:#9a6a00;background:rgba(245,158,11,.12);padding:5px 11px;border-radius:8px} .algo-stats .num.sm{font-size:11px} /* ===== Info (i) icons ===== */ .info-i{display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;border-radius:50%; border:1px solid currentColor;font-size:9px;font-weight:700;font-style:normal;opacity:.42;cursor:help; margin-left:4px;vertical-align:middle;line-height:1;flex:none;user-select:none} .info-i:hover,.info-i:focus{opacity:.85;outline:none} .rg-head{display:flex;align-items:center;font-size:10px;font-weight:700;opacity:.55;margin:9px 0 4px; text-transform:uppercase;letter-spacing:.4px} .ss-l{display:inline-flex;align-items:center} /* ===== Algo Studio: 2-column bigger cards + status bar + forward feed ===== */ .algo-grid{grid-template-columns:repeat(2,1fr);gap:16px} @media(max-width:920px){.algo-grid{grid-template-columns:1fr}} .algo-card{padding:18px 20px;gap:12px;border-radius:16px} .algo-card .algo-desc{font-size:13px;line-height:1.55} .algo-stats{padding:12px 14px;gap:12px} .rg-grid{gap:7px} .rg-cell{padding:8px 4px} .algo-statusbar{display:flex;align-items:stretch;margin:0 0 16px;padding:3px;border-radius:13px; background:var(--surface-2);border:1px solid var(--line);flex-wrap:wrap} .algo-statusbar.off{border-color:rgba(229,56,59,.28)} .asb-cell{display:flex;flex-direction:column;gap:3px;padding:8px 16px;min-width:0} .asb-cell.asb-grow{flex:1} .asb-l{display:inline-flex;align-items:center;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;opacity:.5} .asb-v{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .asb-div{width:1px;background:var(--line);margin:8px 0;flex:none} .mode-badge{font-size:10px;font-weight:800;padding:2px 9px;border-radius:6px;letter-spacing:.4px} .mode-badge.paper{background:rgba(22,103,217,.14);color:#1556bd} .mode-badge.live{background:rgba(229,56,59,.16);color:#b3261e} /* live-regime glanceable chip + hover detail (variant A) */ .asb-score{font-family:var(--mono);font-weight:700;font-size:13px} .asb-score.up{color:#00803b} .asb-score.down{color:#b3261e} .asb-caret{font-size:9px;opacity:.45;margin-left:1px} .asb-pop-host{position:relative;cursor:default;outline:none} .asb-pop-host:focus-visible{box-shadow:inset 0 0 0 2px var(--accent-line);border-radius:11px} .asb-pop{position:absolute;top:calc(100% + 7px);left:8px;z-index:40;min-width:236px; background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:9px 13px; box-shadow:var(--shadow-lg);opacity:0;transform:translateY(-5px);pointer-events:none;transition:.13s ease} .asb-pop-host:hover .asb-pop,.asb-pop-host:focus-within .asb-pop,.asb-pop-host:focus .asb-pop{opacity:1;transform:none;pointer-events:auto} .asb-prow{display:flex;align-items:center;justify-content:space-between;gap:26px;padding:4px 0;font-size:12.5px} .asb-prow span{color:var(--slate)} .asb-prow b.num{font-size:12.5px} .asb-prow b.up{color:var(--green-d)} .asb-prow b.down{color:var(--red-d)} .asb-popf{font-size:10.5px;color:var(--slate-2);margin-top:6px;padding-top:7px;border-top:1px solid var(--line);font-style:italic} .ft-feed{margin-top:16px;border:1px solid var(--line);border-radius:12px;overflow:hidden} .ft-feedh{display:flex;align-items:center;font-size:11.5px;font-weight:700;padding:10px 13px;background:var(--surface-2);opacity:.85} .ft-trade{font-family:'Roboto Mono',monospace;font-size:11.5px;padding:7px 13px;border-top:1px solid var(--line);opacity:.82;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} /* ===== Forward Test "mission control": regime banner · fit cards · adaptive risk ===== */ .ft-banner{margin:14px 0;padding:13px 15px;border:1px solid var(--line);border-radius:14px; background:linear-gradient(180deg,var(--surface-2),var(--surface))} .ft-bhead{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:800;color:var(--navy);flex-wrap:wrap} .ft-bhead b{font-weight:800} .ft-bscore{font-family:'Roboto Mono',monospace;font-size:11px;font-weight:700;padding:1px 7px;border-radius:999px} .ft-bscore.up{background:rgba(0,171,78,.14);color:#00803b} .ft-bscore.down{background:var(--tint-down);color:var(--red)} .ft-bsub{flex:1 1 100%;font-size:11.5px;font-weight:500;color:var(--slate);margin-top:2px} .ft-blists{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:11px} @media(max-width:720px){.ft-blists{grid-template-columns:1fr}} .ft-bcol{display:flex;flex-direction:column;gap:6px} .ft-bl{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.4px} .ft-bl.up{color:#00803b} .ft-bl.down{color:var(--red)} .ft-bpills{display:flex;flex-wrap:wrap;gap:5px} .ft-pill{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;cursor:default} .ft-pill.fav{background:rgba(0,171,78,.13);color:#00803b} .ft-pill.bad{background:var(--tint-down);color:var(--red)} .ft-bnone{font-size:11.5px;color:var(--slate-2);font-style:italic} .ft-btip{display:flex;align-items:flex-start;gap:7px;margin-top:11px;padding-top:10px;border-top:1px dashed var(--line); font-size:12px;color:var(--slate)} .ft-btip b{color:var(--navy)} .ft-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px} .ft-card{display:flex;flex-direction:column;gap:10px;background:var(--surface);border:1px solid var(--line); border-radius:14px;padding:14px;box-shadow:var(--shadow);position:relative;overflow:hidden} .ft-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--line-2,#cfd8e6)} .ft-card.fit-fav::before{background:var(--green)} .ft-card.fit-hostile::before{background:var(--red)} .ft-card.fit-neu::before{background:var(--amber)} .ft-card.is-aside{opacity:.82;background:var(--surface-2)} .ft-card.is-live{box-shadow:0 0 0 1.5px var(--accent-line),var(--shadow)} .ft-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px} .ft-id{display:flex;align-items:flex-start;gap:8px;min-width:0} .ft-id b{font-size:13.5px;font-weight:800;color:var(--navy);display:flex;align-items:center} .ft-cat{display:block;font-size:10.5px;color:var(--slate-2);margin-top:2px} .ft-pnl{text-align:right;flex:0 0 auto} .ft-pnl b{font-size:15px;display:block} .ft-pnl span{font-size:10px;color:var(--slate-2)} .ft-asidetag{color:var(--amber)!important;font-weight:700} .ft-mid{display:flex;align-items:center;justify-content:space-between;gap:10px} .ft-fit{font-size:11px;font-weight:800;padding:3px 9px;border-radius:999px;white-space:nowrap} .ft-fit.fit-fav{background:rgba(0,171,78,.13);color:#00803b} .ft-fit.fit-bad{background:var(--tint-down);color:var(--red)} .ft-fit.fit-neu{background:rgba(245,158,11,.14);color:#9a6a00} .ft-sparkwrap{flex:0 0 96px;height:26px} .ft-spark{width:96px;height:26px;display:block} .ft-spark .fs-line{fill:none;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round} .ft-spark.up .fs-line{stroke:var(--green)} .ft-spark.up .fs-area{fill:rgba(0,171,78,.12)} .ft-spark.down .fs-line{stroke:var(--red)} .ft-spark.down .fs-area{fill:var(--tint-down)} .ft-spark .fs-base{stroke:var(--line-2,#d6deea);stroke-width:1;stroke-dasharray:2 2} .ft-nospark{font-size:10px;color:var(--slate-2);font-style:italic;white-space:nowrap} .ft-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;padding:9px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)} .ft-stats>div{display:flex;flex-direction:column;align-items:center;gap:2px} .ft-stats span{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2)} .ft-stats b{font-size:12.5px;font-weight:800;color:var(--navy)} .ft-stats b.up{color:#00803b} .ft-stats b.down{color:var(--red)} .ft-grad .ft-gh{display:flex;justify-content:space-between;align-items:center;font-size:10.5px;color:var(--slate);margin-bottom:5px;font-weight:600} .ft-grad .ft-gn{font-family:'Roboto Mono',monospace;font-weight:800;color:var(--navy)} .ft-glive{font-size:11px;font-weight:800;color:var(--green)} .ft-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:1px} .ft-foot .btn-go,.ft-foot .btn-ghost{width:auto;flex:0 0 auto} .ft-adaptwrap{display:flex;flex-direction:column;gap:3px;min-width:0} .ft-adapt{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--surface-2); border-radius:999px;padding:4px 11px 4px 5px;cursor:pointer;font-size:11.5px;font-weight:700;color:var(--slate);transition:.18s} .ft-adapt:hover{border-color:var(--accent-line)} .ft-aknob{width:13px;height:13px;border-radius:50%;background:var(--slate-2);transition:.18s;flex:0 0 auto;box-shadow:inset 0 0 0 2px var(--surface)} .ft-adapt.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-d)} .ft-adapt.on .ft-aknob{background:var(--accent-d);box-shadow:0 0 0 3px var(--accent-soft)} .ft-astate{font-size:9.5px;font-weight:700;color:var(--slate-2);padding-left:4px;white-space:nowrap} .ft-astate.aside{color:var(--amber)} .ft-astate.eng{color:#00803b} /* ===== Capital-aware planner ===== */ .cap-strip{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:0 0 14px;padding:12px 16px; border:1px solid var(--line);border-radius:13px;background:var(--surface-2)} .cap-field{display:flex;flex-direction:column;gap:4px} .cap-field label{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;opacity:.55;display:inline-flex;align-items:center} .cap-input-wrap{display:inline-flex;align-items:center;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:7px 11px} .cap-input-wrap span{font-size:13px;font-weight:700;opacity:.6} .cap-input{border:0;background:transparent;outline:none;width:120px;font-size:15px;font-weight:800;color:var(--navy)} .cap-sum{flex:1;min-width:180px;font-size:13px;color:var(--slate)} .cap-sum b{color:var(--navy)} .cap-sum b.up{color:#00803b} .cap-toggle{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--slate);cursor:pointer;user-select:none} .cap-toggle input{width:15px;height:15px;accent-color:var(--green,#00ab4e)} .aff-chip{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:999px} .aff-chip.ok{background:rgba(0,171,78,.13);color:#00803b} .aff-chip.no{background:rgba(245,158,11,.14);color:#9a6a00} .paper-chip{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:999px;background:rgba(22,103,217,.12);color:#1556bd} .btn-go{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:100%;font-size:12.5px;font-weight:700; padding:9px 12px;border-radius:10px;cursor:pointer;border:1px solid var(--green,#00ab4e);color:#00803b;background:rgba(0,171,78,.08)} .btn-go:hover{background:rgba(0,171,78,.15)} /* ===== Go-live nudge banner ===== */ .nudge-wrap{display:flex;flex-direction:column;gap:10px;margin:0 0 14px} .nudge-card{display:flex;align-items:center;gap:13px;padding:13px 16px;border-radius:13px;border:1px solid var(--line)} .nudge-card.go{background:rgba(0,171,78,.07);border-color:rgba(0,171,78,.30)} .nudge-card.build{background:var(--surface-2)} .nudge-ic{display:inline-flex;width:34px;height:34px;align-items:center;justify-content:center;border-radius:10px;flex:none} .nudge-card.go .nudge-ic{background:rgba(0,171,78,.15);color:#00803b} .nudge-card.build .nudge-ic{background:rgba(22,103,217,.10);color:#1556bd} .nudge-b{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px} .nudge-b b{font-size:13px;color:var(--navy)} .nudge-b>span{font-size:11.5px;color:var(--slate);line-height:1.45} .nudge-b span b.up{color:#00803b} .nudge-b span b.down{color:#b3261e} .nudge-bar{height:6px;border-radius:99px;background:rgba(15,26,42,.08);overflow:hidden;margin-top:6px;max-width:340px} .nudge-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#1667d9,#3f8ae0)} .nudge-card .btn-go,.nudge-card .btn-ghost{width:auto;flex:none;white-space:nowrap} /* ===== Algo Studio UX level-up: capital presets · evidence pips · stat funnel · engine emphasis ===== */ /* Capital quick-presets: one tap to size the catalog instead of typing */ .cap-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap} .cap-quick{display:inline-flex;gap:6px;flex-wrap:wrap} .cap-chip{font-family:var(--sans);font-size:11.5px;font-weight:700;color:var(--slate);cursor:pointer; padding:6px 11px;border-radius:8px;border:1px solid var(--line-2);background:var(--surface);transition:.13s} .cap-chip:hover{border-color:var(--accent-line);color:var(--accent-d);background:var(--accent-soft)} .cap-chip.on{border-color:var(--green,#00ab4e);background:var(--green,#00ab4e);color:#fff} .cap-chip:focus-visible{outline:none;box-shadow:var(--ring)} /* Forward-evidence meter: segmented pips so "0/10" reads as a real, fillable track (not an empty bar) */ .nudge-top{display:flex;align-items:center;gap:9px;flex-wrap:wrap} .nudge-top b{font-size:13px;color:var(--navy)} .nudge-tag{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.4px; padding:2px 8px;border-radius:999px;background:rgba(22,103,217,.12);color:#1556bd;white-space:nowrap} .nudge-meter{display:flex;align-items:center;gap:10px;margin-top:7px;flex-wrap:wrap} .nudge-pips{display:inline-flex;gap:3px} .nudge-pips i{width:14px;height:6px;border-radius:3px;background:rgba(15,26,42,.10);transition:.25s} .nudge-pips i.on{background:linear-gradient(90deg,#1667d9,#3f8ae0)} .nudge-mlab{font-size:11px;font-weight:600;color:var(--slate);font-variant-numeric:tabular-nums} .nudge-mlab b{color:var(--navy);font-weight:800} /* Stat-funnel subtitle + hover lift */ .sec-stat{transition:border-color .15s,box-shadow .15s} .sec-stat:hover{border-color:var(--line-2)} .sec-stat .ss-s{line-height:1.3} /* Active-engine cell: the "what's running right now" punchline gets a soft accent so the eye lands there */ .algo-statusbar .asb-grow{background:linear-gradient(90deg,var(--accent-soft),transparent 72%);border-radius:11px} .algo-statusbar .asb-grow .asb-v{font-size:14px} /* ===== Go-Live readiness checklist (modal) ===== */ .gl-load{display:flex;align-items:center;gap:10px;padding:22px 4px;font-size:13px;color:var(--slate)} .gl-head{display:flex;align-items:center;gap:16px;padding:13px 15px;border-radius:12px;margin-bottom:14px;border:1px solid} .gl-head.ok{background:rgba(0,171,78,.08);border-color:rgba(0,171,78,.28)} .gl-head.block{background:rgba(245,158,11,.07);border-color:rgba(245,158,11,.30)} .gl-score{display:flex;flex-direction:column;line-height:1.1;flex:none} .gl-score b{font-size:22px;font-weight:800;color:var(--navy)} .gl-score span{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;opacity:.55} .gl-barwrap{flex:1;display:flex;flex-direction:column;gap:6px} .gl-bar{height:7px;border-radius:99px;background:rgba(15,26,42,.10);overflow:hidden} .gl-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#00ab4e,#00c95c)} .gl-head.block .gl-bar i{background:linear-gradient(90deg,#f59e0b,#f0b54a)} .gl-verdict{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:800;color:var(--navy)} .gl-list{display:flex;flex-direction:column;gap:14px;max-height:46vh;overflow:auto;padding-right:3px} .gl-gh{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;opacity:.5;margin:0 0 6px 2px} .gl-row{display:flex;align-items:flex-start;gap:10px;padding:8px 11px;border-radius:9px;background:var(--surface-2);margin-bottom:6px} .gl-mk{display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center;border-radius:50%;flex:none;margin-top:1px} .gl-row.pass .gl-mk{background:rgba(0,171,78,.15);color:#00803b} .gl-row.fail .gl-mk{background:rgba(229,56,59,.13);color:#b3261e} .gl-row.warn .gl-mk{background:rgba(245,158,11,.16);color:#9a6a00} .gl-tx{display:flex;flex-direction:column;gap:1px;min-width:0} .gl-tx b{font-size:12.5px;font-weight:700;color:var(--navy)} .gl-tx span{font-size:11.5px;color:var(--slate);line-height:1.4} .gl-opt{font-size:9px;font-weight:700;font-style:normal;text-transform:uppercase;letter-spacing:.3px;opacity:.5;background:rgba(15,26,42,.07);padding:1px 5px;border-radius:5px;margin-left:5px} .gl-go{width:100%;margin-top:14px} .gl-fnote{display:flex;align-items:flex-start;gap:7px;font-size:11px;color:var(--slate);margin-top:9px;line-height:1.45} .gl-blocked{display:flex;align-items:flex-start;gap:10px;margin-top:14px;padding:12px 14px;border-radius:11px; background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.28)} .gl-blocked b{font-size:12.5px;color:var(--navy);display:block} .gl-blocked span{font-size:11.5px;color:var(--slate);line-height:1.45} /* ===== Honest live/sim data markers ===== */ .tix-offline{display:inline-flex;align-items:center;gap:8px;padding:0 18px;font-size:12.5px;color:var(--slate);white-space:nowrap} .tix-offline b{color:var(--navy)} .tix-val.muted{color:var(--slate-2)} .rb-src{font-size:9px;font-weight:800;padding:1px 5px;border-radius:5px;letter-spacing:.3px;margin-left:5px;vertical-align:middle} .rb-src.live{background:rgba(0,171,78,.14);color:#00803b} .rb-src.sim{background:rgba(232,130,31,.16);color:#9a6a00} /* ===== Market session status (clock) ===== */ .mkt-dot.open{background:var(--green)!important;box-shadow:0 0 0 3px rgba(0,171,78,.18)} .mkt-dot.closed{background:var(--amber)!important;box-shadow:0 0 0 3px rgba(232,130,31,.18)} .mkt-dot.off{background:var(--slate-2)!important;box-shadow:none} .mkt-sess{font-size:10.5px;font-weight:600;color:var(--slate);margin:0 2px} /* ===== Widget honest empty / footer states ===== */ .wg-empty{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--slate);padding:8px 4px;line-height:1.4} .wg-big.muted{color:var(--slate-2)} .wg-foot{font-size:10.5px;color:var(--slate-2);margin-top:6px;padding-top:6px;border-top:1px solid var(--line)} /* ===== Paper / Live execution toggle (Monitor) ===== */ .exec-toggle{display:inline-flex;gap:4px;padding:4px;border-radius:11px;background:var(--surface-2);border:1px solid var(--line);margin:0 0 14px} .exec-tab{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:700;color:var(--slate); padding:7px 15px;border-radius:8px;border:0;background:transparent;cursor:pointer} .exec-tab.on{background:var(--surface);color:var(--navy);box-shadow:0 1px 3px rgba(16,30,54,.10)} .exec-tab i{font-style:normal;font-size:11px;font-weight:800;padding:1px 7px;border-radius:999px;background:rgba(15,26,42,.08);color:var(--slate)} .exec-tab.on i{background:var(--accent-soft);color:var(--accent-d)} .exec-dot{width:8px;height:8px;border-radius:50%;flex:none} .exec-dot.paper{background:#1667d9} .exec-dot.live{background:var(--green)} .exec-dot.off{background:var(--slate-2)} /* Live locked (honest Paper|Live toggle) */ .exec-tab.locked{color:var(--slate-2);opacity:.85} .exec-tab.locked .exec-lock{font-size:11px;margin-left:2px;filter:grayscale(.2)} .exec-locked{display:flex;align-items:flex-start;gap:11px;margin:14px 0 4px;padding:15px 17px;border-radius:12px; background:var(--tint-warn,#fdf0e0);border:1px solid var(--bd-warn,#f6dcb8)} .exec-locked b{font-size:14px;color:var(--navy)} .exec-locked > div > span{display:block;font-size:12.5px;color:var(--slate);margin-top:3px;line-height:1.5} .exec-req{margin:10px 0 6px;padding-left:20px;display:flex;flex-direction:column;gap:6px} .exec-req li{font-size:12.5px;color:var(--slate);line-height:1.45} .exec-req li b{color:var(--navy)} .exec-req-foot{font-size:11.5px;color:var(--slate-2);font-style:italic} .exec-ready{display:flex;align-items:flex-start;gap:10px;margin-top:14px;padding:12px 14px;border-radius:11px; background:var(--accent-soft);border:1px solid var(--accent-line)} .exec-ready b{font-size:12.5px;color:var(--navy)} .exec-ready span{display:block;font-size:11.5px;color:var(--slate);margin-top:2px} .asb-click{cursor:pointer;border-radius:9px} .asb-click:hover{background:var(--surface)} .asb-caret{font-size:9px;opacity:.4;margin-left:1px} /* ===== Per-position breakdown (Monitor) ===== */ .mon-card{border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:10px} .mon-card .mon-row{border:0;border-radius:0;margin:0} .mon-pos{background:var(--surface-2);border-top:1px solid var(--line);padding:4px 14px} .mon-posrow{display:flex;align-items:center;gap:12px;padding:6px 0;font-size:12px;border-bottom:1px dashed var(--line)} .mon-posrow:last-child{border-bottom:0} .mp-sym{font-weight:700;color:var(--navy);min-width:96px} .mp-q{color:var(--slate);min-width:58px} .mp-x{color:var(--slate);font-size:11.5px} .mp-pnl{margin-left:auto} /* ===== Header live regime-engine stats ===== */ .hdr-engine{display:flex;align-items:center;gap:12px;padding:5px 14px;margin-left:6px;border-radius:11px; background:var(--surface-2);border:1px solid var(--line)} .he-stat{display:flex;flex-direction:column;gap:1px;line-height:1.1} .he-stat.off{flex-direction:row;align-items:center;gap:6px;font-size:11px;color:var(--slate-2)} .he-l{display:inline-flex;align-items:center;gap:5px;font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--slate-2)} .he-stat b.num{font-size:14px;font-weight:800} .he-live{font-size:7.5px;font-weight:800;color:#00803b;background:rgba(0,171,78,.14);padding:1px 4px;border-radius:4px;letter-spacing:.2px} .he-div{width:1px;height:22px;background:var(--line)} /* (engine readout moved to the ticker row; small-screen handling is the ticker wrap at ≤1080) */ /* ===== Collapsible regime band ===== */ .regime-bar.collapsed{padding:0;border:0;background:transparent;min-height:0;box-shadow:none} .rb-toggle{display:inline-flex;align-items:center;gap:10px;width:100%;cursor:pointer;border:1px solid var(--line); background:var(--surface-2);border-radius:11px;padding:7px 14px;font:inherit;text-align:left} .rb-toggle:hover{border-color:var(--line-2)} .rb-toggle b{font-size:13px;color:var(--navy)} .rb-mini-ic{display:inline-flex;width:22px;height:22px;align-items:center;justify-content:center;border-radius:6px;flex:none} .rb-mini-kick{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--slate-2)} .rb-chev{margin-left:auto;font-size:11px;opacity:.5} .rb-toggle.mini{width:auto;flex:none;border:1px solid var(--line);background:var(--surface-2); border-radius:8px;padding:5px 10px;gap:6px;align-self:flex-start; font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--slate-2)} .rb-toggle.mini:hover{border-color:var(--line-2);color:var(--navy)} .regime-bar:not(.collapsed){position:relative} /* watchlist cells with no live quote (honest blank, never stale mock) */ .wl-ltp.muted,.wl-chg.muted{color:var(--slate-2);font-weight:600} .empty-state code{font-family:var(--mono);background:rgba(0,0,0,.05);padding:1px 5px;border-radius:4px} /* real-time tick flash on watchlist price cells (WebSocket-driven) */ @keyframes tickUp{0%{background:rgba(0,171,78,.32)}100%{background:transparent}} @keyframes tickDn{0%{background:rgba(229,57,53,.30)}100%{background:transparent}} .wl-ltp.tick-up,.tix-val.tick-up{animation:tickUp .5s ease-out} .wl-ltp.tick-dn,.tix-val.tick-dn{animation:tickDn .5s ease-out} /* ============================================================ HEADER POLISH: UX pass (2026-06-29) One calm, aligned control band: a single 34px control height, consistent radius + transitions, crisp keyboard focus rings, subtle depth on hover, and no text wrapping. All token-based so day/night adapt automatically. ============================================================ */ :root{ --ctl-h:34px; --ctl-r:10px; } /* ---- the bar: a touch more polish on the hairline + elevation ---- */ .topbar{gap:12px;padding:9px 18px; box-shadow:0 1px 0 var(--line), 0 10px 30px -24px rgba(16,30,54,.55)} /* ---- brand: tighter lockup + a living "connected" status dot ---- */ .tb-brand{gap:11px} .brand-logo{height:27px} .brand-pro{padding-left:12px;font-size:15.5px;letter-spacing:-.35px;border-left-color:var(--line)} .brand-pro::after{width:7px;height:7px;margin-left:9px;box-shadow:0 0 0 3px var(--accent-soft);animation:pulse 2.6s infinite} /* ---- market status: one calm single line that never wraps ---- */ .mkt-status{gap:9px;white-space:nowrap;flex:0 0 auto;padding:0 2px} .mkt-status>*{white-space:nowrap} .mkt-live{font-size:9.5px;letter-spacing:.7px} .mkt-sess{font-size:10.5px;color:var(--slate-2);font-weight:600} .mkt-time{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--navy); font-variant-numeric:tabular-nums;border-left:1px solid var(--line-2);padding-left:9px} /* ---- engine stat card: crisper hierarchy, soft depth, refined LIVE pill ---- */ .hdr-engine{gap:14px;padding:5px 15px;border-radius:12px; background:linear-gradient(180deg,var(--surface),var(--surface-2)); box-shadow:var(--shadow);transition:border-color .2s, box-shadow .2s} .hdr-engine:hover{border-color:var(--line-2)} .he-stat b.num{font-size:14.5px;letter-spacing:-.3px} .he-live{font-size:7.5px;border-radius:5px;box-shadow:0 0 0 2px rgba(0,171,78,.08)} .he-div{height:24px;background:var(--line)} /* ---- search: aligned height, roomy, ringed focus ---- */ .search{height:var(--ctl-h);border-radius:var(--ctl-r);padding:0 12px;gap:9px; transition:border-color .16s, box-shadow .16s, background .16s} .search:focus-within{box-shadow:var(--ring);border-color:var(--accent)} .search input::placeholder{color:var(--slate-2)} .search kbd{transition:.16s} .search:focus-within kbd{border-color:var(--accent-line);color:var(--accent-d)} /* ---- regime segmented control + AUTO pill: matched heights ---- */ .regime-control{gap:8px} .seg{height:var(--ctl-h);box-sizing:border-box;padding:3px;border-radius:var(--ctl-r);align-items:center} .seg-btn{height:100%;padding:0 12px;border-radius:8px;font-size:12.5px} .seg-btn:focus-visible{outline:none;box-shadow:var(--ring)} .auto-pill{height:var(--ctl-h);box-sizing:border-box;border-radius:var(--ctl-r);padding:0 12px;font-size:12px} .auto-pill:focus-visible{outline:none;box-shadow:var(--ring)} /* ---- icon buttons: square, consistent, tactile ---- */ .surface-toggle,.engine-btn.icon-only{width:var(--ctl-h);height:var(--ctl-h);border-radius:var(--ctl-r)} .widget-btn{height:var(--ctl-h);box-sizing:border-box;border-radius:var(--ctl-r);padding:0 12px} .surface-toggle:hover,.engine-btn:hover,.widget-btn:hover{transform:translateY(-1px)} .surface-toggle:active,.engine-btn:active,.widget-btn:active{transform:translateY(0)} .surface-toggle:focus-visible,.engine-btn:focus-visible,.widget-btn:focus-visible{outline:none;box-shadow:var(--ring)} /* ---- plan chip: premium, aligned, tactile ---- */ .plan-chip{height:var(--ctl-h);box-sizing:border-box;border-radius:var(--ctl-r);padding:0 13px;font-size:12px; transition:filter .15s, transform .15s, box-shadow .15s} .plan-chip:hover{filter:brightness(1.05);transform:translateY(-1px);box-shadow:0 6px 16px -8px var(--accent-line)} .plan-chip:focus-visible{outline:none;box-shadow:var(--ring)} /* ---- funds chip: clearer label/value hierarchy ---- */ .funds-chip{padding-left:12px;border-left:1px solid var(--line);white-space:nowrap} .funds-chip span{font-size:9px;letter-spacing:.3px;text-transform:uppercase;color:var(--slate-2);font-weight:700} .funds-chip b{font-size:13.5px;letter-spacing:-.3px;color:var(--navy)} /* ---- profile avatar: aligned, tactile, focusable (background left to theme) ---- */ .profile{width:var(--ctl-h);height:var(--ctl-h);border-radius:10px;cursor:pointer; transition:transform .15s, box-shadow .15s} .profile:hover{transform:translateY(-1px);box-shadow:0 6px 16px -8px rgba(16,30,54,.5)} .profile:focus-visible{outline:none;box-shadow:var(--ring)} /* ============================================================ MARKET-PULSE STRIP: live VIX / breadth / engine + session clock RELOCATED into the ticker row (they were crowding the top bar). The top bar now carries only identity · search · controls · account, so it fits one clean row at every width, and NOTHING is hidden; the metrics simply live in the data row where they belong, beside the scrolling index tape. ============================================================ */ /* ticker row layout: scrolling tape (flexes) · market pulse · gear */ .ticker-bar{gap:0;min-height:34px} .tb-market{display:flex;align-items:center;gap:12px;flex:0 0 auto; padding:0 2px 0 14px;margin-left:auto;white-space:nowrap} .tb-market::before{content:"";width:1px;height:18px;background:var(--line);margin-right:14px} /* divide tape | pulse */ .tb-mdiv{width:1px;height:18px;background:var(--line);flex:0 0 auto} /* market status: compact inline for the slim data row */ .ticker-bar .mkt-status{gap:8px;padding:0;background:none;border:0;flex:0 0 auto} .ticker-bar .mkt-dot{width:7px;height:7px} .ticker-bar .mkt-live{font-size:9px;font-weight:800;letter-spacing:.6px} .ticker-bar .mkt-sess{font-size:10px;color:var(--slate-2);font-weight:600} .ticker-bar .mkt-time{font-family:var(--mono);font-size:11.5px;font-weight:600;color:var(--navy); font-variant-numeric:tabular-nums;border-left:1px solid var(--line-2);padding-left:8px} /* engine readout: flatten the card into an inline stat strip */ .ticker-bar .hdr-engine{background:none;border:0;box-shadow:none;padding:0;margin:0;gap:12px;border-radius:0} .ticker-bar .he-stat{flex-direction:row;align-items:baseline;gap:5px} .ticker-bar .he-l{font-size:9px} .ticker-bar .he-stat b.num{font-size:12.5px;letter-spacing:-.2px} .ticker-bar .he-live{font-size:7.5px} .ticker-bar .he-div{height:16px} /* the top bar is now light: one calm row, slightly tighter gap */ .topbar{gap:12px} /* small screens: the ticker row wraps so tape + pulse stack cleanly, everything stays visible (nothing hidden), just on its own line */ @media (max-width:1080px){ .ticker-bar{flex-wrap:wrap;padding-bottom:0} .tb-viewport{order:1;flex:1 1 auto} .tb-gear{order:1} .tb-market{order:2;flex:1 1 100%;margin-left:0;justify-content:flex-start; padding:5px 4px;border-top:1px solid var(--line);overflow-x:auto;scrollbar-width:none} .tb-market::before{display:none} } /* The top bar is now light (market pulse moved to the ticker row), so it fits one clean row far below the old 1240 wrap point. Keep it single-row down to ~1040px; only genuinely small screens wrap (search → its own row, then tools). */ @media (min-width:1041px){ .topbar{flex-wrap:nowrap} .tb-spacer{display:block;flex:1 1 auto} .search{order:0;flex:0 1 300px;min-width:180px;max-width:360px} .topbar-right{order:0;flex:0 0 auto;width:auto;flex-wrap:nowrap;margin-left:0} .regime-control{flex:0 0 auto;justify-content:flex-start} } /* ===== Algo Studio · Accuracy tab, backtest edge vs live forward results ===== */ .acc-list{display:flex;flex-direction:column;gap:12px;margin-top:14px} .acc-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow);transition:box-shadow .2s,border-color .2s} .acc-card:hover{box-shadow:var(--shadow-hover);border-color:var(--line-2)} .acc-card.cand{opacity:.84} .acc-h{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px} .acc-h b{font-size:14px;color:var(--navy);display:inline-flex;align-items:center;gap:5px} .acc-cat{display:block;font-size:11px;color:var(--slate);margin-top:2px} .acc-badge{flex:0 0 auto;font-size:10.5px;font-weight:800;letter-spacing:.2px;padding:4px 11px;border-radius:20px;white-space:nowrap} .acc-badge.ok{background:var(--accent-soft);color:var(--accent-d)} .acc-badge.warn{background:var(--tint-warn);color:var(--amber)} .acc-badge.bad{background:var(--tint-down);color:var(--red-d)} .acc-badge.early{background:var(--surface-2);color:var(--slate);border:1px solid var(--line)} .acc-badge.cand{background:var(--surface-2);color:var(--slate-2);border:1px solid var(--line)} .acc-cmp{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:4px} .acc-metric{display:flex;flex-direction:column;gap:5px} .acc-metric span{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2)} .acc-metric>b{font-size:19px;letter-spacing:-.5px;line-height:1} .acc-bar{height:5px;border-radius:3px;background:var(--surface-2);overflow:hidden} .acc-bar i{display:block;height:100%;border-radius:3px;transition:width .3s ease} .acc-bar i.bt{background:var(--slate-2)} .acc-bar i.fw{background:linear-gradient(90deg,var(--accent),var(--accent-d))} .acc-q{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:12px 0 2px;margin-top:12px;border-top:1px solid var(--line)} .acc-q>div{display:flex;flex-direction:column;gap:3px} .acc-q span{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2);display:inline-flex;align-items:center;gap:4px} .acc-q b{font-size:15px;letter-spacing:-.3px} .acc-card .rg-head{margin-top:12px} .acc-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:11px;padding-top:11px;border-top:1px solid var(--line)} .acc-foot span{font-size:11.5px;color:var(--slate)} @media(max-width:760px){.acc-cmp{grid-template-columns:1fr}.acc-q{grid-template-columns:1fr 1fr}} /* ===== Monitor accordion: click a strategy to reveal its positions + forward accuracy ===== */ .av-scroll{scroll-behavior:smooth;overscroll-behavior:contain} .mon-head{cursor:pointer;user-select:none} .mon-head .mon-ctrls{display:flex;align-items:center;gap:9px} .mon-chev{display:inline-flex;font-size:11px;color:var(--slate-2);transition:transform .25s ease;line-height:1} .mon-card.open .mon-chev{transform:rotate(180deg);color:var(--accent-d)} .mon-card .mon-exp{max-height:0;overflow:hidden;transition:max-height .3s ease} .mon-card.open .mon-exp{max-height:640px} .mon-head:focus-visible{outline:none;box-shadow:var(--ring)} .mon-head:hover{background:var(--surface-2)} .mon-acc{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11.5px;color:var(--slate);padding:10px 14px;border-top:1px solid var(--line);background:var(--surface-2)} .mon-acc>span{font-weight:700;text-transform:uppercase;font-size:9.5px;letter-spacing:.3px;color:var(--slate-2)} .mon-acc b{font-weight:800} .mon-acc i{font-style:normal;color:var(--line-2)} .mon-acc-link{margin-left:auto;color:var(--accent-d);font-weight:700;cursor:pointer;white-space:nowrap} .mon-acc-link:hover{text-decoration:underline} .mon-exp-empty{padding:11px 14px;font-size:11.5px;color:var(--slate-2);background:var(--surface-2);border-top:1px solid var(--line)} /* ===== Strategy lifecycle: Deploy → prove → Go Live → Pause/Stop ===== */ .lc-chip{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:800;padding:2px 9px;border-radius:999px;letter-spacing:.2px} .lc-chip.paper{background:rgba(0,171,78,.13);color:#00803b} .lc-chip.paused{background:rgba(154,106,0,.15);color:#9a6a00} .lc-chip.live{background:rgba(229,57,53,.14);color:#c62828} .lc-cta{margin-top:13px} .btn-primary.wide{width:100%;justify-content:center} .lc-free{display:block;text-align:center;font-size:11px;color:var(--slate);margin-top:6px} .lc-row{display:flex;gap:8px;align-items:center;margin-top:10px} .lc-row .btn-ghost{flex:1 1 auto;justify-content:center} .lc-prog{margin-bottom:10px} .lc-prog-h{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--slate);margin-bottom:5px;font-weight:600} .lc-prog-n{font-variant-numeric:tabular-nums;color:var(--navy);font-weight:800} .lc-bar{height:6px;border-radius:999px;background:rgba(0,0,0,.07);overflow:hidden} .lc-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#00ab4e,#36c275);transition:width .45s ease} .lc-note{display:flex;gap:7px;align-items:flex-start;font-size:11.5px;color:var(--slate);background:rgba(0,0,0,.03);padding:9px 11px;border-radius:9px} .btn-go.is-locked{opacity:.55;filter:grayscale(.35);cursor:not-allowed} .algo-card.is-deployed{border-color:rgba(0,171,78,.32)} .algo-card.is-live{border-color:rgba(229,57,53,.4)} /* ===== Algo Studio · Analytics tab, portfolio intelligence ===== */ .an-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow);margin-top:13px} .an-h{display:flex;align-items:center;gap:8px;margin-bottom:11px;color:var(--navy)} .an-h .ico{color:var(--accent-d)} .an-h b{font-size:13.5px} .an-h>span{font-size:11px;color:var(--slate);font-weight:500} .an-h .an-export{margin-left:auto} .an-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px} .an-rows{display:flex;flex-direction:column;gap:9px} .an-row{display:grid;grid-template-columns:118px 1fr auto auto;gap:10px;align-items:center} .an-nm{font-size:12px;font-weight:600;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .an-nm.sym{font-family:var(--mono);font-size:11.5px} .an-track{height:7px;border-radius:4px;background:var(--surface-2);overflow:hidden} .an-track i{display:block;height:100%;border-radius:4px;transition:width .3s ease} .an-track i.pos{background:linear-gradient(90deg,var(--green),var(--green-d))} .an-track i.neg{background:linear-gradient(90deg,#f0888a,var(--red))} .an-row>b.num{font-size:12.5px;text-align:right;min-width:60px} .an-sub{font-size:10px;color:var(--slate-2);white-space:nowrap;min-width:78px;text-align:right} .an-hours{display:flex;align-items:flex-end;gap:8px;height:86px;padding-top:4px} .an-hr{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;height:100%;justify-content:flex-end} .an-hr i{width:100%;max-width:36px;border-radius:4px 4px 0 0;background:var(--line-2);min-height:2px;transition:height .3s ease} .an-hr i.on{background:linear-gradient(180deg,var(--accent),var(--accent-d))} .an-hr span{font-size:9.5px;color:var(--slate-2);font-family:var(--mono)} .an-split{display:flex;height:30px;border-radius:8px;overflow:hidden;background:var(--surface-2);font-size:12px;font-weight:800;color:#fff} .an-split i{display:flex;align-items:center;justify-content:center;min-width:0;transition:width .3s ease} .an-split i.w{background:var(--green)} .an-split i.l{background:var(--red)} .an-note{margin-top:10px;font-size:11px;color:var(--slate);display:flex;align-items:center;gap:6px} .an-ins{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px} .an-ins li{font-size:12.5px;color:var(--navy);padding-left:17px;position:relative;line-height:1.4} .an-ins li::before{content:"→";position:absolute;left:0;color:var(--accent-d);font-weight:800} .an-insights{background:linear-gradient(180deg,var(--accent-soft),var(--surface))} .an-tbl{width:100%;margin-top:2px} .an-tbl th{font-size:9.5px} .an-empty{font-size:12px;color:var(--slate-2);padding:6px 0} @media(max-width:820px){.an-grid{grid-template-columns:1fr}.an-row{grid-template-columns:88px 1fr auto}.an-row .an-sub{display:none}} /* ===== My Strategies bar (deployed portfolio + global stop) ===== */ .mystrat{background:var(--surface-2,#f6f8fa);border:1px solid var(--line,#e6e9ee);border-radius:12px;padding:11px 13px;margin-bottom:12px} .mystrat.empty{display:flex;align-items:center;gap:8px;color:var(--slate);font-size:12.5px} .ms-head{display:flex;align-items:center;gap:10px;margin-bottom:9px} .ms-head>b{display:inline-flex;align-items:center;gap:6px;font-size:13px} .ms-sum{font-size:11.5px;color:var(--slate);margin-left:2px} .ms-sum .lc-live-txt{color:#c62828} .ms-head [data-stopall]{margin-left:auto} .ms-chips{display:flex;flex-wrap:wrap;gap:7px} .ms-chip{display:inline-flex;align-items:center;gap:7px;background:var(--surface,#fff);border:1px solid var(--line,#e6e9ee);border-radius:999px;padding:4px 6px 4px 11px;font-size:12px} .ms-chip>b{font-weight:700} .ms-chip .ms-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto} .ms-chip.paper .ms-dot{background:#00ab4e} .ms-chip.paused .ms-dot{background:#9a6a00} .ms-chip.live .ms-dot{background:#e53935} .ms-pnl{font-size:11.5px} .ms-x{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:none;background:transparent;color:var(--slate);cursor:pointer} .ms-x:hover{background:rgba(229,57,53,.12);color:#c62828} /* compact go-live progress on each chip (folded in from the old nudge build banner) */ .ms-prog{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;color:var(--slate);font-variant-numeric:tabular-nums;white-space:nowrap} .ms-mini{display:inline-block;width:26px;height:4px;border-radius:99px;background:rgba(15,26,42,.12);overflow:hidden} .ms-mini b{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#1667d9,#3f8ae0)} .ms-prog.ready{color:#00803b} /* ---- one-click paper-engine (harness) control ---- */ .harness-cta{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:6px} .harness-start{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;padding:10px 20px} .harness-hint{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--slate);margin:0;line-height:1.45} .harness-hint svg{flex:0 0 auto;color:var(--green)} .harness-on{display:flex;align-items:center;gap:9px;background:color-mix(in srgb,var(--green) 9%,var(--surface)); border:1px solid color-mix(in srgb,var(--green) 35%,var(--line-2));border-radius:11px;padding:10px 13px;margin-bottom:12px} .harness-on>svg{flex:0 0 auto;color:var(--green)} .harness-on span{flex:1;font-size:12px;color:var(--navy);line-height:1.45} .harness-on b{color:var(--green-d)} /* Analytics · risk & quality metric grid */ .an-q{display:grid;grid-template-columns:repeat(4,1fr);gap:11px 12px} .an-q>div{display:flex;flex-direction:column;gap:3px} .an-q span{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2);display:inline-flex;align-items:center;gap:4px} .an-q b{font-size:15px;letter-spacing:-.3px} @media(max-width:820px){.an-q{grid-template-columns:1fr 1fr}} /* ===== Backtest proof pack: benchmark overlay, drawdown, monthly heatmap, universe selector ===== */ .eq-bench{fill:none;stroke:var(--slate);stroke-width:1.4;stroke-dasharray:4 3;opacity:.7;vector-effect:non-scaling-stroke} .bt-uni{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:0 0 12px} .bt-unil{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--slate)} .bt-unitabs{display:inline-flex;border:1px solid var(--line-2);border-radius:9px;overflow:hidden} .bt-unitab{border:none;background:var(--surface);color:var(--slate);font-size:12px;font-weight:600;padding:6px 12px;cursor:pointer;font-family:var(--sans);border-right:1px solid var(--line-2)} .bt-unitab:last-child{border-right:none} .bt-unitab.on{background:var(--accent-soft);color:var(--accent-d)} .bt-unitab:disabled{opacity:.45;cursor:not-allowed} .bt-unicustom{flex:1;min-width:170px;border:1px solid var(--line-2);border-radius:9px;padding:6px 10px;font-size:12px;font-family:var(--mono);background:var(--surface);color:var(--navy)} .bt-unitag{display:inline-block;font-size:11px;color:var(--slate);background:var(--surface-2);border:1px solid var(--line-2);border-radius:7px;padding:3px 9px;margin:-6px 0 12px;font-family:var(--mono)} .bt-bench,.bt-dd,.bt-monthly{background:var(--surface);border:1px solid var(--line-2);border-radius:12px;padding:13px 14px;margin-bottom:12px} .bt-bgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:4px 0 2px} .bt-bc{display:flex;flex-direction:column;gap:2px} .bt-bc>span{font-size:10.5px;color:var(--slate);display:flex;align-items:center;gap:3px} .bt-bc>b{font-size:16px} .bt-bverdict{display:flex;align-items:flex-start;gap:6px;font-size:11.5px;line-height:1.45;margin:8px 0 0;padding-top:9px;border-top:1px dashed var(--line-2);color:var(--slate)} .bt-bverdict.ok{color:var(--green-d)} .bt-bverdict.warn{color:var(--amber)} .bt-bverdict svg{flex:0 0 auto;margin-top:1px} .dd-svg{display:block;width:100%;margin:6px 0 2px;overflow:visible} .dd-area{fill:color-mix(in srgb,var(--red) 16%,transparent)} .dd-line{fill:none;stroke:var(--red);stroke-width:1.4;vector-effect:non-scaling-stroke} .bt-ddcap{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--slate);margin:4px 0 0;line-height:1.4} .bt-ddcap svg{flex:0 0 auto} .mh-scroll{overflow-x:auto} .mh-tbl{border-collapse:collapse;width:100%;margin-top:4px} .mh-tbl th{font-size:9.5px;font-weight:600;color:var(--slate);padding:2px 0;text-align:center} .mh-y{font-size:10.5px;font-weight:700;color:var(--navy);padding-right:8px;white-space:nowrap} .mh-cell{text-align:center;font-size:10px;font-weight:600;color:var(--navy);padding:5px 4px;border-radius:4px;min-width:26px} .mh-na{background:var(--surface-2)!important;color:transparent} @media(max-width:820px){.bt-bgrid{grid-template-columns:1fr 1fr}} /* ===== Monitor risk & safety panel ===== */ .risk-panel{background:var(--surface);border:1px solid var(--line-2);border-radius:12px;padding:12px 14px;margin-bottom:13px} .rp-h{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;color:var(--navy);margin-bottom:10px} .rp-h svg{color:var(--accent-d)} .rp-live{margin-left:auto;font-size:9.5px;font-weight:700;letter-spacing:.4px;color:var(--green-d)} .rp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:11px} .rp-c{display:flex;flex-direction:column;gap:3px} .rp-c>span{font-size:10px;color:var(--slate);display:flex;align-items:center;gap:3px;line-height:1.3} .rp-c>b{font-size:16px} .rp-c>i{font-size:10px;color:var(--slate);font-style:normal} .rp-bar{height:5px;border-radius:3px;background:var(--surface-2);overflow:hidden;margin-top:2px} .rp-bar>i{display:block;height:100%;background:var(--green);border-radius:3px;transition:width .3s} .rp-bar>i.hot{background:var(--amber)} .rp-kill>b{font-size:14px} .rp-kill.safe>b{color:var(--green-d)} .rp-kill.armed>b{color:var(--red-d)} .rp-kill.armed{background:color-mix(in srgb,var(--red) 7%,transparent);border-radius:8px;margin:-4px -6px;padding:4px 6px} @media(max-width:820px){.rp-grid{grid-template-columns:1fr 1fr}} /* ===== Algo Studio funnel guide (first-run) ===== */ .funnel-guide{position:relative;background:linear-gradient(135deg,var(--accent-soft),var(--surface));border:1px solid var(--line-2);border-radius:13px;padding:13px 15px;margin-bottom:14px} .fg-x{position:absolute;top:9px;right:9px;border:none;background:transparent;color:var(--slate);cursor:pointer;padding:3px;border-radius:6px;line-height:0} .fg-x:hover{background:var(--surface-2);color:var(--navy)} .fg-h{display:flex;align-items:center;gap:8px;margin-bottom:11px} .fg-h svg{color:var(--accent-d)} .fg-h b{font-size:13.5px;color:var(--navy)} .fg-h span{font-size:11.5px;color:var(--slate)} .fg-steps{display:flex;align-items:stretch;gap:6px;flex-wrap:wrap} .fg-step{flex:1;min-width:130px;display:flex;flex-direction:column;gap:3px;background:var(--surface);border:1px solid var(--line-2);border-radius:10px;padding:9px 11px} .fg-ic{display:inline-flex;color:var(--accent-d)} .fg-step b{font-size:11.5px;color:var(--navy)} .fg-step span{font-size:10.5px;color:var(--slate);line-height:1.4} .fg-arrow{display:flex;align-items:center;color:var(--slate);font-weight:700;font-size:13px} @media(max-width:820px){.fg-arrow{display:none}.fg-step{min-width:46%}} .bt-fresh{opacity:.7;font-style:italic} /* ===== Stopped-strategies panel (archived stop-out liquidations, Monitor › paper) ===== */ .stopped-panel{margin-top:12px;border:1px solid var(--line);border-radius:10px;background:var(--card-2,#fafafa);overflow:hidden} .stopped-panel>summary{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;font-weight:700;font-size:12.5px;color:var(--navy);list-style:none} .stopped-panel>summary::-webkit-details-marker{display:none} .stopped-panel>summary::after{content:'▾';margin-left:auto;color:var(--slate-2);font-size:11px} .stopped-panel[open]>summary::after{content:'▴'} .stopped-panel .st-n{font-style:normal;font-size:10px;font-weight:800;background:var(--slate);color:#fff;border-radius:999px;padding:1px 6px;min-width:16px;text-align:center} .stopped-panel .st-sum{margin-left:auto;font-weight:500;font-size:11px;color:var(--slate-2)} .stopped-panel[open]>summary .st-sum{display:none} .st-body{border-top:1px solid var(--line);padding:4px 12px 10px} .st-row{padding:9px 0;border-bottom:1px dashed var(--line)} .st-row:last-child{border-bottom:none} .st-head{display:flex;align-items:baseline;gap:8px} .st-head>b:first-child{font-size:12.5px;color:var(--navy)} .st-meta{font-size:10.5px;color:var(--slate-2)} .st-pnl{margin-left:auto;font-size:12.5px} .st-pos-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px} .st-pos{font-size:10.5px;color:var(--slate);background:var(--chip,#f0f0f3);border-radius:5px;padding:2px 7px} .st-pos b{color:var(--navy);font-weight:700} .st-pos i{font-style:normal;margin-left:3px} /* ===== per-card capital + risk + style line ===== */ .algo-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:2px 0 9px} .algo-meta .mt-cap,.algo-meta .mt-risk{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--slate);white-space:nowrap} .algo-meta .mt-cap b{color:var(--navy);font-weight:800} .algo-meta .mt-cap svg,.algo-meta .mt-risk svg{opacity:.6} .algo-meta .mt-risk{padding-left:8px;border-left:1px solid var(--line)} .sty-chip{font-size:9.5px;font-weight:800;letter-spacing:.3px;text-transform:uppercase;border-radius:5px;padding:2px 7px;border:1px solid transparent} .sty-trend{color:#1769aa;background:#e8f2fb;border-color:#cfe6f8} .sty-reversion{color:#8a5a00;background:#fdf3e0;border-color:#f6e2bf} .sty-relativevalue{color:#5a3da6;background:#efeafc;border-color:#ddd2f7} .sty-carry{color:#1f7a4d;background:#e6f6ee;border-color:#cfeede} .sty-defensive{color:#475569;background:#eef1f5;border-color:#dde3ea} /* ===== Strategy Framework band (regime switch) ===== */ .fw-band{margin:10px 0 4px;border:1px solid var(--line);border-radius:12px;background:linear-gradient(180deg,var(--surface-2),var(--surface));padding:12px 14px} .fw-head{display:flex;align-items:center;gap:10px;margin-bottom:10px} .fw-head>div{display:flex;flex-direction:column;gap:1px} .fw-head b{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--navy)} .fw-head span{font-size:11px;color:var(--slate-2)} .fw-regime{margin-left:auto;font-size:11px;font-weight:800;color:var(--accent-d);background:var(--accent-soft);border-radius:999px;padding:3px 10px;white-space:nowrap} .fw-styles{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:11px} @media(max-width:760px){.fw-styles{grid-template-columns:repeat(2,1fr)}} .fw-sty{border:1px solid var(--line);border-radius:9px;padding:8px 9px;background:var(--surface);position:relative} .fw-sty b{display:block;font-size:11.5px;color:var(--navy)} .fw-sty i{font-style:normal;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2)} .fw-sty .fw-sty-n{position:absolute;top:7px;right:8px;font-size:9px;font-weight:800;color:var(--slate);background:var(--chip,#f0f0f3);border-radius:999px;padding:1px 6px} .fw-sty.favored{border-color:var(--accent-line);background:color-mix(in srgb, var(--accent) 12%, var(--surface))}.fw-sty.favored i{color:var(--accent-d)} .fw-sty.avoid{background:var(--surface-2);opacity:.72}.fw-sty.avoid i{color:var(--amber,#b06a2e)} .fw-rec-h{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--slate-2);margin-bottom:7px} .fw-rec-h span{font-weight:600;text-transform:none;letter-spacing:0;color:var(--slate)} .fw-rec-grid{display:flex;flex-wrap:wrap;gap:8px} .fw-rec-card{flex:1 1 180px;text-align:left;border:1px solid var(--line);border-radius:9px;background:var(--surface);padding:9px 11px;cursor:pointer;font-family:var(--sans);display:flex;flex-direction:column;gap:4px;transition:border-color .12s,box-shadow .12s} .fw-rec-card:hover{border-color:var(--accent);box-shadow:0 2px 8px rgba(0,0,0,.06)} .fw-rc-top{display:flex;align-items:center;gap:7px} .fw-rc-top b{font-size:12px;color:var(--navy)} .fw-rc-alloc{font-size:14px;color:var(--navy)}.fw-rc-alloc b{font-size:16px;color:var(--accent-d)} .fw-rc-min{font-size:10px;color:var(--slate-2)} .fw-rec-empty{display:flex;align-items:flex-start;gap:7px;font-size:11.5px;color:var(--slate);background:var(--surface);border:1px dashed var(--line);border-radius:9px;padding:9px 11px} .fw-note{display:flex;align-items:flex-start;gap:6px;margin:11px 0 0;font-size:11px;color:var(--slate-2);line-height:1.4} .fw-note b{color:var(--navy);font-weight:700} /* =================================================================== STRATEGY LIBRARY: browse / learn / filter / regime-match =================================================================== */ .lib-hero{display:flex;gap:13px;align-items:flex-start;padding:15px 17px;border-radius:14px; background:linear-gradient(135deg,var(--accent-soft),var(--surface));border:1px solid var(--accent-line);box-shadow:var(--shadow)} .lib-hero-ic{flex:0 0 auto;width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--surface);color:var(--green-d);box-shadow:var(--shadow)} .lib-hero-tx{display:flex;flex-direction:column;gap:3px} .lib-hero-tx b{font-size:15px;color:var(--navy);font-weight:800} .lib-hero-tx span{font-size:12px;color:var(--slate);line-height:1.5} .lib-hero-tx b b{font-weight:800} /* favoured-right-now regime strip */ .lib-fav{border:1px solid var(--line);border-radius:13px;background:var(--surface);padding:13px 15px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:10px} .lib-fav.offline{flex-direction:row;align-items:flex-start;gap:9px;font-size:12px;color:var(--slate);line-height:1.5;background:var(--surface-2);border-style:dashed} .lib-fav.offline .ico{color:var(--green-d);flex:0 0 auto;margin-top:1px} .lib-fav.offline code{font-family:var(--mono);font-size:11px;background:var(--surface);border:1px solid var(--line);border-radius:5px;padding:1px 5px} .lib-fav-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap} .lib-live{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--navy)} .lib-live b{color:var(--green-d);font-weight:800} .live-dot{width:7px;height:7px;border-radius:50%;background:var(--slate-2);display:inline-block} .live-dot.live{background:var(--green);box-shadow:0 0 0 3px rgba(0,171,78,.18);animation:libpulse 2s infinite} @keyframes libpulse{0%,100%{box-shadow:0 0 0 3px rgba(0,171,78,.18)}50%{box-shadow:0 0 0 5px rgba(0,171,78,.06)}} .lib-fav-sub{font-size:11.5px;color:var(--slate);display:inline-flex;align-items:center;gap:3px} .lib-fav-btn{margin-left:auto;display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--blue); background:rgba(22,103,217,.08);border:1px solid rgba(22,103,217,.22);border-radius:999px;padding:4px 11px;cursor:pointer;transition:.15s} .lib-fav-btn:hover{background:rgba(22,103,217,.14)} .lib-fav-btn.on{background:var(--green);color:#fff;border-color:var(--green)} .lib-fav-pills{display:flex;flex-wrap:wrap;gap:7px} .lib-fav-pill{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--green-d); background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:999px;padding:4px 11px;cursor:pointer;transition:.15s} .lib-fav-pill:hover{background:var(--surface);box-shadow:var(--shadow)} .lib-fav-warn{display:flex;align-items:flex-start;gap:6px;margin:0;font-size:11.5px;color:var(--amber);line-height:1.45; background:var(--tint-warn);border:1px solid var(--bd-warn);border-radius:9px;padding:7px 10px} .lib-fav-warn .ico{flex:0 0 auto;margin-top:1px} .lib-fav-warn b{color:var(--navy)} /* filters */ .lib-filters{display:flex;flex-direction:column;gap:10px} .lib-search{position:relative;display:flex;align-items:center} .lib-search-ic{position:absolute;left:12px;color:var(--slate-2);display:flex} .lib-search-in{width:100%;font-family:var(--sans);font-size:13px;color:var(--navy);background:var(--surface); border:1px solid var(--line-2);border-radius:11px;padding:10px 12px 10px 34px;outline:none;transition:.15s} .lib-search-in:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--accent-soft)} .lib-chiprow{display:flex;flex-wrap:wrap;gap:7px} .lib-chip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--slate); background:var(--surface);border:1px solid var(--line-2);border-radius:999px;padding:5px 11px;cursor:pointer;transition:.15s} .lib-chip .ico{color:var(--slate-2)} .lib-chip i{font-style:normal;font-size:10px;font-weight:800;color:var(--slate-2);background:var(--surface-2);border-radius:999px;padding:0 5px;min-width:16px;text-align:center} .lib-chip:hover{border-color:var(--green);color:var(--navy)} .lib-chip.on{background:var(--navy);color:#fff;border-color:var(--navy)} .lib-chip.on .ico,.lib-chip.on i{color:#fff;background:rgba(255,255,255,.16)} .lib-minirow{display:flex;flex-wrap:wrap;align-items:center;gap:6px} .lib-minilbl{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--slate-2);margin-left:4px} .lib-minilbl:first-child{margin-left:0} .lib-mini{font-size:11px;font-weight:700;color:var(--slate);background:var(--surface-2);border:1px solid var(--line); border-radius:8px;padding:4px 9px;cursor:pointer;transition:.15s} .lib-mini:hover{border-color:var(--green);color:var(--navy)} .lib-mini.on{background:var(--accent-soft);color:var(--green-d);border-color:var(--accent-line)} /* studio-wide scope toggle (rendered in the Algo chrome, below the tabs) */ .av-scope{display:flex;flex-direction:column;gap:10px;margin:2px 0 4px} .av-scope-empty{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;color:var(--slate);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:4px 11px;margin-bottom:10px} .av-scope-empty .ico,.av-scope-note .ico{color:var(--slate-2);flex:0 0 auto;margin-top:1px} .av-scope-note{display:flex;align-items:flex-start;gap:7px;font-size:11.5px;color:var(--slate);line-height:1.45;background:var(--surface-2);border:1px dashed var(--line-2);border-radius:10px;padding:8px 12px;margin-bottom:12px} .av-scope-note b{color:var(--navy);font-weight:700} /* Monitor: per-class + combined P&L strip */ .mon-brk{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:2px 0 12px} .mb-lead{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--slate-2)} .mb-cell{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:10px;background:var(--surface-2);border:1px solid var(--line);cursor:pointer;transition:.15s} .mb-cell:hover{border-color:var(--green)} .mb-cell:focus-visible{outline:none;box-shadow:var(--ring)} .mb-cell.on{background:var(--accent-soft);border-color:var(--accent-line)} .mb-cell i{font-style:normal;font-size:11.5px;font-weight:700;color:var(--slate)} .mb-cell.on i{color:var(--green-d)} .mb-cell b{font-size:12.5px;font-weight:800} .mb-cell.mb-all{margin-left:auto;background:var(--navy);border-color:var(--navy);cursor:default} .mb-cell.mb-all i{color:rgba(255,255,255,.72)} .mb-cell.mb-all b{color:#fff} .mb-cell.mb-all b.up{color:#5be584}.mb-cell.mb-all b.down{color:#ff9a9a} /* Night-mode fix: these "inverse" chips use background:var(--navy), but --navy flips to a LIGHT token in night mode: which washed out their white text (e.g. "Overall +₹8,424" was unreadable). Pin a dark elevated surface so the white/green text keeps its contrast in both themes. */ html[data-surface="night"] .mb-cell.mb-all, html[data-surface="night"] .lib-chip.on, html[data-surface="night"] .opp-pstep.last, html[data-surface="night"] .rk-tier.on{background:var(--white);border-color:var(--line-2)} /* deployed-capital-by-class strip (under the P&L-by-class strip) */ .mon-dep{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-4px 0 12px} .mon-dep-cell{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:10px;background:rgba(255,255,255,0.6);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,0.8);box-shadow:0 2px 8px rgba(0,0,0,0.02)} .mon-dep-cell i{font-style:normal;font-size:11px;font-weight:700;color:var(--slate)} .mon-dep-cell b{font-size:12px;font-weight:800;color:var(--navy)} .mon-dep-all{background:var(--accent-soft);border-color:var(--accent-line)} .mon-dep-all i,.mon-dep-all b{color:var(--accent-d)} .mon-dep-hint{font-size:10px;color:var(--slate-2);margin-left:2px} /* monitor sort + filter bar */ .mon-ctrl{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:2px 0 11px} .mon-seg{display:flex;align-items:center;gap:5px;flex-wrap:wrap} .msc-lead{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--slate-2);margin-right:2px} .msc-chip{border:1px solid rgba(255,255,255,0.8);background:rgba(255,255,255,0.5);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--slate);font-family:var(--sans);font-weight:700;font-size:11.5px;padding:6px 14px;border-radius:10px;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px rgba(0,0,0,0.02)} .msc-chip:hover{color:var(--navy);border-color:var(--navy);background:rgba(255,255,255,0.8);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,0.04)} .msc-chip.on{background:var(--accent);border-color:transparent;color:#fff;box-shadow:0 4px 16px color-mix(in srgb,var(--accent) 30%,transparent)} .msc-chip:focus-visible{outline:none;box-shadow:var(--ring)} .msc-count{font-size:10.5px;color:var(--slate-2);margin-left:2px} .mc-dep{font-weight:700;color:var(--slate)} .mon-clearfilt{border:0;background:none;color:var(--accent-d);font-family:var(--sans);font-weight:700;font-size:inherit;cursor:pointer;padding:0;text-decoration:underline} /* LAYER 1: instrument class (Equity / Options / Futures) */ .lib-instr{display:grid;grid-template-columns:repeat(3,1fr);gap:12px} .lib-instr-tab{display:flex;flex-direction:column;gap:5px;align-items:flex-start;text-align:left; padding:14px 16px;border-radius:14px;cursor:pointer;background:rgba(255,255,255,0.6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,0.9);box-shadow:0 8px 32px rgba(0,0,0,0.04);transition:transform 0.25s, box-shadow 0.25s, border-color 0.25s} .lib-instr-tab:hover{border-color:var(--accent-line);transform:translateY(-2px);box-shadow:0 12px 40px rgba(0,0,0,0.08)} /* active highlight: opaque accent tint (matches the hold sub-tabs; no muddy semi-transparent bleed) */ .lib-instr-tab.on{background:var(--accent-soft);border-color:var(--accent-line);box-shadow:0 4px 16px rgba(0,0,0,0.04);transform:translateY(-1px)} .lib-instr-tab:focus-visible{outline:none;box-shadow:var(--ring)} .lii-top{display:inline-flex;align-items:center;gap:7px;color:var(--navy)} .lii-top b{font-size:14.5px;font-weight:800} .lii-top .ico{color:var(--green-d)} .lii-n{font-style:normal;font-size:10px;font-weight:800;color:var(--slate-2);background:var(--surface-2);border-radius:999px;padding:1px 7px;min-width:18px;text-align:center} .lii-desc{font-size:11px;color:var(--slate);line-height:1.35} .lii-dep{font-size:10.5px;color:var(--slate-2);line-height:1.3;margin-top:1px} .lii-dep b{color:var(--navy);font-weight:700} .lib-instr-tab.on .lii-top{color:var(--accent-d)} .lib-instr-tab.on .lii-top .ico{color:var(--accent-d)} .lib-instr-tab.on .lii-desc{color:var(--accent-d);opacity:.8} .lib-instr-tab.on .lii-dep{color:var(--accent-d);opacity:.85} .lib-instr-tab.on .lii-dep b{color:var(--accent-d)} .lib-instr-tab.on .lii-n{color:#fff;background:var(--accent)} /* LAYER 2: holding style (per-instrument sub-tabs) */ .lib-hold{display:flex;flex-wrap:wrap;gap:6px} .lib-hold-tab{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:var(--slate); background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:6px 13px;cursor:pointer;transition:.15s} .lib-hold-tab:hover{border-color:var(--green);color:var(--navy)} .lib-hold-tab.on{background:var(--accent-soft);color:var(--green-d);border-color:var(--accent-line)} .lib-hold-tab:focus-visible{outline:none;box-shadow:var(--ring)} .lib-hold-tab i{font-style:normal;font-size:9.5px;font-weight:800;color:var(--slate-2);background:var(--surface);border-radius:999px;padding:0 5px;min-width:15px;text-align:center} .lib-hold-tab.on i{color:var(--green-d);background:rgba(0,171,78,.12)} @media(max-width:680px){.lib-instr{grid-template-columns:1fr}} .lib-clear{margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;color:var(--red-d); background:var(--tint-down);border:1px solid var(--bd-down);border-radius:8px;padding:4px 9px;cursor:pointer} /* card grid */ .lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:13px} .lib-card{position:relative;display:flex;flex-direction:column;gap:9px;background:var(--surface);border:1px solid var(--line); border-radius:14px;padding:14px 15px;box-shadow:var(--shadow);transition:.18s} .lib-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-1px)} .lib-card.is-fav{border-color:var(--accent-line);box-shadow:0 0 0 1px var(--accent-line),var(--shadow)} .lib-card.is-hostile{opacity:.92} .lib-card.open{box-shadow:var(--shadow-hover)} .lib-rib{display:inline-flex;align-items:center;gap:5px;align-self:flex-start;font-size:10px;font-weight:800;letter-spacing:.2px; text-transform:uppercase;padding:3px 9px;border-radius:999px;margin-bottom:1px} .lib-rib.fav{background:var(--accent-soft);color:var(--green-d)} .lib-rib.bad{background:var(--tint-warn);color:var(--amber)} .lib-h{display:flex;align-items:flex-start;justify-content:space-between;gap:10px} .lib-name{display:flex;align-items:center;gap:8px;flex-wrap:wrap} .lib-name b{font-size:14.5px;font-weight:800;color:var(--navy);line-height:1.25} .lib-meta{display:flex;flex-wrap:wrap;gap:6px} .lib-mtag{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:600;color:var(--slate); background:var(--surface-2);border:1px solid var(--line);border-radius:7px;padding:2px 7px} .lib-mtag .ico{color:var(--slate-2)} .lib-what{margin:1px 0 2px;font-size:12.5px;color:var(--navy);line-height:1.5;font-weight:500} .lib-risk{display:flex;flex-direction:column;gap:7px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:9px 11px} .lib-rl{display:flex;gap:8px;align-items:flex-start} .lib-rl .ico{flex:0 0 auto;margin-top:1px} .lib-rl.fail .ico{color:var(--red)} .lib-rl.guard .ico{color:var(--green-d)} .lib-rl b{display:block;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2);margin-bottom:1px} .lib-rl span{font-size:11.5px;color:var(--navy);line-height:1.45} .lib-learn{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;font-size:11.5px;font-weight:700;color:var(--blue); background:none;border:none;padding:2px 0;cursor:pointer;transition:.12s} .lib-learn:hover{color:var(--green-d)} .lib-detail{display:flex;flex-direction:column;gap:11px;border-top:1px solid var(--line);padding-top:11px;margin-top:1px;animation:libfade .22s ease} @keyframes libfade{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}} .lib-dl{display:flex;flex-direction:column;gap:3px} .lib-dh{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2)} .lib-dh.up{color:var(--green-d)} .lib-dh .ico{color:var(--slate-2)} .lib-dh.up .ico{color:var(--green-d)} .lib-dl p{margin:0;font-size:12px;color:var(--navy);line-height:1.5} .lib-params{display:flex;flex-wrap:wrap;gap:6px} .lib-param{font-size:10.5px;font-weight:600;color:var(--slate);background:var(--surface-2);border:1px solid var(--line);border-radius:7px;padding:2px 8px} .lib-param b{color:var(--navy);font-weight:800;font-family:var(--mono);font-size:10px} @media(max-width:640px){.lib-grid{grid-template-columns:1fr}.lib-fav-btn{margin-left:0}} /* =================================================================== OPPORTUNITY ENGINE: explainable high-conviction decision engine =================================================================== */ .opp-hero{display:flex;gap:13px;align-items:flex-start;padding:15px 17px;border-radius:14px; background:linear-gradient(135deg,rgba(22,103,217,.10),var(--surface));border:1px solid rgba(22,103,217,.28);box-shadow:var(--shadow)} .opp-hero-ic{flex:0 0 auto;width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--surface);color:var(--blue);box-shadow:var(--shadow)} .opp-hero-tx b{font-size:15px;color:var(--navy);font-weight:800} .opp-hero-tx span{display:block;font-size:12px;color:var(--slate);line-height:1.5;margin-top:3px} .opp-pipe{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 4px} .opp-pstep{font-size:10.5px;font-weight:700;color:var(--slate);background:var(--surface-2);border:1px solid var(--line-2);border-radius:7px;padding:4px 9px} .opp-pstep.last{background:var(--navy);color:#fff;border-color:var(--navy)} .opp-parrow{color:var(--slate-2);font-size:12px} .opp-life{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap; background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:13px 15px;box-shadow:var(--shadow)} .opp-life-l{display:flex;align-items:center;gap:10px;flex-wrap:wrap} .opp-life-l b{font-size:14px;color:var(--navy);font-weight:800} .opp-pnl{font-size:12px;font-weight:700;font-family:var(--mono)} .opp-pnl.up{color:var(--green-d)}.opp-pnl.down{color:var(--red-d)} .opp-gate{min-width:280px;flex:1;display:flex;flex-direction:column;gap:6px} .opp-gate-h{display:flex;justify-content:space-between;font-size:11px;color:var(--slate);font-weight:600} .opp-gate .lc-bar{height:7px;background:var(--surface-2);border-radius:999px;overflow:hidden} .opp-gate .lc-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--green),var(--green-d))} .opp-load,.opp-offline{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--slate); background:var(--surface-2);border:1px dashed var(--line-2);border-radius:11px;padding:14px 16px;line-height:1.5} .opp-load .ico,.opp-offline .ico{color:var(--blue);flex:0 0 auto} .opp-offline code{font-family:var(--mono);font-size:11px;background:var(--surface);border:1px solid var(--line);border-radius:5px;padding:1px 5px} .opp-regime{border:1px solid var(--line);border-radius:13px;background:var(--surface);padding:13px 15px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:9px} .opp-reg-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap} .opp-reg-sub{font-size:11px;color:var(--slate);display:inline-flex;align-items:center;gap:3px} .opp-wchips{display:flex;flex-wrap:wrap;gap:6px} .opp-wchip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;border-radius:999px;padding:3px 9px;border:1px solid var(--line-2);background:var(--surface-2);color:var(--slate)} .opp-wchip i{font-style:normal;font-weight:800;font-family:var(--mono);font-size:10px;border-radius:999px;padding:0 5px} .opp-wchip.hi{background:var(--accent-soft);border-color:var(--accent-line);color:var(--green-d)}.opp-wchip.hi i{background:rgba(0,171,78,.18)} .opp-wchip.mid{background:rgba(22,103,217,.08);border-color:rgba(22,103,217,.22);color:#1556bd}.opp-wchip.mid i{background:rgba(22,103,217,.16)} .opp-wchip.lo{opacity:.6} .opp-legend{display:flex;flex-wrap:wrap;gap:8px;padding:2px} .opp-lg{font-size:10.5px;font-weight:700;border-radius:7px;padding:3px 9px;border:1px solid var(--line-2)} .opp-lg.exec{background:rgba(0,171,78,.16);color:#00803b;border-color:var(--accent-line)} .opp-lg.execif{background:var(--accent-soft);color:var(--green-d)} .opp-lg.watch{background:var(--tint-warn);color:var(--amber);border-color:var(--bd-warn)} .opp-lg.ign{background:var(--surface-2);color:var(--slate-2)} .opp-refresh{font:inherit;font-size:11px;font-weight:700;color:var(--blue);background:none;border:none;cursor:pointer;padding:0 0 0 4px} .opp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:13px} .opp-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 15px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:9px;border-left:4px solid var(--line-2)} .opp-card.exec{border-left-color:var(--green)}.opp-card.execif{border-left-color:var(--green-d)} .opp-card.watch{border-left-color:var(--amber)}.opp-card.ign{border-left-color:var(--slate-2);opacity:.82} .opp-c-h{display:flex;align-items:center;justify-content:space-between;gap:10px} .opp-c-sym b{font-size:15px;font-weight:800;color:var(--navy)} .opp-c-px{display:block;font-size:11px;color:var(--slate);font-family:var(--mono)} .opp-score{text-align:right;line-height:1}.opp-score b{font-size:24px;font-weight:800;font-family:var(--mono)} .opp-score span{font-size:11px;color:var(--slate-2)} .opp-score.exec b,.opp-score.execif b{color:var(--green-d)}.opp-score.watch b{color:var(--amber)}.opp-score.ign b{color:var(--slate-2)} .opp-band{display:inline-flex;align-items:center;gap:5px;align-self:flex-start;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;padding:3px 9px;border-radius:999px} .opp-band.exec,.opp-band.execif{background:var(--accent-soft);color:var(--green-d)} .opp-band.watch{background:var(--tint-warn);color:var(--amber)}.opp-band.ign{background:var(--surface-2);color:var(--slate-2)} .opp-bar{height:7px;background:var(--surface-2);border-radius:999px;overflow:hidden} .opp-bar i{display:block;height:100%;border-radius:999px} .opp-bar i.exec,.opp-bar i.execif{background:linear-gradient(90deg,var(--green),var(--green-d))} .opp-bar i.watch{background:var(--amber)}.opp-bar i.ign{background:var(--slate-2)} .opp-c-meta{display:flex;flex-wrap:wrap;gap:10px;font-size:11px;color:var(--slate);font-weight:600} .opp-mtf{color:var(--amber)} .opp-comps{display:flex;flex-wrap:wrap;gap:5px} .opp-comp{font-size:10px;font-weight:600;color:var(--slate-2);background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:2px 6px} .opp-comp.on{color:var(--green-d);background:var(--accent-soft);border-color:var(--accent-line);font-weight:700} .opp-det{font-size:11px} .opp-det summary{cursor:pointer;color:var(--blue);font-weight:700;font-size:11px} .opp-votes{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px} .opp-vote{font-size:10px;font-weight:600;color:var(--slate-2);background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:2px 6px} .opp-vote.yes{color:var(--green-d);background:var(--accent-soft);border-color:var(--accent-line);font-weight:700} @media(max-width:640px){.opp-grid{grid-template-columns:1fr}} /* =================================================================== MOONSHOT MISSION tracker: ₹5,000 → ₹5,000 Cr, honest log-scale road =================================================================== */ .msn{flex:0 0 auto;border-radius:16px;padding:16px 18px 20px;margin-bottom:2px;color:#fff;position:relative;overflow:hidden; background:linear-gradient(120deg,#0f1a2a 0%,#1a2747 55%,#26346b 100%);box-shadow:var(--shadow-lg)} .msn-top{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap} .msn-title{display:flex;gap:11px;align-items:center} .msn-rocket{font-size:26px;filter:drop-shadow(0 2px 6px rgba(0,0,0,.4))} .msn-title b{display:block;font-size:17px;font-weight:800;letter-spacing:.2px} .msn-title span{font-size:11.5px;color:#aab8d8} .msn-eq{text-align:right;line-height:1.1} .msn-eq b{font-size:26px;font-weight:800;font-family:var(--mono)} .msn-eq b.up{color:#36e08a}.msn-eq b.down{color:#ff7e80} .msn-eq span{display:block;font-size:11px;color:#aab8d8;font-family:var(--mono)} .msn-track{position:relative;height:12px;margin:30px 0 26px;background:rgba(255,255,255,.10);border-radius:999px} .msn-fill{position:absolute;left:0;top:0;height:100%;border-radius:999px;min-width:3px; background:linear-gradient(90deg,#36e08a,#5b9dff);box-shadow:0 0 14px rgba(91,157,255,.6)} .msn-tick{position:absolute;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center} .msn-tick i{width:2px;height:12px;background:rgba(255,255,255,.35);display:block} .msn-tick b{position:absolute;top:14px;font-size:9.5px;font-weight:700;color:#8ea0c8;white-space:nowrap} .msn-tick:first-child b{color:#36e08a}.msn-tick:last-child b{color:#5b9dff} .msn-foot{display:flex;align-items:center;gap:14px;flex-wrap:wrap} .msn-prog{font-size:12px;font-weight:700;font-family:var(--mono);color:#cdd8f0} .msn-honest{display:inline-flex;align-items:flex-start;gap:5px;font-size:10.5px;color:#9fb0d4;line-height:1.4;flex:1;min-width:220px} .msn-honest .ico{flex:0 0 auto;margin-top:1px;color:#7e90b8} .msn-cta{margin-left:auto;display:inline-flex;align-items:center;gap:8px} .msn-pos{font-size:11px;color:#aab8d8;font-family:var(--mono)} .msn .lc-chip.paper{background:rgba(54,224,138,.18);color:#36e08a} /* ===== Opportunity Score 2.0 sub-scores + reasons ===== */ .opp-subs{display:flex;flex-direction:column;gap:4px;margin-top:2px} .opp-sub{display:flex;align-items:center;gap:7px;font-size:10px;color:var(--slate)} .opp-sub>span{width:42px;flex:0 0 auto;font-weight:600} .opp-sub .opp-sbar{flex:1;height:5px;background:var(--surface-2);border-radius:999px;overflow:hidden} .opp-sub .opp-sbar i{display:block;height:100%;border-radius:999px} .opp-sub .opp-sbar i.hi{background:var(--green)}.opp-sub .opp-sbar i.mid{background:var(--blue)}.opp-sub .opp-sbar i.lo{background:var(--slate-2)} .opp-sub>b{width:20px;text-align:right;font-family:var(--mono);font-size:10px;color:var(--navy)} .opp-risk.lo{color:var(--green-d)}.opp-risk.mid{color:var(--amber)}.opp-risk.hi{color:var(--red-d)} .opp-reasons{margin:2px 0 8px;padding-left:2px;list-style:none;display:flex;flex-direction:column;gap:3px} .opp-reasons li{font-size:11px;color:var(--navy);line-height:1.4} .opp-det-h{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2);margin:8px 0 4px} /* ===== Decision Log ===== */ .dlog{margin-top:14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:13px 15px;box-shadow:var(--shadow)} .dlog-h{display:flex;align-items:center;gap:8px} .dlog-h .ico{color:var(--blue)} .dlog-h b{font-size:13px;font-weight:800;color:var(--navy)} .dlog-h span{font-size:11px;color:var(--slate)} .dlog-rows{display:flex;flex-direction:column;margin-top:9px} .dlog-row{display:flex;align-items:center;gap:10px;padding:8px 2px;border-top:1px solid var(--line)} .dlog-row:first-child{border-top:0} .dlog-tag{flex:0 0 auto;font-size:9.5px;font-weight:800;letter-spacing:.3px;padding:2px 7px;border-radius:6px} .dlog-tag.enter{background:var(--accent-soft);color:var(--green-d)} .dlog-tag.exit{background:var(--tint-down);color:var(--red-d)} .dlog-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px} .dlog-main b{font-size:12.5px;color:var(--navy);font-weight:800} .dlog-meta{font-size:10.5px;color:var(--slate)} .dlog-why{font-size:10.5px;color:var(--green-d);overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .dlog-pnl{font-family:var(--mono);font-size:12px;font-weight:700} .dlog-when{flex:0 0 auto;font-size:10px;color:var(--slate-2);font-family:var(--mono);min-width:48px;text-align:right} /* ===== Learning Engine panel ===== */ .lrn{margin-top:14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:13px 15px;box-shadow:var(--shadow)} .lrn-h{display:flex;align-items:center;gap:8px} .lrn-h .ico{color:var(--blue)} .lrn-h b{font-size:13px;font-weight:800;color:var(--navy)} .lrn-chip{margin-left:auto;display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--slate); background:var(--surface-2);border:1px solid var(--line-2);border-radius:999px;padding:3px 10px} .lrn-chip.on{background:var(--accent-soft);color:var(--green-d);border-color:var(--accent-line)} .lrn-note{display:flex;align-items:flex-start;gap:6px;margin:8px 0 10px;font-size:11px;color:var(--slate);line-height:1.5} .lrn-note .ico{flex:0 0 auto;margin-top:1px;color:var(--green-d)} .lrn-note b{color:var(--navy);font-weight:700} .lrn-rows{display:flex;flex-direction:column;gap:3px} .lrn-row{display:grid;grid-template-columns:90px 1fr 52px 150px;align-items:center;gap:10px;padding:5px 2px} .lrn-head{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2);padding-bottom:2px} .lrn-head span:nth-child(2){grid-column:2 / 4} .lrn-name{font-size:11.5px;font-weight:600;color:var(--navy)} .lrn-bar{position:relative;height:8px;background:var(--surface-2);border-radius:999px;overflow:visible} .lrn-bar>i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--blue),var(--green))} .lrn-prior{position:absolute;top:-2px;width:2px;height:12px;background:var(--slate-2);border-radius:2px} .lrn-w{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--navy);text-align:right;display:inline-flex;gap:3px;justify-content:flex-end;align-items:center} .lrn-w .lrn-up{color:var(--green-d);font-style:normal;font-size:9px} .lrn-w .lrn-dn{color:var(--red-d);font-style:normal;font-size:9px} .lrn-edge{font-size:10.5px;color:var(--slate);font-family:var(--mono)} @media(max-width:640px){.lrn-row{grid-template-columns:74px 1fr 44px;gap:7px}.lrn-edge{display:none}.lrn-head span:last-child{display:none}} /* =================================================================== RISK GOVERNOR tab =================================================================== */ .rk-hero{display:flex;gap:13px;align-items:flex-start;padding:15px 17px;border-radius:14px; background:linear-gradient(135deg,var(--tint-info),var(--surface));border:1px solid var(--line-2);box-shadow:var(--shadow)} .rk-hero-ic{flex:0 0 auto;width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--surface);color:var(--navy);box-shadow:var(--shadow)} .rk-hero-tx b{font-size:15px;color:var(--navy);font-weight:800} .rk-hero-tx span{display:block;font-size:12px;color:var(--slate);line-height:1.5;margin-top:3px} .rk-kill{display:flex;gap:11px;align-items:center;padding:13px 16px;border-radius:13px;background:var(--tint-down);border:1px solid var(--bd-down)} .rk-kill .ico{color:var(--red);flex:0 0 auto} .rk-kill b{display:block;font-size:14px;color:var(--red-d);font-weight:800} .rk-kill span{font-size:12px;color:var(--navy)} .rk-warn{display:flex;align-items:center;gap:8px;padding:9px 13px;border-radius:11px;background:var(--tint-warn);border:1px solid var(--bd-warn);font-size:12px;color:var(--navy)} .rk-warn .ico{color:var(--amber);flex:0 0 auto} .rk-health{display:flex;align-items:center;gap:20px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow)} .rk-score{text-align:center;line-height:1} .rk-score b{font-size:42px;font-weight:800;font-family:var(--mono);color:var(--navy)} .rk-score.up b{color:var(--green-d)}.rk-score.down b{color:var(--red-d)} .rk-score span{font-size:13px;color:var(--slate-2)} .rk-grade{display:flex;flex-direction:column;gap:1px;min-width:120px} .rk-grade b{font-size:18px;font-weight:800}.rk-grade b.up{color:var(--green-d)}.rk-grade b.down{color:var(--red-d)} .rk-grade span{font-size:11px;color:var(--slate)} .rk-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;flex:1;min-width:280px} .rk-kpis>div{display:flex;flex-direction:column;gap:2px} .rk-kpis span{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2)} .rk-kpis b{font-size:15px;font-weight:800;color:var(--navy);font-family:var(--mono)} .rk-kpis b.up{color:var(--green-d)}.rk-kpis b.down{color:var(--red-d)} .rk-grid2{display:grid;grid-template-columns:1fr 1fr;gap:13px} @media(max-width:760px){.rk-grid2{grid-template-columns:1fr}.rk-kpis{grid-template-columns:repeat(2,1fr)}} .rk-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:13px 15px;box-shadow:var(--shadow)} .rk-ch{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:800;color:var(--navy);margin-bottom:10px} .rk-ch .ico{color:var(--blue)} .rk-ch i{margin-left:auto;font-style:normal;font-size:10px;font-weight:600;color:var(--slate-2)} .rk-cbar{display:flex;align-items:center;gap:9px;margin:6px 0} .rk-cl{width:64px;flex:0 0 auto;font-size:11px;font-weight:600;color:var(--navy)} .rk-ctrack{position:relative;flex:1;height:8px;background:var(--surface-2);border-radius:999px;overflow:visible} .rk-ctrack>i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--blue),var(--green))} .rk-ctrack>i.over{background:linear-gradient(90deg,var(--amber),var(--red))} .rk-clim{position:absolute;top:-2px;width:2px;height:12px;background:var(--red);border-radius:2px} .rk-cbar>b{width:38px;text-align:right;font-family:var(--mono);font-size:11px;font-weight:700;color:var(--navy)} .rk-cbar>b.down{color:var(--red-d)} .rk-ladder{display:flex;align-items:center;gap:6px;flex-wrap:wrap} .rk-tier{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 11px;border-radius:9px;background:var(--surface-2);border:1px solid var(--line);min-width:60px} .rk-tier b{font-size:13px;font-weight:800;font-family:var(--mono);color:var(--navy)} .rk-tier span{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2)} .rk-tier.on{background:var(--navy);border-color:var(--navy)}.rk-tier.on b,.rk-tier.on span{color:#fff} .rk-arr{color:var(--slate-2)} .rk-cur{margin:10px 0 0;font-size:11.5px;color:var(--slate)}.rk-cur b.up{color:var(--green-d)}.rk-cur b.down{color:var(--red-d)} .rk-audit{display:flex;flex-direction:column} .rk-arow{display:flex;align-items:center;gap:9px;padding:6px 2px;border-top:1px solid var(--line);font-size:11.5px} .rk-arow:first-child{border-top:0} .rk-atag{flex:0 0 auto;font-size:9px;font-weight:800;letter-spacing:.3px;padding:2px 6px;border-radius:5px} .rk-atag.ok{background:var(--accent-soft);color:var(--green-d)} .rk-atag.veto{background:var(--tint-down);color:var(--red-d)} .rk-amain{flex:0 0 auto;min-width:130px;color:var(--navy)} .rk-areason{flex:1;color:var(--slate);overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .rk-awhen{flex:0 0 auto;font-size:10px;color:var(--slate-2);font-family:var(--mono)} .av-scroll>.rk-hero,.av-scroll>.rk-health,.av-scroll>.rk-grid2,.av-scroll>.rk-card,.av-scroll>.rk-kill,.av-scroll>.rk-warn{flex:0 0 auto} /* ===== Capital Allocation panel ===== */ .alc{margin-top:14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:13px 15px;box-shadow:var(--shadow)} .alc-h{display:flex;align-items:center;gap:8px} .alc-h .ico{color:var(--blue)} .alc-h b{font-size:13px;font-weight:800;color:var(--navy)} .alc-h span{font-size:11px;color:var(--slate)} .alc-summ{font-size:11.5px;color:var(--slate);margin:8px 0 10px} .alc-summ b{color:var(--navy);font-family:var(--mono)}.alc-summ b.up{color:var(--green-d)} .alc-cols{display:grid;grid-template-columns:1fr 1fr;gap:13px} @media(max-width:680px){.alc-cols{grid-template-columns:1fr}} .alc-ch{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2);margin-bottom:4px} .alc-ch.up{color:var(--green-d)} .alc-row{display:flex;align-items:center;gap:9px;padding:6px 2px;border-top:1px solid var(--line);font-size:11.5px} .alc-row:first-of-type{border-top:0} .alc-tag{flex:0 0 auto;font-size:9px;font-weight:800;letter-spacing:.3px;padding:2px 6px;border-radius:5px} .alc-tag.fund{background:var(--accent-soft);color:var(--green-d)} .alc-tag.skip{background:var(--surface-2);color:var(--slate-2);border:1px solid var(--line-2)} .alc-main{flex:1;min-width:0;overflow:hidden} .alc-main b{font-size:12px;color:var(--navy);font-weight:800} .alc-meta{font-size:10.5px;color:var(--slate)} .alc-alloc{flex:0 0 auto;text-align:right;font-family:var(--mono);font-size:12px;font-weight:700;color:var(--green-d)} .alc-alloc i{display:block;font-style:normal;font-size:9.5px;color:var(--slate-2)} .alc-reason{flex:0 0 auto;max-width:50%;font-size:10px;color:var(--slate);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} /* ===== Position Intelligence (Positions tab) ===== */ .pi-hero{display:flex;gap:13px;align-items:flex-start;padding:15px 17px;border-radius:14px; background:linear-gradient(135deg,var(--accent-soft),var(--surface));border:1px solid var(--accent-line);box-shadow:var(--shadow)} .pi-hero-ic{flex:0 0 auto;width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--surface);color:var(--green-d);box-shadow:var(--shadow)} .pi-hero-tx b{font-size:15px;color:var(--navy);font-weight:800} .pi-hero-tx span{display:block;font-size:12px;color:var(--slate);line-height:1.5;margin-top:3px} .pi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:13px} .pi-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:13px 15px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:9px;border-left:4px solid var(--line-2)} .pi-card.hi{border-left-color:var(--green)}.pi-card.mid{border-left-color:var(--amber)}.pi-card.lo{border-left-color:var(--red)}.pi-card.na{border-left-color:var(--slate-2)} .pi-h{display:flex;align-items:flex-start;justify-content:space-between;gap:10px} .pi-sym b{font-size:15px;font-weight:800;color:var(--navy)} .pi-sym span{display:block;font-size:10.5px;color:var(--slate)} .pi-score{text-align:right;line-height:1}.pi-score b{font-size:24px;font-weight:800;font-family:var(--mono)} .pi-score span{font-size:10px;color:var(--slate-2)} .pi-score.hi b{color:var(--green-d)}.pi-score.mid b{color:var(--amber)}.pi-score.lo b{color:var(--red-d)}.pi-score.na b{color:var(--slate-2)} .pi-bar{height:7px;background:var(--surface-2);border-radius:999px;overflow:hidden} .pi-bar i{display:block;height:100%;border-radius:999px} .pi-bar i.hi{background:var(--green)}.pi-bar i.mid{background:var(--amber)}.pi-bar i.lo{background:var(--red)}.pi-bar i.na{background:var(--slate-2)} .pi-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:11px;color:var(--slate)} .pi-act{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.2px;padding:2px 8px;border-radius:6px} .pi-act.hold{background:var(--accent-soft);color:var(--green-d)} .pi-act.protect{background:rgba(22,103,217,.12);color:#1556bd} .pi-act.watch{background:var(--tint-warn);color:var(--amber)} .pi-act.exit{background:var(--tint-down);color:var(--red-d)} .pi-act.na{background:var(--surface-2);color:var(--slate-2)} .pi-gain{font-family:var(--mono);font-weight:700}.pi-gain.up{color:var(--green-d)}.pi-gain.down{color:var(--red-d)} .pi-weak{color:var(--amber);font-weight:700} .pi-reason{display:flex;align-items:flex-start;gap:6px;margin:0;font-size:11px;color:var(--navy);line-height:1.4;background:var(--surface-2);border-radius:8px;padding:7px 9px} .pi-reason .ico{flex:0 0 auto;margin-top:1px;color:var(--slate)} /* ===== Strategy Rebalancing panel ===== */ .rb2{margin-top:14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:13px 15px;box-shadow:var(--shadow)} .rb2-h{display:flex;align-items:center;gap:8px} .rb2-h .ico{color:var(--blue)} .rb2-h b{font-size:13px;font-weight:800;color:var(--navy)} .rb2-h span{font-size:11px;color:var(--slate)} .rb2-summ{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:9px 0 11px;font-size:11.5px;color:var(--slate)} .rb2-summ b{color:var(--navy);font-family:var(--mono)} .rb2-live{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:var(--green-d)} .rb2-pres{font-weight:700;color:var(--amber)} .rb2-note{color:var(--slate-2)} .rb2-cols{display:grid;grid-template-columns:1fr 1fr;gap:13px} @media(max-width:680px){.rb2-cols{grid-template-columns:1fr}} .rb2-ch{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;color:var(--slate-2);margin-bottom:6px} .rb2-ch.up{color:var(--green-d)} .rb2-chips{display:flex;flex-wrap:wrap;gap:6px} .rb2-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;border-radius:999px;padding:3px 9px;border:1px solid var(--line-2)} .rb2-chip i{font-style:normal;font-size:9px;font-weight:600;color:var(--slate-2)} .rb2-chip.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--green-d)} .rb2-chip.off{background:var(--surface-2);color:var(--slate-2);opacity:.8} .av-scroll>.rb2{flex:0 0 auto} /* Forward Test parity: regime banner + go-live graduation bar */ .ft-regime{display:flex;align-items:flex-start;gap:11px;margin:0 0 14px;padding:13px 16px;border-radius:12px; background:var(--accent-soft);border:1px solid var(--accent-line)} .ft-regime-ic{color:var(--accent-d);flex:none;margin-top:1px} .ft-regime b{font-size:13.5px;color:var(--navy)} .ft-regime span{display:block;font-size:12px;color:var(--slate);margin-top:2px;line-height:1.5} .cxf-grad{height:4px;border-radius:99px;background:var(--line);overflow:hidden;margin:6px 0 3px;max-width:220px} .cxf-grad i{display:block;height:100%;border-radius:99px;background:var(--accent);transition:width .3s} .cxf-grad i.done{background:var(--green)} .cxf-gradlbl{font:600 10px/1 var(--mono);color:var(--slate-2);letter-spacing:.03em} /* ============================================================ TRADING MODE: TRADINGVIEW-STYLE WORKSTATION & SIGNAL ENGINE ============================================================ */ .trading-workspace{display:flex;flex-direction:column;gap:12px;padding-bottom:24px} .trading-topbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px 14px;box-shadow:var(--shadow)} .trading-ticker-badge{display:flex;align-items:center;gap:10px} .trading-ticker-badge .tt-tk{font-size:16px;font-weight:800;letter-spacing:-.3px} .trading-ticker-badge .tt-px{font-family:var(--mono);font-size:15px;font-weight:700} .trading-ticker-badge .tt-chg{font-family:var(--mono);font-size:12px;font-weight:700;padding:2px 6px;border-radius:6px;background:var(--surface-2)} .tt-live-chip{font-size:10px;font-weight:800;letter-spacing:.4px;padding:3px 8px;border-radius:6px;background:var(--accent-soft);color:var(--accent-d);border:1px solid var(--accent-line)} .trading-stage{display:grid;grid-template-columns:1fr 370px;gap:14px;align-items:start} @media(max-width:1080px){.trading-stage{grid-template-columns:1fr}} .trading-main-col{display:flex;flex-direction:column;gap:10px;min-width:0} .trading-chart-card{height:530px;min-height:420px;border-radius:14px;box-shadow:var(--shadow);overflow:hidden;border:1px solid var(--line);background:var(--surface);display:flex!important;flex-direction:column!important} @media(max-width:768px){.trading-chart-card{height:400px;min-height:340px}} .trading-chart-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:9px 14px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;font-size:11.5px;color:var(--slate)} .trading-chart-foot b{color:var(--navy)} .trading-side-col{display:flex;flex-direction:column;gap:14px} /* ===== Signal Generator Card ===== */ .sig-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;transition:border-color .2s} .sig-card:hover{border-color:var(--accent-line)} .sig-head{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px} .sig-title{display:flex;align-items:center;gap:8px;font-weight:800;font-size:13px;color:var(--navy)} .sig-title .ico{color:var(--accent-d)} .sig-verdict-tag{font-size:10px;font-weight:800;letter-spacing:.3px;padding:3px 8px;border-radius:6px;text-transform:uppercase} .sig-verdict-gathering{background:var(--surface-2);color:var(--slate-2);border:1px solid var(--line)} .sig-verdict-preliminary{background:rgba(217,119,6,.12);color:var(--amber);border:1px solid rgba(217,119,6,.25)} .sig-verdict-promising{background:var(--tint-up);color:var(--green-d);border:1px solid rgba(16,185,129,.3)} .sig-verdict-unfit{background:var(--tint-down);color:var(--red-d);border:1px solid rgba(239,68,68,.25)} .sig-body{padding:14px;display:flex;flex-direction:column;gap:12px} .sig-select-lbl{font-size:11px;font-weight:700;color:var(--slate);margin-bottom:5px;display:flex;align-items:center;justify-content:space-between} .sig-chips{display:flex;flex-wrap:wrap;gap:6px} .sig-chip{border:1px solid var(--line);background:var(--surface-2);color:var(--slate);border-radius:8px;padding:5px 9px;font-size:11px;font-weight:700;cursor:pointer;transition:.15s;font-family:var(--sans)} .sig-chip:hover{color:var(--navy);border-color:var(--line-2)} .sig-chip.on{background:var(--accent-soft);color:var(--accent-d);border-color:var(--accent-line)} .sig-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px} .sig-stat{background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:8px 10px;display:flex;flex-direction:column;gap:3px} .sig-stat-lbl{font-size:10px;font-weight:700;color:var(--slate-2);text-transform:uppercase;letter-spacing:.3px} .sig-stat-val{font-family:var(--mono);font-size:14px;font-weight:800;color:var(--navy)} .sig-stat-val.up{color:var(--green-d)} .sig-stat-val.down{color:var(--red-d)} .sig-alert{border-radius:9px;padding:10px 12px;font-size:11.5px;display:flex;align-items:center;justify-content:space-between;gap:8px} .sig-alert.buy{background:var(--tint-up);border:1px solid rgba(16,185,129,.28);color:var(--green-d)} .sig-alert.sell{background:var(--tint-down);border:1px solid rgba(239,68,68,.28);color:var(--red-d)} .sig-alert.neutral{background:var(--surface-2);border:1px solid var(--line);color:var(--slate)} .sig-alert b{font-weight:800} .sig-note{font-size:11px;color:var(--slate);line-height:1.4;display:flex;align-items:flex-start;gap:6px;background:var(--surface-2);border-radius:8px;padding:8px 10px} .sig-note .ico{flex:0 0 auto;margin-top:2px;color:var(--accent-d)} .sig-actions{display:flex;gap:8px} .sig-act-btn{flex:1;border:1px solid var(--line);background:var(--surface);color:var(--navy);font-family:var(--sans);font-size:11.5px;font-weight:700;padding:8px 10px;border-radius:8px;cursor:pointer;transition:.15s;text-align:center} .sig-act-btn:hover{background:var(--surface-2);border-color:var(--line-2)} .sig-act-btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)} .sig-act-btn.primary:hover{opacity:.9} /* ============================================================ INVESTING MODE: Volatility Shield & DCA Growth Simulator ============================================================ */ .regime-shield-card{border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:14px 16px;margin-bottom:14px;box-shadow:0 2px 8px rgba(0,0,0,.03)} .rsc-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px} .rsc-title-group{display:flex;align-items:center;gap:8px} .rsc-badge{display:inline-flex;align-items:center;gap:5px;font-size:9.5px;font-weight:800;letter-spacing:.3px;text-transform:uppercase;padding:3px 8px;border-radius:6px} .rsc-badge.up{background:var(--tint-up);color:var(--green-d);border:1px solid rgba(16,185,129,.3)} .rsc-badge.neutral{background:rgba(59,130,246,.1);color:var(--blue);border:1px solid rgba(59,130,246,.25)} .rsc-badge.down{background:var(--tint-down);color:var(--red-d);border:1px solid rgba(239,68,68,.3)} .rsc-pulse{width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block;animation:rscPulse 2s infinite ease-in-out} @keyframes rscPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.2)}} .rsc-title{font-size:13.5px;font-weight:800;color:var(--navy);margin:0} .rsc-target-pill{font-size:11px;background:var(--surface-2);border:1px solid var(--line);padding:3px 9px;border-radius:7px;display:flex;align-items:center;gap:5px} .rsc-target-label{color:var(--slate-2);font-weight:600} .rsc-target-pill b{color:var(--navy)} .rsc-desc{font-size:11.5px;color:var(--slate);line-height:1.45;margin:0 0 10px} .rsc-alloc-section{margin-top:10px} .rsc-alloc-label{display:flex;justify-content:space-between;align-items:center;font-size:11px;font-weight:700;color:var(--slate);margin-bottom:5px} .rsc-alloc-bar,.rsc-empty-bar{height:10px;border-radius:999px;background:var(--surface-2);overflow:hidden;display:flex;gap:1px} .rsc-seg{height:100%;transition:width .3s ease} .rsc-legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:7px;font-size:10.5px} .rsc-leg-item{display:inline-flex;align-items:center;gap:4px;color:var(--slate)} .rsc-dot{width:6px;height:6px;border-radius:50%;display:inline-block} .rsc-empty-alloc{margin-top:10px} .rsc-footer{margin-top:12px;padding-top:10px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap} .rsc-foot-note{font-size:10.5px;color:var(--slate-2);display:flex;align-items:center;gap:5px} .rsc-sim-cta{font-size:11px;font-weight:700;color:var(--accent-d)} /* DCA Simulator */ .dca-sim-card{border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:16px;box-shadow:0 2px 10px rgba(0,0,0,.03)} .dca-sim-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:12px;border-bottom:1px solid var(--line);gap:10px;flex-wrap:wrap} .dca-sim-title{display:flex;align-items:center;gap:10px} .dca-sim-ic{width:32px;height:32px;border-radius:8px;background:var(--accent-soft);color:var(--accent-d);display:flex;align-items:center;justify-content:center} .dca-sim-title b{font-size:13.5px;font-weight:800;color:var(--navy);display:block} .dca-sim-title span{font-size:11px;color:var(--slate-2);display:block} .dca-sim-active-badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;color:var(--navy);background:var(--surface-2);border:1px solid var(--line);padding:4px 10px;border-radius:7px} .dca-sim-controls{display:flex;flex-direction:column;gap:10px;margin-top:12px} .dca-slider-row{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:12px} .dca-slider-label{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;font-weight:700;color:var(--navy)} .dca-val-box{display:flex;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:2px 8px} .dca-curr{font-size:12px;font-weight:700;color:var(--slate-2);margin-right:2px} .dca-num-inp{width:65px;border:none;background:transparent;font-family:var(--mono);font-size:13px;font-weight:800;color:var(--navy);text-align:right;outline:none} .dca-range-slider{width:100%;margin-top:10px;accent-color:var(--accent);cursor:pointer} .dca-slider-scale{display:flex;justify-content:space-between;font-size:10px;color:var(--slate-2);font-weight:600;margin-top:3px} .dca-metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-top:14px} .dca-met-card{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:3px} .dca-met-card.highlight{background:var(--tint-up);border-color:rgba(16,185,129,.3)} .dca-met-card.shield-card{background:rgba(59,130,246,.08);border-color:rgba(59,130,246,.25)} .dca-met-lbl{font-size:10px;font-weight:700;color:var(--slate-2);text-transform:uppercase;letter-spacing:.3px} .dca-met-val{font-size:15px;font-weight:800;color:var(--navy);font-family:var(--mono)} .dca-met-sub{font-size:10px;font-weight:600;color:var(--slate)} .dca-chart-card{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:12px;margin-top:14px} .dca-chart-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;gap:8px;flex-wrap:wrap} .dca-chart-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:11px} .dca-leg-item{display:inline-flex;align-items:center;gap:5px;color:var(--slate)} .dca-leg-line{width:12px;height:3px;border-radius:2px;display:inline-block} .dca-leg-line.dca{background:#10b981} .dca-leg-line.lump{background:#a855f7} .dca-leg-line.cash{background:var(--slate-2)} .dca-friction-tag{font-size:10px;font-weight:700;color:var(--slate-2);background:var(--surface-2);padding:2px 7px;border-radius:6px;border:1px solid var(--line)} .dca-chart-body{width:100%;overflow:hidden} .dca-sim-svg{width:100%;height:180px;display:block} .dca-sim-actions{margin-top:14px;padding-top:12px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px} .dca-action-text b{font-size:12px;color:var(--navy);display:block} .dca-action-text span{font-size:11px;color:var(--slate-2);display:block} .dca-deploy-btn{padding:9px 18px;font-size:12px;font-weight:800} /* ============================================================ TRADING MODE: Multi-Timeframe Confluence & Risk/Reward HUD ============================================================ */ .tf-confluence-ribbon{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin-bottom:12px;box-shadow:0 2px 8px rgba(0,0,0,.03)} .tfc-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap} .tfc-title{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--navy)} .tfc-pulse{width:6px;height:6px;border-radius:50%;display:inline-block} .tfc-pulse.up{background:var(--green);box-shadow:0 0 8px rgba(16,185,129,.5)} .tfc-pulse.down{background:var(--red);box-shadow:0 0 8px rgba(239,68,68,.5)} .tfc-pulse.neutral{background:var(--amber);box-shadow:0 0 8px rgba(245,158,11,.5)} .tfc-consensus-badge{font-size:9.5px;font-weight:800;letter-spacing:.3px;text-transform:uppercase;padding:3px 8px;border-radius:6px} .tfc-consensus-badge.up{background:var(--tint-up);color:var(--green-d);border:1px solid rgba(16,185,129,.3)} .tfc-consensus-badge.down{background:var(--tint-down);color:var(--red-d);border:1px solid rgba(239,68,68,.3)} .tfc-consensus-badge.neutral{background:rgba(245,158,11,.12);color:var(--amber);border:1px solid rgba(245,158,11,.25)} .tfc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px} @media (max-width: 680px){.tfc-grid{grid-template-columns:repeat(2,1fr)}} .tfc-node{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:6px 8px;display:flex;flex-direction:column;gap:2px} .tfc-node.bull{border-left:3px solid var(--green)} .tfc-node.bear{border-left:3px solid var(--red)} .tfc-node.neutral{border-left:3px solid var(--slate-2)} .tfc-tf{font-size:9.5px;font-weight:700;color:var(--slate-2);text-transform:uppercase} .tfc-state-line{display:flex;align-items:center;gap:4px;font-size:11px;font-weight:800} .tfc-node.bull .tfc-state-line{color:var(--green-d)} .tfc-node.bear .tfc-state-line{color:var(--red-d)} .tfc-node.neutral .tfc-state-line{color:var(--slate)} .tfc-metric{font-size:9.5px;color:var(--slate-2);font-weight:600;font-family:var(--mono)} /* Risk/Reward Bracket HUD */ .rr-bracket-box{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:10px 0} .rr-bracket-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px} .rr-title{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;color:var(--navy)} .rr-chips{display:flex;gap:4px} .rr-chip{font-size:10px;font-weight:700;padding:2px 7px;border-radius:5px;border:1px solid var(--line);background:var(--surface);color:var(--slate);cursor:pointer;transition:.15s} .rr-chip.on{background:var(--accent-soft);color:var(--accent-d);border-color:var(--accent-line)} .rr-readout{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;padding:6px 0} .rr-col{display:flex;flex-direction:column;gap:2px} .rr-lbl{font-size:9.5px;font-weight:700;color:var(--slate-2)} .rr-col b{font-family:var(--mono);font-size:12px;font-weight:800} .rr-col i{font-family:var(--mono);font-size:10px;font-style:normal;font-weight:700} .rr-divider{width:1px;height:28px;background:var(--line)} .rr-foot-note{font-size:9px;color:var(--slate-2);margin-top:4px} .order-act-row{display:flex;gap:8px;margin-top:6px} .order-act-row .cta{flex:1} .cta-bracket{background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;border:none;font-weight:800} .cta-bracket:hover{opacity:.92} .cta-bracket.paper-sim-only{background:var(--surface-2);color:var(--slate);border:1px dashed var(--line-2);font-weight:700} .cta-bracket.paper-sim-only:hover{border-color:var(--slate);color:var(--navy)} /* ============================================================ ALGO STUDIO: Walk-Forward 3-Regime Resilience Matrix ============================================================ */ .wf-regime-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px;margin:12px 0;box-shadow:0 2px 8px rgba(0,0,0,.03)} .wf-regime-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px} .wf-title{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:800;color:var(--navy)} .wf-ic{color:var(--accent-d)} .wf-tag{font-size:9.5px;font-weight:800;letter-spacing:.3px;text-transform:uppercase;padding:2px 7px;border-radius:6px;background:var(--surface-2);border:1px solid var(--line);color:var(--slate-2)} .wf-desc{font-size:11px;color:var(--slate);line-height:1.4;margin:0 0 12px} .wf-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px} @media (max-width: 680px){.wf-grid{grid-template-columns:1fr}} .wf-col{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px} .wf-col.bull{border-top:3px solid var(--green)} .wf-col.crab{border-top:3px solid var(--amber)} .wf-col.bear{border-top:3px solid var(--red)} .wf-col-head{display:flex;justify-content:space-between;align-items:center} .wf-col-name{font-size:11px;font-weight:800;color:var(--navy)} .wf-col-badge{font-size:9px;font-weight:800;text-transform:uppercase;padding:2px 6px;border-radius:5px} .wf-col-badge.up{background:var(--tint-up);color:var(--green-d);border:1px solid rgba(16,185,129,.3)} .wf-col-badge.neutral{background:rgba(245,158,11,.12);color:var(--amber);border:1px solid rgba(245,158,11,.25)} .wf-col-badge.down{background:var(--tint-down);color:var(--red-d);border:1px solid rgba(239,68,68,.3)} .wf-col-metrics{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px} .wf-m{display:flex;flex-direction:column;gap:2px} .wf-m span{font-size:9.5px;font-weight:700;color:var(--slate-2)} .wf-m b{font-family:var(--mono);font-size:12px;font-weight:800} .wf-foot{font-size:10px;color:var(--slate-2);margin-top:10px;display:flex;align-items:center;gap:5px} /* Mobile Responsiveness Enhancements for Institutional Workstation HUDs */ @media (max-width: 680px){ .dca-metrics-grid{grid-template-columns:repeat(2,1fr)} .dca-chart-head{flex-direction:column;align-items:flex-start;gap:6px} .dca-friction-tag{align-self:flex-start} } @media (max-width: 480px){ .order-act-row{flex-direction:column;gap:8px} .order-act-row .cta{width:100%;min-height:44px;display:inline-flex;align-items:center;justify-content:center} .dca-sim-actions{flex-direction:column;align-items:stretch;gap:8px} .dca-deploy-btn{width:100%;min-height:44px;display:inline-flex;align-items:center;justify-content:center} .rr-bracket-head{flex-direction:column;align-items:flex-start;gap:6px} .rr-chips{width:100%;justify-content:space-between} .rr-chip{flex:1;text-align:center;padding:4px 6px;min-height:28px;display:inline-flex;align-items:center;justify-content:center} .dca-metrics-grid{grid-template-columns:1fr 1fr;gap:6px} .dca-met-val{font-size:13px} .dca-num-inp{width:55px} .tfc-head{flex-direction:column;align-items:flex-start;gap:6px} .wf-regime-head{flex-direction:column;align-items:flex-start;gap:6px} } @media (max-width: 380px){ .tfc-grid{grid-template-columns:1fr} .dca-metrics-grid{grid-template-columns:1fr} } /* ============================================================ CHART FULLSCREEN & EXPANDED VIEW ============================================================ */ .ch-pill.ch-expand{font-weight:700;color:var(--accent-d);background:var(--accent-soft);border-color:var(--accent-line);cursor:pointer;transition:.15s} .ch-pill.ch-expand:hover{background:var(--accent);color:#fff} .chart-card.chart-fullscreen{ position:fixed !important; top:0 !important; left:0 !important; width:100vw !important; height:100vh !important; max-width:100vw !important; max-height:100vh !important; z-index:99999 !important; margin:0 !important; border-radius:0 !important; box-shadow:none !important; background:var(--surface) !important; display:flex !important; flex-direction:column !important; } .chart-card.chart-fullscreen .ch-bar{border-radius:0 !important;padding:8px 14px !important;border-bottom:1px solid var(--line) !important} .chart-card.chart-fullscreen .ch-stage{flex:1 !important;height:calc(100vh - 46px) !important} .chart-card.chart-fullscreen .ch-canvas-wrap{height:100% !important} .chart-card.chart-fullscreen canvas{width:100% !important;height:100% !important} body.chart-is-fullscreen{overflow:hidden !important} /* DCA Export Action Buttons */ .dca-act-btn-group{display:flex;gap:8px;align-items:center;flex-wrap:wrap} .dca-export-btn{padding:8px 14px;font-size:11.5px;font-weight:700;background:var(--surface-2);color:var(--navy);border:1px solid var(--line);border-radius:8px;cursor:pointer;transition:.15s} .dca-export-btn:hover{background:var(--surface);border-color:var(--accent)} @media (max-width: 580px){ .dca-act-btn-group{width:100%;flex-direction:column;align-items:stretch} .dca-export-btn{width:100%;text-align:center;min-height:44px;display:inline-flex;align-items:center;justify-content:center} } /* ============================================================ TERMINAL KEYBOARD SHORTCUTS HUD MODAL ============================================================ */ .shortcuts-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(0,0,0,.65);backdrop-filter:blur(4px);z-index:999999;display:flex;align-items:center;justify-content:center;padding:20px} .shortcuts-modal-card{background:var(--surface);border:1px solid var(--line-2);border-radius:14px;width:100%;max-width:460px;box-shadow:0 12px 36px rgba(0,0,0,.35);padding:18px;animation:smPop .18s ease-out} @keyframes smPop{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}} .sm-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:12px;border-bottom:1px solid var(--line);margin-bottom:12px} .sm-head b{font-size:13.5px;font-weight:800;color:var(--navy);display:flex;align-items:center;gap:7px} .sm-close{background:none;border:none;font-size:16px;font-weight:700;color:var(--slate-2);cursor:pointer;padding:4px 8px;border-radius:6px} .sm-close:hover{color:var(--navy);background:var(--surface-2)} .sm-grid{display:flex;flex-direction:column;gap:6px} .sm-row{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;border-radius:6px;background:var(--surface-2);font-size:11.5px} .sm-row kbd{font-family:var(--mono);font-size:11px;font-weight:800;color:var(--accent-d);background:var(--surface);border:1px solid var(--line);border-radius:5px;padding:2px 7px;box-shadow:0 1px 3px rgba(0,0,0,.08)} .sm-row span{color:var(--slate);font-weight:600}