/* Action AI theme on top of Bootstrap 5.3: brand colours and app-specific components only. */
:root,[data-bs-theme=light]{
  --app-accent:#0a7d72;--app-accent-rgb:10,125,114;--app-accent-soft:#e0f2ee;
  --app-up:#11845b;--app-up-soft:#e3f5ec;--app-down:#c2413a;--app-down-soft:#fbe9e7;
  --app-watch:#2f63b5;--app-watch-soft:#e8f0fb;--app-top:#0f1720;
  --bs-primary:#0a7d72;--bs-primary-rgb:10,125,114;--bs-link-color:#0a7d72;--bs-link-color-rgb:10,125,114;--bs-link-hover-color:#07665f;
  --bs-body-bg:#f3f5f7;--bs-border-radius:.6rem;--bs-border-radius-lg:.9rem;
  --bs-body-font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
[data-bs-theme=dark]{
  --app-accent:#3cc2b1;--app-accent-rgb:60,194,177;--app-accent-soft:#163a37;
  --app-up:#42c98b;--app-up-soft:#143326;--app-down:#ff7a70;--app-down-soft:#3a1c1a;
  --app-watch:#7fb0ff;--app-watch-soft:#16263d;--app-top:#0a0f14;
  --bs-primary:#3cc2b1;--bs-primary-rgb:60,194,177;--bs-link-color:#3cc2b1;--bs-link-color-rgb:60,194,177;--bs-link-hover-color:#6fd6c8;
  --bs-body-bg:#0d1217;--bs-tertiary-bg:#151c23;--bs-secondary-bg:#1b242c;
}
.btn-primary{--bs-btn-bg:var(--app-accent);--bs-btn-border-color:var(--app-accent);--bs-btn-hover-bg:#07665f;--bs-btn-hover-border-color:#07665f;--bs-btn-active-bg:#065a54;--bs-btn-disabled-bg:var(--app-accent);--bs-btn-disabled-border-color:var(--app-accent)}
[data-bs-theme=dark] .btn-primary{--bs-btn-color:#06211e;--bs-btn-hover-color:#06211e;--bs-btn-hover-bg:#6fd6c8;--bs-btn-hover-border-color:#6fd6c8}
.btn-outline-primary{--bs-btn-color:var(--app-accent);--bs-btn-border-color:var(--app-accent);--bs-btn-hover-bg:var(--app-accent);--bs-btn-hover-border-color:var(--app-accent);--bs-btn-active-bg:var(--app-accent)}
.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--app-accent);box-shadow:0 0 0 .2rem rgba(var(--app-accent-rgb),.2)}
.form-check-input:checked{background-color:var(--app-accent);border-color:var(--app-accent)}
.text-up{color:var(--app-up)!important}.text-down{color:var(--app-down)!important}
.nav-pills{--bs-nav-pills-link-active-bg:var(--app-accent)}

body{padding-bottom:env(safe-area-inset-bottom)}
h1,.h1,h2,.h2{letter-spacing:-.02em}
.card{border-color:var(--bs-border-color-translucent)}
.app-card{box-shadow:0 4px 18px rgba(0,0,0,.04)}
[data-bs-theme=dark] .app-card{box-shadow:none}
.eyebrow{font-size:.75rem;letter-spacing:.15em;color:var(--app-accent);font-weight:700;margin-bottom:.5rem;text-transform:uppercase}
.page-head h1{font-size:clamp(1.6rem,4vw,2.2rem);font-weight:800}
.page-head p{color:var(--bs-secondary-color);max-width:44rem}
.side-card{min-width:min(100%,260px);max-width:360px}
.small-muted{font-size:.82rem;color:var(--bs-secondary-color)}
details>summary{cursor:pointer;color:var(--app-accent);font-weight:600}
details[open]>summary{margin-bottom:.75rem}
code{color:var(--app-accent)}
footer.app-footer{color:var(--bs-secondary-color);font-size:.8rem}

/* Navbar */
.app-navbar{background:var(--app-top)}
.app-navbar .navbar-brand .logo{color:#3cc2b1}
.app-navbar .nav-link{color:#c9d6dd;border-radius:.5rem;padding:.45rem .7rem!important}
.app-navbar .nav-link:hover{color:#fff;background:rgba(255,255,255,.08)}
.app-navbar .nav-link.active{color:#fff;background:rgba(255,255,255,.14);font-weight:600}
.top-btn{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:10px;color:#dfe9ee;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);text-decoration:none;position:relative;font-size:1rem;padding:0}
.top-btn:hover{background:rgba(255,255,255,.18);color:#fff}
.top-btn.avatar{background:var(--app-accent);border-color:transparent;color:#fff;font-weight:800}
.top-btn .count{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;border-radius:9px;background:#ff5d52;color:#fff;font-size:11px;font-weight:800;display:grid;place-items:center;padding:0 4px}
.auto-pill{display:inline-flex;align-items:center;gap:.5rem;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);color:#dfe9ee;border-radius:100px;padding:.4rem .8rem;font-size:.82rem;white-space:nowrap}
.auto-pill:hover{background:rgba(255,255,255,.18);color:#fff}
.auto-pill .dot{width:8px;height:8px;border-radius:50%;background:#42c98b;box-shadow:0 0 0 3px #42c98b33}
.auto-pill.running .dot{background:#f5c04a;box-shadow:0 0 0 3px #f5c04a33;animation:pulse 1s infinite alternate}
.auto-pill.off .dot{background:#8a959e;box-shadow:none}
.auto-pill.warn .dot{background:#ff7a70;box-shadow:0 0 0 3px #ff7a7033}
@keyframes pulse{to{opacity:.35}}
.search{position:relative}
.search input{background:rgba(255,255,255,.08) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23a9b8c0' stroke-width='2'%3E%3Ccircle cx='7' cy='7' r='5'/%3E%3Cpath d='m11 11 4 4'/%3E%3C/svg%3E") no-repeat 12px center;border-color:rgba(255,255,255,.18);color:#fff;padding-left:2.3rem}
.search input::placeholder{color:#a9b8c0}
.search input:focus{background-color:rgba(255,255,255,.14);color:#fff}
.search-results{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:1050;background:var(--bs-body-bg);color:var(--bs-body-color);border:1px solid var(--bs-border-color);border-radius:.8rem;box-shadow:0 18px 40px rgba(0,0,0,.25);max-height:60vh;overflow:auto;padding:.35rem}
.search-results button{display:flex;width:100%;align-items:center;gap:.6rem;text-align:left;background:none;border:0;color:inherit;padding:.6rem;border-radius:.5rem}
.search-results button:hover,.search-results button.active{background:var(--app-accent-soft)}
.search-results .sym{font-weight:700;min-width:64px}
.search-results .meta{color:var(--bs-secondary-color);font-size:.75rem;margin-left:auto;text-align:right}
.search-results .lock{color:#b7791f;display:block}
.search-results .hint{padding:.75rem;color:var(--bs-secondary-color);font-size:.85rem}

/* Mobile tab bar */
.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:1030;background:var(--bs-body-bg);border-top:1px solid var(--bs-border-color);padding:.35rem .25rem calc(.35rem + env(safe-area-inset-bottom))}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.7rem;color:var(--bs-secondary-color);text-decoration:none;padding:.2rem 0}
.tabbar a span{font-size:1.15rem;line-height:1}
.tabbar a.active{color:var(--app-accent);font-weight:700}
@media(max-width:1199.98px){main.app-main{padding-bottom:6rem!important}.app-toast{bottom:5.5rem!important}}

/* Status, signals, badges */
.status-pill{flex-shrink:0;display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .6rem;border-radius:100px;font-size:.75rem;font-weight:700;white-space:nowrap}
.status-pill::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.status-pill.entry{background:var(--app-up-soft);color:var(--app-up)}
.status-pill.watch{background:var(--app-watch-soft);color:var(--app-watch)}
.status-pill.caution{background:var(--app-down-soft);color:var(--app-down)}
.status-pill.unknown{background:var(--bs-secondary-bg);color:var(--bs-secondary-color)}
.chg{display:inline-block;padding:.15rem .55rem;border-radius:100px;font-size:.8rem;font-weight:700;white-space:nowrap}
.chg.up{background:var(--app-up-soft);color:var(--app-up)}.chg.down{background:var(--app-down-soft);color:var(--app-down)}
.sig{display:inline-block;font-size:.75rem;padding:.15rem .55rem;border-radius:.4rem;margin:0 .25rem .25rem 0;background:var(--bs-secondary-bg);color:var(--bs-secondary-color);cursor:help}
.sig.good{background:var(--app-up-soft);color:var(--app-up)}.sig.bad{background:var(--app-down-soft);color:var(--app-down)}
.sig.mini{font-size:.68rem;padding:.1rem .45rem}
.sig-line{padding:.55rem .8rem;border-left:3px solid var(--bs-border-color);margin-bottom:.4rem;background:var(--bs-tertiary-bg);border-radius:0 .5rem .5rem 0;font-size:.92rem;list-style:none}
.sig-line.good{border-color:var(--app-up)}.sig-line.bad{border-color:var(--app-down)}
.step{display:inline-grid;place-items:center;width:1.7rem;height:1.7rem;border-radius:50%;background:var(--app-accent);color:#fff;font-size:.9rem;margin-right:.4rem;vertical-align:.1rem}
.spinner-sm{display:inline-block;width:.85rem;height:.85rem;border:2px solid var(--bs-border-color);border-top-color:var(--app-accent);border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle}
@keyframes spin{to{transform:rotate(360deg)}}
.kpi .label{display:block;font-size:.72rem;color:var(--bs-secondary-color);text-transform:uppercase;letter-spacing:.04em}
.kpi .value{display:block;font-size:1.3rem;font-weight:700;margin-top:.15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bar{height:6px;background:var(--bs-secondary-bg);border-radius:6px;overflow:hidden;margin-top:.4rem}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--app-accent),#57d3c2);border-radius:6px}

/* Stock cards */
.stock-card{transition:transform .15s,box-shadow .15s;position:relative}
.stock-card:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(0,0,0,.08)}
.stock-card .card-link{color:inherit;text-decoration:none;display:block}
.rank{display:inline-grid;place-items:center;min-width:1.6rem;height:1.6rem;border-radius:.4rem;background:var(--app-top);color:#fff;font-weight:800;font-size:.8rem}
[data-bs-theme=dark] .rank{background:#2a3742}
.card-actions{position:absolute;top:.6rem;right:.6rem;display:flex;gap:.2rem;z-index:2}
.icon-btn{background:none;border:0;color:var(--bs-secondary-color);padding:.3rem .45rem;font-size:1rem;line-height:1;border-radius:.4rem}
.icon-btn:hover{background:var(--bs-secondary-bg);color:var(--bs-body-color)}
.save-stock.icon-btn[aria-pressed=true]{color:#e3a008}
.remove-stock.icon-btn:hover,.icon-btn.danger:hover{color:var(--app-down)}
.spark{width:100%;height:46px;overflow:visible}
.spark polyline{fill:none;stroke-width:2;vector-effect:non-scaling-stroke}
.spark.up polyline{stroke:var(--app-up)}.spark.down polyline{stroke:var(--app-down)}
.ai-preview{font-size:.85rem;border-top:1px solid var(--bs-border-color);padding-top:.7rem;margin:.7rem 0 0}
.ai-tag{color:var(--app-accent);font-weight:700}

/* Detail page */
.big-price{font-size:clamp(1.6rem,5vw,2rem);font-weight:800}
.chart{position:relative;color:var(--app-accent)}
.chart svg{width:100%;height:auto;display:block}
.chart .grid line{stroke:var(--bs-border-color)}
.chart .grid text,.chart .axis text{fill:var(--bs-secondary-color);font-size:11px}
.chart .area{fill:var(--app-accent);opacity:.09}
.chart .line{fill:none;stroke:var(--app-accent);stroke-width:2;vector-effect:non-scaling-stroke}
.chart .cursor{stroke:var(--bs-secondary-color);stroke-dasharray:3 3}
.chart .tip{position:absolute;pointer-events:none;background:var(--app-top);color:#fff;font-size:.75rem;padding:.35rem .55rem;border-radius:.4rem;white-space:nowrap;transform:translate(-50%,-120%)}
.level{background:var(--bs-tertiary-bg);border-radius:.7rem;padding:.75rem .9rem;height:100%}
.level .label{display:block;font-size:.72rem;color:var(--bs-secondary-color);text-transform:uppercase;letter-spacing:.03em}
.level .value{display:block;font-size:1.15rem;font-weight:700;margin:.15rem 0}
.level small{color:var(--bs-secondary-color);display:block;line-height:1.35}
.position-card.entry{border-color:var(--app-up)}
.ai-text h4{margin:1rem 0 .3rem;font-size:1rem;font-weight:700}
.ai-text p{margin:.35rem 0}
.ai-text ul{margin:.35rem 0;padding-left:1.25rem}
.cite{font-size:.7rem;font-weight:700;text-decoration:none;background:var(--app-accent-soft);padding:.05rem .3rem;border-radius:.3rem;vertical-align:1px}
.forecast{font-size:1.8rem;font-weight:800}

/* Plan and portfolio */
.alloc{display:flex;border-radius:.8rem;overflow:hidden;min-height:64px}
.alloc>div{display:flex;flex-direction:column;justify-content:center;padding:.6rem 1rem;color:#fff;min-width:120px}
.alloc span{opacity:.9;font-size:.82rem}
.alloc-core,.alloc-1{background:var(--app-accent)}.alloc-sat,.alloc-2{background:var(--app-watch)}.alloc-3{background:#c27d1e}
.alloc-sat{flex:1}
@media(max-width:575.98px){.alloc{flex-direction:column}.alloc>div{width:100%!important}}
.opp{background:var(--bs-tertiary-bg)}
.opp dt{font-size:.7rem;color:var(--bs-secondary-color);text-transform:uppercase;font-weight:500}
.opp dd{margin:0 0 .5rem;font-weight:600}
.opp dd small{display:block;font-weight:400;color:var(--bs-secondary-color)}
.radio-card{cursor:pointer;height:100%}
.radio-card input{position:absolute;opacity:0}
.radio-card:has(input:checked){border-color:var(--app-accent);background:var(--app-accent-soft);box-shadow:0 0 0 1px var(--app-accent)}
.row-alert>*{--bs-table-bg-state:var(--app-down-soft)}

/* Radar */
.radar-row .r-levels span{display:block;font-size:.82rem;color:var(--bs-secondary-color)}
.radar-row .r-levels b{color:var(--bs-body-color)}

/* Backtest */
.hbar{display:grid;grid-template-columns:100px 1fr 34px;align-items:center;gap:.5rem;font-size:.78rem}
.hbar span{color:var(--bs-secondary-color);text-align:right}
.hbar i{display:block;height:14px;border-radius:4px;background:var(--app-up);min-width:2px}
.hbar i.neg{background:var(--app-down)}

/* Auth pages */
.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem 1rem}
.auth-card{width:100%;max-width:440px}
.brand-big{font-weight:800;font-size:1.35rem}
.brand-big .logo{color:var(--app-accent)}

.app-toast{position:fixed;bottom:1.4rem;left:50%;transform:translateX(-50%);background:var(--app-top);color:#fff;padding:.75rem 1.1rem;border-radius:.8rem;box-shadow:0 12px 30px rgba(0,0,0,.25);font-size:.9rem;z-index:1090;display:flex;gap:.75rem;align-items:center;max-width:calc(100% - 2rem)}
[hidden]{display:none!important}
