*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f5f6fa;--surface: #ffffff;--border: #e2e6ef;--text: #1a202c;--muted: #64748b;--accent: #6366f1}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;min-height:100dvh}.app-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 2rem;background:var(--surface);border-bottom:1px solid var(--border)}.app-header h1{font-size:1.25rem;font-weight:700;color:var(--text);letter-spacing:-.02em}.user-bar{display:flex;align-items:center;gap:.625rem}.user-avatar{width:30px;height:30px;border-radius:50%;object-fit:cover}.user-name{font-size:.875rem;color:var(--muted)}.btn-signout{font-size:.8rem;padding:.3rem .75rem;border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--muted);cursor:pointer;transition:background .15s,color .15s}.btn-signout:hover{background:var(--bg);color:var(--text)}.login-screen{display:flex;align-items:center;justify-content:center;min-height:100dvh;background:var(--bg)}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:2.5rem 2rem;width:100%;max-width:360px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.75rem;box-shadow:0 4px 24px #0000000f}.login-title{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;color:var(--text)}.login-subtitle{font-size:.9rem;color:var(--muted);margin-bottom:.5rem}.btn-google{display:flex;align-items:center;gap:.625rem;padding:.625rem 1.25rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:.9rem;font-weight:500;cursor:pointer;transition:background .15s,box-shadow .15s;width:100%;justify-content:center}.btn-google:hover{background:var(--bg);box-shadow:0 2px 8px #00000014}.login-error{font-size:.8rem;color:#dc2626;margin-top:.25rem}.charts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(600px,1fr));gap:1.5rem;padding:2rem}.chart-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.5rem}.status{display:flex;align-items:center;justify-content:center;gap:.75rem;height:100dvh;font-size:1rem;color:var(--muted)}.status.error{color:#dc2626}.spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
