*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f1117;--surface:#1a1d27;--surface2:#22263a;--border:#2e3347;--text:#e8eaf0;--muted:#8b92a8;--accent:#6c8eff;--positive:#34d399;--negative:#f87171;--pending:#fbbf24;--font:"Inter", system-ui, sans-serif;--mono:"JetBrains Mono", "Fira Code", monospace}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--font)}.loading{height:100vh;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:1rem;display:flex}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{color:var(--negative);background:rgba(248,113,113,.1);border:1px solid rgba(248,113,113,.3);border-radius:8px;margin:2rem;padding:1rem 1.5rem;font-size:.9rem}.app{flex-direction:column;min-height:100vh;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;justify-content:space-between;align-items:center;height:56px;padding:0 1.5rem;display:flex;position:sticky;top:0}.brand{color:var(--text);align-items:center;gap:.5rem;font-size:1rem;font-weight:700;display:flex}.topbar-right{align-items:center;gap:1rem;display:flex}.user{color:var(--muted);font-size:.85rem}.btn-logout{border:1px solid var(--border);color:var(--muted);background:0 0;border-radius:6px;padding:.3rem .75rem;font-size:.8rem;text-decoration:none;transition:border-color .15s,color .15s}.btn-logout:hover{border-color:var(--negative);color:var(--negative)}.main-content{flex:1;width:100%;max-width:1400px;margin:0 auto;padding:1.5rem}.summary-row{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.summary-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1.25rem 1.5rem}.summary-card.positive{border-color:rgba(52,211,153,.4)}.summary-card.negative{border-color:rgba(248,113,113,.4)}.card-label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.4rem;font-size:.78rem}.card-value{font-size:1.4rem;font-weight:600;font-family:var(--mono)}.card-sub{color:var(--muted);font-size:.85rem;font-family:var(--mono);margin-top:.2rem}.summary-card.positive .card-value{color:var(--positive)}.summary-card.negative .card-value{color:var(--negative)}.table-wrap{border:1px solid var(--border);border-radius:10px;overflow-x:auto}.portfolio-table{border-collapse:collapse;width:100%;font-size:.875rem}.portfolio-table thead tr{background:var(--surface2)}.portfolio-table th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-bottom:1px solid var(--border);padding:.75rem 1rem;font-size:.75rem;font-weight:600}.portfolio-table td{border-bottom:1px solid var(--border);white-space:nowrap;padding:.7rem 1rem}.portfolio-table tbody tr:last-child td{border-bottom:none}.portfolio-table tbody tr:hover{background:var(--surface2)}.symbol{font-size:.95rem;font-weight:700}.mono{font-family:var(--mono);font-size:.83rem}.positive{color:var(--positive)}.negative{color:var(--negative)}.pending{color:var(--pending)}.row-positive .symbol{color:var(--positive)}.row-negative .symbol{color:var(--negative)}.row-pending .symbol{color:var(--pending)}.badge{text-transform:uppercase;letter-spacing:.05em;border-radius:4px;padding:.2rem .5rem;font-size:.7rem;font-weight:600;display:inline-block}.badge.live{color:var(--positive);background:rgba(52,211,153,.15)}.badge.pending{color:var(--pending);background:rgba(251,191,36,.15)}.empty-state{text-align:center;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:4rem 2rem}.empty-state p{margin-bottom:.75rem}.empty-state code{background:var(--surface2);font-family:var(--mono);color:var(--accent);border-radius:6px;padding:.4rem .75rem;font-size:.85rem;display:inline-block}.auth-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:16px;width:100%;max-width:380px;padding:2.5rem}.auth-logo{color:var(--accent);margin-bottom:1rem}.auth-card h1{margin-bottom:.5rem;font-size:1.5rem;font-weight:700}.auth-subtitle{color:var(--muted);margin-bottom:2rem;font-size:.875rem}.google-btn{color:#3c4043;background:#fff;border:1px solid #dadce0;border-radius:8px;align-items:center;gap:.6rem;padding:.65rem 1.5rem;font-size:.9rem;font-weight:500;text-decoration:none;transition:box-shadow .15s;display:inline-flex}.google-btn:hover{box-shadow:0 2px 8px rgba(0,0,0,.3)}