:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;justify-content:center;align-items:flex-start;min-width:320px;min-height:100vh;padding-top:3rem;padding-bottom:3rem}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.info-section{margin-top:2rem;border-top:1px solid #333;padding-top:1rem}.info-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.75rem 1rem;background:transparent;border:1px solid #444;border-radius:8px;color:#888;font-size:.9rem;cursor:pointer;transition:all .2s}.info-toggle:hover{border-color:#646cff;color:#fff}.chevron{transition:transform .2s}.chevron.expanded{transform:rotate(180deg)}.info-content{margin-top:1rem;padding:1.5rem;background:#1a1a1a;border-radius:8px;border:1px solid #333}.info-content section{margin-bottom:1.5rem}.info-content section:last-child{margin-bottom:0}.info-content h3{font-size:1rem;color:#646cff;margin-bottom:.75rem;font-weight:600}.info-content p{color:#ccc;font-size:.9rem;line-height:1.6;margin-bottom:.75rem}.info-content p:last-child{margin-bottom:0}.etf-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem;list-style:none;padding:0;margin:.75rem 0}.etf-list li{font-size:.85rem;color:#aaa;padding:.25rem 0}.etf-list li strong{color:#fff;font-family:monospace}.process-list{padding-left:1.25rem;margin:.75rem 0}.process-list li{color:#ccc;font-size:.9rem;line-height:1.6;margin-bottom:.75rem}.process-list li:last-child{margin-bottom:0}.process-list li strong{color:#4ade80}.note{font-style:italic;color:#888!important;font-size:.85rem!important}.formula{background:#0d0d0d;padding:1rem;border-radius:6px;margin:.75rem 0}.formula p{margin-bottom:.5rem;color:#888!important;font-size:.85rem!important}.formula code,.example code{display:block;font-family:monospace;color:#f59e0b;font-size:.85rem;padding:.25rem 0}.example{background:#0d0d0d;padding:.75rem 1rem;border-radius:6px;margin:.75rem 0}@media(prefers-color-scheme:light){.info-section{border-top-color:#ddd}.info-toggle{border-color:#ccc;color:#666}.info-toggle:hover{color:#333}.info-content{background:#f5f5f5;border-color:#ddd}.info-content p{color:#555}.etf-list li{color:#666}.etf-list li strong{color:#333}.process-list li{color:#555}.formula,.example{background:#fff;border:1px solid #ddd}}.portfolio-form{width:100%;max-width:500px}.portfolio-form h1{margin-bottom:.5rem}.subtitle{color:#888;margin-bottom:2rem}.holdings-list{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.holding-row{display:flex;gap:.5rem;align-items:center}.ticker-input{flex:1;padding:.75rem;border:1px solid #333;border-radius:6px;background:#1a1a1a;color:inherit;font-size:1rem;text-transform:uppercase}.quantity-input{width:120px;padding:.75rem;border:1px solid #333;border-radius:6px;background:#1a1a1a;color:inherit;font-size:1rem}.ticker-input:focus,.quantity-input:focus{outline:none;border-color:#646cff}.ticker-input::placeholder,.quantity-input::placeholder{color:#666}.remove-btn{width:36px;height:36px;padding:0;border:1px solid #444;border-radius:6px;background:transparent;color:#888;font-size:1.25rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.remove-btn:hover{border-color:#f44;color:#f44}.add-btn{width:100%;padding:.75rem;margin-bottom:1.5rem;border:1px dashed #444;border-radius:6px;background:transparent;color:#888;font-size:.9rem;cursor:pointer}.add-btn:hover{border-color:#646cff;color:#646cff}.submit-btn{width:100%;padding:1rem;border:none;border-radius:6px;background:#646cff;color:#fff;font-size:1rem;font-weight:600;cursor:pointer}.submit-btn:hover{background:#535bf2}.submit-btn:disabled{opacity:.6;cursor:not-allowed}.error-message{padding:.75rem;background:#3a1a1a;border:1px solid #ff4444;border-radius:6px;color:#ff6b6b;margin-bottom:1rem;font-size:.9rem}.portfolio-container{width:100%}@media(prefers-color-scheme:light){.ticker-input,.quantity-input{background:#fff;border-color:#ddd}.ticker-input:focus,.quantity-input:focus{border-color:#646cff}.remove-btn{border-color:#ddd}.add-btn{border-color:#ccc}}.unsupported-etf-form,.unsupported-etf-success{background:#1a1a1a;border:1px solid #333;border-radius:12px;padding:1.5rem;margin:1rem 0}.unsupported-etf-info h3{color:#f59e0b;font-size:1.1rem;margin-bottom:.75rem}.unsupported-etf-info p{color:#ccc;font-size:.9rem;line-height:1.6;margin-bottom:.5rem}.unsupported-etf-info p:last-child{margin-bottom:1rem}.unsupported-etf-form form{display:flex;flex-direction:column;gap:.75rem}.email-input{padding:.75rem 1rem;border:1px solid #444;border-radius:8px;background:#0d0d0d;color:#fff;font-size:1rem;width:100%;box-sizing:border-box}.email-input:focus{outline:none;border-color:#646cff}.email-input:disabled{opacity:.6}.button-group{display:flex;gap:.75rem;margin-top:.5rem}.unsupported-etf-form .submit-btn{flex:1;padding:.75rem 1.5rem;background:#646cff;color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:background .2s}.unsupported-etf-form .submit-btn:hover:not(:disabled){background:#5558dd}.unsupported-etf-form .submit-btn:disabled{opacity:.6;cursor:not-allowed}.unsupported-etf-form .skip-btn{padding:.75rem 1.5rem;background:transparent;color:#888;border:1px solid #444;border-radius:8px;font-size:1rem;cursor:pointer;transition:all .2s}.unsupported-etf-form .skip-btn:hover:not(:disabled){border-color:#666;color:#fff}.unsupported-etf-form .error-message{color:#ef4444;font-size:.85rem;padding:.5rem;background:#ef44441a;border-radius:4px}.unsupported-etf-success h3{color:#4ade80;font-size:1.1rem;margin-bottom:.75rem}.unsupported-etf-success p{color:#ccc;font-size:.9rem;line-height:1.6;margin-bottom:.5rem}.unsupported-etf-success .success-note{color:#888;font-style:italic;font-size:.85rem}@media(prefers-color-scheme:light){.unsupported-etf-form,.unsupported-etf-success{background:#f5f5f5;border-color:#ddd}.unsupported-etf-info p,.unsupported-etf-success p{color:#555}.email-input{background:#fff;border-color:#ccc;color:#333}.unsupported-etf-form .skip-btn{border-color:#ccc;color:#666}.unsupported-etf-form .skip-btn:hover:not(:disabled){border-color:#999;color:#333}}.results-container{width:100%}.results-container h1{margin-bottom:1.5rem}.results-container h2{font-size:1.25rem;margin-bottom:.5rem}.results-error{padding:1.5rem;background:#3a1a1a;border:1px solid #ff4444;border-radius:8px;margin-bottom:1.5rem}.results-error h2{color:#f44;margin-bottom:.5rem}.results-warning{padding:1rem 1.5rem;background:#3a2a1a;border:1px solid #f59e0b;border-radius:8px;margin-bottom:1.5rem}.results-warning h3{color:#f59e0b;font-size:1rem;margin-bottom:.5rem}.results-warning p{color:#ccc;font-size:.9rem;margin-bottom:.5rem}.results-warning ul{margin:0;padding-left:1.25rem}.results-warning li{color:#aaa;font-size:.85rem;margin-bottom:.25rem}.results-warning li strong{color:#f59e0b}.etf-errors{padding:1rem 1.5rem;background:#2a2a2a;border-radius:8px;margin-bottom:1.5rem}.etf-errors h3{font-size:1rem;margin-bottom:.5rem}.etf-errors ul{margin:0;padding-left:1.25rem}.etf-errors li{color:#aaa;font-size:.85rem;margin-bottom:.25rem}.etf-row-failed{opacity:.7}.etf-row-failed:hover{background:#2a1a1a}.color-dot-failed{background:#666!important;border:2px dashed #888}.ticker-failed{color:#888!important}.etf-error-message{color:#f59e0b;font-size:.8rem;font-style:italic}.portfolio-summary{display:flex;gap:1.5rem;margin-bottom:2rem;padding:1rem;background:#2a2a2a;border-radius:8px}.summary-item{display:flex;flex-direction:column;gap:.25rem}.summary-item .label{font-size:.8rem;color:#888;text-transform:uppercase;letter-spacing:.05em}.summary-item .value{font-size:1.25rem;font-weight:600}.etf-breakdown{margin-bottom:2rem}.etf-breakdown-content{display:flex;gap:1.5rem;align-items:center}.etf-chart{flex-shrink:0;width:180px;height:180px}.etf-table{flex:1}.color-dot{display:inline-block;width:12px;height:12px;border-radius:50%}.top-holdings{margin-bottom:2rem}.holdings-subtitle{color:#888;font-size:.9rem;margin-bottom:1rem}table{width:100%;border-collapse:collapse;font-size:.9rem}thead{border-bottom:1px solid #444}th{text-align:left;padding:.75rem .5rem;font-weight:500;color:#888;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}td{padding:.75rem .5rem;border-bottom:1px solid #333}tr:hover{background:#2a2a2a}.ticker{font-weight:600;color:#646cff}.rank{color:#888;width:2rem}.stock-info{display:flex;flex-direction:column;gap:.125rem}.stock-info .name{font-size:.8rem;color:#888}.exposure{font-weight:600;color:#4ade80}.source-etfs{font-size:.8rem;color:#888}.new-analysis-btn{width:100%;padding:1rem;border:1px solid #444;border-radius:6px;background:transparent;color:#888;font-size:1rem;cursor:pointer;margin-top:1rem}.new-analysis-btn:hover{border-color:#646cff;color:#646cff}.partial-results-note{color:#888;font-size:.9rem;font-style:italic;margin:1rem 0;padding:.75rem;background:#646cff1a;border-radius:6px;border-left:3px solid #646cff}@media(max-width:600px){.etf-breakdown-content{flex-direction:column}.etf-chart{width:100%}}@media(prefers-color-scheme:light){.portfolio-summary{background:#f5f5f5}.results-error{background:#fef2f2}.results-warning{background:#fffbeb;border-color:#f59e0b}.results-warning p,.results-warning li{color:#666}.etf-errors{background:#f5f5f5}.etf-errors li{color:#666}.etf-row-failed:hover{background:#fef2f2}thead{border-bottom-color:#ddd}td{border-bottom-color:#eee}tr:hover{background:#f5f5f5}.new-analysis-btn{border-color:#ccc}}.polling-progress{width:100%;max-width:500px;text-align:center}.polling-progress h1{margin-bottom:.5rem}.polling-subtitle{color:#888;margin-bottom:2rem}.ticker-status-list{display:flex;flex-direction:column;gap:.75rem;margin-bottom:2rem}.ticker-status-row{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:#1a1a1a;border:1px solid #333;border-radius:6px}.status-indicator{width:10px;height:10px;border-radius:50%;flex-shrink:0}.status-queued{background-color:#888}.status-cached,.status-downloaded,.status-completed{background-color:#4ade80}.status-processing{background-color:#646cff;animation:pulse 1.5s ease-in-out infinite}.status-generating{background-color:#a855f7;animation:pulse 1.5s ease-in-out infinite}.status-waiting{background-color:#f59e0b}.status-manual_pr{background-color:#f97316}.status-fix_pr{background-color:#3b82f6}.status-error{background-color:#ef4444}.ticker-name{font-weight:600;text-transform:uppercase;flex:1;text-align:left}.ticker-status-label{color:#888;font-size:.875rem}.email-prompt{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem;padding:1rem;background:#1a1a2e;border:1px solid #444;border-radius:6px}.email-prompt p{margin:0;color:#aaa;font-size:.875rem}.email-prompt input{padding:.5rem;border:1px solid #444;border-radius:4px;background:#111;color:#fff;font-size:.875rem}.email-prompt button{padding:.5rem 1rem;background:#646cff;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:.875rem}.subscribed-msg{color:#4ade80;font-size:.875rem;margin-bottom:1.5rem}.cancel-btn{padding:.75rem 2rem;border:1px solid #444;border-radius:6px;background:transparent;color:#888;font-size:.9rem;cursor:pointer}.cancel-btn:hover{border-color:#646cff;color:#646cff}.polling-progress .error-message{padding:.75rem;background:#3a1a1a;border:1px solid #ff4444;border-radius:6px;color:#ff6b6b;margin-bottom:1rem;font-size:.9rem}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}@media(prefers-color-scheme:light){.ticker-status-row{background:#fff;border-color:#ddd}.cancel-btn{border-color:#ddd}}.app{width:100%;max-width:800px;margin:0 auto;padding:2rem}.app-footer{margin-top:3rem;padding-top:1rem;border-top:1px solid #333;text-align:center}.app-footer a{color:#888;font-size:.875rem;text-decoration:none}.app-footer a:hover{color:#646cff}
