:root{--bg:#f4f1e6;--surface:#fffdf6;--surface-2:#f0ecdd;--ink:#25302a;--muted:#6a7467;--line:#e1dac7;--primary:#2f6b3a;--primary-hover:#265a30;--on-primary:#fff;--accent:#c2562b;--warn:#9a6410;--warn-bg:#fbf0d6;--danger:#b3261e;--ok:#2f6b3a;--notice-bg:#e4f1df;--grid-minor:#ebe6d4;--grid-major:#d9d2bc;--canvas-bg:#fbf9f1;--radius:12px;--topbar-h:56px;--nav-h:62px;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-display:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#15191a;--surface:#1d2321;--surface-2:#252d2a;--ink:#e8ece3;--muted:#98a496;--line:#313b37;--primary:#5fae6d;--primary-hover:#74c182;--on-primary:#0d1a10;--accent:#ee8758;--warn:#e2b04a;--warn-bg:#3a2f14;--danger:#f2877f;--ok:#74c182;--notice-bg:#1f3324;--grid-minor:#232b28;--grid-major:#2f3a36;--canvas-bg:#181d1c}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);font:16px/1.45 var(--font);-webkit-text-size-adjust:100%;overscroll-behavior-y:none;margin:0}h1,h2,h3,h4{font-family:var(--font-display);margin:0 0 .5rem;line-height:1.2}h1{font-size:1.75rem}h2{font-size:1.2rem}h3{font-size:1.05rem}h4{margin-top:.9rem;font-size:.95rem}p{margin:0 0 .75rem}.muted{color:var(--muted)}.small{font-size:.85rem}.error{color:var(--danger)}.notice{background:var(--notice-bg);border-radius:8px;margin-top:.75rem;padding:.6rem .8rem}.notice p{margin:0}.notice ul{margin:.4rem 0 0;padding-left:1.2rem}.warning{color:var(--warn)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.push-right{margin-left:auto}a,.link{color:var(--primary)}.link{font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}input,select,textarea{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:8px;width:100%;min-height:40px;padding:.5rem .65rem}input[type=checkbox],input[type=radio]{width:auto;min-height:0;accent-color:var(--primary)}input[type=range]{min-height:28px;accent-color:var(--primary);background:0 0;border:0;padding:0}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--primary);outline-offset:2px}label{color:var(--muted);flex-direction:column;gap:.25rem;margin-bottom:.65rem;font-size:.85rem;display:flex}label.check{color:var(--ink);flex-direction:row;align-items:center;gap:.5rem;margin:.25rem 0;font-size:.95rem}label.check.small{font-size:.85rem}.inline-field{flex-direction:row;align-items:center;gap:.6rem}.inline-field select{width:auto}.btn{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:.4rem;min-height:42px;padding:.55rem 1rem;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.btn.primary:hover:not(:disabled){background:var(--primary-hover)}.btn.ghost{color:var(--muted);background:0 0;border-color:#0000}.btn.danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 40%, var(--line))}.btn.tiny{min-height:34px;padding:.25rem .6rem;font-size:.85rem}.btn.big{width:100%;min-height:48px;margin:.5rem 0}.btn-row{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;display:flex}.chips{flex-wrap:wrap;gap:.4rem;margin:.6rem 0;display:flex}.chip{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:999px;min-height:34px;padding:.3rem .8rem;font-size:.85rem}.chip.active{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.tabs{border-bottom:1px solid var(--line);gap:.25rem;margin:.75rem 0 1rem;display:flex}.tabs button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-bottom:3px solid #0000;min-height:44px;padding:.6rem .9rem}.tabs button.active{color:var(--ink);border-bottom-color:var(--primary);font-weight:600}.form-row{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:0 .75rem;display:grid}.form-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0 1rem;display:grid}.glyph{border-radius:10px;flex:none;place-items:center;width:38px;height:38px;font-size:1.3rem;display:inline-grid}.glyph.small{border-radius:8px;width:30px;height:30px;font-size:1.05rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:.9rem;padding:1rem}.card.empty{text-align:center;color:var(--muted)}.card.callout{background:var(--notice-bg);border-color:#0000}.shell{grid-template-rows:var(--topbar-h) 1fr;min-height:100dvh;padding-bottom:var(--nav-h);grid-template-columns:minmax(0,1fr);grid-template-areas:"top""main";display:grid}.topbar{background:var(--surface);border-bottom:1px solid var(--line);z-index:20;grid-area:top;justify-content:space-between;align-items:center;gap:.75rem;min-width:0;padding:0 1rem;display:flex;position:sticky;top:0}.brand{align-items:center;gap:.6rem;min-width:0;display:flex}.brand div{flex-direction:column;min-width:0;line-height:1.15;display:flex}.brand strong,.brand span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.topbar-right{align-items:center;gap:.6rem;display:flex}.season-select{margin:0}.season-select select{width:auto;min-height:36px;padding:.2rem .5rem}.nav{height:var(--nav-h);padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--line);z-index:30;grid-template-columns:repeat(6,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.nav a{color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:.7rem;text-decoration:none;display:flex}.nav a.active{color:var(--primary);font-weight:700}.nav-icon{font-size:1.3rem;line-height:1}.main{grid-area:main;min-width:0}.page{max-width:1100px;margin:0 auto;padding:1rem}.sync-badge{background:var(--surface-2);color:var(--muted);white-space:nowrap;border-radius:999px;padding:.15rem .55rem;font-size:.75rem}.sync-badge.ok{color:var(--ok)}.sync-badge.warn{background:var(--warn-bg);color:var(--warn)}.sync-badge.error{background:color-mix(in srgb, var(--danger) 15%, var(--surface));color:var(--danger)}.splash,.auth{text-align:center;place-content:center;justify-items:center;gap:.75rem;min-height:100dvh;padding:1.5rem;display:grid}.auth-card{text-align:left;flex-direction:column;align-items:stretch;width:min(400px,100%);display:flex}.auth-card h1,.auth-card .muted{text-align:center}.auth-logo{border-radius:14px;align-self:center;margin-bottom:.5rem}.mobile-only{display:initial}.desktop-only{display:none}@media (width>=900px){:root{--nav-h:0px}.shell{grid-template-columns:190px minmax(0,1fr);grid-template-areas:"top top""nav main";padding-bottom:0}.nav{top:var(--topbar-h);height:calc(100dvh - var(--topbar-h));border-top:0;border-right:1px solid var(--line);flex-direction:column;grid-area:nav;align-content:flex-start;gap:2px;padding:.75rem .6rem;display:flex;position:sticky}.nav a{border-radius:10px;flex-direction:row;justify-content:flex-start;gap:.6rem;padding:.6rem .75rem;font-size:.95rem}.nav a.active{background:var(--surface-2)}.mobile-only{display:none!important}.desktop-only{display:initial}}.stats{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem;margin-bottom:.9rem;display:grid}.stat{color:inherit;flex-direction:column;margin:0;text-decoration:none;display:flex}.stat strong{font-family:var(--font-display);font-size:1.6rem}.tasks{margin:0;padding:0;list-style:none}.task{border-top:1px solid var(--line);align-items:center;gap:.65rem;padding:.55rem 0;display:flex}.task:first-child{border-top:0}.task input[type=checkbox]{flex:none;width:22px;height:22px}.task-glyph{font-size:1.2rem}.task-main{flex-direction:column;flex:1;min-width:0;display:flex}.task-when{color:var(--muted);font-size:.8rem}.task.done .task-title,.task.skipped .task-title{color:var(--muted);text-decoration:line-through}.task.overdue .task-when{color:var(--danger);font-weight:600}.task-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.25rem;display:flex}.date-mini{width:138px;min-height:34px;padding:.15rem .4rem;font-size:.85rem}.crops-grid{grid-template-columns:1fr;gap:1rem;display:grid}@media (width>=900px){.crops-grid{grid-template-columns:1.1fr 1fr;align-items:start}}@media (width<=899px){.crops[data-tab=plan] .browse-col,.crops[data-tab=browse] .plan-col{display:none}}.plant-list{margin:0;padding:0;list-style:none}.plant-card{margin-bottom:.5rem;padding:.6rem .75rem}.plant-row{align-items:center;gap:.65rem;display:flex}.plant-name{text-align:left;min-width:0;font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;padding:0;display:flex}.plant-details{border-top:1px solid var(--line);margin-top:.6rem;padding-top:.6rem;font-size:.92rem}.plant-details dl,.dates{grid-template-columns:max-content 1fr;gap:.2rem .9rem;margin:0 0 .6rem;display:grid}.plant-details dt,.dates dt{color:var(--muted)}.plant-details dd,.dates dd{margin:0}.plan-item{padding:.9rem}.plan-head{align-items:center;gap:.65rem;margin-bottom:.6rem;display:flex}.plan-head h3{flex:1;margin:0}.plan-controls{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0 .75rem;display:grid}.plan-seasons{flex-wrap:wrap;gap:.25rem 1.25rem;margin-bottom:.4rem;display:flex}.preview{background:var(--surface-2);border-radius:8px;padding:.6rem .75rem;font-size:.9rem}.preview p{margin:0 0 .35rem}.preview p:last-child{margin:0}.timeline{padding:.5rem 0 .75rem}.tl-scroll{overflow-x:auto}.tl-inner{min-width:1020px;position:relative}.tl-row{width:100%;font:inherit;color:inherit;text-align:left;background:0 0;border:0;grid-template-columns:180px 1fr;align-items:center;padding:0;display:grid}.tl-item{cursor:pointer;border-top:1px solid var(--line)}.tl-item:hover,.tl-item.selected{background:var(--surface-2)}.tl-item.selected .tl-label{font-weight:700}.tl-label{z-index:3;background:inherit;white-space:nowrap;text-overflow:ellipsis;padding:.4rem .6rem;font-size:.85rem;position:sticky;left:0;overflow:hidden}.tl-item .tl-label{background:var(--surface)}.tl-item:hover .tl-label,.tl-item.selected .tl-label{background:var(--surface-2)}.tl-track{height:30px;position:relative}.tl-head .tl-track{height:24px}.tl-month{color:var(--muted);padding-left:4px;font-size:.72rem;position:absolute;top:4px}.tl-grid{background:var(--line);opacity:.6;width:1px;position:absolute;top:0;bottom:0}.seg{border-radius:4px;height:16px;position:absolute;top:7px}.seg.indoor{background:repeating-linear-gradient(45deg,#a8a28b 0 4px,#d4cfba 4px 8px)}.seg.grow{opacity:.32}.tl-item.status-done .seg,.tl-item.status-failed .seg{filter:grayscale(.8);opacity:.6}.tl-carry{color:var(--muted);font-size:.72rem;position:absolute;top:6px;right:4px}.tl-overlay{pointer-events:none;z-index:2;grid-template-columns:180px 1fr;display:grid;position:absolute;inset:0}.tl-overlay .tl-track{height:100%}.tl-line{border-left:2px dashed #5b8bd6;position:absolute;top:0;bottom:0}.tl-line.today{border-left:2px solid var(--accent)}.tl-line em{white-space:nowrap;color:#5b8bd6;background:var(--surface);border-radius:3px;padding:0 3px;font-size:.65rem;font-style:normal;position:absolute;bottom:2px;left:4px}.tl-line.today em{color:var(--accent)}.legend{margin:0;padding:.5rem .75rem 0}.swatch{vertical-align:middle;background:var(--primary);border-radius:3px;width:22px;height:10px;display:inline-block}.swatch.indoor{background:repeating-linear-gradient(45deg,#a8a28b 0 3px,#d4cfba 3px 6px)}.swatch.grow{opacity:.35}.detail-head{align-items:flex-start;gap:.75rem;display:flex}.detail-head>div{flex:1}.detail-head h2{margin-bottom:.15rem}.month-nav{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.month-nav h2{margin:0}.month-grid{grid-template-columns:repeat(7,1fr);gap:3px;display:grid}.dow{text-align:center;color:var(--muted);font-size:.75rem}.day{font:inherit;text-align:left;background:var(--surface-2);min-height:54px;color:var(--ink);cursor:pointer;border:1px solid #0000;border-radius:8px;flex-direction:column;gap:4px;padding:4px 5px;display:flex;position:relative}.day.outside{opacity:.45}.day.today .day-num{background:var(--accent);color:#fff;border-radius:999px;padding:0 6px}.day.selected{border-color:var(--primary);background:var(--surface)}.day-num{align-self:flex-start;font-size:.8rem}.day-dots{flex-wrap:wrap;align-items:center;gap:3px;display:flex}.dot{border-radius:50%;width:9px;height:9px}.dot.done,.dot.skipped{opacity:.3}.day-dots b{color:var(--muted);font-size:.65rem}.frost-mark{font-size:.8rem;position:absolute;top:2px;right:4px}.add-task{gap:.5rem;margin-top:.75rem;display:flex}.totals{flex-wrap:wrap;gap:.4rem 1.5rem;margin:0;padding:0;list-style:none;display:flex}.entry header{align-items:center;gap:.5rem;margin-bottom:.3rem;display:flex}.entry-body{white-space:pre-wrap;margin:0}.designer{height:calc(100dvh - var(--topbar-h) - var(--nav-h));display:block;position:relative;overflow:hidden}.designer-main{flex-direction:column;min-width:0;height:100%;display:flex;position:relative}.toolbar{background:var(--surface);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.4rem;padding:.4rem .6rem;display:flex}.tool-group{gap:.25rem;display:flex}.tool{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:10px;align-items:center;gap:.35rem;min-height:40px;padding:.3rem .65rem;display:flex}.tool.active{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.tool-field{flex-direction:row;align-items:center;gap:.35rem;margin:0;display:flex}.tool-field select{width:auto;min-height:36px;padding:.15rem .4rem}@media (width<=520px){.tool-label{display:none}.tool{padding:.3rem .8rem}}.canvas-wrap{background:var(--canvas-bg);flex:1;min-height:0;position:relative;overflow:hidden}.canvas{touch-action:none;-webkit-user-select:none;user-select:none;display:block}.canvas.tool-rect,.canvas.tool-poly{cursor:crosshair}.canvas.tool-place{cursor:copy}.canvas text{pointer-events:none;-webkit-user-select:none;user-select:none}.bed{stroke-width:2px}.bed-raised{fill:#e6d5b8;stroke:#8a5a2b}.bed-in_ground{fill:#dbe8c6;stroke:#5f7f3a}.bed-container{fill:#ecd9c3;stroke:#a0622d}.bed-path{fill:#efeadd;stroke:#bdb49c;stroke-dasharray:6 4}.bed-structure{fill:#d3d8da;stroke:#6b7478}@media (prefers-color-scheme:dark){.bed-raised{fill:#4a3d2b;stroke:#b88a54}.bed-in_ground{fill:#2f4027;stroke:#7ea35a}.bed-container{fill:#4a3a2c;stroke:#c08655}.bed-path{fill:#2a2d2b;stroke:#6b6f66}.bed-structure{fill:#333a3d;stroke:#8d979c}}.bed.selected{stroke:var(--accent);stroke-width:3px}.bed-label{fill:var(--ink);font-weight:600}.bed-sub{fill:var(--muted);font-weight:400}.edge-label{fill:var(--ink);stroke:var(--canvas-bg);paint-order:stroke;font-weight:600}.handle{fill:var(--surface);stroke:var(--accent)}.handle.sel{fill:var(--accent)}.handle-mid{fill:var(--accent);fill-opacity:.3;stroke:var(--accent)}.draft-shape{fill:color-mix(in srgb, var(--primary) 14%, transparent);stroke:var(--primary);stroke-width:2px;stroke-dasharray:6 4}.draft-line{fill:none;stroke:var(--primary);stroke-width:2px;stroke-dasharray:6 4}.canvas-hint{background:color-mix(in srgb, var(--ink) 88%, transparent);color:var(--bg);pointer-events:none;white-space:nowrap;text-overflow:ellipsis;border-radius:999px;max-width:94%;padding:.35rem .8rem;font-size:.85rem;position:absolute;top:10px;left:50%;overflow:hidden;transform:translate(-50%)}.canvas-controls{flex-direction:column;gap:4px;display:flex;position:absolute;bottom:10px;right:10px}.canvas-controls .btn{min-width:40px;min-height:40px}.scale-bar{color:var(--muted);pointer-events:none;flex-direction:column;gap:2px;font-size:.75rem;display:flex;position:absolute;bottom:12px;left:12px}.scale-bar span{border:2px solid var(--muted);border-top:0;height:6px;display:block}.canvas-empty{text-align:center;pointer-events:none;place-content:center;display:grid;position:absolute;inset:0}.scrubber{background:var(--surface);border-top:1px solid var(--line);padding:.4rem .8rem .5rem}.scrub-row{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.scrub-track{position:relative}.scrub-mark{pointer-events:none;font-size:.7rem;position:absolute;top:-4px;transform:translate(-50%)}.toast{background:var(--ink);color:var(--bg);z-index:40;border-radius:10px;max-width:min(92%,440px);padding:.55rem 1rem;font-size:.9rem;position:absolute;bottom:96px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #00000040}.designer-panel{background:var(--bg);border-top:1px solid var(--line);z-index:25;max-height:58%;padding:.75rem;transition:transform .2s;position:absolute;bottom:0;left:0;right:0;overflow-y:auto;transform:translateY(105%);box-shadow:0 -8px 24px #00000026}.designer-panel[data-open=true]{transform:none}@media (width>=900px){.designer{grid-template-columns:1fr 340px;display:grid}.designer-panel{max-height:none;box-shadow:none;border-top:0;border-left:1px solid var(--line);height:100%;position:static;transform:none}.toast{bottom:110px}}.panel-section{padding:.85rem}.inspector .hint{padding:.25rem .1rem}.bed-contents{margin:0 0 .5rem;padding:0;list-style:none}.bed-contents li{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:.5rem;padding:.3rem 0;font-size:.9rem;display:flex}.fill-row{flex-direction:column;gap:.35rem;margin:.5rem 0;display:flex}.palette-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.palette-head .chips{margin:.2rem 0}.palette-list{margin:0;padding:0;list-style:none}.palette-item{text-align:left;width:100%;font:inherit;color:inherit;background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:10px;align-items:center;gap:.6rem;min-height:48px;margin-bottom:.35rem;padding:.4rem .6rem;display:flex}.palette-item.active{border-color:var(--primary);box-shadow:inset 0 0 0 2px var(--primary)}.pi-main{flex-direction:column;flex:1;min-width:0;display:flex}.pi-count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.8rem}.pi-count.full{color:var(--ok);font-weight:700}
