:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;color:#1a1a2e;background-color:#fff;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}.app{max-width:1100px;margin:0 auto;padding:2rem 1rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#1a1a2e}.app-header{text-align:center;margin-bottom:2rem}.app-header h1{font-size:1.8rem;margin-bottom:.25rem}.app-header p{color:#666;margin:0}.ticker-input{display:flex;gap:.5rem;justify-content:center;margin-bottom:2rem}.ticker-input input{padding:.6rem 1rem;font-size:1rem;border:2px solid #ddd;border-radius:6px;width:220px;text-transform:uppercase;letter-spacing:.05em}.ticker-input input:focus{outline:none;border-color:#4a6cf7}.ticker-input button{padding:.6rem 1.5rem;font-size:1rem;background:#4a6cf7;color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:500}.ticker-input button:hover:not(:disabled){background:#3a5ce5}.ticker-input button:disabled{opacity:.6;cursor:not-allowed}.error-message{background:#fef2f2;color:#dc2626;padding:.75rem 1rem;border-radius:6px;text-align:center;margin-bottom:1.5rem;border:1px solid #fecaca}.company-header{margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid #eee}.company-header h2{margin:0 0 .5rem}.company-meta{display:flex;gap:.5rem;margin-bottom:.75rem}.tag{background:#f0f0f5;padding:.2rem .6rem;border-radius:4px;font-size:.85rem;color:#555}.company-stats{display:flex;gap:2rem}.stat{display:flex;flex-direction:column}.stat-label{font-size:.8rem;color:#888;text-transform:uppercase;letter-spacing:.05em}.stat-value{font-size:1.25rem;font-weight:600}.financial-table,.analyst-estimates{margin-bottom:2rem}.financial-table h3,.analyst-estimates h3{margin-bottom:.75rem;font-size:1.1rem}.table-wrapper{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}th{text-align:right;padding:.5rem .75rem;border-bottom:2px solid #ddd;font-weight:600;white-space:nowrap}th:first-child{text-align:left}td{text-align:right;padding:.4rem .75rem;border-bottom:1px solid #eee;white-space:nowrap}td:first-child{text-align:left}.metric-label{font-weight:500;color:#444}tr:hover{background:#f8f9ff}.data-source{font-size:.75rem;color:#999;margin-top:.5rem}.results{animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.btn-primary{padding:.7rem 2rem;font-size:1rem;background:#4a6cf7;color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:600}.btn-primary:hover:not(:disabled){background:#3a5ce5}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{padding:.5rem 1.2rem;font-size:.9rem;background:#f0f0f5;color:#1a1a2e;border:1px solid #ddd;border-radius:6px;cursor:pointer;font-weight:500}.btn-secondary:hover:not(:disabled){background:#e4e4ee}.btn-secondary:disabled{opacity:.6;cursor:not-allowed}.text-material-input{margin-bottom:1.5rem;padding:1rem;border:1px solid #eee;border-radius:8px;background:#fafafa}.text-material-input h3{margin:0 0 .25rem;font-size:1rem}.text-material-hint{margin:0 0 .75rem;font-size:.85rem;color:#666}.text-material-controls{margin-bottom:.5rem}.text-material-controls select{padding:.35rem .6rem;border:1px solid #ddd;border-radius:4px;font-size:.85rem}.text-material-input textarea{width:100%;padding:.6rem;border:1px solid #ddd;border-radius:6px;font-family:inherit;font-size:.85rem;resize:vertical;line-height:1.5}.text-material-input textarea:focus{outline:none;border-color:#4a6cf7}.text-material-actions{margin-top:.5rem;display:flex;align-items:center;gap:.75rem}.text-material-status{font-size:.85rem;color:#16a34a;font-weight:500}.valuation-trigger,.analysis-actions{text-align:center;margin-bottom:2rem}.analysis-actions{display:flex;justify-content:center;gap:.75rem;flex-wrap:wrap}.analysis-errors{margin-bottom:1rem}.analysis-output{display:grid;gap:1.25rem}.analysis-loading{margin-bottom:1rem;padding:.9rem 1rem;border:1px solid #bfdbfe;border-radius:12px;background:linear-gradient(135deg,#eff6ff,#f8fbff);color:#1e3a8a;font-weight:700;text-align:center}.valuation-results{animation:fadeIn .3s ease}.valuation-summary{margin-bottom:2rem}.valuation-summary h3{font-size:1.2rem;margin-bottom:1rem}.valuation-framework-note{padding:.85rem 1rem;margin-bottom:1rem;border:1px solid #dbeafe;border-radius:10px;background:#eff6ff;color:#1e3a8a;font-size:.9rem}.valuation-window-stack{display:grid;grid-template-columns:1fr;gap:1rem;margin-bottom:1rem}.valuation-view-card{padding:1rem;border:1px solid #e5e7eb;border-radius:12px;background:linear-gradient(180deg,#fff,#fafafa);box-shadow:0 8px 24px #0f172a0a}.valuation-view-header{display:flex;justify-content:space-between;gap:1rem;margin-bottom:1rem}.valuation-view-kicker{color:#64748b;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.valuation-view-card h4{margin:.1rem 0 0;font-size:1.05rem}.valuation-period-stack{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.45rem}.valuation-time-badge{display:inline-flex;padding:.3rem .55rem;border-radius:999px;background:#ecfdf5;color:#047857;font-size:.78rem;font-weight:800}.secondary-time-badge{background:#f0f9ff;color:#0369a1}.valuation-view-verdict{height:fit-content;padding:.25rem .55rem;border-radius:999px;background:#f1f5f9;color:#475569;font-size:.75rem;font-weight:700;text-transform:capitalize;white-space:nowrap}.valuation-all-case-range{display:inline-flex;margin:0 0 .75rem;padding:.25rem .5rem;border-radius:999px;background:#0f172a0f;color:#475569;font-size:.78rem;font-weight:800}.scenario-cards-inline{margin-bottom:.9rem}.dcf-reference-note{margin:0 0 .9rem;padding:.55rem .7rem;border-left:3px solid #cbd5e1;border-radius:8px;background:#f8fafc;color:#64748b;font-size:.83rem;font-weight:650}.valuation-view-notes{margin:0;padding-left:1rem;color:#64748b;font-size:.8rem;line-height:1.5}.muted-row{color:#64748b}.price-bar-container{margin-bottom:1.5rem}.price-bar{position:relative;height:12px;background:#f0f0f5;border-radius:6px;margin-bottom:2rem}.price-bar-range{position:absolute;top:0;height:100%;background:linear-gradient(90deg,#ef4444,#f59e0b,#22c55e);border-radius:6px;opacity:.3}.price-marker{position:absolute;top:-4px;width:4px;height:20px;border-radius:2px;transform:translate(-2px)}.price-marker-bear{background:#ef4444}.price-marker-base{background:#f59e0b}.price-marker-bull{background:#22c55e}.price-marker-current{background:#4a6cf7;width:6px;height:24px;top:-6px;transform:translate(-3px);border-radius:3px}.price-bar-labels{position:relative;height:2.5rem}.bar-label{position:absolute;transform:translate(-50%);font-size:.75rem;font-weight:500;white-space:nowrap}.bar-label-bear{color:#ef4444}.bar-label-base{color:#b45309}.bar-label-bull{color:#16a34a}.bar-label-current{color:#4a6cf7;top:1.2rem}.valuation-verdict{text-align:center;font-size:1.05rem;margin-bottom:1.5rem;padding:.75rem;background:#f8f9ff;border-radius:8px}.upside{color:#16a34a;font-weight:600}.downside{color:#dc2626;font-weight:600}.scenario-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.5rem}.scenario-card{padding:1rem;border-radius:8px;border:1px solid #eee;background:#fff}.scenario-bear{border-top:3px solid #ef4444}.scenario-base{border-top:3px solid #f59e0b}.scenario-bull{border-top:3px solid #22c55e}.scenario-auto_base{border-top:3px solid #f59e0b}.scenario-high_growth,.scenario-high_visibility{border-top:3px solid #22c55e}.scenario-deceleration{border-top:3px solid #ef4444}.scenario-base_visibility{border-top:3px solid #3b82f6}.scenario-label{text-transform:uppercase;font-size:.75rem;font-weight:600;letter-spacing:.08em;color:#888;margin-bottom:.25rem}.scenario-median-price{margin:.65rem 0 .8rem;padding:.65rem .7rem;border-radius:10px;background:linear-gradient(135deg,#f8fafc,#eef2ff)}.scenario-median-price span{display:block;color:#64748b;font-size:.72rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.scenario-median-price strong{display:block;margin-top:.1rem;color:#0f172a;font-size:1.75rem;line-height:1.1}.scenario-median-price em{display:block;margin-top:.25rem;font-size:.82rem;font-style:normal}.scenario-formula{margin:0 0 .8rem;padding:.55rem .65rem;border-radius:9px;background:#f0fdf4;color:#064e3b;font-size:.9rem;font-weight:800;line-height:1.45}.scenario-breakdown{margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid #eee}.breakdown-row{display:flex;justify-content:space-between;font-size:.85rem;padding:.15rem 0}.breakdown-row-stack{align-items:flex-start;flex-direction:column;gap:.15rem}.breakdown-label{color:#888}.breakdown-value{font-weight:500}.data-quality,.signal-adjustments{margin-bottom:1rem}.data-quality summary,.signal-adjustments summary{cursor:pointer;font-size:.85rem;font-weight:500;color:#666;padding:.5rem 0}.quality-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.25rem 1rem;padding:.5rem 0}.quality-item{display:flex;justify-content:space-between;font-size:.8rem;padding:.2rem 0;border-bottom:1px solid #f5f5f5}.quality-key{color:#888;text-transform:capitalize}.quality-value{font-weight:500;color:#444}.forward-trend{margin-bottom:2rem}.forward-trend h3{font-size:1.1rem;margin-bottom:.25rem}.trend-subtitle{font-size:.8rem;color:#888;margin:0 0 1rem}.trend-chart{display:flex;flex-direction:column;gap:.5rem}.trend-row{display:grid;grid-template-columns:50px 1fr 70px 140px;align-items:center;gap:.5rem}.trend-year{font-size:.85rem;font-weight:500;color:#555}.trend-bar-wrapper{height:20px;background:#f0f0f5;border-radius:4px;overflow:hidden}.trend-bar{height:100%;border-radius:4px;transition:width .5s ease}.trend-bar-current{background:#4a6cf7;opacity:.4}.trend-bar-future{background:linear-gradient(90deg,#4a6cf7,#22c55e)}.trend-price{font-size:.9rem;font-weight:600;text-align:right}.trend-eps{font-size:.8rem;color:#888}.historical-pe{margin-bottom:2rem}.historical-pe h3{font-size:1.1rem;margin-bottom:1rem}.pe-chart{display:flex;flex-direction:column;gap:.6rem;margin-bottom:.75rem}.pe-row{display:grid;grid-template-columns:60px 1fr 200px;align-items:center;gap:.5rem}.pe-fy{font-size:.85rem;font-weight:500;color:#555}.pe-bar-wrapper{position:relative;height:16px;background:#f0f0f5;border-radius:4px}.pe-bar-range{position:absolute;top:0;height:100%;background:linear-gradient(90deg,#fbbf24,#f59e0b);border-radius:4px;opacity:.5}.pe-bar-avg{position:absolute;top:-2px;width:3px;height:20px;background:#b45309;border-radius:2px;transform:translate(-1px)}.pe-values{font-size:.8rem;color:#666;text-align:right}.pe-legend{display:flex;align-items:center;gap:.4rem;font-size:.75rem;color:#888;justify-content:center}.pe-legend-bar{display:inline-block;width:20px;height:3px;background:#f59e0b;border-radius:2px}.pe-details{margin-top:.75rem}.pe-details summary{cursor:pointer;font-size:.85rem;font-weight:500;color:#666;padding:.5rem 0}.peer-comparison{margin-bottom:2rem}.peer-comparison h3{font-size:1.1rem;margin-bottom:.75rem}.peer-summary{display:flex;gap:1.5rem;margin-bottom:1rem;padding:.75rem 1rem;background:#f8f9ff;border-radius:8px}.peer-stat{display:flex;flex-direction:column}.peer-stat-label{font-size:.75rem;color:#888;text-transform:uppercase;letter-spacing:.05em}.peer-stat-value{font-size:1.1rem;font-weight:600}.premium-high{color:#dc2626}.premium-low{color:#16a34a}.technical-levels{margin-bottom:2rem;padding:1rem;border:1px solid #e5e7eb;border-radius:14px;background:radial-gradient(circle at top left,rgba(14,165,233,.08),transparent 32%),linear-gradient(180deg,#fff,#fbfdff);box-shadow:0 10px 28px #0f172a0d;animation:fadeIn .3s ease}.technical-header{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:.9rem}.technical-kicker{color:#64748b;font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.technical-header h3{margin:.15rem 0 .35rem;font-size:1.2rem}.technical-header p{margin:0;color:#64748b;font-size:.86rem;line-height:1.5}.technical-current-price{min-width:140px;padding:.75rem .85rem;border-radius:12px;background:#0f172a;color:#fff;text-align:right}.technical-current-price span{display:block;color:#cbd5e1;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.technical-current-price strong{display:block;margin-top:.15rem;font-size:1.55rem}.technical-stat-row{display:flex;flex-wrap:wrap;gap:.45rem;margin-bottom:1rem}.technical-stat-row span{padding:.3rem .55rem;border-radius:999px;background:#eef6ff;color:#0f4c81;font-size:.78rem;font-weight:750}.technical-map-card{margin:1rem 0 1.2rem;padding:.85rem;border:1px solid #dbeafe;border-radius:16px;background:#fff}.technical-map-title{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin-bottom:.55rem;color:#64748b;font-size:.78rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.technical-map-title strong{color:#0f172a;font-size:.82rem;letter-spacing:normal;text-transform:none}.technical-price-map{display:block;width:100%;height:auto;min-height:260px}.technical-map-grid{stroke:#cbd5e1;stroke-dasharray:4 7;stroke-width:1}.technical-map-axis{stroke:#334155;stroke-width:2}.technical-map-axis-label{fill:#64748b;font-size:12px;font-weight:700}.technical-map-zone{stroke-width:2}.technical-map-zone-support{fill:#22c55e2e;stroke:#16a34abf}.technical-map-zone-resistance{fill:#ef444429;stroke:#dc2626b8}.technical-map-zone-active{fill:#3b82f629;stroke:#2563ebb8}.technical-map-center{stroke-width:2;stroke-dasharray:7 6}.technical-map-center-support{stroke:#15803d}.technical-map-center-resistance{stroke:#b91c1c}.technical-map-center-active{stroke:#1d4ed8}.technical-map-zone-label{fill:#0f172a;font-size:14px;font-weight:850;text-transform:capitalize}.technical-map-zone-price{fill:#475569;font-size:12px;font-weight:750}.technical-map-label-connector{stroke-width:1.5;stroke-dasharray:3 5;opacity:.55}.technical-map-label-connector-support{stroke:#15803d}.technical-map-label-connector-resistance{stroke:#b91c1c}.technical-map-label-connector-active{stroke:#1d4ed8}.technical-map-current-line{stroke:#020617;stroke-width:3}.technical-map-current-dot{fill:#020617;stroke:#fff;stroke-width:3}.technical-map-legend{display:flex;flex-wrap:wrap;gap:.45rem;justify-content:center;margin-top:.6rem}.technical-map-legend span{padding:.28rem .55rem;border-radius:999px;font-size:.74rem;font-weight:800}.legend-support{background:#dcfce7;color:#166534}.legend-active{background:#dbeafe;color:#1d4ed8}.legend-resistance{background:#fee2e2;color:#991b1b}.technical-map-empty{margin:1rem 0;padding:1rem;border:1px dashed #cbd5e1;border-radius:14px;background:#f8fafc;color:#64748b;text-align:center;font-size:.86rem;font-weight:700}.technical-zone-group{margin-top:1rem}.technical-zone-group h4{margin:0 0 .6rem;color:#334155;font-size:.82rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.technical-zone-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.85rem}.technical-zone-card{padding:.9rem;border:1px solid #e5e7eb;border-radius:12px;background:#ffffffe6}.technical-zone-support{border-top:3px solid #16a34a}.technical-zone-resistance{border-top:3px solid #ef4444}.technical-zone-active{border-top:3px solid #3b82f6}.technical-zone-topline{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start;margin-bottom:.55rem}.technical-zone-type{color:#64748b;font-size:.72rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.technical-zone-price{margin-top:.12rem;color:#0f172a;font-size:1.45rem;font-weight:800;line-height:1.15}.technical-score-pill{min-width:58px;padding:.35rem .45rem;border-radius:10px;text-align:center;font-weight:850}.technical-score-pill span{display:block;font-size:.64rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.technical-score-strong{background:#dcfce7;color:#166534}.technical-score-medium{background:#fef3c7;color:#92400e}.technical-score-weak{background:#fee2e2;color:#991b1b}.technical-zone-meta{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.6rem}.technical-zone-meta span{padding:.25rem .45rem;border-radius:999px;background:#f1f5f9;color:#475569;font-size:.74rem;font-weight:700}.technical-evidence-list{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.65rem}.technical-evidence-list span{padding:.22rem .45rem;border-radius:6px;background:#ecfdf5;color:#047857;font-size:.72rem;font-weight:750}.technical-rule{margin:.4rem 0 0;color:#475569;font-size:.8rem;line-height:1.45}.technical-date{margin:.45rem 0 0;color:#94a3b8;font-size:.75rem}.technical-score-details{margin-top:.6rem}.technical-score-details summary{cursor:pointer;color:#64748b;font-size:.78rem;font-weight:700}.technical-score-grid{margin-top:.35rem}.technical-score-row{display:flex;justify-content:space-between;gap:.75rem;padding:.18rem 0;border-bottom:1px solid #f1f5f9;color:#64748b;font-size:.78rem}.technical-score-row strong{color:#0f172a}.technical-empty{padding:.8rem;border:1px dashed #cbd5e1;border-radius:10px;background:#f8fafc;color:#64748b;font-size:.86rem}.technical-reference-group{margin-top:1rem}.technical-reference-group h4{margin:0 0 .6rem;color:#334155;font-size:.82rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.technical-reference-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.7rem}.technical-reference-card{padding:.8rem;border:1px solid #e5e7eb;border-radius:12px;background:#fff}.reference-support{border-left:3px solid #16a34a}.reference-resistance{border-left:3px solid #ef4444}.reference-active{border-left:3px solid #3b82f6}.technical-reference-type{color:#64748b;font-size:.68rem;font-weight:850;letter-spacing:.07em;text-transform:uppercase}.technical-reference-card strong{display:block;margin-top:.15rem;color:#0f172a;font-size:1rem}.technical-reference-card span{display:inline-flex;margin-top:.2rem;color:#475569;font-size:.82rem;font-weight:750}.technical-reference-meta{display:flex;flex-wrap:wrap;gap:.35rem;margin:.45rem 0}.technical-reference-meta span{padding:.2rem .4rem;border-radius:999px;background:#f1f5f9;color:#475569;font-size:.72rem;font-weight:800}.technical-notes{margin:1rem 0 0;padding-left:1.1rem;color:#64748b;font-size:.78rem;line-height:1.55}@media(max-width:700px){.technical-header{flex-direction:column}.technical-current-price{width:100%;text-align:left}.scenario-cards{grid-template-columns:1fr}.trend-row{grid-template-columns:40px 1fr 55px 100px}.pe-row{grid-template-columns:50px 1fr 160px}}
