*,*:before,*:after{box-sizing:border-box}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f2f2f7;--card: #ffffff;--border: rgba(0,0,0,.1);--label: rgba(0,0,0,.45);--text: #000000;--subtext: rgba(0,0,0,.55);--green: #30d158;--red: #ff453a;--blue: #007aff;--tab-bar: #f9f9f9;--tab-border: rgba(0,0,0,.12);--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px);--color-0: #007aff;--color-1: #30d158;--color-2: #ff9500;--color-3: #ff453a;--color-4: #af52de;--color-5: #00c7be;--color-6: #ff2d55;--color-7: #5856d6}html,body,#root{height:100%;height:100dvh}body{font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:15px;-webkit-font-smoothing:antialiased;overscroll-behavior:none;overflow:hidden}.app{display:flex;flex-direction:column;height:100dvh;overflow:hidden}.summary-bar{flex-shrink:0;background:var(--tab-bar);border-bottom:1px solid var(--tab-border);padding-top:var(--safe-t);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.summary-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 8px}.summary-title{font-size:17px;font-weight:600;color:var(--text)}.summary-total{display:flex;align-items:baseline;gap:6px;padding:0 16px 6px}.summary-total-label{font-size:12px;color:var(--label);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.summary-total-value{font-size:20px;font-weight:700;color:var(--text);letter-spacing:-.02em}.portfolio-pills-list{display:flex;flex-direction:column;gap:6px;padding:0 16px 12px}.portfolio-pill-row{display:flex;align-items:center;gap:8px;background:var(--card);border:1.5px solid var(--border);border-radius:20px;padding:8px 12px;cursor:pointer;-webkit-tap-highlight-color:transparent;width:100%;text-align:left;transition:border-color .15s,background .15s}.portfolio-pill-row.active{border-color:var(--blue);background:#007aff0f}.portfolio-pill-row:active{opacity:.7}.row-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.row-name{flex:1;font-size:14px;font-weight:500;color:var(--text)}.portfolio-pill-row.active .row-name{color:var(--blue);font-weight:600}.row-value{font-size:14px;font-weight:600;color:var(--text)}.total-pill .row-name{font-weight:600}.total-value{font-size:15px}.app-error{position:fixed;top:calc(var(--safe-t) + 8px);left:50%;transform:translate(-50%);z-index:50;background:var(--card);border:1px solid var(--red);border-radius:10px;padding:8px 14px;font-size:13px;color:var(--red);display:flex;align-items:center;gap:10px;box-shadow:0 2px 12px #0000001f}.app-error button{background:none;border:none;color:var(--label);font-size:1.1rem;cursor:pointer;padding:0;line-height:1}.tab-pane{flex:1;overflow:hidden;display:flex;flex-direction:column;min-height:0}.tab-content{flex:1;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;min-height:0;padding:0 0 8px}.tab-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;flex-shrink:0}.tab-title{font-size:15px;font-weight:600;color:var(--text)}.chart-fill{flex:1;min-height:0;padding:0 4px 4px}.chart-empty{color:var(--label);font-size:14px;text-align:center;padding:3rem 0}.interval-toggle{display:flex;gap:4px}.interval-toggle button{background:transparent;border:1px solid var(--border);color:var(--label);padding:4px 10px;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;-webkit-tap-highlight-color:transparent}.interval-toggle button.active{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}.pie-card{background:var(--card);border-radius:12px;margin:8px 16px;padding:14px 8px 8px;overflow:visible}.pie-card-title{font-size:12px;font-weight:600;color:var(--label);text-transform:uppercase;letter-spacing:.04em;padding:0 8px 4px}.holdings-table{width:calc(100% - 32px);margin:8px 16px 16px;border-collapse:collapse;background:var(--card);border-radius:12px;overflow:hidden;font-size:14px}.holdings-table th{background:#00000008;color:var(--label);font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:8px;font-weight:600;text-align:left;border-bottom:1px solid var(--border)}.holdings-table td{padding:10px 8px;border-bottom:1px solid var(--border);color:var(--text)}.holdings-table tr:last-child td{border-bottom:none}.value-cell{font-weight:600}.pct-cell{color:var(--subtext)}.empty-cell{text-align:center;color:var(--label);padding:2rem 0}.chart-tooltip{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:8px 12px;display:flex;flex-direction:column;gap:2px;font-size:13px;box-shadow:0 2px 8px #0000001a}.chart-tooltip strong{color:var(--text)}.chart-tooltip span{display:block;color:var(--subtext)}.tab-bar{flex-shrink:0;display:flex;background:var(--tab-bar);border-top:1px solid var(--tab-border);padding-bottom:var(--safe-b)}.tab-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:none;border:none;color:var(--label);cursor:pointer;padding:8px 4px 4px;-webkit-tap-highlight-color:transparent;transition:color .15s}.tab-item.active{color:var(--blue)}.tab-item:active{opacity:.6}.tab-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center}.tab-icon svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tab-label{font-size:10px;font-weight:500;letter-spacing:.01em}.login-screen{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg);padding:calc(var(--safe-t) + 16px) 24px calc(var(--safe-b) + 16px)}.login-logo{max-width:180px;margin-bottom:2rem;border-radius:8px}.login-form{background:var(--card);border-radius:16px;padding:2rem 1.5rem;display:flex;flex-direction:column;gap:12px;width:100%;max-width:340px;box-shadow:0 2px 16px #00000014}.login-form h1{font-size:20px;font-weight:700;text-align:center;color:var(--text);margin-bottom:4px}.login-form input{background:var(--bg);border:1px solid var(--border);border-radius:10px;color:var(--text);font-size:15px;padding:12px 14px;outline:none;-webkit-appearance:none}.login-form input:focus{border-color:var(--blue)}.login-form button[type=submit]{background:var(--blue);border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:15px;font-weight:600;padding:13px;margin-top:4px;-webkit-tap-highlight-color:transparent}.login-form button[type=submit]:active{opacity:.8}.login-error{color:var(--red);font-size:13px;text-align:center}
