:root{color-scheme:light dark;--bg: #f5f1e8;--surface: #ffffff;--surface-2: #fbf8f1;--hairline: rgba(35, 40, 28, .1);--text: #23281c;--text-2: #5b6150;--text-3: #8a8878;--accent: #c96f4a;--accent-text: #a8502c;--accent-ink: #fff7f0;--ok-fill: #4c8a5c;--ok-text: #35693f;--watch-fill: #d89a2b;--watch-text: #8a6100;--dry-fill: #d25b33;--dry-text: #ac3e1c;--watering-fill: #3e92c4;--watering-text: #22688f;--offline-fill: #9a9689;--offline-text: #6e6b5f;--ok-tint: #eaf2ec;--watch-tint: #f9f0dc;--dry-tint: #f9e8e0;--watering-tint: #e4f0f8;--offline-tint: #efede4;--shadow-card: 0 1px 2px rgba(35, 40, 28, .06), 0 6px 20px rgba(35, 40, 28, .05);--shadow-sheet: 0 -8px 40px rgba(35, 40, 28, .18);--card-edge: none;--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, "Segoe UI", Roboto, sans-serif;--font-display: ui-rounded, -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, monospace;--ease-spring: cubic-bezier(.32, .72, 0, 1);--ease-out: cubic-bezier(.2, 0, 0, 1);--nav-height: 56px}@media(prefers-color-scheme:dark){:root{--bg: #15170f;--surface: #1f221a;--surface-2: #262a20;--hairline: rgba(242, 239, 227, .09);--text: #efede1;--text-2: #a9a896;--text-3: #6f6e5f;--accent: #d97f58;--accent-text: #e59a78;--accent-ink: #2a1710;--ok-fill: #5e9e6e;--ok-text: #8fc89c;--watch-fill: #d89a2b;--watch-text: #e4b45a;--dry-fill: #d6633c;--dry-text: #ee9573;--watering-fill: #4e9ccb;--watering-text: #85c1e4;--offline-fill: #6e6b5f;--offline-text: #a5a293;--ok-tint: #1e2a20;--watch-tint: #2c2514;--dry-tint: #2e1e16;--watering-tint: #17242d;--offline-tint: #22251c;--shadow-card: none;--shadow-sheet: 0 -8px 40px rgba(0, 0, 0, .5);--card-edge: inset 0 0 0 1px var(--hairline)}}.s-ok{--s-fill: var(--ok-fill);--s-text: var(--ok-text);--s-tint: var(--ok-tint)}.s-watch{--s-fill: var(--watch-fill);--s-text: var(--watch-text);--s-tint: var(--watch-tint)}.s-dry{--s-fill: var(--dry-fill);--s-text: var(--dry-text);--s-tint: var(--dry-tint)}.s-water{--s-fill: var(--watering-fill);--s-text: var(--watering-text);--s-tint: var(--watering-tint)}.s-off{--s-fill: var(--offline-fill);--s-text: var(--offline-text);--s-tint: var(--offline-tint)}strong.s-ok,strong.s-watch,strong.s-dry,strong.s-water,strong.s-off,span.s-ok,span.s-watch,span.s-dry,span.s-water,span.s-off{color:var(--s-text);font-weight:500}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:var(--bg);min-width:320px}body{color:var(--text);font-family:var(--font);font-size:15px;line-height:1.35;margin:0;min-height:100dvh;min-width:320px;overscroll-behavior-y:contain;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}body:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");content:"";top:0;right:0;bottom:0;left:0;opacity:.025;pointer-events:none;position:fixed;z-index:90}@media(prefers-color-scheme:dark){body:before{content:none}}.num{font-variant-numeric:tabular-nums}button{-webkit-tap-highlight-color:transparent;background:none;border:0;color:inherit;cursor:pointer;font:inherit;padding:0;touch-action:manipulation;user-select:none;-webkit-user-select:none}button:disabled{cursor:default}button:not(:disabled):active{transform:scale(.97)}input,select{font:inherit}input:focus-visible,select:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2.5px solid color-mix(in srgb,var(--accent) 65%,transparent);outline-offset:2px}.screen{margin:0 auto;max-width:640px;min-height:100dvh;padding:calc(env(safe-area-inset-top) + 12px) 16px calc(24px + env(safe-area-inset-bottom))}body.has-nav .screen{padding-bottom:calc(24px + var(--nav-height) + env(safe-area-inset-bottom))}.screen-header{padding:4px 0 14px}.header-row{align-items:center;display:flex;gap:12px;justify-content:space-between;min-height:36px}.screen-header h1{font-size:22px;font-weight:700;letter-spacing:-.01em;line-height:28px;margin:0}.screen-header.pushed{align-items:center;display:flex;gap:6px}.screen-header.pushed h1{flex:1;font-size:17px;font-weight:600;line-height:22px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.back-btn{align-items:center;display:inline-flex;height:44px;justify-content:center;margin-left:-12px;width:44px}.chev-back{transform:rotate(180deg)}.header-action{min-height:44px}.greeting{color:var(--text-2);font-size:15px;line-height:20px;margin:6px 0 0}.fresh-pill{align-items:center;background:var(--s-tint);border-radius:999px;color:var(--s-text);display:inline-flex;font-size:12px;font-weight:500;gap:6px;min-height:30px;padding:4px 12px;position:relative}.fresh-pill:after{content:"";top:-7px;right:0;bottom:-7px;left:0;position:absolute}.fresh-pill .dot{background:var(--s-fill);border-radius:999px;height:6px;width:6px}.fresh-pill.is-syncing .dot{animation:pulse-dot 1s ease-in-out infinite}@keyframes pulse-dot{50%{opacity:.3;transform:scale(.7)}}svg.icon{display:inline-block;flex:none;height:24px;stroke-width:1.75;vertical-align:-6px;width:24px}.chev-inline{height:14px;stroke-width:2.2;vertical-align:-2px;width:14px}.chev-expand{color:var(--text-3);height:18px;transform:rotate(90deg);transition:transform .2s var(--ease-out);width:18px}details[open] .chev-expand{transform:rotate(-90deg)}.chev-row{color:var(--text-3);height:18px;width:18px}.zone-list{display:grid;gap:12px}.zone-card{background:var(--surface);border-radius:20px 20px 20px 6px;box-shadow:var(--shadow-card),var(--card-edge);cursor:pointer;display:flex;gap:14px;min-height:108px;padding:16px}.zone-card.bg-dry{background:var(--dry-tint)}.zone-card.bg-water{background:var(--watering-tint)}.zone-card.is-unconfigured{align-items:center;background:transparent;box-shadow:none;outline:1.5px dashed var(--hairline);outline-offset:-1.5px}.ghost-icon{color:var(--text-3)}.ghost-icon .icon{height:32px;width:32px}.zone-main{display:flex;flex:1;flex-direction:column;gap:4px;min-width:0}.zone-head{align-items:flex-start;display:flex;gap:10px;justify-content:space-between}.zone-head h3,.zone-card.is-unconfigured h3{font-size:17px;font-weight:600;line-height:22px;margin:0;overflow-wrap:anywhere}.chip{background:var(--s-tint);border-radius:999px;color:var(--s-text);flex:none;font-size:12px;font-weight:500;line-height:16px;padding:3px 10px;white-space:nowrap}@media(prefers-color-scheme:dark){.chip{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--s-fill) 30%,transparent)}}.reading{align-items:baseline;column-gap:10px;display:flex;flex-wrap:wrap}.reading-num{font-family:var(--font-display);font-size:40px;font-weight:650;letter-spacing:-.02em;line-height:44px}.reading-num .pct{color:var(--text-2);font-size:17px;font-weight:500;margin-left:1px}.reading-num.is-null{color:var(--text-3)}.reading-meta{color:var(--text-2);font-size:12px;line-height:16px}.reading.is-stale .reading-num{opacity:.55}.reading-stale{color:var(--watch-text);flex-basis:100%;font-size:12px;line-height:16px}.zone-card.is-stale .gauge,.zone-hero.is-stale .gauge{filter:saturate(.2)}.zone-foot{align-items:flex-end;display:flex;gap:10px;justify-content:space-between;margin-top:auto;padding-top:6px}.zone-caption{color:var(--text-2);font-size:12px;line-height:16px}.zone-card.is-unconfigured .zone-caption{color:var(--accent-text);font-weight:500}.btn-water{align-items:center;background:var(--watering-fill);border-radius:12px;color:#fff;display:inline-flex;flex:none;font-size:15px;font-weight:600;gap:6px;justify-content:center;min-height:44px;padding:0 16px;transition:background-color .3s linear,opacity .3s linear}.btn-water .icon{height:18px;stroke-width:2;width:18px}.btn-water.is-locked{opacity:.4}.btn-water.is-queued{background:color-mix(in srgb,var(--watering-fill) 72%,var(--bg))}.btn-water.is-counting{background:var(--watering-fill)}.btn-water-wide{border-radius:14px;margin:14px 0 4px;min-height:50px;width:100%}.gauge{flex:none;height:76px;width:44px}.gauge-hero{height:140px;width:81px}.gauge-track{fill:var(--surface-2)}@media(prefers-color-scheme:dark){.gauge-track{fill:color-mix(in srgb,var(--surface-2) 60%,var(--bg))}}.zone-card.bg-dry .gauge-track,.zone-card.bg-water .gauge-track{fill:color-mix(in srgb,var(--surface) 65%,transparent)}.gauge-fill{fill:var(--s-fill)}.gauge-fill.is-watering{animation:wave-slide 4.8s linear infinite}@keyframes wave-slide{0%{transform:translate(0)}to{transform:translate(-32px)}}.gauge-tick{fill:var(--s-fill);opacity:.7}.gauge-noread{color:var(--s-fill)}.zone-hero{align-items:center;display:flex;gap:20px;justify-content:center;padding:10px 4px 6px}.hero-info{display:flex;flex-direction:column;gap:6px}.hero-info .chip{align-self:flex-start}.threshold-preview{align-items:center;display:flex;gap:14px;padding:10px 16px 0}.threshold-preview .group-foot{margin:0;padding:0}.group-block{margin-top:22px}.group-heading{color:var(--text-2);font-size:13px;font-weight:600;letter-spacing:.06em;line-height:16px;margin:0 0 8px;padding:0 16px;text-transform:uppercase}.day-heading{margin:22px 0 10px;padding:0}.group{background:var(--surface);border-radius:14px;box-shadow:var(--shadow-card),var(--card-edge);overflow:hidden}.group-foot{color:var(--text-2);font-size:13px;line-height:18px;margin:8px 0 0;padding:0 16px}.row{align-items:center;display:flex;gap:12px;justify-content:space-between;min-height:48px;padding:6px 16px;position:relative}.row+.row:before,.row+.row-details:before,.row-details+.row:before,details.row-details .row:before{border-top:1px solid var(--hairline);content:"";left:16px;position:absolute;right:0;top:0}.row-label{align-items:center;color:var(--text);display:inline-flex;font-size:15px;gap:8px;line-height:20px}.row-value{color:var(--text-2);font-size:15px;line-height:20px;overflow-wrap:anywhere;text-align:right}.row.is-disabled{opacity:.4;pointer-events:none}.row-input input,.row-input select,.row-details .row-input input{background:transparent;border:0;color:var(--text-2);flex:1;font-size:16px;min-width:0;padding:8px 0;text-align:right}.row select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--text-2);direction:rtl;font-size:16px;padding:8px 0}.row-action{color:var(--accent-text);font-size:15px;font-weight:500;justify-content:flex-start;text-align:left;width:100%}.row-action .row-label{color:inherit}.row-action:disabled{color:var(--text-3)}.row-action .chev-row{margin-left:auto}.row-destructive{color:var(--dry-text)}.row-buttons{gap:10px;padding-bottom:12px;padding-top:12px}.row-tall{align-items:flex-start;flex-direction:column;gap:10px;padding-bottom:14px;padding-top:12px}.row-details{display:block}.row-details summary{cursor:pointer;list-style:none}.row-details summary::-webkit-details-marker{display:none}.status-dot{background:var(--s-fill);border-radius:999px;display:inline-block;flex:none;height:8px;width:8px}.status-dot.s-ok{background:var(--ok-fill)}.status-dot.s-watch{background:var(--watch-fill)}.status-dot.s-dry{background:var(--dry-fill)}.status-dot.s-off{background:var(--offline-fill)}.live-dot{animation:pulse-dot 2s ease-in-out infinite;background:var(--ok-fill);border-radius:999px;display:inline-block;height:6px;margin-left:6px;width:6px}.update-dot{background:var(--accent);border-radius:999px;display:inline-block;flex:none;height:6px;margin-right:8px;width:6px}.stepper{align-items:center;display:inline-flex;gap:2px}.step-btn{align-items:center;background:var(--surface-2);border-radius:10px;color:var(--text);display:inline-flex;font-size:20px;font-weight:500;height:36px;justify-content:center;line-height:1;width:40px}.step-btn:disabled{color:var(--text-3)}.step-value{display:inline-block;font-size:15px;font-weight:500;min-width:56px;text-align:center}.switch{background:color-mix(in srgb,var(--text-3) 42%,var(--surface-2));border-radius:999px;flex:none;height:31px;padding:2px;position:relative;transition:background-color .2s linear;width:51px}.switch .knob{background:#fff;border-radius:999px;box-shadow:0 1px 3px #00000040;display:block;height:27px;transition:transform .2s var(--ease-out);width:27px}.switch.is-on{background:var(--ok-fill)}.switch.is-on .knob{transform:translate(20px)}.switch:disabled{opacity:.4}.switch:not(:disabled):active{transform:none}.chips-row{display:grid;gap:8px;grid-template-columns:repeat(4,minmax(0,1fr));width:100%}.dur-chip{background:var(--surface-2);border-radius:12px;color:var(--text);font-size:15px;font-weight:600;min-height:44px;transition:background-color .2s linear,color .2s linear}.dur-chip.is-active{background:var(--watering-fill);color:#fff}.dur-chip:disabled{color:var(--text-3)}.btn-secondary{align-items:center;background:var(--surface-2);border-radius:12px;color:var(--accent-text);display:inline-flex;flex:1;flex-direction:column;font-size:15px;font-weight:600;gap:2px;justify-content:center;min-height:54px;padding:8px 10px}.btn-secondary small{color:var(--text-3);font-size:12px;font-weight:400}.btn-secondary:disabled{color:var(--text-3)}.btn-primary{align-items:center;background:var(--accent);border-radius:14px;color:var(--accent-ink);display:inline-flex;font-size:15px;font-weight:600;justify-content:center;min-height:50px;padding:0 20px}.btn-primary:disabled{opacity:.55}.link-btn{color:var(--accent-text);font-size:inherit;font-weight:500;min-height:32px}.event-row{align-items:center;display:flex;gap:12px;padding:7px 0}.group .event-row{min-height:48px;padding:6px 16px;position:relative}.group .event-row+.event-row:before{border-top:1px solid var(--hairline);content:"";left:16px;position:absolute;right:0;top:0}.icon-disc{align-items:center;background:var(--s-tint);border-radius:999px;color:var(--s-text);display:inline-flex;flex:none;height:32px;justify-content:center;width:32px}.icon-disc .icon{height:16px;stroke-width:2;width:16px}.event-title{flex:1;font-size:15px;font-weight:500;line-height:20px;min-width:0;overflow-wrap:anywhere}.event-row time{color:var(--text-2);flex:none;font-size:12px}.empty-state{align-items:center;color:var(--text-2);display:flex;flex-direction:column;gap:10px;padding:80px 20px;text-align:center}.empty-icon{color:var(--text-3);height:36px;width:36px}.empty-state p{margin:0}.json-well{background:var(--surface-2);border-radius:12px;box-shadow:var(--card-edge);overflow-x:auto;-webkit-overflow-scrolling:touch;padding:14px}.json-well pre{color:var(--text);font-family:var(--mono);font-size:12px;line-height:17px;margin:0}.j-key{color:var(--watering-text)}.tab-bar{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);background:color-mix(in srgb,var(--bg) 82%,transparent);border-top:1px solid var(--hairline);bottom:0;left:0;padding-bottom:env(safe-area-inset-bottom);position:fixed;right:0;z-index:40}@supports not ((backdrop-filter: blur(20px)) or (-webkit-backdrop-filter: blur(20px))){.tab-bar{background:var(--bg)}}.tab-bar-inner{display:grid;grid-template-columns:repeat(3,1fr);margin:0 auto;max-width:640px}.tab-item{align-items:center;color:var(--text-3);display:flex;flex-direction:column;gap:2px;min-height:var(--nav-height);padding-top:7px}.tab-item.is-active{color:var(--accent-text)}.tab-item.is-active .icon{stroke-width:2.1}.tab-icon{position:relative}.badge-dot{border-radius:999px;height:6px;position:absolute;right:-3px;top:-1px;width:6px}.badge-dot.s-dry{background:var(--dry-fill)}.badge-dot.s-accent{background:var(--accent)}.tab-label{font-size:10px;font-weight:500;line-height:12px}#banner-root{bottom:calc(var(--nav-height) + env(safe-area-inset-bottom) + 12px);display:flex;flex-direction:column;gap:8px;left:16px;margin:0 auto;max-width:608px;position:fixed;right:16px;z-index:45}body:not(.has-nav) #banner-root{bottom:calc(env(safe-area-inset-bottom) + 16px)}.toast{animation:rise-in .26s var(--ease-out);border-radius:14px;box-shadow:var(--shadow-card),var(--card-edge);font-size:14px;line-height:19px;padding:12px 16px}.toast-error{background:var(--dry-tint);color:var(--dry-text);cursor:pointer}.toast-notice{background:var(--surface);color:var(--text)}.update-pill{align-self:center;animation:rise-in .26s var(--ease-out);background:var(--surface);border-radius:999px;box-shadow:var(--shadow-card),var(--card-edge);color:var(--accent-text);font-size:13px;font-weight:600;min-height:40px;padding:0 18px}.save-bar{align-items:center;animation:rise-in .26s var(--ease-out);background:var(--surface);border-radius:16px;box-shadow:var(--shadow-sheet),var(--card-edge);display:flex;gap:8px;padding:10px}.save-bar .btn-primary{flex:1}.save-bar .link-btn{min-height:50px;padding:0 14px}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}}.scrim{animation:scrim-in .34s var(--ease-out);background:#14160f66;top:0;right:0;bottom:0;left:0;position:fixed;z-index:50}@keyframes scrim-in{0%{opacity:0}}.sheet{animation:sheet-in .34s var(--ease-spring);background:var(--surface);border-radius:28px 28px 0 0;bottom:0;box-shadow:var(--shadow-sheet);left:0;margin:0 auto;max-width:640px;padding:8px 20px calc(20px + env(safe-area-inset-bottom));position:fixed;right:0;z-index:55}@keyframes sheet-in{0%{transform:translateY(100%)}}.scrim.is-closing{animation:scrim-out .24s var(--ease-out) forwards}.sheet.is-closing{animation:sheet-out .24s var(--ease-out) forwards}@keyframes scrim-out{to{opacity:0}}@keyframes sheet-out{to{transform:translateY(105%)}}.grabber{background:var(--hairline);border-radius:999px;display:block;height:5px;margin:4px auto 14px;width:36px}.sheet-title{align-items:baseline;display:flex;gap:12px;justify-content:space-between;margin-bottom:16px}.sheet-title h3{font-size:17px;font-weight:600;margin:0}.sheet-title-meta{color:var(--text-2);font-size:13px}.sheet-caption{color:var(--text-2);font-size:13px;line-height:18px;margin:10px 2px 16px}.sheet-interlock{align-items:center;background:var(--watch-tint);border-radius:14px;color:var(--watch-text);display:flex;font-size:14px;gap:10px;line-height:19px;min-height:50px;padding:12px 16px}.sheet-interlock .icon{flex:none}.btn-water-confirm{background:var(--watering-fill);color:#fff;width:100%}.sheet-stepper{align-items:center;display:flex;gap:14px;justify-content:center}.step-big{border-radius:12px;font-size:24px;height:44px;width:56px}.step-value-big{font-family:var(--font-display);font-size:32px;font-weight:650;min-width:84px;text-align:center}.sheet-progress{align-items:center;display:flex;flex-direction:column;gap:14px;padding:8px 0 4px}.sheet-progress .btn-primary{width:100%}.sheet-progress-label{color:var(--text);font-size:15px;font-weight:500;margin:0;text-align:center}.ripple-wrap{display:inline-grid;height:64px;place-items:center;position:relative;width:64px}.drop-big{color:var(--s-text);height:34px;width:34px;z-index:1}.ripple{animation:ripple 1.6s ease-out infinite;border:1.5px solid var(--watering-fill);border-radius:999px;height:44px;opacity:0;position:absolute;width:44px}.ripple.r2{animation-delay:.4s}.ripple.r3{animation-delay:.8s}@keyframes ripple{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.8)}}body.sheet-open{overflow:hidden}.welcome{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:calc(100dvh - env(safe-area-inset-top) - 80px);padding:24px 8px;text-align:center}.welcome-art{margin-bottom:18px;width:min(240px,60vw)}.welcome-art svg{display:block;height:auto;width:100%}.welcome-title{font-size:28px;font-weight:700;letter-spacing:-.01em;line-height:34px;margin:0 0 6px}.welcome-sub{color:var(--text-2);font-size:15px;margin:0 0 32px}.welcome-error{background:var(--dry-tint);border-radius:12px;color:var(--dry-text);font-size:13px;line-height:18px;margin:0 0 20px;max-width:320px;padding:10px 14px}.btn-apple{align-items:center;background:#000;border-radius:14px;color:#fff;display:inline-flex;font-size:15px;font-weight:600;gap:8px;justify-content:center;min-height:50px;padding:0 24px;width:min(320px,100%)}.btn-apple .icon{height:20px;vertical-align:-4px;width:20px}@media(prefers-color-scheme:dark){.btn-apple{background:#fff;color:#000}}.welcome-foot{color:var(--text-3);font-size:12px;margin:28px 0 0}.skeleton-card{animation:shimmer 1.4s ease-in-out infinite;background:linear-gradient(100deg,var(--surface),var(--surface-2),var(--surface));background-size:220% 100%;border-radius:20px 20px 20px 6px;min-height:108px}@keyframes shimmer{0%{background-position:110% 0}to{background-position:-110% 0}}.view-enter>*{animation:view-in .22s var(--ease-out)}@keyframes view-in{0%{opacity:0;transform:translate(16px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:80ms!important}}
