:root{color-scheme:light;font-family:Geist,Satoshi,Avenir Next,system-ui,sans-serif;font-synthesis:none;line-height:1.5;text-rendering:geometricPrecision;--ink: #1f241d;--muted: #697062;--soft: #f2ede4;--paper: rgba(255, 251, 241, .82);--line: rgba(48, 55, 41, .13);--green: #667d4d;--green-deep: #354729;--gold: #b99455;--amber: #b96d39;--fresh: #799665;--ready: #b45635;--shadow: 0 22px 80px rgba(62, 55, 42, .16)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100dvh;overflow:hidden;background:radial-gradient(circle at 22% 18%,rgba(226,214,190,.9),transparent 34rem),linear-gradient(135deg,#eee6d8,#e4dccf 42%,#f4efe7);color:var(--ink)}button,input,textarea{font:inherit}button{border:0}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid rgba(102,125,77,.8);outline-offset:3px}.app-shell{position:relative;width:100vw;height:100dvh;overflow:hidden;isolation:isolate}.viewer-stage{position:fixed;inset:0;z-index:0;background:radial-gradient(circle at 50% 22%,rgba(255,251,241,.34),transparent 32rem),#ece7ddbf}.viewer-stage canvas{cursor:grab}.viewer-stage canvas:active{cursor:grabbing}.viewer-stage canvas.placing,.viewer-stage canvas.placing:active{cursor:grab}.viewer-stage canvas.placing:active{cursor:grabbing}.grain{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.36;background-image:linear-gradient(rgba(31,36,29,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(31,36,29,.03) 1px,transparent 1px);background-size:38px 38px;-webkit-mask-image:linear-gradient(to bottom,#000,transparent 86%);mask-image:linear-gradient(to bottom,#000,transparent 86%)}.topbar{position:fixed;top:18px;right:18px;z-index:3;display:flex;align-items:center;justify-content:flex-end;gap:18px;pointer-events:none}.topbar-actions,.mode-button{display:flex;align-items:center}h1,h2,p{margin-top:0}h1,h2{margin-bottom:0;letter-spacing:0;line-height:1.02}h1{font-size:clamp(1.42rem,1.8vw,2rem)}h2{font-size:clamp(1.18rem,1.25vw,1.55rem)}.topbar-actions{gap:10px;pointer-events:auto}.plant-list-card{position:fixed;top:18px;left:18px;z-index:3;width:min(286px,calc(100vw - 36px));max-height:calc(100dvh - 36px);overflow:hidden;border:1px solid rgba(40,48,36,.12);border-radius:18px;color:var(--ink);background:#fffbf1c7;box-shadow:inset 0 1px #ffffffa8,0 16px 44px #2c261c24;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.plant-list-toggle{display:grid;grid-template-columns:1fr auto auto;width:100%;min-height:44px;align-items:center;gap:9px;cursor:pointer;padding:0 13px 0 15px;color:var(--ink);background:transparent;text-align:left}.plant-list-toggle span{font-size:.9rem;font-weight:820}.plant-list-toggle strong{display:grid;min-width:26px;height:26px;place-items:center;border-radius:999px;color:var(--green-deep);background:#667d4d21;font-size:.74rem;font-weight:820}.plant-list-toggle svg{color:var(--muted);transition:transform .22s ease}.plant-list-toggle svg.open{transform:rotate(180deg)}.plant-list-body{max-height:calc(100dvh - 82px);overflow:hidden auto}.water-all-button{display:flex;width:calc(100% - 14px);min-height:36px;align-items:center;justify-content:center;gap:7px;cursor:pointer;border-radius:12px;margin:2px 7px 5px;color:#fffaf0;background:linear-gradient(135deg,#38522d,#77915e);font-size:.78rem;font-weight:820;transition:transform .16s ease,opacity .16s ease,filter .16s ease}.water-all-button:hover{transform:translateY(-1px);filter:brightness(1.03)}.water-all-button:disabled{cursor:default;opacity:.56;transform:none;filter:none}.plant-list-items{display:grid;gap:3px;padding:2px 7px 8px}.plant-list-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;min-height:38px;align-items:center;gap:9px;cursor:pointer;border-radius:12px;padding:0 9px;color:var(--ink);background:transparent;text-align:left;transition:background .16s ease,transform .16s ease}.plant-list-item:hover,.plant-list-item.selected{transform:translateY(-1px);background:#667d4d1f}.plant-list-item span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.84rem;font-weight:740}.plant-list-item strong{color:var(--muted);font-size:.74rem;font-weight:800}.plant-dot{width:8px;height:8px;border-radius:50%;background:var(--fresh)}.plant-dot.ready{background:var(--ready)}.plant-dot.due-soon{background:var(--gold)}.mode-button{min-height:42px;gap:8px;border:1px solid rgba(40,48,36,.12);border-radius:999px;padding:0 14px;color:var(--ink);background:#fffbf1b8;box-shadow:inset 0 1px #fff9}.mode-button{cursor:pointer;transition:transform .18s ease,background .18s ease,border-color .18s ease}.mode-button:hover{transform:translateY(-1px);border-color:#667d4d4d;background:#fffbf1eb}.mode-button.active{border-color:#b9945575;background:#fff6dff0}.mode-button:disabled{cursor:default;opacity:.56;transform:none}.placement-toolbar{position:fixed;left:50%;bottom:22px;z-index:4;display:grid;grid-template-columns:auto minmax(180px,1fr) auto;align-items:center;gap:16px;width:min(720px,calc(100vw - 28px));border:1px solid rgba(48,55,41,.13);border-radius:18px;padding:11px 12px 11px 16px;color:var(--ink);background:#fffbf1d6;box-shadow:inset 0 1px #ffffffb8,0 18px 58px #2c261c2e;translate:-50% 0;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.placement-toolbar>div:first-child{display:grid;gap:1px;min-width:128px}.placement-toolbar span,.placement-toolbar p{color:var(--muted);font-size:.72rem;font-weight:760}.placement-toolbar strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.94rem;line-height:1.1}.placement-toolbar p{margin:0}.placement-actions{display:flex;justify-content:flex-end;gap:8px}.placement-actions button{display:flex;min-height:40px;align-items:center;justify-content:center;gap:7px;cursor:pointer;border-radius:999px;padding:0 13px;font-size:.84rem;font-weight:820;transition:transform .17s ease,background .17s ease,opacity .17s ease}.placement-actions button:hover{transform:translateY(-1px)}.placement-cancel{color:var(--ink);background:#28302414}.placement-save{color:#fffaf0;background:linear-gradient(135deg,#2f4129,#6f8655)}.placement-save:disabled{cursor:default;opacity:.62}.modal-layer{position:fixed;inset:0;z-index:6;display:grid;place-items:center;padding:18px;background:#1f241d33}.add-plant-modal{display:grid;gap:16px;width:min(390px,100%);max-height:min(760px,calc(100dvh - 36px));overflow:auto;border:1px solid rgba(48,55,41,.14);border-radius:18px;padding:18px;color:var(--ink);background:#fffbf1f0;box-shadow:0 28px 90px #201d1642}.edit-plant-modal{display:grid;gap:15px;width:min(620px,100%);max-height:min(760px,calc(100dvh - 36px));overflow:auto;border:1px solid rgba(48,55,41,.14);border-radius:18px;padding:18px;color:var(--ink);background:#fffbf1f5;box-shadow:0 28px 90px #201d1642}.modal-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-heading button{display:grid;width:36px;height:36px;place-items:center;cursor:pointer;border-radius:999px;color:var(--ink);background:#28302414}.field-label,.size-field{display:grid;gap:8px;color:var(--muted);font-size:.78rem;font-weight:780}.field-label input{width:100%;border:1px solid rgba(48,55,41,.16);border-radius:13px;padding:12px;color:var(--ink);background:#ffffff94}.field-label textarea{width:100%;min-height:82px;resize:vertical;border:1px solid rgba(48,55,41,.16);border-radius:13px;padding:12px;color:var(--ink);background:#ffffff94}.field-label input:disabled{color:var(--muted);background:#2830240f}.size-options{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.size-options button{min-height:42px;cursor:pointer;border:1px solid rgba(48,55,41,.13);border-radius:12px;color:var(--ink);background:#ffffff80;font-weight:780;text-transform:capitalize;transition:background .16s ease,border-color .16s ease,transform .16s ease}.size-options button:hover,.size-options button.selected{transform:translateY(-1px);border-color:#667d4d61;background:#667d4d24}.edit-modal-actions{display:flex;justify-content:flex-end;gap:9px}.delete-plant-button,.save-plant-button{display:flex;min-height:44px;align-items:center;justify-content:center;gap:7px;cursor:pointer;border-radius:13px;padding:0 15px;font-weight:820;transition:transform .17s ease,opacity .17s ease}.delete-plant-button{color:#fffaf0;background:#9f4f35}.save-plant-button{color:#fffaf0;background:linear-gradient(135deg,#2f4129,#6f8655)}.delete-plant-button:hover,.save-plant-button:hover{transform:translateY(-1px)}.delete-plant-button:disabled,.save-plant-button:disabled{cursor:default;opacity:.56;transform:none}.create-plant-button{min-height:48px;cursor:pointer;border-radius:14px;color:#fffaf0;background:linear-gradient(135deg,#2f4129,#6f8655);font-weight:820}.create-plant-button:disabled{cursor:default;opacity:.48}.plant-label.ready .plant-label-water{background:var(--ready)}.plant-label.due-soon .plant-label-water{background:var(--gold);color:var(--ink)}.plant-label.fresh .plant-label-water{background:var(--fresh)}.scene-loading{display:grid;width:100%;height:100%;place-items:center;gap:16px;color:var(--muted);font-weight:700}.skeleton-orbit{width:156px;height:156px;border:1px solid rgba(102,125,77,.22);border-radius:50%;background:radial-gradient(circle,rgba(102,125,77,.2),transparent 58%);animation:pulse 1.4s ease-in-out infinite alternate}.plant-label-wrap{pointer-events:auto}.plant-label{display:grid;grid-template-columns:minmax(80px,1fr) auto;grid-template-areas:"name count" "status count";gap:0 8px;min-width:148px;border:1px solid rgba(42,49,37,.16);border-radius:13px;padding:7px 9px;color:var(--ink);text-align:left;background:#fffbf1db;box-shadow:0 10px 26px #2a312526;transform:translateZ(0);transition:transform .18s ease,border-color .18s ease,opacity .18s ease}.plant-label:has(.plant-label-select:hover),.plant-label.selected{transform:translateY(-2px) scale(1.02);border-color:#667d4d66}.plant-label.selected{grid-template-columns:minmax(80px,1fr) auto auto;grid-template-areas:"name count edit" "status count edit"}.plant-label-select{grid-column:1;grid-row:1 / 3;display:grid;grid-template-rows:auto auto;min-width:0;cursor:pointer;color:inherit;background:transparent;text-align:left}.plant-label-select span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.88rem;font-weight:820}.plant-label-select small{color:var(--muted);font-size:.7rem;font-weight:720}.plant-label-water{grid-area:count;display:grid;min-width:34px;width:34px;height:34px;place-items:center;align-self:center;cursor:pointer;border-radius:50%;color:#fffaf0;transition:transform .16s ease,filter .16s ease}.plant-label-water:hover{transform:translateY(-1px);filter:brightness(1.05)}.plant-label-water svg{width:19px;height:19px;fill:currentColor}.plant-label-edit{grid-area:edit;display:grid;width:30px;height:30px;place-items:center;align-self:center;cursor:pointer;border-radius:999px;color:var(--green-deep);background:#667d4d1f;transition:background .16s ease,transform .16s ease}.plant-label-edit:hover{transform:translateY(-1px);background:#667d4d33}.plant-label:not(.selected){min-width:94px;max-width:126px;padding:6px 8px;text-align:center}.plant-label:not(.selected) .plant-label-select{display:block;text-align:center}.plant-label:not(.selected) .plant-label-select span{display:block;font-size:.74rem}.plant-label:not(.selected) .plant-label-water,.plant-label:not(.selected) .plant-label-select small{display:none}@keyframes pulse{0%{opacity:.48}to{opacity:1}}@media(max-width:820px){.topbar{top:12px;right:12px;left:12px;align-items:flex-start;flex-direction:column}.topbar-actions{width:100%}.mode-button{flex:1;justify-content:center}.plant-list-card{top:64px;left:12px;width:min(286px,calc(100vw - 24px));max-height:calc(100dvh - 76px)}.plant-list-body{max-height:calc(100dvh - 120px)}.placement-toolbar{bottom:12px;grid-template-columns:1fr;gap:9px;padding:13px}.placement-actions{justify-content:stretch}.placement-actions button{flex:1}.edit-modal-actions{display:grid;grid-template-columns:1fr 1fr}}
