:root{--color-primary: #005fcc;--color-primary-dark: #003366;--color-accent: #007bff;--color-accent-alt: #17a2b8;--color-cta: #ff6b00;--color-cta-dark: #e76000;--color-white: #ffffff;--color-ink: #111111;--color-muted: #5b6470;--color-surface: #f8f9fa;--color-border: #e5e7eb;--color-positive: #27ae60;--color-negative: #e74c3c;--color-warn: #f1c40f;--font: "Montserrat", sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100vh}body{font-family:var(--font);font-size:1rem;line-height:1.6;color:var(--color-ink);background:var(--color-surface);-webkit-font-smoothing:antialiased}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{font-weight:700;line-height:1.25;margin:0 0 .5rem}h1{font-size:1.875rem}h2{font-size:1.5rem}h3{font-size:1.125rem}p{margin:0 0 1rem}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:2px}.topnav{background:var(--color-primary-dark)}.topnav-inner{max-width:1080px;margin:0 auto;padding:0 24px;height:60px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{color:var(--color-white);font-weight:700;font-size:.875rem;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}.brand:hover{text-decoration:none}.brand .brand-mark{color:#7db4f0}.nav-links{display:flex;gap:4px}.nav-links a{color:#ffffffc7;font-size:.875rem;font-weight:500;padding:6px 12px;border-radius:6px;border-bottom:2px solid transparent}.nav-links a:hover{color:var(--color-white);text-decoration:none}.nav-links a.active{color:var(--color-white);border-bottom-color:var(--color-cta)}.page{max-width:1080px;margin:0 auto;padding:40px 24px 80px}.page-narrow{max-width:780px}.page-title{margin-bottom:4px}.page-sub{color:var(--color-muted);margin-bottom:32px}.card{background:var(--color-white);border:1px solid var(--color-border);border-radius:8px;padding:24px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font);font-size:.875rem;font-weight:700;border:none;border-radius:6px;padding:10px 18px;cursor:pointer;transition:background .12s ease,transform 80ms ease}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:default}.btn-cta{background:var(--color-cta);color:var(--color-white)}.btn-cta:hover{background:var(--color-cta-dark)}.btn-secondary{background:var(--color-white);color:var(--color-primary);border:1px solid var(--color-primary)}.btn-secondary:hover{background:#eef5fd}.btn-quiet{background:transparent;color:var(--color-muted);font-weight:500}.btn-quiet:hover{color:var(--color-negative)}.input{font-family:var(--font);font-size:1rem;padding:10px 12px;border:1px solid var(--color-border);border-radius:6px;width:100%}.input:focus{border-color:var(--color-accent);outline:none}.field-label{display:block;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-muted);margin-bottom:6px}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(180deg,var(--color-primary-dark) 0 240px,var(--color-surface) 240px)}.auth-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:8px;padding:40px;width:100%;max-width:420px}.auth-brand{font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:.875rem;color:var(--color-primary-dark);margin-bottom:24px}.auth-note{color:var(--color-muted);font-size:.875rem}.eyebrow{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--color-primary)}.letter{background:var(--color-white);border:1px solid var(--color-border);border-radius:8px;padding:48px;animation:letter-in .24s ease-out}@keyframes letter-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.letter-masthead{margin-bottom:28px}.letter-date{font-size:1.875rem;font-weight:700;color:var(--color-primary-dark);margin:2px 0 16px}.letter-rule{width:64px;height:3px;background:var(--color-primary);border:none;margin:0}.letter-body{max-width:68ch}.letter-body h1,.letter-body h2{font-size:1.125rem;color:var(--color-primary-dark);margin:28px 0 8px}.letter-body h3{font-size:1rem;margin:20px 0 6px}.letter-body p{margin:0 0 14px}.letter-body ul,.letter-body ol{margin:0 0 14px;padding-left:22px}.letter-body li{margin-bottom:6px}.letter-body strong{font-weight:700}.letter-footer{margin-top:32px;padding-top:16px;border-top:1px solid var(--color-border);color:var(--color-muted);font-size:.75rem}.report-charts{margin-top:32px;padding-top:24px;border-top:1px solid var(--color-border);display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.chart-card{margin:0}.chart-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-muted);margin-bottom:6px}.chart-svg{width:100%;height:auto;display:block}.chart-value{font-size:10px;font-weight:700;fill:var(--color-primary-dark);font-family:var(--font)}.chart-axis{font-size:10px;fill:var(--color-muted);font-family:var(--font)}@media (max-width: 560px){.report-charts{grid-template-columns:1fr}}.chip-strip{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}.chip{display:inline-flex;align-items:center;gap:8px;background:var(--color-white);border:1px solid var(--color-border);border-radius:999px;padding:5px 14px 5px 10px;font-size:.8125rem;font-weight:500;color:var(--color-ink)}.chip:hover{text-decoration:none;border-color:var(--color-primary)}.status-dot{width:8px;height:8px;border-radius:50%;flex:none}.status-dot.on{background:var(--color-positive)}.status-dot.off{background:#c2c9d1}.status-dot.error{background:var(--color-negative)}.conn-list{display:flex;flex-direction:column;gap:12px}.conn-row{display:flex;align-items:center;gap:16px;background:var(--color-white);border:1px solid var(--color-border);border-radius:8px;padding:18px 24px;flex-wrap:wrap}.conn-name{font-weight:700;min-width:120px}.conn-meta{color:var(--color-muted);font-size:.8125rem;flex:1;min-width:180px}.conn-actions{display:flex;gap:8px;align-items:center}.conn-form{display:flex;gap:8px;width:100%;margin-top:4px}.conn-form .input{max-width:360px}.report-list{display:flex;flex-direction:column}.report-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 4px;border-bottom:1px solid var(--color-border);color:var(--color-ink)}.report-row:hover{text-decoration:none;background:#fff}.report-row-date{font-weight:600}.type-chip{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-primary);background:#e8f1fc;border-radius:4px;padding:2px 8px}.empty{text-align:center;padding:64px 24px;color:var(--color-muted)}.error-text{color:var(--color-negative);font-size:.875rem}.success-text{color:var(--color-positive);font-size:.875rem}.banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-radius:8px;margin-bottom:20px;font-size:.9375rem}.banner-success{background:#e9f7ef;border:1px solid var(--color-positive);color:#1e8449}.banner-error{background:#fdecea;border:1px solid var(--color-negative);color:#c0392b}.banner-close{background:none;border:none;font-size:1.25rem;line-height:1;cursor:pointer;color:inherit;padding:0 4px}.muted{color:var(--color-muted)}.section-gap{margin-top:40px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.plan-badge{display:inline-block;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-white);background:var(--color-primary);border-radius:4px;padding:3px 10px}.spinner-page{min-height:60vh;display:flex;align-items:center;justify-content:center;color:var(--color-muted)}@media (max-width: 720px){.letter{padding:28px 20px}.page{padding:24px 16px 64px}.topnav-inner{padding:0 16px}.nav-links a{padding:6px 8px}}@media (max-width: 520px){.topnav-inner{flex-wrap:wrap;height:auto;padding:10px 16px 6px;row-gap:2px}.nav-links{width:100%;margin-left:-8px}}@media (prefers-reduced-motion: reduce){.letter{animation:none}.btn{transition:none}}
