:root{--bg: #f4f8f7;--bg-welcome: linear-gradient(165deg, #e8f5f3 0%, #f4f8f7 42%, #eef6f4 100%);--surface: #ffffff;--primary: #0d9488;--primary-dark: #0f766e;--text: #134e4a;--text-muted: #64748b;--warning: #ca8a04;--danger: #dc2626;--good: #16a34a;--border: #cfe8e4;--border-card: #e2e8f0;--shadow-card: 0 1px 2px rgba(15, 23, 42, .04), 0 4px 16px rgba(15, 23, 42, .06);--shadow-tab: 0 -4px 20px rgba(15, 23, 42, .06);--font-display: "Outfit", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--focus-ring: 0 0 0 3px rgba(13, 148, 136, .35);font-family:var(--font-body);line-height:1.5;color:var(--text);background-color:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:var(--bg)}#root{min-height:100dvh}h1,h2,.welcome-title,.page-title,.section-heading,.step-title,.summary-text{font-family:var(--font-display)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.page{padding:20px 20px 88px;max-width:720px;margin:0 auto}.page.scroll{padding-bottom:100px}.page-enter{animation:page-enter .22s ease-out}@media(prefers-reduced-motion:reduce){.page-enter{animation:none}}@keyframes page-enter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.dashboard-cards .card{animation:card-enter .24s ease-out both}@media(prefers-reduced-motion:reduce){.dashboard-cards .card{animation:none}}.dashboard-cards .card:nth-child(1){animation-delay:.02s}.dashboard-cards .card:nth-child(2){animation-delay:.05s}.dashboard-cards .card:nth-child(3){animation-delay:.08s}.dashboard-cards .card:nth-child(4){animation-delay:.11s}.dashboard-cards .card:nth-child(5){animation-delay:.14s}.dashboard-cards .card:nth-child(6){animation-delay:.17s}.dashboard-cards .card:nth-child(7){animation-delay:.2s}.dashboard-cards .card:nth-child(8){animation-delay:.23s}@keyframes card-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.welcome{min-height:100dvh;display:flex;flex-direction:column;justify-content:center;padding-bottom:24px;background:var(--bg-welcome)}.welcome-inner{width:100%;max-width:420px;margin:0 auto}.welcome-title{font-size:2rem;font-weight:700;color:var(--primary-dark);letter-spacing:-.02em;margin:0 0 10px;line-height:1.15}.welcome-sub{font-size:.9375rem;line-height:1.55;color:var(--text-muted);margin:0 0 28px}.welcome-card{background:var(--surface);border-radius:16px;padding:24px;border:1px solid var(--border-card);box-shadow:var(--shadow-card)}.welcome-card .btn-primary{width:100%}.sign-in-error-block{margin-top:20px;padding:14px 16px;border-radius:12px;background:#fef2f2;border:1px solid #fecaca}.sign-in-error-hint{margin-top:8px!important;font-size:.8125rem!important}.page-title{font-size:1.375rem;font-weight:700;color:var(--primary-dark);margin:0 0 8px;letter-spacing:-.02em}.kicker{color:var(--text-muted);font-size:.8125rem;margin:0 0 4px}.text-body{margin:0;line-height:1.5}.text-muted{color:var(--text-muted);margin:0}.text-small-muted{font-size:.8125rem;color:var(--text-muted);margin:4px 0 0}.text-warning{color:var(--warning);font-size:.9375rem;line-height:1.5}.text-danger{color:var(--danger);font-size:.875rem;line-height:1.4;margin:0 0 16px}.center-stack{display:flex;flex-direction:column;align-items:center;margin:24px 0;gap:14px}.center-flex{min-height:100dvh;display:flex;align-items:center;justify-content:center}.spinner{width:42px;height:42px;border:3px solid var(--border);border-top-color:var(--primary);border-right-color:#0d948859;border-radius:50%;animation:spin .75s linear infinite;box-shadow:0 0 0 1px #0d948814 inset}@keyframes spin{to{transform:rotate(360deg)}}.btn{font:inherit;font-family:var(--font-display);cursor:pointer;border:none;border-radius:12px;padding:14px 24px;min-height:44px;font-weight:600;font-size:1rem;transition:background .15s ease,color .15s ease,transform .12s ease,box-shadow .15s ease}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn:active:not(:disabled){transform:scale(.98)}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-dark);box-shadow:0 4px 14px #0d948859}.btn-secondary{background:transparent;color:var(--primary-dark);border:2px solid var(--primary);width:100%;margin-bottom:20px}.btn-secondary:hover:not(:disabled){background:#0d94880f}.btn-secondary:disabled{opacity:.6;cursor:not-allowed}.btn-block{display:block;width:100%;margin-bottom:10px}.btn-mt{margin-top:28px}.btn-ghost{background:transparent;color:var(--danger);margin-top:20px;width:100%}.btn-ghost:hover:not(:disabled){background:#dc26260f}.card{background:var(--surface);border-radius:14px;padding:16px;margin-bottom:12px;border:1px solid var(--border-card);box-shadow:var(--shadow-card)}.card-status-good{border-left:4px solid var(--good);padding-left:13px}.card-status-warn{border-left:4px solid var(--warning);padding-left:13px}.card-status-neutral{border-left:4px solid #94a3b8;padding-left:13px}.card-compact{padding:14px}.card-summary{background:linear-gradient(135deg,#ecfdf5,#f0fdf9);border-color:#bbf7d0}.card-title{font-weight:600;margin:0}.row-between{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.param-label{font-weight:600}.status-pill{flex-shrink:0;font-size:.6875rem;font-weight:700;font-family:var(--font-display);text-transform:uppercase;letter-spacing:.04em;padding:4px 8px;border-radius:999px;line-height:1}.status-pill-good{background:#dcfce7;color:#166534}.status-pill-low,.status-pill-high{background:#fef9c3;color:#854d0e}.status-pill-unknown{background:#f1f5f9;color:#475569}.value-large{font-size:1.5rem;font-weight:700;font-family:var(--font-display);color:var(--primary-dark);margin:8px 0 0}.alert{margin-top:8px;padding:14px;border-radius:12px}.alert-ok{background:#dcfce7}.alert-warn{background:#fef9c3}.alert-text{margin:0;font-weight:500}.link-inline{display:inline-block;margin-top:20px;color:var(--primary);font-weight:600;text-decoration:none;border-radius:6px;transition:color .15s ease}.link-inline:hover{color:var(--primary-dark);text-decoration:underline}.link-inline:focus-visible{outline:none;box-shadow:var(--focus-ring)}.strip-hint{margin-top:24px;font-size:.75rem;color:var(--text-muted)}.field-label{display:block;font-weight:600;font-family:var(--font-display);margin:12px 0 6px}.input{width:100%;background:var(--surface);border:1px solid var(--border-card);border-radius:10px;padding:12px 14px;font-size:1.0625rem;color:var(--text);transition:border-color .15s ease,box-shadow .15s ease}.input:hover:not(:focus){border-color:#cbd5e1}.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0d948833}.input::placeholder{color:#94a3b8}.input-with-suffix{display:flex;align-items:stretch;border-radius:10px;border:1px solid var(--border-card);background:var(--surface);overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}.input-with-suffix:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px #0d948833}.input-with-suffix .input{border:none;border-radius:0;box-shadow:none;flex:1;min-width:0}.input-with-suffix .input:focus{box-shadow:none}.input-suffix{display:flex;align-items:center;padding:0 14px;font-size:.9375rem;font-weight:600;color:var(--text-muted);background:#f8fafc;border-left:1px solid var(--border-card)}.settings-section{margin-top:24px;padding:20px;background:var(--surface);border-radius:14px;border:1px solid var(--border-card);box-shadow:var(--shadow-card)}.settings-section:first-of-type{margin-top:20px}.settings-section-title{font-family:var(--font-display);font-size:.8125rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0 0 4px}.settings-section .field-label:first-of-type{margin-top:0}.settings-actions{margin-top:8px}.settings-footer{margin-top:32px;padding-top:24px;border-top:1px solid var(--border-card)}.test-page .btn-secondary{margin-top:0}.section-heading{margin:28px 0 12px;font-size:1.125rem;font-weight:700;color:var(--primary-dark)}.summary-text{font-weight:600;color:var(--primary-dark);margin:0}.step-title{font-size:1.0625rem;font-weight:700;margin:0 0 8px}.dose-text{margin:10px 0 0;font-weight:600;color:var(--primary-dark)}.bullet{margin:6px 0 0;line-height:1.4}.safety-heading{margin:16px 0 8px;font-weight:700;color:var(--danger)}.note-box{margin-top:20px;padding:16px;background:#f1f5f9;border-radius:12px;border:1px solid var(--border-card)}.btn-sm{padding:10px 16px;font-size:.875rem;width:auto;align-self:flex-start;min-height:44px}.sync-banner{flex-shrink:0;display:flex;flex-direction:column;gap:10px;padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top));background:#fef9c3;border-bottom:1px solid #fde047;font-size:.875rem;color:var(--text)}.sync-banner p{margin:0;line-height:1.4}.app-shell{min-height:100dvh;display:flex;flex-direction:column}.app-main{flex:1;overflow-y:auto}.tab-bar{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-around;align-items:stretch;gap:2px;padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:#ffffffeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--border-card);box-shadow:var(--shadow-tab);z-index:10}.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:48px;max-width:88px;margin:0 auto;text-align:center;font-size:.75rem;font-weight:600;font-family:var(--font-display);color:#94a3b8;text-decoration:none;padding:6px 4px;border-radius:10px;transition:color .15s ease,background .15s ease}.tab .tab-icon{color:currentColor;transition:color .15s ease}.tab:hover{color:var(--primary);background:#0d94880f}.tab:focus-visible{outline:none;box-shadow:var(--focus-ring)}.tab-active{color:var(--primary-dark);background:#ecfdf5}.tab-active .tab-icon{color:var(--primary)}.tab-label{display:block;line-height:1.15;max-width:76px;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.maintenance-highlight{margin-bottom:20px}.maintenance-highlight .section-heading{margin-top:0}.maintenance-guidance{margin-top:12px;line-height:1.45}.pump-temp-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px}.pump-temp-row .input{width:7rem;max-width:100%}.checkbox-row{display:flex;align-items:flex-start;gap:10px;margin-bottom:8px;cursor:pointer}.checkbox-row input{margin-top:4px;flex-shrink:0}.checkbox-title{font-weight:600;display:block;margin-bottom:4px}.pump-plan-empty{margin:12px 0 0}.pump-plan{margin-top:16px;padding-top:12px;border-top:1px solid var(--border-card)}.pump-plan-total{margin:0 0 8px;font-size:1.0625rem}.pump-plan-list{margin:0 0 12px;padding-left:1.25rem}.pump-plan-list li{margin:4px 0}.pump-schedule-heading{margin:16px 0 8px!important;font-size:1rem!important}.pump-cost-note{margin-top:8px}.pump-disclaimer{margin-top:12px;font-style:italic}.weather-card{margin-bottom:20px}.weather-card-title{margin:0 0 6px;font-size:1.0625rem;font-weight:700;color:var(--primary-dark)}.weather-loading{padding:12px 0}.weather-daily-strip{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 16px}.weather-day-pill{flex:1 1 100px;min-width:88px;padding:10px 12px;background:#f8fafc;border:1px solid var(--border-card);border-radius:10px;display:flex;flex-direction:column;gap:4px}.weather-day-label{font-size:.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.weather-day-temp{font-size:1.25rem;font-weight:700;color:var(--primary-dark)}.weather-day-meta{font-size:.75rem;color:var(--text-muted)}.weather-hints{margin:0 0 12px;padding-left:1.25rem}.weather-hints li{margin:8px 0;line-height:1.45}.weather-no-hints{margin:8px 0 12px}.weather-attribution{margin:0}.weather-attribution a{color:var(--text-muted)}.weather-coord-input{width:100%;max-width:20rem;margin-bottom:12px}.weather-settings-actions .btn-mt{margin-top:10px}
