:root{--bg-root: #edeef4;--bg-primary: #ffffff;--bg-accent: #ffffff;--bg-tertiary: #edeef4;--text-primary: #343b58;--text-secondary: #8a8fad;--text-accent: #001;--text-muted: #9699a3;--text-inverse: #ffffff;--border-color: #a9b1d6;--border-hover: #2959aa;--accent-primary: #2959aa;--accent-primary-hover: #1f4587;--accent-secondary: #5a3e8e;--accent-secondary-hover: #422c6e;--status-success: #00cb65;--status-success-bg: #00d08e26;--status-danger: #db0045;--status-danger-bg: rgba(140, 67, 81, .1);--status-warning: #8f5e15;--status-warning-bg: rgba(143, 94, 21, .1);--status-warning-text: #8f5e15;--status-info: #0f4b6e;--status-info-bg: rgba(15, 75, 110, .1);--status-info-border: #0f4b6e;--asset-crypto: #965027;--asset-stock: #2959aa;--chart-portfolio: #00cb65;--chart-invested: #2959aa;--chart-benchmark: #a9acbc;--chart-grid: #d5d6db;--chart-axis: #565a6e;--shadow-card: 0 2px 8px rgba(0, 0, 0, .05);--shadow-tooltip: 0 4px 12px rgba(0, 0, 0, .1)}@media (prefers-color-scheme: dark){:root{--bg-root: #1a1b26;--bg-primary: #1a1b26;--bg-accent: #24283b;--bg-tertiary: #414868;--text-primary: #c0caf5;--text-secondary: #9aa5ce;--text-accent: #fff;--text-muted: #565f89;--text-inverse: #1a1b26;--border-color: #414868;--border-hover: #7aa2f7;--accent-primary: #7aa2f7;--accent-primary-hover: #2ac3de;--accent-secondary: #bb9af7;--accent-secondary-hover: #9d7cd8;--status-success: #00ff80;--status-success-bg: rgba(158, 206, 106, .15);--status-danger: #f7768e;--status-danger-bg: rgba(247, 118, 142, .15);--status-warning: #e0af68;--status-warning-bg: rgba(224, 175, 104, .15);--status-warning-text: #e0af68;--status-info: #7dcfff;--status-info-bg: rgba(125, 207, 255, .15);--status-info-border: #7dcfff;--asset-crypto: #ff9e64;--asset-stock: #7aa2f7;--chart-portfolio: #00ff80;--chart-invested: #7aa2f7;--chart-benchmark: #9aa5ce;--chart-grid: #292e42;--chart-axis: #565f89;--shadow-card: 0 2px 8px rgba(0, 0, 0, .3);--shadow-tooltip: 0 4px 12px rgba(0, 0, 0, .5)}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}ul,ol{list-style:none}table{border-collapse:collapse;border-spacing:0}@font-face{font-family:Poppins Fallback;src:local("Arial");size-adjust:105%;ascent-override:95%;descent-override:25%;line-gap-override:0%}:root{background-color:var(--bg-root);font-family:Poppins,Poppins Fallback,sans-serif;line-height:1.5;font-weight:400;font-size:16px;color-scheme:light dark;color:var(--text-primary);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (min-width: 960px){:root{height:100vh}}a{font-weight:500;color:var(--accent-secondary);text-decoration:inherit}a:hover{color:var(--accent-secondary-hover)}.card{padding:2em}#app{width:100%;text-align:center;padding:.25rem .25rem 0}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;background-color:var(--bg-accent);color:var(--text-primary);cursor:pointer;transition:border-color .25s}button:hover{border-color:var(--accent-secondary)}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.calc-header{display:flex;flex-direction:row!important;padding:1rem;gap:.35rem}.calc-title,.calc-subtitle{margin:0;padding:0;font-size:1.25rem;line-height:1.25rem}.calc-title{color:var(--text-accent)}.calc-subtitle{color:var(--text-secondary)}@media (max-width: 575px){.calc-subtitle{display:none}}.vibe-by{flex:1;text-align:right;color:var(--text-secondary);font-weight:600}.calc-layout{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto;max-width:100%;gap:.25rem}@media (min-width: 960px){.calc-layout{grid-template-columns:24rem 1fr;min-height:calc(100vh - 4.25rem);overflow:hidden}}@media (min-width: 1280px){.calc-layout{grid-template-columns:30rem 1fr}}@media (min-width: 960px){.calc-layout__main,.calc-layout__aside{min-height:calc(100vh - 4.25rem)}}.flex-1{flex:1}.widget{border-radius:.5rem;padding:1rem;background:var(--bg-accent);display:flex;flex-direction:column;gap:.5rem;max-width:calc(100vw - .5rem)}.border-bottom{border-bottom:1px solid var(--border-color)}.border-left{border-left:1px solid var(--border-color)}.layout-column{display:flex;flex-direction:column;gap:.25rem}.layout-row{display:flex;flex-direction:row;gap:.25rem}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;gap:1rem}.loading-inline{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:2rem 1rem;color:var(--text-secondary);font-size:.95rem}.spinner{width:48px;height:48px;border:4px solid var(--bg-tertiary);border-top:4px solid var(--accent-primary);border-radius:50%;animation:spin 1s linear infinite}.spinner-small{width:20px;height:20px;border:2px solid var(--bg-tertiary);border-top:2px solid var(--accent-primary);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.input-section{display:flex;flex-direction:column}.calculating-indicator{padding:.75rem 1rem;background:var(--status-info-bg);border:1px solid var(--status-info-border);border-radius:8px;color:var(--status-info);display:flex;align-items:center;justify-content:center;gap:.75rem;font-weight:500;font-size:.95rem;margin-bottom:.5rem}.calculating-indicator .spinner{width:20px;height:20px;border:2px solid var(--bg-tertiary);border-top:2px solid var(--accent-primary);border-radius:50%;animation:spin .8s linear infinite}.calculating-toast{position:fixed;bottom:0;left:0;right:0;padding:1rem;background:var(--accent-primary);color:var(--text-inverse);display:flex;align-items:center;justify-content:center;z-index:1000;box-shadow:0 -4px 12px #00000026}.calculating-toast .toast-content{display:flex;align-items:center;justify-content:center;gap:.75rem;font-weight:600;font-size:1rem}.calculating-toast .spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-top:2px solid white;border-radius:50%;animation:spin .8s linear infinite}@media (min-width: 768px){.calculating-toast{left:auto;right:2rem;bottom:2rem;max-width:300px;border-radius:12px;padding:1rem 1.5rem}}.error-message{padding:1rem;background:var(--status-danger-bg);border:1px solid var(--status-danger);border-radius:8px;color:var(--status-danger);text-align:center}.results-section{margin-top:2rem}.asset-selector,.selected-assets{display:flex;flex-direction:column;gap:.5rem}.mode-toggle{display:flex;gap:.5rem;margin-bottom:1rem}.toggle-btn{flex:1;padding:.75rem 1.5rem;border:2px solid var(--border-color);background:var(--bg-accent);border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s;color:var(--text-secondary)}.toggle-btn:hover{border-color:var(--accent-primary);color:var(--text-primary)}.toggle-btn.active{background:var(--accent-primary);border-color:var(--accent-primary);color:var(--text-inverse)}.preset-buttons{display:grid;grid-template-columns:repeat(4,1fr);gap:.25rem}.preset-btn{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:var(--bg-tertiary);border:none;outline:none;border-radius:.5rem;font-weight:600;cursor:pointer;transition:all 0;color:var(--text-primary)}.preset-btn:hover,.preset-btn:focus,.preset-btn:active{outline:none;border:none;box-shadow:none}.preset-name{flex:1}.search-container{position:relative}.search-input{width:100%;padding:.75rem 1rem;font-size:1rem;border:1px solid var(--border-color);border-radius:8px;outline:none;transition:border-color .2s;background:var(--bg-accent);color:var(--text-accent)}.search-input::placeholder{color:var(--text-secondary)}.search-input:focus{border-color:var(--accent-primary)}.search-input.loading{padding-right:3rem}.search-loading-indicator{position:absolute;right:1rem;top:50%;transform:translateY(-50%);pointer-events:none}.dropdown{position:absolute;top:100%;left:0;right:0;max-height:300px;overflow-y:auto;background:var(--bg-accent);border:1px solid var(--border-color);border-top:none;border-radius:0 0 8px 8px;box-shadow:var(--shadow-card);z-index:100}.dropdown-item{width:100%;padding:.75rem 1rem;display:flex;gap:.5rem;align-items:center;border:none;cursor:pointer;text-align:left;transition:background .2s}.dropdown-item:hover{background:var(--bg-accent)}.asset-name{flex:1;color:var(--text-secondary);font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.selected-header{display:flex;justify-content:space-between;align-items:center;font-size:.9rem;color:var(--text-secondary);padding:.5rem 0}.total-percent{font-weight:600}.total-percent.invalid{color:var(--status-danger)}.asset-chips{display:flex;flex-direction:column;gap:.5rem}.asset-chip{display:flex;align-items:center;padding:0 .1rem;border-radius:.5rem;gap:1rem}.asset-info{display:flex;flex-direction:column;gap:.25rem;flex:1}.chip-symbol{text-align:left;font-weight:600;color:var(--text-primary);flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:var(--symbol-width, auto);min-width:2.5rem}.source-badge{font-size:.85rem;margin-right:.25rem}.source-badge.crypto{color:var(--asset-crypto)}.source-badge.stock{color:var(--asset-stock)}.chip-name{text-align:left;font-size:.85rem;color:var(--text-primary);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asset-controls{display:flex;align-items:center;gap:.25rem;flex-shrink:0;margin-left:auto}.percentage-input{line-height:1rem;width:4rem;padding:.25rem .5rem;font-size:.9rem;border:1px solid var(--border-color);border-radius:4px;text-align:right;background:var(--bg-accent);color:var(--text-accent);-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.percentage-input::-webkit-outer-spin-button,.percentage-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.percent-sign{color:var(--text-secondary);font-weight:500}.remove-btn{margin-left:.25rem;width:1.5rem;height:1.5rem;padding:0;background:var(--bg-tertiary);color:#fff;border:none;border-radius:50%;cursor:pointer;transition:background .2s;display:flex;align-items:center;justify-content:center}.remove-btn:hover{background:var(--status-danger)}.remove-btn:hover svg path{fill:#fff}.remove-btn svg{width:3rem;height:3rem;display:block}.validation-message{padding:.75rem;background:var(--status-warning-bg);border:1px solid var(--status-warning);border-radius:4px;color:var(--status-warning-text);font-size:.9rem;text-align:center}.asset-symbol{font-weight:600;color:var(--text-primary);min-width:80px}.asset-name{flex:1;color:var(--text-secondary);font-size:.9rem}.asset-exchange{color:var(--text-muted);font-size:.85rem;padding:.25rem .5rem;background:var(--bg-tertiary);border-radius:4px}.benchmark-label{color:var(--text-secondary);font-size:.9rem;text-align:left}.form-row{display:flex;gap:.5rem;justify-content:stretch;align-items:center;flex-wrap:wrap;font-weight:400;font-size:1rem}.form-row input,.form-row select{font-family:Poppins,sans-serif!important;font-weight:600!important;font-size:1rem!important;color:var(--text-accent)!important;line-height:1.5rem!important;height:1.5rem!important;background:transparent!important;position:relative}.form-row input{top:1px}.form-row select{top:-1px}input[type=date]{width:auto}.form-label{display:flex;flex-direction:column;gap:.5rem}.label-text{color:var(--text-primary)}.input-group{position:relative;display:flex;align-items:center}.input-prefix{position:absolute;left:0;color:var(--text-primary);pointer-events:none}.form-input{width:100%;padding:0;border:none;border-bottom:2px solid var(--border-color);outline:none;transition:border-color .2s;background:transparent;color:var(--text-primary)}.form-input:focus{border-color:var(--accent-primary)}.amount-input{padding-left:.7rem;transition:width .2s ease}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.form-select{width:5.4rem;padding:0;border:none;border-radius:8px;outline:none;background:var(--bg-primary);color:var(--text-primary);cursor:pointer;transition:border-color .2s}.form-select:focus{border-color:var(--accent-primary)}.strategy-toggle{margin-top:1rem;padding-top:1rem;border-top:2px solid var(--border-color)}.toggle-label{display:flex;align-items:center;gap:1rem;cursor:pointer;-webkit-user-select:none;user-select:none;transition:opacity .3s}.toggle-label.disabled{cursor:not-allowed;opacity:.5}.toggle-checkbox{position:absolute;opacity:0;pointer-events:none}.toggle-slider{position:relative;width:50px;height:26px;background:var(--bg-tertiary);border-radius:26px;transition:background .3s;flex-shrink:0}.toggle-slider:before{content:"";position:absolute;width:20px;height:20px;border-radius:50%;background:var(--bg-accent);top:3px;left:3px;transition:transform .3s;box-shadow:0 2px 4px #0003}.toggle-slider.active{background:var(--status-success)}.toggle-checkbox:checked+.toggle-slider:before{transform:translate(24px)}.toggle-checkbox:disabled+.toggle-slider{background:var(--border-color);cursor:not-allowed}.toggle-text{display:flex;flex-direction:column;gap:.25rem;flex:1}.toggle-title{text-align:left;font-weight:600;color:var(--text-primary)}.toggle-description{color:var(--text-secondary)}.disabled-hint{color:var(--text-muted);font-style:italic}.info-message{padding:.75rem 1rem;background:var(--status-info-bg);border:1px solid var(--status-info-border);border-radius:8px;color:var(--status-info);font-size:.9rem;margin-top:1rem}.widget{position:relative}.returns-summary{text-align:left;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start}@media (min-width: 512px){.returns-summary{flex-direction:row;flex-direction:row-reverse}}.returns-summary-left{display:flex;flex-direction:column}@media (min-width: 512px){.returns-summary-left{text-align:right}}.returns-summary-below{display:grid;gap:1.25rem;grid-template-columns:repeat(2,1fr)}@media (min-width: 768px){.returns-summary-below{grid-template-columns:repeat(3,1fr)}}@media (min-width: 960px){.returns-summary-below{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1280px){.returns-summary-below{grid-template-columns:repeat(3,1fr)}}@media (min-width: 1600px){.returns-summary-below{grid-template-columns:repeat(6,1fr)}}.returns-summary-below-set{display:flex;flex:1;flex-direction:column;text-align:left;align-items:flex-start}.hover-date{font-size:.875rem;color:var(--text-secondary);margin-bottom:.5rem;font-weight:500}.returns-main{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.75rem}.returns-value{font-size:2rem;font-weight:700;line-height:1}.positive .returns-value{color:var(--status-success)}.negative .returns-value{color:var(--status-danger)}.returns-percent{font-size:1.25rem;font-weight:600}.positive .returns-percent{color:var(--status-success)}.negative .returns-percent{color:var(--status-danger)}.returns-details{display:flex;flex-direction:column}.returns-detail-item{display:flex;justify-content:space-between;gap:1rem;font-size:.875rem}.detail-label{text-align:left;color:var(--text-secondary);white-space:nowrap}.chart-indicator.portfolio{color:var(--chart-portfolio)}.chart-indicator.invested{color:var(--chart-invested)}.chart-indicator.benchmark{color:var(--chart-benchmark)}.detail-value{color:var(--text-primary);font-weight:600;text-align:right}.detail-value.positive{color:var(--status-success)}.detail-value.negative{color:var(--status-danger)}.chart-container{width:100%;flex:1;min-height:300px}.chart-container .line{fill:none;stroke-width:3}.chart-container .portfolio-line{stroke:var(--chart-portfolio)}.chart-container .invested-line{stroke:var(--chart-invested)}.chart-container .benchmark-line{stroke:var(--chart-benchmark)}.chart-container .x-axis text,.chart-container .y-axis text{font-size:12px;fill:var(--chart-axis);color:var(--chart-axis)}.chart-container .x-axis line,.chart-container .y-axis line{stroke:var(--chart-grid)}.chart-container .x-axis .domain,.chart-container .y-axis .domain{display:none!important;stroke:none!important;opacity:0!important}.chart-container .hover-line{stroke:var(--chart-invested);stroke-width:1;stroke-dasharray:3,3}.chart-container .hover-circle{fill:var(--bg-primary);stroke-width:2}.chart-container .hover-circle.portfolio{stroke:var(--chart-portfolio)}.chart-container .hover-circle.invested{stroke:var(--chart-invested)}.chart-container .hover-circle.benchmark{stroke:var(--chart-benchmark)}.chart-container .line-end-circle{stroke-width:2}.chart-container .line-end-circle.portfolio-end{fill:var(--chart-portfolio);stroke:var(--chart-portfolio)}.chart-container .line-end-circle.invested-end{fill:var(--chart-invested);stroke:var(--chart-invested)}.chart-container .line-end-circle.benchmark-end{fill:var(--chart-benchmark);stroke:var(--chart-benchmark)}.metrics{display:flex;flex-direction:column;gap:1rem}.metric{display:flex;justify-content:space-between;align-items:center;padding-bottom:.75rem;border-bottom:1px solid var(--bg-tertiary)}.metric:last-child{border-bottom:none}.metric-label{color:var(--text-secondary);font-size:.9rem}.metric-value{font-weight:600;font-size:1.1rem;color:var(--text-primary)}.metric-value.positive{color:var(--status-success)}.metric-value.negative{color:var(--status-danger)}.breakdown-title{margin:0 0 1rem;font-size:1.1rem;color:var(--text-primary)}.breakdown-grid{display:flex;flex-direction:column;gap:.5rem}.asset-metrics{display:flex;align-items:center;gap:1rem;flex-shrink:0;margin-left:auto}.asset-value{color:var(--text-primary);font-weight:500}.asset-return{font-weight:600;padding:.25rem .75rem;border-radius:4px;font-size:.9rem;min-width:var(--return-width, auto);text-align:center}.asset-return.positive{color:var(--status-success);background:var(--status-success-bg)}.asset-return.negative{color:var(--status-danger);background:var(--status-danger-bg)}.artwork{background-image:url(/dca.avif);background-position:center;background-repeat:no-repeat;background-size:cover;text-align:left;padding:0;overflow:hidden;display:none}@media (min-width: 960px){.artwork{display:block}}.summary-text{font-size:1rem;line-height:1.6;color:var(--text-primary);margin:0;font-weight:400;text-align:left}.summary-text strong{font-weight:600;color:var(--text-accent)}
