@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-vietnamese-wght-normal-qRpaaN48.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-ext-wght-normal-DmpS2jIq.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-wght-normal-eXO_dkmS.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.newer-issue{justify-content:center;align-items:center;gap:var(--space-12);padding:6px var(--space-16);background:var(--ice);border-bottom:1px solid var(--line);color:var(--badge-ink);font-size:var(--font-size-13);flex:none;display:flex}.newer-issue-load{padding:3px var(--space-12);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--link);font-size:var(--font-size-13);font-weight:var(--weight-bold);white-space:nowrap;cursor:pointer}.newer-issue-load:hover{border-color:var(--blue);text-decoration:underline}.top-bar{flex:0 0 var(--topbar-height);padding:0 var(--space-16);background:var(--card);border-bottom:1px solid var(--line);z-index:20;grid-template-columns:1fr auto 1fr;align-items:stretch;display:grid}.top-bar-brand{align-items:center;gap:var(--space-12);min-width:0;display:flex}.top-bar-logo{align-items:center;min-height:32px;display:flex}.top-bar-logo img{width:124px;height:auto;display:block}.top-bar-product-group{padding-left:var(--space-12);border-left:1px solid var(--line);align-items:center;gap:6px;display:flex}.top-bar-mark{background-color:var(--blue);flex-shrink:0;width:22px;height:22px;-webkit-mask:url(/brand/hydrocast-mark.png) 50%/contain no-repeat;mask:url(/brand/hydrocast-mark.png) 50%/contain no-repeat}.top-bar-product{color:var(--ink-soft);font-size:var(--font-size-13);font-weight:var(--weight-medium)}.top-bar-tabs{align-items:stretch;gap:var(--space-8);display:flex}.tab-link{padding:0 var(--space-16);color:var(--muted-foreground);font-size:var(--font-size-13);font-weight:var(--weight-bold);align-items:center;gap:7px;text-decoration:none;display:flex;position:relative}.tab-link:hover,.tab-link[aria-current=page]{color:var(--ink)}.tab-link[aria-current=page]:after{content:"";background:var(--aqua);border-radius:3px 3px 0 0;height:3px;position:absolute;bottom:0;left:14px;right:14px}.top-bar-status{justify-content:flex-end;align-items:center;min-width:0;display:flex}.run-status{align-items:center;gap:var(--space-8);min-width:0;max-width:100%;padding:5px var(--space-12);border:1px solid var(--line);color:var(--ink-soft);font-size:var(--font-size-12);font-weight:var(--weight-medium);border-radius:999px;text-decoration:none;display:inline-flex}.run-status:hover{border-color:var(--border);color:var(--ink)}.run-status-title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.status-dot{background:var(--aqua);width:7px;height:7px;box-shadow:0 0 0 4px color-mix(in srgb, var(--aqua) 14%, transparent);border-radius:50%;flex:0 0 7px}.top-bar-project{margin-left:var(--space-8);padding:5px var(--space-12);border:1px solid var(--line);color:var(--ink-soft);font-size:var(--font-size-12);font-weight:var(--weight-medium);white-space:nowrap;border-radius:999px;flex-shrink:0;text-decoration:none}.top-bar-project:hover,.top-bar-project[aria-current=page]{border-color:var(--border);color:var(--ink)}.top-bar-account{align-items:center;gap:var(--space-8);min-width:0;margin-left:var(--space-12);flex-shrink:1;display:flex}.top-bar-user{min-width:0;color:var(--ink-soft);font-size:var(--font-size-12);font-weight:var(--weight-medium);align-items:center;gap:6px;display:inline-flex}.top-bar-user-email{white-space:nowrap;text-overflow:ellipsis;max-width:220px;overflow:hidden}.top-bar-user-role{padding:1px var(--space-8);background:var(--ice);color:var(--badge-ink);font-size:var(--font-size-11);border-radius:999px;flex-shrink:0}.top-bar-logout{padding:4px var(--space-12);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);color:var(--ink);font-size:var(--font-size-12);font-weight:var(--weight-bold);white-space:nowrap;cursor:pointer;flex-shrink:0}.top-bar-logout:hover:not(:disabled){border-color:var(--blue)}.top-bar-logout:disabled{opacity:.55;cursor:progress}.top-bar-logout-error{color:var(--alarm);font-size:var(--font-size-12);font-weight:var(--weight-medium);white-space:nowrap;flex-shrink:0}.top-bar-bell-holder{margin-left:var(--space-12);flex-shrink:0;position:relative}.top-bar-bell{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);width:30px;height:28px;color:var(--ink);cursor:pointer;justify-content:center;align-items:center;display:inline-flex;position:relative}.top-bar-bell:hover,.top-bar-bell[aria-expanded=true]{border-color:var(--blue)}.top-bar-bell-count{background:var(--alarm);color:#fff;min-width:16px;font-size:10px;font-weight:var(--weight-bold);text-align:center;border-radius:999px;padding:0 4px;line-height:16px;position:absolute;top:-6px;right:-6px}.notifications-panel{z-index:40;width:min(380px,92vw);max-height:min(70vh,520px);padding:var(--space-12);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);position:absolute;top:calc(100% + 6px);right:0;overflow-y:auto;box-shadow:0 8px 24px #00000024}.notifications-head{justify-content:space-between;align-items:center;gap:var(--space-8);margin-bottom:var(--space-8);display:flex}.notifications-title{color:var(--ink);font-size:var(--font-size-14);font-weight:var(--weight-bold);margin:0}.notifications-action{padding:2px var(--space-8);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);color:var(--ink);font-size:var(--font-size-12);cursor:pointer}.notifications-action:disabled{opacity:.5;cursor:not-allowed}.notifications-note{color:var(--muted-foreground);font-size:var(--font-size-12);margin:0}.notifications-note.is-error{color:var(--alarm)}.notifications-list{gap:var(--space-8);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.notification{padding:var(--space-8);border:1px solid var(--line);border-radius:var(--radius-sm);font-size:var(--font-size-12)}.notification.is-unread{border-color:var(--blue);background:var(--paper)}.notification p{margin:0}.notification-reason{color:var(--ink-soft);margin-top:2px}.notification-foot{margin-top:var(--space-8);color:var(--muted-foreground);justify-content:space-between;align-items:center;display:flex}.login{align-items:center}.login-card{gap:var(--space-16);width:min(400px,100%);padding:var(--space-24);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);flex-direction:column;display:flex}.login-title{color:var(--ink);font-size:var(--font-size-20);font-weight:var(--weight-bold)}.login-note{color:var(--ink-soft);font-size:var(--font-size-13)}.login-field{flex-direction:column;gap:6px;display:flex}.login-label{color:var(--ink-soft);font-size:var(--font-size-13);font-weight:var(--weight-medium)}.login-field input{height:36px;padding:0 var(--space-12);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);color:var(--ink);font-size:var(--font-size-14)}.login-field input:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px #328caa2e}.login-error{padding:var(--space-8) var(--space-12);background:var(--warning-tint);border-radius:var(--radius-sm);color:var(--warning-ink);font-size:var(--font-size-13)}.login-submit{min-height:36px}.menu-button{display:inline-flex;position:relative}.menu-button-trigger{min-height:36px;padding:0 var(--space-12);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);color:var(--ink);font-size:var(--font-size-13);font-weight:var(--weight-medium);white-space:nowrap;cursor:pointer;align-items:center;gap:6px;display:inline-flex}.menu-button-trigger:hover{border-color:var(--blue)}.menu-button-trigger[aria-expanded=true]{border-color:var(--blue);box-shadow:0 0 0 3px color-mix(in srgb, var(--blue) 14%, transparent)}.menu-popup{z-index:40;min-width:240px;padding:var(--space-4);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-floating);animation:menu-in var(--transition-panel);flex-direction:column;display:flex;position:absolute}.menu-popup.is-below{top:calc(100% + 6px)}.menu-popup.is-above{bottom:calc(100% + 6px)}.menu-popup.is-start{left:0}.menu-popup.is-end{right:0}@keyframes menu-in{0%{opacity:0;transform:translateY(-2px)}}.menu-item{align-items:flex-start;gap:var(--space-8);width:100%;padding:7px var(--space-8);color:var(--ink);font-size:var(--font-size-13);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;display:flex}.menu-item:hover:not([aria-disabled=true]),.menu-item:focus-visible{background:var(--muted);outline:none}.menu-item:focus-visible{box-shadow:inset 0 0 0 2px var(--ring)}.menu-item[aria-disabled=true]{color:var(--muted-foreground);cursor:not-allowed}.menu-item[aria-checked=true]{font-weight:var(--weight-bold)}.menu-item-icon{color:var(--blue);flex:0 0 16px;justify-content:center;padding-top:1px;display:inline-flex}.menu-item-text{flex-direction:column;gap:2px;display:flex}.menu-item-reason{color:var(--muted-foreground);font-size:var(--font-size-11);font-weight:var(--weight-body)}.part-error{justify-content:center;align-items:flex-start;gap:var(--space-8);width:100%;height:100%;min-height:0;padding:var(--space-16);background:var(--card);border:1px solid var(--alarm);border-radius:var(--radius-sm);flex-direction:column;display:flex}.part-error-title{color:var(--alarm);font-size:var(--font-size-14);font-weight:var(--weight-bold)}.part-error-detail{color:var(--ink-soft);font-size:var(--font-size-13)}.hint-bubble{left:var(--hint-x);top:var(--hint-y);z-index:1000;max-width:260px;padding:var(--space-8) var(--space-12);border-radius:var(--radius-sm);box-shadow:var(--shadow-floating);color:var(--ink);font-size:var(--font-size-12);pointer-events:none;background:#fffffffa;border:1px solid #d5e0df;line-height:1.4;position:fixed}.hint-bubble.is-left{transform:translate(-100%,-50%)}.hint-bubble.is-right{transform:translateY(-50%)}.hint-bubble.is-above{transform:translate(-50%,-100%)}.plant-warning-hint{flex:none;display:inline-flex}.plant-warning{border-radius:var(--radius-sm);background:var(--warning-tint);color:#87540f;min-width:26px;height:26px;font-size:var(--font-size-12);font-weight:var(--weight-bold);white-space:nowrap;border:1px solid #ba751759;justify-content:center;align-items:center;gap:5px;padding:0 5px;text-decoration:none;display:inline-flex}.plant-warning.has-label{padding:0 var(--space-8)}.plant-warning:hover{border-color:var(--warning);background:#f7e6cf}.home.is-map{overflow:hidden}.home.is-map .home-content{padding:0}.home-map{border-top:1px solid var(--line);background:#dbe5e1;flex:1;min-height:460px;position:relative;overflow:hidden}.home-map .home-map-canvas,.home-map .home-map-loading{position:absolute;inset:0}.home-map-loading{background:#e7eeeb}.home-map-canvas .maplibregl-canvas.is-pointer{cursor:pointer}.home-map-shade{z-index:1;background:var(--gradient-map-shade);pointer-events:none;position:absolute;inset:0}.home-map .map-corner{z-index:3}.home-map-notice{z-index:3;position:absolute;top:12px;left:50%;transform:translate(-50%)}.home-map-panel{z-index:2;gap:var(--space-16);pointer-events:none;flex-direction:column;width:380px;max-width:calc(100% - 40px);display:flex;position:absolute;top:24px;bottom:24px;left:clamp(20px,3vw,44px)}.home-map-panel>*{pointer-events:auto}.home-map-intro{color:#fff}.home-map-intro .eyebrow{margin-bottom:var(--space-8);color:#86ead6;font-size:var(--font-size-11);font-weight:var(--weight-strong);letter-spacing:.14em;text-transform:uppercase}.home-map-title{color:#fff;font-size:var(--font-size-24);font-weight:var(--weight-heavy);letter-spacing:-.02em;line-height:1.1}.home-map-count{gap:4px var(--space-16);margin-top:var(--space-12);padding-top:var(--space-12);color:#fff;font-size:var(--font-size-12);font-weight:var(--weight-medium);border-top:1px solid #ffffff3d;flex-wrap:wrap;display:flex}.home-map-count span:last-child{color:#ffffffb3}.home-map-list{gap:var(--space-12);flex-direction:column;min-height:0;padding-right:4px;display:flex;overflow-y:auto}.home-map-group-title{color:#ffffffbf;font-size:var(--font-size-12);font-weight:var(--weight-bold);margin-bottom:6px}.home-map-group ul{flex-direction:column;gap:6px;list-style:none;display:flex}.home-map-row{align-items:center;gap:var(--space-8);color:#fff;width:100%;min-height:38px;font-size:var(--font-size-14);text-align:left;cursor:pointer;transition:background-color var(--transition-panel), border-color var(--transition-panel);background:#ffffff14;border:1px solid #ffffff29;border-radius:10px;padding:6px 10px;display:flex}.home-map-row:hover,.home-map-row.is-highlighted{background:#ffffff2e;border-color:#86ead6}.home-map-row.is-selected{background:color-mix(in srgb, var(--aqua) 26%, transparent)}.home-map-row-name{min-width:0;font-weight:var(--weight-bold);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.home-map-row-missing{color:#f6c26b;display:inline-flex}.home-map-row-capacity{color:#ffffffd1;font-size:var(--font-size-12);font-variant-numeric:tabular-nums;white-space:nowrap}.home-map-empty{color:#ffffffd1;font-size:var(--font-size-13)}.home-map-card{gap:var(--space-12);padding:18px 18px var(--space-16);color:var(--ink);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f9fcfbf7;border:1px solid #ffffff94;border-radius:18px;flex-direction:column;flex:none;margin-top:auto;display:flex;box-shadow:0 28px 70px #081c2238}.home-map-card.is-highlighted{border-color:var(--aqua)}.home-map-card-head{justify-content:space-between;align-items:flex-start;gap:var(--space-8);display:flex}.home-map-card-title{min-width:0}.home-map-card .eyebrow{color:var(--link);font-size:var(--font-size-11);font-weight:var(--weight-strong);letter-spacing:.14em;text-transform:uppercase;margin-bottom:4px}.home-map-card-name{color:var(--ink);font-size:var(--font-size-20);font-weight:var(--weight-heavy);letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.home-map-card-location{margin:2px 0 var(--space-8);color:var(--ink-soft);font-size:var(--font-size-13)}.home-map-card-tools{gap:6px;display:flex}.home-map-card-more .menu-button-trigger{justify-content:center;width:28px;min-height:28px;padding:0}.home-map-card-warning{align-items:center;gap:var(--space-8);color:var(--ink-soft);font-size:var(--font-size-12);display:flex}.home-map-card-facts{padding:var(--space-12) 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:1fr 1.25fr;display:grid}.home-map-card-facts>div{flex-direction:column;gap:4px;min-width:0;display:flex}.home-map-card-facts>div+div{padding-left:var(--space-12);border-left:1px solid var(--line)}.home-map-card-facts dt{color:var(--ink-soft);font-size:var(--font-size-11)}.home-map-card-facts dd{color:var(--ink);font-size:var(--font-size-12);font-weight:var(--weight-bold);font-variant-numeric:tabular-nums}.home-map-card-facts .plant-capacity{justify-content:flex-start}.home{background:var(--paper);flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}.home-header{align-items:center;gap:var(--space-12);padding:var(--space-24) 32px var(--space-16);display:flex}.home-title{margin-right:var(--space-12);color:var(--ink);font-size:var(--font-size-20);font-weight:var(--weight-strong);letter-spacing:-.01em;white-space:nowrap}.home-search{align-items:center;gap:var(--space-8);width:320px;min-width:180px;height:36px;padding:0 var(--space-12);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);color:var(--muted-foreground);display:flex}.home-search:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px #328caa24}.home-search input{min-width:0;color:var(--ink);font-size:var(--font-size-13);background:0 0;border:none;outline:none;flex:1}.home-search input::placeholder{color:var(--muted-foreground)}.home-sort-value{font-weight:var(--weight-bold)}.home-view-toggle{border:1px solid var(--border);background:var(--muted);border-radius:10px;margin-left:auto;padding:3px;display:inline-flex}.home-view-button{height:30px;padding:0 var(--space-12);color:var(--ink-soft);font-size:var(--font-size-13);font-weight:var(--weight-medium);cursor:pointer;background:0 0;border:none;border-radius:7px;align-items:center;gap:6px;display:inline-flex}.home-view-button:hover{color:var(--ink)}.home-view-button[aria-pressed=true]{background:var(--card);color:var(--ink);box-shadow:0 1px 3px #1829361f}.home-content{flex-direction:column;flex:1;min-height:0;padding:0 32px 32px;display:flex}.home-note{margin:0 32px var(--space-16);padding:var(--space-8) var(--space-12);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);color:var(--ink-soft);font-size:var(--font-size-13)}.home-note.is-error{border-color:var(--alarm);color:var(--ink)}.home-empty{max-width:560px;padding:var(--space-24);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);box-shadow:var(--shadow-card);color:var(--ink-soft);font-size:var(--font-size-14);line-height:1.5}.home-no-match{color:var(--ink-soft);font-size:var(--font-size-14)}.home-skeleton{gap:var(--space-24);display:grid}.home-skeleton.is-gallery{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));padding-top:36px}.home-skeleton.is-list{border-top:1px solid var(--border);gap:0}.home-skeleton-item{gap:var(--space-16);background:var(--card);border:1px solid var(--border);display:flex}.home-skeleton.is-gallery .home-skeleton-item{height:330px;padding-bottom:var(--space-16);border-radius:var(--radius-lg);flex-direction:column;overflow:hidden}.home-skeleton.is-list .home-skeleton-item{height:56px;padding:0 var(--space-16);border-width:0 0 1px;align-items:center}.home-skeleton-thumb{background:var(--muted)}.home-skeleton.is-gallery .home-skeleton-thumb{height:150px}.home-skeleton.is-list .home-skeleton-thumb{border-radius:6px;flex:none;width:64px;height:40px}.home-skeleton-lines{gap:var(--space-12);padding:0 var(--space-16);flex-direction:column;flex:1;display:flex}.home-skeleton.is-list .home-skeleton-lines{flex-direction:row;padding:0}.home-skeleton.is-list .skeleton-line{flex:1}.plant-gallery{flex-direction:column;gap:28px;display:flex}.plant-group-title{align-items:center;gap:var(--space-12);margin-bottom:var(--space-16);color:var(--ink);font-size:var(--font-size-13);font-weight:var(--weight-bold);display:flex}.plant-group-title:after{content:"";background:var(--line);flex:1;height:1px}.plant-cards{gap:var(--space-24);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));list-style:none;display:grid}.plant-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);min-width:0;box-shadow:var(--shadow-card);transition:border-color var(--transition-panel), box-shadow var(--transition-panel);flex-direction:column;display:flex;overflow:hidden}.plant-card.is-highlighted{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue), var(--shadow-card)}.plant-card-thumb{border-bottom:1px solid var(--border);height:150px;position:relative}.plant-card-tag{color:var(--ink);font-size:var(--font-size-11);font-weight:var(--weight-bold);background:#fffffff0;border-radius:6px;padding:3px 7px;position:absolute;top:10px;left:10px;box-shadow:0 1px 3px #18293629}.plant-card-body{padding:var(--space-16) var(--space-16) var(--space-12);flex-direction:column;gap:4px;display:flex}.plant-card-heading{align-items:center;gap:var(--space-8);min-height:26px;display:flex}.plant-card-name{min-width:0;color:var(--ink);font-size:var(--font-size-16);font-weight:var(--weight-bold);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.plant-card-meta{color:var(--ink-soft);font-size:var(--font-size-13)}.plant-facts{margin-top:var(--space-12);flex-direction:column;gap:6px;display:flex}.plant-fact{justify-content:space-between;align-items:baseline;gap:var(--space-12);font-size:var(--font-size-13);display:flex}.plant-fact dt{color:var(--ink-soft)}.plant-fact dd{color:var(--ink);font-variant-numeric:tabular-nums;text-align:right}.plant-card-footer{align-items:flex-start;gap:var(--space-12);padding:var(--space-12) var(--space-16) var(--space-16);border-top:1px solid var(--line);flex-direction:column;margin-top:auto;display:flex}.plant-dot{background:var(--plant-colour);border:2px solid #fff;border-radius:50%;flex:none;width:10px;height:10px;box-shadow:0 0 0 1px #18293640}.plant-capacity{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:inline-flex}.plant-capacity-number{font-weight:var(--weight-bold);font-variant-numeric:tabular-nums}.status-badge{padding:2px var(--space-8);font-size:var(--font-size-12);font-weight:var(--weight-bold);white-space:nowrap;border-radius:6px;align-items:center;display:inline-flex}.status-badge.is-good{color:#11694e;background:#e3f4ec}.status-badge.is-neutral{background:var(--ice);color:#245f73}.plant-actions{gap:var(--space-8);display:flex}.plant-actions .button-secondary,.plant-actions .button-primary{gap:6px}.plant-actions.is-compact .button-secondary,.plant-actions.is-compact .button-primary{min-height:30px;font-size:var(--font-size-12)}.plant-thumb{background:#e7eeeb;width:100%;height:100%;position:relative;overflow:hidden}.plant-thumb-picture{object-fit:cover;width:100%;height:100%;display:block}.catchment-thumb,.catchment-thumb-canvas{width:100%;height:100%;display:block}.plant-thumb.is-empty{color:var(--muted-foreground);font-size:var(--font-size-12);justify-content:center;align-items:center;gap:6px;display:flex}.plant-table{border-collapse:collapse;width:100%;font-size:var(--font-size-13)}.plant-table thead th{padding:0 var(--space-12) var(--space-8);border-bottom:1px solid var(--border);color:var(--ink-soft);font-size:var(--font-size-12);font-weight:var(--weight-medium);text-align:left;white-space:nowrap}.plant-table tbody tr{background:var(--card);border-bottom:1px solid var(--border);transition:background-color var(--transition-panel)}.plant-table tbody tr.is-highlighted{box-shadow:inset 3px 0 0 var(--blue);background:#eef7f9}.plant-table td,.plant-table tbody th{padding:var(--space-8) var(--space-12);vertical-align:middle;text-align:left}.plant-table .is-number{text-align:right}.plant-table .is-number .plant-capacity{justify-content:flex-end}.plant-table-thumb{width:88px}.plant-table-thumb .plant-thumb{border:1px solid var(--border);border-radius:6px;width:64px;height:40px}.plant-table-thumb .plant-thumb.is-empty span{display:none}.plant-table-thumb .overlay-figure{--overlay-inset:4px}.plant-table-thumb .overlay-plant{border-width:1.5px;width:8px;height:8px;margin:-4px 0 0 -4px}.plant-table-name{color:var(--ink);font-weight:var(--weight-bold)}.plant-table-name-inner{align-items:center;gap:var(--space-8);display:inline-flex}.plant-table-muted{color:var(--ink-soft)}.is-tabular{font-variant-numeric:tabular-nums;white-space:nowrap}:root{--font-family:"Plus Jakarta Sans Variable", "Plus Jakarta Sans", ui-sans-serif, system-ui, sans-serif;--font-size-24:24px;--font-size-20:20px;--font-size-16:16px;--font-size-14:14px;--font-size-13:13px;--font-size-12:12px;--font-size-11:11px;--weight-body:400;--weight-medium:650;--weight-bold:700;--weight-strong:750;--weight-heavy:800;--ink:#182936;--ink-soft:#516571;--aqua:#31cfae;--blue:#328caa;--ice:#dff4f7;--switch-off:#7d8f97;--paper:#f5f8f7;--card:#fff;--line:#18293624;--muted:#e8eeee;--muted-foreground:#516571;--border:#d8e2e1;--ring:#328caa;--link:#2a7690;--badge-ink:#256c84;--on-today:var(--ink);--today:#e07e2e;--prev-year:#f69200;--alarm:#c0392b;--good:#1d9e75;--warning:#ba7517;--warning-ink:#955c13;--warning-tint:#fbf1e3;--radius-sm:8px;--radius-md:10px;--radius-lg:12px;--radius-xl:16px;--shadow-card:0 14px 42px #1f38410b;--shadow-panel:0 18px 50px #1f38410f;--shadow-floating:0 12px 28px #122d361f;--shadow-marker:0 5px 16px #093d4457;--gradient-map-shade:linear-gradient(90deg, #0f262dde 0, #0f262db3 24%, #0f262d24 39%, #0f262d00 51%);--grid:4px;--space-4:4px;--space-8:8px;--space-12:12px;--space-16:16px;--space-24:24px;--focus-ring:0 0 0 2px var(--ring);--transition-panel:.15s ease;--topbar-height:56px;--contextbar-height:44px;--leftpanel-width:264px;--leftpanel-collapsed-width:44px;--rightpanel-width:232px;--rightpanel-collapsed-width:44px;--forecast-window-height:48px;--chart-panel-height:220px;--chart-panel-collapsed-height:40px;--chart-expanded-map-height:300px}@media (prefers-reduced-motion:reduce){:root{--transition-panel:0s}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{background:var(--paper);color:var(--ink);font-family:var(--font-family);font-size:var(--font-size-14);font-weight:var(--weight-body);-webkit-font-smoothing:antialiased}a{color:var(--link)}button,input,select{font:inherit}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}code{font-size:.95em}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.page{flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.tab-body{flex:1;min-height:0;display:flex}.left-panel{flex:0 0 var(--leftpanel-width);width:var(--leftpanel-width);background:var(--card);border-right:1px solid var(--border);transition:flex-basis var(--transition-panel), width var(--transition-panel);position:relative;overflow-y:auto}.left-panel.is-collapsed{flex-basis:var(--leftpanel-collapsed-width);width:var(--leftpanel-collapsed-width);overflow:hidden}.left-panel-toggle{z-index:1;position:absolute;top:10px;right:8px}.left-panel.can-fold .panel-section:first-child>.panel-label{padding-right:36px}.tab-center{flex:1;grid-template-rows:minmax(0,1fr) auto auto;grid-template-columns:minmax(0,1fr);min-width:0;display:grid;position:relative}.map-slot{grid-area:1/1;min-height:0;position:relative}.map-slot.is-hidden,.map-slot.is-hidden *{pointer-events:none;visibility:hidden!important}.tab-center>.time-bar{grid-row:2}.tab-center>.chart-panel{grid-row:3}.tab-center>.summary-view{z-index:1;background:var(--paper);grid-area:1/1;min-height:0;overflow-y:auto}.summary-loading{background:repeating-linear-gradient(180deg, var(--muted) 0, var(--muted) 1px, transparent 1px, transparent 48px), var(--paper)}.tab-center>.chart-panel-placeholder{height:var(--chart-panel-height);background:var(--card);border-top:1px solid var(--border);grid-row:3}.panel-section{gap:var(--space-8);padding:var(--space-16);border:none;border-bottom:1px solid var(--border);flex-direction:column;display:flex}.panel-label{color:var(--muted-foreground);font-size:var(--font-size-12);font-weight:var(--weight-medium)}.panel-title{color:var(--ink);font-size:var(--font-size-13);font-weight:var(--weight-bold)}.icon-button{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);width:28px;height:28px;color:var(--ink);cursor:pointer;justify-content:center;align-items:center;display:inline-flex}.icon-button:hover:not(:disabled){border-color:var(--blue);color:var(--blue)}.icon-button:disabled{color:var(--muted-foreground);opacity:.55;cursor:not-allowed}.button-primary,.button-secondary{min-height:32px;padding:0 var(--space-12);border-radius:var(--radius-sm);font-size:var(--font-size-13);font-weight:var(--weight-bold);white-space:nowrap;cursor:pointer;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.button-primary{border:1px solid var(--ink);background:var(--ink);color:#fff}.button-primary:disabled{opacity:.55;cursor:not-allowed}.button-secondary{border:1px solid var(--border);background:var(--card);color:var(--ink)}.button-secondary:hover:not(:disabled){border-color:var(--blue)}.placeholder-tag{padding:1px var(--space-8);background:var(--warning-tint);color:var(--warning-ink);font-size:var(--font-size-11);font-weight:var(--weight-medium);white-space:nowrap;border-radius:999px;align-self:flex-start}.page-message{padding:var(--space-24);flex:1;justify-content:center;align-items:flex-start;display:flex;overflow-y:auto}.message-card{align-items:flex-start;gap:var(--space-12);max-width:560px;padding:var(--space-24);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);color:var(--ink-soft);font-size:var(--font-size-14);flex-direction:column;display:flex}.message-card.is-error{border-color:var(--alarm)}.message-title{color:var(--ink);font-size:var(--font-size-16);font-weight:var(--weight-bold)}.app-loading{gap:var(--space-12);flex-direction:column;width:min(560px,100%);display:flex}.skeleton-line{border-radius:var(--radius-sm);background:var(--muted);height:16px}.skeleton-line.is-short{width:60%}.app-root{width:100%;height:100%}.desktop-only{display:none}@media (width<=1023.98px){.app-root,.dialog-backdrop{display:none}.desktop-only{justify-content:center;align-items:center;gap:var(--space-16);width:100%;height:100%;padding:var(--space-24);background:var(--paper);text-align:center;flex-direction:column;display:flex}.desktop-only img{width:148px;height:auto}.desktop-only h1{color:var(--ink);font-size:var(--font-size-20);font-weight:var(--weight-bold)}.desktop-only p{max-width:420px;color:var(--ink-soft);font-size:var(--font-size-14)}}.slider-row{align-items:center;gap:var(--space-8);display:flex}.slider-row input{min-width:0;height:24px;accent-color:var(--blue);flex:1}.slider-value{text-align:right;min-width:40px;color:var(--ink-soft);font-size:var(--font-size-12);font-variant-numeric:tabular-nums}
