.lp{--lp-bg: #f7faf6;--lp-ink: #0f2a1a;--lp-text: #22332a;--lp-muted: #5f6f66;--lp-line: rgba(15, 42, 26, .08);--lp-green: #15803d;--lp-glass: rgba(255, 255, 255, .62);--lp-glass-line: rgba(255, 255, 255, .8);--lp-shadow: 0 1px 2px rgba(15, 42, 26, .04), 0 12px 32px -12px rgba(15, 42, 26, .12);position:relative;background:var(--lp-bg);color:var(--lp-text);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}.lp button{font-family:inherit}.lp-wrap{position:relative;max-width:1160px;margin:0 auto;padding:0 24px}.lp-aurora{position:absolute;inset:0 0 auto 0;height:1500px;overflow:hidden;pointer-events:none;z-index:0}.lp-aurora span{position:absolute;border-radius:50%;filter:blur(80px);opacity:.75}.lp-aurora .a1{width:620px;height:620px;left:-8%;top:-8%;background:#bbf7d0}.lp-aurora .a2{width:560px;height:560px;left:48%;top:-12%;background:#d9f99d}.lp-aurora .a3{width:520px;height:520px;left:70%;top:28%;background:#fed7aa;opacity:.55}.lp-aurora .a4{width:520px;height:520px;left:18%;top:46%;background:#bae6fd;opacity:.5}.lp>section,.lp>footer{position:relative;z-index:1}.lp-nav{position:sticky;top:0;z-index:50;background:#ffffff8c;backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px);border-bottom:1px solid rgba(255,255,255,.7);box-shadow:0 1px 0 var(--lp-line)}.lp-nav-row{display:flex;align-items:center;gap:28px;height:66px}.lp-logo{display:flex;align-items:center;gap:10px;padding:0;background:none;border:none;font-size:16px;font-weight:700;letter-spacing:-.01em;color:var(--lp-ink)}.lp-logo-mark{width:36px;height:36px;border-radius:50%;object-fit:cover;background:#fff;box-shadow:0 2px 6px #0f2a1a26,0 0 0 1px #0f2a1a0f}.lp-links{display:flex;gap:24px;margin-left:8px}.lp-link{padding:0;background:none;border:none;font-size:14px;font-weight:500;color:var(--lp-muted);transition:color .2s}.lp-link:hover{color:var(--lp-ink)}.lp-nav .lp-btn{margin-left:auto}.lp-btn{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:999px;border:1px solid transparent;font-size:15px;font-weight:600;transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .25s,background .2s}.lp-btn-sm{padding:8px 15px;font-size:13.5px}.lp-btn-dark{background:var(--lp-ink);color:#fff;box-shadow:0 6px 16px -8px #0f2a1a80}.lp-btn-dark:hover{background:#17402a}.lp-btn-soft{background:var(--lp-bg);color:var(--lp-ink);box-shadow:6px 6px 14px #96aa9b59,-6px -6px 14px #fffffff2}.lp-btn-soft:active{box-shadow:inset 4px 4px 10px #96aa9b59,inset -4px -4px 10px #fffffff2}.lp-arrow .stem{opacity:0;transition:opacity .15s}.lp-arrow .head{transition:transform .15s}.lp-btn:hover .lp-arrow .stem,.lp-role:hover .lp-arrow .stem{opacity:1}.lp-btn:hover .lp-arrow .head,.lp-role:hover .lp-arrow .head{transform:translate(2px)}.lp button:focus-visible,.lp a:focus-visible{outline:2px solid #22c55e;outline-offset:3px;border-radius:10px}.lp-hero{padding:104px 0 120px}.lp-hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:56px;align-items:center}.lp-eyebrow{display:inline-flex;align-items:center;gap:8px;padding:7px 13px;border-radius:999px;font-size:13px;font-weight:600;color:var(--lp-green);background:var(--lp-glass);border:1px solid var(--lp-glass-line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--lp-shadow)}.lp-dot{width:7px;height:7px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 4px #22c55e2e}.lp-title{margin:24px 0 18px;font-size:clamp(46px,7.4vw,92px);line-height:.98;letter-spacing:-.045em;font-weight:700;color:var(--lp-ink)}.lp-word{display:inline-block;margin-right:.22em}.lp-word:last-child{margin-right:0}.lp-word-k{display:inline-block}.lp-word:last-child .lp-word-k{background:linear-gradient(95deg,#15803d,#65a30d 55%,#ca8a04);-webkit-background-clip:text;background-clip:text;color:transparent}.lp-lead{max-width:560px;font-size:19px;line-height:1.55;color:var(--lp-muted)}.lp-cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px}.lp-stack{position:relative;width:min(340px,70vw);aspect-ratio:1;margin-left:auto;transform:perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));transition:transform .3s ease-out}.lp-layer{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:36px;background:var(--lp-glass);border:1px solid var(--lp-glass-line);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 30px 60px -26px #0f2a1a4d}.lp-layer.l1{transform:rotate(-9deg) translate(-6%,4%)}.lp-layer.l2{transform:rotate(6deg) translate(5%,-3%);background:#ffffffb8}.lp-disc{position:absolute;top:9%;right:9%;bottom:9%;left:9%;border-radius:50%;background:#fff;box-shadow:0 40px 70px -30px #0f2a1a73,0 0 0 1px #0f2a1a0d}.lp-disc img{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover}.lp-section{padding:96px 0}.lp-head{max-width:660px;margin-bottom:36px}.lp-kicker{font-size:13px;font-weight:700;letter-spacing:.02em;color:var(--lp-green)}.lp h2{margin:10px 0 0;font-size:clamp(30px,3.6vw,44px);line-height:1.1;letter-spacing:-.03em;font-weight:700;color:var(--lp-ink)}.lp-bento{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:minmax(200px,auto);gap:16px}.lp-bento .lp-role:nth-child(1),.lp-bento .lp-role:nth-child(4){grid-column:span 2}.lp-role{position:relative;display:flex;flex-direction:column;overflow:hidden;cursor:pointer;padding:26px 26px 22px;border-radius:22px;background:var(--lp-glass);border:1px solid var(--lp-glass-line);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--lp-shadow);transition:transform .35s cubic-bezier(.34,1.56,.64,1),box-shadow .3s}.lp-role:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;transition:opacity .35s;background:linear-gradient(140deg,color-mix(in srgb,var(--rc) 14%,transparent),transparent 60%)}.lp-role:hover{transform:translateY(-4px);box-shadow:0 28px 50px -24px #0f2a1a47}.lp-role:hover:before{opacity:1}.lp-rc-blue{--rc: #3b82f6;--rc-soft: #dbeafe}.lp-rc-green{--rc: #16a34a;--rc-soft: #dcfce7}.lp-rc-orange{--rc: #f97316;--rc-soft: #ffedd5}.lp-rc-purple{--rc: #8b5cf6;--rc-soft: #ede9fe}.lp-clay{position:relative;z-index:1;display:grid;place-items:center;width:54px;height:54px;margin-bottom:20px;border-radius:18px;font-size:26px;background:linear-gradient(145deg,#fff,var(--rc-soft));box-shadow:inset 0 3px 5px #ffffffe6,inset 0 -5px 10px color-mix(in srgb,var(--rc) 22%,transparent),0 10px 20px -8px color-mix(in srgb,var(--rc) 45%,transparent);transition:transform .35s cubic-bezier(.34,1.56,.64,1)}.lp-role:hover .lp-clay{transform:translateY(-3px) rotate(-6deg) scale(1.06)}.lp-clay,.lp-role-art{color:var(--rc)}.lp-role-art svg{opacity:.85}.lp-role h3{position:relative;z-index:1;font-size:19px;font-weight:700;letter-spacing:-.01em;color:var(--lp-ink)}.lp-role p{position:relative;z-index:1;margin:6px 0 22px;font-size:14.5px;line-height:1.5;color:var(--lp-muted)}.lp-role-cta{position:relative;z-index:1;display:inline-flex;align-items:center;gap:6px;margin-top:auto;align-self:flex-start;padding:0;background:none;border:none;font-size:14px;font-weight:600;color:color-mix(in srgb,var(--rc) 80%,#0f2a1a)}.lp-role-art{position:absolute;right:-24px;bottom:-34px;display:none;place-items:center;width:190px;height:190px;border-radius:50%;font-size:84px;opacity:.9;background:radial-gradient(circle at 35% 30%,#fff,var(--rc-soft) 70%);box-shadow:inset 0 -12px 24px color-mix(in srgb,var(--rc) 18%,transparent);transition:transform .5s cubic-bezier(.34,1.56,.64,1)}.lp-bento .lp-role:nth-child(1) .lp-role-art,.lp-bento .lp-role:nth-child(4) .lp-role-art{display:grid}.lp-role:hover .lp-role-art{transform:translate(-6px,-6px) rotate(-8deg)}.lp-farm-bento{display:grid;grid-template-columns:300px 1fr;gap:16px}.lp-tile{border-radius:22px;padding:32px;background:var(--lp-glass);border:1px solid var(--lp-glass-line);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--lp-shadow)}.lp-farm-logo{display:grid;place-items:center}.lp-farm-logo img{display:block;width:210px;height:210px;border-radius:50%;object-fit:cover;background:#fff;box-shadow:0 24px 44px -22px #50371459,0 0 0 1px #0f2a1a0d;transition:transform .5s cubic-bezier(.34,1.56,.64,1)}.lp-farm-logo:hover img{transform:rotate(-6deg) scale(1.04)}.lp-farm-info{display:flex;flex-direction:column;justify-content:center}.lp-place{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:16.5px;color:var(--lp-muted)}.lp-ext{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}.lp-ext a{display:inline-flex;align-items:center;gap:6px;padding:9px 15px;border-radius:999px;font-size:14px;font-weight:600;color:var(--lp-ink);text-decoration:none;background:#ffffffd9;border:1px solid var(--lp-line);transition:transform .25s cubic-bezier(.34,1.56,.64,1),border-color .2s}.lp-ext a:hover{transform:translateY(-2px);border-color:#15803d59}.lp-footer{padding:56px 0 32px;background:linear-gradient(180deg,#f7faf600,#eef4ec 40%);border-top:1px solid var(--lp-line)}.lp-footer-top{display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap}.lp-footer-brand{display:flex;align-items:center;gap:14px}.lp-footer-brand img{width:52px;height:52px;border-radius:50%;object-fit:cover;background:#fff;box-shadow:0 4px 12px #0f2a1a1f}.lp-footer-brand strong{display:block;font-size:15px;color:var(--lp-ink)}.lp-footer-brand span{font-size:13.5px;color:var(--lp-muted)}.lp-contacts{display:flex;flex-wrap:wrap;gap:12px}.lp-contact{display:inline-flex;align-items:center;gap:9px;padding:11px 18px;border-radius:16px;font-size:14px;font-weight:600;color:var(--lp-ink);text-decoration:none;background:#eef4ec;box-shadow:5px 5px 12px #96aa9b66,-5px -5px 12px #fffffff2;transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .2s,color .2s}.lp-contact .lp-ico{color:var(--lp-green);transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.lp-contact:hover{transform:translateY(-2px)}.lp-contact:hover .lp-ico{transform:scale(1.18) rotate(-8deg)}.lp-contact:active{box-shadow:inset 4px 4px 10px #96aa9b66,inset -4px -4px 10px #fffffff2}.lp-footer-bottom{display:flex;justify-content:space-between;gap:8px 24px;flex-wrap:wrap;margin-top:36px;padding-top:20px;border-top:1px solid var(--lp-line);font-size:13px;color:var(--lp-muted)}.lp-footer-bottom strong{color:var(--lp-ink)}.lp-fx .lp-aurora{transform:translate3d(0,calc(var(--sy, 0) * .35px),0)}.lp-fx .lp-aurora span{animation:lp-drift 22s ease-in-out infinite alternate}.lp-fx .lp-aurora .a2{animation-delay:-6s}.lp-fx .lp-aurora .a3{animation-delay:-12s}.lp-fx .lp-aurora .a4{animation-delay:-3s}.lp-fx:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.lp-fx .lp-word{animation:lp-word 1.1s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i) * .14s + .12s)}.lp-fx .lp-word-k{transition:transform .1s linear}.lp-fx .lp-word-k.k0{transform:translate3d(calc(var(--sy, 0) * -.12px),0,0)}.lp-fx .lp-word-k.k1{transform:translate3d(calc(var(--sy, 0) * .12px),0,0)}.lp-fx .lp-rise{animation:lp-rise 1s cubic-bezier(.2,.7,.2,1) both;animation-delay:var(--d, 0ms)}.lp-fx .lp-hero-visual{animation:lp-rise 1.3s cubic-bezier(.2,.7,.2,1) .3s both}.lp-fx .lp-layer.l1{animation:lp-float-a 7s ease-in-out infinite}.lp-fx .lp-layer.l2{animation:lp-float-b 8s ease-in-out infinite}.lp-fx .lp-disc{animation:lp-bob 6s ease-in-out infinite}.lp-fx .lp-role:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(240px circle at var(--mx, 50%) var(--my, 50%),rgba(255,255,255,.75),transparent 65%)}.lp-fx .lp-role:hover:after{opacity:1}.lp-fx .lp-btn:hover{transform:translateY(-2px) scale(1.02)}.lp-fx .lp-btn:active{transform:translateY(0) scale(.97)}.lp-fx [data-reveal]{opacity:0;transform:translateY(26px);filter:blur(6px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1),filter .9s ease;transition-delay:var(--d, 0ms)}.lp-fx [data-reveal].in{opacity:1;transform:none;filter:none}.lp-fx .lp-role[data-reveal].in{transition:opacity .9s,filter .9s,transform .35s cubic-bezier(.34,1.56,.64,1),box-shadow .3s;transition-delay:var(--d, 0ms),var(--d, 0ms),0ms,0ms}.lp-fx .lp-role[data-reveal].in:hover{transform:translateY(-4px)}@keyframes lp-drift{0%{transform:translate(0) scale(1)}to{transform:translate(56px,-36px) scale(1.14)}}@keyframes lp-word{0%{opacity:0;filter:blur(14px);transform:translateY(26px)}}@keyframes lp-rise{0%{opacity:0;transform:translateY(18px);filter:blur(6px)}}@keyframes lp-float-a{0%,to{transform:rotate(-9deg) translate(-6%,4%)}50%{transform:rotate(-11deg) translate(-7%,1%)}}@keyframes lp-float-b{0%,to{transform:rotate(6deg) translate(5%,-3%)}50%{transform:rotate(8deg) translate(6%)}}@keyframes lp-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@media (prefers-reduced-motion: reduce){.lp-fx *,.lp-fx *:before,.lp-fx *:after{animation:none!important;transition:none!important}.lp-fx [data-reveal]{opacity:1;transform:none;filter:none}.lp-fx .lp-aurora,.lp-fx .lp-word-k{transform:none!important}}@media (max-width: 1024px){.lp-hero-grid{grid-template-columns:1fr;gap:56px}.lp-stack{width:min(300px,66vw);margin:0 auto}.lp-bento{grid-template-columns:repeat(2,1fr)}.lp-bento .lp-role:nth-child(1),.lp-bento .lp-role:nth-child(4){grid-column:span 1}.lp-bento .lp-role .lp-role-art{display:none!important}}@media (max-width: 760px){.lp-links{display:none}.lp-hero{padding:64px 0 80px}.lp-section{padding:64px 0}.lp-farm-bento{grid-template-columns:1fr}.lp-farm-logo img{width:170px;height:170px}.lp-lead{font-size:17px}.lp-footer-top{flex-direction:column;align-items:flex-start}}@media (max-width: 540px){.lp-bento{grid-template-columns:1fr;grid-auto-rows:auto}.lp-eyebrow{font-size:12px}.lp-contacts{display:grid;grid-template-columns:1fr 1fr;width:100%}.lp-contact{justify-content:center}.lp-contact:last-child:nth-child(odd){grid-column:1 / -1}}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/app/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/app/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/app/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/app/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/app/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/app/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/app/assets/ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2) format("woff2"),url(/app/assets/ibm-plex-sans-latin-700-normal-Bth3BMcD.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/app/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/app/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/app/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/app/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}@font-face{font-family:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:500;src:url(/app/assets/ibm-plex-serif-latin-500-normal-REKAfBVG.woff2) format("woff2"),url(/app/assets/ibm-plex-serif-latin-500-normal-C3_OdgN3.woff) format("woff")}@font-face{font-family:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:600;src:url(/app/assets/ibm-plex-serif-latin-600-normal-DAxitmSu.woff2) format("woff2"),url(/app/assets/ibm-plex-serif-latin-600-normal-D3rpGdkS.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/app/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/app/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/app/assets/inter-latin-500-normal-Cerq10X2.woff2) format("woff2"),url(/app/assets/inter-latin-500-normal-BL9OpVg8.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/app/assets/inter-latin-600-normal-LgqL8muc.woff2) format("woff2"),url(/app/assets/inter-latin-600-normal-CiBQ2DWP.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/app/assets/inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2"),url(/app/assets/inter-latin-700-normal-BLAVimhd.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/app/assets/inter-latin-800-normal-BYj_oED-.woff2) format("woff2"),url(/app/assets/inter-latin-800-normal-D1mf63XC.woff) format("woff")}:root{--agronomist: #2563eb;--agronomist-dark: #1d4ed8;--owner: #16a34a;--owner-dark: #059669;--staff: #ea580c;--staff-dark: #c2410c;--admin: #7c3aed;--admin-dark: #4338ca;--bg: #f8fafc;--border: #e2e8f0;--text: #0f172a;--text-2: #475569;--muted: #94a3b8;--red: #ef4444;--yellow: #f59e0b;--green: #22c55e}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:14px}button{font-family:inherit;cursor:pointer}input,select{font-family:inherit;font-size:13px}.app-shell{display:flex;flex-direction:column;min-height:100vh}.shell-body{flex:1;overflow-y:auto;padding-bottom:76px}.banner{color:#fff;padding:18px 24px 20px}.banner h1{font-size:22px;font-weight:800}.banner .sub{font-size:12px;opacity:.8;margin-top:2px}.banner-row{display:flex;align-items:center;gap:12px;justify-content:space-between;flex-wrap:wrap}.badge-live{display:inline-flex;align-items:center;gap:6px;background:#ffffff26;padding:3px 10px;border-radius:12px;font-size:10px;font-weight:600}.badge-live .dot{width:6px;height:6px;border-radius:50%;background:var(--green)}.badge-live .dot.off{background:var(--yellow)}.grad-agronomist{background:linear-gradient(120deg,#2563eb,#1d4ed8)}.grad-owner{background:linear-gradient(120deg,#16a34a,#059669)}.grad-staff{background:linear-gradient(120deg,#ea580c,#c2410c)}.grad-admin{background:linear-gradient(120deg,#7c3aed,#4338ca)}.grad-map{background:linear-gradient(120deg,#059669,#047857)}.grad-alerts{background:linear-gradient(120deg,#dc2626,#b91c1c)}.grad-irrigation{background:linear-gradient(120deg,#2563eb,#1d4ed8)}.grad-analytics{background:linear-gradient(120deg,#1b4332,#2d6a4f)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;background:#fff;border-top:1px solid var(--border);z-index:900}.bottom-nav button{flex:1;padding:10px 4px 12px;background:none;border:none;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;color:var(--muted);font-weight:500}.bottom-nav button.active{color:var(--accent, var(--agronomist));font-weight:700}.bottom-nav button .ico{font-size:20px;line-height:1}.page{padding:16px;max-width:1400px;margin:0 auto}.card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:20px;margin-bottom:16px}.card h3{font-size:16px;font-weight:700;margin-bottom:14px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 760px){.grid-2{grid-template-columns:1fr}}.kpi-row{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px;margin-bottom:16px}.kpi{background:#fff;border:1px solid var(--border);border-radius:10px;padding:12px 16px;min-width:150px;flex-shrink:0}.kpi .label{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:4px}.kpi .value{font-size:22px;font-weight:800;margin-top:4px}.kpi .sub{font-size:10px;color:var(--muted);margin-top:2px}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse}table.data th{text-align:left;font-size:11px;font-weight:600;color:var(--muted);padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap}table.data td{padding:12px;border-bottom:1px solid #f1f5f9;font-size:13px}table.data tr:last-child td{border-bottom:none}.pill{display:inline-block;padding:2px 8px;border-radius:5px;font-size:10px;font-weight:700;color:#fff}.btn{border:none;border-radius:8px;padding:9px 16px;font-size:13px;font-weight:600;color:#fff;background:var(--agronomist)}.btn.green{background:var(--owner)}.btn.red{background:var(--red)}.btn.purple{background:var(--admin)}.btn.ghost{background:#fff;color:var(--text-2);border:1px solid var(--border)}.btn:disabled{opacity:.6;cursor:default}.btn.sm{padding:6px 12px;font-size:12px}.field{margin-bottom:12px}.field label{display:block;font-size:13px;font-weight:600;margin-bottom:6px}.field input,.field select{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:8px;outline:none}.field input:focus,.field select:focus{border-color:var(--agronomist)}.chip-row{display:flex;gap:8px;flex-wrap:wrap}.chip{padding:6px 12px;border-radius:16px;font-size:12px;font-weight:600;background:#fff;color:var(--text-2);border:1px solid var(--border)}.chip.active{background:var(--accent, var(--agronomist));color:#fff;border-color:transparent}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal{background:#fff;border-radius:16px;padding:24px;width:100%;max-width:460px;max-height:90vh;overflow-y:auto}.modal h2{font-size:18px;font-weight:700;margin-bottom:16px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.landing{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 16px;background:linear-gradient(160deg,#f0fdf4,#eff6ff)}.landing h1{font-size:32px;font-weight:800}.landing .tagline{color:var(--text-2);margin:8px 0 32px;text-align:center}.role-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;width:100%;max-width:1000px}.role-card{background:#fff;border:1px solid var(--border);border-radius:16px;padding:28px 20px;text-align:center;transition:transform .15s,box-shadow .15s;border-top:4px solid var(--rc, var(--agronomist));cursor:pointer}.role-card:hover{transform:translateY(-3px);box-shadow:0 12px 30px #0f172a14}.role-card .ico{font-size:34px}.role-card h3{margin:12px 0 6px;font-size:16px}.role-card p{font-size:12px;color:var(--text-2)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{background:#fff;border-radius:20px;padding:40px 32px;width:100%;max-width:420px;box-shadow:0 12px 40px #0f172a14;text-align:center}.login-card .ico-circle{width:72px;height:72px;border-radius:50%;margin:0 auto 20px;display:flex;align-items:center;justify-content:center;font-size:34px;background:color-mix(in srgb,var(--accent) 12%,white)}.login-card h1{font-size:24px;font-weight:800}.login-card .sub{color:var(--text-2);font-size:14px;margin:6px 0 28px}.login-card form{text-align:left}.link-btn{background:none;border:none;font-size:13px;font-weight:600;color:var(--accent, var(--agronomist))}.alert-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:16px;margin-bottom:12px}.error-text{color:var(--red);font-size:12px;margin-top:8px}.ok-text{color:var(--green);font-size:12px;margin-top:8px}.muted{color:var(--muted);font-size:12px}.empty-state{text-align:center;padding:48px 16px;color:var(--muted)}.leaflet-container{width:100%;height:100%}.grafana-frame{width:100%;height:640px;border:none;border-radius:12px;background:#fff}.zone-map-box{position:relative;height:240px;border-radius:10px;background:#f0fdf4;border:1px solid #bbf7d0}.zone-dot{position:absolute;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;cursor:pointer;border:3px solid transparent;transform:translate(-50%,-50%)}.zone-dot.selected{border-color:#fff;box-shadow:0 0 12px #00000040}.switch{position:relative;width:44px;height:24px;flex-shrink:0}.switch input{display:none}.switch .track{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:12px;background:var(--border);transition:background .15s}.switch input:checked+.track{background:var(--green)}.switch .thumb{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .15s}.switch input:checked+.track .thumb{left:23px}:root{--brand: #166534;--brand-dark: #14532d;--brand-soft: #dcfce7;--card-border: #e5ebe5;--shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 6px 16px rgba(15, 23, 42, .05);--sidebar-w: 248px;--topbar-h: 60px}body{background:#f5f7f5}.shell-main{flex:1;min-width:0;display:flex;flex-direction:column}.sidebar,.topbar{display:none}@media (min-width: 900px){.app-shell{flex-direction:row}.sidebar{display:flex;flex-direction:column;position:fixed;top:0;bottom:0;left:0;width:var(--sidebar-w);background:linear-gradient(180deg,var(--brand-dark),#0e3b20);color:#e7f5ec;padding:22px 14px 18px;z-index:950;overflow-y:auto}.shell-main{margin-left:var(--sidebar-w);min-height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;height:var(--topbar-h);padding:0 24px;position:sticky;top:0;z-index:900;background:#fff;border-bottom:1px solid var(--card-border)}.shell-body{padding-bottom:28px;overflow:visible}.bottom-nav{display:none}.page{padding:8px 24px 24px}.banner{padding:22px 24px 8px}}.brand{display:flex;align-items:center;gap:12px;padding:0 8px 22px;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:16px}.brand-mark{width:40px;height:40px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:20px;background:#ffffff1f}.brand-name{font-size:17px;font-weight:800;color:#fff}.brand-sub{font-size:12px;opacity:.8;margin-top:1px}.side-nav{display:flex;flex-direction:column;gap:4px}.side-nav button{display:flex;align-items:center;gap:12px;width:100%;padding:11px 14px;border:none;border-radius:10px;background:none;color:#ffffffd1;font-size:14px;font-weight:500;text-align:left}.side-nav button:hover{background:#ffffff12;color:#fff}.side-nav button.active{background:#1f7a3f;color:#fff;font-weight:700}.side-nav .ico{width:20px;text-align:center;font-size:16px}.side-nav .lbl{flex:1}.nav-badge{min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--red);color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.side-foot{margin-top:auto;padding-top:16px;display:flex;flex-direction:column;gap:10px}.about-card{border:1px solid rgba(255,255,255,.18);border-radius:12px;padding:14px;font-size:12px;line-height:1.55;color:#ffffffd9}.about-title{font-weight:700;color:#fff;font-size:13px;margin-bottom:6px}.side-logout{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;border:1px solid rgba(255,255,255,.18);background:none;color:#fff;font-size:13px;font-weight:600}.side-logout:hover{background:#ffffff12}.topbar-left{font-size:13px;color:var(--text-2);font-weight:500}.muted-dot{color:var(--muted);margin:0 4px}.topbar-right{display:flex;align-items:center;gap:20px}.sync{display:flex;align-items:center;gap:10px}.sync-ico{font-size:22px;color:var(--brand)}.sync-label{font-size:11px;color:var(--muted)}.sync-time{font-size:12.5px;font-weight:600;color:var(--text)}.bell{position:relative;background:none;border:none;font-size:20px;line-height:1;padding:4px}.bell-badge{position:absolute;top:-4px;right:-6px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--red);color:#fff;font-size:10.5px;font-weight:700;display:flex;align-items:center;justify-content:center}.user-chip{display:flex;align-items:center;gap:10px}.avatar{width:36px;height:36px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700}.user-name{font-size:13px;font-weight:600}.user-role{font-size:11px;color:var(--muted)}.banner{background:transparent;color:var(--text)}.banner h1{font-size:24px;font-weight:800;color:var(--text);letter-spacing:-.01em}.banner .sub{color:var(--text-2);opacity:1;font-size:13px;margin-top:3px}.badge-live{background:var(--brand-soft);color:var(--brand)}.card{border:1px solid var(--card-border);border-radius:14px;box-shadow:var(--shadow)}.card h3{font-size:15px;font-weight:700;color:var(--text)}.grid-2,.grid-3,.grid-21{display:grid;gap:16px;margin-bottom:16px}.grid-2>.card,.grid-3>.card,.grid-21>.card{margin-bottom:0}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-21{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}@media (max-width: 1150px){.grid-3{grid-template-columns:1fr 1fr}}@media (max-width: 1000px){.grid-21{grid-template-columns:1fr}}@media (max-width: 760px){.grid-3{grid-template-columns:1fr}}.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;overflow:visible;padding-bottom:0}.kpi-row.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.kpi-row.cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}@media (max-width: 1400px){.kpi-row.cols-5{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width: 1250px){.kpi-row.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 1000px){.kpi-row.cols-5{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 520px){.kpi-row.cols-4,.kpi-row.cols-5{grid-template-columns:1fr}}@media (max-width: 1150px) and (min-width: 761px){.grid-3>.card:nth-child(3):last-child{grid-column:1 / -1}}.kpi-card{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--card-border);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow)}.kpi-icon{width:50px;height:50px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:22px}.tone-green{background:#dcfce7}.tone-blue{background:#dbeafe}.tone-orange{background:#fef3c7}.tone-red{background:#fee2e2}.tone-purple{background:#ede9fe}.kpi-label{font-size:12.5px;color:var(--text-2);font-weight:500}.kpi-value{font-size:28px;font-weight:800;line-height:1.15;margin-top:2px}.kpi-unit{font-size:14px;font-weight:500;color:var(--text-2);margin-left:4px}.kpi-status{font-size:12.5px;font-weight:600;margin-top:2px}.text-green{color:#15803d}.text-red{color:#dc2626}.text-orange{color:#d97706}.text-blue{color:#2563eb}.text-purple{color:#7c3aed}.text-muted{color:var(--muted)}.kpi-sub{font-size:11.5px;color:var(--muted);margin-top:3px}table.data th{background:#f7f9f7;color:var(--text-2);font-size:11.5px}table.data th:first-child{border-top-left-radius:8px}table.data th:last-child{border-top-right-radius:8px}table.data tbody tr:hover td{background:#fafcfa}.risk-chip{display:inline-block;padding:3px 12px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap}.risk-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:8px;vertical-align:middle}.status-online{color:#15803d;font-weight:600;font-size:12.5px}.status-offline{color:var(--muted);font-weight:600;font-size:12.5px}.chip.active{background:var(--accent, var(--brand))}.pw-wrap{position:relative}.pw-wrap input{padding-right:44px}.pw-wrap input::-ms-reveal,.pw-wrap input::-ms-clear{display:none}.pw-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:32px;height:32px;border:none;border-radius:8px;background:none;display:flex;align-items:center;justify-content:center;color:var(--muted)}.pw-toggle:hover{color:var(--text);background:#f1f5f9}.pw-toggle[aria-pressed=true]{color:var(--accent, var(--brand))}.wrong-role{text-align:left;margin-bottom:12px;padding:12px 14px;border-radius:10px;background:#fffbeb;border:1px solid #fde68a;font-size:13px;color:var(--text-2)}.wrong-role p{margin-bottom:10px;line-height:1.45}.wrong-role .btn{background:var(--brand)}.zone-dot{font-size:13px;box-shadow:0 2px 6px #0f172a2e}.zone-label{position:absolute;top:44px;left:50%;transform:translate(-50%);font-size:11px;font-weight:600;color:var(--text-2);white-space:nowrap}.map-legend{display:flex;justify-content:center;gap:16px;margin-top:30px;font-size:12px;color:var(--text-2);flex-wrap:wrap}.fresh{border-radius:4px;animation:fresh-flash 1.8s ease-out}@keyframes fresh-flash{0%{background:#22c55e59}to{background:transparent}}.live-dot{width:9px;height:9px;border-radius:50%;background:#9ca3af;flex:none}.live-dot.on{background:#22c55e;animation:live-pulse 2s infinite}@keyframes live-pulse{0%{box-shadow:0 0 #22c55e80}70%{box-shadow:0 0 0 7px #22c55e00}to{box-shadow:0 0 #22c55e00}}.lang-toggle{display:inline-flex;border:1px solid #bbf7d0;border-radius:999px;overflow:hidden}.lang-toggle button{background:#fff;border:0;padding:4px 11px;font-size:12px;font-weight:600;color:var(--text-2);cursor:pointer}.lang-toggle button.on{background:#16a34a;color:#fff}.lang-toggle button:focus-visible{outline:2px solid #16a34a;outline-offset:-2px}@media (prefers-reduced-motion: reduce){.fresh,.live-dot.on{animation:none}}.app-shell,.login-wrap,.modal-backdrop{--paper: #f3eee3;--surface: #fffdf8;--surface-2: #f8f3e8;--line: #e0d6c3;--line-2: #ebe3d4;--ink: #1d271f;--ink-2: #4b5649;--ink-3: #847d6d;--leaf: #2f6b3a;--leaf-mid: #24502d;--leaf-deep: #16301d;--leaf-soft: #e2ebd8;--coffee: #6b4a30;--coffee-soft: #efe3d2;--cherry: #a8322a;--cherry-soft: #f5e0da;--amber: #a36b10;--amber-soft: #f6e7c8;--water: #2a6479;--water-soft: #dbe9ed;--clay: #a4532c;--clay-soft: #f3e1d4;--agronomist: var(--water);--agronomist-dark: #20505f;--owner: var(--leaf);--owner-dark: #255830;--staff: var(--clay);--staff-dark: #874322;--admin: var(--coffee);--admin-dark: #553a25;--bg: var(--paper);--border: var(--line);--card-border: var(--line);--text: var(--ink);--text-2: var(--ink-2);--muted: var(--ink-3);--red: var(--cherry);--yellow: var(--amber);--green: #3b7d46;--brand: var(--leaf);--brand-dark: var(--leaf-deep);--brand-soft: var(--leaf-soft);--shadow: none;--font-ui: "IBM Plex Sans", system-ui, sans-serif;--font-head: "IBM Plex Serif", Georgia, "Times New Roman", serif;--font-mono: "IBM Plex Mono", ui-monospace, Consolas, monospace;--radius: 10px;font-family:var(--font-ui);color:var(--ink);font-feature-settings:"tnum" 0}.app-shell,.login-wrap{background:var(--paper)}.app-shell button,.app-shell input,.app-shell select,.app-shell textarea,.login-wrap button,.login-wrap input,.login-wrap select,.modal-backdrop button,.modal-backdrop input,.modal-backdrop select{font-family:var(--font-ui)}.shell-main{background:var(--paper)}.eyebrow{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.mono{font-family:var(--font-mono);font-size:.95em;letter-spacing:0}.num{font-variant-numeric:tabular-nums lining-nums}@media (min-width: 900px){.app-shell .sidebar{background:var(--leaf-deep);background-image:radial-gradient(120% 60% at 0% 100%,rgba(120,160,90,.1),transparent 60%);color:#dfe8d9;padding:22px 12px 16px}}.app-shell .brand{border-bottom:1px solid rgba(223,232,217,.12);padding:0 8px 20px;margin-bottom:18px}.app-shell .brand-mark{width:38px;height:38px;border-radius:9px;font-size:0;background:#e2ebd81a;color:#b9d3a3}.app-shell .brand-name{white-space:nowrap;font-family:var(--font-head);font-size:19px;font-weight:600;letter-spacing:-.01em;font-variation-settings:"SOFT" 100}.app-shell .brand-sub{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;opacity:.65;margin-top:3px}.app-shell .side-nav{gap:2px}.app-shell .side-nav button{position:relative;border-radius:8px;padding:10px 12px;gap:12px;color:#dfe8d9c7;font-size:14px;font-weight:500}.app-shell .side-nav button:hover{background:#dfe8d90f;color:#fff}.app-shell .side-nav button.active{background:#dfe8d91c;color:#fff;font-weight:600}.app-shell .side-nav button.active:before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:#b9d3a3}.app-shell .side-nav .ico{width:20px;display:inline-flex;justify-content:center;font-size:19px}.app-shell .nav-badge{background:var(--cherry);font-family:var(--font-mono);font-weight:500}.app-shell .about-card{border:1px solid rgba(223,232,217,.14);border-radius:8px;padding:12px 13px;font-size:12px;color:#dfe8d9c7;background:#00000014}.app-shell .about-title{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:#cfe0c3;font-weight:500}.app-shell .side-logout{border:1px solid rgba(223,232,217,.18);border-radius:8px;color:#e6eee1;font-weight:500}.app-shell .side-logout .ico{display:inline-flex;font-size:17px}.app-shell .topbar{background:var(--surface);border-bottom:1px solid var(--line)}.app-shell .topbar-left{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3)}.app-shell .muted-dot{color:var(--line)}.app-shell .sync-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase}.app-shell .sync-time{font-family:var(--font-mono);font-size:12px;font-weight:500}.app-shell .bell{display:inline-flex;color:var(--ink-2);font-size:20px;border-radius:8px;padding:6px}.app-shell .bell:hover{background:var(--surface-2);color:var(--ink)}.app-shell .bell-badge{background:var(--cherry);font-family:var(--font-mono);font-weight:500;top:-2px;right:-4px}.app-shell .avatar{background:var(--coffee);border-radius:9px;font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.02em}.app-shell .user-name{font-weight:600}.app-shell .user-role{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase}.app-shell .banner{padding-top:26px;padding-bottom:14px}.app-shell .banner h1{display:flex;align-items:center;gap:10px;font-family:var(--font-head);font-weight:560;font-size:30px;line-height:1.15;letter-spacing:-.015em;color:var(--ink);font-variation-settings:"SOFT" 50}.app-shell .banner h1 svg{color:var(--leaf);flex:none}.app-shell .banner .sub{color:var(--ink-2);font-size:13.5px;margin-top:5px}.app-shell .badge-live{background:var(--leaf-soft);color:var(--leaf-mid);font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;border-radius:6px}.app-shell .page h3{font-family:var(--font-head);font-weight:560;font-size:18px;letter-spacing:-.005em;font-variation-settings:"SOFT" 50}.app-shell .card,.app-shell .alert-card,.modal-backdrop .card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:none}.app-shell .card h3,.app-shell .alert-card h3{display:flex;align-items:center;gap:8px;font-family:var(--font-head);font-size:18px;font-weight:560;letter-spacing:-.005em;font-variation-settings:"SOFT" 50;color:var(--ink)}.app-shell .card h3 svg,.app-shell .alert-card h3 svg{color:var(--leaf);flex:none}.app-shell .alert-card{padding:14px 16px}.app-shell .alert-card:hover{border-color:#d3c6ad}.app-shell .callout{border-radius:var(--radius);padding:14px 16px;margin-bottom:16px;border:1px solid;font-size:13px}.app-shell .callout.leaf{background:var(--leaf-soft);border-color:#c8d8b8;color:var(--leaf-mid)}.app-shell .callout.amber{background:var(--amber-soft);border-color:#e8d09f;color:#6e4a0c}.app-shell .callout.water{background:var(--water-soft);border-color:#bcd6de;color:#1f4c5c}.app-shell .callout.cherry{background:var(--cherry-soft);border-color:#e8c1b8;color:#7d231d}.app-shell .callout h3{font-size:16px;margin-bottom:4px}.app-shell .callout p{color:inherit;opacity:.9}.app-shell .kpi-card{display:block;position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px 15px;box-shadow:none}.app-shell .kpi-icon{position:absolute;top:14px;right:14px;width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:18px}.app-shell .tone-green{background:var(--leaf-soft);color:var(--leaf)}.app-shell .tone-blue{background:var(--water-soft);color:var(--water)}.app-shell .tone-orange{background:var(--amber-soft);color:var(--amber)}.app-shell .tone-red{background:var(--cherry-soft);color:var(--cherry)}.app-shell .tone-purple{background:var(--coffee-soft);color:var(--coffee)}.app-shell .kpi-label{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);padding-right:40px}.app-shell .kpi-value{font-family:var(--font-head);font-size:36px;font-weight:500;line-height:1.05;margin-top:10px;letter-spacing:-.02em;font-variant-numeric:tabular-nums lining-nums;font-variation-settings:"SOFT" 30}.app-shell .kpi-unit{font-family:var(--font-ui);font-size:14px;font-weight:500;color:var(--ink-3);margin-left:5px;letter-spacing:0}.app-shell .kpi-status{font-size:12.5px;font-weight:500;margin-top:8px;display:flex;align-items:center;gap:6px}.app-shell .kpi-status:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}.app-shell .kpi-sub{font-size:11.5px;color:var(--ink-3)}.app-shell .text-green{color:var(--leaf)}.app-shell .text-red{color:var(--cherry)}.app-shell .text-orange{color:var(--amber)}.app-shell .text-blue{color:var(--water)}.app-shell .text-purple{color:var(--coffee)}.app-shell .text-muted{color:var(--ink-3)}.app-shell .kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.app-shell .kpi .label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase}.app-shell .kpi .value{font-family:var(--font-head);font-weight:500;font-variant-numeric:tabular-nums}.app-shell table.data th{background:transparent;color:var(--ink-3);font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;border-bottom:1.5px solid var(--ink);padding:9px 12px;border-radius:0!important}.app-shell table.data td{border-bottom:1px solid var(--line-2);font-size:13.5px}.app-shell table.data tbody tr:hover td{background:var(--surface-2)}.app-shell .pill{display:inline-flex;align-items:center;gap:4px;border-radius:5px;padding:2px 8px;font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.05em;text-transform:uppercase}.app-shell .chip{border-radius:7px;padding:6px 12px;font-size:12.5px;font-weight:500;background:var(--surface);color:var(--ink-2);border:1px solid var(--line)}.app-shell .chip:hover{border-color:#cdbfa5;color:var(--ink)}.app-shell .chip.active{background:var(--ink);color:var(--surface);border-color:var(--ink)}.app-shell .risk-chip{display:inline-flex;align-items:center;gap:6px;border-radius:5px;padding:3px 9px;font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase}.app-shell .risk-chip:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.app-shell .status-online{color:var(--leaf)}.app-shell .status-offline{color:var(--ink-3)}.app-shell .btn,.login-wrap .btn,.modal-backdrop .btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:8px;font-weight:600;letter-spacing:.005em;background:var(--leaf)}.app-shell .btn:hover:not(:disabled),.login-wrap .btn:hover:not(:disabled),.modal-backdrop .btn:hover:not(:disabled){filter:brightness(.94)}.app-shell .btn.green,.modal-backdrop .btn.green{background:var(--leaf)}.app-shell .btn.red,.modal-backdrop .btn.red{background:var(--cherry)}.app-shell .btn.purple,.modal-backdrop .btn.purple{background:var(--coffee)}.app-shell .btn.ghost,.login-wrap .btn.ghost,.modal-backdrop .btn.ghost{background:var(--surface);color:var(--ink-2);border:1px solid var(--line)}.app-shell .btn.ghost:hover:not(:disabled),.modal-backdrop .btn.ghost:hover:not(:disabled){filter:none;background:var(--surface-2);color:var(--ink)}.app-shell .btn.icon{padding:7px;width:34px;height:34px}.app-shell .field label,.modal-backdrop .field label,.login-wrap .field label{font-size:12.5px;font-weight:600;color:var(--ink-2)}.app-shell .field input,.app-shell .field select,.modal-backdrop .field input,.modal-backdrop .field select,.login-wrap .field input,.login-wrap .field select,.app-shell input[type=search],.app-shell input[type=text]{background:var(--surface);border:1px solid var(--line);border-radius:8px;color:var(--ink)}.app-shell .field input:focus,.app-shell .field select:focus,.modal-backdrop .field input:focus,.modal-backdrop .field select:focus,.login-wrap .field input:focus{border-color:var(--leaf);box-shadow:0 0 0 3px #2f6b3a24;outline:none}.app-shell .switch input:checked+.track{background:var(--leaf)}.app-shell .switch .track{background:#d9cfbd}.modal-backdrop{background:#161e1673}.modal-backdrop .modal{background:var(--surface);border-radius:12px;border:1px solid var(--line);color:var(--ink)}.modal-backdrop .modal h2{display:flex;align-items:center;gap:9px;font-family:var(--font-head);font-size:22px;font-weight:560;letter-spacing:-.01em;font-variation-settings:"SOFT" 50}.modal-backdrop .modal h2 svg{flex:none}.modal-backdrop .muted,.app-shell .muted{color:var(--ink-3)}.app-shell .empty-state{color:var(--ink-3);font-size:13.5px}.app-shell .empty-state svg{display:block;margin:0 auto 10px;font-size:30px;color:#c7bba4}.app-shell .error-text{color:var(--cherry)}.app-shell .ok-text{color:var(--leaf)}.app-shell .live-dot.on{background:#4a9a57}.app-shell .lang-toggle{border-color:var(--line);border-radius:7px}.app-shell .lang-toggle button{font-family:var(--font-mono);letter-spacing:.04em}.app-shell .lang-toggle button.on{background:var(--leaf)}.app-shell .grafana-frame{border-radius:var(--radius);border:1px solid var(--line)}.app-shell .fresh{animation-name:fresh-flash-leaf}@keyframes fresh-flash-leaf{0%{background:#4a9a5747}to{background:transparent}}.app-shell .zone-map-box{background:var(--leaf-soft);border-color:#c8d8b8}.app-shell .bottom-nav{background:var(--surface);border-top:1px solid var(--line)}.app-shell .bottom-nav button{color:var(--ink-3);font-size:10.5px}.app-shell .bottom-nav button .ico{display:inline-flex;font-size:22px}.app-shell .bottom-nav button.active{color:var(--leaf)}.login-wrap .login-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:none}.login-wrap .login-card .ico-circle{border-radius:12px;width:60px;height:60px;font-size:30px;background:color-mix(in srgb,var(--accent) 13%,var(--surface));color:var(--accent)}.login-wrap .login-card h1{font-family:var(--font-head);font-weight:560;font-size:28px;letter-spacing:-.015em;font-variation-settings:"SOFT" 50}.login-wrap .link-btn{color:var(--leaf)}.swal2-popup{font-family:IBM Plex Sans,system-ui,sans-serif!important;border-radius:12px!important;background:#fffdf8!important;color:#1d271f!important}.swal2-title{font-family:"IBM Plex Serif",Georgia,serif!important;font-weight:560!important;letter-spacing:-.01em}.swal2-toast .swal2-title{font-family:IBM Plex Sans,system-ui,sans-serif!important;font-weight:500!important}.swal2-styled{border-radius:8px!important;font-weight:600!important}.app-shell .node-card{display:flex;flex-direction:column;gap:16px;border-left:4px solid var(--node, var(--line))}.app-shell .node-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.app-shell .node-card-head h3{font-size:23px}.app-shell .node-readings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.app-shell .node-reading{background:var(--surface-2);border:1px solid var(--line-2);border-radius:8px;padding:10px 12px}.app-shell .node-reading-value{font-family:var(--font-head);font-size:32px;font-weight:500;line-height:1.1;margin-top:6px;letter-spacing:-.02em;font-variant-numeric:tabular-nums lining-nums;font-variation-settings:"SOFT" 30}.app-shell .node-action{flex:1;display:flex;flex-direction:column;gap:8px;border:1px solid;border-radius:8px;padding:14px 16px}.app-shell .node-action p{margin:0;font-size:15px;line-height:1.55;color:var(--ink)}.app-shell .node-action-tag{align-self:flex-start;padding:3px 9px;border-radius:5px;color:#fff;font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase}.app-shell .node-action.tone-cherry{background:var(--cherry-soft);border-color:#e8c1b8}.app-shell .node-action.tone-cherry .node-action-tag{background:var(--cherry)}.app-shell .node-action.tone-amber{background:var(--amber-soft);border-color:#e8d09f}.app-shell .node-action.tone-amber .node-action-tag{background:var(--amber)}.app-shell .node-action.tone-leaf{background:var(--leaf-soft);border-color:#c8d8b8}.app-shell .node-action.tone-leaf .node-action-tag{background:var(--leaf)}.app-shell .node-action.tone-offline{background:var(--surface-2);border-color:var(--line)}.app-shell .node-action.tone-offline .node-action-tag{background:var(--ink-3)}.app-shell .node-card-empty{display:flex;flex-direction:column;align-items:center;justify-content:center}@media (max-width: 520px){.app-shell .node-readings{gap:6px}.app-shell .node-reading{padding:8px 9px}.app-shell .node-reading-value{font-size:24px}.app-shell .node-action p{font-size:14.5px}}.app-shell .auto-head{display:flex;align-items:center;gap:14px}.app-shell .auto-valve-num{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-weight:800;font-size:17px;background:var(--surface-2);color:var(--muted);flex:none}.app-shell .auto-valve-num.on{background:var(--leaf-soft);color:var(--green)}.app-shell .auto-rules{margin:0;padding-left:18px;font-size:13px;line-height:1.55;color:var(--ink-2)}.app-shell .auto-rules li+li{margin-top:5px}.app-shell .auto-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}.app-shell .auto-field{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--ink-2)}.app-shell .auto-field input{padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-size:14px;color:var(--ink)}.app-shell .auto-field input:focus{outline:2px solid var(--leaf);outline-offset:1px}.app-shell .auto-field input:disabled{background:var(--surface-2);color:var(--ink-3)}.app-shell .cards-top{align-items:start}.app-shell .card-head{display:flex;align-items:center;justify-content:space-between;gap:6px 10px;flex-wrap:wrap}.app-shell .card-head h3{margin-bottom:0}.app-shell .card-sub{font-size:13px;color:var(--ink-2);margin:6px 0 10px}.app-shell .status-list{list-style:none;margin:0;padding:0}.app-shell .status-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid var(--line-2);font-size:13px}.app-shell .status-list li>:first-child{flex:1 1 auto;min-width:0}.app-shell .status-list li>:last-child{text-align:right;flex:0 1 auto;min-width:0;overflow-wrap:break-word}.app-shell .status-list .health-row,.app-shell .status-list .action-by{white-space:nowrap}.app-shell .status-list li>:last-child:is(.risk-chip){flex:none}@media (max-width: 480px){.app-shell .status-list li.status-row{flex-wrap:wrap;row-gap:2px}.app-shell .status-list li.status-row>:last-child{flex-basis:100%;text-align:left;padding-left:17px}}.app-shell .status-note{margin:2px 0 0;font-size:12px;color:var(--ink-3)}.app-shell .health-row{display:inline-flex;align-items:center;gap:9px}.app-shell .health-dot{width:8px;height:8px;border-radius:50%;flex:none}.app-shell .health-dot.ok{background:var(--green)}.app-shell .health-dot.bad{background:var(--cherry);box-shadow:0 0 0 3px var(--cherry-soft)}.app-shell .health-bad-text{color:var(--cherry);font-size:12.5px}.app-shell .health-badge{white-space:nowrap;font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;padding:3px 8px;border-radius:6px}.app-shell .health-badge.ok{background:var(--leaf-soft);color:var(--leaf)}.app-shell .health-badge.warn{background:var(--cherry-soft);color:var(--cherry)}.app-shell .dl-wrap{position:relative;display:inline-block}.app-shell .dl-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:60;width:290px;display:flex;flex-direction:column;gap:6px;padding:14px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px -12px #1d271f59;text-align:left}.app-shell .dl-title{font-family:var(--font-head);font-size:16px;font-weight:600;color:var(--ink);margin-bottom:2px}.app-shell .dl-label{font-size:12px;color:var(--ink-2);margin-top:4px}.app-shell .dl-menu select,.app-shell .dl-menu input[type=date]{width:100%;padding:8px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-size:13.5px;color:var(--ink)}.app-shell .dl-seg{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.app-shell .dl-seg button{flex:1;padding:7px 0;border:none;background:var(--surface);font-size:13px;color:var(--ink-2)}.app-shell .dl-seg button+button{border-left:1px solid var(--line)}.app-shell .dl-seg button.on{background:var(--leaf);color:#fff;font-weight:600}.app-shell .dl-range{display:grid;grid-template-columns:1fr 1fr;gap:8px}.app-shell .dl-range label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-2)}.app-shell .dl-hint{font-size:11.5px;color:var(--ink-3);line-height:1.4;margin:4px 0 6px}@media (max-width: 560px){.app-shell .dl-menu{position:fixed;left:12px;right:12px;top:120px;width:auto}}.app-shell .act-list,.modal-backdrop .act-list{display:flex;flex-direction:column;gap:6px}.modal-backdrop .field .act-option{display:flex;align-items:center;justify-content:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;margin:0;text-align:left;font-size:13.5px;font-weight:500;color:var(--ink);cursor:pointer;background:var(--surface)}.modal-backdrop .field .act-option.on{border-color:var(--leaf);background:var(--leaf-soft)}.modal-backdrop .field .act-option input[type=radio]{flex:none;width:16px;height:16px;margin:0;padding:0;border:none;box-shadow:none;background:none;accent-color:var(--leaf)}.modal-backdrop .act-note{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:8px;font-family:var(--font-ui);font-size:13.5px;resize:vertical}.app-shell .alert-reminder{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;color:var(--cherry);background:var(--cherry-soft);padding:2px 7px;border-radius:6px}.app-shell .alert-action{border-left:3px solid var(--leaf);padding:2px 0 2px 10px}.app-shell .alert-action strong{font-size:13.5px;color:var(--leaf)}.app-shell .alert-action p{font-size:13px;margin-top:3px}.app-shell .node-alert{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:10px;padding:9px 11px;border-radius:8px;background:var(--cherry-soft);color:var(--cherry);font-size:13px;font-weight:600}.app-shell .node-last-action{margin-top:8px;font-size:12.5px;color:var(--ink-2)}.app-shell .banner-row .btn,.app-shell .dl-wrap>.btn{white-space:nowrap}.app-shell .pill{white-space:nowrap}.app-shell .about-card{padding:0}.app-shell .about-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 13px;background:none;border:none;color:inherit;cursor:pointer;text-align:left}.app-shell .about-toggle .about-title{margin:0}.app-shell .about-toggle:hover .about-title{color:#fff}.app-shell .about-toggle:focus-visible{outline:2px solid #b9d3a3;outline-offset:-2px;border-radius:8px}.app-shell .about-caret{color:#cfe0c3;transition:transform .15s ease}.app-shell .about-card.open .about-caret{transform:rotate(180deg)}.app-shell .about-body{padding:0 13px 12px}.app-shell .about-sub{margin:2px 0 4px;font-size:11px;color:#dfe8d999}.app-shell .about-sub+.about-parts,.app-shell .about-sub+.about-bands{margin-bottom:8px}.app-shell .about-parts,.app-shell .about-bands{list-style:none;margin:0;padding:0;display:grid;gap:3px}.app-shell .about-parts li,.app-shell .about-bands li{display:flex;align-items:center;gap:7px;font-size:12px}.app-shell .about-pts{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:#cfe0c3}.app-shell .about-dot{width:9px;height:9px;border-radius:50%;flex:none;box-shadow:0 0 0 1.5px #ffffff8c}@media (prefers-reduced-motion: reduce){.app-shell .about-caret{transition:none}}.app-shell .rule-chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.app-shell .rule-chips li{font-size:12.5px;padding:5px 10px;border-radius:999px;background:#ffffffa6;border:1px solid var(--line);color:var(--ink-2)}.app-shell .rule-chips strong{color:var(--ink)}.app-shell details.more{margin-top:10px;font-size:12.5px}.app-shell details.more>summary{cursor:pointer;width:fit-content;color:var(--leaf);font-weight:600;list-style:none;display:inline-flex;align-items:center;gap:6px}.app-shell details.more>summary::-webkit-details-marker{display:none}.app-shell details.more>summary:before{content:"";width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .15s ease;margin-right:2px}.app-shell details.more[open]>summary:before{transform:rotate(45deg)}.app-shell details.more>summary:focus-visible{outline:2px solid var(--leaf);outline-offset:3px;border-radius:4px}.app-shell details.more .auto-rules{margin-top:8px}@media (prefers-reduced-motion: reduce){.app-shell details.more>summary:before{transition:none}}.grafana-wrap{position:relative;flex:1;min-height:480px;display:flex}.grafana-wrap iframe{flex:1;border:none;width:100%;background:#fff;opacity:0}.grafana-wrap iframe.ready{opacity:1;transition:opacity .45s ease}.brew-loader{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;background:var(--surface)}.brew-loader.gone{opacity:0;pointer-events:none;transition:opacity .45s ease}.brew-beans{display:flex;align-items:flex-end;gap:18px;height:64px}.brew-slot{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:64px}.brew-bean{width:24px;height:32px;animation:brew-hop 1.25s cubic-bezier(.45,0,.3,1) var(--d, 0s) infinite}.brew-bean-body{fill:var(--coffee)}.brew-bean-shine{fill:#fff;opacity:.16}.brew-bean-crease{fill:none;stroke:var(--coffee-soft);stroke-width:2.1;stroke-linecap:round}.brew-shadow{width:22px;height:5px;margin-top:4px;border-radius:50%;background:var(--coffee);opacity:.18;animation:brew-shadow 1.25s cubic-bezier(.45,0,.3,1) var(--d, 0s) infinite}.brew-caption{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin:0}.brew-caption:after{content:"";display:inline-block;width:1.5em;text-align:left;animation:brew-dots 1.5s steps(4,end) infinite}@keyframes brew-hop{0%,55%,to{transform:translateY(0) rotate(-16deg)}25%{transform:translateY(-22px) rotate(14deg)}}@keyframes brew-shadow{0%,55%,to{transform:scaleX(1);opacity:.2}25%{transform:scaleX(.55);opacity:.08}}@keyframes brew-dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}@media (prefers-reduced-motion: reduce){.brew-bean,.brew-shadow,.brew-caption:after{animation:none}.grafana-wrap iframe,.brew-loader{transition:none}}.brew-slot.mid{z-index:1}.brew-plant{position:absolute;left:50%;bottom:31px;width:64px;height:83px;overflow:visible;transform:translate(-50%);pointer-events:none}.brew-stem{fill:none;stroke:var(--leaf);stroke-width:2.8;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;animation:brew-stem .7s ease-out .2s forwards}.brew-leaf{transform-box:fill-box;transform-origin:0% 60%;transform:scale(0);animation:brew-unfold .4s cubic-bezier(.3,1.45,.5,1) var(--t, .6s) forwards}.brew-plant>g:nth-last-of-type(1) .brew-leaf{transform-origin:50% 100%}.brew-leaf-blade{fill:var(--leaf)}.brew-leaf-young{fill:#5f9a4c}.brew-leaf-rib{fill:none;stroke:var(--leaf-soft);stroke-width:1;stroke-linecap:round;opacity:.8}.brew-cherry{fill:var(--cherry);transform-box:fill-box;transform-origin:50% 50%;transform:scale(0);animation:brew-pop .3s cubic-bezier(.3,1.6,.5,1) var(--t, 1.3s) forwards}.brew-loader.growing .brew-slot:not(.mid){opacity:0;transform:translateY(8px) scale(.7);transition:opacity .3s ease,transform .3s ease}.brew-loader.growing .mid .brew-bean{animation:brew-settle .35s ease-out forwards}.brew-loader.growing .mid .brew-shadow{animation:none;position:relative;z-index:2;width:50px;height:13px;margin-top:-9px;border-radius:50% 50% 45% 45%/75% 75% 25% 25%;background:#8a6a4a;opacity:1;transform:none;transition:width .3s ease,height .3s ease}.brew-caption.still:after{content:"";animation:none}.brew-caption.still{color:var(--leaf);transition:color .3s ease}@keyframes brew-stem{to{stroke-dashoffset:0}}@keyframes brew-unfold{0%{transform:scale(0)}to{transform:scale(var(--s, 1))}}@keyframes brew-pop{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes brew-settle{0%{transform:translateY(-6px) rotate(-10deg)}to{transform:translateY(5px) rotate(0)}}@media (prefers-reduced-motion: reduce){.brew-stem{animation:none;stroke-dashoffset:0}.brew-leaf{animation:none;transform:scale(var(--s, 1))}.brew-cherry{animation:none;transform:none}}
