:root{color-scheme:light;--bg:#f4f7f6;--body-gradient:linear-gradient(180deg,#f9fbfb 0%,var(--bg) 34%);--panel:#fff;--panel-strong:#eef4f1;--text:#17202a;--muted:#64707d;--line:#d8e0e5;--input-bg:#fff;--asset-bg:#fff;--asset-active-bg:#edf8f3;--chart-bg:#fbfcfd;--chart-grid:#dde5ea;--accent:#0f8b6f;--accent-strong:#096b56;--danger:#b9384e;--danger-soft:#fae7eb;--danger-soft-hover:#f5d0d8;--positive:#0f8b6f;--negative:#b9384e;--warning:#a36a00;--shadow:0 16px 36px rgba(23,32,42,.08);--focus-ring:rgba(15,139,111,.16)}:root[data-theme=dark]{color-scheme:dark;--bg:#0f151b;--body-gradient:linear-gradient(180deg,#151e27 0%,var(--bg) 38%);--panel:#151d24;--panel-strong:#101820;--text:#e6edf3;--muted:#98a6b3;--line:#293743;--input-bg:#0f151b;--asset-bg:#111a22;--asset-active-bg:#12352f;--chart-bg:#0e151c;--chart-grid:#263440;--accent:#2bbf9b;--accent-strong:#20a585;--danger:#ff7188;--danger-soft:#351922;--danger-soft-hover:#45202b;--positive:#4bd0aa;--negative:#ff7188;--warning:#e7b15f;--shadow:0 18px 42px rgba(0,0,0,.28);--focus-ring:rgba(43,191,155,.2)}*{box-sizing:border-box}body,html{min-height:100%;margin:0;overflow-x:hidden}button,input{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}body{background:var(--body-gradient),var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.appShell{width:min(1240px,calc(100% - 32px));min-width:0;margin:0 auto;padding:28px 0 48px}.authShell{display:grid;min-height:100vh;place-items:center}.authPanel{display:grid;width:min(880px,100%);min-width:0;grid-template-columns:minmax(0,1fr) 360px;grid-gap:32px;gap:32px;align-items:center}.eyebrow{margin:0 0 10px;color:var(--accent);font-size:.78rem;font-weight:800;text-transform:uppercase}.eyebrow,h1,h2{letter-spacing:0}h1{font-size:clamp(2rem,5vw,4rem);line-height:1}h1,h2{margin:0}h2{font-size:1.02rem;line-height:1.3}.authForm,.dataPanel,.marketList,.metric,.tradeSurface{min-width:0;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:var(--shadow)}.authForm{display:grid;grid-gap:16px;gap:16px;padding:22px}.segmented{display:grid;grid-template-columns:1fr 1fr;grid-gap:4px;gap:4px;padding:4px;border:1px solid var(--line);border-radius:8px;background:var(--panel-strong)}.account button,.buyButton,.primaryButton,.segmented button,.sellButton,.themeButton{min-height:40px;border:0;border-radius:6px;font-weight:700}.segmented button{background:transparent;color:var(--muted)}.segmented .active{background:var(--panel);color:var(--text)}label{display:grid;grid-gap:7px;gap:7px;color:var(--muted);font-size:.86rem;font-weight:700}input{width:100%;min-height:42px;border:1px solid var(--line);border-radius:6px;background:var(--input-bg);color:var(--text);padding:0 12px;outline:none}input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus-ring)}.buyButton,.primaryButton{background:var(--accent);color:#fff}.buyButton:hover,.primaryButton:hover{background:var(--accent-strong)}.oauthActions{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.oauthButton{display:inline-flex;min-height:40px;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:6px;background:var(--panel-strong);color:var(--text);font-weight:800}.oauthButton:hover{border-color:var(--accent)}.sellButton{background:var(--danger-soft);color:var(--danger)}.sellButton:hover{background:var(--danger-soft-hover)}.statusLine{margin:0;color:var(--warning);font-size:.92rem;font-weight:700}.dashboardStatus{margin:14px 0 0}.account,.sectionHeader,.tableRow,.topbar,.tradeControls{display:flex;align-items:center}.topbar{justify-content:space-between;gap:18px}.account{gap:12px;justify-content:flex-end}.accountIdentity{display:inline-flex;min-width:0;align-items:center;gap:8px}.accountIdentity strong{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatarSmall,.profileAvatar{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;overflow:hidden;border:1px solid var(--line);border-radius:50%;background:var(--panel-strong);background-position:50%;background-size:cover;color:var(--accent);font-weight:900}.avatarSmall{width:34px;height:34px;font-size:.78rem}.account span{color:var(--muted)}.account button{background:var(--panel)}.account button,.themeButton{padding:0 14px;border:1px solid var(--line);color:var(--text)}.themeButton{background:var(--panel-strong)}.themeButton:hover{border-color:var(--accent)}.viewTabs{display:inline-grid;grid-template-columns:repeat(2,minmax(72px,1fr));gap:4px;padding:4px;border:1px solid var(--line);border-radius:8px;background:var(--panel-strong)}.viewTabs button{min-height:32px;border:0;border-radius:6px;background:transparent;color:var(--muted);font-weight:800;padding:0 10px}.viewTabs .active{background:var(--panel);color:var(--text)}.summaryGrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:12px;gap:12px;margin-top:24px}.metric{display:grid;grid-gap:8px;gap:8px;padding:16px}.metric span,.sectionHeader span,.tableRow small{color:var(--muted);font-size:.84rem}.metric strong{font-size:1.45rem}.marketLayout{display:grid;grid-template-columns:380px minmax(0,1fr);grid-gap:14px;gap:14px;margin-top:14px;min-width:0}.dataPanel,.marketList,.tradeSurface{width:100%;min-width:0;padding:16px}.sectionHeader{justify-content:space-between;gap:12px;margin-bottom:14px}.assetGroupTabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:6px;gap:6px;margin-bottom:10px;padding:4px;border:1px solid var(--line);border-radius:8px;background:var(--panel-strong)}.assetGroupTabs button{display:flex;min-width:0;min-height:38px;align-items:center;justify-content:space-between;gap:8px;border:0;border-radius:6px;background:transparent;color:var(--muted);font-weight:800;padding:0 10px}.assetGroupTabs .active{background:var(--panel);color:var(--text)}.assetGroupTabs span{display:inline-flex;min-width:24px;justify-content:center;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:.76rem;padding:2px 7px}.marketSchedule{display:grid;min-width:0;grid-gap:4px;gap:4px;margin-bottom:10px;border:1px solid var(--line);border-radius:6px;background:var(--panel-strong);padding:10px 12px}.marketSchedule strong{color:var(--text);font-size:.86rem;line-height:1.3}.marketSchedule span{color:var(--muted);font-size:.78rem;font-weight:700;line-height:1.35}.marketSchedule.open strong{color:var(--positive)}.marketSchedule.closed strong{color:var(--warning)}.assetRows,.table{display:grid;width:100%;min-width:0;max-width:100%;grid-gap:8px;gap:8px}.assetRow{display:flex;width:100%;min-width:0;min-height:64px;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:6px;background:var(--asset-bg);color:var(--text);padding:10px 12px;text-align:left}.assetRow.active{border-color:rgba(15,139,111,.48);background:var(--asset-active-bg)}.assetRow span:first-child,.tableRow span:first-child{display:grid;min-width:0;grid-gap:4px;gap:4px}.assetPrice{display:grid;min-width:148px;max-width:100%;grid-gap:4px;gap:4px;justify-items:end;text-align:right}.assetPrice strong{font-size:.96rem}.assetBadges{display:flex!important;min-width:0;flex-wrap:wrap;gap:5px}.assetRiskBadge{width:-moz-fit-content;width:fit-content;max-width:100%;border:1px solid var(--line);border-radius:999px;background:var(--panel-strong);color:var(--muted);padding:2px 7px;font-size:.72rem;font-weight:900;line-height:1.25}.assetRiskBadge.volatile{border-color:rgba(163,106,0,.32);background:rgba(163,106,0,.08);color:var(--warning)}.assetRow small,.tableRow small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quoteHeader{align-items:start}.quoteHeader>span{display:grid;min-width:0;grid-gap:6px;gap:6px;color:var(--text)}.quoteHeader>strong{font-size:1.08rem;text-align:right;white-space:nowrap}.quoteMeta{display:flex;min-width:0;max-width:100%;flex-wrap:wrap;gap:5px;color:var(--muted);font-size:.78rem;font-weight:700;line-height:1.25}.quoteMeta span{display:inline-flex;min-width:0;max-width:100%;align-items:center;border:1px solid var(--line);border-radius:999px;background:var(--panel-strong);padding:3px 7px;white-space:nowrap}.quoteMeta.compact{justify-content:flex-end;gap:4px}.quoteMeta.compact span{max-width:128px;overflow:hidden;text-overflow:ellipsis}.quoteMeta.fresh span:first-child{color:var(--positive)}.quoteMeta.cached span:first-child{color:var(--accent)}.quoteMeta.market_closed span:first-child,.quoteMeta.market_closed span:last-child,.quoteMeta.stale span:first-child,.quoteMeta.stale span:last-child,.quoteWarning{color:var(--warning)}.quoteWarning{margin:-2px 0 12px;border:1px solid rgba(163,106,0,.34);border-radius:6px;background:rgba(163,106,0,.08);padding:10px 12px;font-size:.86rem;font-weight:700;line-height:1.4}.chartToolbar{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:12px;margin:0 0 10px}.chartToolbar>span{display:grid;min-width:0;grid-gap:2px;gap:2px;color:var(--muted);font-size:.84rem;font-weight:800}.chartToolbar small{font-size:.74rem;font-weight:800;text-transform:none}.chartRangeTabs{display:inline-grid;min-width:0;grid-template-columns:repeat(3,44px);gap:4px;padding:4px;border:1px solid var(--line);border-radius:8px;background:var(--panel-strong)}.chartRangeTabs button{min-height:30px;border:0;border-radius:6px;background:transparent;color:var(--muted);font-size:.82rem;font-weight:900}.chartRangeTabs .active{background:var(--panel);color:var(--text)}.chart{position:relative;width:100%;min-width:0;height:260px;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--chart-bg);cursor:crosshair;touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chartMeta,.chartScale{position:absolute;z-index:1;display:flex;min-width:0;max-width:calc(100% - 24px);justify-content:space-between;gap:10px;color:var(--muted);font-size:.78rem;font-weight:700;pointer-events:none}.chartMeta span,.chartScale span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chartMeta{top:10px;left:12px;right:12px}.chartScale{right:12px;bottom:10px;left:12px}.chart svg{display:block;width:100%;height:100%}.chart line{stroke:var(--chart-grid);stroke-width:.5}.chart .chartCursor{stroke:var(--accent);stroke-dasharray:3 3;stroke-width:.8;opacity:.7}.chart polyline{fill:none;stroke:var(--accent);stroke-linecap:round;stroke-linejoin:round;stroke-width:2.4}.chart circle{fill:var(--accent)}.chart .chartPoint{fill:var(--panel);stroke:var(--accent);stroke-width:1.2}.chartTooltip{position:absolute;z-index:2;display:grid;min-width:132px;max-width:min(190px,calc(100% - 24px));grid-gap:3px;gap:3px;border:1px solid var(--line);border-radius:6px;background:var(--panel);box-shadow:var(--shadow);color:var(--text);padding:8px 10px;pointer-events:none;transform:translateX(8px)}.chartTooltip.left{transform:translateX(calc(-100% - 8px))}.chartTooltip strong{font-size:.92rem;line-height:1.25}.chartTooltip span{color:var(--muted);font-size:.78rem;font-weight:800;white-space:nowrap}.tradeControls{min-width:0;flex-wrap:wrap;gap:10px;margin-top:14px}.tradeControls label{flex:1 1}.tradeControls button{align-self:end;padding:0 18px}.orderPreview{display:grid;min-width:220px;max-width:100%;flex:1.2 1;grid-gap:3px;gap:3px;border:1px solid var(--line);border-radius:6px;background:var(--panel-strong);padding:9px 11px}.orderPreview small,.orderPreview span{color:var(--muted);font-size:.78rem;font-weight:700}.orderPreview strong{line-height:1.3}.previewBreakdown{display:grid;grid-gap:4px;gap:4px;margin-top:4px}.previewBreakdown span{display:flex;min-width:0;justify-content:space-between;gap:8px;border-top:1px solid var(--line);padding-top:5px;line-height:1.35}.previewBreakdown strong{flex-shrink:0;color:var(--text)}.warningText{color:var(--warning)!important}.tradeControls button:disabled{cursor:not-allowed;opacity:.52}.executionNotice{display:grid;grid-gap:4px;gap:4px;margin-top:12px;border:1px solid var(--line);border-radius:6px;background:var(--panel-strong);padding:12px}.executionNotice small,.executionNotice span{color:var(--muted);font-size:.84rem}.executionNotice strong{line-height:1.35}.executionGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:8px;gap:8px;margin:4px 0}.executionGrid>span{display:grid;min-width:0;grid-gap:2px;gap:2px;border:1px solid var(--line);border-radius:6px;background:var(--panel);padding:8px}.executionGrid small,.executionGrid strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.executionDelta.higher{color:var(--warning)}.executionDelta.lower{color:var(--positive)}.tradeSideBadge{display:inline-flex;width:-moz-fit-content;width:fit-content;max-width:100%;align-items:center;justify-content:center;border-radius:999px;padding:2px 8px;font-size:.74rem;font-weight:900;line-height:1.3;white-space:nowrap}.tradeSideBadge.buy{background:rgba(15,139,111,.12);color:var(--positive)}.tradeSideBadge.sell{background:var(--danger-soft);color:var(--danger)}.tradeSideBadge.neutral{background:var(--panel-strong);color:var(--muted)}.dataGrid{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:14px}.dataGrid,.profileLayout{display:grid;grid-gap:14px;gap:14px}.profileLayout{margin-top:24px}.profileHero{display:flex;align-items:center;gap:18px;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:var(--shadow);padding:20px}.profileHero h2{margin-bottom:6px;font-size:1.55rem}.profileHero p,.profileHero small{display:block;margin:0;color:var(--muted);font-weight:700}.profileAvatar{width:88px;height:88px;font-size:1.4rem}.profileGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:14px;gap:14px}.providerList{display:flex;flex-wrap:wrap;gap:8px}.providerList span{border:1px solid var(--line);border-radius:999px;background:var(--panel-strong);color:var(--text);padding:7px 10px;font-size:.84rem;font-weight:800}.passwordForm{display:grid;grid-gap:12px;gap:12px}.dangerButton,.passwordForm .primaryButton{min-height:42px;border:0;border-radius:6px}.dangerPanel{border-color:rgba(184,62,62,.26)}.deleteAccountBox{display:grid;grid-gap:12px;gap:12px}.deleteAccountBox p{margin:0;color:var(--muted);font-size:.86rem;font-weight:700;line-height:1.45}.dangerButton{background:var(--danger-soft);color:var(--danger);font-weight:900}.dangerButton:disabled{cursor:not-allowed;opacity:.5}.profileStats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:12px;gap:12px}.profileStats .metric strong{overflow-wrap:anywhere;font-size:1.08rem;line-height:1.35}.tableRow{min-height:58px;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding:8px 0}.tableRow:last-child{border-bottom:0}.tableRow>span{min-width:0;text-align:right}.tableRow>span:first-child{text-align:left}.historyMeta{display:flex;min-width:0;align-items:center;gap:6px}.portfolioSummary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:10px;overflow:hidden;border:1px solid var(--line);border-radius:6px;background:var(--panel-strong)}.portfolioSummary span{display:grid;min-width:0;grid-gap:3px;gap:3px;padding:8px 10px;border-right:1px solid var(--line)}.portfolioSummary span:last-child{border-right:0}.portfolioSummary small,.positionMeta small,.positionValue small,.tradeAmounts small{color:var(--muted);font-size:.76rem;font-weight:800}.portfolioSummary strong,.positionValue strong,.tradeAmounts strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portfolioTable{display:grid}.portfolioRow{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(92px,.9fr) minmax(88px,.8fr);align-items:start}.positionMeta{display:flex;min-width:0;flex-wrap:wrap;gap:5px 8px}.positionMeta small{white-space:nowrap}.portfolioRow .pnl,.positionValue,.tradeAmounts{display:grid;min-width:0;grid-gap:3px;gap:3px}.portfolioRow .pnl small{color:inherit;font-size:.76rem;font-weight:800}.equityCurve{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(110px,.8fr);grid-gap:10px;gap:10px;margin-bottom:10px;border:1px solid var(--line);border-radius:6px;background:var(--panel-strong);padding:10px}.equityCurve svg{width:100%;height:76px;overflow:visible}.equityCurve path{fill:none;stroke:var(--accent);stroke-linecap:round;stroke-linejoin:round;stroke-width:3;vector-effect:non-scaling-stroke}.equityCurve div{display:grid;min-width:0;align-content:center;grid-gap:3px;gap:3px;text-align:right}.equityCurve small,.equityCurve span{color:var(--muted);font-size:.76rem;font-weight:800}.leaderboardTable{display:grid;grid-gap:2px;gap:2px}.leaderboardRow{display:grid;min-height:52px;grid-template-columns:minmax(120px,1.4fr) minmax(86px,1fr) minmax(86px,1fr);align-items:center;grid-gap:10px;gap:10px;border-bottom:1px solid var(--line);padding:8px 0}.leaderboardRow:last-child{border-bottom:0}.leaderboardRow>span{min-width:0;text-align:right}.leaderboardRow>span:first-child{display:grid;grid-gap:4px;gap:4px;text-align:left}.leaderboardRow small,.leaderboardRow strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leaderboardRow small{color:var(--muted);font-size:.8rem;font-weight:700}.leaderboardHeader{min-height:auto;color:var(--muted);font-size:.76rem;font-weight:900;text-transform:uppercase}.emptyLine{margin:0;color:var(--muted);font-size:.92rem}.pnl{color:var(--text);font-weight:700}.pnl.positive{color:var(--positive)}.pnl.negative{color:var(--negative)}@media (max-width:940px){.authPanel,.dataGrid,.marketLayout,.profileGrid,.profileStats,.summaryGrid{grid-template-columns:1fr}.account,.topbar,.tradeControls{align-items:stretch;flex-direction:column}.account{width:100%}.accountIdentity{justify-content:center}.viewTabs{width:100%}.chartToolbar{align-items:stretch;flex-direction:column}.chartRangeTabs{grid-template-columns:repeat(3,1fr);width:100%}.account button,.tradeControls button{width:100%}.profileHero{align-items:flex-start}}@media (max-width:720px){.appShell{width:min(100% - 20px,560px);padding:16px 0 32px}.authShell{place-items:start center}.authPanel{gap:20px;align-items:start}.authPanel h1,.topbar h1{font-size:2rem;line-height:1.05}.authForm,.dataPanel,.marketList,.metric,.tradeSurface{box-shadow:none}.topbar{align-items:stretch}.account{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.account>span:not(.viewTabs),.accountIdentity{grid-column:1/-1;justify-content:flex-start}.viewTabs{grid-column:1/-1}.summaryGrid{gap:8px;margin-top:16px}.dataGrid,.marketLayout{gap:10px;margin-top:10px}.dataPanel,.marketList,.tradeSurface{overflow:hidden;padding:12px}.assetRows{max-width:100%;grid-auto-columns:minmax(240px,85%);grid-auto-flow:column;grid-gap:8px;gap:8px;overflow-x:auto;overflow-y:hidden;padding-bottom:4px;scroll-snap-type:x mandatory;scrollbar-width:thin}.assetRow,.assetRows{display:grid;width:100%}.assetRow{min-width:0;min-height:116px;align-content:space-between;scroll-snap-align:start}.assetPrice{min-width:0;justify-items:start;text-align:left}.quoteMeta,.quoteMeta.compact{justify-content:flex-start}.quoteMeta.compact span{max-width:100%}.quoteHeader{align-items:stretch;flex-direction:column}.quoteHeader>strong{text-align:left}.chart{height:230px}.chartMeta,.chartScale{gap:8px;font-size:.72rem}.chartTooltip{max-width:calc(100% - 18px);min-width:126px;padding:7px 8px}.tradeControls{display:grid;grid-template-columns:1fr 1fr}.orderPreview,.tradeControls label{grid-column:1/-1}.tradeControls button{width:100%}.executionGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.portfolioSummary{grid-template-columns:1fr}.portfolioSummary span{border-right:0;border-bottom:1px solid var(--line)}.portfolioSummary span:last-child{border-bottom:0}.equityCurve{grid-template-columns:1fr}.equityCurve div{text-align:left}.tableRow{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start}.tableRow>span:nth-child(3){grid-column:2}.portfolioRow{grid-template-columns:minmax(0,1fr) minmax(92px,auto)}.portfolioRow>span:nth-child(3){grid-column:1/-1;text-align:left}.leaderboardRow{grid-template-columns:minmax(0,1.15fr) minmax(78px,.8fr) minmax(78px,.8fr);gap:8px}.leaderboardHeader{font-size:.68rem}.profileHero{gap:14px;padding:16px}.profileAvatar{width:64px;height:64px}}@media (max-width:420px){.account,.executionGrid,.tradeControls{grid-template-columns:1fr}.leaderboardRow{grid-template-columns:minmax(0,1fr) minmax(74px,auto)}.leaderboardHeader>span:nth-child(2),.leaderboardRow>span:nth-child(2){display:none}.leaderboardRow>span:last-child{text-align:right}}