:root { color-scheme: light; font-family: Arial, Helvetica, sans-serif; color: #242b33; background: #f5f6f7; }
* { box-sizing: border-box; }
body { margin: 0; }
main { max-width: 1200px; margin: 0 auto; padding: 32px; }
header { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
h1 { font-size: 1.7rem; font-weight: 600; }
h2 { font-size: 1.3rem; }
p { line-height: 1.6; }
.top-line { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 2px solid #495563; border-bottom: 1px solid #adb4bc; margin-top: 24px; background: #fff; }
.top-line > div { padding: 22px 16px; }
dt { font-size: .9rem; margin-bottom: 12px; color: #505963; }
dd { margin: 0; font-weight: 600; line-height: 1.5; overflow-wrap: anywhere; }
.alert { border-left: 4px solid #8b2929; padding: 12px 16px; background: #fff; }
label { display: block; margin: 24px 0 8px; }
input, button { font: inherit; padding: 12px; border: 1px solid #606b77; border-radius: 0; }
input[type=password] { width: 100%; max-width: 360px; }
button { color: #fff; background: #263c50; cursor: pointer; min-height: 44px; }
:focus-visible { outline: 3px solid #1f64a5; outline-offset: 3px; }
table { border-collapse: collapse; width: 100%; }
td, th { padding: 12px; text-align: left; }
.number { text-align: right; font-variant-numeric: tabular-nums; }
.gain { color: #205a38; }
.loss { color: #8b2929; }
@media (max-width: 800px) { .top-line { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 480px) { main { padding: 20px 16px; } .top-line { grid-template-columns: 1fr; } header { align-items: flex-start; } }
nav { display: flex; flex-wrap: wrap; gap: 24px; padding: 24px 0; border-bottom: 1px solid #adb4bc; }
a { color: #234d70; }
section { padding: 24px 0 40px; border-bottom: 1px solid #adb4bc; scroll-margin-top: 16px; }
h3 { margin-top: 32px; font-size: 1.1rem; }
h4 { margin-top: 24px; }
.headline { font-size: 1.5rem; }
.trading-action { padding: 16px 0; border-bottom: 1px solid #d2d7db; }
.trading-action input:not([type=hidden]) { display: block; max-width: 100%; margin-bottom: 12px; }
.table-scroll { max-width: 100%; overflow-x: auto; }
th { border-bottom: 2px solid #606b77; }
td { border-bottom: 1px solid #d2d7db; vertical-align: top; }
.activity { padding-left: 24px; }
.activity li { padding: 16px 0; line-height: 1.6; overflow-wrap: anywhere; }
.account-chart { display: block; width: 100%; height: auto; background: #fff; }
.account-chart polyline { fill: none; stroke: #263c50; stroke-width: 2; }
.account-chart circle { fill: #263c50; }
.account-chart text { fill: #242b33; font: 14px Arial, Helvetica, sans-serif; }
summary { cursor: pointer; padding: 12px 0; }
@media (max-width: 480px) { nav { gap: 16px; } td, th { padding: 10px 8px; } .trading-action button { width: 100%; } }

@media (max-width: 480px) { .account-chart text { font-size: 32px; } }
textarea { display: block; width: 100%; font: inherit; padding: 12px; margin-bottom: 16px; border: 1px solid #606b77; border-radius: 0; }
.chat-text { white-space: pre-wrap; overflow-wrap: anywhere; }
#chat article { padding: 12px 0; border-bottom: 1px solid #adb4bc; }
#chat h3 { font-size: 1rem; font-weight: 600; }
/* Portfolio, 2026-09-30. Solid colors and square edges; no external assets. */
:root { font-family: 'Inter', 'Aptos', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: #202d32; background: #f7f8f6; font-size: 16px; }
body { -webkit-font-smoothing: antialiased; }
main { max-width: 1536px; padding: 0 64px; }
a { color: #2d524b; text-underline-offset: 4px; }
button { background: #284e45; border: 1px solid #284e45; font-weight: 600; padding: 12px 20px; }
button:hover { background: #173b33; }
button:disabled { background: #e6eae6; color: #697770; border-color: #e6eae6; cursor: default; }
button.secondary { background: transparent; color: #284e45; }
input, textarea { background: #fff; border: 1px solid #bcc7bf; color: #202d32; }
:focus-visible { outline: 3px solid #53826f; outline-offset: 4px; }
h1,h2,h3,p { margin-top: 0; }
h2 { font-size: 1.6rem; font-weight: 550; letter-spacing: -.04em; line-height: 1.25; margin-bottom: 16px; }
p { line-height: 1.6; }
.gain { color: #256246; } .loss { color: #a0443a; } .neutral { color: #52625a; }
.muted,.section-note { color: #68766f; }
.section-note { font-size: .86rem; margin: 16px 0 0; line-height: 1.65; }
.eyebrow { color: #65786d; font-size: .7rem; letter-spacing: .16em; font-weight: 650; margin-bottom: 14px; }
.site-header { height: 94px; border-bottom: 1px solid #d8e0d9; }
.brand { display: flex; gap: 13px; align-items: center; text-decoration: none; color: #24433a; font-size: .81rem; letter-spacing: .13em; }
.brand b { font-weight: 400; margin-left: 8px; color: #718077; }
.brand-icon { font-size: 27px; font-weight: 650; border: 1px solid #345d4c; width: 40px; height: 40px; display: grid; place-items: center; letter-spacing: -.08em; }
.header-actions { display: flex; gap: 32px; align-items: center; font-size: .83rem; }
.header-actions a { text-decoration: none; }
.text-button { background: transparent; border: none; padding: 8px 0; color: #66746b; font-weight: 400; font-size: .83rem; }
.text-button:hover { background: transparent; color: #234d38; }
.page-nav { gap: 35px; padding: 0; height: 62px; border-bottom: 1px solid #d8e0d9; align-items: stretch; }
.page-nav a { display: flex; align-items: center; font-size: .83rem; text-decoration: none; color: #66766c; }
.page-nav .current { color: #244c3d; border-bottom: 2px solid #244c3d; }
.reading-status { display: flex; justify-content: space-between; gap: 12px; margin: 26px 0 42px; color: #607267; font-size: .76rem; }
.reading-status > span:first-child { display: flex; align-items: center; gap: 9px; }
.status-dot { width: 6px; height: 6px; background: #426e53; display: inline-block; }
.status-dot.stale { background: #b27b32; }
.dashboard-grid { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 52px; align-items: start; }
.dashboard-main { min-width: 0; }
.dashboard-main > section { border: 0; padding: 0; margin-bottom: 48px; }
.overview h1 { font-size: clamp(2.8rem, 5vw, 4.4rem); font-weight: 450; line-height: 1.06; letter-spacing: -.055em; font-variant-numeric: tabular-nums; margin: 0 0 15px; }
.hero-caption { font-size: .88rem; color: #68776f; margin-bottom: 34px; }
.overview-metrics { display: grid; grid-template-columns: 1fr 1fr; margin: 0; padding-bottom: 24px; }
.metric + .metric { border-left: 1px solid #d8e0d9; padding-left: 28px; }
.metric dt { font-size: .83rem; color: #566b5e; margin-bottom: 9px; }
.metric dd { font-size: 1.65rem; font-weight: 500; letter-spacing: -.035em; font-variant-numeric: tabular-nums; }
.metric dd small { font-size: .9rem; letter-spacing: 0; font-weight: 450; }
.metric p { color: #738077; font-size: .72rem; margin: 6px 0 0; }
.today-strip { background: #eaf0e9; display: grid; grid-template-columns: 1fr 1fr; padding: 22px 25px; gap: 20px; }
.today-strip div > span { display: block; font-size: .78rem; color: #55705e; margin-bottom: 7px; }
.today-strip strong { font-weight: 550; font-size: 1.35rem; letter-spacing: -.025em; }
.today-strip small { display: block; font-size: .7rem; color: #647b6b; margin-top: 7px; }
.section-heading { display: flex; justify-content: space-between; align-items: end; gap: 20px; margin-bottom: 20px; }
.section-heading h2 { margin-bottom: 0; }
.section-heading > span { font-size: .72rem; padding-bottom: 4px; }
.holdings-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.holding { background: #fff; border: 1px solid #dce3dc; padding: 21px 21px 0; }
.holding-head { display: flex; justify-content: space-between; gap: 8px; margin-bottom: 24px; }
.holding h3 { font-size: 1rem; font-weight: 600; margin: 5px 0; letter-spacing: -.015em; }
.coin-symbol { font-size: .65rem; letter-spacing: .08em; color: #748579; font-weight: 650; }
.holding-head p { color: #7a877e; font-size: .71rem; margin: 0; }
.holding-worth { text-align: right; padding-top: 19px; }
.holding-worth > strong { display: block; font-weight: 550; font-size: 1.13rem; margin-bottom: 6px; }
.holding-worth > span { font-size: .75rem; display: block; }
.holding-worth small { display: block; margin-top: 3px; }
.holding-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 0 0 18px; }
.holding-facts dt { font-size: .67rem; color: #7a887d; margin: 0 0 5px; }
.holding-facts dd { font-size: .86rem; font-weight: 500; }
.stop-line { margin: 0 -21px; border-top: 1px solid #e4e9e3; background: #fafbf9; padding: 12px 16px; font-size: .67rem; color: #65796c; line-height: 1.65; }
.stop-line strong { display: block; padding-left: 17px; font-weight: 500; color: #3d5547; }
.stop-mark { font-size: .9rem; padding-right: 3px; }
.dashboard-main .decision-section { border-top: 1px solid #d5dfd5; border-bottom: 1px solid #d5dfd5; padding: 28px 0; }
.decision-section p { font-size: .88rem; max-width: 680px; }
.decision-section .muted { font-size: .76rem; margin-bottom: 0; }
.history-section > .section-note { margin-bottom: 28px; }
.day-block { margin: 0 0 26px; background: #fff; border: 1px solid #dce3dc; padding: 0; }
.day-heading { background: #f0f3ed; padding: 18px 24px; }
.day-heading h3 { margin: 0 0 3px; font-size: 1rem; font-weight: 600; }
.day-heading p { margin: 0; font-size: .72rem; color: #768476; }
.day-heading > span { font-size: .72rem; color: #6d7d6c; }
.transaction { padding: 24px; border-bottom: 1px solid #e2e7e0; }
.transaction-heading { display: flex; justify-content: space-between; align-items: start; gap: 12px; margin-bottom: 22px; }
.transaction-heading strong { font-size: .94rem; font-weight: 550; }
.transaction-heading time { display: block; margin: 6px 0 0; font-size: .7rem; color: #7c897d; }
.trade-side { display: block; font-size: .63rem; text-transform: uppercase; letter-spacing: .1em; color: #4a7057; margin-bottom: 6px; font-weight: 650; }
.trade-side.sell { color: #795e4b; }
.trade-result { text-align: right; font-size: .94rem; padding-top: 20px; }
.trade-result > .muted { font-size: .72rem; }
.trade-result small { font-size: .73rem; }
.trade-facts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 18px 15px; margin: 0; }
.trade-facts dt { font-size: .65rem; color: #7b887e; margin-bottom: 5px; }
.trade-facts dd { font-size: .84rem; font-weight: 500; }
.transaction > p { font-size: .72rem; margin: 14px 0 0; }
.fill-details { margin-top: 16px; }
.fill-details summary { font-size: .67rem; color: #748477; padding: 0; }
.fill-details p { font-size: .68rem; }
.fill-details th,.fill-details td { font-size: .72rem; padding: 10px 5px; }
.day-total { display: flex; gap: 24px; padding: 18px 24px; justify-content: flex-end; background: #fafbf8; font-size: .69rem; color: #748273; flex-wrap: wrap; }
.day-total strong { display: inline-block; margin-left: 5px; font-size: .8rem; font-weight: 550; }
.total-note { padding: 0 24px 15px; background: #fafbf8; margin: 0; color: #7c8275; font-size: .69rem; }
.empty-state { padding: 28px 24px; color: #768375; font-size: .9rem; }
.owner-row { display: flex; justify-content: space-between; gap: 20px; border-bottom: 1px solid #dce3da; padding: 18px 0; }
.owner-row strong { font-size: .88rem; font-weight: 500; }
.owner-row span { display: block; font-size: .73rem; color: #798678; margin-top: 4px; }
.owner-section > .section-note { margin-bottom: 8px; }
.dashboard-aside { position: sticky; top: 24px; }
.dashboard-aside .conversation,#chat { background: #edf1eb; padding: 26px; border: 1px solid #dce3d9; margin: 0; }
#chat h2 { font-size: 1.6rem; margin-bottom: 16px; }
#chat .eyebrow { font-size: .61rem; }
.chat-intro { color: #657963; font-size: .93rem; margin-bottom: 28px; }
.chat-unconnected { margin-bottom: 28px; color: #5e6f5b; }
.chat-unconnected p { font-size: .81rem; }
.connection-mark { font-size: 1.25rem; color: #86977d; }
#chat label { font-size: .74rem; color: #61745e; margin: 0 0 10px; }
#chat textarea { font-size: .8rem; padding: 13px; resize: vertical; line-height: 1.6; background: #f8faf5; min-height: 118px; }
#chat button { width: 100%; font-size: .79rem; }
.account-note { padding: 26px 8px; color: #7b8878; }
.account-note h3 { font-size: .79rem; font-weight: 550; color: #526a50; margin: 0 0 12px; }
.account-note p { font-size: .75rem; line-height: 1.8; }
.notice { background: #fbf1df; color: #795d32; border-left: 3px solid #bb9357; padding: 16px 22px; font-size: .85rem; margin-bottom: 26px; }
.controls-section { border-top: 1px solid #d7dfd3; color: #5c7058; }
.controls-section summary { padding: 24px 0; font-size: .86rem; }
.controls-section summary span { font-size: .72rem; color: #7e8b78; float: right; }
.controls-section p { font-size: .8rem; }
.page-footer { margin: 44px 0 0; border-top: 1px solid #d7dfd3; padding: 26px 0 34px; display: flex; justify-content: space-between; gap: 20px; color: #7c8976; font-size: .69rem; }
.page-footer a { text-decoration: none; }
.sign-in-shell { max-width: 440px; margin: 12vh auto; background: #fff; padding: 40px; border: 1px solid #dce3dc; }
.sign-in-shell h1 { font-size: 2.2rem; font-weight: 450; letter-spacing: -.04em; margin-bottom: 12px; }
.sign-in-shell p { font-size: .86rem; color: #68766b; }
.sign-in-shell label { font-size: .82rem; }
.sign-in-shell input,.sign-in-shell button { width: 100%; max-width: none; }
.sign-in-shell .brand { margin-bottom: 42px; }
@media (min-width:1450px) { .dashboard-grid { grid-template-columns: minmax(0,1fr) 330px; gap: 64px; } .holding { padding-top: 26px; } .holding-head { margin-bottom: 28px; } }
@media (max-width:1100px) { main { padding: 0 32px; } .dashboard-grid { grid-template-columns: minmax(0,1fr) 270px; gap: 28px; } .holdings-grid { grid-template-columns: 1fr; } .holding-facts { grid-template-columns: repeat(4,1fr); } .metric dd { font-size: 1.4rem; } }
@media (max-width:800px) { main { padding: 0 24px; } .dashboard-grid { display: flex; flex-direction: column; gap: 32px; } .dashboard-main,.dashboard-aside { width: 100%; } .dashboard-aside { position: static; } .reading-status { flex-direction: column; margin: 22px 0 34px; } .overview h1 { font-size: 3.5rem; } .holdings-grid { grid-template-columns: 1fr 1fr; } .holding-facts { grid-template-columns: 1fr 1fr; } .dashboard-aside { order: -1; } .dashboard-aside .account-note { display: none; } .dashboard-aside #chat { padding: 20px; } .dashboard-aside .chat-intro,.dashboard-aside .chat-unconnected .connection-mark { display: none; } .dashboard-aside .chat-unconnected { margin: 0; } .dashboard-aside textarea,.dashboard-aside label,.dashboard-aside button:disabled { display: none; } .dashboard-aside h2 { margin-bottom: 8px; } .dashboard-grid { gap: 30px; } }
@media (max-width:520px) { main { padding: 0 20px; } .site-header { height: 80px; } .brand { font-size: .67rem; gap: 9px; } .brand b { display: block; margin: 5px 0 0; font-size: .59rem; } .brand-icon { width: 34px; height: 36px; font-size: 24px; } .header-actions { gap: 18px; font-size: .72rem; } .text-button { font-size: .72rem; } .page-nav { gap: 24px; height: 58px; flex-wrap: nowrap; } .page-nav a { font-size: .72rem; } .overview h1 { font-size: 3.3rem; } .overview-metrics { gap: 15px; } .metric + .metric { padding-left: 16px; } .metric dd { font-size: 1.36rem; } .metric dd small { display: block; font-size: .75rem; } .metric p { font-size: .64rem; } .today-strip { padding: 20px 17px; gap: 15px; } .today-strip div > span { font-size: .7rem; min-height: 32px; } .today-strip small { font-size: .63rem; } .section-heading { align-items: start; } .section-heading > span { max-width: 85px; text-align: right; line-height: 1.6; padding-top: 18px; } .holdings-grid { grid-template-columns: 1fr; } .holding-facts { grid-template-columns: 1fr 1fr; } .holding-head { margin-bottom: 20px; } .holding-worth small { display: inline; } .transaction { padding: 20px 17px; } .trade-result { font-size: .86rem; } .trade-result small { display: block; margin-top: 3px; } .trade-facts { grid-template-columns: 1fr 1fr; } .day-heading { padding: 18px 17px; } .day-total { padding: 18px 17px; gap: 14px; justify-content: flex-start; } .day-total > span { flex: 1; } .day-total strong { display: block; margin: 6px 0 0; white-space: nowrap; } .day-total strong span { white-space: nowrap; } .controls-section summary span { float: none; display: block; margin: 9px 0 0; } .page-footer { flex-wrap: wrap; font-size: .62rem; gap: 12px; } .sign-in-shell { padding: 28px; margin: 8vh auto; } }
@media (prefers-reduced-motion:reduce) { * { scroll-behavior: auto; } }
/* Labels remain readable at normal browser zoom. */
.eyebrow, #chat .eyebrow { font-size: .75rem; }
.holding-facts dt, .trade-facts dt, .coin-symbol { font-size: .78rem; }
.holding-facts dd, .trade-facts dd { font-size: .93rem; }
.holding-head p, .holding-worth > span, .stop-line { font-size: .78rem; }
.metric p, .today-strip small, .reading-status { font-size: .79rem; }
.fill-details summary, .day-heading p, .day-heading > span, .total-note { font-size: .78rem; }
.transaction-heading time, .trade-side, .transaction > p { font-size: .77rem; }
.account-note p, #chat label, #chat textarea, #chat button, .chat-unconnected p { font-size: .86rem; }
.dust-holdings { font-size: .8rem; color: #6b7b65; }
@media(max-width:520px) { .holding-facts dt,.trade-facts dt { font-size:.76rem; } .eyebrow { font-size:.69rem; } .reading-status { font-size:.72rem; } .today-strip small,.metric p { font-size:.73rem; } .holding-worth small { display:block; } }
.conversation-history { max-height: 360px; overflow-y: auto; margin-bottom: 24px; scrollbar-width: thin; }
.conversation-history:has(>p:only-child) { color: #75836e; font-size: .82rem; }
#chat .conversation-history article { padding: 14px 0; border-color: #d3ddcc; }
#chat .conversation-history h3 { font-size: .7rem; letter-spacing: .02em; margin: 0 0 10px; color: #5a6f52; }
#chat .conversation-history p { font-size: .83rem; line-height: 1.7; }
#chat .chat-footnote { font-size: .73rem; color: #76846d; margin: 17px 0 0; }
@media(max-width:800px) { .dashboard-aside #chat textarea, .dashboard-aside #chat label { display: block; } .dashboard-aside:has(.conversation-history) { order: 0; } }

.preview-image { display: block; max-width: 100%; height: auto; }
