@import"https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,600;9..144,700&family=Manrope:wght@400;500;600;700&display=swap";:root{color:#1f2a20;background:radial-gradient(circle at 12% 18%,#f4efe5 0% 32%,#e6ddd0);font-family:Manrope,Avenir Next,Trebuchet MS,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--surface-0: #faf6ef;--surface-1: #f3ebdf;--surface-2: #e8dcc9;--surface-3: #d8c6aa;--ink-strong: #1f2a20;--ink-muted: #445145;--accent: #2f7d57;--accent-soft: #cce6d8;--border: #c6b59d;--shadow: 0 20px 40px rgba(38, 25, 10, .16);--cat-vegetable-accent: #5e9966;--cat-vegetable-tint: rgba(90, 150, 96, .12);--cat-vegetable-border: rgba(74, 126, 82, .42);--cat-herb-accent: #57a48e;--cat-herb-tint: rgba(86, 166, 146, .13);--cat-herb-border: rgba(66, 132, 117, .42);--cat-fruit-accent: #bf7154;--cat-fruit-tint: rgba(196, 109, 76, .13);--cat-fruit-border: rgba(159, 83, 57, .42);--cat-ornamental-accent: #6884c6;--cat-ornamental-tint: rgba(96, 127, 196, .13);--cat-ornamental-border: rgba(77, 102, 166, .43)}*{box-sizing:border-box}body{margin:0;min-width:320px;height:100vh;overflow:hidden}h1,h2,h3,.eyebrow{font-family:Fraunces,Book Antiqua,Palatino Linotype,serif;margin:0}p{margin:0}#root{min-height:100vh;height:100vh;padding:1.5rem}.app-shell{display:grid;gap:1rem;height:100%;grid-template-rows:auto minmax(0,1fr)}.app-top{display:grid;gap:.75rem;min-height:0}.app-header{background:radial-gradient(circle at 18% 22%,rgba(255,249,239,.72),transparent 52%),linear-gradient(134deg,#f4eadb,#e8d9c1 52%,#d8c5a5);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow);padding:1.2rem 1.4rem;display:grid;gap:.95rem;justify-items:center}.app-header-main{display:grid;gap:.28rem;min-width:0;text-align:center;justify-items:center}.app-header h1{font-size:clamp(1.45rem,2vw,2.15rem);color:var(--ink-strong)}.app-header-subtitle{color:#3c463de0;font-size:.88rem;max-width:46ch}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);font-size:.78rem}.header-chips{display:flex;gap:.45rem;flex-wrap:wrap;justify-content:center}.chip-select{border:1px solid var(--border);border-radius:999px;padding:.15rem .45rem .15rem .7rem;background:var(--surface-0);color:var(--ink-strong);display:inline-flex;gap:.45rem;align-items:center}.chip-select span{font-size:.75rem;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.05em}.chip-select select{border:0;background:transparent;color:var(--ink-strong);font:inherit;font-size:.86rem}.chip-select select:focus{outline:none}.chip,.chip-button{border:1px solid var(--border);border-radius:999px;padding:.34rem .72rem;background:#fbf7f0d6;color:var(--ink-strong);font-size:.82rem;font-weight:600}.chip-status-ok{border-color:#4a7e5280;background:#e9f8ecc2;color:#295d3b}.chip-status-alert{border-color:#a551428c;background:#fcece8c7;color:#7d3a2c}.chip.category-vegetable,.chip.category-herb,.chip.category-fruit,.chip.category-ornamental{border-color:var(--category-border, var(--border));background:color-mix(in srgb,var(--category-tint, rgba(251, 247, 240, .84)) 70%,#ffffff 30%);color:color-mix(in srgb,var(--category-accent, var(--ink-strong)) 60%,#243129 40%)}.chip-button{display:inline-flex;align-items:center;gap:.35rem;cursor:pointer;font:inherit}.chip-button:hover{border-color:var(--accent)}.chip-button:focus-visible,.mobile-panel-tab:focus-visible,.tool-button:focus-visible,.plant-item:focus-visible{outline:2px solid #365f4a;outline-offset:2px}.onboarding-strip{border:1px solid var(--border);border-radius:14px;background:#fff9ee;padding:.7rem .85rem;display:none;gap:.45rem}.onboarding-strip-header{display:grid;gap:.15rem;color:var(--ink-muted);font-size:.85rem}.onboarding-step-list{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.4rem}.onboarding-step{display:inline-flex;align-items:center;gap:.45rem;border:1px dashed #cdbca1;border-radius:999px;padding:.28rem .55rem;font-size:.82rem;color:#705f43}.onboarding-step.is-done{border-style:solid;border-color:#8fb197;background:#eef8f1;color:#2f5d3a}.onboarding-step-badge{width:1rem;text-align:center;font-weight:700}.mobile-panel-nav{display:none}.mobile-panel{min-height:0}.app-main{display:grid;gap:1rem;grid-template-columns:minmax(220px,280px) minmax(0,1fr) minmax(220px,280px);min-height:0}.panel{background:var(--surface-0);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow);padding:1rem;min-height:0}.panel h2{margin-bottom:.6rem;font-size:1.2rem}.panel-copy{color:var(--ink-muted);font-size:.92rem;margin-bottom:.9rem}.panel-library{display:grid;grid-template-rows:auto auto auto auto minmax(160px,1fr);gap:.75rem;overflow:hidden}.library-controls{display:grid;gap:.55rem}.library-search{display:flex;align-items:center;gap:.45rem;border:1px solid var(--border);border-radius:10px;background:#fffdf8;padding:.45rem .55rem;color:var(--ink-muted)}.library-search input{border:0;width:100%;font:inherit;background:transparent;color:var(--ink-strong)}.library-search input:focus{outline:none}.library-filter{display:grid;gap:.25rem;color:var(--ink-muted);font-size:.83rem;text-transform:uppercase;letter-spacing:.05em}.library-filter select{border:1px solid var(--border);border-radius:10px;padding:.45rem .55rem;background:#fffdf8;color:var(--ink-strong);font:inherit}.plant-list{list-style:none;padding:0;margin:0;display:grid;gap:.6rem;overflow:auto;min-height:0;padding-right:.2rem;grid-row:5}.plant-item-row{position:relative}.panel-stage{display:grid;align-content:start;overflow:auto}.panel-inspector{overflow:auto}.category-vegetable{--category-accent: var(--cat-vegetable-accent);--category-tint: var(--cat-vegetable-tint);--category-border: var(--cat-vegetable-border)}.category-herb{--category-accent: var(--cat-herb-accent);--category-tint: var(--cat-herb-tint);--category-border: var(--cat-herb-border)}.category-fruit{--category-accent: var(--cat-fruit-accent);--category-tint: var(--cat-fruit-tint);--category-border: var(--cat-fruit-border)}.category-ornamental{--category-accent: var(--cat-ornamental-accent);--category-tint: var(--cat-ornamental-tint);--category-border: var(--cat-ornamental-border)}.plant-item{display:flex;align-items:center;gap:.65rem;width:100%;text-align:left;cursor:pointer;border:1px solid var(--border);border-radius:12px;padding:.55rem 2.1rem .55rem .65rem;background:var(--category-tint, var(--surface-1));border-color:var(--category-border, var(--border));position:relative}.plant-item:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:12px 0 0 12px;background:var(--category-accent, #73937a);opacity:.9}.plant-item:hover{border-color:var(--category-accent, var(--accent))}.plant-item.is-active{border-color:var(--category-accent, #5f9c79);background:color-mix(in srgb,var(--category-tint, var(--accent-soft)) 76%,#ffffff 24%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--category-accent, #5f9c79) 40%,transparent)}.plant-item p{color:var(--ink-muted);font-size:.85rem}.plant-item svg{color:var(--category-accent, #557561)}.plant-item-info{position:absolute;right:.5rem;bottom:.45rem;width:1.15rem;height:1.15rem;border-radius:999px;border:1px solid rgba(54,78,62,.42);background:#faf8f1f5;color:#253d31e6;font-family:Fraunces,serif;font-size:.78rem;font-style:italic;font-weight:700;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:help;padding:0}.plant-item-info:hover{border-color:#2f7d57;color:#1f5b3f;background:#e9f6edfa}.plant-item-info:focus-visible{outline:2px solid rgba(47,125,87,.8);outline-offset:1px}.empty-library{color:var(--ink-muted);font-size:.9rem;grid-row:5}.custom-plant-section{border-top:1px dashed var(--border);padding-top:.8rem;display:grid;gap:.6rem;grid-row:4}.custom-plant-header{display:flex;align-items:center;justify-content:space-between;gap:.6rem}.custom-plant-section h3{font-size:1rem}.custom-plant-copy{margin-bottom:0}.custom-plant-header .tool-button{display:inline-flex;align-items:center;gap:.35rem}.custom-plant-form{display:grid;gap:.5rem}.custom-plant-form label,.bed-size-form label{display:grid;gap:.18rem}.custom-plant-form label>span{font-size:.78rem;color:var(--ink-muted);letter-spacing:.04em;text-transform:uppercase}.bed-size-form label>span{font-size:.78rem;color:var(--ink-muted);letter-spacing:.04em;text-transform:uppercase}.custom-plant-form input,.custom-plant-form select,.custom-plant-form textarea,.bed-size-form input,.inspector-notes textarea{border:1px solid var(--border);border-radius:10px;padding:.42rem .55rem;background:#fffdf8;color:var(--ink-strong);font:inherit}.custom-grid{display:grid;gap:.5rem}.custom-grid.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}.custom-grid.four-col{grid-template-columns:repeat(4,minmax(0,1fr))}.status-message{margin:0;padding:.42rem .55rem;border-radius:9px;border:1px solid transparent;font-size:.84rem}.status-message.is-success{border-color:#7ebd99;background:#ecf7f0;color:#255b3f}.status-message.is-error{border-color:#d49a9a;background:#fbefef;color:#7e2727}.panel-inspector dl{display:grid;gap:.9rem}.panel-inspector dt{font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted)}.panel-inspector dd{margin:.15rem 0 0;font-weight:600}.inspector-region-control{display:grid;gap:.3rem;margin-bottom:.8rem}.inspector-context-copy{margin-bottom:.6rem}.inspector-project-controls{display:grid;gap:.45rem;margin-bottom:.8rem}.inspector-project-controls h3{font-size:.96rem}.inspector-control-field{display:grid;gap:.22rem}.inspector-control-field>span{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem}.inspector-control-field input,.inspector-control-field select{border:1px solid var(--border);border-radius:10px;padding:.42rem .55rem;background:#fffdf8;color:var(--ink-strong);font:inherit}.inspector-control-actions{display:grid;gap:.45rem}.inspector-snap-status{margin:0;padding:.1rem 0}.inspector-region-control label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem}.inspector-region-control select{border:1px solid var(--border);border-radius:10px;padding:.42rem .55rem;background:#fffdf8;color:var(--ink-strong);font:inherit}.inspector-region-row{display:flex;gap:.55rem;align-items:center}.inspector-region-row select{min-width:6.5rem}.map-picker-button{display:inline-flex;align-items:center;gap:.35rem;white-space:nowrap}.inspector-actions{margin-top:.85rem;border-top:1px dashed var(--border);padding-top:.75rem;display:grid;gap:.45rem}.inspector-actions h3{font-size:.96rem}.inspector-notes{margin-top:.8rem;border-top:1px dashed var(--border);padding-top:.7rem;display:grid;gap:.45rem}.inspector-notes.is-category{border-top-style:solid;border-top-color:var(--category-border, var(--border));background:var(--category-tint, transparent);border-radius:10px;padding:.7rem .65rem .65rem}.inspector-notes h3{font-size:.96rem}.inspector-copy{margin-bottom:0}.inspector-note-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem}.stage-inline-hint{margin:.8rem 0 0}.library-tooltip-card{position:fixed;transform:translate(14px,-50%);width:min(280px,calc(100vw - 1.2rem));border:1px solid var(--category-border, #5f9c79);border-radius:12px;background:color-mix(in srgb,var(--category-tint, rgba(250, 248, 241, .98)) 72%,#fffdf7 28%);box-shadow:0 18px 40px #1923173d;padding:.65rem .75rem;pointer-events:none;z-index:6}.library-tooltip-card h3{margin:0;font-size:.97rem}.library-tooltip-card p{margin-top:.2rem;font-size:.82rem;color:var(--ink-muted)}.dialog-overlay{position:fixed;inset:0;background:#1d251f7a;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:20}.dialog-content{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(720px,calc(100vw - 1.25rem));max-height:calc(100vh - 2rem);overflow:auto;border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);background:var(--surface-0);padding:1rem;z-index:21}.custom-plant-dialog,.stage-dialog,.bed-actions-dialog{display:grid;gap:.75rem}.zone-map-dialog{display:grid;gap:.75rem;width:min(1320px,calc(100vw - .5rem));max-height:calc(100vh - .5rem)}.bed-size-form{display:grid;gap:.65rem}.bed-actions-grid{display:grid;gap:.5rem}.zone-map-board{position:relative;width:100%;aspect-ratio:1650 / 1275;max-height:calc(100vh - 180px);margin-inline:auto;border:1px solid var(--border);border-radius:14px;background:#dde3ea;overflow:hidden}.zone-map-image{width:100%;height:100%;object-fit:contain;display:block}.zone-map-note{margin-bottom:0}.dialog-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.dialog-header h2{margin:0;font-size:1.3rem}.dialog-close{border:1px solid var(--border);border-radius:999px;width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-0);color:var(--ink-strong);cursor:pointer}.dialog-close:hover{border-color:var(--accent)}.dialog-actions{display:flex;justify-content:flex-end;gap:.5rem}.stage-card{position:relative;background:linear-gradient(160deg,#f7f0e4,#f5ebdc 60%,#e8ddca);border:1px solid var(--border);border-radius:14px;overflow:hidden}.stage-toolbar{display:flex;flex-wrap:nowrap;gap:.5rem;justify-content:flex-start;align-items:center;padding:.7rem;border-bottom:1px solid var(--border);background:#faf6efdb;overflow-x:auto}.toolbar-group{display:flex;gap:.5rem;align-items:center;flex-wrap:nowrap}.toolbar-section-title{font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-muted);font-weight:700;margin-right:.1rem}.shortcuts-list{margin:0;padding-left:1.1rem;display:grid;gap:.35rem;color:var(--ink-strong)}.shortcuts-list strong{color:#2d3c31}.tool-button{border:1px solid var(--border);background:var(--surface-0);border-radius:10px;padding:.35rem .75rem;font-weight:600;cursor:pointer}.tool-button:hover{border-color:var(--accent)}.tool-button:disabled{cursor:not-allowed;opacity:.6;border-color:var(--border)}.tool-button.is-active{background:var(--accent-soft);border-color:#7ab697}.tool-button.danger-button{border-color:#bb7f7f;color:#742f2f;background:#fff5f5}.tool-button.danger-button:hover:not(:disabled){border-color:#a55f5f}.tool-inline-copy{font-size:.82rem;color:var(--ink-muted);font-weight:600;padding:0 .15rem}.tool-inline-hint{color:#6a5531}.stage-shortcuts-copy{white-space:nowrap}.bed-context-content{min-width:220px;background:#fbf8f1fa;border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 36px #1816103d;padding:.3rem;z-index:40}.bed-context-item{border-radius:8px;padding:.45rem .55rem;font-size:.88rem;color:var(--ink-strong);cursor:pointer;outline:none}.bed-context-item[data-disabled]{color:#7c847f;cursor:not-allowed}.bed-context-item[data-highlighted]:not([data-disabled]){background:#e8f1e8}.bed-context-item.is-danger{color:#7e2f2f}.bed-context-item.is-danger[data-highlighted]:not([data-disabled]){background:#faecec}.bed-context-separator{height:1px;margin:.25rem 0;background:#d9cfbf}.zoom-readout{min-width:4.5rem;text-align:center;font-weight:700;color:var(--ink-muted)}.planner-stage{display:block;width:100%;aspect-ratio:1200 / 760;touch-action:none}.viewport-hud{position:absolute;bottom:.85rem;right:.85rem;z-index:4;pointer-events:none;min-width:220px;border:1px solid rgba(94,118,102,.45);border-radius:12px;background:#faf6efcc;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 12px 28px #1c241e29;padding:.5rem .55rem}.viewport-hud-row{display:flex;align-items:baseline;justify-content:space-between;gap:.65rem;font-size:.76rem;color:#3a4940;line-height:1.25}.viewport-hud-row+.viewport-hud-row{margin-top:.2rem}.viewport-hud-row span{font-weight:600;color:#4a5a50}.viewport-hud-row strong{font-weight:700;text-align:right}.viewport-hud-row.is-subtle{opacity:.82}.viewport-hud-legend{margin-top:.4rem;padding-top:.34rem;border-top:1px solid rgba(78,98,86,.22)}.viewport-hud-legend.is-selected{border-top-color:#3c544647}.viewport-hud-legend-title{display:block;font-size:.65rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#38493fc7;margin-bottom:.24rem}.viewport-hud-legend-chips{display:flex;flex-wrap:wrap;gap:.28rem}.viewport-hud-legend-chip{display:inline-flex;align-items:center;border:1px solid var(--category-border, rgba(79, 101, 87, .38));border-radius:999px;background:color-mix(in srgb,var(--category-tint, rgba(242, 237, 228, .86)) 70%,#fff 30%);color:color-mix(in srgb,var(--category-accent, #33483c) 62%,#2c3c33 38%);font-size:.67rem;font-weight:700;line-height:1;padding:.19rem .42rem}.viewport-hud-actions{display:flex;gap:.35rem;margin-top:.45rem;pointer-events:auto}.hud-action-button{flex:1;padding:.25rem .5rem;font-size:.72rem}.viewport-hud.is-compact{min-width:170px}.viewport-hud.is-compact .viewport-hud-actions{margin-top:.35rem}.viewport-hud.is-detailed{min-width:260px}.stage-minimap-shell{position:absolute;left:.85rem;bottom:.85rem;z-index:4;border:1px solid rgba(95,120,104,.5);border-radius:12px;background:#faf6efd6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 10px 24px #1c241e29;padding:.35rem .45rem .45rem}.stage-minimap-title{font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#35453ad6;margin-bottom:.25rem}.stage-minimap{width:210px;height:136px;border-radius:8px;display:block;cursor:crosshair}.stage-minimap-bg{fill:#f4ece1f2}.stage-minimap-bed{fill:#4e795e3d;stroke:#345b44e0;stroke-width:.9}.stage-minimap-viewport{fill:#3f75c417;stroke:#315ea5e0;stroke-width:1.1;stroke-dasharray:3 2}.stage-minimap-home{fill:#26593ee6}.stage-rulers{pointer-events:none}.stage-ruler-surface{fill:#f6efe2e6}.stage-ruler-boundary{stroke:#48534a5c;stroke-width:1}.stage-ruler-tick{stroke:#384e40cc;stroke-width:1.3}.stage-ruler-label{fill:#2f4035e6;font-family:Manrope,sans-serif;font-size:10px;font-weight:700;paint-order:stroke;stroke:#f9f4eceb;stroke-width:2}.stage-ruler-label-x{text-anchor:middle}.stage-ruler-label-y{text-anchor:end;dominant-baseline:middle}.stage-ruler-scale-note{fill:#344238db;font-family:Manrope,sans-serif;font-size:9px;font-weight:700;letter-spacing:.01em}.grid-scale-mid-tick{position:absolute;left:50%;top:-5px;transform:translate(-50%);width:0;height:8px;border-left:2px solid rgba(43,82,64,.7)}.grid-minor{stroke:#4d5d4e1f;stroke-width:1;transition:opacity .14s ease}.grid-major{stroke:#4d5d4e38;stroke-width:1.2;transition:opacity .14s ease}.grid-super{stroke:#4054434d;stroke-width:1.45;transition:opacity .14s ease}.stage-origin-marker{pointer-events:none}.origin-ring{fill:#336f4e14;stroke:#276042b8;stroke-width:1.25}.origin-crosshair{stroke:#23573bbd;stroke-width:1.3}.origin-center{fill:#1f4d34e0}.origin-label{fill:#225038db;font-family:Manrope,sans-serif;font-size:10px;font-weight:700;paint-order:stroke;stroke:#f9f4ecf0;stroke-width:2}.bed-rect{stroke:#5b402499;stroke-width:2;cursor:move;transform-box:fill-box;transform-origin:center;transition:stroke .14s ease,stroke-width .14s ease,filter .16s ease}.bed-rect.is-hovered{stroke:#367854cc;stroke-width:2.4}.bed-rect.is-selected{stroke:#2f7d57;stroke-width:3;filter:drop-shadow(0 0 6px rgba(43,118,82,.22));animation:selected-bed-pulse 1.45s ease-in-out infinite}.polygon-bed{stroke:#5b4024a8;stroke-width:2;cursor:pointer;transform-box:fill-box;transform-origin:center;transition:stroke .14s ease,stroke-width .14s ease,filter .16s ease}.polygon-bed.is-hovered{stroke:#367854cc;stroke-width:2.4}.polygon-bed.is-selected{stroke:#2f7d57;stroke-width:3;filter:drop-shadow(0 0 6px rgba(43,118,82,.22));animation:selected-bed-pulse 1.45s ease-in-out infinite}.bed-label{fill:#2d2314e6;font-family:Manrope,sans-serif;font-size:12px;font-weight:700;pointer-events:none}.bed-label-chip-bg{fill:#fbf8f0e0;stroke:#6e675b7a;stroke-width:1;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.bed-label-chip{pointer-events:none}.bed-label-chip-bg,.bed-label-chip-dot,.bed-label{transition:opacity .14s ease,transform .14s ease,fill .14s ease,stroke .14s ease}.bed-label-chip-bg{transform-box:fill-box;transform-origin:center}.bed-label-chip.is-hovered .bed-label-chip-bg{fill:#fffdf8f5;stroke:#396f506b}.bed-label-chip.is-selected .bed-label-chip-bg{stroke-width:1.2}.bed-label-chip-dot{fill:var(--category-accent, rgba(85, 100, 90, .65))}.bed-label-chip.category-vegetable .bed-label-chip-bg,.bed-label-chip.category-herb .bed-label-chip-bg,.bed-label-chip.category-fruit .bed-label-chip-bg,.bed-label-chip.category-ornamental .bed-label-chip-bg{stroke:var(--category-border, rgba(110, 103, 91, .48));fill:color-mix(in srgb,var(--category-tint, rgba(251, 248, 240, .88)) 72%,#ffffff 28%)}.bed-label-chip.density-open .bed-label-chip-bg{stroke-dasharray:2 2}.bed-label-chip.density-sparse .bed-label-chip-bg{stroke-width:1.05}.bed-label-chip.density-balanced .bed-label-chip-bg{stroke-width:1.2;fill:color-mix(in srgb,var(--category-tint, rgba(251, 248, 240, .88)) 78%,#f3f8ef 22%)}.bed-label-chip.density-dense .bed-label-chip-bg{stroke-width:1.35;fill:color-mix(in srgb,var(--category-tint, rgba(251, 248, 240, .88)) 82%,#edf6eb 18%);filter:saturate(1.04)}.bed-dominant-overlay{fill:var(--category-accent, #5b7d68);opacity:var(--bed-dominant-opacity, .08);pointer-events:none;transition:opacity .14s ease,fill .14s ease}.bed-dominant-overlay.density-open{--bed-dominant-opacity: .04}.bed-dominant-overlay.density-sparse{--bed-dominant-opacity: .07}.bed-dominant-overlay.density-balanced{--bed-dominant-opacity: .1}.bed-dominant-overlay.density-dense{--bed-dominant-opacity: .13}.bed-dominant-overlay.is-hovered{opacity:calc(var(--bed-dominant-opacity, .08) + .025)}.bed-dominant-overlay.is-selected{opacity:calc(var(--bed-dominant-opacity, .08) + .035)}.bed-rect.is-new,.polygon-bed.is-new{animation:bed-pop-in .36s cubic-bezier(.19,1,.22,1)}.bed-label-chip.is-new .bed-label-chip-bg{animation:chip-pop-in .36s cubic-bezier(.19,1,.22,1)}.bed-draft{fill:#307d5729;stroke:#2f7d57;stroke-dasharray:10 7;stroke-width:2;pointer-events:none}.bed-draft-label{fill:#235f42;font-family:Manrope,sans-serif;font-size:12px;font-weight:700;text-anchor:middle;paint-order:stroke;stroke:#f9f4ecf5;stroke-width:3;stroke-linejoin:round;pointer-events:none}.polygon-draft-line{stroke:#2f7d57;stroke-width:2;stroke-dasharray:8 6;pointer-events:none}.polygon-draft-point{fill:#2f7d57;stroke:#f8f3ea;stroke-width:1.5;pointer-events:none}.polygon-vertex-handle{fill:#f8f3ea;stroke:#2f7d57;stroke-width:2;cursor:move}.polygon-vertex-handle.is-selected{fill:#2f7d57;stroke:#f8f3ea}.resize-handle{fill:#f8f3ea;stroke:#2f7d57;stroke-width:2;rx:3}.selected-bed-bounds{fill:#2e6d4e0f;stroke:#245e4273;stroke-width:1;stroke-dasharray:6 5;pointer-events:none}.bed-dimension-line,.bed-dimension-tick{stroke:#22533ac2;stroke-width:1.2;pointer-events:none}.bed-dimension-label{fill:#1e4c35e6;font-family:Manrope,sans-serif;font-size:11px;font-weight:700;paint-order:stroke;stroke:#f9f4ecf5;stroke-width:3;stroke-linejoin:round;text-anchor:middle;dominant-baseline:middle;pointer-events:none}.plant-footprint{fill:var(--plant-footprint-fill, rgba(69, 127, 95, .24));stroke:var(--plant-footprint-stroke, rgba(41, 98, 67, .84));stroke-width:1.8;cursor:pointer;transition:opacity .12s ease,transform .12s ease}.plant-footprint.is-selected{stroke-width:2.3;stroke:#236141f2}.plant-footprint.is-overlap{fill:#be52523d;stroke:#992b2be0}.plant-center{fill:var(--plant-marker-fill, #236747);stroke:var(--plant-marker-stroke, #1b4f36);stroke-width:1.1;cursor:pointer;transition:transform .12s ease,fill .12s ease;transform-box:fill-box;transform-origin:center}.plant-center.is-selected{fill:color-mix(in srgb,var(--plant-marker-fill, #1d4f37) 82%,#f4fbf8 18%)}.plant-center.is-overlap{fill:#9b2f2f}.plant-glyph-icon{color:var(--plant-marker-glyph, #f3f8f3);pointer-events:none;transition:opacity .12s ease}.plant-glyph-icon.is-overlap{color:#ffe8e8}.plant-glyph-shape{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.plant-glyph-detail{fill:currentColor;stroke:none}.plant-glyph-vein{fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;opacity:.95}.plant-placement.is-dragging .plant-footprint{transform-box:fill-box;transform-origin:center;transform:scale(1.04)}.plant-placement.is-dragging .plant-center{transform-box:fill-box;transform-origin:center;transform:scale(1.12)}.plant-simplified-dot{fill:var(--plant-marker-fill, rgba(35, 103, 71, .84));stroke:var(--plant-marker-stroke, rgba(27, 79, 53, .9));stroke-width:1.2;cursor:pointer;transition:transform .12s ease,opacity .12s ease;transform-box:fill-box;transform-origin:center}.plant-simplified-dot.is-overlap{fill:#a23535e6;stroke:#7f2626f0}.plant-simplified-ring{fill:#25624414;stroke:#236141eb;stroke-width:1.5;stroke-dasharray:4 3}.plant-placement.is-dragging .plant-simplified-dot{transform-box:fill-box;transform-origin:center;transform:scale(1.14)}.plant-placement.is-hovered .plant-footprint{transform-box:fill-box;transform-origin:center;transform:scale(1.018)}.plant-placement.is-hovered .plant-center,.plant-placement.is-selected .plant-center{transform:scale(1.08)}.plant-placement.is-hovered .plant-simplified-dot,.plant-placement.is-selected .plant-simplified-dot{transform:scale(1.1)}.plant-placement.is-hovered .plant-glyph-icon,.plant-placement.is-selected .plant-glyph-icon{opacity:.98}.plant-placement.is-new .plant-center,.plant-placement.is-new .plant-simplified-dot{animation:plant-pop-in .36s cubic-bezier(.19,1,.22,1)}.plant-placement.is-new .plant-glyph-icon{animation:glyph-pop-in .36s cubic-bezier(.19,1,.22,1)}.plant-placement.category-vegetable,.spacing-guide.category-vegetable{--plant-marker-fill: #4f8a5b;--plant-marker-stroke: #2f6339;--plant-marker-glyph: #f2f7f2;--plant-footprint-fill: rgba(89, 145, 94, .22);--plant-footprint-stroke: rgba(53, 107, 61, .88);--spacing-accent: #4d915b}.plant-placement.category-herb,.spacing-guide.category-herb{--plant-marker-fill: #4e9c88;--plant-marker-stroke: #2f6d5e;--plant-marker-glyph: #eef8f4;--plant-footprint-fill: rgba(84, 158, 140, .21);--plant-footprint-stroke: rgba(43, 110, 96, .88);--spacing-accent: #3f8f7b}.plant-placement.category-fruit,.spacing-guide.category-fruit{--plant-marker-fill: #c06a4b;--plant-marker-stroke: #85412c;--plant-marker-glyph: #fff4ef;--plant-footprint-fill: rgba(196, 108, 76, .2);--plant-footprint-stroke: rgba(142, 66, 42, .85);--spacing-accent: #b05f44}.plant-placement.category-ornamental,.spacing-guide.category-ornamental{--plant-marker-fill: #5d79bd;--plant-marker-stroke: #3a4e87;--plant-marker-glyph: #f4f7ff;--plant-footprint-fill: rgba(102, 132, 200, .2);--plant-footprint-stroke: rgba(62, 86, 150, .86);--spacing-accent: #5573b7}.plant-preview-footprint{fill:#3b775629;stroke:#236141f2;stroke-width:2;stroke-dasharray:8 6;pointer-events:none}.plant-preview-center{fill:#1c5038e6;pointer-events:none}.placement-origin-footprint{fill:#2361410f;stroke:#236141a6;stroke-width:1.6;stroke-dasharray:5 5;pointer-events:none}.placement-origin-center{fill:#2361418c;pointer-events:none}.spacing-guide-line{stroke-width:2;stroke-dasharray:7 5;pointer-events:none}.spacing-guide-line.is-ok{stroke:#1e7a4f}.spacing-guide-line.is-warn{stroke:#b98519}.spacing-guide-line.is-alert{stroke:#b24444}.spacing-guide-anchor{pointer-events:none;stroke:var(--spacing-accent, rgba(56, 88, 68, .62));stroke-width:1.2}.spacing-guide-anchor.is-ok{fill:#1e7a4f}.spacing-guide-anchor.is-warn{fill:#b98519}.spacing-guide-anchor.is-alert{fill:#b24444}.spacing-guide-label{font-family:Manrope,sans-serif;font-size:12px;font-weight:700;text-anchor:middle;paint-order:stroke;stroke:#f9f4ecf5;stroke-width:3;stroke-linejoin:round;pointer-events:none}.spacing-guide-label.is-ok{fill:#1e7a4f}.spacing-guide-label.is-warn{fill:#8b6310}.spacing-guide-label.is-alert{fill:#8d2a2a}.spacing-guide-empty{font-family:Manrope,sans-serif;font-size:12px;font-weight:700;fill:#546053;paint-order:stroke;stroke:#f9f4ecf5;stroke-width:3;pointer-events:none}.spacing-guide,.bed-alignment-guides,.placement-alignment-guides,.placement-snap-indicator{opacity:1;transition:opacity .14s ease}.bed-alignment-line{stroke:#246e4994;stroke-width:1.25;stroke-dasharray:5 4;pointer-events:none;animation:guide-fade-in .14s ease-out}.placement-alignment-line{stroke:#3160b3d6;stroke-width:1.5;stroke-dasharray:5 4;pointer-events:none;animation:guide-fade-in .14s ease-out}.placement-alignment-label{fill:#2a5391;font-family:Manrope,sans-serif;font-size:11px;font-weight:700;paint-order:stroke;stroke:#f9f4ecf5;stroke-width:3;stroke-linejoin:round;pointer-events:none;animation:guide-fade-in .14s ease-out}.placement-snap-ring{fill:#3160b314;stroke:#28549ddb;stroke-width:1.9;stroke-dasharray:4 4;pointer-events:none;animation:guide-fade-in .14s ease-out}.placement-snap-center{fill:#28549de6;pointer-events:none}.placement-snap-label{fill:#2a5391;font-family:Manrope,sans-serif;font-size:11px;font-weight:700;paint-order:stroke;stroke:#f9f4ecf5;stroke-width:3;stroke-linejoin:round;pointer-events:none;animation:guide-fade-in .14s ease-out}@keyframes guide-fade-in{0%{opacity:0}to{opacity:1}}@keyframes selected-bed-pulse{0%{filter:drop-shadow(0 0 4px rgba(43,118,82,.12))}50%{filter:drop-shadow(0 0 7px rgba(43,118,82,.28))}to{filter:drop-shadow(0 0 4px rgba(43,118,82,.12))}}@keyframes bed-pop-in{0%{transform:scale(.985);opacity:.42}to{transform:scale(1);opacity:1}}@keyframes chip-pop-in{0%{transform:scale(.9);opacity:.42}to{transform:scale(1);opacity:1}}@keyframes plant-pop-in{0%{transform:scale(.52);opacity:.4}to{transform:scale(1);opacity:1}}@keyframes glyph-pop-in{0%{opacity:.08}to{opacity:1}}.placement-outside-bed-hint{fill:#8d2a2a;font-family:Manrope,sans-serif;font-size:12px;font-weight:700;paint-order:stroke;stroke:#f9f4ecf7;stroke-width:3;stroke-linejoin:round;pointer-events:none}.plant-tooltip-card{position:absolute;transform:translate(-50%);width:min(320px,calc(100% - 1rem));border:1px solid #5f9c79;border-radius:12px;background:#faf8f1f5;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 18px 40px #1923173d;padding:.75rem .8rem;pointer-events:none;z-index:2}.plant-tooltip-card h3{margin:0;font-size:1rem;color:var(--ink-strong)}.tooltip-sci{margin-top:.1rem;color:var(--ink-muted);font-size:.82rem;font-style:italic}.plant-tooltip-card dl{margin:.55rem 0 0;display:grid;gap:.35rem}.plant-tooltip-card dt{font-size:.72rem;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.05em}.plant-tooltip-card dd{margin:0;font-size:.84rem;color:var(--ink-strong);line-height:1.35}@media(max-width:1200px){.app-main{grid-template-columns:minmax(220px,280px) minmax(0,1fr)}.panel-inspector{grid-column:1 / -1}}@media(max-width:900px){body{height:auto;overflow:auto}#root{height:auto;padding:.8rem}.app-main{grid-template-columns:1fr}.onboarding-strip{display:grid}.mobile-panel-nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem}.mobile-panel-tab{border:1px solid var(--border);border-radius:10px;padding:.42rem .55rem;background:#fffaf1;color:var(--ink-strong);font-weight:600;font:inherit}.mobile-panel-tab.is-active{border-color:#7ab697;background:var(--accent-soft)}.mobile-panel{display:none}.mobile-panel.is-active{display:block}.panel-stage.mobile-panel.is-active{display:grid}.custom-grid.two-col,.custom-grid.four-col{grid-template-columns:1fr}.inspector-region-row{flex-wrap:wrap}.custom-plant-header{flex-direction:column;align-items:stretch}.stage-toolbar,.toolbar-group{flex-wrap:wrap}.stage-shortcuts-copy{display:none}.viewport-hud{bottom:.55rem;right:.55rem;min-width:160px;padding:.4rem .45rem}.viewport-hud.is-detailed{min-width:200px}.viewport-hud-row.is-subtle,.stage-minimap-shell,.library-tooltip-card{display:none}.dialog-content{width:calc(100vw - 1rem);max-height:calc(100vh - 1rem);padding:.85rem}}
