.weather-card{background:var(--white);border:1px solid var(--ink-10);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);min-width:0;margin-bottom:1rem;padding:1rem}.weather-hourly-chart{width:100%;min-width:0;overflow:hidden}.weather-chart-svg{cursor:crosshair;border-radius:var(--radius-md);outline:none;width:100%;height:auto;display:block}.weather-chart-svg:focus-visible{outline:2px solid var(--leaf);outline-offset:2px}.weather-chart-controls{flex-wrap:wrap;gap:.375rem;margin-bottom:.5rem;display:flex}.weather-chart-hint{color:var(--ink-60);overflow-wrap:anywhere;margin:0 0 .35rem;font-size:.72rem;line-height:1.35}.weather-chart-toggle{border:1px solid var(--ink-20);border-radius:var(--radius-md);background:var(--white);color:var(--ink-60);cursor:pointer;white-space:normal;align-items:center;gap:.25rem;min-width:0;max-width:100%;padding:.25rem .5rem;font-family:inherit;font-size:.75rem;transition:background .15s,border-color .15s;display:inline-flex}.weather-chart-toggle:hover{background:var(--cream);border-color:var(--ink-40)}.weather-chart-toggle[aria-pressed=true]{background:var(--cream);border-color:var(--leaf);color:var(--ink)}.weather-chart-swatch{border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.weather-chart-label{overflow-wrap:anywhere;line-height:1.2}.weather-tooltip{background:var(--cream);border:1px solid var(--ink-10);border-radius:var(--radius-md);min-width:0;max-width:100%;margin-top:.5rem;padding:.5rem .625rem;font-size:.8rem;overflow:hidden}.weather-tooltip-time{margin-bottom:.25rem;font-size:.85rem;font-weight:600}.weather-tooltip-grid{flex-wrap:wrap;gap:.375rem .75rem;min-width:0;display:flex}.weather-tooltip-row{white-space:normal;align-items:center;gap:.25rem;min-width:0;max-width:100%;display:inline-flex}.weather-tooltip-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.weather-tooltip-label{color:var(--ink-60);font-size:.75rem}.weather-tooltip-value{color:var(--ink);font-weight:600}.remote-sensing-fields{gap:.85rem;margin:0 0 1rem;display:grid}.remote-sensing-card{background:var(--white);border:1px solid var(--ink-10);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.remote-sensing-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;padding:.45rem;display:flex}.remote-sensing-card-toggle{border-radius:var(--radius-md);min-width:0;color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:0;flex:260px;justify-content:space-between;align-items:center;gap:.75rem;padding:.35rem .4rem;display:flex}.remote-sensing-card-toggle:hover{background:var(--cream)}.remote-sensing-card-toggle>span{flex-direction:column;gap:.1rem;min-width:0;display:flex}.remote-sensing-card-toggle strong{overflow-wrap:anywhere;font-size:.95rem}.remote-sensing-card-toggle>svg{color:var(--ink-60);flex:none}.remote-sensing-kicker{color:var(--ink-60);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:.3rem;font-size:.68rem;font-weight:700;display:flex}.remote-sensing-tabs{background:var(--cream);border:1px solid var(--ink-10);border-radius:999px;padding:.2rem;display:inline-flex}.remote-sensing-tabs button{color:var(--ink-60);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:.3rem .65rem;font-size:.75rem;font-weight:600}.remote-sensing-tabs button.active{background:var(--ink);color:var(--white);box-shadow:var(--shadow-sm)}.remote-sensing-status{min-height:210px;color:var(--ink-60);text-align:center;background:#e7e3d6;justify-content:center;align-items:center;gap:.45rem;padding:1rem;font-size:.8rem;display:flex}.remote-sensing-status.error{color:var(--red)}.remote-sensing-figure{margin:0}.remote-sensing-image-wrap{aspect-ratio:8/5;background:#d9d4c5;position:relative;overflow:hidden}.remote-sensing-image-wrap img{object-fit:fill;width:100%;height:100%;display:block}.remote-sensing-image-wrap svg{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.remote-sensing-image-wrap polygon{fill:#ffffff14;stroke:#fff;stroke-width:2.5px;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px #000000d9)}.remote-sensing-tooltip{z-index:2;border-radius:var(--radius-md);min-width:190px;max-width:min(260px,80%);color:var(--white);pointer-events:none;box-shadow:var(--shadow-md);background:#231f1beb;border:1px solid #ffffff4d;flex-direction:column;gap:.12rem;padding:.55rem .65rem;font-size:.7rem;line-height:1.35;display:flex;position:absolute;transform:translate(-50%,calc(-100% - 10px))}.remote-sensing-tooltip span{color:#ffffffd1}.remote-sensing-tooltip small{color:#ffffff9e;margin-top:.15rem;font-size:.62rem}.remote-sensing-figure figcaption{border-top:1px solid var(--ink-10);color:var(--ink-60);flex-wrap:wrap;align-items:center;gap:.35rem .75rem;padding:.55rem .75rem;font-size:.68rem;display:flex}.remote-sensing-figure figcaption a{color:var(--leaf-dark);align-items:center;gap:.2rem;margin-left:auto;font-weight:600;display:inline-flex}.remote-sensing-section{margin-bottom:1rem}.remote-sensing-section .remote-sensing-fields{margin-bottom:0}.setup-page{--setup-night:#20352a;--setup-mint:#dce9df;max-width:1060px;margin:0 auto}.setup-heading{justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.25rem;display:flex}.setup-heading h2{margin-top:.15rem;font-size:clamp(1.6rem,4vw,2.25rem);line-height:1.15}.setup-heading p{color:var(--ink-60);max-width:42rem;margin-top:.35rem}.setup-heading-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.setup-eyebrow,.setup-kicker{color:var(--leaf);letter-spacing:.12em;text-transform:uppercase;font-size:.72rem;font-weight:700}.setup-serial{border:1px solid var(--ink-10);background:var(--white);color:var(--ink-60);border-radius:999px;flex-shrink:0;padding:.45rem .75rem;font-size:.8rem}.setup-serial strong{color:var(--ink);font-family:ui-monospace,monospace}.setup-progress{counter-reset:setup-step;grid-template-columns:repeat(4,1fr);margin:0 0 1rem;padding:0;list-style:none;display:grid}.setup-progress-three{grid-template-columns:repeat(3,1fr)}.setup-progress li{color:var(--ink-40);align-items:center;gap:.55rem;font-size:.78rem;font-weight:600;display:flex;position:relative}.setup-progress li:not(:last-child):after{content:"";z-index:-1;background:var(--ink-10);height:1px;position:absolute;top:50%;left:2rem;right:.5rem}.setup-progress li.active{color:var(--ink)}.setup-progress li.complete{color:var(--leaf)}.setup-progress li.complete:after{background:var(--leaf-light)}.setup-step-number{border:1px solid var(--ink-20);background:var(--cream);border-radius:50%;flex:0 0 1.75rem;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;font-size:.75rem;display:inline-flex}.setup-step-number svg{width:.85rem}.setup-progress li.active .setup-step-number{border-color:var(--leaf);background:var(--leaf);color:var(--white)}.setup-progress li.complete .setup-step-number{border-color:var(--leaf);background:var(--setup-mint)}.setup-stage{border:1px solid var(--ink-10);background:radial-gradient(circle at 90% 10%, #6b9e7a24, transparent 33%), var(--white);min-height:510px;box-shadow:var(--shadow-md);border-radius:18px;overflow:hidden}.setup-identify,.setup-status-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:510px;padding:clamp(2rem,7vw,5rem);display:flex}.setup-identify h3,.setup-status-state h3,.setup-connect-copy h3,.setup-aim-panel h3{margin:.45rem 0 .65rem;font-size:clamp(1.4rem,3vw,2rem);line-height:1.2}.setup-identify>p,.setup-status-state>p,.setup-connect-copy>p,.setup-aim-panel>p{max-width:35rem;color:var(--ink-60)}.setup-icon-orbit{background:var(--setup-mint);width:4.5rem;height:4.5rem;color:var(--leaf-dark);border:1px solid #4a7c5940;border-radius:50%;place-items:center;margin-bottom:1.25rem;display:grid;box-shadow:0 0 0 10px #dce9df73}.setup-icon-orbit svg{width:2rem;height:2rem}.setup-icon-orbit.error{color:var(--red);background:#f7e6e4;border-color:#b4433c40;box-shadow:0 0 0 10px #f7e6e473}.setup-icon-orbit.success{color:var(--leaf-dark)}.setup-icon-orbit.searching svg{animation:1.4s linear infinite setup-spin}@keyframes setup-spin{to{transform:rotate(360deg)}}.setup-serial-form{text-align:left;width:min(100%,31rem);margin-top:1.5rem}.setup-serial-form label{margin-bottom:.4rem;font-size:.8rem;font-weight:600;display:block}.setup-serial-form>div{gap:.5rem;display:flex}.setup-serial-form .input{text-transform:uppercase;flex:1;min-width:0;font-family:ui-monospace,monospace}.setup-scan-hint{align-items:center;gap:.4rem;margin-top:1.25rem;font-size:.78rem;display:flex;color:var(--ink-40)!important}.setup-base-form{gap:.5rem;display:grid}.setup-base-form label:not(:first-child){margin-top:.65rem}.setup-base-form .setup-primary-action{justify-self:start}.setup-product-page{padding-top:clamp(1rem,3vw,2rem)}.setup-product-page .setup-heading{max-width:48rem;margin-bottom:2rem}.setup-product-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.setup-product-card{border:1px solid var(--ink-10);background:var(--white);min-height:330px;color:var(--ink);text-align:left;box-shadow:var(--shadow-sm);border-radius:18px;flex-direction:column;align-items:flex-start;padding:1.5rem;transition:transform .16s,border-color .16s,box-shadow .16s;display:flex;position:relative;overflow:hidden}.setup-product-card:after{content:"";background:#6b9e7a1f;border-radius:50%;width:9rem;height:9rem;position:absolute;bottom:-4rem;right:-3rem}.setup-product-card:nth-child(2):after{background:#b17a4221}.setup-product-card:nth-child(3){background:var(--setup-night);color:var(--white)}.setup-product-card:nth-child(3):after{background:#9dccaa21}.setup-product-card:hover{border-color:var(--leaf);box-shadow:var(--shadow-md);transform:translateY(-3px)}.setup-product-card:focus-visible{outline-offset:3px;outline:3px solid #4a7c5947}.setup-product-icon{background:var(--setup-mint);width:3.25rem;height:3.25rem;color:var(--leaf-dark);border-radius:14px;place-items:center;margin-bottom:2.5rem;display:grid}.setup-product-card:nth-child(2) .setup-product-icon{color:#87582f;background:#f3e6d8}.setup-product-card:nth-child(3) .setup-product-icon{color:#b8ddc2;background:#9dccaa29}.setup-product-icon svg{width:1.6rem;height:1.6rem}.setup-product-eyebrow{color:var(--leaf);letter-spacing:.12em;text-transform:uppercase;margin-bottom:.45rem;font-size:.68rem;font-weight:800}.setup-product-card:nth-child(3) .setup-product-eyebrow{color:#9dccaa}.setup-product-card>strong{font-size:1.35rem}.setup-product-copy{color:var(--ink-60);margin-top:.65rem;font-size:.85rem;line-height:1.55}.setup-product-card:nth-child(3) .setup-product-copy{color:#ffffffad}.setup-product-meta{color:var(--ink-40);margin-top:auto;padding-top:1.5rem;font-size:.72rem;font-weight:700}.setup-product-card:nth-child(3) .setup-product-meta{color:#ffffff7a}.setup-future-note{color:var(--ink-40);text-align:center;margin-top:1rem;font-size:.75rem}.setup-connect-layout,.setup-preview-layout{grid-template-columns:minmax(0,1.25fr) minmax(260px,.75fr);min-height:510px;display:grid}.setup-connect-copy,.setup-aim-panel{flex-direction:column;justify-content:center;align-items:flex-start;padding:clamp(2rem,5vw,4rem);display:flex}.setup-network{border:1px solid var(--ink-10);border-radius:var(--radius-lg);background:var(--cream);align-items:center;gap:.75rem;width:100%;margin-top:1.5rem;padding:.9rem 1rem;display:flex}.setup-network>svg{color:var(--leaf)}.setup-network div{flex-direction:column;flex:1;min-width:0;display:flex}.setup-network small{color:var(--ink-60);font-size:.68rem}.setup-network strong{overflow-wrap:anywhere;font-family:ui-monospace,monospace}.setup-network>span{color:var(--ink-40);font-size:.7rem}.setup-warning{border-radius:var(--radius-md);color:#765719;background:#fbf4e5;align-items:flex-start;gap:.55rem;margin-top:1rem;padding:.75rem;font-size:.78rem;display:flex}.setup-warning svg{flex:0 0 1rem;width:1rem;height:1rem;margin-top:.1rem}.setup-warning.danger{color:#8c332e;background:#f8e9e7}.setup-primary-action{min-height:44px;margin-top:1.5rem}.setup-phone-guide{background:var(--setup-night);color:var(--white);flex-direction:column;justify-content:center;padding:clamp(2rem,5vw,4rem);display:flex}.setup-phone-guide>svg{color:#9dccaa;width:2rem;height:2rem;margin-bottom:1rem}.setup-phone-guide h4{margin-bottom:1.25rem;font-size:1.05rem}.setup-phone-guide div{border-bottom:1px solid #ffffff1f;flex-direction:column;margin-bottom:.8rem;padding-bottom:.8rem;display:flex}.setup-phone-guide div span{color:#ffffffad;margin-top:.15rem;font-size:.78rem}.setup-phone-guide small{color:#ffffff80}.setup-base-network-guide p{color:#ffffffad;margin-bottom:1.5rem;font-size:.85rem;line-height:1.55}.setup-poll-dots{gap:.35rem;margin-top:1.5rem;display:flex}.setup-poll-dots span{background:var(--leaf);border-radius:50%;width:.45rem;height:.45rem;animation:1s ease-in-out infinite alternate setup-pulse}.setup-poll-dots span:nth-child(2){animation-delay:.2s}.setup-poll-dots span:nth-child(3){animation-delay:.4s}@keyframes setup-pulse{to{opacity:.25;transform:translateY(-3px)}}.setup-state-actions{flex-wrap:wrap;justify-content:center;gap:.65rem;margin-top:1.5rem;display:flex}.setup-preview-column{background:#18231d;flex-direction:column;min-width:0;padding:1.25rem;display:flex}.setup-preview-header{color:#ffffffa6;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;font-size:.75rem;display:flex}.setup-preview-header div{align-items:center;gap:.45rem;display:flex}.setup-preview-header strong{color:var(--white)}.setup-live-dot{background:#7fd094;border-radius:50%;width:.5rem;height:.5rem;display:inline-block;box-shadow:0 0 0 4px #7fd0941f}.setup-live-dot.offline{background:var(--red);box-shadow:0 0 0 4px #b4433c26}.setup-preview{border-radius:var(--radius-lg);background:#0c120f;flex:1;place-items:center;min-height:390px;display:grid;position:relative;overflow:hidden}.setup-preview img{object-fit:contain;opacity:0;width:100%;height:100%;position:absolute}.setup-preview.loaded img{opacity:1}.setup-preview-placeholder{color:#ffffff73;align-items:center;gap:.5rem;font-size:.8rem;display:flex}.setup-preview-placeholder svg{width:1.25rem}.setup-live-label{z-index:1;color:var(--white);letter-spacing:.12em;background:#b4433ce0;border-radius:4px;padding:.2rem .45rem;font-size:.62rem;font-weight:800;position:absolute;top:.75rem;left:.75rem}.setup-aim-panel{background:var(--white)}.setup-checklist{color:var(--ink-60);gap:.65rem;margin-top:1.25rem;padding:0;font-size:.82rem;list-style:none;display:grid}.setup-checklist li{align-items:flex-start;gap:.5rem;display:flex}.setup-checklist svg{width:1rem;height:1rem;color:var(--leaf);flex:0 0 1rem;margin-top:.15rem}.setup-start-over{color:var(--ink-40);background:0 0;border:none;margin-top:.75rem;font-size:.75rem}.setup-start-over:hover{color:var(--ink);text-decoration:underline}.setup-countdown{color:var(--ink-60);align-items:baseline;gap:.4rem;margin:1.25rem 0;display:flex}.setup-countdown strong{color:var(--leaf-dark);font-size:2.5rem;line-height:1}.setup-countdown span{text-transform:uppercase;letter-spacing:.08em;font-size:.75rem}@media (width<=768px){.setup-heading{flex-direction:column;align-items:flex-start}.setup-heading-actions{justify-content:flex-start}.setup-product-grid{grid-template-columns:1fr}.setup-product-card{min-height:250px}.setup-product-icon{margin-bottom:1.5rem}.setup-progress li{justify-content:center}.setup-progress li>span:last-child{display:none}.setup-progress li:not(:last-child):after{left:calc(50% + 1rem);right:calc(1rem - 50%)}.setup-stage,.setup-identify,.setup-status-state,.setup-connect-layout,.setup-preview-layout{min-height:0}.setup-connect-layout,.setup-preview-layout{grid-template-columns:1fr}.setup-phone-guide{padding:1.5rem}.setup-preview-column{min-height:400px}.setup-preview{min-height:330px}.setup-connect-copy,.setup-aim-panel,.setup-identify,.setup-status-state{padding:2rem 1.25rem}}@media (width<=420px){.setup-serial-form>div{flex-direction:column}.setup-base-form .setup-primary-action{justify-content:center;width:100%}.setup-network>span{display:none}.setup-preview-column{min-height:320px;padding:.75rem}.setup-preview{min-height:260px}}@media (prefers-reduced-motion:reduce){.setup-icon-orbit.searching svg,.setup-poll-dots span{animation:none}}.field-reviews{gap:1rem;display:grid}.field-review-hero{min-height:180px;color:var(--white);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);background:linear-gradient(125deg,#244d35 0%,#4a7c59 62%,#7e9b62 100%);justify-content:space-between;align-items:flex-end;gap:2rem;padding:2rem;display:flex;position:relative;overflow:hidden}.field-review-hero:after{content:"";border:1px solid #ffffff38;border-radius:50%;width:250px;height:250px;position:absolute;top:-145px;right:12%;box-shadow:0 0 0 42px #ffffff0d,0 0 0 84px #ffffff0a}.field-review-hero>*{z-index:1;position:relative}.field-review-hero h1{margin:.2rem 0 .5rem;font-size:clamp(1.75rem,4vw,2.5rem);line-height:1.1}.field-review-hero p:last-child{color:#ffffffd1;max-width:620px}.field-review-hero .btn{background:var(--white);color:var(--leaf-dark);flex-shrink:0}.field-review-hero .btn:hover{background:var(--cream)}.field-review-kicker{letter-spacing:.12em;text-transform:uppercase;opacity:.75;font-size:.72rem;font-weight:700}.field-review-form{border-top:4px solid var(--leaf);padding:1.25rem}.field-review-form-heading,.field-review-entry-head,.field-review-actions{justify-content:space-between;gap:1rem;display:flex}.field-review-form-heading{align-items:flex-start;margin-bottom:1.25rem}.field-review-form-heading h2{font-size:1.25rem}.field-review-form-grid{grid-template-columns:repeat(4,1fr);gap:1rem;display:grid}.field-review-form textarea,.field-review-toolbar input,.field-review-toolbar select{border:1px solid var(--ink-20);border-radius:var(--radius-md);background:var(--white);width:100%;color:var(--ink);font:inherit}.field-review-form textarea{resize:vertical;padding:.625rem .75rem}.field-review-form textarea:focus,.field-review-toolbar input:focus,.field-review-toolbar select:focus{outline:2px solid var(--leaf);outline-offset:1px}.field-review-capture-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.field-review-capture{text-align:center;border:1px dashed var(--ink-20);border-radius:var(--radius-lg);background:var(--cream);cursor:pointer;align-content:center;place-items:center;gap:.25rem;min-height:130px;padding:1rem;display:grid}.field-review-capture:hover{border-color:var(--leaf)}.field-review-capture>svg{color:var(--leaf)}.field-review-capture span{color:var(--ink-60);font-size:.8rem}.field-review-capture input{opacity:0;block-size:1px;inline-size:1px;position:absolute}.field-review-capture.recording{border-color:var(--red);background:#fff4f2}.field-review-capture.recording>svg{color:var(--red)}.field-review-audio-actions{flex-wrap:wrap;justify-content:center;gap:.25rem;display:flex}.field-review-audio-actions input{opacity:0;block-size:1px;inline-size:1px;position:absolute}.field-review-actions{justify-content:flex-end;margin-top:1.25rem}.field-review-toolbar{justify-content:space-between;align-items:flex-end;gap:1rem;padding:1rem;display:flex}.field-review-filters{flex:1;grid-template-columns:minmax(150px,1.4fr) minmax(150px,1.4fr) minmax(130px,1fr) minmax(130px,1fr);gap:.75rem;display:grid}.field-review-filters label{color:var(--ink-60);gap:.25rem;font-size:.75rem;font-weight:600;display:grid}.field-review-toolbar input,.field-review-toolbar select{min-height:38px;padding:.4rem .55rem}.field-review-toolbar .btn{white-space:nowrap;min-height:38px}.field-review-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.field-review-entry{padding:1.25rem}.field-review-entry-head{border-bottom:1px solid var(--ink-10);align-items:flex-start;padding-bottom:.85rem}.field-review-entry-head h2{font-size:1.15rem}.field-review-entry-head time{color:var(--ink-60);flex-shrink:0;font-size:.78rem}.field-review-location{color:var(--leaf);text-transform:uppercase;letter-spacing:.06em;font-size:.75rem;font-weight:700}.field-review-note{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:1rem}.field-review-media{grid-template-columns:repeat(3,1fr);gap:.5rem;margin-top:1rem;display:grid}.field-review-media img{aspect-ratio:1;object-fit:cover;border-radius:var(--radius-md);width:100%}.field-review-media audio{grid-column:1/-1;width:100%;height:38px}.field-review-author{color:var(--ink-40);margin-top:1rem;font-size:.75rem}.field-review-state{text-align:center;color:var(--ink-60);padding:3rem}.field-review-empty{text-align:center;color:var(--ink-60);padding:3rem 1rem}.field-review-empty svg{color:var(--leaf);margin:0 auto .75rem}.field-review-empty h2{color:var(--ink);font-size:1.15rem}.field-review-error{color:var(--red);border-radius:var(--radius-md);background:#fff4f2;border:1px solid #e8bbb7;padding:.75rem 1rem}@media (width<=900px){.field-review-form-grid{grid-template-columns:1fr 1fr}.field-review-toolbar{flex-direction:column;align-items:stretch}.field-review-toolbar .btn{align-self:flex-end}}@media (width<=700px){.field-review-hero{flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:1rem;min-height:210px;padding:1.25rem}.field-review-form-grid,.field-review-capture-grid,.field-review-filters,.field-review-list{grid-template-columns:1fr}.field-review-form{padding:1rem}.field-review-toolbar .btn{align-self:stretch}.field-review-entry-head{flex-direction:column;gap:.35rem}}.sensor-detail-page{gap:1rem;display:grid}.sensor-detail-back{justify-self:start;padding-left:0}.sensor-detail-header{color:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-md);background:linear-gradient(125deg,#294f32 0%,#4e7c49 58%,#738d50 100%);flex-wrap:wrap;align-items:flex-start;gap:1rem 1.5rem;padding:1.3rem 1.5rem;display:flex}.sensor-detail-headline{flex:220px;min-width:0}.sensor-detail-header h2{color:#fff;margin:.15rem 0 .3rem}.sensor-detail-header .text-muted{color:#ffffffb8}.sensor-detail-eyebrow{color:#ffffffc2;letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.73rem;font-weight:700}.sensor-detail-status{border-radius:var(--radius-md);background:#ffffff1c;border:1px solid #ffffff2e;gap:.55rem;min-width:220px;padding:.75rem .9rem;font-size:.8rem;display:grid}.sensor-detail-status>span{align-items:center;gap:.45rem;display:flex}.sensor-detail-status .status-dot{outline:2px solid #ffffff47}.sensor-map{border-radius:var(--radius-md);background:#ffffff1c;border:1px solid #ffffff2e;flex:0 0 300px;height:168px;position:relative;overflow:hidden}.sensor-map-canvas{width:100%;height:100%}.sensor-map.svg>svg{width:100%;height:100%;display:block}.sensor-map-bg{fill:#ffffff0f}.sensor-map-field{fill:#ffd16633;stroke:#ffd166;stroke-width:2px;vector-effect:non-scaling-stroke}.sensor-map-device circle:first-of-type{fill:#b9e6c4;stroke:#fff;stroke-width:2.5px}.sensor-map-device-core{fill:#294f32;stroke:none}.sensor-map.empty{color:#ffffffbf;text-align:center;align-content:center;place-items:center;gap:.35rem;font-size:.74rem;display:grid}.sensor-map-veil{opacity:0;pointer-events:none;background:#294f32;transition:opacity .18s;position:absolute;inset:0}.sensor-map.fading .sensor-map-veil{opacity:1}.sensor-map-toggle{z-index:2;background:#ffffffeb;border-radius:999px;display:flex;position:absolute;top:.45rem;left:.45rem;overflow:hidden;box-shadow:0 1px 4px #23231e52}.sensor-map-toggle button{color:var(--ink-60);font:inherit;cursor:pointer;background:0 0;border:0;padding:.2rem .6rem;font-size:.68rem;font-weight:650}.sensor-map-toggle button.active{color:#fff;background:var(--leaf)}.sensor-map-toggle button:disabled{cursor:not-allowed;opacity:.55}@media (prefers-reduced-motion:reduce){.sensor-map-veil{transition:none}}.sensor-last-header{align-items:center}.sensor-last-header h3{margin:0}.sensor-last-header-right{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem .9rem;display:flex}.sensor-last-header-right .toggle-btn{align-items:center;gap:.3rem;display:inline-flex}.sensor-profile{min-width:0}.sensor-profile svg{width:100%;height:auto;display:block}.sensor-profile-ground{stroke:#8a7b5f;stroke-width:2px}.sensor-profile-ground-label{fill:#7d6f55;letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:700}.sensor-profile-mast{fill:#b6bcc4}.sensor-profile-probe{fill:#8f8674}.sensor-profile-device rect{fill:#34523a;stroke:#24381f;stroke-width:1.5px}.sensor-profile-device text{fill:var(--ink);font-size:12px;font-weight:700}.sensor-profile-dot{stroke:#fff;stroke-width:2.5px}.sensor-profile-leader{fill:none;stroke:#23231e52;stroke-width:1.2px;stroke-dasharray:3 2}.sensor-profile-name{fill:var(--ink-60);font-size:11px;font-weight:650}.sensor-profile-value{fill:var(--ink);font-variant-numeric:tabular-nums;font-size:15px;font-weight:700}.sensor-profile-unit{fill:var(--ink-60);font-size:11px;font-weight:600}.sensor-profile-height{fill:var(--ink-40);font-variant-numeric:tabular-nums;font-size:10.5px}.sensor-profile-missing{color:var(--ink-40);margin:.5rem 0 0;font-size:.74rem;line-height:1.5}.sensor-last-time{color:var(--ink-60);font-variant-numeric:tabular-nums;align-items:center;gap:.4rem;font-size:.76rem;display:inline-flex}.sensor-last-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;display:grid}.sensor-last-metric{border:1px solid var(--ink-10);border-radius:var(--radius-md);background:linear-gradient(135deg,#fafbf7,#f0f4eb);align-items:center;gap:.75rem;min-width:0;padding:.85rem .85rem .7rem;transition:border-color .12s;display:flex;position:relative}.sensor-last-metric.selected{border-color:var(--leaf);box-shadow:inset 0 0 0 1px #4e8b5759}.sensor-last-check{cursor:pointer;margin:0;position:absolute;top:.55rem;right:.55rem}.sensor-last-check:disabled{cursor:not-allowed;opacity:.45}.sensor-height-field{align-items:center;gap:.3rem;margin-top:.3rem;display:inline-flex}.sensor-height-field input{width:68px;min-height:26px;color:var(--ink);border:1px solid var(--ink-20);border-radius:var(--radius-sm);font:inherit;font-variant-numeric:tabular-nums;background:#fff;padding:.15rem .35rem;font-size:.72rem}.sensor-height-field input::placeholder{color:var(--ink-40)}.sensor-height-field small{color:var(--ink-40);font-size:.68rem}.sensor-last-icon{background:#fff;border:1px solid;border-radius:14px;flex:0 0 46px;place-items:center;width:46px;height:46px;display:grid;box-shadow:0 3px 10px #23231e12}.sensor-last-icon svg{stroke-width:1.8px;width:27px;height:27px}.sensor-last-copy{gap:.18rem;min-width:0;display:grid}.sensor-last-name{color:var(--ink-60);text-overflow:ellipsis;white-space:nowrap;font-size:.7rem;font-weight:650;overflow:hidden}.sensor-last-value{font-variant-numeric:tabular-nums;align-items:baseline;gap:.3rem;display:flex}.sensor-last-value strong{color:var(--ink);letter-spacing:-.025em;font-size:1.35rem;font-weight:650;line-height:1.1}.sensor-last-value span{color:var(--ink-60);white-space:nowrap;font-size:.72rem}.sensor-detail-controls .card-body{gap:1.2rem;display:grid}.sensor-date-controls{grid-template-columns:minmax(150px,220px) minmax(150px,220px) auto;align-items:end;gap:.75rem;display:grid}.sensor-date-controls label{color:var(--ink-60);gap:.35rem;font-size:.76rem;font-weight:700;display:grid}.sensor-date-controls input{min-height:40px;color:var(--ink);border:1px solid var(--ink-20);border-radius:var(--radius-sm);font:inherit;background:#fff;padding:.45rem .6rem}.sensor-date-controls .btn{min-height:40px}.sensor-selector{border:0;min-width:0;margin:0;padding:0}.sensor-selector legend{margin-bottom:.2rem;font-size:.83rem;font-weight:700}.sensor-selector .text-muted{margin:0 0 .55rem}.sensor-selector-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem;display:grid}.sensor-selector-grid label{background:var(--cream);border:1px solid var(--ink-10);border-radius:var(--radius-sm);cursor:pointer;grid-template-columns:auto 1fr auto;align-items:center;gap:.45rem;min-width:0;padding:.65rem .7rem;transition:border-color .12s,background .12s;display:grid}.sensor-selector-grid label.selected{border-color:var(--leaf);background:#eef6ea}.sensor-selector-grid label:has(input:disabled){cursor:not-allowed;opacity:.55}.sensor-selector-grid span{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.78rem;font-weight:600;overflow:hidden}.sensor-selector-grid small{color:var(--ink-40);font-size:.68rem}.sensor-align-option{cursor:pointer;align-items:flex-start;gap:.55rem;width:fit-content;display:flex}.sensor-align-option input{margin-top:.2rem}.sensor-align-option span{gap:.15rem;font-size:.8rem;display:grid}.sensor-align-option small{max-width:760px;color:var(--ink-60);line-height:1.45}.sensor-detail-loading,.sensor-detail-empty{min-height:150px;color:var(--ink-40);justify-content:center;align-items:center;gap:.55rem;display:flex}.sensor-detail-error{color:var(--red);border-radius:var(--radius-sm);background:#fff2ef;border:1px solid #efc0b8;margin:0;padding:.7rem .85rem;font-size:.8rem}.sensor-detail-graph-card .card-body{padding:.65rem 1rem 1rem}.sensor-detail-chart{min-width:0}.sensor-echart{width:100%;height:420px}.sensor-detail-chart>p{margin:.45rem .2rem 0;line-height:1.5}.sensor-overview-card .card-body{gap:.6rem;display:grid}.sensor-overview-hint{margin:0;line-height:1.5}.sensor-detail-data-card>summary{cursor:pointer;justify-content:space-between;align-items:center;gap:.75rem;list-style:none;display:flex}.sensor-detail-data-card>summary::-webkit-details-marker{display:none}.sensor-detail-data-card>summary:after{content:"+";color:var(--ink-40);font-size:1rem;line-height:1}.sensor-detail-data-card[open]>summary:after{content:"−"}.sensor-detail-data-card>summary>span:first-child{font-weight:650}.sensor-detail-data-actions{padding-bottom:.75rem}.sensor-export-actions{gap:.45rem;display:flex}.sensor-data-table-wrap{border-top:1px solid var(--ink-10);max-height:540px;overflow:auto}.sensor-data-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.76rem}.sensor-data-table th,.sensor-data-table td{text-align:right;border-bottom:1px solid var(--ink-10);white-space:nowrap;padding:.55rem .7rem}.sensor-data-table th{z-index:1;color:var(--ink-60);text-transform:uppercase;background:#f5f4ec;font-size:.7rem;position:sticky;top:0}.sensor-data-table th:first-child,.sensor-data-table td:first-child{text-align:left}.sensor-data-table tbody tr:nth-child(2n){background:#f5f4ec73}@media (width<=760px){.sensor-detail-header{gap:1rem;padding:1.1rem;display:grid}.sensor-detail-status{min-width:0}.sensor-map{flex:auto;width:100%;height:190px}.sensor-last-grid,.sensor-date-controls{grid-template-columns:1fr 1fr}.sensor-date-controls .btn{grid-column:1/-1}.sensor-selector-grid{grid-template-columns:1fr 1fr}.sensor-echart{height:340px}.sensor-detail-data-header{align-items:flex-start;gap:.7rem}}@media (width<=460px){.sensor-last-header{align-items:flex-start;gap:.35rem}.sensor-last-grid,.sensor-date-controls,.sensor-selector-grid{grid-template-columns:1fr}.sensor-export-actions{width:100%}.sensor-export-actions .btn{flex:1}}.firmware-admin-page{gap:1.25rem;display:grid}.firmware-title-row{justify-content:space-between;align-items:end;gap:1rem;display:flex}.firmware-title-row h2{margin:.3rem 0;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.8rem,4vw,2.8rem);font-weight:500;line-height:1.05}.firmware-title-row p{color:var(--ink-60);max-width:680px}.firmware-safety{border-radius:var(--radius-lg);border:1px solid;gap:.8rem;padding:1rem;display:flex}.firmware-safety.ready{color:var(--leaf-dark);background:#edf6ed;border-color:#b7d4bb}.firmware-safety.blocked{color:#745719;background:#fff7e5;border-color:#dfc68f}.firmware-safety>svg{flex:none}.firmware-safety>div{gap:.1rem;display:grid}.firmware-safety span,.firmware-safety code{font-size:.78rem}.firmware-release-note{color:var(--ink-60);align-items:center;gap:.5rem;font-size:.8rem;display:flex}.firmware-tabs{border-bottom:1px solid var(--ink-10);display:flex}.firmware-tabs button{color:var(--ink-60);background:0 0;border:0;border-bottom:3px solid #0000;padding:.65rem 1rem}.firmware-tabs button.active{border-bottom-color:var(--leaf);color:var(--leaf-dark);font-weight:600}.firmware-layout{grid-template-columns:minmax(300px,.75fr) minmax(0,1.25fr);align-items:start;gap:1rem;display:grid}.firmware-upload-card{top:calc(var(--header-height) + 1rem);position:sticky}.firmware-upload-card .card-header,.firmware-admin-page .card-header{align-items:center;gap:.5rem;display:flex}.firmware-form{gap:.8rem;display:grid}.firmware-form>label:not(.firmware-check),.firmware-form-grid label{color:var(--ink-60);gap:.25rem;font-size:.76rem;display:grid}.firmware-form input,.firmware-form textarea,.firmware-form select{border:1px solid var(--ink-20);border-radius:var(--radius-md);width:100%;color:var(--ink);background:var(--white);font:inherit;padding:.5rem .65rem;font-size:.83rem}.firmware-form textarea{resize:vertical;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.firmware-form-grid{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.firmware-check{align-items:center;gap:.5rem;font-size:.82rem;display:flex}.firmware-check input{width:auto}.firmware-build-list,.firmware-assignment-list{gap:.75rem;display:grid}.firmware-build{padding:1rem}.firmware-build-head{align-items:center;gap:.7rem;margin-bottom:.8rem;display:flex}.firmware-build-head>svg{color:var(--leaf)}.firmware-build-head h3{font-size:1.05rem}.firmware-build-head code{color:var(--ink-60);font-size:.72rem}.firmware-state{background:var(--ink-10);color:var(--ink-60);text-transform:uppercase;border-radius:999px;padding:.2rem .55rem;font-size:.66rem;font-weight:700;display:inline-block}.firmware-build-head .firmware-state{margin-left:auto}.firmware-state.state-published,.firmware-state.state-installed,.firmware-state.state-ready{color:var(--leaf-dark);background:#dcecdc}.firmware-state.state-revoked,.firmware-state.state-failed,.firmware-state.state-rejected{color:var(--red);background:#f3dedd}.firmware-state.state-downloading,.firmware-state.state-verifying{color:#315b75;background:#e1eaf2}.firmware-build dl{grid-template-columns:1fr 1fr;gap:.55rem 1rem;display:grid}.firmware-build dl>div{min-width:0}.firmware-build dt{color:var(--ink-40);text-transform:uppercase;letter-spacing:.04em;font-size:.68rem}.firmware-build dd{text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;overflow:hidden}.firmware-actions{justify-content:flex-end;margin-top:.9rem;display:flex}.firmware-device-picker{border:1px solid var(--ink-10);border-radius:var(--radius-md);max-height:280px;padding:.5rem;overflow:auto}.firmware-device-picker legend{color:var(--ink-60);padding:0 .35rem;font-size:.76rem}.firmware-device-picker label{border-radius:6px;align-items:center;gap:.6rem;padding:.45rem;display:flex}.firmware-device-picker label:hover{background:var(--cream)}.firmware-device-picker input{width:auto}.firmware-device-picker span{display:grid}.firmware-device-picker small{color:var(--ink-60)}.firmware-assignment{grid-template-columns:1fr auto;gap:.25rem 1rem;padding:1rem;display:grid}.firmware-assignment>div{display:grid}.firmware-assignment p,.firmware-assignment small{color:var(--ink-60);grid-column:1}.firmware-assignment button{grid-area:1/2/span 3}.firmware-assignment.inactive{opacity:.55}.firmware-empty{text-align:center;color:var(--ink-60);border:1px dashed var(--ink-20);border-radius:var(--radius-lg);padding:3rem 1rem}.firmware-fleet{gap:1rem;display:grid}.firmware-fleet-stats{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.7rem;display:grid}.firmware-fleet-stats article{background:var(--white);border:1px solid var(--ink-10);border-radius:var(--radius-lg);grid-template-columns:auto 1fr;align-items:center;gap:.1rem .55rem;padding:.85rem;display:grid}.firmware-fleet-stats article svg{color:var(--leaf);grid-row:1/span 2}.firmware-fleet-stats article strong{font-size:1.35rem;line-height:1}.firmware-fleet-stats article span{color:var(--ink-60);text-transform:capitalize;font-size:.72rem}.firmware-fleet-stats article.warning svg{color:var(--amber)}.firmware-failures .card-body{flex-wrap:wrap;gap:.5rem;display:flex}.firmware-failures span{background:#fff0ee;border-radius:999px;gap:.6rem;padding:.3rem .6rem;display:flex}.firmware-device-table-wrap{border:1px solid var(--ink-10);border-radius:var(--radius-lg);background:var(--white);overflow-x:auto}.firmware-device-table{border-collapse:collapse;width:100%;font-size:.78rem}.firmware-device-table th,.firmware-device-table td{text-align:left;border-bottom:1px solid var(--ink-10);vertical-align:top;padding:.65rem}.firmware-device-table th{color:var(--ink-60);background:var(--cream)}.firmware-device-table td>code{text-overflow:ellipsis;max-width:150px;display:block;overflow:hidden}.firmware-device-table details summary{cursor:pointer;min-width:180px;display:grid}.firmware-device-table details summary small{color:var(--ink-60)}.firmware-device-table progress{width:100px;accent-color:var(--leaf)}.firmware-device-table td>small{display:block}.firmware-history{gap:.25rem;min-width:360px;margin-top:.6rem;display:grid}.firmware-history>div{background:var(--cream);grid-template-columns:1.5fr .8fr .8fr;gap:.5rem;padding:.3rem;display:grid}@media (width<=800px){.firmware-layout{grid-template-columns:1fr}.firmware-upload-card{position:static}.firmware-title-row{flex-direction:column;align-items:flex-start}}@media (width<=520px){.firmware-build dl,.firmware-form-grid{grid-template-columns:1fr}.firmware-tabs button{flex:1;padding-inline:.3rem}}:root{--ink:#2c2420;--ink-60:#70635c;--ink-40:#9b8e86;--ink-20:#c4b9b0;--ink-10:#e0d8d2;--cream:#f5f0e8;--cream-60:#d4caba;--cream-80:#e8e0d4;--leaf:#4a7c59;--leaf-light:#6b9e7a;--leaf-dark:#355f40;--amber:#c4953a;--orange:#d4843a;--red:#b4433c;--white:#fff;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 3px #2c242014;--shadow-md:0 4px 12px #2c24201a;--shadow-lg:0 8px 24px #2c24201f;--header-height:56px;--bottom-nav-height:60px;--content-max:1200px;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Helvetica Neue", sans-serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:16px}body{font-family:var(--font-sans);color:var(--ink);background:var(--cream);-webkit-font-smoothing:antialiased;line-height:1.5}img{max-width:100%;display:block}button{cursor:pointer;font-family:inherit}a{color:var(--leaf);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--leaf);outline-offset:2px}.app-shell{min-height:100dvh;padding-top:var(--header-height)}.header{height:var(--header-height);background:var(--white);border-bottom:1px solid var(--ink-10);z-index:100;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.header-inner{max-width:var(--content-max);align-items:center;gap:1.5rem;width:100%;margin:0 auto;padding:0 1.25rem;display:flex}.header-logo{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.header-logo img{width:28px;height:28px}.header-logo span{color:var(--ink);font-size:1rem;font-weight:600}.header-nav{gap:.25rem;display:flex}.header-nav-item{color:var(--ink-60);border-radius:var(--radius-md);white-space:nowrap;background:0 0;border:none;padding:.375rem .75rem;font-size:.875rem;transition:background .15s,color .15s}.header-nav-item:hover{background:var(--ink-10);color:var(--ink)}.header-nav-item.active{color:var(--leaf);font-weight:500}.header-install{color:var(--ink-40);border-radius:var(--radius-md);background:0 0;border:none;align-items:center;gap:.375rem;padding:.25rem .5rem;font-size:.75rem;transition:background .15s,color .15s;display:flex}.header-install:hover{background:var(--ink-10);color:var(--ink)}.header-right{align-items:center;gap:.75rem;display:flex}.header-language{flex-shrink:0;align-items:center;margin-left:auto;display:flex}.online-dot{background:var(--leaf);border-radius:50%;flex-shrink:0;width:8px;height:8px}.online-dot.offline{background:var(--amber)}.online-label{color:var(--ink-60);font-size:.75rem}.header-sign-out{border:1px solid var(--ink-20);color:var(--ink-60);border-radius:var(--radius-md);background:0 0;align-items:center;gap:.375rem;padding:.25rem .625rem;font-size:.8rem;transition:background .15s,color .15s;display:inline-flex}.header-sign-out:hover{background:var(--ink-10);color:var(--ink)}.main-content{max-width:var(--content-max);padding:1.5rem;padding-bottom:calc(1.5rem + var(--bottom-nav-height));margin:0 auto}.bottom-nav{height:var(--bottom-nav-height);background:var(--white);border-top:1px solid var(--ink-10);z-index:100;padding-bottom:env(safe-area-inset-bottom,0);justify-content:space-around;align-items:center;display:none;position:fixed;bottom:0;left:0;right:0}.bottom-nav-item{min-width:0;color:var(--ink-40);background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:2px;padding:.375rem .125rem;font-size:.65rem;transition:color .15s;display:flex}.bottom-nav-item span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.bottom-nav-item:hover{color:var(--ink)}.bottom-nav-item.active{color:var(--leaf)}.bottom-nav-item svg{width:1.25rem;height:1.25rem}.update-banner{background:var(--leaf-light);color:var(--white);top:var(--header-height);z-index:200;align-items:center;gap:.75rem;padding:.5rem 1rem;font-size:.85rem;display:flex;position:fixed;left:0;right:0}.btn{border-radius:var(--radius-md);background:var(--leaf);color:var(--white);border:1px solid #0000;justify-content:center;align-items:center;gap:.375rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;transition:background .15s,box-shadow .15s;display:inline-flex}.btn:hover{background:var(--leaf-light)}.btn:active{background:var(--leaf-dark)}.btn:disabled{cursor:not-allowed;opacity:.52}.btn-sm{padding:.25rem .625rem;font-size:.8rem}.btn-ghost{color:var(--ink-60);background:0 0;border:1px solid #0000}.btn-ghost:hover{background:var(--ink-10);color:var(--ink)}.btn-outline{color:var(--leaf);border:1px solid var(--leaf);background:0 0}.btn-outline:hover{background:var(--cream)}.btn-outline.active{background:var(--leaf);color:var(--white)}.btn-icon{min-width:auto;padding:.125rem .25rem}.card{background:var(--white);border:1px solid var(--ink-10);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:box-shadow .2s;overflow:hidden}.card-header{border-bottom:1px solid var(--ink-10);padding:.75rem 1rem;font-size:.9rem;font-weight:600}.card-body{padding:1rem}.top-bar{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1.25rem;display:flex}.top-bar h2{flex:1;min-width:120px;font-size:1.25rem;font-weight:600}.greeting{color:var(--ink-60);font-size:.9rem;font-weight:400}.select{border:1px solid var(--ink-20);border-radius:var(--radius-md);background:var(--white);color:var(--ink);cursor:pointer;padding:.375rem .75rem;font-family:inherit;font-size:.875rem}.select:focus{border-color:var(--leaf)}.select-sm{padding:.125rem .375rem;font-size:.8rem}.toggle-group{border:1px solid var(--ink-10);border-radius:var(--radius-md);display:inline-flex;overflow:hidden}.toggle-btn{background:var(--white);color:var(--ink-60);border:none;padding:.375rem .75rem;font-size:.8rem;transition:background .15s,color .15s}.toggle-btn:hover{background:var(--cream)}.toggle-btn.active{background:var(--leaf);color:var(--white)}.toggle-btn+.toggle-btn{border-left:1px solid var(--ink-10)}.alert-summary{flex-wrap:wrap;gap:.75rem;margin-bottom:1rem;display:flex}.alert-chip{border:1px solid;border-radius:999px;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.8rem;display:inline-flex}.alert-chip.critical{border-color:var(--red);color:var(--red);background:#fef2f2}.alert-chip.warning{border-color:var(--amber);color:var(--amber);background:#fff7ed}.alert-chip.info{border-color:var(--leaf);color:var(--leaf);background:#f0f9ff}.camera-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;display:grid}.camera-card{cursor:pointer;border-radius:var(--radius-lg);transition:box-shadow .2s,transform .15s;position:relative;overflow:hidden}.camera-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.camera-card-image{background:var(--ink-10);width:100%;height:100px;display:block;position:relative;overflow:hidden}.camera-card-image img{object-fit:cover;width:100%;height:100%;display:block}.camera-card-placeholder{background:var(--ink-10);width:100%;height:100px;color:var(--ink-40);justify-content:center;align-items:center;display:flex}.camera-card-info{padding:.75rem 1rem 1rem}.camera-card-header-row{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.camera-card-title{font-size:.95rem;font-weight:600}.camera-type-icon{z-index:2;background:#fffffff0;border:1px solid #23231e29;border-radius:50%;place-items:center;width:26px;height:26px;display:grid;position:absolute;top:.55rem;right:.55rem;box-shadow:0 2px 7px #23231e33}.camera-type-icon img{object-fit:contain;width:18px;height:18px}.camera-type-icon i{background:var(--leaf);border-radius:50%;width:13px;height:13px;display:block}.camera-card-meta{color:var(--ink-60);flex-wrap:wrap;gap:.75rem;font-size:.8rem;display:flex}.meta-item{align-items:center;gap:.25rem;display:inline-flex}.meta-item svg{width:.875rem;height:.875rem}.camera-card-location{color:var(--ink-60);margin-bottom:.375rem;font-size:.8rem}.sensor-device-card{cursor:pointer}.sensor-chart-wrap{border-bottom:1px solid var(--ink-10);background:linear-gradient(#f7faf5,#edf4ea);min-width:0;padding:.55rem .65rem .4rem}.sensor-chart-wrap svg{width:100%;height:112px;display:block;overflow:visible}.sensor-chart-grid{stroke:#23231e1a;stroke-width:1px}.sensor-chart-legend{min-height:30px;color:var(--ink-60);flex-wrap:wrap;gap:.3rem .7rem;padding:.25rem .2rem 0;font-size:.68rem;display:flex}.sensor-chart-legend span{white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:.25rem;max-width:100%;display:inline-flex;overflow:hidden}.sensor-chart-legend i{border-radius:50%;flex:0 0 7px;width:7px;height:7px}.sensor-chart-empty{height:156px;color:var(--ink-40);background:var(--cream);border-bottom:1px solid var(--ink-10);justify-content:center;align-items:center;gap:.45rem;font-size:.8rem;display:flex}.location-device-subgroup{margin-top:1rem}.location-device-subgroup-title{color:var(--ink-60);letter-spacing:.05em;text-transform:uppercase;margin:0 0 .55rem;font-size:.78rem;font-weight:700}.status-dot-label{white-space:nowrap;align-items:center;gap:.375rem;font-size:.75rem;font-weight:500;display:inline-flex}.status-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.status-dot.healthy{background:var(--leaf)}.status-dot.warning{background:var(--amber)}.status-dot.critical,.status-dot.offline{background:var(--red)}.status-badge{border-radius:999px;align-items:center;gap:.25rem;padding:.125rem .5rem;font-size:.75rem;font-weight:500;display:inline-flex}.status-badge.healthy{color:var(--leaf);background:#e8f5e9}.status-badge.warning{color:var(--orange);background:#fff3e0}.status-badge.critical{color:var(--red);background:#fce4ec}.schedule-overdue{text-transform:uppercase;letter-spacing:.04em;color:var(--red);vertical-align:middle;background:#fce4ec;border-radius:999px;align-items:center;margin-left:.375rem;padding:.05rem .4rem;font-size:.65rem;font-weight:600;display:inline-flex}.map-container{background:var(--cream-80);border-radius:var(--radius-lg);border:1px solid var(--ink-10);aspect-ratio:16/9;min-height:300px;position:relative;overflow:hidden}.map-container svg{width:100%;height:100%;display:block}.detail-header{align-items:center;gap:.75rem;margin-bottom:1.25rem;display:flex}.detail-header h2{font-size:1.25rem;font-weight:600}.moth-panel{color:var(--ink);border:1px solid var(--ink-10);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);background:#f6f5f1;margin-bottom:1rem;padding:1.25rem}.moth-panel-heading,.moth-panel-heading h3,.moth-chart-legend{align-items:center;display:flex}.moth-panel-heading{justify-content:space-between;gap:1rem;margin-bottom:1rem}.moth-panel-heading h3{gap:.5rem;font-size:1.15rem}.moth-kicker{color:#8b6732;letter-spacing:.12em;text-transform:uppercase;font-size:.7rem;font-weight:700;display:block}.moth-type-badge{color:#2d251f;background:#e2b866;border-radius:999px;padding:.25rem .65rem;font-size:.75rem;font-weight:700}.moth-controls{background:var(--white);border:1px solid var(--ink-10);border-radius:var(--radius-md);grid-template-columns:minmax(150px,1.4fr) repeat(4,minmax(125px,1fr)) auto;align-items:end;gap:.75rem;padding:.85rem;display:grid}.moth-deployment-controls{grid-template-columns:minmax(260px,1.3fr) minmax(240px,1fr)}.moth-deployment-summary{gap:.25rem;padding:.25rem 0;display:grid}.moth-deployment-summary span{color:var(--ink-60);font-size:.72rem;font-weight:600}.moth-deployment-summary strong{font-size:.9rem}.moth-panel-empty{color:var(--ink-60);margin:0}.moth-controls label{color:var(--ink-60);gap:.25rem;font-size:.72rem;font-weight:600;display:grid}.moth-controls .select,.moth-controls .input{width:100%;height:36px;color:var(--ink);background:var(--white);border:1px solid var(--ink-20)}.moth-controls .input{border-radius:var(--radius-md);padding:.375rem .55rem;font-family:inherit}.moth-save{color:#2d251f;white-space:nowrap;background:#e2b866;height:36px}.moth-save:hover{background:#edc87f}.moth-stats{grid-template-columns:repeat(4,1fr);gap:.75rem;margin:.85rem 0;display:grid}.moth-model-stats{grid-template-columns:repeat(3,1fr)}.moth-stats>div{background:#ffffff0e;border-left:2px solid #d8af67;border-radius:4px;grid-template-columns:auto 1fr;gap:.1rem .55rem;padding:.75rem;display:grid}.moth-stats svg{color:#d8af67;grid-row:1/3;align-self:center;width:18px}.moth-stats span{color:#b9aea5;font-size:.7rem}.moth-stats strong{font-size:1.2rem;line-height:1.1}.moth-stats strong small{color:#b9aea5;margin-left:.35rem;font-size:.65rem;font-weight:500}.moth-stats .moth-date-value{font-size:.9rem}.moth-chart-card{border-radius:var(--radius-md);background:#f8f3eb;padding:.75rem}.moth-chart-legend{color:#5e554e;flex-wrap:wrap;justify-content:flex-end;gap:1rem;font-size:.72rem}.moth-chart-legend span:before{content:"";vertical-align:middle;background:#b57836;width:12px;height:3px;margin-right:.35rem;display:inline-block}.moth-chart-legend .heat:before{background:#4a7c59}.moth-chart-legend .forecast:before{background:#f8f3eb;border:2px dashed #4a7c59;border-radius:50%;width:7px;height:7px}.moth-chart-legend .biofix:before{background:#b4433c}.moth-chart-scroll{overflow-x:auto}.moth-chart-scroll svg{min-width:100%;height:280px;display:block}.moth-grid-line{stroke:#ddd3c7;stroke-width:1px}.moth-capture-bar{fill:#b57836;opacity:.88}.moth-capture-line{fill:none;stroke:#b57836;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.moth-chart-point.clickable{cursor:pointer}.moth-chart-point.clickable:focus{outline:none}.moth-chart-point.clickable:focus .moth-capture-point{stroke-width:4px}.moth-capture-point{fill:#f8f3eb;stroke:#b57836;stroke-width:3px}.moth-capture-point.biofix{fill:#b4433c;stroke:#7e2925}.moth-heat-line{fill:none;stroke:#4a7c59;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.moth-heat-point{fill:#4a7c59;stroke:#f8f3eb;stroke-width:1.5px}.moth-heat-point.forecast{fill:#f8f3eb;stroke:#4a7c59;stroke-width:2px;stroke-dasharray:2 1}.moth-heat-warning{fill:#d2564c1f}.moth-heat-limit{stroke:#cf766e;stroke-width:1.5px}.moth-heat-limit-label{fill:#a4423b;font-size:10px;font-weight:700}.moth-now-line{stroke:#8b8b86;stroke-width:1.5px}.moth-now-label{fill:#777772;text-transform:uppercase;font-size:10px;font-weight:700}.moth-biofix-line{stroke:#b4433c;stroke-width:2px;stroke-dasharray:5 4}.moth-axis-label{fill:#766b63;font-size:10px}.moth-empty-note{color:#70635c;margin-top:.5rem;font-size:.78rem}.moth-method-note{color:var(--ink-60);margin-top:.65rem;font-size:.7rem}.moth-biofix-list{flex-wrap:wrap;gap:.45rem;margin-top:.75rem;display:flex}.moth-biofix-list>span{color:var(--ink);background:#b4433c1a;border:1px solid #b4433c4d;border-radius:999px;align-items:center;gap:.3rem;padding:.3rem .5rem;font-size:.72rem;display:inline-flex}.moth-biofix-list button{color:inherit;cursor:pointer;background:0 0;border:0;padding:0;display:inline-flex}.moth-error{color:var(--red);margin-top:.6rem;font-size:.78rem}.moth-detection-box{pointer-events:none;border:2px solid #e2b866;border-radius:3px;position:absolute;box-shadow:0 0 0 1px #140f0a8c}button.moth-detection-box.reviewable{appearance:none;pointer-events:auto;cursor:pointer;background:0 0;padding:0}.moth-detection-box.reviewed{border-color:#65b785}.moth-detection-box.reviewed>span{background:#8bd0a4}.moth-detection-box.draft{pointer-events:none;border-style:dashed}.moth-detection-box.unknown{border-color:#75a8d1}.moth-detection-box>span{transform-origin:0 100%;color:#211e1c;white-space:nowrap;background:#e2b866;border-radius:3px 3px 0 0;padding:1px 4px;font-size:9px;font-weight:700;line-height:1.4;position:absolute;bottom:100%;left:-2px}.moth-detection-box.unknown>span{background:#9fc8e8}.moth-image-status{color:var(--ink-60);margin-left:auto;font-size:.75rem}.detection-review-body{gap:.75rem;display:grid}.detection-review>summary{cursor:pointer;white-space:nowrap;list-style-position:inside}.detection-review>summary>span:first-child{flex:1}.detection-review-toolbar{justify-content:flex-end;display:flex}.detection-draw-hint{color:var(--leaf-dark);border-radius:var(--radius-md);background:#e4f0e7;justify-content:space-between;align-items:center;gap:.75rem;padding:.65rem .75rem;display:flex}.detection-editor{background:var(--cream);border:1px solid var(--ink-10);border-radius:var(--radius-md);grid-template-columns:minmax(240px,2fr) repeat(4,minmax(90px,.6fr));align-items:end;gap:.65rem;padding:.75rem;display:grid}.detection-editor label{color:var(--ink-60);gap:.25rem;font-size:.75rem;display:grid}.detection-editor-actions{grid-column:1/-1;gap:.4rem;display:flex}.detection-review-list{gap:.35rem;display:grid}.detection-review-item{border-bottom:1px solid var(--ink-10);justify-content:space-between;align-items:center;gap:.75rem;min-height:38px;padding:.35rem .55rem;font-size:.8rem;display:flex}.detection-review-item>span:last-child{flex-shrink:0;display:flex}.detection-review-error{color:var(--red);font-size:.8rem}@media (width<=850px){.detection-editor{grid-template-columns:repeat(2,minmax(0,1fr))}.detection-editor label:first-child{grid-column:1/-1}}.hero-image{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;display:block}.hero-image-frame{border-radius:var(--radius-lg);background:var(--ink-20);touch-action:auto;width:100%;margin-bottom:1.25rem;position:relative;overflow:hidden}.hero-transform-layer{transform-origin:50%;will-change:transform;position:absolute;top:50%;left:50%}.camera-image-viewer{margin:0 0 1.25rem}.camera-image-viewer .hero-image-frame{margin-bottom:0}.image-toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.zoom-level{color:var(--ink-60);text-align:center;min-width:3rem;font-size:.8rem;font-weight:600}.camera-image-viewer.fullscreen{z-index:300;background:#000000f2;flex-direction:column;justify-content:center;align-items:center;max-width:100%;max-height:100vh;margin:0;padding:1rem;display:flex;position:fixed;inset:0}.camera-image-viewer.fullscreen .image-toolbar{z-index:301;display:flex;position:absolute;top:1rem;right:1rem}.camera-image-viewer.fullscreen .image-toolbar .btn{color:#fff;background:#ffffff26;border-color:#ffffff4d}.camera-image-viewer.fullscreen .hero-image-frame{touch-action:none;background:0 0;border-radius:0;margin-bottom:0}.image-note-marker{background:var(--amber);width:22px;height:22px;color:var(--white);transform-origin:50%;pointer-events:none;border-radius:50%;justify-content:center;align-items:center;font-size:.7rem;font-weight:700;display:flex;position:absolute;box-shadow:0 0 0 2px #ffffffb3,0 1px 3px #00000080}.notes-panel-title{color:var(--ink-60);align-items:center;gap:.375rem;margin-bottom:.5rem;font-size:.8rem;font-weight:600;display:flex}.image-notes-panel{background:var(--white);border:1px solid var(--ink-10);border-radius:var(--radius-md);margin-bottom:1.25rem;padding:.75rem}.image-note-row{align-items:center;gap:.5rem;padding:.375rem 0;display:flex}.image-note-row+.image-note-row{border-top:1px solid var(--ink-10)}.note-text{cursor:pointer;color:var(--ink-80);flex:1;font-size:.85rem}.note-text:hover{color:var(--ink)}.timeline{flex-direction:column;gap:0;display:flex}.timeline-item{gap:.75rem;padding:.5rem 0;display:flex}.timeline-item+.timeline-item{border-top:1px solid var(--ink-10)}.timeline-dot{background:var(--leaf);border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:.35rem}.timeline-content{flex-direction:column;gap:.125rem;min-width:0;display:flex}.timeline-label{font-size:.85rem;font-weight:500}.timeline-time{color:var(--ink-60);font-size:.75rem}.timeline-detail{color:var(--ink-40);font-size:.8rem}.input{border:1px solid var(--ink-20);border-radius:var(--radius-sm);background:var(--white);color:var(--ink);width:100%;padding:.375rem .625rem;font-family:inherit;font-size:.85rem}.input:focus{border-color:var(--leaf);outline:none}.input-sm{padding:.25rem .5rem;font-size:.8rem}.camera-image-viewer figcaption{color:var(--ink-60);justify-content:space-between;align-items:center;gap:.5rem;margin-top:.4rem;font-size:.8rem;display:flex}.detail-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin-bottom:1.25rem;display:grid}.detail-section{background:var(--white);border:1px solid var(--ink-10);border-radius:var(--radius-lg);padding:1rem}.detail-section h3{color:var(--ink-60);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.75rem;font-size:.85rem;font-weight:600}.detail-compact{align-self:start;padding:0;overflow:hidden}.detail-compact summary{cursor:pointer;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.75rem;min-height:44px;padding:.65rem .85rem;list-style:none;display:grid}.detail-compact summary::-webkit-details-marker{display:none}.detail-compact summary:after{content:"+";color:var(--ink-40);font-size:1.1rem;line-height:1}.detail-compact[open] summary:after{content:"−"}.detail-compact summary>span{color:var(--ink-60);letter-spacing:.04em;text-transform:uppercase;font-size:.75rem;font-weight:700}.detail-compact summary>strong{text-overflow:ellipsis;white-space:nowrap;justify-self:end;align-items:center;gap:.3rem;min-width:0;font-size:.875rem;display:inline-flex;overflow:hidden}.detail-compact-content{border-top:1px solid var(--ink-10);padding:.6rem .85rem .8rem}.detail-row{justify-content:space-between;padding:.25rem 0;font-size:.875rem;display:flex}.detail-label{color:var(--ink-60)}.detail-value{font-weight:500}.chart-container{aspect-ratio:2;width:100%}.chart-container svg{width:100%;height:100%}.filmstrip{gap:.5rem;padding-bottom:.5rem;display:flex;overflow-x:auto}.filmstrip-item{cursor:pointer;border-radius:var(--radius-md);background:var(--white);width:100px;color:inherit;font:inherit;border:2px solid #0000;flex-shrink:0;padding:0;transition:border-color .15s;overflow:hidden}.filmstrip-item:hover,.filmstrip-item.active{border-color:var(--leaf)}.filmstrip-thumb-frame{background:var(--ink);width:100%;height:70px;overflow:hidden}.filmstrip-thumb-frame img{object-fit:cover;width:100%;height:100%}.filmstrip-label{color:var(--ink-60);text-align:center;padding:.125rem 0;font-size:.65rem}.camera-roll-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.camera-roll-actions{align-items:center;gap:.75rem;display:inline-flex}.timelapse-controls{flex-wrap:wrap;gap:.75rem;margin-bottom:.75rem;display:flex}.timelapse-field{color:var(--ink-60);flex-direction:column;gap:.25rem;font-size:.75rem;display:flex}.timelapse-field input{width:auto}.timelapse-viewer{aspect-ratio:1;background:var(--ink-20);border-radius:var(--radius-md);justify-content:center;align-items:center;width:100%;max-height:min(70vh,600px);margin:0 auto;display:flex;overflow:hidden}.timelapse-viewer img{object-fit:contain;width:100%;height:100%}.timelapse-playbar{align-items:center;gap:.75rem;margin-top:.75rem;display:flex}.timelapse-slider{min-width:0;accent-color:var(--leaf);flex:1}.timelapse-counter{text-align:right;min-width:3.5rem}.timelapse-date{text-align:center;margin-top:.5rem}.timelapse-export{border-top:1px solid var(--ink-10);flex-direction:column;align-items:flex-start;gap:.5rem;margin-top:.75rem;padding-top:.75rem;display:flex}.timelapse-progress{background:var(--ink-10);border-radius:999px;width:100%;height:6px;overflow:hidden}.timelapse-progress-bar{background:var(--leaf);height:100%;transition:width .2s}.deployment-status{border-radius:var(--radius-md);background:var(--cream-60);color:var(--ink);align-items:center;gap:.5rem;margin-bottom:.75rem;padding:.625rem .75rem;font-size:.875rem;font-weight:500;display:flex}.deployment-status.field{color:var(--leaf-dark);background:#e8f2ea}.deployment-status.storage{background:var(--ink-10);color:var(--ink-80)}.deployment-form{border:1px solid var(--ink-10);border-radius:var(--radius-md);background:var(--cream);flex-direction:column;gap:.625rem;margin-bottom:.875rem;padding:.875rem;display:flex}.deployment-form-row{flex-wrap:wrap;gap:.75rem;display:flex}.deployment-form-row .timelapse-field{flex:1;min-width:160px}.deployment-form-row .timelapse-field input,.deployment-form-row .timelapse-field select{width:100%}.deployment-checkbox{color:var(--ink-60);align-items:center;gap:.5rem;font-size:.8rem;display:flex}.deployment-form-actions{gap:.5rem;display:flex}.deployment-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.deployment-item{align-items:flex-start;gap:.75rem;padding:.75rem 0;display:flex}.deployment-item+.deployment-item{border-top:1px solid var(--ink-10)}.deployment-icon{background:var(--ink-10);width:28px;height:28px;color:var(--ink-60);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.deployment-item.field .deployment-icon{color:var(--leaf-dark);background:#e8f2ea}.deployment-body{flex:1;min-width:0}.deployment-title{font-size:.9rem;font-weight:600}.deployment-crop{color:var(--ink-60);font-weight:400}.deployment-live{text-transform:uppercase;letter-spacing:.04em;color:var(--leaf-dark);vertical-align:middle;background:#dcebdf;border-radius:999px;margin-left:.5rem;padding:.05rem .4rem;font-size:.65rem;font-weight:600;display:inline-block}.deployment-dates{color:var(--ink-80);margin-top:.15rem;font-size:.8rem}.deployment-note{color:var(--ink-60);margin-top:.15rem;font-size:.8rem;font-style:italic}.deployment-actions{flex-shrink:0;gap:.125rem;display:flex}.orientation-control{align-items:center;gap:.25rem;display:inline-flex}.orientation-value{text-align:center;min-width:2.5rem;font-size:.85rem;font-weight:600}.phenology-timeline{flex-direction:column;gap:.5rem;margin-top:.5rem;display:flex}.pheno-item{align-items:center;gap:.625rem;font-size:.8rem;display:flex}.pheno-dot{background:var(--leaf);border-radius:50%;flex-shrink:0;width:8px;height:8px}.pheno-date{color:var(--ink-60);min-width:80px}.alert-card{background:var(--white);border:1px solid var(--ink-10);border-radius:var(--radius-lg);margin-bottom:.75rem;padding:1rem}.alert-header{justify-content:space-between;align-items:flex-start;margin-bottom:.5rem;display:flex}.alert-title{align-items:center;gap:.5rem;font-size:.95rem;font-weight:600;display:flex}.alert-detail{color:var(--ink-60);margin-bottom:.5rem;font-size:.85rem}.alert-actions{gap:.5rem;margin-top:.75rem;display:flex}.movement-map{background:var(--cream-80);border-radius:var(--radius-md);width:100%;height:120px;margin:.5rem 0}.permission-table{border-collapse:collapse;width:100%;font-size:.875rem}.permission-table th{text-align:left;border-bottom:2px solid var(--ink-10);color:var(--ink-60);text-transform:uppercase;letter-spacing:.04em;padding:.5rem .75rem;font-size:.8rem;font-weight:600}.permission-table td{border-bottom:1px solid var(--ink-10);padding:.5rem .75rem}.dialog-overlay{z-index:300;background:#2c242066;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.dialog{background:var(--white);border-radius:var(--radius-lg);width:100%;max-width:480px;box-shadow:var(--shadow-lg);padding:1.5rem}.dialog h3{margin-bottom:1rem;font-size:1.1rem;font-weight:600}.form-group{margin-bottom:1rem}.form-group label{color:var(--ink);margin-bottom:.25rem;font-size:.85rem;font-weight:500;display:block}.form-group input,.form-group select{border:1px solid var(--ink-20);border-radius:var(--radius-md);background:var(--cream);width:100%;padding:.5rem .75rem;font-family:inherit;font-size:.875rem;transition:border-color .15s,box-shadow .15s}.form-group input:focus,.form-group select:focus{border-color:var(--leaf);outline:none;box-shadow:0 0 0 3px #4a7c5926}.dialog-actions{justify-content:flex-end;gap:.5rem;margin-top:1.25rem;display:flex}.classification-select{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.classification-select button{border:1px solid var(--ink-20);border-radius:var(--radius-md);background:var(--cream);color:var(--ink);padding:.25rem .625rem;font-size:.8rem}.classification-select button.active{background:var(--leaf);color:var(--white);border-color:var(--leaf)}.compare-panel{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.compare-image{aspect-ratio:4/3;background:var(--ink-10);border-radius:var(--radius-lg);overflow:hidden}.compare-image img{object-fit:cover;width:100%;height:100%}.compare-meta{color:var(--ink-60);margin-top:.5rem;font-size:.8rem}.filter-bar{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.filter-bar .select{min-width:140px}.language-select{appearance:none;border:1px solid var(--ink-20);border-radius:var(--radius-md);background:var(--cream);color:var(--ink-60);cursor:pointer;flex-shrink:0;min-width:0;max-width:5rem;padding:.125rem .5rem;font-family:inherit;font-size:.72rem;font-weight:500;line-height:1.4}.language-select:focus{border-color:var(--leaf);outline:none}.language-select:hover{background:var(--cream-80)}.login-page{background:var(--cream);justify-content:center;align-items:center;min-height:100dvh;padding:1.5rem;display:flex}.login-card{background:var(--white);border:1px solid var(--ink-10);border-radius:var(--radius-lg);width:100%;max-width:380px;box-shadow:var(--shadow-md);text-align:center;padding:2rem}.login-card h1{margin-top:.75rem;margin-bottom:.25rem;font-size:1.25rem;font-weight:600}.login-card .form-group{text-align:left}.login-card .btn{margin-top:.5rem}.login-error{color:var(--red);margin-bottom:.5rem;font-size:.85rem}.login-card-wide{text-align:left;max-width:430px}.login-card-wide h1,.login-card-wide>p{text-align:center}.login-brand-row{justify-content:space-between;align-items:center;display:flex}.login-provider-grid{grid-template-columns:1fr 1fr;gap:.75rem;margin-top:1.25rem;display:grid}.login-provider-grid .btn{margin:0}.login-divider{color:var(--ink-40);text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:.75rem;margin:1.25rem 0;font-size:.75rem;display:flex}.login-divider:before,.login-divider:after{content:"";background:var(--ink-10);flex:1;height:1px}.login-switch{color:var(--leaf);background:0 0;border:0;margin:.9rem auto 0;font-size:.85rem;display:block}.legacy-login{border-top:1px solid var(--ink-10);margin-top:1.35rem;padding-top:1rem}.legacy-login summary{cursor:pointer;color:var(--ink-60);font-size:.85rem}.legacy-login>p{color:var(--ink-60);margin:.75rem 0;font-size:.78rem}.workspace-page{background:linear-gradient(180deg, #e8eee5 0, var(--cream) 18rem);min-height:100dvh}.workspace-header{justify-content:space-between;align-items:center;max-width:1320px;height:64px;margin:0 auto;padding:0 1.5rem;display:flex}.workspace-header .header-logo img{width:32px;height:32px}.workspace-account{color:var(--ink-60);align-items:center;gap:.8rem;font-size:.85rem;display:flex}.workspace-main{max-width:1260px;margin:0 auto;padding:2rem 1.5rem 4rem}.workspace-hero{justify-content:space-between;align-items:flex-end;gap:2rem;margin-bottom:2rem;display:flex}.workspace-hero h1{margin:.45rem 0 .75rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(2rem,5vw,3.5rem);font-weight:500;line-height:1}.workspace-hero p{max-width:680px;color:var(--ink-60)}.workspace-hero-actions{flex-wrap:wrap;gap:.6rem;display:flex}.workspace-error{color:var(--red);border-radius:var(--radius-md);background:#fff1ef;border:1px solid #d9aaa6;margin-bottom:1rem;padding:.75rem 1rem}.workspace-onboarding{text-align:center;max-width:620px;margin:4rem auto;padding:2.5rem}.workspace-onboarding>svg{width:46px;height:46px;color:var(--leaf);background:#e5eee4;border-radius:50%;margin:0 auto 1rem;padding:10px}.workspace-onboarding h2{font-size:1.4rem}.workspace-onboarding p{color:var(--ink-60);max-width:460px;margin:.5rem auto 1.25rem}.workspace-toolbar{justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1rem;display:flex}.workspace-toolbar>label{color:var(--ink-60);gap:.3rem;font-size:.75rem;display:grid}.workspace-toolbar .select{min-width:240px}.workspace-grid{grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);align-items:start;gap:1.25rem;display:grid}.workspace-panel{border:1px solid var(--ink-10);box-shadow:var(--shadow-sm);background:#ffffffeb;border-radius:16px;overflow:hidden}.workspace-panel-title{border-bottom:1px solid var(--ink-10);align-items:center;gap:.8rem;padding:1.25rem;display:flex}.workspace-panel-title>svg{color:var(--leaf)}.workspace-panel-title h2{font-size:1.1rem}.workspace-panel-title p{color:var(--ink-60);font-size:.8rem}.stack-create-form{background:var(--cream);border-bottom:1px solid var(--ink-10);grid-template-columns:1fr 1fr auto;align-items:end;gap:.6rem;padding:1rem 1.25rem;display:grid}.stack-create-form strong{grid-column:1/-1;font-size:.82rem}.stack-create-form input,.inline-create-form input{border:1px solid var(--ink-20);border-radius:var(--radius-md);background:var(--white);min-width:0;color:var(--ink);font:inherit;padding:.52rem .65rem;font-size:.85rem}.inline-create-form{justify-content:center;gap:.6rem;display:flex}.inline-create-form.compact{justify-content:flex-start}.hierarchy-list,.device-list{gap:.8rem;padding:1rem;display:grid}.hierarchy-location{border:1px solid var(--ink-10);border-radius:var(--radius-lg);padding:1rem}.hierarchy-location>h3{align-items:center;gap:.5rem;font-size:1rem;display:flex}.hierarchy-location>p{color:var(--ink-60);margin:.2rem 0 .8rem 1.55rem;font-size:.78rem}.hierarchy-location>form{margin:.75rem 0}.hierarchy-location>form input:nth-child(2){max-width:80px}.hierarchy-field{border-left:2px solid #b8cab5;margin:.85rem 0 0 .45rem;padding:.45rem 0 .2rem 1rem}.hierarchy-field>div:first-child{align-items:center;gap:.45rem;display:flex}.hierarchy-field>div:first-child span{color:var(--ink-60);margin-left:auto;font-size:.75rem}.sector-chips{flex-wrap:wrap;gap:.35rem;margin:.55rem 0;display:flex}.sector-chips span{color:var(--leaf-dark);background:#edf1e9;border-radius:999px;padding:.18rem .55rem;font-size:.72rem}.owned-device-card{border:1px solid var(--ink-10);border-radius:var(--radius-lg);grid-template-columns:1fr;gap:.75rem;padding:1rem;display:grid}.owned-device-card>div:first-child{grid-template-columns:auto 1fr;align-items:center;gap:.15rem .65rem;display:grid}.owned-device-card h3{font-size:1rem}.owned-device-card code{color:var(--ink-60);grid-column:2;font-size:.72rem}.owned-device-card label{color:var(--ink-60);gap:.25rem;font-size:.72rem;display:grid}.device-type{color:var(--white);background:var(--leaf);letter-spacing:.05em;border-radius:6px;grid-row:1/span 2;padding:.35rem .45rem;font-size:.64rem;font-weight:700}.device-type.type-trap{background:var(--amber)}.device-type.type-sensor{background:#47768a}.workspace-empty{color:var(--ink-60);text-align:center;padding:1.5rem 1rem;font-size:.85rem}.local-setup-shell{min-height:100dvh;padding-top:64px}.local-setup-bar{background:var(--white);border-bottom:1px solid var(--ink-10);z-index:100;justify-content:space-between;align-items:center;height:64px;padding:0 1.25rem;display:flex;position:fixed;inset:0 0 auto}.setup-claim-state{color:var(--ink-60);font-size:.75rem}.setup-claim-state.success{color:var(--leaf-dark)}.setup-claim-state.error{color:var(--red)}@media (width<=820px){.workspace-grid{grid-template-columns:1fr}.workspace-hero{flex-direction:column;align-items:flex-start}.workspace-toolbar{flex-direction:column;align-items:stretch}.workspace-toolbar .select{width:100%;min-width:0}.workspace-account>span{display:none}}@media (width<=560px){.workspace-header,.workspace-main{padding-left:1rem;padding-right:1rem}.workspace-header .header-logo span{display:none}.stack-create-form{grid-template-columns:1fr}.inline-create-form{flex-wrap:wrap}.inline-create-form input{flex:120px}.login-provider-grid{grid-template-columns:1fr}}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:1s linear infinite spin}.placeholder-image{background:var(--ink-10);color:var(--ink-40);border-radius:var(--radius-lg);aspect-ratio:16/9;flex-direction:column;justify-content:center;align-items:center;gap:.25rem;margin-bottom:1.25rem;display:flex}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.flex-between{justify-content:space-between;align-items:center;display:flex}.gap-xs{gap:.375rem}.gap-sm{gap:.625rem}.gap-md{gap:1rem}.mt-sm{margin-top:.5rem}.mt-md{margin-top:1rem}.mb-md{margin-bottom:1rem}.mb-sm{margin-bottom:.5rem}.text-sm{font-size:.85rem}.text-xs{font-size:.75rem}.text-muted{color:var(--ink-60)}.full-width{width:100%}.grant-badge{border-radius:999px;align-items:center;gap:.25rem;padding:.125rem .5rem;font-size:.75rem;font-weight:500;display:inline-flex}.grant-badge.full{color:var(--leaf);background:#e8f5e9}.grant-badge.view{color:#1565c0;background:#e3f2fd}.company-users-page{max-width:1180px;margin:0 auto}.compact-hero{min-height:0;margin-bottom:1rem}.users-layout{grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);align-items:start;gap:1rem;display:grid}.users-card .card-header{align-items:center;gap:.5rem;display:flex}.system-users-card{grid-column:1/-1}.compact-select{min-width:150px}.invite-user-form{gap:.75rem;display:grid}.invite-user-form label{color:var(--ink-60);gap:.3rem;font-size:.78rem;display:grid}.invitation-link{background:var(--ink-05);border-radius:var(--radius-sm);gap:.5rem;margin-top:1rem;padding:.75rem;display:flex}.invitation-link input{flex:1;min-width:0}.pending-heading{margin:1.25rem 0 .5rem;font-size:.9rem}.pending-invite{border-top:1px solid var(--ink-10);justify-content:space-between;align-items:center;gap:.75rem;padding:.65rem 0;display:flex}.pending-invite div{min-width:0}.pending-invite strong,.pending-invite span{overflow-wrap:anywhere;display:block}.pending-invite span{color:var(--ink-60);margin-top:.15rem;font-size:.72rem}.invitation-result{text-align:center}.invitation-result img{margin:0 auto}@media (width<=800px){.users-layout{grid-template-columns:1fr}.system-users-card{grid-column:auto}.invitation-link{flex-direction:column;align-items:stretch}}.scope-breadcrumb{color:var(--ink-60);flex-wrap:wrap;align-items:center;gap:.25rem;font-size:.8rem;display:flex}.scope-breadcrumb span+span:before{content:"›";color:var(--ink-40);margin-right:.25rem}.deployment-map-wrapper{background:var(--white);border:1px solid var(--ink-10);border-radius:var(--radius-md);width:100%;position:relative;overflow:hidden}.deployment-map-wrapper svg{width:100%;height:auto;min-height:200px;display:block}.deployment-map-empty{background:var(--cream);border:1px dashed var(--ink-20);border-radius:var(--radius-md);color:var(--ink-40);flex-direction:column;justify-content:center;align-items:center;gap:.5rem;padding:2rem;display:flex}.deployment-map-feedback{color:var(--red);background:var(--white);border:1px solid var(--red);white-space:nowrap;box-shadow:var(--shadow-sm);z-index:5;border-radius:999px;align-items:center;gap:.375rem;padding:.25rem .75rem;font-size:.8rem;display:inline-flex;position:absolute;bottom:.5rem;left:50%;transform:translate(-50%)}.deployment-map-legend{border-top:1px solid var(--ink-10);background:var(--cream);flex-wrap:wrap;gap:.75rem;padding:.375rem .75rem;display:flex}.deployment-map-legend-item{color:var(--ink-60);align-items:center;gap:.25rem;font-size:.7rem;display:inline-flex}.legend-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.deployment-form-map{margin:.5rem 0}.google-deployment-map{background:var(--white);border:1px solid var(--ink-10);border-radius:var(--radius-md);width:100%;position:relative;overflow:hidden}.google-map-canvas{width:100%;min-width:0;height:440px;overflow:hidden}.google-deployment-map-overlay{background:var(--cream-80);color:var(--ink-60);pointer-events:none;justify-content:center;align-items:center;font-size:.85rem;display:flex;position:absolute;inset:0}.google-deployment-map-overlay[role=alert]{color:var(--red)}@media (width<=768px){.google-map-canvas,.google-deployment-map-overlay{height:320px}}.status-notice-text{color:var(--orange);max-width:260px;font-size:.8rem;line-height:1.3}.camera-card-reporting-line{color:var(--orange);border-top:1px solid var(--ink-10);align-items:center;gap:.25rem;margin-top:.375rem;padding-top:.375rem;font-size:.75rem;display:flex}.deployment-coords{color:var(--ink-40);white-space:nowrap;margin-left:auto;font-size:.7rem}.deployment-coords-sm{color:var(--ink-40);font-size:.7rem}.deployment-form .timelapse-field select option{font-size:.8rem}.deployment-form .timelapse-field optgroup{color:var(--ink);font-weight:600}.location-camera-group{margin-bottom:1.5rem}.location-group-header{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.location-group-name{color:var(--ink);font-size:1.05rem;font-weight:600}.location-group-chip{padding:.125rem .5rem;font-size:.75rem}.location-device-map{border:1px solid var(--ink-10);border-radius:var(--radius-lg);width:100%;box-shadow:var(--shadow-sm);background:#f7f5ed;margin-bottom:1rem;overflow:hidden}.location-device-map svg{width:100%;height:240px;color:var(--ink-40);display:block}.location-device-google-map{width:100%;height:280px}.location-device-map.empty{min-height:210px;color:var(--ink-40);text-align:center;align-content:center;place-items:center;gap:.4rem;padding:1rem;font-size:.78rem;display:grid}.location-map-background{fill:#f4f1e6}.location-map-field{fill:#d8666d38;stroke:#a33f45;stroke-width:2px}.location-map-device circle:first-of-type{stroke:#fff;stroke-width:3px}.location-map-device.plant-camera circle:first-of-type{fill:#20b85a}.location-map-device.moth-trap circle:first-of-type{fill:#f4c430}.location-map-device-core{fill:#fff;stroke:none}.location-map-device text{fill:var(--ink);paint-order:stroke;stroke:#f4f1e6;stroke-width:3px;stroke-linejoin:round;font-size:9px;font-weight:700}.location-map-legend{border-top:1px solid var(--ink-10);color:var(--ink-60);background:#fff;flex-wrap:wrap;gap:.75rem;padding:.55rem .7rem;font-size:.7rem;display:flex}.location-map-legend span{align-items:center;gap:.3rem;display:inline-flex}.location-map-legend i{border-radius:50%;width:9px;height:9px}.location-map-legend i.plant-camera{background:#20b85a}.location-map-legend i.moth-trap{background:#f4c430}.weather-section{margin-top:2rem}.weather-section-title{color:var(--ink);margin-bottom:1rem;font-size:1.1rem;font-weight:600}.weather-card{background:var(--white);border:1px solid var(--ink-10);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-bottom:1rem;padding:1rem}.weather-card-header{flex-wrap:wrap;align-items:baseline;gap:.75rem;margin-bottom:.75rem;display:flex}.weather-location-name{font-size:1rem;font-weight:600}.weather-current-temp{color:var(--leaf);font-size:1.5rem;font-weight:700}.weather-updated{color:var(--ink-60);margin-left:auto;font-size:.75rem}.weather-current-metrics{flex-wrap:wrap;gap:1rem;margin-bottom:.75rem;display:flex}.weather-metric{flex-direction:column;gap:.125rem;display:flex}.weather-metric-label{color:var(--ink-60);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem}.weather-metric-value{font-size:.9rem;font-weight:500}.weather-daily-summary{flex-wrap:wrap;gap:.75rem;margin-bottom:.75rem;display:flex}.weather-day-item{background:var(--cream);border-radius:var(--radius-md);flex:1;min-width:140px;padding:.625rem;font-size:.8rem}.weather-day-label{margin-bottom:.25rem;font-weight:600}.weather-day-condition{color:var(--ink-60);margin-bottom:.25rem;font-size:.75rem}.weather-day-temps{gap:.5rem;margin-bottom:.125rem;display:flex}.weather-temp-high{color:var(--ink);font-weight:600}.weather-temp-low{color:var(--ink-60)}.weather-day-precip{color:var(--ink-60);gap:.5rem;font-size:.75rem;display:flex}.weather-hourly-chart{width:100%;overflow:hidden}.weather-hourly-chart svg{width:100%;height:auto;display:block}.image-nav-arrow{z-index:10;width:44px;height:44px;color:var(--ink);cursor:pointer;touch-action:manipulation;background:#f5f0e8e6;border:none;border-radius:50%;justify-content:center;align-items:center;transition:background .15s,opacity .15s;display:flex;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 2px 6px #2c242026}.image-nav-arrow:hover,.image-nav-arrow:focus-visible{background:var(--cream)}.image-nav-arrow:disabled{opacity:.3;cursor:default}.image-nav-arrow.prev{left:.5rem}.image-nav-arrow.next{right:.5rem}.voltage-chart-toggle{color:var(--leaf);border-radius:var(--radius-md);cursor:pointer;vertical-align:middle;background:0 0;border:none;justify-content:center;align-items:center;min-width:32px;min-height:32px;margin-left:.35rem;padding:0;transition:background .15s;display:inline-flex}.voltage-chart-toggle:hover,.voltage-chart-toggle:focus-visible{background:var(--ink-10)}@media (width<=768px){.moth-panel{padding:.9rem}.moth-controls{grid-template-columns:1fr 1fr}.moth-controls label:first-child{grid-column:1/-1}.moth-save{width:100%}.moth-stats{grid-template-columns:1fr 1fr}.deployment-map-wrapper svg{min-height:300px}.header-nav,.header-right{display:none}.bottom-nav{display:flex}.main-content{padding:1rem;padding-bottom:calc(var(--bottom-nav-height) + .75rem)}.detail-grid,.compare-panel,.camera-grid{grid-template-columns:1fr}.top-bar{flex-direction:column;align-items:stretch}.header-inner{gap:.5rem}.language-select{padding:.125rem .375rem;font-size:.68rem}}@media (width<=480px){.moth-controls,.moth-stats{grid-template-columns:1fr}.moth-controls label:first-child{grid-column:auto}.moth-panel-heading{align-items:flex-start}}.detail-row{gap:.5rem}.detail-value{overflow-wrap:break-word;word-break:break-word;min-width:0}.camera-roll-header,.camera-roll-actions{flex-wrap:wrap}.camera-roll-actions .btn{white-space:nowrap}.deployment-form-actions{flex-wrap:wrap}.timelapse-controls label{min-width:0}.timelapse-field input[type=number]{max-width:7rem}.deployment-form-row{min-width:0}.deployment-form-row .timelapse-field{min-width:120px}.alert-chip{white-space:normal;overflow-wrap:break-word;max-width:100%}.card-header.camera-roll-header,.location-group-header,.weather-card-header{overflow-wrap:break-word}@media (width<=768px){.language-select{display:inline-block}.header-logo{min-width:0;overflow:hidden}.header-logo span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}}@media (width>=769px){.main-content{padding-bottom:1.5rem}}@media (width<=480px){.camera-card-meta{flex-direction:column;gap:.25rem}.alert-summary{flex-direction:column}.camera-grid{gap:.75rem}}@media (width<=320px){.camera-card-meta{flex-direction:column;gap:.25rem}.alert-summary{flex-direction:column}}.insect-deployment-settings{gap:.75rem;display:grid}.insect-selector{flex:2 28rem}.insect-profile{border:1px solid var(--ink-10);border-radius:var(--radius-md);background:var(--cream);grid-template-columns:minmax(120px,190px) 1fr;gap:1rem;padding:.75rem;display:grid}.insect-profile img{object-fit:cover;border-radius:6px;width:100%;height:120px}.insect-profile div{align-content:start;gap:.25rem;display:grid}.insect-profile p{margin:.25rem 0}@media (width<=600px){.insect-profile{grid-template-columns:1fr}}
