:root{color-scheme:light;font-family:IBM Plex Sans,sans-serif;line-height:1.4;font-weight:400;color:#1f241d;background:radial-gradient(circle at top left,rgba(245,213,160,.6),transparent 30%),linear-gradient(180deg,#f9f4ea,#eef1e8);--paper: rgba(255, 251, 244, .78);--border: rgba(56, 75, 42, .18);--panel-shadow: 0 18px 40px rgba(60, 72, 49, .12);--green: #38502f;--green-soft: #7c9a69;--accent: #c56b3c}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit}button{border:0;border-radius:999px;padding:.8rem 1.15rem;background:var(--green);color:#fff;cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}input,select{width:100%;border:1px solid var(--border);border-radius:14px;padding:.8rem .95rem;background:#ffffffd1}a{color:var(--green)}#root{min-height:100vh}.app-shell{width:min(1720px,calc(100vw - 1rem));margin:.5rem auto;padding-bottom:2rem}.hero,.panel,.main-nav{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:var(--paper);border:1px solid var(--border);box-shadow:var(--panel-shadow)}.hero{border-radius:32px;padding:1.35rem 1.5rem;display:grid;gap:.85rem}.hero h1,.panel h2,.panel h3{font-family:Fraunces,serif;margin:0}.eyebrow{text-transform:uppercase;letter-spacing:.16em;font-size:.75rem;margin:0 0 .4rem;color:var(--green-soft)}.hero-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.6rem}.hero-metrics div{display:flex;flex-direction:column;gap:.15rem;padding:.75rem .9rem;border-radius:18px;background:#ffffffa6}.hero-metrics strong{font-size:1.2rem}.main-nav{display:flex;align-items:center;gap:.8rem;margin:.75rem 0;border-radius:24px;padding:.6rem .9rem}.main-nav a{white-space:nowrap;text-decoration:none;padding:.65rem .9rem;border-radius:999px}.main-nav a.active{background:#38502f1f}.nav-spacer{flex:1}.ghost-button{background:transparent;color:var(--green);border:1px solid var(--border)}.ghost-button-active{background:#38502f1f}.auth-pill{display:inline-flex;align-items:center;padding:.55rem .85rem;border-radius:999px;background:#38502f1a;color:var(--green);font-weight:600}.page-grid{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(300px,1fr);gap:1rem}.page-grid-editor{grid-template-columns:minmax(0,3.35fr) minmax(280px,.9fr);align-items:start}.panel{border-radius:28px;padding:1.05rem}.panel-head{display:flex;justify-content:space-between;align-items:start;gap:1rem;margin-bottom:.8rem}.panel-head p{margin:.35rem 0 0;color:#1f241dbf}.panel-actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.mode-pill{display:inline-flex;align-items:center;padding:.55rem .85rem;border-radius:999px;background:#38502f14;color:#1f241db3;font-weight:600}.mode-pill-live{background:#56966424;color:#2d5f36}.save-pill{display:inline-flex;align-items:center;padding:.55rem .85rem;border-radius:999px;font-weight:600;border:1px solid rgba(56,80,47,.12)}.save-pill-saved{background:#5696641f;color:#2d5f36}.save-pill-unsaved,.save-pill-saving{background:#c56b3c1f;color:#8f4d2c}.save-pill-error{background:#9e4a3824;color:#8e392d}.tool-strip{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:.8rem}.tool-button{background:#ffffffb8;color:var(--green);border:1px solid rgba(56,80,47,.12)}.tool-button-active{background:var(--green);color:#fff}.danger-button{background:#9e4a38;color:#fff}.panel-canvas{overflow:hidden}.canvas-topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem}.canvas-help{margin:0;color:#1f241da3;font-size:.95rem}.zoom-cluster{display:flex;align-items:center;gap:.6rem}.zoom-readout{min-width:56px;text-align:center;font-weight:600;color:var(--green)}.canvas-scroll{overflow:auto;border-radius:24px;border:1px solid rgba(56,80,47,.12);background:linear-gradient(rgba(255,255,255,.32) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.32) 1px,transparent 1px),linear-gradient(180deg,#b8d0aa,#9eb892);background-size:32px 32px,32px 32px,auto}.canvas-stage{position:relative}.empty-layout-state{position:absolute;top:1rem;right:1rem;bottom:1rem;left:1rem;z-index:2;display:grid;align-content:center;justify-items:center;gap:.8rem;padding:1.5rem;text-align:center;border-radius:24px;background:#f8f5e8c2;border:1px dashed rgba(56,80,47,.28);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.empty-layout-state h3,.empty-layout-state p{margin:0}.empty-layout-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem}.canvas-zoom-layer{position:absolute;inset:0 auto auto 0}.layout-canvas{position:relative}.snap-guide{position:absolute;pointer-events:none;z-index:1}.snap-guide-vertical{top:0;bottom:0;width:2px;margin-left:-1px}.snap-guide-horizontal{left:0;right:0;height:2px;margin-top:-1px}.snap-guide-grid{background:#f7f3bce6;box-shadow:0 0 0 1px #f7f3bc2e,0 0 10px #f7f3bc73}.snap-guide-bed{background:#fffffff2;box-shadow:0 0 0 1px #38502f1f,0 0 12px #ffffff6b}.snap-guide-plant{background:#c56b3ceb;box-shadow:0 0 0 1px #c56b3c2e,0 0 10px #c56b3c61}.layout-canvas.tool-bed{cursor:copy}.layout-canvas.tool-plant .bed{box-shadow:inset 0 0 0 1px #161e0e26,0 0 0 3px #ffffff2e}.layout-canvas.tool-plant .bed{cursor:cell}.layout-canvas.tool-move .bed,.layout-canvas.tool-move .plant-chip{cursor:grab}.bed{position:absolute;border-radius:24px;border:2px solid rgba(255,255,255,.5);box-shadow:inset 0 0 0 1px #161e0e26}.bed.is-selected,.plant-chip.is-selected{box-shadow:0 0 0 3px #f5fbf5e6,0 0 0 7px #38502f4d}.bed-label{position:absolute;top:.75rem;left:.9rem;font-weight:600;color:#fff}.bed-sensor-badge{position:absolute;top:.72rem;right:.9rem;display:inline-flex;align-items:center;max-width:calc(100% - 8rem);padding:.28rem .55rem;border-radius:999px;background:#f9f6eae0;color:#31402b;font-size:.76rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.resize-handle{position:absolute;width:18px;height:18px;border-radius:999px;padding:0;background:#f9f6ea;border:2px solid rgba(56,80,47,.35);color:transparent}.resize-nw{left:-9px;top:-9px;cursor:nwse-resize}.resize-ne{right:-9px;top:-9px;cursor:nesw-resize}.resize-sw{left:-9px;bottom:-9px;cursor:nesw-resize}.resize-se{right:-9px;bottom:-9px;cursor:nwse-resize}.plant-chip{position:absolute;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border-radius:999px;border:2px solid rgba(255,255,255,.55);padding:.35rem .7rem;transform:translate(-50%,-50%)}.plant-chip{color:#fff;box-shadow:0 8px 18px #212c1829}.plant-chip.plant-chip-card{border-radius:18px;padding:.5rem .75rem;align-items:center}.plant-chip span{width:100%;overflow:hidden;text-align:center;line-height:1.2;white-space:normal;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;word-break:break-word;overflow-wrap:anywhere}.stack{display:grid;gap:1rem}.editor-sidebar{align-content:start;align-self:start;position:sticky;top:1rem;max-width:380px;justify-self:end}.editor-mobile-bar,.editor-sheet-toggle{display:none}.editor-card,.sensor-card,.snapshot-card{display:grid;gap:.8rem;padding:1rem;border-radius:22px;background:#ffffffb8;border:1px solid rgba(56,80,47,.1)}.editor-card-primary{background:linear-gradient(180deg,#7c9a6929,#ffffffb8)}.editor-card-selected{background:linear-gradient(180deg,#5696642e,#ffffffbd)}.editor-card p{margin:0;color:#1f241dbd}.selection-head{display:flex;justify-content:space-between;align-items:start;gap:1rem}.selection-kind{display:inline-flex;align-items:center;padding:.45rem .7rem;border-radius:999px;background:#38502f1a;color:var(--green);font-weight:600}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.field-label{display:grid;gap:.45rem;color:#1f241db8;font-size:.95rem}.field-label span{font-weight:600}.field-help{font-size:.9rem;color:#1f241d9e}.color-input{width:100%;height:48px;padding:.3rem;border-radius:14px;border:1px solid var(--border);background:#ffffffd1}.action-row{display:flex;gap:.75rem}.action-row>*{flex:1}.sensor-groups,.snapshot-grid{display:grid;gap:1rem}.sensor-groups{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.sensor-card-head{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;padding-bottom:.2rem}.sensor-card-head span{color:#1f241d94;font-size:.9rem}.sensor-card-grouped{align-content:start;background:linear-gradient(180deg,#7c9a691f,#ffffffc2)}.sensor-subgroup{display:grid;gap:.6rem;padding-top:.1rem}.sensor-subgroup-featured{margin-top:.15rem;padding:.85rem;border-radius:18px;background:#ffffff8f;border:1px solid rgba(56,80,47,.08)}.sensor-subgroup h4{margin:0;font-size:.95rem;color:#1f241dd1}.sensor-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.75rem}.sensor-summary-tile{display:grid;gap:.28rem;padding:.8rem .85rem;border-radius:18px;background:#ffffffad;border:1px solid rgba(56,80,47,.08)}.sensor-summary-label{color:#1f241da3;font-size:.84rem;font-weight:600;letter-spacing:.02em}.sensor-summary-tile strong{color:var(--green);font-size:1.08rem;line-height:1.1}.sensor-summary-time{color:#1f241d94;font-size:.82rem}.sensor-latest{display:flex;justify-content:space-between;align-items:end;gap:1rem;padding:.7rem .85rem;border-radius:16px;background:#7492611f}.sensor-latest strong{font-size:1.22rem;color:var(--green);line-height:1.1}.sensor-latest span{color:#1f241d9e;font-size:.9rem;white-space:nowrap}.sensor-trend{display:grid;gap:.45rem;padding:.75rem .85rem .8rem;border-radius:18px;background:linear-gradient(180deg,#ffffffc2,#eef5e9d1);border:1px solid rgba(56,80,47,.08)}.sensor-trend-head,.sensor-trend-scale{display:flex;justify-content:space-between;gap:1rem}.sensor-trend-head span,.sensor-trend-scale span{color:#1f241d9e;font-size:.82rem}.sensor-trend-head strong{color:#2f5d36c7;font-size:.82rem;font-weight:700}.sensor-trend-chart{width:100%;height:88px;overflow:visible}.sensor-trend-axis{stroke:#38502f29;stroke-width:1.5;stroke-dasharray:3 5}.sensor-history-list{list-style:none;padding:0;margin:0;display:grid;gap:.45rem}.sensor-history-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:.75rem;padding:.35rem 0;border-bottom:1px solid rgba(56,80,47,.08)}.sensor-history-list li:last-child{border-bottom:0}.sensor-history-list strong{font-weight:600}.sensor-history-list span{color:#1f241d9e;font-size:.84rem;text-align:right}.sensor-empty{color:#1f241d9e;padding:.3rem 0}.action-placeholder{display:inline-flex;align-items:center;min-height:48px;padding:0 .2rem;color:#1f241d8f;font-size:.92rem}.timelapse-bar{display:grid;grid-template-columns:minmax(180px,1.2fr) 110px auto auto;gap:.75rem;align-items:end;padding:.95rem 1rem;border-radius:20px;background:#ffffff94;border:1px solid rgba(56,80,47,.08)}.timelapse-link{display:inline-flex;align-items:center;min-height:48px}.snapshot-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.snapshot-card img{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:16px}.snapshot-card div{display:flex;flex-direction:column}.snapshot-card-link{color:inherit;text-decoration:none;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.snapshot-card-link:hover,.snapshot-card-link:focus-visible{transform:translateY(-2px);border-color:#38502f3d;box-shadow:0 18px 36px #3c483129}.snapshot-card-link:focus-visible{outline:2px solid rgba(197,107,60,.45);outline-offset:3px}.status-screen{min-height:100vh;display:grid;place-items:center;padding:2rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:1rem;background:#1a221547;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.modal-card{width:min(420px,100%);padding:1.25rem;border-radius:28px;border:1px solid var(--border);background:#fffbf4f5;box-shadow:var(--panel-shadow)}.modal-head{display:flex;justify-content:space-between;align-items:start;gap:1rem;margin-bottom:1rem}.form-error{margin:0;color:#a63b2f;font-size:.95rem}@media (max-width: 960px){.page-grid,.timelapse-bar{grid-template-columns:1fr}.panel-head{flex-direction:column;align-items:stretch}.main-nav{overflow-x:auto;flex-wrap:nowrap;align-items:center}.editor-sidebar{position:fixed;left:.75rem;right:.75rem;bottom:.75rem;top:auto;z-index:30;max-width:none;max-height:68vh;overflow:auto;transform:translateY(calc(100% + 1rem));transition:transform .18s ease}.editor-sidebar.editor-sidebar-open{transform:translateY(0)}.editor-sheet-toggle{display:inline-flex}.editor-mobile-bar{display:flex;justify-content:space-between;align-items:start;gap:1rem}.canvas-topbar,.panel-actions,.action-row{flex-direction:column;align-items:stretch}.canvas-help{font-size:.9rem}}
