:root{--color-paper: oklch(11% .01 250);--color-surface: oklch(15% .012 250);--color-elevated: oklch(19% .012 250);--color-ink: oklch(93% .005 250);--color-muted: oklch(65% .008 250);--color-faint: oklch(42% .008 250);--color-rule: oklch(24% .01 250);--color-accent: oklch(70% .14 220);--color-focus: oklch(70% .14 220);--color-positive: oklch(70% .15 155);--color-negative: oklch(62% .18 25);--font-display: "Space Grotesk", system-ui, sans-serif;--font-body: "Inter Tight", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--space-4: .25rem;--space-8: .5rem;--space-12: .75rem;--space-16: 1rem;--space-24: 1.5rem;--space-32: 2rem;--space-48: 3rem;--space-64: 4rem;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .9375rem;--text-lg: 1.1875rem;--text-xl: 1.5rem;--text-2xl: 1.875rem;--text-3xl: clamp(2rem, 2.5vw + .75rem, 2.75rem);--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--ease-out-quart: cubic-bezier(.25, 1, .5, 1);--dur-fast: .15s;--dur-normal: .25s;--radius-sm: 6px;--radius-md: 10px;--radius-pill: 100px}*{box-sizing:border-box}body{font-family:var(--font-body);font-size:var(--text-base);font-weight:400;line-height:1.6;color:var(--color-ink);background:var(--color-paper);max-width:740px;margin:0 auto;padding:var(--space-32) var(--space-24) var(--space-64);-webkit-font-smoothing:antialiased}h1{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:700;letter-spacing:-.02em;line-height:1.15;margin:0 0 var(--space-8);text-wrap:balance}h2{font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;letter-spacing:-.01em;color:var(--color-ink);margin:var(--space-48) 0 var(--space-16);text-wrap:balance}h2:first-of-type{margin-top:0}p{color:var(--color-muted);margin:0 0 var(--space-16);max-width:65ch}a{color:var(--color-accent);text-decoration:none;transition:color var(--dur-fast) var(--ease-out-expo)}a:hover{color:var(--color-ink)}a:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px;border-radius:2px}ul{list-style:none;padding:0;margin:0}code{font-family:var(--font-mono);font-size:.85em;background:var(--color-surface);padding:.1em .35em;border-radius:3px;color:var(--color-accent)}button{font-family:var(--font-body);font-size:var(--text-sm);font-weight:500;padding:var(--space-8) var(--space-12);border-radius:var(--radius-sm);border:1px solid var(--color-rule);background:var(--color-surface);color:var(--color-ink);cursor:pointer;transition:background var(--dur-fast) var(--ease-out-expo),border-color var(--dur-fast) var(--ease-out-expo),transform var(--dur-fast) var(--ease-out-expo)}button:hover{background:var(--color-elevated);border-color:var(--color-faint)}button:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}button:active{transform:translateY(1px)}button:disabled{opacity:.35;cursor:not-allowed;transform:none}input,select{font-family:var(--font-body);font-size:var(--text-sm);padding:var(--space-8) var(--space-12);border-radius:var(--radius-sm);border:1px solid var(--color-rule);background:var(--color-surface);color:var(--color-ink);transition:border-color var(--dur-fast) var(--ease-out-expo),box-shadow var(--dur-fast) var(--ease-out-expo)}input:focus,select:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px #00b0d526;box-shadow:0 0 0 3px oklch(70% .14 220 / .15)}.app-nav{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-48);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--radius-pill);width:fit-content}.app-nav a{font-family:var(--font-body);font-size:var(--text-sm);font-weight:500;color:var(--color-muted);padding:var(--space-4) var(--space-12);border-radius:var(--radius-pill);transition:color var(--dur-fast) var(--ease-out-expo),background var(--dur-fast) var(--ease-out-expo)}.app-nav a:hover{color:var(--color-ink)}.app-nav a.active{color:var(--color-ink);background:var(--color-elevated)}.stats-section{margin-bottom:var(--space-32)}.stats-list{display:flex;flex-wrap:wrap;gap:var(--space-8) var(--space-24)}.stats-list li{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-muted)}.dashboard-portfolios{margin-bottom:var(--space-32)}.portfolio-row{padding:var(--space-16) var(--space-16);border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-surface);margin-bottom:var(--space-12);transition:border-color var(--dur-normal) var(--ease-out-expo)}.portfolio-row:hover{border-color:var(--color-faint)}.portfolio-row-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-8) var(--space-12)}.portfolio-row-main{display:flex;align-items:baseline;gap:var(--space-12);flex:1;min-width:0}.portfolio-name{font-family:var(--font-display);font-weight:600;font-size:var(--text-base)}.status{font-family:var(--font-mono);font-size:var(--text-xs);padding:2px 8px;border-radius:var(--radius-pill)}.status.connected{color:var(--color-positive);background:#3bb97414}.status.disconnected{color:var(--color-faint);background:var(--color-elevated)}.portfolio-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-4) var(--space-8)}.portfolio-actions button{font-size:var(--text-xs);padding:var(--space-4) var(--space-8)}.portfolio-actions a{font-size:var(--text-xs);font-weight:500}.verify-msg{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-muted)}.strategy-signals{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-4) var(--space-8);font-size:var(--text-xs);margin-top:var(--space-12)}.strategy-signals-caption{grid-column:1 / -1;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:500;color:var(--color-faint);text-transform:uppercase;letter-spacing:.04em;margin:0}.strategy-signals label{display:flex;align-items:center;gap:var(--space-4);cursor:pointer;color:var(--color-muted);white-space:nowrap}.strategy-signals label input[type=checkbox]{margin:0;width:.8rem;height:.8rem;accent-color:var(--color-accent)}.strategy-signals-disabled label{cursor:default;opacity:.4}.portfolio-last-run{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-faint);margin-top:var(--space-8)}.portfolio-last-run-item:not(:first-child):before{content:" · ";color:var(--color-rule)}.portfolio-last-run-detail{margin-top:var(--space-8)}.portfolio-manual-run{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-8);margin-top:var(--space-12)}.portfolio-detail-meta{margin-bottom:var(--space-24)}.portfolio-tradier-account-hint{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-muted);margin:0 0 var(--space-8)}.portfolio-detail-tradier{margin-bottom:var(--space-24)}.portfolio-detail-tradier>button{font-size:var(--text-xs)}.tradier-account-panel{margin-top:var(--space-12);padding:var(--space-12);border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-elevated)}.tradier-account-panel-status{font-size:var(--text-sm);margin:0;color:var(--color-muted)}.tradier-account-panel-label{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-8);font-size:var(--text-sm);color:var(--color-muted)}.tradier-connect-account-label{margin-top:var(--space-12)}.tradier-account-select{min-width:12rem;max-width:100%}.tradier-account-panel-actions{display:flex;flex-wrap:wrap;gap:var(--space-8);margin-top:var(--space-12)}.tradier-connect-form{margin-top:var(--space-8);padding:var(--space-12);border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-elevated)}.tradier-form-note{font-size:var(--text-xs);margin:0 0 var(--space-8);color:var(--color-muted)}.tradier-connect-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-8) var(--space-12)}.tradier-api-key-input{min-width:10rem;flex:1 1 10rem;max-width:100%}.tradier-sandbox-label{font-size:var(--text-xs);color:var(--color-muted);white-space:nowrap}.tradier-connect-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-8);margin-top:var(--space-12)}.tradier-connect-error{margin-top:0}.add-form{display:flex;gap:var(--space-8);margin-top:var(--space-24)}.add-form input{flex:1}.error-msg{color:var(--color-negative);font-size:var(--text-xs);font-family:var(--font-mono);margin-top:var(--space-8)}.breadcrumb{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-faint);margin-bottom:var(--space-8)}.breadcrumb a{color:var(--color-muted)}.breadcrumb a:hover{color:var(--color-accent)}.positions-table{width:100%;border-collapse:collapse;margin-top:var(--space-16)}.positions-table th,.positions-table td{padding:var(--space-8) var(--space-12);text-align:left;border-bottom:1px solid var(--color-rule);font-family:var(--font-mono);font-size:var(--text-xs)}.positions-table th{font-weight:500;text-transform:uppercase;letter-spacing:.03em;color:var(--color-faint)}.positions-table .pl-positive{color:var(--color-positive)}.positions-table .pl-negative{color:var(--color-negative)}.perf-subtitle{font-size:var(--text-sm);color:var(--color-muted);margin:0 0 var(--space-24)}.perf-filter{margin-bottom:var(--space-24)}.perf-filter label{font-size:var(--text-sm);color:var(--color-muted);display:flex;align-items:center;gap:var(--space-8)}.perf-summary{display:flex;flex-wrap:wrap;gap:var(--space-24) var(--space-32);margin-bottom:var(--space-48);padding:var(--space-24);border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-surface)}.perf-summary-card{display:flex;flex-direction:column}.perf-summary-value{font-family:var(--font-mono);font-size:var(--text-xl);font-weight:500;line-height:1.1;color:var(--color-ink)}.perf-summary-label{font-family:var(--font-mono);font-size:.625rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-faint);margin-top:var(--space-4)}.perf-positive{color:var(--color-positive)}.perf-negative{color:var(--color-negative)}.perf-empty{color:var(--color-muted);font-size:var(--text-sm);padding:var(--space-64) 0;text-align:center}.perf-table{width:100%;border-collapse:collapse;font-size:var(--text-xs)}.perf-table th,.perf-table td{padding:var(--space-8) var(--space-8);text-align:right;border-bottom:1px solid var(--color-rule);white-space:nowrap;font-family:var(--font-mono)}.perf-table th{font-weight:500;font-size:.625rem;text-transform:uppercase;letter-spacing:.03em;color:var(--color-faint)}.perf-table th:first-child,.perf-table td:first-child{text-align:left}.perf-month{font-weight:500;color:var(--color-ink)}.perf-buy{color:var(--color-positive)}.perf-sell{color:var(--color-negative)}.perf-bar-cell{width:5.5rem;min-width:5.5rem}.pnl-bar-wrap{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-3xs)}.pnl-bar-label{font-family:var(--font-mono);font-size:.625rem;font-weight:500;line-height:1;white-space:nowrap}.pnl-bar-track{width:100%;height:5px;background:var(--color-elevated);border-radius:3px;overflow:hidden}.pnl-bar-fill{height:100%;border-radius:3px;transition:width var(--dur-normal) var(--ease-out-quart)}.pnl-bar-positive{background:var(--color-positive)}.pnl-bar-negative{background:var(--color-negative)}.strategy-chart{margin:var(--space-24) 0;padding:var(--space-16) var(--space-16) var(--space-12);border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-surface)}.strategy-chart-title{font-family:var(--font-display);font-size:var(--text-sm);font-weight:600;color:var(--color-ink);margin:0 0 var(--space-12);display:flex;justify-content:space-between;align-items:baseline;text-transform:capitalize}.strategy-chart-title span{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500}.strategy-chart-svg{width:100%;height:auto;display:block}.nav-auth{margin-left:auto}.nav-auth-btn{font-size:var(--text-xs);padding:var(--space-4) var(--space-8);border-radius:var(--radius-pill);border:1px solid var(--color-rule);background:transparent;color:var(--color-muted);cursor:pointer;transition:color var(--dur-fast) var(--ease-out-expo),border-color var(--dur-fast) var(--ease-out-expo)}.nav-auth-btn:hover{color:var(--color-ink);border-color:var(--color-faint)}.login-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fade-in var(--dur-normal) var(--ease-out-expo)}.login-modal{background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--radius-md);padding:var(--space-32);width:100%;max-width:320px;animation:slide-up var(--dur-normal) var(--ease-out-expo)}.login-modal h2{font-family:var(--font-display);font-size:var(--text-xl);margin:0 0 var(--space-4)}.login-modal p{font-size:var(--text-sm);color:var(--color-muted);margin:0 0 var(--space-16)}.login-modal input{width:100%;margin-bottom:var(--space-12)}.login-actions{display:flex;gap:var(--space-8)}.login-actions button:first-child{background:var(--color-accent);color:#080c0f;border-color:var(--color-accent);font-weight:600}.login-actions button:first-child:hover{background:#009fc1;background:oklch(65% .12 220);border-color:#009fc1;border-color:oklch(65% .12 220)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(max-width:480px){body{padding:var(--space-16)}.strategy-signals{grid-template-columns:repeat(2,minmax(0,1fr))}.perf-summary{gap:var(--space-16) var(--space-24);padding:var(--space-16)}.stats-list{flex-direction:column;gap:var(--space-4)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:0ms!important;animation-duration:0ms!important}}
