@import"https://fonts.googleapis.com/css2?family=Bungee:wght@400&family=Outfit:wght@400;600;800&family=Patrick+Hand:wght@400&family=Space+Grotesk:wght@500;700&display=swap";:root{font-family:Outfit,Trebuchet MS,sans-serif;line-height:1.45;color:#102027;background:radial-gradient(ellipse at 8% 0%,rgba(100,210,130,.62) 0%,transparent 42%),radial-gradient(ellipse at 94% 8%,rgba(60,195,160,.52) 0%,transparent 38%),radial-gradient(ellipse at 55% 100%,rgba(155,235,145,.44) 0%,transparent 46%),radial-gradient(ellipse at 0% 78%,rgba(120,215,170,.34) 0%,transparent 36%),linear-gradient(158deg,#daf0d2,#cae8dc 42%,#c2e9d8 72%,#d2ecc8);font-size:18px}*{box-sizing:border-box}body{margin:0;overflow-x:hidden;-webkit-text-size-adjust:100%;text-size-adjust:100%}#root{min-height:100vh}.app{max-width:1360px;margin:0 auto;padding:.7rem .8rem 1rem}h1{margin:0 0 .45rem;font-family:Space Grotesk,Outfit,sans-serif;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:#0f2f45;font-size:1.35rem}.status{background:#d9f0e3;border:1px solid #9bd3b4;padding:.55rem .8rem;border-radius:8px;font-size:.94rem}.error{background:#fde7e9;border:1px solid #f0a3ab;border-radius:8px;color:#7d1622;padding:.75rem 1rem}.info{background:#e8f5ff;border:1px solid #9dccf0;border-radius:8px;color:#1b4f70;padding:.65rem .9rem}.btn{border:1px solid #9ab3be;background:#fff;color:#102027;border-radius:10px;padding:.52rem .8rem;min-height:44px;font-size:.92rem;font-weight:600;cursor:pointer;touch-action:manipulation}.btn:disabled{cursor:not-allowed;opacity:.6}.btn-status{position:static;z-index:auto;border:1px solid #377fc2;background:linear-gradient(135deg,#4b95dc,#3378bd);color:#fff;font-weight:700;font-size:1rem;padding:.82rem 1.15rem;opacity:1;border-radius:12px;letter-spacing:.02em}.btn-status:hover:not(:disabled){filter:brightness(1.04);opacity:1}.device-list{list-style:none;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.62rem}.device-card{position:relative;background:#ffffffb8;border:1px solid #9bbbd4;border-radius:12px;padding:.62rem;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.device-card-online{border-color:#4ea79c;box-shadow:0 0 0 1px #4ea79c40,0 10px 20px #346e841f}.device-card-offline{background:#eceff1;border-color:#d6dde1}.device-state-on{border-color:#14924f!important;background:#e8fff1!important;box-shadow:0 0 0 2px #14924f66,0 12px 24px #14924f33!important}.device-state-off{border-color:#8d5f5f!important;background:#fff0f0!important;box-shadow:0 0 0 2px #8d5f5f59,0 10px 18px #8d5f5f29!important}.device-state-unknown{border-style:dashed}.section-toggle{margin:.55rem 0}.section-toggle>summary{cursor:pointer;font-weight:600;color:#30454d}.device-header{display:flex;justify-content:space-between;gap:.7rem;align-items:center}.device-header-toggle{cursor:pointer}.device-title{display:inline-flex;align-items:center;gap:.55rem;font-size:.96rem;font-weight:700}.device-name-btn{border:none;background:transparent;padding:0;cursor:pointer;text-align:left}.status-open-btn{border:none;background:transparent;padding:.1rem .2rem;border-radius:6px;cursor:pointer}.status-open-btn:hover{background:#fff6}.sensor-readings{display:flex;gap:.8rem;margin-top:.4rem;padding-top:.35rem;border-top:1px solid rgba(155,187,212,.35);font-size:.88rem;font-weight:600;color:#2a4a5e}.outlet-strip{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem;padding-top:.4rem;border-top:1px solid rgba(155,187,212,.35)}.outlet-btn{display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.3rem .6rem;border-radius:8px;border:1.5px solid rgba(100,160,200,.4);background:#ffffff73;font-size:.72rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s;color:#2a4a5e}.outlet-btn:disabled{opacity:.5;cursor:not-allowed}.outlet-btn.outlet-on{background:#8cdc9680;border-color:#3caa5080;color:#1a4a20}.outlet-btn.outlet-off{background:#dcc8c866;border-color:#b4787866;color:#5a2a2a}.outlet-state{font-size:.65rem;font-weight:700;letter-spacing:.04em;opacity:.85}.outlet-popup-grid{display:flex;flex-direction:column;gap:.5rem;margin:.5rem 0}.outlet-popup-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.35rem .7rem;background:#ffffff59;border-radius:8px;border:1px solid rgba(155,187,212,.3)}.outlet-popup-label{font-size:.9rem;font-weight:600;color:#2a4a5e;flex:1}.app-nav{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;row-gap:.4rem;padding:calc(.6rem + env(safe-area-inset-top)) calc(1rem + env(safe-area-inset-right)) .6rem calc(1rem + env(safe-area-inset-left));background:#ffffff8c;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid rgba(160,200,220,.35);position:sticky;top:0;z-index:100}.nav-btn{padding:.4rem 1.1rem;min-height:44px;border-radius:20px;border:1.5px solid rgba(100,160,200,.35);background:transparent;font-size:.9rem;font-weight:600;color:#3a6070;cursor:pointer;touch-action:manipulation;transition:background .15s,color .15s,border-color .15s}.nav-btn:hover{background:#64b4dc26}.nav-btn-active{background:#3c8cb42e;border-color:#3c8cb480;color:#1a4a60}.nav-viewer-badge{margin-left:auto;padding:.25rem .65rem;border-radius:999px;border:1px solid rgba(120,140,160,.35);background:#e6f0faa6;color:#3d5669;font-size:.78rem;font-weight:700;white-space:nowrap}.garden-page{max-width:1360px;margin:0 auto;padding:0 0 2rem;min-height:100dvh;background:radial-gradient(circle at 10% 0%,#d4f5d0 0%,transparent 40%),radial-gradient(circle at 90% 10%,#d0f0e0 0%,transparent 35%),linear-gradient(160deg,#c8eec8,#b8e8d8,#c0eaea)}.garden-header{position:relative;overflow:hidden;border-radius:20px;margin-bottom:1.5rem;min-height:160px;background-image:url(/garden-header.jpg);background-size:cover;background-position:center 40%;box-shadow:0 12px 40px #14461e38,0 2px 8px #14461e1f}.garden-header:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(105deg,rgba(6,28,12,.82) 0%,rgba(8,38,18,.62) 42%,rgba(4,20,10,.22) 75%,transparent 100%);border-radius:inherit}.garden-header-inner{position:relative;z-index:1;display:flex;align-items:center;gap:1.1rem;max-width:1200px;margin:0 auto;padding:2.2rem 1.8rem 1.8rem}.garden-hero-icon{font-size:clamp(2.4rem,6vw,4rem);line-height:1;filter:drop-shadow(0 4px 16px rgba(0,0,0,.55));flex-shrink:0}.garden-title{margin:0 0 .15rem;font-family:Space Grotesk,Outfit,sans-serif;font-size:clamp(1.25rem,4.5vw,2.1rem);font-weight:800;color:#fff;letter-spacing:-.03em;text-shadow:0 2px 12px rgba(0,0,0,.6);line-height:1.15}.garden-subtitle{margin:0;font-size:clamp(.75rem,2.5vw,.95rem);color:#d2f0d7e0;font-weight:500;text-shadow:0 1px 4px rgba(0,0,0,.5)}@media (max-width: 480px){.garden-header{border-radius:16px;min-height:120px;margin-bottom:1rem}.garden-header:after{background:linear-gradient(to bottom,#05180ac7,#05180a80 60%,#05180a33)}.garden-header-inner{padding:1.35rem 1.1rem 1.1rem;gap:.75rem}}.garden-page{position:relative}.garden-page:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:url(/potted-herbs.jpg) center / cover no-repeat fixed;opacity:.055;z-index:-1;pointer-events:none}.garden-layout{display:flex;flex-direction:column;gap:1.2rem;padding:0 1.2rem 2rem}.garden-mid-row,.garden-bottom-row{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;align-items:start}.garden-mid-left{display:flex;flex-direction:column;gap:1.2rem}@media (max-width: 700px){.app{padding:.5rem .5rem 1rem}.garden-layout{padding:0 .5rem;gap:.85rem}.garden-bottom-row,.garden-mid-row{grid-template-columns:1fr}}.garden-card{background:#fffc;border-radius:22px;padding:1rem 1.3rem 1.1rem;border:1px solid rgba(255,255,255,.94);box-shadow:0 6px 28px #1258261a,0 2px 6px #1258260d,inset 0 1px #fff;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);position:relative}.garden-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#2ecc71,#26a69a,#1a8fd1);border-radius:22px 22px 0 0;pointer-events:none}.garden-card-cover{height:105px;margin:-1rem -1.3rem 1rem;border-radius:20px 20px 0 0;background-size:cover;background-position:center;position:relative;flex-shrink:0}.garden-card-cover:after{content:"";position:absolute;bottom:0;left:0;right:0;height:55px;background:linear-gradient(to bottom,transparent 0%,rgba(255,255,255,.82) 100%);border-radius:0 0 4px 4px}.garden-env-cover{background-image:url(/herbs-garden.jpg);background-position:center 38%}.garden-env-hero{position:relative;margin:-1rem -1.3rem .7rem;border-radius:20px 20px 0 0;overflow:hidden;min-height:205px;display:flex;flex-direction:column;justify-content:flex-end}.garden-env-cover-bg{position:absolute;top:0;right:0;bottom:0;left:0;background-image:url(/herbs-garden.jpg);background-size:cover;background-position:center 38%}.garden-env-hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,#00140014,#001e0a8c 55%,#001408c7);pointer-events:none}.garden-env-hero-content{position:relative;z-index:1;padding:.8rem 1.3rem .9rem}.garden-env-hero .garden-card-head:after{display:none}.garden-env-hero .garden-section-title{color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.5)}.garden-env-hero .garden-section-icon{filter:drop-shadow(0 1px 3px rgba(0,0,0,.5))}.garden-env-hero .garden-online-badge.online{background:#50dc6e2e;border-color:#50dc6e66;color:#a0ffb8}.garden-env-hero .garden-online-badge.offline{background:#ff505026;border-color:#ff50504d;color:#faa}.garden-env-hero .garden-env-readings{display:grid;grid-template-columns:repeat(4,1fr);gap:.45rem;margin:.6rem 0 0}.garden-env-hero .garden-env-stat{background:#ffffff21;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid rgba(255,255,255,.28);border-top:2px solid rgba(255,255,255,.22);box-shadow:0 4px 16px #0000002e,inset 0 1px #ffffff40;border-radius:14px;padding:.65rem .4rem .55rem;display:flex;flex-direction:column;align-items:center;gap:.12rem;cursor:default;transition:transform .18s,box-shadow .18s}.garden-env-hero .garden-env-stat:hover{transform:translateY(-2px);box-shadow:0 6px 22px #00000038,inset 0 1px #ffffff47}.env-stat-temp{border-top-color:#ff783cbf!important}.env-stat-hum{border-top-color:#32beffbf!important}.env-stat-soil{border-top-color:#5ad264b8!important}.env-stat-bat{border-top-color:#c882ffa6!important}.env-stat-icon{font-size:1.2rem;line-height:1;filter:drop-shadow(0 1px 4px rgba(0,0,0,.3))}.garden-env-hero .garden-env-value{color:#fff;font-size:1.3rem;font-weight:800;line-height:1;letter-spacing:-.02em;text-shadow:0 1px 8px rgba(0,0,0,.5)}.garden-env-value--muted{opacity:.45}.garden-env-hero .garden-env-label{color:#ffffffad;font-size:.58rem;font-weight:500;text-transform:uppercase;letter-spacing:.06em;margin-top:.05rem}@media (max-width: 700px){.garden-env-hero .garden-env-readings{grid-template-columns:repeat(2,1fr)}.garden-env-hero{min-height:160px}}.garden-controls-cover{background-image:url(/terracotta-pots.jpg);background-position:center 42%}.garden-camera-cover{background-image:url(/terracotta-pots.jpg);background-position:center 60%}.garden-card-head{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem;padding-bottom:.9rem;border-bottom:1px solid rgba(60,180,100,.13);position:relative}.garden-card-head:after{content:"";position:absolute;bottom:-1px;left:0;width:50px;height:2.5px;background:linear-gradient(90deg,#3dba72,#26a69a);border-radius:3px}.garden-section-icon{font-size:1.15rem;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#46c8733d,#26a69a2e);border-radius:13px;border:1px solid rgba(70,200,115,.28);flex-shrink:0}.garden-section-title{margin:0;font-size:1.05rem;font-weight:800;color:#0c2416;flex:1;letter-spacing:-.02em;font-family:Space Grotesk,Outfit,sans-serif}.garden-online-badge{font-size:.72rem;font-weight:700;padding:.15rem .55rem;border-radius:10px;letter-spacing:.03em}.garden-online-badge.online{background:#50c86440;color:#1a5a20;border:1px solid rgba(80,200,100,.4)}.garden-online-badge.offline{background:#c8505026;color:#5a1a1a;border:1px solid rgba(200,80,80,.3)}.garden-env-readings{display:flex;gap:1rem;margin-bottom:1rem}.garden-env-stat{flex:1;display:flex;flex-direction:column;align-items:center;gap:.28rem;background:#ffffffa6;border-radius:16px;padding:.9rem .5rem;border:1px solid rgba(255,255,255,.85);box-shadow:0 2px 8px #145a2812,inset 0 1px #ffffffe6;transition:transform .15s}.garden-env-stat:hover{transform:translateY(-1px)}.garden-env-emoji{font-size:1.6rem}.garden-env-value{font-size:1.35rem;font-weight:800;color:#1a3a20;letter-spacing:-.5px}.garden-env-label{font-size:.72rem;font-weight:600;color:#4a7a50;text-transform:uppercase;letter-spacing:.06em}.garden-soil-inline{display:flex;flex-wrap:wrap;justify-content:center;gap:.22rem;margin-top:.2rem;max-width:100%}.garden-soil-chip{font-size:.6rem;font-weight:500;color:#3f6a4a;background:#ffffffb8;border:1px solid rgba(100,170,120,.22);border-radius:999px;padding:.07rem .32rem;white-space:nowrap;line-height:1.1}.garden-soil-chip strong{font-weight:700;color:#245338}.garden-stats-card{overflow:hidden}.garden-stats-bg{position:absolute;top:0;right:0;bottom:0;left:0;background-image:url(/terracotta-pots.jpg);background-size:cover;background-position:center 42%;opacity:.09;border-radius:inherit;pointer-events:none;z-index:0}.garden-stats-card .garden-card-head,.garden-stats-card .garden-chart-wrap,.garden-stats-card .muted{position:relative;z-index:1}.garden-ai-card{overflow:hidden}.garden-ai-bg{position:absolute;top:0;right:0;bottom:0;left:0;background-image:url(/terracotta-pots.jpg);background-size:cover;background-position:center 55%;opacity:.07;border-radius:inherit;pointer-events:none;z-index:0}.garden-ai-card .garden-card-head,.garden-ai-card .garden-ai-coming-soon,.garden-ai-card .pipeline-history-wrap{position:relative;z-index:1}.garden-camera-card .garden-camera-frame{max-height:320px}.garden-chart-wrap{background:#ffffffa6;border-radius:14px;padding:.3rem .7rem .4rem;border:1px solid rgba(255,255,255,.88);box-shadow:0 2px 8px #145a280f}.goc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.5rem;margin-top:.6rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:spin 1.4s linear infinite;display:inline-block}.goc{display:flex;flex-direction:row;align-items:center;gap:.65rem;padding:.6rem .75rem .6rem .7rem;border-radius:14px;border:1.5px solid transparent;position:relative;transition:background .22s,border-color .22s,box-shadow .22s}.goc-on{background:var(--accent-bg, rgba(240,224,74,.15));border-color:color-mix(in srgb,var(--accent, #f0e04a) 55%,transparent);box-shadow:0 0 18px color-mix(in srgb,var(--accent, #f0e04a) 20%,transparent),0 2px 8px #0000000f}.goc-off{background:#ffffff80;border-color:#96b99b33;box-shadow:0 1px 5px #14501e0a}.goc-missing{opacity:.55}.goc-icon{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.45rem;flex-shrink:0;transition:background .22s,border-color .22s,filter .22s}.goc-on .goc-icon{background:color-mix(in srgb,var(--accent, #f0e04a) 22%,rgba(255,255,255,.5));border:1.5px solid color-mix(in srgb,var(--accent, #f0e04a) 45%,transparent)}.goc-off .goc-icon{background:#c8dccd4d;border:1.5px solid rgba(180,200,185,.28);filter:grayscale(.45) opacity(.72)}.goc-icon-missing{filter:grayscale(1) opacity(.4)!important}.goc-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}.goc-name{font-size:.81rem;font-weight:700;color:#1a3220;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.goc-meta{display:flex;align-items:center;gap:.28rem;flex-wrap:wrap}.goc-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.goc-dot-on{background:var(--accent, #3dba72);box-shadow:0 0 5px color-mix(in srgb,var(--accent, #3dba72) 60%,transparent)}.goc-dot-off{background:#c8d4c8}.goc-state{font-size:.67rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;line-height:1}.goc-on .goc-state{color:color-mix(in srgb,var(--accent, #3dba72) 75%,#0a2010)}.goc-off .goc-state{color:#9aaa9a}.goc-inching{font-size:.6rem;font-weight:700;color:#a06000;background:#ff960021;border:1px solid rgba(255,150,0,.28);border-radius:6px;padding:1px 5px;letter-spacing:.03em;line-height:1.4}.goc-setup-list{margin-top:.24rem;display:flex;flex-direction:column;gap:.18rem}.goc-setup-chip{font-size:.6rem;line-height:1.25;color:#2f4a39;background:#ffffffc7;border:1px solid rgba(100,180,120,.23);border-radius:.42rem;padding:.12rem .35rem;width:100%;white-space:normal;overflow:visible;text-overflow:initial;word-break:break-word}.goc-setup-chip-schedule{background:#4fc3f71c;border-color:#4fc3f745}.goc-toggle{flex-shrink:0;width:44px;height:26px;border-radius:13px;border:none;cursor:pointer;position:relative;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:background .26s,box-shadow .26s}.goc-toggle:disabled{opacity:.36;cursor:not-allowed}.goc-toggle:active:not(:disabled){transform:scale(.94)}.goc-toggle-on{background:var(--accent, #3dba72);box-shadow:0 0 12px color-mix(in srgb,var(--accent, #3dba72) 55%,transparent)}.goc-toggle-off{background:#00000021;box-shadow:inset 0 1px 3px #0000001f}.goc-toggle-busy{background:#78a07859!important;box-shadow:none!important}.goc-knob{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 5px #00000038,0 0 0 .5px #0000000f;transition:transform .26s cubic-bezier(.34,1.56,.64,1);display:block;pointer-events:none}.goc-toggle-on .goc-knob{transform:translate(18px)}.garden-ai-badge{font-size:.65rem;font-weight:700;padding:.15rem .5rem;border-radius:8px;background:#7850dc26;color:#4a208a;border:1px solid rgba(120,80,220,.3);letter-spacing:.04em}.garden-ai-tips{display:flex;flex-direction:column;gap:.6rem;margin-bottom:1rem}.garden-ai-tip{display:flex;align-items:center;gap:.7rem;padding:.6rem .8rem;background:#ffffff80;border-radius:12px;border:1px solid rgba(120,200,140,.2)}.garden-ai-tip-icon{font-size:1.2rem;flex-shrink:0}.garden-ai-tip-text{flex:1;font-size:.88rem;font-weight:500;color:#1a3a20}.garden-ai-action{padding:.25rem .7rem;border-radius:12px;border:1.5px solid rgba(80,180,100,.4);background:#50b46426;color:#1a4a20;font-size:.78rem;font-weight:700;cursor:pointer}.garden-ai-action:disabled{opacity:.4;cursor:not-allowed}.garden-ai-coming-soon{display:flex;align-items:flex-start;gap:.8rem;padding:.8rem 1rem;background:#7850dc12;border-radius:14px;border:1px dashed rgba(120,80,220,.25);font-size:.85rem}.garden-ai-coming-soon>span{font-size:1.4rem;flex-shrink:0}.garden-ai-coming-soon strong{display:block;color:#3a108a;margin-bottom:.2rem;font-size:.88rem}.garden-ai-coming-soon p{margin:0;color:#5a409a;font-size:.8rem;line-height:1.4}.garden-sub-divider{display:flex;align-items:center;gap:.65rem;margin:1.4rem 0 .9rem;padding-top:1.1rem;border-top:1px solid rgba(60,180,100,.14)}.garden-sub-icon{font-size:1rem;width:2.1rem;height:2.1rem;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#46c87333,#26a69a24);border-radius:10px;border:1px solid rgba(70,200,115,.22);flex-shrink:0}.garden-sub-title{font-size:.88rem;font-weight:800;color:#0c2416;flex:1;letter-spacing:-.01em;font-family:Space Grotesk,Outfit,sans-serif;text-transform:uppercase;letter-spacing:.04em}.device-runtime-badge{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.08rem}.drt-pill{font-size:.69rem;font-weight:700;padding:.13rem .55rem;border-radius:12px;letter-spacing:.01em;white-space:nowrap}.drt-today{background:#32b45f33;color:#174a22;border:1px solid rgba(50,180,95,.32)}.drt-timer{background:#4682dc2e;color:#162255;border:1px solid rgba(70,130,220,.28)}.garden-camera-controls{display:flex;gap:.22rem;flex-wrap:nowrap;margin-left:auto;flex-shrink:0}.garden-cam-btn{padding:.18rem .42rem;border-radius:7px;border:1px solid rgba(100,180,120,.35);background:#ffffff8c;font-size:.72rem;font-weight:600;color:#1a4a20;cursor:pointer;transition:background .15s;white-space:nowrap}.garden-cam-btn:hover{background:#50b46426}.garden-cam-btn.active{background:#50b46438;border-color:#50b4648c}.garden-camera-frame{border-radius:16px;overflow:hidden;border:2px solid rgba(80,180,100,.25);background:#0a2a10}.garden-camera-img{width:100%;max-height:420px;object-fit:cover;display:block}.garden-camera-paused{text-align:center;padding:3rem 1rem;color:#4a7a50;font-size:1.1rem;font-weight:600;background:#78c88c1a;border-radius:16px}.device-icon{width:1rem;height:1rem;border-radius:50%;border:1px solid #7f9fb0;background:#f4f9fc;display:inline-block;position:relative}.device-icon:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:.58rem;color:#305468;font-weight:700}.icon-light:after{content:"L"}.icon-plug:after{content:"P"}.icon-camera:after{content:"C"}.icon-door:after{content:"D"}.icon-climate:after{content:"T"}.icon-generic:after{content:"*"}.status-online{color:#1f8f3a;font-weight:600;font-size:.95rem}.status-offline{color:#6a7c84;font-weight:600;font-size:.95rem}.power-badge{margin-left:.4rem;padding:.2rem .5rem;border-radius:999px;font-size:.78rem;font-weight:700;letter-spacing:.02em;cursor:pointer;background-clip:padding-box;min-height:34px}.power-badge:disabled{cursor:not-allowed;opacity:.55}.power-on{color:#0f6b3c;background:#d2f7e3;border:1px solid #89dcb1}.power-off{color:#7a3434;background:#ffdede;border:1px solid #efaaaa}.actions{display:flex;gap:.45rem;margin:.42rem 0;flex-wrap:wrap}.control-list{display:grid;gap:.6rem}.control-row{border:1px solid #d9e5eb;border-radius:10px;padding:.75rem;background:#fbfdfe}.control-input-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.control-input-column{display:grid;gap:.45rem}.control-input-row input[type=range]{flex:1 1 180px}.control-input-row input[type=number],.control-input-row input[type=text],.control-input-row select,.control-input-column textarea{min-width:128px;min-height:48px;font-size:.98rem;border:1px solid #c1d4dd;border-radius:9px;padding:.5rem .6rem}.control-input-column textarea{width:100%;min-height:110px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;resize:vertical}.quick-actions{display:flex;gap:.4rem;flex-wrap:wrap}.btn-ghost{background:#f5fafc;border-color:#bfd5e1;min-height:38px;padding:.36rem .6rem}.btn-ghost-active{background:#d9edf9;border-color:#7bb4d4}.boolean-control{display:inline-flex;align-items:center;gap:.4rem;min-height:40px;padding:.3rem .45rem;border:1px solid #c5d8e1;border-radius:8px;background:#f5fafc}.boolean-control input{width:22px;height:22px}.color-chip{width:34px;height:34px;border-radius:999px;border:1px solid #9eb6c4;cursor:pointer}.color-chip:disabled{opacity:.55;cursor:not-allowed}.json-history-list{list-style:none;margin:.45rem 0 0;padding:0;display:grid;gap:.4rem}.json-history-item{border:1px solid #d3e1e8;border-radius:8px;padding:.45rem .55rem;background:#f8fcfe;display:flex;justify-content:space-between;gap:.5rem;align-items:center;flex-wrap:wrap}.json-history-time{color:#4b6672;font-size:.88rem}.json-history-actions{display:flex;gap:.35rem}.muted{color:#5b727b;margin:.15rem 0 .5rem}.kv-list{padding-left:1rem;margin:.4rem 0}code{background:#ecf3f6;padding:.1rem .3rem;border-radius:6px}pre{overflow:auto;background:#f4f8fa;border:1px solid #d7e2e8;border-radius:8px;padding:.75rem;font-size:.8rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#141b2273;display:flex;align-items:center;justify-content:center;padding:max(1rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(1rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left));z-index:999}.modal-card{width:min(980px,100%);max-height:calc(100dvh - max(2rem,env(safe-area-inset-top) + env(safe-area-inset-bottom)));overflow:auto;overscroll-behavior:contain;background:#fff;border:1px solid #c9d9e4;border-radius:16px;padding:1rem 1.1rem 1.2rem}@media (max-width: 1100px){.device-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 760px){.device-list{grid-template-columns:1fr}}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.modal-head h3{margin:0}.goc-name-row{display:flex;align-items:center;gap:.3rem;min-width:0}.garden-device-menu-btn{flex-shrink:0;width:32px;height:32px;border-radius:50%;border:1px solid rgba(80,140,80,.28);background:#ffffff8c;color:#3a7a50;font-size:.92rem;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:.6;transition:opacity .15s,background .15s;line-height:1;padding:0;-webkit-tap-highlight-color:transparent}.garden-device-menu-btn:hover,.garden-device-menu-btn:active{opacity:1;background:#6ecf7f4d}.garden-device-statusbar{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.4rem;justify-content:center}.status-pill{font-size:.62rem;font-weight:600;padding:.18rem .55rem;border-radius:20px;white-space:nowrap}.timer-pill{background:#ffb4002e;color:#8a6000}.sched-pill{background:#50a0c82e;color:#1a5070}.usage-pill{background:#50c8641f;color:#1a5a30}.dsm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#0a1e1473;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:max(1rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(1rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left));animation:dsm-fade-in .18s ease}@keyframes dsm-fade-in{0%{opacity:0}to{opacity:1}}.dsm-modal{background:linear-gradient(145deg,#f0faf3,#e8f4f0);border-radius:20px;box-shadow:0 24px 60px #00000040,0 4px 16px #0000001f;width:100%;max-width:480px;max-height:calc(100dvh - max(2rem,env(safe-area-inset-top) + env(safe-area-inset-bottom)));display:flex;flex-direction:column;overflow:hidden;animation:dsm-slide-up .22s cubic-bezier(.34,1.56,.64,1)}@keyframes dsm-slide-up{0%{transform:translateY(30px) scale(.97);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.dsm-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.2rem .75rem;border-bottom:1px solid rgba(80,160,100,.2);background:#fff9;flex-shrink:0}.dsm-header-title{font-size:1rem;font-weight:700;color:#0f3020}.dsm-close{width:2rem;height:2rem;border-radius:50%;border:none;background:#508c501f;color:#3a6040;font-size:.9rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.dsm-close:hover{background:#c8505026;color:#800}.dsm-body{overflow-y:auto;-webkit-overflow-scrolling:touch;flex:1;padding:.5rem 0 .75rem}.dsm-section{padding:.85rem 1.2rem;border-bottom:1px solid rgba(80,160,100,.12)}.dsm-section:last-child{border-bottom:none}.dsm-section-title{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#3a6a50;margin-bottom:.6rem}.dsm-section-title-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:.6rem}.dsm-hint{font-size:.75rem;color:#6a8a70;margin:0 0 .5rem}.dsm-empty{font-size:.8rem;color:#9aaa9a;margin:.25rem 0}.dsm-name-row{display:flex;gap:.5rem}.dsm-input{flex:1;padding:.5rem .75rem;border-radius:10px;border:1.5px solid rgba(80,160,100,.3);background:#fffc;font-size:.9rem;color:#0f3020;outline:none;transition:border-color .15s}.dsm-input:focus{border-color:#50b464b3}.dsm-input-time{flex:0 0 auto;width:7.5rem}.dsm-btn{padding:.45rem 1rem;border-radius:10px;border:none;font-size:.82rem;font-weight:600;cursor:pointer;transition:opacity .15s,background .15s;white-space:nowrap}.dsm-btn:disabled{opacity:.4;cursor:not-allowed}.dsm-btn-primary{background:linear-gradient(135deg,#4caf70,#2e9950);color:#fff}.dsm-btn-primary:hover:not(:disabled){opacity:.88}.dsm-btn-danger{background:#c83c3c26;color:#900}.dsm-btn-danger:hover:not(:disabled){background:#c83c3c40}.dsm-btn-ghost{background:#50a0641f;color:#2a6040}.dsm-btn-ghost:hover{background:#50a06438}.dsm-timer-action-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.dsm-timer-btns{display:flex;flex-wrap:wrap;gap:.4rem}.dsm-timer-preset{padding:.4rem .9rem;border-radius:20px;border:1.5px solid rgba(80,160,100,.35);background:#fff9;color:#2a6040;font-size:.82rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s}.dsm-timer-preset:hover:not(:disabled){background:#50b46433;border-color:#50b46499}.dsm-timer-preset:disabled{opacity:.4;cursor:not-allowed}.dsm-timer-custom{display:flex;align-items:center;gap:.4rem;margin-top:.5rem}.dsm-input-short{width:6rem}.dsm-timer-active{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}.dsm-timer-pill{background:linear-gradient(135deg,#ffc83240,#ffa00033);border:1.5px solid rgba(220,160,0,.4);color:#7a5000;padding:.4rem .9rem;border-radius:20px;font-size:.82rem;font-weight:700}.dsm-hint-text{font-size:.78rem;color:#6b7a6e;margin:0 0 .7rem;line-height:1.45}.dsm-error-msg{background:#e539351f;border:1px solid rgba(229,57,53,.35);color:#8b1a1a;border-radius:8px;padding:.4rem .65rem;font-size:.78rem;margin-bottom:.5rem}.dsm-inching-active{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}.dsm-inching-pill{background:linear-gradient(135deg,#ffb40038,#ff78002e);border:1.5px solid rgba(220,120,0,.4);color:#7a3800;padding:.4rem .9rem;border-radius:20px;font-size:.82rem;font-weight:700}.dsm-add-form{background:#ffffff8c;border-radius:12px;padding:.75rem;margin-bottom:.6rem;border:1px solid rgba(80,160,100,.2)}.dsm-day-chips{display:flex;gap:.3rem;flex-wrap:wrap;margin-bottom:.6rem}.dsm-day-chip{padding:.28rem .6rem;border-radius:20px;border:1.5px solid rgba(80,160,100,.3);background:#fff9;color:#4a7a50;font-size:.72rem;font-weight:600;cursor:pointer;transition:background .12s,border-color .12s}.dsm-day-chip.active{background:#50b4644d;border-color:#3c9650b3;color:#1a4a20}.dsm-form-row{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.dsm-form-row-stack{flex-direction:column;align-items:flex-start}.dsm-inline-check{display:inline-flex;align-items:center;gap:.45rem;font-size:.84rem;color:#355a44;margin-top:.5rem}.dsm-inline-check input[type=checkbox]{width:16px;height:16px}.dsm-action-toggle{display:flex;border-radius:8px;overflow:hidden;border:1.5px solid rgba(80,160,100,.3)}.dsm-action-btn{padding:.4rem .7rem;border:none;background:#fff9;font-size:.75rem;font-weight:700;cursor:pointer;color:#6a8a70}.dsm-action-btn.on{background:#50c8644d;color:#1a5020}.dsm-action-btn.off{background:#c8505033;color:#600}.dsm-schedule-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.4rem}.dsm-schedule-row{display:flex;align-items:center;gap:.5rem;padding:.5rem .65rem;background:#ffffff8c;border-radius:10px;border:1px solid rgba(80,160,100,.15)}.dsm-schedule-row.disabled{opacity:.5}.dsm-sched-days{flex:1;font-size:.75rem;color:#2a5030;font-weight:600}.dsm-sched-time{font-size:.78rem;font-weight:700;color:#0f3020;min-width:3.2rem}.dsm-sched-action{font-size:.65rem;font-weight:800;padding:.1rem .5rem;border-radius:10px;letter-spacing:.04em}.dsm-sched-action.on{background:#50c86440;color:#1a5020}.dsm-sched-action.off{background:#c850502e;color:#600}.dsm-toggle-btn{border:none;background:transparent;font-size:1.1rem;cursor:pointer;padding:0 .2rem;line-height:1}.dsm-toggle-btn.on{color:#3a9050}.dsm-toggle-btn.off{color:#aaa}.dsm-delete-btn{border:none;background:transparent;font-size:.85rem;cursor:pointer;opacity:.5;transition:opacity .12s;padding:0}.dsm-delete-btn:hover{opacity:1}.dsm-info-grid{display:grid;grid-template-columns:auto 1fr;gap:.3rem .7rem;align-items:center}.dsm-info-label{font-size:.72rem;font-weight:600;color:#7a9a80;white-space:nowrap}.dsm-info-value{font-size:.68rem;font-family:ui-monospace,SF Mono,Menlo,monospace;color:#2a5a3a;background:#3ca05014;border:1px solid rgba(60,160,80,.15);border-radius:5px;padding:.1rem .45rem;word-break:break-all}.dsm-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.6rem}.dsm-stat-block{display:flex;flex-direction:column;align-items:center;background:#ffffff8c;border-radius:12px;padding:.65rem .5rem;border:1px solid rgba(80,160,100,.15)}.dsm-stat-highlight{background:#50c87826;border-color:#50b46459}.dsm-stat-value{font-size:1.05rem;font-weight:800;color:#0f3020}.dsm-stat-label{font-size:.65rem;color:#6a8a70;margin-top:.15rem;text-align:center}.dsm-history{margin-top:.75rem}.dsm-history-toggle{font-size:.75rem;color:#3a6a50;cursor:pointer;font-weight:600}.dsm-event-list{list-style:none;padding:.4rem 0 0;margin:0;display:flex;flex-direction:column;gap:.25rem}.dsm-event{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:#4a6050}.dsm-event-dot{width:.5rem;height:.5rem;border-radius:50%;flex-shrink:0}.dsm-event-dot.on{background:#4caf70}.dsm-event-dot.off{background:#e57373}.dsm-event-action{font-weight:700;min-width:2rem}.dsm-event-time{color:#8aaa90}.login-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#1a2e20,#2a4a32 60%,#1a3828);display:flex;align-items:center;justify-content:center;z-index:9999}.login-card{background:#fffffff7;border-radius:1.25rem;box-shadow:0 8px 40px #00000059;padding:2.5rem 2rem 2rem;width:100%;max-width:360px;display:flex;flex-direction:column;align-items:center;gap:.5rem}.login-hero{font-size:3rem;line-height:1;margin-bottom:.25rem}.login-title{font-size:1.5rem;font-weight:800;color:#1a3020;margin:0}.login-subtitle{font-size:.8rem;color:#6a9070;margin:0 0 .75rem;text-align:center}.login-form{width:100%;display:flex;flex-direction:column;gap:.75rem}.login-field{display:flex;flex-direction:column;gap:.3rem}.login-label{font-size:.75rem;font-weight:600;color:#4a6050}.login-input{border:1px solid rgba(100,180,120,.4);border-radius:.55rem;padding:.55rem .75rem;font-size:.9rem;color:#1a3020;background:#f8fdf8;outline:none;transition:border-color .15s}.login-input:focus{border-color:#4caf70;box-shadow:0 0 0 2px #4caf702e}.login-input-wrap{position:relative;display:flex;align-items:center}.login-input-wrap .login-input{flex:1;padding-right:2.4rem}.login-eye-btn{position:absolute;right:.5rem;background:none;border:none;cursor:pointer;font-size:1.1rem;line-height:1;padding:.15rem;opacity:.6;transition:opacity .15s;-webkit-tap-highlight-color:transparent}.login-eye-btn:hover{opacity:1}.login-error{font-size:.78rem;color:#c0392b;background:#c0392b14;border-radius:.4rem;padding:.4rem .6rem;margin:0}.login-btn{background:#4caf70;color:#fff;border:none;border-radius:.6rem;padding:.6rem 1rem;font-size:.9rem;font-weight:700;cursor:pointer;margin-top:.25rem;transition:background .15s}.login-btn:hover:not(:disabled){background:#3d9960}.login-btn:disabled{opacity:.6;cursor:not-allowed}.nav-btn-logout{margin-left:auto;background:#c850501f;color:#8a3030;border:1px solid rgba(200,80,80,.25)}.nav-btn-logout:hover{background:#c8505038}@media (max-width: 900px){.app-nav{gap:.4rem;padding-bottom:.5rem}.nav-btn{flex:1 1 auto;min-width:132px}.nav-viewer-badge{order:10;margin-left:0}.nav-btn-logout{margin-left:0}}@media (hover: none) and (pointer: coarse){.garden-env-hero .garden-env-stat:hover,.garden-env-stat:hover,.tray-cell:hover{transform:none;box-shadow:none}}@media (max-width: 1024px),(hover: none) and (pointer: coarse){.garden-page:before{background-attachment:scroll;opacity:.04}}.env-usage-section{border-top:1px solid rgba(100,180,120,.18);margin-top:.75rem;padding-top:.6rem;display:flex;flex-direction:column;gap:.25rem}.env-usage-title{font-size:.7rem;font-weight:700;color:#5a8a65;text-transform:uppercase;letter-spacing:.04em;margin-bottom:.15rem}.env-usage-row{display:flex;align-items:center;gap:.4rem;font-size:.75rem;color:#2e4a36;padding:.15rem 0}.env-usage-emoji{font-size:.9rem;width:1.4rem;text-align:center;flex-shrink:0}.env-usage-name{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.env-usage-dot{width:.45rem;height:.45rem;border-radius:50%;flex-shrink:0}.env-usage-dot.on{background:#4caf70}.env-usage-dot.off{background:#ccc}.env-usage-timer{color:#3a6a50;font-size:.7rem;font-weight:600;white-space:nowrap}.env-usage-stat{color:#7aaa80;font-size:.7rem;white-space:nowrap}.env-timer-row{display:flex;flex-direction:column;gap:.15rem;padding:.22rem 0;font-size:.75rem;color:#2e4a36;border-bottom:1px solid rgba(80,160,100,.1)}.env-timer-row:last-child{border-bottom:none}.env-tr-top{display:flex;align-items:center;gap:.4rem}.env-tr-schedules{display:flex;flex-wrap:wrap;gap:.2rem;padding-left:1.8rem}.env-tr-emoji{font-size:.9rem;width:1.4rem;text-align:center;flex-shrink:0}.env-tr-name{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.env-tr-pills{display:flex;gap:.25rem;flex-wrap:wrap;justify-content:flex-end}.env-tr-dash{color:#bbb;font-size:.72rem}.env-tr-sched-off{opacity:.45;text-decoration:line-through}.env-tr-usage{background:#f0b41e21;border-color:#dca01459;color:#7a5a10}.env-tr-pill{font-size:.62rem;font-weight:600;padding:.15rem .45rem;border-radius:20px;white-space:nowrap;border:1px solid transparent}.env-tr-timer{background:#ffb4002e;color:#8a6000;border-color:#ffb4004d}.env-tr-sched{background:#50a0c824;color:#1a5070;border-color:#50a0c840}.garden-soil-placeholder{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:.5rem 0 .25rem;flex:1}.garden-soil-icon{font-size:2.5rem;opacity:.45}.garden-soil-values{display:flex;gap:1.25rem;justify-content:center;flex-wrap:wrap}.garden-soil-hint{font-size:.72rem;color:#8aaa90;text-align:center;font-style:italic;margin:0}.garden-pipeline-settings-btn{margin-left:auto;background:#64b47826;border:1px solid rgba(100,180,120,.4);border-radius:.5rem;color:#3a6a50;font-size:.75rem;font-weight:600;padding:.2rem .65rem;cursor:pointer;transition:background .15s}.garden-pipeline-settings-btn:hover{background:#64b47847}.pipeline-history-wrap{overflow-x:auto}.pipeline-history-table{width:100%;border-collapse:collapse;font-size:.78rem}.pipeline-history-table th{text-align:left;padding:.35rem .5rem;color:#5a8a65;border-bottom:1px solid rgba(100,180,120,.25);font-weight:600;white-space:nowrap}.pipeline-history-table td{padding:.4rem .5rem;border-bottom:1px solid rgba(100,180,120,.12);vertical-align:middle;color:#2e4a36}.pipeline-row-error td{background:#ff64640f}.pipeline-col-date{white-space:nowrap;color:#5a8a65;font-size:.72rem}.pipeline-col-status{width:4.5rem}.pipeline-col-reco{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pipeline-status-ok{color:#4caf70;font-weight:700}.pipeline-status-err{color:#e57373;font-weight:700}.pipeline-reco-text{color:#2e4a36}.pipeline-detail-btn{background:none;border:1px solid rgba(100,180,120,.4);border-radius:.35rem;color:#3a6a50;font-size:.7rem;padding:.15rem .5rem;cursor:pointer;white-space:nowrap}.pipeline-detail-btn:hover{background:#64b47826}.pipeline-col-actions{display:flex;gap:.35rem;align-items:center}.pipeline-delete-btn{background:none;border:1px solid rgba(200,80,80,.35);border-radius:.35rem;color:#a04040;font-size:.75rem;padding:.15rem .4rem;cursor:pointer;line-height:1}.pipeline-delete-btn:hover{background:#c850501f}.pipeline-expand-btn{display:block;width:100%;margin-top:.4rem;background:#50a0c812;border:1px dashed rgba(80,160,200,.4);border-radius:.5rem;color:#2a6080;font-size:.75rem;font-weight:600;padding:.35rem .75rem;cursor:pointer;text-align:center;transition:background .15s}.pipeline-expand-btn:hover{background:#50a0c824}.pipeline-refresh-btn{margin-top:.6rem;background:none;border:1px solid rgba(100,180,120,.35);border-radius:.4rem;color:#5a8a65;font-size:.72rem;padding:.25rem .75rem;cursor:pointer}.pipeline-refresh-btn:hover{background:#64b4781f}.pipeline-toggle-row{display:flex;align-items:center;justify-content:space-between;margin:.25rem 0 .1rem}.pipeline-toggle-label{font-size:.85rem;font-weight:600;color:#2e4a36}.pipeline-onoff-btn{padding:.25rem 1rem;border-radius:1rem;font-size:.8rem;font-weight:700;border:none;cursor:pointer;transition:background .15s}.pipeline-onoff-btn.on{background:#4caf70;color:#fff}.pipeline-onoff-btn.off{background:#64b4782e;color:#5a8a65;border:1px solid rgba(100,180,120,.4)}.pipeline-freq-chips{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.25rem}.dsm-timer-preset.active{background:#4caf70;color:#fff;border-color:#4caf70}.pipeline-ia-textarea{resize:vertical;min-height:5rem;width:100%;box-sizing:border-box;font-family:inherit;font-size:.82rem}.pipeline-actions-row{display:flex;gap:.5rem;flex-wrap:wrap}.dsm-btn-success{background:#4caf70;color:#fff;border-color:#4caf70}.dsm-btn-success:hover:not(:disabled){background:#3d9960}.pipeline-run-msg{padding:.4rem .75rem;border-radius:.4rem;font-size:.8rem;margin-bottom:.5rem}.pipeline-run-msg.ok{background:#4caf7026;color:#2e6a40}.pipeline-run-msg.err{background:#e5737326;color:#7a2020}.pipeline-ai-provider-tabs{display:flex;gap:.5rem;margin-bottom:.85rem}.pipeline-provider-tab{flex:1;padding:.45rem .75rem;border-radius:10px;border:1px solid rgba(100,180,120,.35);background:#64b47814;color:#3a6a48;font-size:.82rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s}.pipeline-provider-tab.active{background:#2ead6838;border-color:#2ead688c;color:#1a4f30}.pipeline-provider-fields{display:flex;flex-direction:column;gap:.3rem}.pipeline-field-label{font-size:.78rem;font-weight:600;color:#4a6a55;display:flex;align-items:center;gap:.4rem}.pipeline-key-badge{font-size:.72rem;font-weight:500;color:#2e7a42}.history-detail-modal{max-width:640px}.history-detail-modal-wide{max-width:1100px;width:96vw}.history-snapshot-img{width:100%;border-radius:.5rem;max-height:280px;object-fit:cover}.history-ia-text{font-size:.82rem;color:#2e4a36;margin:0;white-space:pre-wrap}.history-devices-list{display:flex;flex-direction:column;gap:.3rem;max-height:160px;overflow-y:auto}.history-device-row{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:#3a5040}.history-device-dot{width:.45rem;height:.45rem;border-radius:50%;flex-shrink:0}.history-device-dot.on{background:#4caf70}.history-device-dot.off{background:#9e9e9e}.history-device-name{font-weight:600}.history-device-type{color:#8aaa90;font-size:.7rem}.history-json-pre{background:#0000000a;border:1px solid rgba(100,180,120,.2);border-radius:.4rem;padding:.6rem;font-size:.65rem;overflow-x:auto;max-height:260px;white-space:pre;margin:.4rem 0 0;color:#2e4a36}.history-controls-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.6rem}.history-control-title-row{display:flex;align-items:center;justify-content:space-between;gap:.45rem;margin-bottom:.38rem}.history-control-card{border:1px solid rgba(100,180,120,.25);border-radius:.55rem;background:#ffffffb3;padding:.55rem}.history-control-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.25rem}.history-sem-tray-list{display:flex;flex-direction:column;gap:.75rem}.history-plant-rec-list{margin-top:.45rem;display:flex;flex-direction:column;gap:.28rem;max-height:180px;overflow-y:auto}.history-plant-rec-row{font-size:.74rem;color:#37523f;background:#64b47814;border:1px solid rgba(100,180,120,.18);border-radius:.4rem;padding:.25rem .45rem}.history-new-trays{margin-top:.65rem}.pipeline-history-pagination{margin-top:.45rem;display:flex;align-items:center;justify-content:center;gap:.45rem}.garden-ai-card-actions{display:flex;align-items:center;gap:.5rem;margin-left:auto}.garden-ask-ai-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .8rem;border-radius:1.2rem;border:1.5px solid rgba(130,90,210,.45);background:#8c5adc1a;color:#5a3a9a;font-size:.78rem;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s}.garden-ask-ai-btn:hover{background:#8c5adc33;border-color:#825ad2b3}.ai-modal{max-width:760px;width:96vw}.ai-snapshot-details{border:1px solid rgba(100,180,120,.25);border-radius:.5rem;overflow:hidden}.ai-snapshot-summary{display:flex;align-items:center;justify-content:space-between;padding:.4rem .6rem;cursor:pointer;list-style:none;background:#64b4780f;font-size:.82rem;font-weight:600;color:#2e4a36;-webkit-user-select:none;user-select:none}.ai-snapshot-summary::-webkit-details-marker{display:none}.ai-snapshot-summary::marker{display:none}.ai-snapshot-badge{font-size:.68rem;font-weight:600;background:#64b4782e;border:1px solid rgba(100,180,120,.3);border-radius:.8rem;padding:.1rem .5rem;color:#4a7a55}.ai-json-pre{margin:0;padding:.7rem .8rem;font-size:.64rem;line-height:1.45;overflow:auto;max-height:280px;white-space:pre;background:#00000008;color:#2e4a36;border-top:1px solid rgba(100,180,120,.2)}.ai-context-textarea{width:100%;border:1.5px solid rgba(100,180,120,.4);border-radius:.5rem;padding:.6rem .75rem;font-size:.84rem;font-family:inherit;background:#ffffffb3;color:#102027;resize:vertical;line-height:1.45;transition:border-color .15s;display:block;margin-bottom:.6rem}.ai-context-textarea:focus{outline:none;border-color:#825ad28c;background:#fff}.ai-context-textarea:disabled{opacity:.6}.ai-send-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.4rem;border-radius:1.5rem;border:none;background:linear-gradient(135deg,#7c4dca,#5a3a9a);color:#fff;font-size:.9rem;font-weight:700;cursor:pointer;transition:opacity .15s,transform .1s}.ai-send-btn:hover:not(:disabled){opacity:.88;transform:translateY(-1px)}.ai-send-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.ai-send-btn.ai-send-loading{background:#825ad28c}.ai-spinner{display:inline-block;width:.85rem;height:.85rem;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:ai-spin .7s linear infinite}@keyframes ai-spin{to{transform:rotate(360deg)}}.ai-hint{display:block;margin-top:.35rem;font-size:.68rem;color:#8aaa90}.ai-error-box{background:#f0505014;border:1px solid rgba(240,80,80,.35);border-radius:.5rem;padding:.65rem .9rem;color:#9b2020;font-size:.82rem}.ai-response-box{background:#825ad20f;border:1.5px solid rgba(130,90,210,.25);border-radius:.6rem;padding:.9rem 1rem;font-size:.86rem;line-height:1.6;color:#2a1f4a;white-space:pre-wrap;word-break:break-word}.ai-prompt-toggle{background:none;border:none;padding:.2rem 0;font-size:.75rem;color:#8aaa90;cursor:pointer;text-decoration:underline dotted;margin-bottom:.4rem}.ai-prompt-toggle:hover{color:#4a7a55}.ai-prompt-pre{margin:0;padding:.6rem .75rem;font-size:.62rem;line-height:1.4;overflow:auto;max-height:320px;white-space:pre-wrap;word-break:break-word;background:#0000000a;border:1px solid rgba(100,180,120,.2);border-radius:.4rem;color:#2e4a36}.devtest-page{height:calc(100vh - 44px);display:flex;flex-direction:column;background:#0f1117;color:#c9d1d9;font-family:SF Mono,Fira Code,monospace;font-size:.82rem}.devtest-layout{display:flex;flex:1;overflow:hidden}.devtest-sidebar{width:220px;min-width:180px;background:#161b22;border-right:1px solid #30363d;overflow-y:auto;padding:.5rem 0;flex-shrink:0}.devtest-group{margin-bottom:.25rem}.devtest-group-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#8b949e;padding:.55rem .85rem .25rem}.devtest-link-btn{display:flex;align-items:center;gap:.45rem;width:100%;background:none;border:none;padding:.3rem .85rem;cursor:pointer;color:#c9d1d9;text-align:left;border-left:2px solid transparent;transition:background .12s,border-color .12s}.devtest-link-btn:hover{background:#ffffff0d}.devtest-link-btn.active{background:#4fc3f71a;border-left-color:#4fc3f7}.devtest-method-badge{font-size:.65rem;font-weight:700;padding:.1em .35em;border-radius:3px;color:#0d1117;flex-shrink:0;letter-spacing:.02em}.devtest-link-label{font-size:.78rem;color:#c9d1d9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.devtest-hist-url{font-size:.7rem;color:#8b949e}.devtest-hist-status{font-size:.7rem;font-weight:700;margin-left:auto;flex-shrink:0}.devtest-hist-status.ok{color:#56d364}.devtest-hist-status.err{color:#f85149}.devtest-main{flex:1;display:flex;flex-direction:column;overflow:hidden;padding:.75rem;gap:.75rem}.devtest-request-bar{display:flex;gap:.5rem;align-items:center;background:#161b22;border:1px solid #30363d;border-radius:6px;padding:.4rem .5rem}.devtest-method-select{background:#0d1117;border:1px solid #30363d;border-radius:4px;padding:.3rem .4rem;font-family:inherit;font-size:.8rem;font-weight:700;cursor:pointer;outline:none;min-width:80px}.devtest-method-select option{color:#c9d1d9}.devtest-url-input{flex:1;background:#0d1117;border:1px solid #30363d;border-radius:4px;padding:.3rem .55rem;font-family:inherit;font-size:.82rem;color:#e6edf3;outline:none;transition:border-color .15s}.devtest-url-input:focus{border-color:#4fc3f7}.devtest-send-btn{background:#1f6feb;color:#fff;border:none;border-radius:4px;padding:.35rem 1rem;font-family:inherit;font-size:.82rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s}.devtest-send-btn:hover{background:#388bfd}.devtest-send-btn.loading{background:#6e40c9}.devtest-section{display:flex;flex-direction:column;gap:.4rem;background:#161b22;border:1px solid #30363d;border-radius:6px;padding:.65rem .75rem;overflow:hidden}.devtest-section-title{font-size:.73rem;font-weight:700;color:#8b949e;text-transform:uppercase;letter-spacing:.06em}.devtest-body-err{color:#f85149}.devtest-body-editor{background:#0d1117;border:1px solid #30363d;border-radius:4px;color:#e6edf3;font-family:inherit;font-size:.8rem;padding:.5rem;resize:vertical;outline:none;transition:border-color .15s;min-height:80px}.devtest-body-editor:focus{border-color:#4fc3f7}.devtest-body-editor.error{border-color:#f85149}.devtest-editor-actions{display:flex;gap:.4rem}.devtest-action-btn{background:#21262d;border:1px solid #30363d;border-radius:4px;color:#c9d1d9;font-family:inherit;font-size:.75rem;padding:.2rem .55rem;cursor:pointer;transition:background .12s}.devtest-action-btn:hover{background:#30363d}.devtest-esp32-grid{display:grid;grid-template-columns:1fr 1fr;gap:.45rem}.devtest-esp32-hint{font-size:.72rem;color:#8b949e}.devtest-esp32-hint code{color:#e6edf3}.devtest-response-header{display:flex;align-items:center;gap:.6rem;margin-bottom:.3rem}.devtest-status-pill{font-size:.75rem;font-weight:700;padding:.15em .55em;border-radius:999px}.devtest-status-pill.ok{background:#56d36426;color:#56d364}.devtest-status-pill.err{background:#f8514926;color:#f85149}.devtest-status-pill.info{background:#4fc3f726;color:#4fc3f7}.devtest-status-pill.warn{background:#ffb74d2e;color:#ffb74d}.devtest-timing{font-size:.72rem;color:#8b949e}.devtest-response-pre{background:#0d1117;border:1px solid #30363d;border-radius:4px;padding:.6rem .75rem;font-family:inherit;font-size:.78rem;color:#e6edf3;overflow:auto;white-space:pre;max-height:calc(100vh - 320px);flex:1}.devtest-placeholder{flex:1;display:flex;align-items:center;justify-content:center;color:#484f58;font-size:.85rem;text-align:center;padding:2rem}.devtest-mode-tabs{display:flex;border-bottom:1px solid #30363d;margin-bottom:.25rem}.devtest-mode-tab{flex:1;background:none;border:none;border-bottom:2px solid transparent;padding:.55rem .5rem;font-family:inherit;font-size:.75rem;font-weight:700;color:#8b949e;cursor:pointer;text-transform:uppercase;letter-spacing:.04em;transition:color .12s,border-color .12s}.devtest-mode-tab:hover{color:#c9d1d9}.devtest-mode-tab.active{color:#4fc3f7;border-bottom-color:#4fc3f7}.devtest-vendor-tabs{display:flex;gap:.3rem;padding:.4rem .6rem .2rem}.devtest-vendor-tab{flex:1;background:#0d1117;border:1px solid #30363d;border-radius:4px;padding:.3rem .4rem;font-family:inherit;font-size:.72rem;font-weight:700;color:#8b949e;cursor:pointer;transition:background .12s,color .12s;text-align:center}.devtest-vendor-tab:hover{background:#161b22;color:#c9d1d9}.devtest-vendor-tab.active{background:#4fc3f71f;color:#4fc3f7;border-color:#4fc3f7}.devtest-vendor-banner{background:#161b22;border:1px solid #30363d;border-left:3px solid #4fc3f7;border-radius:4px;padding:.45rem .75rem;font-size:.74rem;color:#8b949e;line-height:1.4}.devtest-vendor-banner.http{border-left-color:#81c784}.devtest-inching-section{gap:.5rem}.devtest-inching-hint{font-weight:400;color:#484f58;text-transform:none;letter-spacing:0;font-size:.7rem}.devtest-inching-grid{display:grid;grid-template-columns:40px 28px 60px 24px;align-items:center;gap:.3rem .4rem}.devtest-inching-col-hdr{font-size:.68rem;font-weight:700;color:#484f58;text-transform:uppercase;letter-spacing:.05em}.devtest-inching-sw-label{font-size:.78rem;font-weight:700;color:#8b949e}.devtest-inching-checkbox{width:16px;height:16px;cursor:pointer;accent-color:#4fc3f7;margin:0 auto;display:block}.devtest-inching-input{background:#0d1117;border:1px solid #30363d;border-radius:3px;color:#e6edf3;font-family:inherit;font-size:.8rem;padding:.2rem .35rem;outline:none;width:100%;text-align:center}.devtest-inching-input:focus{border-color:#4fc3f7}.devtest-inching-del{background:none;border:none;color:#484f58;cursor:pointer;font-size:.72rem;padding:0;line-height:1}.devtest-inching-del:hover{color:#f85149}.devtest-inching-footer{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap}.devtest-inching-preview{flex:1;font-family:inherit;font-size:.78rem;color:#81c784;background:#0d1117;border:1px solid #30363d;border-radius:3px;padding:.18rem .5rem;word-break:break-all}.devtest-inching-fill{background:#4fc3f71f;border-color:#4fc3f7;color:#4fc3f7;font-weight:700}.devtest-inching-fill:hover{background:#4fc3f738}@media (max-width: 900px){.devtest-esp32-grid{grid-template-columns:1fr}}.plant-catalog-section{margin-top:1rem}.plant-catalog-section .garden-card-head{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.plant-add-btn{margin-left:auto;background:linear-gradient(135deg,#2ecc7133,#26a69a33);border:1.5px solid #6ecf7f;color:#0d7a3e;border-radius:10px;padding:.45rem 1rem;font-size:.85rem;font-weight:700;cursor:pointer;transition:background .15s,box-shadow .15s;-webkit-tap-highlight-color:transparent;min-height:36px}.plant-add-btn:hover,.plant-add-btn:active{background:#6ecf7f61;box-shadow:0 2px 8px #14924f26}.plant-group{margin-bottom:1.75rem}.plant-group-title{display:flex;align-items:center;gap:.55rem;margin-bottom:.75rem;padding:.4rem .6rem;background:linear-gradient(90deg,rgba(110,207,127,.12),transparent);border-left:3px solid #6ecf7f;border-radius:0 8px 8px 0}.plant-group-label{font-weight:800;font-size:.88rem;color:#0d7a3e;letter-spacing:.02em;text-transform:uppercase}.plant-group-count{background:#6ecf7f40;color:#0d7a3e;border-radius:999px;font-size:.72rem;font-weight:800;padding:.12rem .55rem;margin-left:auto}.plant-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:.85rem}.plant-card{background:#fff;border:1.5px solid rgba(110,207,127,.22);border-radius:14px;overflow:hidden;cursor:pointer;box-shadow:0 2px 10px #14924f12,0 1px 3px #0000000d;transition:transform .18s cubic-bezier(.34,1.56,.64,1),box-shadow .18s,border-color .15s;-webkit-tap-highlight-color:transparent}.plant-card:hover,.plant-card:active{transform:translateY(-4px) scale(1.01);box-shadow:0 10px 28px #14924f29,0 2px 8px #00000014;border-color:#6ecf7f8c}.plant-card-img-wrap{width:100%;aspect-ratio:1 / 1;overflow:hidden;background:linear-gradient(135deg,#daf0d2,#c2e9d8);display:flex;align-items:center;justify-content:center;position:relative}.plant-card-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease}.plant-card:hover .plant-card-img{transform:scale(1.05)}.plant-card-img-placeholder{font-size:3rem;opacity:.35}.plant-card-body{padding:.55rem .7rem .65rem;display:flex;flex-direction:column;gap:.3rem}.plant-card-name{font-weight:700;font-size:.88rem;color:#1a2e1e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.01em}.plant-card-badge{display:inline-block;color:#fff;border-radius:999px;font-size:.65rem;font-weight:700;padding:.15rem .55rem;width:fit-content;letter-spacing:.02em;text-shadow:0 1px 2px rgba(0,0,0,.2)}.plant-card-meta{font-size:.71rem;color:#565;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plant-ai-reco{margin-top:.35rem;padding:.32rem .45rem;border-radius:8px;border:1px solid rgba(120,90,200,.35);background:#8c6edc1a;font-size:.72rem;line-height:1.25;color:#4b2d83}.plant-ai-setup-badge{display:inline-flex;align-items:center;margin-top:.35rem;margin-bottom:.2rem;padding:.2rem .45rem;border-radius:999px;font-size:.68rem;font-weight:700;border:1px solid transparent}.plant-ai-setup-badge.on{color:#1f6a3f;background:#4caf7029;border-color:#4caf7052}.plant-ai-setup-badge.off{color:#8a3030;background:#c8505024;border-color:#c8505047}.plant-catalog-empty{color:#99a;font-size:.88rem;text-align:center;padding:2rem 0}.tray-section{padding-bottom:1.5rem}.tray-list{display:flex;flex-direction:column;gap:1.25rem;margin-top:.75rem}.tray-card{background:#ffffffb3;border:1px solid rgba(100,180,120,.22);border-radius:.9rem;padding:.85rem 1rem 1rem}.tray-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.tray-card-title-group{display:flex;align-items:baseline;gap:.5rem}.tray-card-name{font-weight:700;font-size:.97rem;color:#2d6a4f}.tray-card-dims{font-size:.72rem;color:#88a;font-weight:500}.tray-card-actions{display:flex;gap:.3rem}.tray-action-btn{background:none;border:1px solid rgba(100,180,120,.28);border-radius:6px;padding:.2rem .45rem;cursor:pointer;font-size:.85rem;opacity:.7;transition:opacity .15s,background .15s;-webkit-tap-highlight-color:transparent}.tray-action-btn:hover{opacity:1;background:#64b4781a}.tray-action-delete:hover{background:#dc323214;border-color:#dc32324d}.tray-grid-wrap{overflow-x:auto;padding-bottom:4px}.tray-grid{display:grid;grid-template-columns:repeat(var(--tray-cols),minmax(0,1fr));gap:3px;min-width:calc(var(--tray-cols) * 38px)}.tray-grid-preview{max-width:100%;pointer-events:none}.tray-cell{aspect-ratio:1;min-height:36px;max-height:54px;border-radius:5px;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:.6rem;font-weight:700;line-height:1.1;text-align:center;transition:transform .1s,box-shadow .1s,filter .1s;-webkit-tap-highlight-color:transparent;overflow:hidden;padding:2px}.tray-cell:hover{transform:scale(1.08);box-shadow:0 2px 6px #00000026;z-index:1;position:relative}.tray-cell-active{transform:scale(1.08);box-shadow:0 0 0 2px #4caf70,0 2px 8px #0000002e;z-index:2;position:relative}.tray-cell-empty{background:#b4d2b42e;border:1.5px dashed rgba(100,160,100,.3);color:#64a06480}.tray-cell-empty:hover{background:#64c8781f}.tray-cell-plus{font-size:.85rem;line-height:1}.tray-cell-filled{box-shadow:0 1px 3px #0000001f}.tray-cell-label{word-break:break-all;font-size:.58rem}.tray-cell-readonly{cursor:default}.tray-cell-readonly:hover{transform:none;box-shadow:none}.tray-cell[draggable=true]{cursor:grab}.tray-cell[draggable=true]:active{cursor:grabbing}.tray-cell-dragging{opacity:.35;border:1.5px dashed #888!important;background:#0000000f!important}.tray-cell-drag-over{box-shadow:0 0 0 2.5px #4caf50,0 2px 10px #4caf5059!important;transform:scale(1.1);z-index:3;position:relative;background:#4caf5026!important}.tray-cell-preview{min-height:18px;max-height:26px;cursor:default;background:#b4d2b440;border:1px dashed rgba(100,160,100,.25)}.tray-legend{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.6rem}.tray-legend-item{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .45rem;border-radius:999px;font-size:.68rem;font-weight:600}.tray-legend-full{font-weight:400;opacity:.85}.tray-picker{margin-top:.6rem;background:#fffffff7;border:1px solid rgba(100,180,120,.3);border-radius:.8rem;box-shadow:0 4px 20px #0000001f;overflow:hidden;animation:slideDown .15s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.tray-picker-head{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;background:#d2f0dc80;font-size:.8rem;font-weight:600;color:#2d6a4f}.tray-picker-close{background:none;border:none;cursor:pointer;font-size:.85rem;color:#888;padding:.1rem .3rem;border-radius:4px}.tray-picker-close:hover{background:#0000000f}.tray-picker-current{display:flex;align-items:center;justify-content:space-between;gap:.45rem;padding:.45rem .7rem;background:#d2f0dc6b;border-bottom:1px solid rgba(100,180,120,.2)}.tray-picker-current-label{font-size:.68rem;font-weight:700;color:#6a8a70;text-transform:uppercase;letter-spacing:.04em}.tray-picker-current-value{display:inline-flex;align-items:center;gap:.35rem;min-width:0;color:#24523a;font-size:.82rem}.tray-picker-current-value strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tray-picker-current-empty{font-weight:700}.tray-picker-current-img{width:22px;height:22px;border-radius:5px;object-fit:cover;flex-shrink:0}.tray-picker-current-emoji{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;font-size:1rem}.tray-picker-body{max-height:240px;overflow-y:auto;padding:.4rem .5rem;display:flex;flex-direction:column;gap:2px}.tray-picker-group-label{font-size:.68rem;font-weight:700;color:#88a;text-transform:uppercase;letter-spacing:.04em;padding:.4rem .3rem .15rem}.tray-picker-opt{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border:none;background:none;border-radius:6px;cursor:pointer;font-size:.82rem;text-align:left;transition:background .1s;-webkit-tap-highlight-color:transparent}.tray-picker-opt:hover{background:#64c8821f}.tray-picker-selected{background:#4caf7038!important;border:1px solid rgba(76,175,112,.45);font-weight:700;color:#1d4d35}.tray-picker-clear{color:#c66}.tray-picker-img{width:24px;height:24px;border-radius:4px;object-fit:cover;flex-shrink:0}.tray-picker-emoji{font-size:1rem;flex-shrink:0}.tray-picker-check{margin-left:auto;color:#2e7d4c;font-size:.86rem;font-weight:800}.tray-hover-tooltip{position:fixed;transform:translateY(-50%);z-index:1200;width:170px;background:#fffffffa;border:1px solid rgba(90,160,110,.35);border-radius:10px;box-shadow:0 10px 26px #0003;overflow:hidden;pointer-events:none}.tray-hover-tooltip-img{width:100%;height:104px;object-fit:cover;display:block}.tray-hover-tooltip-fallback{height:104px;display:flex;align-items:center;justify-content:center;font-size:2rem;background:#aadcb447}.tray-hover-tooltip-name{padding:.45rem .55rem;font-size:.78rem;font-weight:700;color:#2d6a4f;line-height:1.2}@media (hover: none),(pointer: coarse){.tray-hover-tooltip{display:none}}.tray-form-modal{max-width:400px}.tray-form{display:flex;flex-direction:column;gap:.75rem}.tray-form-label{font-size:.75rem;font-weight:600;color:#4a7a5a;margin-bottom:.2rem;display:block}.tray-form-input{width:100%;padding:.5rem .65rem;border:1px solid rgba(100,180,120,.4);border-radius:.5rem;font-size:.9rem;background:#ffffffe6;box-sizing:border-box;transition:border-color .15s}.tray-form-input:focus{outline:none;border-color:#4caf70;box-shadow:0 0 0 2px #4caf702e}.tray-form-dims-row{display:flex;align-items:flex-end;gap:.5rem}.tray-form-dim-group{flex:1}.tray-form-dim-x{font-size:1.2rem;color:#aaa;padding-bottom:.45rem}.tray-form-num{text-align:center}.tray-form-preview{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.5rem;background:#d2f0dc40;border-radius:.6rem;border:1px solid rgba(100,180,120,.15)}.tray-form-total{font-size:.73rem;color:#6a8a70}.tray-form-save{background:#4caf70;color:#fff;border:none;border-radius:.6rem;padding:.6rem 1.2rem;font-size:.9rem;font-weight:600;cursor:pointer;transition:background .15s;align-self:flex-end}.tray-form-save:hover:not(:disabled){background:#3d9960}.tray-form-save:disabled{opacity:.55;cursor:not-allowed}.tray-form-error{font-size:.78rem;color:#c0392b;background:#c0392b14;border-radius:.4rem;padding:.35rem .6rem;margin:0}.plant-modal{max-width:500px;width:95vw}.plant-modal-photo-section{padding-bottom:0}.plant-modal-photo-area{position:relative;width:100%;aspect-ratio:16 / 8;background:linear-gradient(135deg,#daf0d2,#c2e9d8);border-radius:10px;overflow:hidden;cursor:pointer;display:flex;align-items:center;justify-content:center;border:2px dashed rgba(110,207,127,.5);transition:border-color .15s,background .15s}.plant-modal-photo-area:hover,.plant-modal-photo-area:active{border-color:#6ecf7f;background:linear-gradient(135deg,#ceebd6,#b6e4d4)}.plant-modal-photo-img{width:100%;height:100%;object-fit:cover;display:block}.plant-modal-photo-placeholder{font-size:3rem;opacity:.4}.plant-modal-photo-hint{position:absolute;bottom:8px;right:10px;background:#00000080;color:#fff;font-size:.7rem;font-weight:600;padding:.2rem .5rem;border-radius:8px;letter-spacing:.02em}.plant-modal-group-chips,.plant-modal-diff-chips{display:flex;flex-wrap:wrap;gap:.5rem}.plant-modal-group-chip,.plant-modal-diff-chip{background:#ffffffbf;border:1.5px solid #ccd9cc;border-radius:999px;padding:.35rem .9rem;font-size:.82rem;color:#334;cursor:pointer;min-height:36px;display:flex;align-items:center;transition:background .12s,border-color .12s;-webkit-tap-highlight-color:transparent}.plant-modal-group-chip:active,.plant-modal-diff-chip:active,.plant-modal-group-chip:hover,.plant-modal-diff-chip:hover{border-color:#6ecf7f;background:#6ecf7f24}.plant-modal-group-chip.active{background:#6ecf7f47;border-color:#2ecc71;color:#0a5c2e;font-weight:700}.plant-modal-diff-chip.active{font-weight:700}.plant-modal-notes{resize:vertical;min-height:72px;font-family:inherit;font-size:.9rem}.plant-ai-row{margin-top:.55rem;display:flex;flex-direction:column;gap:.35rem}.plant-modal-actions{display:flex;justify-content:flex-end;gap:.6rem;padding:.8rem 1rem .6rem;border-top:1px solid rgba(0,0,0,.07);margin-top:.5rem}@media (max-width: 600px){.app{padding:calc(.5rem + env(safe-area-inset-top)) calc(.5rem + env(safe-area-inset-right)) calc(1rem + env(safe-area-inset-bottom)) calc(.5rem + env(safe-area-inset-left))}.garden-page{padding-bottom:calc(1.6rem + env(safe-area-inset-bottom))}.modal-backdrop{align-items:flex-end;padding:max(.5rem,env(safe-area-inset-top)) max(.5rem,env(safe-area-inset-right)) max(.5rem,env(safe-area-inset-bottom)) max(.5rem,env(safe-area-inset-left))}.modal-card{width:100%;border-radius:18px 18px 12px 12px;max-height:calc(100dvh - max(1rem,env(safe-area-inset-top) + env(safe-area-inset-bottom)))}.dsm-overlay{align-items:flex-end;padding:max(.5rem,env(safe-area-inset-top)) max(.5rem,env(safe-area-inset-right)) max(.5rem,env(safe-area-inset-bottom)) max(.5rem,env(safe-area-inset-left))}.dsm-modal{max-width:100%;border-radius:22px 22px 0 0;max-height:calc(100dvh - max(.5rem,env(safe-area-inset-top)))}.dsm-input,.login-input,.tray-form-input,.ai-context-textarea,.pipeline-ia-textarea,.control-input-row input[type=number],.control-input-row input[type=text],.control-input-row select,.control-input-column textarea{font-size:16px}.dsm-btn,.pipeline-provider-tab,.tray-action-btn{min-height:42px}.garden-device-menu-btn{width:36px;height:36px}.plant-catalog-section{border-radius:16px;padding:.85rem .85rem 1rem}.plant-grid{grid-template-columns:repeat(2,1fr);gap:.65rem}.plant-card-img-wrap{aspect-ratio:1 / 1}.plant-card-name{font-size:.82rem}.plant-card-meta{font-size:.68rem}.dsm-overlay:has(.plant-modal){align-items:flex-end;padding:0}.plant-modal{width:100%;max-width:100%;border-radius:22px 22px 0 0;max-height:92dvh;animation:plant-modal-sheet-up .3s cubic-bezier(.32,.72,0,1)}@keyframes plant-modal-sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.plant-modal:before{content:"";display:block;width:36px;height:4px;background:#0000002e;border-radius:999px;margin:10px auto 0;flex-shrink:0}.plant-modal-group-chip,.plant-modal-diff-chip{min-height:42px;font-size:.88rem;padding:.4rem 1rem}.plant-modal-actions{padding:.75rem 1rem calc(.75rem + env(safe-area-inset-bottom));gap:.5rem}.plant-modal-actions .dsm-btn{flex:1;justify-content:center;min-height:46px;font-size:.95rem}.plant-add-btn{padding:.5rem 1.1rem;min-height:40px;font-size:.88rem}}.ia-alert-banner{margin:0 1rem 1rem;background:linear-gradient(135deg,#ffb74d1f,#ff57221a);border:1.5px solid rgba(255,160,0,.45);border-radius:.75rem;padding:.85rem 1rem;display:flex;flex-direction:column;gap:.6rem}.ia-alert-banner-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.ia-alert-banner-title{font-weight:700;font-size:.92rem;color:#b45000;letter-spacing:.01em}.ia-alert-banner-close{background:none;border:1px solid rgba(180,80,0,.3);border-radius:.4rem;color:#b45000;font-size:.78rem;padding:.2rem .55rem;cursor:pointer;transition:background .15s}.ia-alert-banner-close:hover{background:#b4500014}.ia-alert-group{display:flex;flex-direction:column;gap:.35rem}.ia-alert-timestamp{font-size:.72rem;color:#999;font-style:italic}.ia-alert-items{display:flex;flex-direction:column;gap:.35rem}.ia-alert-item{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;padding:.45rem .65rem;background:#ffffff8c;border-radius:.5rem;border:1px solid rgba(255,160,0,.2)}.ia-alert-action-badge{font-size:.72rem;font-weight:700;padding:.18rem .5rem;border-radius:.35rem;letter-spacing:.04em;white-space:nowrap}.ia-action-on{background:#4caf5033;color:#256029}.ia-action-off{background:#e5737333;color:#7a2020}.ia-action-inching{background:#2196f333;color:#0a3a6b}.ia-alert-device{font-size:.82rem;font-weight:600;color:#333;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ia-alert-reason{font-size:.78rem;color:#666;flex:2;min-width:0}.ia-alert-apply{font-size:.78rem!important;padding:.25rem .65rem!important;white-space:nowrap}.summer-page{--summer-bg-a: #ff5fb2;--summer-bg-b: #ff925e;--summer-bg-c: #ffd15c;--summer-bg-d: #46d6ff;--summer-ink: #341a4f;--summer-card: rgba(255, 255, 255, .75);--summer-border: rgba(135, 56, 145, .32);min-height:100dvh;max-width:1360px;margin:0 auto;padding:.7rem .8rem 2rem;color:var(--summer-ink);background:radial-gradient(circle at 14% 10%,rgba(255,110,185,.5),transparent 26%),radial-gradient(circle at 86% 16%,rgba(70,214,255,.45),transparent 24%),radial-gradient(circle at 20% 82%,rgba(255,210,92,.3),transparent 28%),linear-gradient(142deg,#ffc8e5,#ffd4bb 36%,#ffe8a8,#bceeff)}.summer-page-surprise{background:radial-gradient(circle at 8% 6%,rgba(255,50,150,.5),transparent 24%),radial-gradient(circle at 92% 24%,rgba(10,210,255,.55),transparent 26%),radial-gradient(circle at 72% 84%,rgba(255,248,88,.4),transparent 26%),linear-gradient(130deg,#ff9ecf,#ffc266 35%,#ffe77c 62%,#89ebff)}.summer-hero{position:relative;overflow:hidden;padding:1.4rem 1.3rem 1.2rem;border-radius:28px;border:2px solid rgba(255,255,255,.65);box-shadow:0 22px 40px #a4448538,inset 0 1px #ffffff73;background:radial-gradient(circle at 9% 20%,rgba(255,255,255,.75),transparent 40%),linear-gradient(115deg,var(--summer-bg-a),var(--summer-bg-b) 34%,var(--summer-bg-c) 62%,var(--summer-bg-d))}.summer-kicker{margin:0;font-size:.9rem;letter-spacing:.16em;font-weight:700;color:#23062cd6}.summer-title{margin:.2rem 0 0;font-family:Bungee,Space Grotesk,sans-serif;font-size:clamp(1.7rem,6vw,3.1rem);letter-spacing:.04em;color:#240b2f;text-shadow:0 3px 0 rgba(255,255,255,.4),0 10px 22px rgba(60,0,35,.25)}.summer-subtitle{margin:.2rem 0 0;font-family:Patrick Hand,Outfit,cursive;font-size:clamp(1rem,3vw,1.35rem);color:#2c0c32de}.summer-stars{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.summer-star{--size: 7px;position:absolute;width:var(--size);height:var(--size);background:#ffffffe6;clip-path:polygon(50% 0%,60% 38%,100% 50%,60% 62%,50% 100%,40% 62%,0% 50%,40% 38%);animation:summerTwinkle 2.9s ease-in-out infinite;animation-delay:var(--d)}.summer-star:nth-child(4n){--size: 9px}.summer-star:nth-child(6n){--size: 5px}.summer-star:nth-child(1){top:16%;left:8%}.summer-star:nth-child(2){top:10%;left:22%}.summer-star:nth-child(3){top:26%;left:34%}.summer-star:nth-child(4){top:18%;left:46%}.summer-star:nth-child(5){top:11%;left:58%}.summer-star:nth-child(6){top:23%;left:68%}.summer-star:nth-child(7){top:13%;left:79%}.summer-star:nth-child(8){top:20%;left:90%}.summer-star:nth-child(9){top:38%;left:5%}.summer-star:nth-child(10){top:45%;left:17%}.summer-star:nth-child(11){top:40%;left:29%}.summer-star:nth-child(12){top:47%;left:41%}.summer-star:nth-child(13){top:39%;left:53%}.summer-star:nth-child(14){top:46%;left:65%}.summer-star:nth-child(15){top:40%;left:76%}.summer-star:nth-child(16){top:48%;left:87%}.summer-star:nth-child(17){top:63%;left:9%}.summer-star:nth-child(18){top:69%;left:22%}.summer-star:nth-child(19){top:65%;left:34%}.summer-star:nth-child(20){top:70%;left:46%}.summer-star:nth-child(21){top:64%;left:58%}.summer-star:nth-child(22){top:68%;left:70%}.summer-star:nth-child(23){top:62%;left:82%}.summer-star:nth-child(24){top:72%;left:92%}.summer-toolbar{margin-top:.75rem;display:grid;grid-template-columns:1fr auto;gap:.7rem;align-items:center}.summer-progress-wrap{background:var(--summer-card);border:1px solid var(--summer-border);border-radius:16px;padding:.65rem .9rem .7rem}.summer-progress-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:.35rem}.summer-progress-label{text-transform:uppercase;font-size:.7rem;letter-spacing:.1em;font-weight:700;color:#350e45bd}.summer-progress-bar{height:12px;border-radius:999px;background:#67217b24;overflow:hidden}.summer-progress-bar>span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#ff5fb2,#ff9f44 45%,#4bd9ff);transition:width .22s ease}.summer-progress-text{margin:.35rem 0 0;font-size:.84rem;color:#350e45d1}.summer-actions{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.summer-add-panel{margin-top:.65rem;display:grid;grid-template-columns:1.6fr .5fr .8fr auto;gap:.5rem;background:#ffffffb8;border:1px solid rgba(135,56,145,.25);border-radius:14px;padding:.55rem}.summer-add-input,.summer-add-emoji,.summer-add-select{min-height:42px;border-radius:10px;border:1px solid rgba(128,51,136,.28);background:#ffffffe6;padding:.45rem .55rem;font-size:.9rem;color:#341a4f}.summer-add-emoji{text-align:center}.summer-btn{min-height:42px;border:0;border-radius:999px;padding:.45rem .95rem;font-weight:700;color:#fff;background:linear-gradient(135deg,#ff4ea1,#ff8252);cursor:pointer;box-shadow:0 8px 16px #bc40784d}.summer-btn:hover{filter:brightness(1.06)}.summer-btn-alt{background:linear-gradient(135deg,#3959ff,#4ad4ff);box-shadow:0 8px 16px #375cdc47}.summer-btn-danger{background:linear-gradient(135deg,#d94a61,#c7234c);box-shadow:0 8px 16px #a0183c47}.summer-board{margin-top:.78rem;padding:.9rem;border-radius:24px;background:#ffe8f3b8;border:1px solid rgba(150,65,138,.26);box-shadow:inset 0 1px #ffffff85,0 16px 30px #a4418124}.summer-grid{list-style:none;margin:0;padding:0;display:grid;gap:.5rem;grid-template-columns:repeat(2,minmax(0,1fr))}.summer-item{opacity:0;transform:translateY(12px) scale(.98);animation:summerEnter .42s cubic-bezier(.2,.8,.2,1) forwards;animation-delay:calc(var(--i) * 24ms)}.summer-item-btn{width:100%;border:0;border-radius:15px;background:var(--summer-card);border:1px solid rgba(140,58,146,.18);padding:.52rem .62rem;display:flex;align-items:center;justify-content:space-between;gap:.6rem;cursor:pointer;text-align:left;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.summer-item-btn:hover{transform:translateY(-1px);box-shadow:0 8px 16px #7b2f6d2b;border-color:#8f34945c}.summer-item-left{display:inline-flex;align-items:center;gap:.5rem;min-width:0}.summer-label-wrap{display:flex;flex-direction:column;min-width:0}.summer-label{font-family:Patrick Hand,Outfit,cursive;font-size:1.1rem;line-height:1.1;color:#2e163f}.summer-meta{font-size:.7rem;line-height:1.2;color:#3e2852b8;margin-top:.08rem;text-transform:uppercase;letter-spacing:.04em}.summer-emoji{width:1.72rem;height:1.72rem;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;font-size:1.05rem;flex-shrink:0;background:#fff9}.summer-checkbox{width:1.48rem;height:1.48rem;border-radius:.35rem;border:2px solid #b057b2;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:900;font-size:.92rem;flex-shrink:0}.summer-checkbox.checked{border-color:#0f924f;background:linear-gradient(145deg,#19c76b,#10a55a)}.summer-item-right{display:inline-flex;align-items:center;gap:.4rem}.summer-journal-btn{border:1px solid rgba(77,38,107,.28);border-radius:999px;background:#ffffffc7;color:#4b216a;padding:.18rem .56rem;min-height:30px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;cursor:pointer}.summer-journal-btn:hover{background:#fffffff2}.summer-item.is-checked .summer-label{text-decoration:line-through;color:#36244299}.summer-item.is-checked .summer-item-btn{background:#ebfff5c7;border-color:#1c9c5754}.tone-blue .summer-emoji{background:#5db4ff47}.tone-green .summer-emoji{background:#5ad38347}.tone-cyan .summer-emoji{background:#5ce1ff47}.tone-pink .summer-emoji{background:#ff7bb447}.tone-orange .summer-emoji{background:#ffaa5247}.tone-violet .summer-emoji{background:#a47cff47}.tone-yellow .summer-emoji{background:#ffd84a4f}.tone-indigo .summer-emoji{background:#7087ff47}.tone-red .summer-emoji{background:#ff787847}.summer-burst:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at 20% 25%,rgba(255,255,255,.75) 0 .22rem,transparent .24rem),radial-gradient(circle at 72% 18%,rgba(255,255,255,.75) 0 .2rem,transparent .22rem),radial-gradient(circle at 80% 70%,rgba(255,255,255,.75) 0 .18rem,transparent .21rem),radial-gradient(circle at 36% 80%,rgba(255,255,255,.75) 0 .2rem,transparent .22rem);animation:summerBurst .65s ease-out forwards}.summer-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#18061c73;padding:1rem;display:flex;align-items:center;justify-content:center}.summer-modal{width:min(920px,100%);max-height:calc(100dvh - 2rem);overflow:auto;border-radius:22px;background:#fff6fcf2;border:1px solid rgba(124,56,129,.35);box-shadow:0 24px 42px #38153e57;padding:1rem}.summer-modal-head{display:flex;align-items:center;justify-content:space-between;gap:.6rem}.summer-modal-head h2{margin:0;font-size:1.2rem;color:#3d1b57}.summer-btn-close{background:linear-gradient(135deg,#6e4cff,#3ea0ff)}.summer-modal-section{margin-top:.75rem;padding:.75rem;border-radius:14px;border:1px solid rgba(123,59,128,.22);background:#ffffffad}.summer-modal-danger{border-color:#b438573d;background:#ffeff4cc}.summer-field-label{display:block;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#3d1b57d9;margin-bottom:.35rem}.summer-comment{width:100%;min-height:120px;resize:vertical;border:1px solid rgba(123,59,128,.28);border-radius:10px;padding:.58rem .64rem;font-family:Outfit,Trebuchet MS,sans-serif;font-size:.92rem;color:#2f2042;background:#ffffffd9;margin-bottom:.45rem}.summer-upload-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.summer-upload-btn{position:relative;overflow:hidden}.summer-upload-btn input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.summer-upload-btn.is-disabled input{cursor:not-allowed}.summer-photo-grid{list-style:none;margin:.7rem 0 0;padding:0;display:grid;gap:.55rem;grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.summer-photo-card{border-radius:12px;border:1px solid rgba(129,54,123,.25);overflow:hidden;background:#fffc}.summer-photo-card img{width:100%;aspect-ratio:4 / 3;object-fit:cover;display:block}.summer-photo-del{width:100%;border:0;border-top:1px solid rgba(129,54,123,.18);background:#fff1f6f2;min-height:34px;font-size:.8rem;font-weight:700;color:#7d2346;cursor:pointer}.summer-empty{margin:.3rem 0;font-size:.85rem;color:#3c2a50b8}.summer-error{margin:.35rem 0;background:#ffe0e7db;border:1px solid rgba(204,88,115,.4);color:#77253f;border-radius:10px;padding:.45rem .62rem;font-size:.84rem}@keyframes summerEnter{to{opacity:1;transform:translateY(0) scale(1)}}@keyframes summerTwinkle{0%,to{transform:scale(1);opacity:.38}50%{transform:scale(1.35);opacity:.96}}@keyframes summerBurst{0%{opacity:.88}to{opacity:0}}@media (max-width: 880px){.summer-toolbar{grid-template-columns:1fr}.summer-actions{justify-content:flex-start}.summer-add-panel{grid-template-columns:1fr}}@media (max-width: 700px){.summer-page{padding:.45rem .5rem 1.3rem}.summer-hero{padding:1rem .8rem;border-radius:18px}.summer-board{border-radius:16px;padding:.58rem}.summer-grid{grid-template-columns:1fr;gap:.44rem}.summer-label{font-size:1.03rem}.summer-journal-btn{min-height:28px;font-size:.65rem;padding:.15rem .5rem}.summer-modal-backdrop{padding:.45rem;align-items:flex-end}.summer-modal{max-height:94dvh;border-radius:18px 18px 0 0}}
