:root{--bg: #0a0c10;--bg-elevated: #11141b;--bg-card: #151923;--bg-hover: #1c2230;--border: #1f2533;--border-strong: #2a3142;--text: #e8ecf3;--text-muted: #8892a6;--text-dim: #525a6b;--accent: #d4ff3f;--accent-dim: #a8cc2f;--danger: #ff5757;--danger-bg: rgba(255, 87, 87, .08);--warning: #ffb547;--warning-bg: rgba(255, 181, 71, .08);--success: #4ade80;--success-bg: rgba(74, 222, 128, .08);--info: #60a5fa;--info-bg: rgba(96, 165, 250, .08);--display: "Fraunces", Georgia, serif;--sans: "Inter Tight", -apple-system, sans-serif;--mono: "JetBrains Mono", "Courier New", monospace;--nav-height: 64px;--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden;overscroll-behavior-y:none}body{background-image:radial-gradient(at 15% 0%,rgba(212,255,63,.05) 0px,transparent 50%),radial-gradient(at 85% 100%,rgba(96,165,250,.04) 0px,transparent 50%);min-height:100dvh}.shell{max-width:480px;margin:0 auto;min-height:100dvh;position:relative;border-left:1px solid var(--border);border-right:1px solid var(--border)}@media(max-width:481px){.shell{border-left:none;border-right:none}}.screen{padding:16px 16px calc(var(--nav-height) + var(--safe-bottom) + 24px);animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 12px;padding-top:calc(14px + env(safe-area-inset-top,0px));background:#0a0c10d9;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}.brand-mark{display:flex;align-items:center;gap:10px}.brand-icon{width:30px;height:30px;background:var(--accent);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#0a0c10;font-family:var(--display);font-weight:800;font-size:18px;font-style:italic}.brand-name{font-family:var(--display);font-size:20px;font-weight:600;letter-spacing:-.02em}.brand-tag{font-family:var(--mono);font-size:8.5px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.15em;display:block;margin-top:-2px}.topbar-actions{display:flex;align-items:center;gap:8px}.icon-btn{background:var(--bg-card);border:1px solid var(--border);color:var(--text-muted);width:38px;height:38px;border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;-webkit-tap-highlight-color:transparent}.icon-btn:active{background:var(--bg-hover);color:var(--text)}.icon-btn.spinning svg{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.sync-pill{font-family:var(--mono);font-size:9px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}.greeting{margin:8px 0 18px}.greeting h1{font-family:var(--display);font-size:27px;font-weight:500;letter-spacing:-.02em;line-height:1.15}.greeting h1 em{font-style:italic;color:var(--accent);font-weight:400}.greeting p{color:var(--text-muted);margin-top:5px;font-size:13px}.conn-banner{display:flex;align-items:center;gap:10px;background:var(--danger-bg);border:1px solid rgba(255,87,87,.35);border-radius:10px;padding:10px 14px;margin-bottom:14px;font-size:12.5px}.conn-banner .dot{width:8px;height:8px;border-radius:50%;background:var(--danger);flex-shrink:0}.conn-banner button{margin-left:auto;background:var(--bg-card);border:1px solid var(--border-strong);color:var(--text);padding:5px 12px;border-radius:6px;font-size:12px;cursor:pointer}.alert-banner{background:linear-gradient(135deg,var(--danger-bg) 0%,transparent 100%);border:1px solid rgba(255,87,87,.25);border-left:3px solid var(--danger);padding:14px;border-radius:12px;display:flex;align-items:flex-start;gap:12px;margin-bottom:18px;-webkit-tap-highlight-color:transparent}.alert-banner.severity-MEDIUM{background:linear-gradient(135deg,var(--warning-bg) 0%,transparent 100%);border-color:#ffb54740;border-left-color:var(--warning)}.alert-banner.severity-MEDIUM .alert-pulse,.alert-banner.severity-MEDIUM .alert-pulse:before{background:var(--warning)}.alert-pulse{width:10px;height:10px;background:var(--danger);border-radius:50%;flex-shrink:0;margin-top:5px;position:relative}.alert-pulse:before{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;background:var(--danger);border-radius:50%;opacity:.4;animation:pulse 2s infinite}@keyframes pulse{0%,to{transform:scale(1);opacity:.4}50%{transform:scale(1.6);opacity:0}}.alert-banner .content{flex:1;min-width:0}.alert-banner .title{font-weight:600;font-size:13.5px;margin-bottom:2px}.alert-banner .meta{color:var(--text-muted);font-size:12px}.alert-banner .cta{color:var(--accent);font-size:12px;font-weight:600;margin-top:8px;display:inline-block}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:22px}.stat{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:14px}.stat-label{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:.14em;color:var(--text-dim);margin-bottom:8px}.stat-value{font-family:var(--display);font-size:26px;font-weight:500;letter-spacing:-.02em;line-height:1}.stat-value .unit{font-size:14px;color:var(--text-muted);font-weight:400;margin-left:3px}.stat-value.small{font-size:19px}.stat-sub{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);font-size:10px;margin-top:8px;padding:3px 7px;border-radius:4px;font-weight:500;color:var(--text-muted);background:var(--bg-hover)}.stat-sub.warn{color:var(--warning);background:var(--warning-bg)}.stat-sub.ok{color:var(--success);background:var(--success-bg)}.section{margin-bottom:24px}.section-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px;gap:10px}.section-title{font-family:var(--display);font-size:19px;font-weight:500;letter-spacing:-.01em}.section-sub{color:var(--text-muted);font-size:11.5px}.section-link{color:var(--accent);font-size:12px;font-weight:600;background:none;border:none;cursor:pointer;font-family:var(--sans)}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;overflow:hidden}.alert-row{display:grid;grid-template-columns:36px 1fr auto;gap:12px;padding:14px;border-bottom:1px solid var(--border);cursor:pointer;-webkit-tap-highlight-color:transparent}.alert-row:last-child{border-bottom:none}.alert-row:active{background:var(--bg-hover)}.alert-row.acknowledged{opacity:.45}.alert-icon{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.alert-icon.danger{background:var(--danger-bg);color:var(--danger)}.alert-icon.warning{background:var(--warning-bg);color:var(--warning)}.alert-icon.info{background:var(--info-bg);color:var(--info)}.alert-icon.success{background:var(--success-bg);color:var(--success)}.alert-body{min-width:0}.alert-headline{font-size:13px;font-weight:600;line-height:1.35;margin-bottom:3px}.alert-fund-code{font-family:var(--mono);font-size:9.5px;background:var(--bg-hover);padding:2px 5px;border-radius:3px;color:var(--text)}.alert-detail-line{color:var(--text-muted);font-size:11.5px;margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.alert-severity{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:.1em;margin-top:5px;font-weight:600}.alert-severity.danger{color:var(--danger)}.alert-severity.warning{color:var(--warning)}.alert-severity.info{color:var(--info)}.alert-severity.success{color:var(--success)}.alert-snooze-note{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:.1em;margin-top:4px;font-weight:600;color:var(--text-dim)}.alert-time{font-family:var(--mono);font-size:9.5px;color:var(--text-dim);white-space:nowrap;text-align:right}.chip-row{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;margin-bottom:12px;scrollbar-width:none}.chip-row::-webkit-scrollbar{display:none}.chip{background:var(--bg-card);border:1px solid var(--border);color:var(--text-muted);font-size:12px;font-weight:500;padding:7px 14px;border-radius:999px;white-space:nowrap;cursor:pointer;-webkit-tap-highlight-color:transparent;font-family:var(--sans)}.chip.active{background:var(--accent);color:#0a0c10;border-color:var(--accent);font-weight:600}.search{display:flex;align-items:center;background:var(--bg-card);border:1px solid var(--border);padding:11px 14px;border-radius:12px;gap:10px;margin-bottom:12px}.search input{background:transparent;border:none;outline:none;color:var(--text);width:100%;font-family:var(--sans);font-size:14px}.search input::placeholder{color:var(--text-dim)}.fund-card{padding:14px;border-bottom:1px solid var(--border);cursor:pointer;-webkit-tap-highlight-color:transparent}.fund-card:last-child{border-bottom:none}.fund-card:active{background:var(--bg-hover)}.fund-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px}.fund-name{font-size:13.5px;font-weight:600;line-height:1.3;margin-bottom:3px}.fund-meta{color:var(--text-muted);font-size:10px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.05em}.fund-nav{text-align:right;flex-shrink:0}.fund-price{font-family:var(--display);font-size:17px;font-weight:500;letter-spacing:-.01em}.fund-date{font-family:var(--mono);font-size:9.5px;color:var(--text-dim);margin-top:2px}.stock-change.up{color:var(--success)}.stock-change.down{color:var(--danger)}.fund-foot{display:flex;align-items:center;justify-content:space-between;gap:10px}.flags{display:flex;gap:5px;flex-wrap:wrap}.flag{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:.07em;padding:3px 7px;border-radius:4px;font-weight:600;display:inline-flex;align-items:center;gap:4px}.flag.ok{background:var(--success-bg);color:var(--success)}.flag.warn{background:var(--warning-bg);color:var(--warning)}.flag.alert{background:var(--danger-bg);color:var(--danger)}.flag-dot{width:5px;height:5px;border-radius:50%;background:currentColor}.health-bar{display:flex;align-items:center;gap:6px;flex-shrink:0}.health-track{width:44px;height:4px;background:var(--border);border-radius:2px;overflow:hidden}.health-fill{height:100%;border-radius:2px;transition:width .5s}.health-fill.good{background:var(--success)}.health-fill.mid{background:var(--warning)}.health-fill.bad{background:var(--danger)}.health-text{font-family:var(--mono);font-size:10px;color:var(--text-muted)}.empty-state{padding:44px 24px;text-align:center;color:var(--text-muted)}.empty-state .icon{width:42px;height:42px;margin:0 auto 14px;color:var(--text-dim);opacity:.4}.empty-state h4{font-family:var(--display);font-size:17px;font-weight:500;color:var(--text);margin-bottom:5px}.empty-state p{font-size:12.5px;max-width:280px;margin:0 auto}.skeleton{background:linear-gradient(90deg,var(--bg-card) 0%,var(--bg-hover) 50%,var(--bg-card) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:8px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:100;opacity:0;pointer-events:none;transition:opacity .25s}.sheet-backdrop.open{opacity:1;pointer-events:auto}.sheet{position:fixed;left:50%;bottom:0;width:100%;max-width:480px;max-height:88dvh;transform:translate(-50%,105%);background:var(--bg-elevated);border:1px solid var(--border);border-bottom:none;border-radius:20px 20px 0 0;z-index:101;transition:transform .32s cubic-bezier(.16,1,.3,1);display:flex;flex-direction:column;overflow:hidden}.sheet.open{transform:translate(-50%)}.sheet-grab{width:40px;height:4px;background:var(--border-strong);border-radius:2px;margin:10px auto 0;flex-shrink:0}.sheet-head{padding:14px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-shrink:0}.sheet-title{font-family:var(--display);font-size:19px;font-weight:500;letter-spacing:-.01em;line-height:1.25}.sheet-sub{color:var(--text-muted);font-size:12px;margin-top:3px}.sheet-close{background:var(--bg-hover);border:1px solid var(--border);color:var(--text);width:30px;height:30px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sheet-body{padding:8px 20px calc(20px + var(--safe-bottom));overflow-y:auto;-webkit-overflow-scrolling:touch}.detail-row{padding:13px 0;border-bottom:1px solid var(--border)}.detail-row:last-child{border-bottom:none}.detail-label{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:.15em;color:var(--text-dim);margin-bottom:5px}.detail-value{font-size:13px;line-height:1.55}.detail-value.big{font-family:var(--display);font-size:22px;font-weight:500}.compare{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;margin-top:7px;padding:12px;background:var(--bg-card);border-radius:10px;border:1px solid var(--border)}.compare-side{font-size:12px;min-width:0;overflow-wrap:break-word}.compare-side.was{color:var(--text-muted)}.compare-side.now{color:var(--text);font-weight:500}.compare-label{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:.12em;color:var(--text-dim);margin-bottom:4px}.compare-arrow{color:var(--accent);font-size:15px}.compare pre{font-family:var(--mono);font-size:10.5px;white-space:pre-wrap;margin:0}.action-bar{display:flex;gap:8px;margin-top:18px}.btn{flex:1;padding:12px 16px;border-radius:10px;font-family:var(--sans);font-size:13px;font-weight:600;cursor:pointer;border:1px solid var(--border-strong);background:var(--bg-card);color:var(--text);-webkit-tap-highlight-color:transparent}.btn:active{background:var(--bg-hover)}.btn:disabled{opacity:.5}.btn.primary{background:var(--accent);color:#0a0c10;border-color:var(--accent)}.btn.danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn.danger-outline{background:var(--danger-bg);color:var(--danger);border-color:#ff575759}.holdings-table{width:100%;margin-top:6px;border-collapse:collapse}.holdings-table td{padding:5px 0;font-size:12.5px;border-bottom:1px solid var(--border)}.holdings-table tr:last-child td{border-bottom:none}.holdings-table .w{text-align:right;font-family:var(--mono);font-size:11.5px}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;height:calc(var(--nav-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:#11141beb;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--border);display:grid;grid-template-columns:repeat(4,1fr);z-index:50}.nav-tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--text-dim);font-size:10px;font-weight:500;cursor:pointer;background:none;border:none;font-family:var(--sans);position:relative;-webkit-tap-highlight-color:transparent}.nav-tab.active{color:var(--accent)}.nav-tab.active:before{content:"";position:absolute;top:0;width:28px;height:2px;background:var(--accent);border-radius:0 0 2px 2px}.auth-shell{max-width:480px;margin:0 auto;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px;border-left:1px solid var(--border);border-right:1px solid var(--border)}@media(max-width:481px){.auth-shell{border-left:none;border-right:none}}.auth-card{width:100%;background:var(--bg-card);border:1px solid var(--border);border-radius:18px;padding:28px 22px}.auth-brand{display:flex;align-items:center;gap:10px;margin-bottom:24px}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:var(--bg-hover);border:1px solid var(--border);border-radius:10px;padding:4px;margin-bottom:20px}.auth-tab{background:none;border:none;color:var(--text-muted);font-family:var(--sans);font-size:12.5px;font-weight:600;padding:9px 0;border-radius:7px;cursor:pointer;-webkit-tap-highlight-color:transparent}.auth-tab.active{background:var(--accent);color:#0a0c10}.auth-form{display:grid;gap:14px}.field{display:grid;gap:6px}.field label{font-family:var(--mono);font-size:9.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--text-dim)}.field input{background:var(--bg-hover);border:1px solid var(--border);color:var(--text);padding:11px 13px;border-radius:10px;font-family:var(--sans);font-size:14px;outline:none}.field input:focus{border-color:var(--accent-dim)}.field input::placeholder{color:var(--text-dim)}.auth-error{background:var(--danger-bg);border:1px solid rgba(255,87,87,.35);color:var(--danger);font-size:12px;padding:10px 12px;border-radius:8px}.auth-hint{color:var(--text-muted);font-size:11.5px;margin-top:16px;text-align:center;line-height:1.5}.admin-card{padding:14px}.admin-inline-form{display:flex;gap:8px}.admin-inline-form input{flex:1;min-width:0;background:var(--bg-hover);border:1px solid var(--border);color:var(--text);padding:10px 12px;border-radius:9px;font-family:var(--sans);font-size:13px;outline:none}.admin-inline-form input:focus{border-color:var(--accent-dim)}.admin-inline-form .btn{flex:none;padding:0 16px}.admin-list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 14px;border-bottom:1px solid var(--border)}.admin-list-row:last-child{border-bottom:none}.admin-list-title{font-size:13px;font-weight:600;display:flex;align-items:center}.admin-list-sub{color:var(--text-muted);font-size:11.5px;margin-top:2px;font-family:var(--mono)}.mono-strong{font-family:var(--mono);color:var(--accent)}.nav-tab .badge{position:absolute;top:7px;right:calc(50% - 22px);background:var(--danger);color:#fff;font-family:var(--mono);font-size:8.5px;font-weight:600;padding:1px 5px;border-radius:8px;min-width:16px;text-align:center}
