:root{--bg:#f3f5f7;--card:#fff;--text:#101114;--muted:#6d727a;--line:#e7e9ed;--accent:#111;--green:#0b8f55;--red:#d33a43;--amber:#a66a00}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);padding-bottom:82px}.shell{max-width:1180px;margin:0 auto;padding:18px}.topbar{position:sticky;top:0;z-index:20;background:rgba(15,16,18,.96);color:#fff;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;backdrop-filter:blur(12px)}.brand{font-weight:800;letter-spacing:-.02em}.topbar a{color:#fff;text-decoration:none;font-size:14px}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}.card{background:var(--card);border:1px solid rgba(16,17,20,.04);border-radius:22px;padding:20px}.hero{grid-column:span 5}.allocation{grid-column:span 7;min-height:0}.full{grid-column:1/-1}.metric-label{font-size:13px;color:var(--muted);margin-bottom:7px}.metric{font-size:40px;font-weight:800;letter-spacing:-.05em}.metric-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px}.mini{padding:12px;border-radius:16px;background:#f7f8fa}.mini b{display:block;font-size:17px;margin-top:3px}.positive{color:var(--green)}.negative{color:var(--red)}.muted{color:var(--muted)}.section-title{font-size:23px;font-weight:800;margin:0 0 14px}.holdings{display:grid;gap:10px}.holding{display:grid;grid-template-columns:minmax(0,2fr) .9fr .8fr .8fr;align-items:center;gap:10px;padding:15px 4px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}.holding:last-child{border-bottom:0}.holding-name{font-weight:700}.badge{display:inline-flex;padding:5px 9px;border-radius:999px;background:#f0f1f3;color:#454a51;font-size:12px;font-weight:700}.value{text-align:right}.sub{font-size:12px;color:var(--muted);margin-top:3px}.bottom-nav{position:fixed;left:50%;bottom:12px;transform:translateX(-50%);z-index:50;width:min(560px,calc(100% - 24px));background:rgba(15,16,18,.96);border-radius:18px;padding:7px;display:grid;grid-template-columns:repeat(3,1fr);box-shadow:0 12px 32px rgba(0,0,0,.18);backdrop-filter:blur(16px)}.bottom-nav a{padding:10px 8px;border-radius:12px;text-align:center;color:#aeb2b8;text-decoration:none;font-size:13px;font-weight:700}.bottom-nav a.active{background:#fff;color:#111}.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.chip,.btn{border:1px solid var(--line);background:#fff;color:#111;border-radius:12px;padding:9px 11px;font:inherit;font-size:13px;cursor:pointer}.chip.on{background:#111;color:#fff;border-color:#111}.btn.primary{background:#111;color:#fff;border-color:#111}.btn.danger{color:var(--red)}.chart-wrap{height:390px}.asset-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.asset-price{font-size:34px;font-weight:800}.recommendation{border-left:4px solid #111;padding-left:14px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}label{font-size:13px;font-weight:700}input,select,textarea{width:100%;margin-top:6px;border:1px solid #dfe2e6;border-radius:12px;padding:11px 12px;background:#fff;font:inherit}textarea{min-height:100px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:650px}th,td{padding:12px 10px;border-bottom:1px solid var(--line);text-align:left;font-size:14px}th{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.empty{padding:25px;text-align:center;color:var(--muted)}
@media(max-width:780px){.shell{padding:12px}.hero,.allocation{grid-column:1/-1}.allocation{min-height:0}.metric{font-size:36px}.metric-row{grid-template-columns:1fr 1fr}.holding{grid-template-columns:minmax(0,1fr) auto}.holding .hide-mobile{display:none}.chart-wrap{height:320px}.form-grid{grid-template-columns:1fr}.card{padding:16px;border-radius:18px}.asset-head{display:block}.asset-price{margin-top:10px}}

/* Global cockpit and navigation UI. Data remains user-specific; presentation is shared. */
.topbar{background:#315f63!important;color:#fff!important;padding:14px 18px!important}.topbar a{color:#fff!important}.cockpit-card{background:#fff}.cockpit-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.market-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0}.market-pill{padding:14px;border-radius:18px;background:#f8f1f1}.market-pill.is-open{background:#edf7f2}.market-pill span,.market-pill strong,.market-pill small,.market-pill em{display:block}.market-pill strong{margin-top:4px;color:#b94b58}.market-pill.is-open strong{color:#087443}.market-pill small{color:#6d727a;margin-top:4px}.cockpit-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.cockpit-links>a{display:block;padding:14px;border:1px solid #e2e6e7;border-radius:16px;background:#fff;color:#27363a;text-decoration:none;box-shadow:0 2px 8px rgba(15,23,42,.04)}.cockpit-links>a:hover{border-color:#86aaa8}.cockpit-links b,.cockpit-links strong,.cockpit-links span{display:block}.cockpit-links strong{font-size:16px;margin-top:6px}.cockpit-links span{font-size:12px;color:#6d727a;margin-top:4px}.app-menu-nav{background:#315f63!important}.app-menu-nav .menu-toggle{background:#315f63!important;color:#fff!important}.premium-nav-inner a{color:#fff!important}.premium-nav-inner a.active{background:#edf7f2!important;color:#315f63!important}.broker-card,.broker-summary div,.metric-card{color:#27363a}@media(max-width:520px){.cockpit-head{display:block}.cockpit-head .btn{display:block;margin-top:12px;text-align:center}.market-strip{grid-template-columns:1fr}.cockpit-links{grid-template-columns:1fr 1fr}.cockpit-links>a{padding:12px 10px}.cockpit-links strong{font-size:14px}}


/* =========================================================
   Mobile Portfolio Quote
   ========================================================= */

.mobile-quote{
    display:none;
}

@media(max-width:780px){

    .holding{
        grid-template-columns:minmax(0,1fr) auto;
        align-items:center;
        gap:12px;
    }

    .mobile-quote{
        display:flex;
        align-items:center;
        gap:7px;
        flex-wrap:wrap;
        margin-top:9px;
        font-size:13px;
    }

    .mobile-quote strong{
        font-size:17px;
        color:var(--text);
    }

    .mobile-quote-status{
        color:var(--muted);
        font-size:11px;
        font-weight:600;
    }
}


/* Live status */
.live-dot{
    color:var(--green);
    font-size:9px;
    vertical-align:1px;
}

/* IBKR tables stay readable on narrow phones and can be swiped horizontally. */
.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:12px}
.table-wrap table{min-width:760px}
.table-wrap th,.table-wrap td{white-space:nowrap}
@media(max-width:640px){.table-wrap table{font-size:14px}}
.broker-card .badge{background:#eaf0ff;color:#315f9d}.badge.PUT{background:#fff0f0;color:#b4232f}.badge.CALL{background:#eaf8f0;color:#087443}.gain{color:#087443}.loss{color:#b4232f}
.sector-card{grid-column:span 6}.sector-row{display:grid;gap:7px;margin:14px 0}.sector-row>div:first-child{display:flex;justify-content:space-between;gap:12px;font-size:13px}.sector-row span{color:var(--muted)}.sector-bar{height:9px;border-radius:99px;background:#e8efee;overflow:hidden}.sector-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#2f5960,#86aaa8)}
.allocation-sectors{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.allocation-sector-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.allocation-sectors .sector-row{margin:10px 0}.allocation-sectors .sector-row>div:first-child{font-size:12px}.allocation-sectors .sector-bar{height:7px}
.allocation-sectors .sector-row{background:#f7faf9;border:1px solid var(--line);border-radius:16px;padding:12px 13px;margin:10px 0}.allocation-sectors .sector-row-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:10px;font-size:12px}.allocation-sectors .sector-name{min-width:0}.allocation-sectors .sector-meta{white-space:nowrap;color:var(--muted)}.allocation-sectors .sector-meta i{font-style:normal;padding:0 3px}.allocation-sectors .sector-bar{margin-top:10px}.etf-idea-extra{display:none}.etf-idea-extra.is-visible{display:grid}.etf-more{margin-top:12px}.chart-wrap{background:#f8fbfa;border:1px solid var(--line);border-radius:16px;padding:8px}.chart-wrap canvas{display:block;width:100%!important;height:320px!important}
.allocation-sectors .sector-row>div:first-child{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;align-items:baseline!important;column-gap:12px!important;font-size:13px!important}.allocation-sectors .sector-row>div:first-child b{min-width:0!important}.allocation-sectors .sector-row>div:first-child span{white-space:nowrap!important;margin-left:0!important;color:var(--muted)!important}.allocation-sectors .sector-row{background:#f7faf9!important;border:1px solid var(--line)!important;border-radius:16px!important;padding:13px!important;margin:10px 0!important}
@media(max-width:780px){.sector-card{grid-column:1/-1}.sector-row>div:first-child{font-size:12px}}
@media(max-width:520px){.market-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.market-pill{padding:12px 10px}.market-pill small,.market-pill em{font-size:11px}}

/* Canonical dashboard components.
   Keep these in the stylesheet that every live page actually loads. */
.section-heading-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.section-heading-row .section-title{margin:0}.section-kicker{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:#f0f2f4;color:#596168;font-size:12px;font-weight:750}
.allocation-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.allocation-stat{min-width:0;padding:14px;border-radius:16px;background:#f7f8fa;border:1px solid transparent}.allocation-stat span,.allocation-stat small{display:block;color:var(--muted);font-size:12px}.allocation-stat b{display:block;font-size:24px;line-height:1.12;margin:4px 0;white-space:nowrap}.allocation-stat.stocks{background:#edf7f2;border-color:#d6eee3}.allocation-stat.etfs{background:#eef3fb;border-color:#dce6f7}.allocation-stat.other{background:#faf6ec;border-color:#f1e6c9}
.performance-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:8px 0 2px}.performance-summary>div{min-width:0;padding:13px 14px;border-radius:16px;background:#f7f8fa}.performance-summary span{display:block;color:var(--muted);font-size:12px}.performance-summary b{display:block;font-size:21px;line-height:1.18;margin-top:4px;overflow-wrap:anywhere}
.chart-disclosure{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}.chart-disclosure summary{cursor:pointer;font-weight:750;color:var(--accent);font-size:13px;list-style:none}.chart-disclosure summary::-webkit-details-marker{display:none}.chart-disclosure summary:before{content:'+';display:inline-grid;place-items:center;width:20px;height:20px;margin-right:7px;border-radius:50%;background:#edf1f3;color:var(--accent)}.chart-disclosure[open] summary:before{content:'−'}.allocation-chart{height:210px;margin-top:10px}.chart-help{margin:0 0 2px;line-height:1.45}.performance-card .chart-disclosure{margin-top:8px}
@media(max-width:780px){.allocation-summary{grid-template-columns:1fr 1fr}.allocation-stat.other{grid-column:1/-1}.performance-summary{grid-template-columns:1fr 1fr}}
@media(max-width:420px){.allocation-stat{padding:12px}.allocation-stat b{font-size:21px}.performance-summary>div{padding:12px}}

/* Dashboard position states live here because this is the canonical stylesheet. */
.holding.gain-positive{background:linear-gradient(90deg,rgba(22,131,95,.08),transparent 72%);border-left:3px solid var(--green);padding-left:11px;border-radius:14px}
.holding.gain-negative{background:linear-gradient(90deg,rgba(199,82,91,.08),transparent 72%);border-left:3px solid var(--red);padding-left:11px;border-radius:14px}
.holding.holding-stock{background:linear-gradient(90deg,rgba(22,131,95,.08),transparent 72%);border-left:3px solid var(--green);padding-left:11px;border-radius:14px}
.holding.holding-etf{background:linear-gradient(90deg,rgba(82,115,181,.09),transparent 72%);border-left:3px solid #6985bd;padding-left:11px;border-radius:14px}

/* Shared stock/ETF portfolio hubs. Tables are deliberately replaced by
   responsive cards so narrow phones never need horizontal scrolling. */
.portfolio-hub{max-width:920px;padding-bottom:42px}.portfolio-hub>.card{margin-bottom:16px}.portfolio-hero,.portfolio-section{padding:22px}.portfolio-hero{overflow:hidden;position:relative}.portfolio-hero:after{content:'';position:absolute;right:-54px;top:-68px;width:180px;height:180px;border-radius:50%;pointer-events:none}.portfolio-hero-etf{background:linear-gradient(145deg,#fff 0%,#f5f7fd 100%)}.portfolio-hero-etf:after{background:rgba(105,133,189,.08)}.portfolio-hero-stock{background:linear-gradient(145deg,#fff 0%,#f2faf6 100%)}.portfolio-hero-stock:after{background:rgba(22,131,95,.07)}.portfolio-heading{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.portfolio-heading h1,.portfolio-section-head h2,.portfolio-research-cta h2{margin:5px 0 5px;font-size:28px;line-height:1.08;letter-spacing:-.03em}.portfolio-heading p,.portfolio-intro,.portfolio-research-cta p{margin:0;color:var(--muted);line-height:1.5}.portfolio-kicker{display:inline-flex;align-items:center;width:max-content;padding:5px 9px;border-radius:999px;background:#edf3f2;color:#315f63;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.portfolio-add{position:relative;z-index:1;white-space:nowrap}.portfolio-kpis{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:19px}.portfolio-kpi{min-width:0;padding:14px;border:1px solid #e6ebec;border-radius:17px;background:rgba(255,255,255,.82)}.portfolio-kpi span,.portfolio-kpi small{display:block;color:var(--muted);font-size:11px}.portfolio-kpi b{display:block;margin:5px 0 3px;font-size:22px;line-height:1.1;overflow-wrap:anywhere}.portfolio-section-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}.portfolio-section-head h2{font-size:23px;margin-bottom:0}.portfolio-count{display:grid;place-items:center;min-width:34px;height:34px;padding:0 10px;border-radius:999px;background:#edf3f2;color:#315f63;font-size:13px;font-weight:800}.portfolio-inline-link{padding:8px 11px;border:1px solid var(--line);border-radius:12px;color:#315f63;font-size:12px;font-weight:750;text-decoration:none;white-space:nowrap}.portfolio-position-list{display:grid;gap:9px}.portfolio-position{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto 18px;align-items:center;gap:12px;padding:14px 13px;border:1px solid var(--line);border-left-width:4px;border-radius:16px;color:inherit;text-decoration:none}.portfolio-position.is-etf{background:#f4f7fd;border-left-color:#6985bd}.portfolio-position.is-stock{background:#f2f9f6;border-left-color:#16835f}.portfolio-position>div:first-child{display:grid;gap:4px;min-width:0}.portfolio-position>div:first-child>b{font-size:16px;line-height:1.25}.portfolio-position small{color:var(--muted);font-size:11px}.portfolio-position-value{display:grid;gap:3px;text-align:right}.portfolio-position-value>b{font-size:17px;white-space:nowrap}.portfolio-position>span{font-size:23px;color:#91a0a3}.portfolio-empty{padding:27px 15px;border:1px dashed #dfe6e5;border-radius:16px;background:#f8faf9;color:var(--muted);text-align:center}.portfolio-trade-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.portfolio-trade-card{min-width:0;padding:13px;border:1px solid var(--line);border-radius:16px}.portfolio-trade-card.is-etf{background:#eef3fb;border-color:#dce6f7}.portfolio-trade-card.is-stock{background:#edf7f2;border-color:#d6eee3}.portfolio-trade-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.portfolio-trade-head>div{display:grid;gap:3px;min-width:0}.portfolio-trade-head small{color:var(--muted);font-size:10px}.portfolio-trade-head b{font-size:14px;line-height:1.25}.portfolio-trade-head>span{flex:0 0 auto;padding:5px 8px;border-radius:999px;background:rgba(255,255,255,.78);font-size:10px;font-weight:800}.portfolio-trade-facts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.portfolio-trade-facts>span{display:grid;gap:2px}.portfolio-trade-facts small{color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.05em}.portfolio-trade-facts b{font-size:13px}.portfolio-more{margin-top:10px}.portfolio-more>summary{cursor:pointer;list-style:none;padding:11px 13px;border:1px solid #dce7e5;border-radius:13px;background:#f2f7f6;color:#315f63;font-size:12px;font-weight:800}.portfolio-more>summary::-webkit-details-marker{display:none}.portfolio-more>summary:after{content:'+';float:right}.portfolio-more[open]>summary:after{content:'−'}.portfolio-more>.portfolio-trade-grid{margin-top:10px}.portfolio-idea-list{display:grid;gap:0;margin-top:13px}.portfolio-idea{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px 2px;border-bottom:1px solid var(--line)}.portfolio-idea:last-child{border-bottom:0}.portfolio-idea>div:first-child{display:grid;gap:3px}.portfolio-idea>div:first-child>b{font-size:15px}.portfolio-idea small,.portfolio-idea p{font-size:11px;color:var(--muted)}.portfolio-idea p{margin:2px 0 0}.portfolio-idea-quote{display:grid;justify-items:end;gap:3px;text-align:right}.portfolio-idea-quote>b{white-space:nowrap}.portfolio-idea-quote>span{padding:4px 7px;border-radius:999px;background:#eef2f3;color:#586268;font-size:9px;font-weight:750}.portfolio-idea-extra{display:none}.portfolio-idea-extra.is-visible{display:grid}.portfolio-ideas-more{margin-top:12px}.portfolio-research-cta{display:flex;align-items:center;justify-content:space-between;gap:20px;background:linear-gradient(135deg,#f5faf8,#fff)}.portfolio-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.portfolio-intro{font-size:13px}
@media(max-width:640px){.portfolio-hub{padding:12px}.portfolio-hero,.portfolio-section{padding:16px}.portfolio-heading{display:grid}.portfolio-heading h1{font-size:25px}.portfolio-add{width:max-content}.portfolio-kpis{grid-template-columns:1fr 1fr}.portfolio-kpi:last-child{grid-column:1/-1}.portfolio-kpi b{font-size:19px}.portfolio-section-head h2{font-size:21px}.portfolio-trade-grid{grid-template-columns:1fr}.portfolio-position{grid-template-columns:minmax(0,1fr) auto 13px;padding:13px 11px}.portfolio-position-value>b{font-size:15px}.portfolio-research-cta{display:grid}.portfolio-actions{justify-content:flex-start}.portfolio-idea{grid-template-columns:minmax(0,1fr) auto}.portfolio-intro{font-size:12px}}
