:root{--ink-900: #1f2230;--ink-700: #3a415a;--ink-500: #5f6a8b;--line: #dbe1ef;--paper: #ffffff;--panel: #f8f9ff;--brand: #0b6aa8;--brand-strong: #084f8b;--brand-soft: #dcefff;--danger: #b1293c;--success: #1f7a46;font-family:Aptos,Segoe UI,Trebuchet MS,sans-serif;color:var(--ink-900);background:radial-gradient(circle at 10% 0%,rgba(11,106,168,.1),transparent 36%),radial-gradient(circle at 95% 15%,rgba(255,155,74,.1),transparent 30%),linear-gradient(180deg,#f4f8ff,#eef2ff);line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select{font:inherit}#root{width:100%}.auth-shell,.app-shell{width:min(1560px,calc(100vw - 20px));margin:0 auto;padding:26px 0 44px}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center}.auth-card,.control-bar,.table-card{background:var(--paper);border:1px solid var(--line);border-radius:20px;box-shadow:0 8px 30px #101a3514}.metric-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;box-shadow:0 2px 8px #101a350a}.metric-card h3{margin:0 0 8px;font-size:14px;font-weight:600;color:var(--ink-700);text-transform:uppercase;letter-spacing:.5px}.metric-value{font-size:24px;font-weight:700;color:var(--ink-900)}.metric-value.positive{color:var(--success)}.metric-value.negative{color:var(--danger)}.auth-card{padding:26px}.auth-copy-panel{background:linear-gradient(145deg,#0e5b8f,#15365f);border:0;color:#f6f9ff;min-height:520px;display:flex;flex-direction:column;justify-content:space-between}.auth-copy-panel .hero-copy,.auth-copy-panel .auth-feature-list p,.auth-copy-panel .eyebrow{color:#f6f9ffe6}.auth-form-panel{max-width:480px;width:100%}.auth-form-header{margin-bottom:18px}.auth-feature-list{display:grid;gap:16px}.auth-feature-list strong{display:block;margin-bottom:6px;font-size:1rem}.auth-feature-list p{margin-bottom:0}.auth-form{display:grid;gap:14px}.top-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 16px;margin-bottom:14px;background:var(--paper);border:1px solid var(--line);border-radius:16px}.signed-in-text{margin-bottom:0;color:var(--ink-500)}.eyebrow{margin:0 0 6px;text-transform:uppercase;letter-spacing:.12em;font-size:.76rem;color:var(--ink-500)}h1,h2,p{margin-top:0}h1{font-size:clamp(1.9rem,3.6vw,3.2rem);line-height:1.04;margin-bottom:10px;max-width:13ch}h2{margin-bottom:8px}.hero-copy{max-width:64ch;color:var(--ink-700)}.tabs-shell{display:flex;flex-wrap:wrap;gap:14px;margin-top:14px}.tab-button{border:0;border-bottom:2px solid transparent;background:transparent;color:var(--ink-700);border-radius:0;padding:8px 2px;font-weight:700;cursor:pointer;transition:.16s ease}.tab-button:hover,.tab-button-active{color:var(--brand-strong)}.main-tabs{border-bottom:1px solid var(--line);padding-bottom:8px}.main-tabs .tab-button-active{border-bottom-color:var(--brand)}.sub-tabs{margin-top:10px;display:flex;align-items:center;flex-wrap:wrap;gap:6px}.sub-tabs .tab-button{font-weight:600;color:var(--ink-500)}.sub-tabs .tab-button-active{border-bottom-color:var(--brand-strong);color:var(--ink-900)}.control-bar{display:grid;grid-template-columns:1.8fr .8fr;gap:14px;margin-top:14px;padding:14px}.control-field{display:grid;gap:6px;font-weight:600}.control-field span{font-size:.88rem;color:var(--ink-700)}.control-field input,.control-field select{width:100%;padding:11px 13px;border-radius:10px;border:1px solid #cdd6ea;background:#fff}.control-field input:focus,.control-field select:focus{outline:2px solid rgba(11,106,168,.2);border-color:var(--brand);outline-offset:1px}.primary-button,.secondary-button{border-radius:10px;padding:11px 14px;font-weight:700;cursor:pointer;border:1px solid transparent;transition:.16s ease}.primary-button{background:var(--brand);color:#fff}.primary-button:hover{background:var(--brand-strong)}.secondary-button{background:#fff;color:var(--ink-700);border-color:#c9d3e8}.secondary-button:hover{background:#f4f8ff}.secondary-button:disabled{opacity:.55;cursor:not-allowed}.table-card{margin-top:14px;padding:18px}.new-stock-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:10px}.new-stock-form-actions{grid-column:1 / -1;display:flex;justify-content:flex-start}.row-action-button{padding:5px 8px;border-radius:7px;font-size:.78rem;line-height:1.1}.row-controls-cell{width:108px;vertical-align:middle;text-align:center}.row-controls-stack{display:flex;flex-direction:column;align-items:center;gap:8px;white-space:nowrap;padding:2px 0}.row-controls-stack input[type=checkbox]{margin:0}th:first-child{text-align:center}.info-icon-button{width:24px;height:24px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;font-weight:700}.input-with-suffix{position:relative}.input-with-suffix input{padding-right:calc(2ch + 22px)}.input-suffix{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--ink-500);font-weight:700;pointer-events:none;width:2ch;text-align:left}.tab-placeholder-card{min-height:220px;display:grid;align-content:start;gap:6px}.table-header-row{display:flex;align-items:end;justify-content:space-between;gap:14px;margin-bottom:12px}.table-note,.subtle-text{color:var(--ink-500);font-size:.86rem}.table-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:12px}table{width:100%;border-collapse:collapse;min-width:0;table-layout:auto;background:#fff}th,td{text-align:left;padding:14px 11px;border-bottom:1px solid #e8edf8;vertical-align:middle;white-space:normal;word-break:normal;overflow-wrap:normal}th{position:sticky;top:0;z-index:1;background:#f4f7ff;font-size:.92rem;line-height:1.35;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-500)}tbody tr:hover{background:#f8fbff}.symbol-cell{font-weight:700;letter-spacing:.06em}.panel-message{margin:0;color:var(--ink-700)}.panel-error{color:var(--danger)}@media(max-width:980px){.auth-shell{grid-template-columns:1fr}.auth-form-panel{max-width:none;justify-self:stretch}.control-bar{grid-template-columns:1fr}.table-header-row,.top-bar{flex-direction:column;align-items:start}.new-stock-form{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:680px){.auth-shell,.app-shell{width:min(100vw - 18px,1280px);padding:16px 0 24px}.auth-card,.control-bar,.table-card,.top-bar{padding:14px;border-radius:14px}h1{max-width:none}.new-stock-form{grid-template-columns:1fr}}.modal-backdrop{position:fixed;inset:0;background:#0f172a6b;display:grid;place-items:center;padding:20px;z-index:100}.modal-card{width:min(560px,100%);background:var(--paper);border:1px solid var(--line);border-radius:24px;box-shadow:0 24px 90px #0f172a2e;padding:28px}.modal-card h2{margin-top:0;margin-bottom:12px}.modal-message{margin:0;color:var(--ink-700);line-height:1.65}.modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:20px}:root{--card-bg: #ffffff;--border-color: #dbe1ef;--text-primary: #1f2230;--text-muted: #5f6a8b}.sub-tabs-spacer{flex:1}.sub-tabs-add-button{padding:8px 16px;font-size:.9rem;border-radius:8px}.add-stock-modal{width:min(680px,100%);max-height:90vh;overflow-y:auto}.modal-card-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}.modal-card-header h2{margin:0}.modal-subtitle{margin:0 0 16px;color:var(--ink-500);font-size:.88rem}.modal-close-button{background:transparent;border:none;cursor:pointer;font-size:1.2rem;color:var(--ink-500);padding:4px 8px;border-radius:6px;line-height:1;transition:.12s}.modal-close-button:hover{background:#f0f4ff;color:var(--ink-900)}.stock-detail-modal{width:min(900px,96vw);max-height:92vh;display:flex;flex-direction:column;padding:0;overflow:hidden}.stock-detail-sticky-header{flex-shrink:0;padding:20px 24px 0;border-bottom:1px solid var(--border-color)}.stock-detail-body{flex:1;min-height:0;overflow-y:auto;padding:16px 24px 24px}.stock-detail-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.stock-detail-title{margin:0 0 4px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.stock-detail-meta{margin:0;font-size:.85rem;color:var(--ink-500)}.symbol-badge{display:inline-block;background:var(--brand-soft);color:var(--brand-strong);font-weight:700;font-size:.75rem;letter-spacing:.08em;padding:3px 8px;border-radius:6px}.stock-detail-stats-row{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:16px;padding:14px;background:var(--panel);border-radius:12px;border:1px solid var(--line)}.detail-stat-block{display:flex;flex-direction:column;gap:2px;min-width:110px}.detail-stat-label{font-size:.75rem;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.detail-stat-value{font-size:.95rem;font-weight:700;color:var(--ink-900)}.detail-stat-change{font-size:.78rem;font-weight:700}.detail-stat-change.positive{color:#16a34a}.detail-stat-change.negative,.sell-trigger{color:#dc2626}.buy-trigger{color:#16a34a}.stock-detail-view-toggle{display:flex;gap:6px;margin-bottom:12px}.chart-container{margin-top:16px;padding:16px;background:var(--panel);border:1px solid var(--line);border-radius:12px}.chart-title{margin:0 0 10px;font-size:.9rem;font-weight:700;color:var(--ink-700)}.btn-slim{padding:7px 16px;font-size:.88rem}.modal-actions-spread{justify-content:space-between}.investment-summary-layout{display:grid;grid-template-columns:1fr 1.4fr;gap:20px;align-items:start;margin-top:8px}.investment-summary-metrics{display:grid;grid-template-columns:1fr 1fr;gap:12px}.investment-summary-chart{padding:16px;background:var(--panel);border:1px solid var(--line);border-radius:12px}@media(max-width:860px){.investment-summary-layout{grid-template-columns:1fr}}.mini-candle-recommendation{font-size:.72rem;font-weight:700;text-align:center;padding:3px 8px;border-radius:6px;margin-bottom:6px;text-transform:uppercase;letter-spacing:.05em}.mini-candle-rec-buy-more{background:#dcfce7;color:#15803d}.mini-candle-rec-hold{background:#fef9c3;color:#854d0e}.mini-candle-rec-sell{background:#fee2e2;color:#b91c1c}.symbol-cell-hoverable{-webkit-user-select:none;user-select:none}.mini-candle-popover{position:absolute;bottom:calc(100% + 6px);left:0;z-index:50;pointer-events:none}.mini-candle-tooltip{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:10px 12px;box-shadow:0 8px 28px #0f172a29;width:204px}.mini-candle-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.mini-candle-price{font-weight:700;font-size:.88rem}.mini-candle-loading,.mini-candle-no-data{font-size:.78rem;color:var(--text-muted);text-align:center;padding:8px 0}.mini-candle-range{display:flex;justify-content:space-between;font-size:.72rem;font-weight:700;margin-top:4px}.mini-candle-period{font-size:.68rem;color:var(--text-muted);text-align:center;margin-top:2px}.sector-chart-container{margin-top:8px}.metric-value.positive{color:#16a34a}.metric-value.negative{color:#dc2626}
