:root{--color-bg: #f5f7fa;--color-surface: #ffffff;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-light: #dbeafe;--color-text: #1f2937;--color-text-muted: #6b7280;--color-text-light: #9ca3af;--color-border: #e5e7eb;--color-border-light: #f3f4f6;--color-success: #10b981;--color-warning: #f59e0b;--color-error: #ef4444;--sidebar-width: 400px;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--transition-fast: .15s ease;--transition-normal: .2s ease}[data-theme=dark]{--color-bg: #111827;--color-surface: #1f2937;--color-primary: #3b82f6;--color-primary-hover: #60a5fa;--color-primary-light: #1e3a8a;--color-text: #f9fafb;--color-text-muted: #9ca3af;--color-text-light: #6b7280;--color-border: #374151;--color-border-light: #2d3748;--color-success: #34d399;--color-warning: #fbbf24;--color-error: #f87171;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .5);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .5), 0 2px 4px -1px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5), 0 4px 6px -2px rgba(0, 0, 0, .3)}*,*:before,*:after{box-sizing:border-box}html{font-size:16px}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{margin:0;font-weight:600;line-height:1.25}p{margin:0}.app-container{display:flex;height:100vh;overflow:hidden}.sidebar{width:var(--sidebar-width);max-width:100%;background:var(--color-surface);border-right:1px solid var(--color-border);padding:var(--spacing-lg);overflow-y:auto;display:flex;flex-direction:column;gap:var(--spacing-md)}.chart-area{flex:1;padding:var(--spacing-xl);display:flex;flex-direction:column;min-width:0;overflow-y:auto}.divider{border:none;border-top:1px solid var(--color-border);margin:var(--spacing-sm) 0}.rates-panel h2,.investment-form h2,.investment-list-section h2{font-size:.75rem;font-weight:600;margin-bottom:var(--spacing-md);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.rates-panel{padding-bottom:var(--spacing-sm)}.rates-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-sm)}.rates-grid label{margin-bottom:0}.rates-grid input{text-align:center;font-size:.875rem}.rates-status{font-size:.75rem;color:var(--color-text-muted);margin-top:var(--spacing-sm);text-align:center}.rates-status.success{color:var(--color-success)}.rates-status.error{color:var(--color-error)}label{display:flex;flex-direction:column;gap:var(--spacing-xs);margin-bottom:var(--spacing-md)}label>span{font-size:.875rem;font-weight:500;color:var(--color-text)}input[type=text],input[type=date],select{width:100%;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:1rem;font-family:inherit;color:var(--color-text);background:var(--color-surface);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}input[type=text]:hover,input[type=date]:hover,select:hover{border-color:var(--color-text-light)}input[type=text]:focus,input[type=date]:focus,select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}input::placeholder{color:var(--color-text-light)}input:disabled{background:var(--color-border-light);color:var(--color-text-muted);cursor:not-allowed}select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--spacing-md) center;padding-right:calc(var(--spacing-md) * 2 + 12px)}.checkbox-label{flex-direction:row;align-items:center;gap:var(--spacing-sm);cursor:pointer;-webkit-user-select:none;user-select:none}.checkbox-label input[type=checkbox]{width:1.125rem;height:1.125rem;margin:0;cursor:pointer;accent-color:var(--color-primary)}.checkbox-label span{font-weight:400}.form-group{margin-bottom:var(--spacing-md);padding:var(--spacing-md);background:var(--color-border-light);border-radius:var(--radius-sm)}.form-group .checkbox-label{margin-bottom:var(--spacing-xs)}.form-hint{font-size:.75rem;color:var(--color-text-muted);margin-top:var(--spacing-xs)}.btn-primary{display:inline-flex;align-items:center;justify-content:center;width:100%;background:var(--color-primary);color:#fff;border:none;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-sm);font-size:1rem;font-weight:500;font-family:inherit;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-primary:active{transform:scale(.98)}.btn-primary:focus{outline:none;box-shadow:0 0 0 3px var(--color-primary-light)}.btn-secondary{display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--color-primary);border:1px solid var(--color-primary);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer;transition:background var(--transition-fast)}.btn-secondary:hover{background:var(--color-primary-light)}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:1rem;transition:background var(--transition-fast)}.btn-icon:hover{background:var(--color-border-light)}.btn-edit:hover{background:var(--color-primary-light)}.btn-remove:hover{background:#fee2e2}.form-actions{margin-top:var(--spacing-lg)}.investment-list-section{display:flex;flex-direction:column}.investment-list{list-style:none;padding:0;margin:0}.investment-item{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);margin-bottom:var(--spacing-sm);background:var(--color-surface);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.investment-item:hover{border-color:var(--color-text-light);box-shadow:var(--shadow-sm)}.investment-item-info{display:flex;flex-direction:column;gap:var(--spacing-xs);min-width:0;flex:1}.investment-item-name{font-weight:500;font-size:.9375rem;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.investment-item-details{font-size:.75rem;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.investment-item-return{font-size:.75rem;color:var(--color-success);margin-top:var(--spacing-xs)}.investment-item-return strong{font-weight:600}.investment-item-actions{display:flex;gap:var(--spacing-xs);margin-left:var(--spacing-sm);flex-shrink:0}.investment-item-empty{text-align:center;color:var(--color-text-muted);font-size:.875rem;padding:var(--spacing-lg)}.chart-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg);flex-wrap:wrap;gap:var(--spacing-md)}.chart-header h1{font-size:1.5rem;color:var(--color-text)}.chart-controls label{flex-direction:row;align-items:center;gap:var(--spacing-sm);margin-bottom:0}.chart-controls label span{font-size:.875rem;white-space:nowrap}.chart-controls input[type=date]{width:auto}.chart-container{flex:1;position:relative;min-height:400px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-lg);display:flex;flex-direction:column}.chart-wrapper{position:relative;flex:1;width:100%;min-height:0}.chart-wrapper canvas{position:absolute;top:0;left:0;width:100%!important;height:100%!important}.chart-placeholder{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:var(--color-text-muted);pointer-events:none;z-index:1;width:100%}.chart-placeholder p:first-child{font-size:3rem;margin-bottom:var(--spacing-md);opacity:.5}.chart-placeholder p:last-child{font-size:.9375rem;max-width:300px;margin:0 auto}.chart-footer{margin-top:var(--spacing-md)}.chart-disclaimer{font-size:.75rem;color:var(--color-text-muted);text-align:center}.chart-area{flex:1;padding:var(--spacing-xl);display:flex;flex-direction:column;min-width:0;overflow:hidden}.chart-controls{display:flex;align-items:center;gap:var(--spacing-md)}.chart-controls label{flex-direction:row;align-items:center;gap:var(--spacing-sm);margin-bottom:0;white-space:nowrap}.input-with-action{display:flex;align-items:center;gap:var(--spacing-xs)}.chart-controls label span{font-size:.875rem;font-weight:500}.chart-controls input[type=date]{width:auto;padding:var(--spacing-xs) var(--spacing-sm);font-size:.875rem}.chart-legend{display:flex;flex-wrap:wrap;gap:var(--spacing-md);margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--color-border)}.chart-legend-item{display:flex;align-items:center;gap:var(--spacing-xs);font-size:.75rem;color:var(--color-text-muted)}.chart-legend-line{width:20px;height:0;border-top:2px dashed var(--color-text-light)}.investment-item{position:relative}.investment-item:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--investment-color, var(--color-primary));border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.investment-item[data-color="0"]:before{background:#2563eb}.investment-item[data-color="1"]:before{background:#dc2626}.investment-item[data-color="2"]:before{background:#16a34a}.investment-item[data-color="3"]:before{background:#ca8a04}.investment-item[data-color="4"]:before{background:#9333ea}.investment-item[data-color="5"]:before{background:#0891b2}.investment-item[data-color="6"]:before{background:#ea580c}.investment-item[data-color="7"]:before{background:#be185d}.investment-item[data-color="8"]:before{background:#4f46e5}.investment-item[data-color="9"]:before{background:#059669}.hidden{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}@media (max-width: 900px){.app-container{flex-direction:column;height:auto;overflow:visible;min-height:100vh}.sidebar{width:100%;max-height:50vh;border-right:none;border-bottom:1px solid var(--color-border)}.chart-area{padding:var(--spacing-lg)}.chart-container{min-height:300px}.rates-grid{grid-template-columns:1fr}.chart-header{flex-direction:column;align-items:flex-start}}@media (max-width: 480px){.sidebar,.chart-area{padding:var(--spacing-md)}.chart-header h1{font-size:1.25rem}}.rates-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md)}.rates-header h2{margin-bottom:0}.investment-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md)}.investment-list-header h2{margin-bottom:0}.investment-list-actions{display:flex;gap:var(--spacing-xs)}.btn-text{background:none;border:none;color:var(--color-text-muted);font-size:.75rem;cursor:pointer;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);transition:color var(--transition-fast),background var(--transition-fast)}.btn-text:hover{color:var(--color-error);background:#ef44441a}.data-management{padding-top:var(--spacing-sm)}.data-management h2{font-size:.75rem;margin-bottom:var(--spacing-md)}.data-management-buttons{display:flex;gap:var(--spacing-sm)}.data-management-buttons .btn-secondary{flex:1;font-size:.8125rem;padding:var(--spacing-sm)}.toast{position:fixed;bottom:var(--spacing-xl);left:50%;transform:translate(-50%) translateY(100px);background:var(--color-text);color:var(--color-bg);padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-md);font-size:.875rem;font-weight:500;box-shadow:var(--shadow-lg);opacity:0;transition:transform .3s ease,opacity .3s ease;z-index:1000;pointer-events:none}.toast.show{transform:translate(-50%) translateY(0);opacity:1}.rates-status{display:flex;align-items:center;gap:var(--spacing-sm)}.rates-status.loading:before{content:"";width:12px;height:12px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#refresh-rates-btn{font-size:1rem;opacity:.7;transition:opacity var(--transition-fast),transform var(--transition-fast)}#refresh-rates-btn:hover{opacity:1}#refresh-rates-btn:active{transform:rotate(180deg)}#refresh-rates-btn:disabled{opacity:.5;cursor:not-allowed}@media (max-width: 900px){.app-container{flex-direction:column}.sidebar{width:100%;max-height:none;border-right:none;border-bottom:1px solid var(--color-border);overflow-y:visible}.chart-area{padding:var(--spacing-md);min-height:60vh}.chart-container{min-height:350px}.rates-grid{grid-template-columns:repeat(3,1fr)}.chart-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-sm)}.chart-header h1{font-size:1.25rem}.chart-legend{flex-wrap:wrap;justify-content:center}.data-management-buttons{flex-direction:row}.toast{left:var(--spacing-md);right:var(--spacing-md);transform:translate(0) translateY(100px);text-align:center}.toast.show{transform:translate(0) translateY(0)}}@media (max-width: 480px){.sidebar{padding:var(--spacing-md)}.rates-grid{grid-template-columns:1fr 1fr 1fr;gap:var(--spacing-xs)}.rates-grid label span{font-size:.75rem}.rates-grid input{font-size:.8125rem;padding:var(--spacing-xs)}.investment-item{flex-direction:column;align-items:flex-start;gap:var(--spacing-sm)}.investment-item-actions{align-self:flex-end;margin-left:0}}@media print{.sidebar{display:none}.chart-area{padding:0}.chart-controls,.toast{display:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}button:focus:not(:focus-visible),input:focus:not(:focus-visible),select:focus:not(:focus-visible){outline:none}
