.portal-app--supabase{--portal-rail-width:15rem;--portal-topbar-height:3rem}.portal-app--supabase button.portal-crumb__trigger,.portal-app--supabase button.portal-header__signout,.portal-app--supabase button.portal-topbar__avatar{background:transparent;color:var(--fg)}.portal-app--supabase button.portal-topbar__avatar{background:#f8fafc}.portal-app--supabase button.portal-crumb__trigger.is-switchable:hover:not(:disabled){background:#f8fafc;color:var(--fg)}.portal-app--supabase .portal-frame{display:flex;flex:1;min-height:0;overflow:hidden;background:var(--bg);position:relative}.portal-topbar{flex:0 0 auto;min-height:var(--portal-topbar-height);padding:0 1rem 0 .75rem;background:#fff;border-bottom:1px solid var(--border);z-index:30;overflow:visible}.portal-staff-preview-banner,.portal-topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem}.portal-staff-preview-banner{padding:.45rem 1rem;background:#ecfdf5;border-bottom:1px solid #a7f3d0;color:#065f46;font-size:.875rem}.portal-staff-preview-banner a{color:#047857;font-weight:600;text-decoration:none}.portal-staff-preview-banner a:hover{text-decoration:underline}.portal-context-switch-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:rgba(15,23,42,.42);backdrop-filter:blur(4px);animation:portal-context-switch-fade-in .18s ease}.portal-context-switch-overlay__panel{display:flex;align-items:center;gap:1rem;width:min(22rem,100%);padding:1.1rem 1.25rem;border-radius:14px;background:#fff;border:1px solid #e2e8f0;box-shadow:0 20px 45px rgba(15,23,42,.18),inset 0 0 0 1px rgba(255,255,255,.6)}.portal-context-switch-overlay__spinner-wrap{display:grid;place-items:center;flex-shrink:0;width:2.75rem;height:2.75rem;border-radius:999px;background:color-mix(in srgb,#16a74a 10%,#fff);border:1px solid color-mix(in srgb,#16a74a 18%,#e2e8f0)}.portal-context-switch-overlay__spinner{width:1.25rem;height:1.25rem;border:2.5px solid color-mix(in srgb,#16a74a 22%,transparent);border-top-color:#16a74a;border-radius:50%;animation:portal-context-switch-spin .75s linear infinite}.portal-context-switch-overlay__copy{min-width:0;flex:1}.portal-context-switch-overlay__eyebrow{margin:0;font-size:.75rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:#64748b}.portal-context-switch-overlay__title{margin:.2rem 0 0;font-size:1rem;font-weight:600;line-height:1.35;color:#1e293b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-context-switch-overlay__status{margin:.35rem 0 0;font-size:.8125rem;color:#16a74a;font-weight:500}@keyframes portal-context-switch-spin{to{transform:rotate(1turn)}}@keyframes portal-context-switch-fade-in{0%{opacity:0}to{opacity:1}}.portal-crumb__static{display:inline-flex;align-items:center;gap:.4rem;font-size:.875rem;color:var(--fg)}.portal-topbar__avatar--exit{text-decoration:none;font-weight:600}.portal-topbar__crumbs{display:flex;align-items:center;gap:.35rem;min-width:0;flex:1;overflow:visible}.portal-topbar__brand{display:flex;align-items:center;flex-shrink:0;padding:.2rem .35rem}.portal-topbar__mobile{display:none;align-items:center;gap:.65rem;flex:1 1 auto;min-width:0}.portal-topbar__actions{display:flex;align-items:center;gap:.65rem;flex-shrink:0}.portal-topbar__email{font-size:.8rem;color:var(--muted);max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-topbar__avatar{display:grid;place-items:center;width:2rem;height:2rem;padding:0;border-radius:999px;border:1px solid var(--border);background:#f8fafc;color:var(--fg);font-size:.8rem;font-weight:600;cursor:pointer}.portal-topbar__avatar:hover:not(:disabled){background:color-mix(in srgb,var(--onelink-green-grass) 12%,#fff);border-color:color-mix(in srgb,var(--onelink-green-grass) 35%,var(--border))}.portal-crumb{position:relative;flex-shrink:0}.portal-crumb__trigger{display:inline-flex;align-items:center;gap:.4rem;max-width:14rem;padding:.3rem .45rem;border:0;border-radius:6px;background:transparent;color:var(--fg);font:inherit;font-size:.875rem;font-weight:500;cursor:default}.portal-crumb__trigger:hover:not(:disabled){background:transparent}.portal-crumb__trigger.is-switchable:hover:not(:disabled){background:#f8fafc}.portal-crumb__trigger.is-switchable{cursor:pointer}.portal-crumb__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-crumb__logo{display:block;height:1.65rem;width:auto}.portal-crumb__logo--compact{height:1.45rem;max-width:108px}.portal-crumb__logo--mobile{height:1.85rem;max-width:132px}.portal-topbar__notif-btn{display:grid;place-items:center;flex:0 0 auto;width:2.35rem;height:2.35rem;padding:0;border:0;border-radius:999px;background:transparent;color:#334155;cursor:pointer}.portal-topbar__notif-btn:hover{background:#f1f5f9;color:#0f172a}.portal-topbar__brand--mobile{flex:1 1 auto;display:flex;justify-content:flex-start;min-width:0;padding:0}.portal-topbar__mobile-actions{display:flex;align-items:center;gap:.35rem;flex:0 0 auto}.portal-topbar__avatar--mobile{width:2.35rem;height:2.35rem;border:0;background:var(--onelink-green-grass);color:#fff;font-size:.78rem;font-weight:700;letter-spacing:.01em}.portal-topbar__avatar--mobile:hover:not(:disabled){background:color-mix(in srgb,var(--onelink-green-grass) 88%,#000);border-color:transparent}.portal-app--supabase button.portal-topbar__avatar--mobile{background:var(--onelink-green-grass);color:#fff}.portal-topbar__avatar--mobile.portal-topbar__avatar--exit{background:#f8fafc;color:var(--fg);border:1px solid var(--border)}.portal-page__logo{display:block;height:2.75rem;width:auto}.portal-crumb__chevron{width:0;height:0;flex-shrink:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--muted);margin-top:1px}.portal-crumb__sep{color:#cbd5e1;font-size:.9rem;user-select:none}.portal-crumb__menu{--portal-menu-fg:var(--onelink-charcoal);--portal-menu-muted:#64748b;--portal-menu-border:#e2e8f0;padding:.5rem 0;border:1px solid var(--portal-menu-border);border-radius:10px;background:#fff;color:var(--portal-menu-fg);box-shadow:0 12px 32px rgba(15,23,42,.12);z-index:40}.portal-crumb__menu--floating{position:fixed;z-index:200}.portal-crumb__menu-title{margin:0;padding:0 .85rem .45rem;font-size:.75rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--portal-menu-muted);border-bottom:1px solid var(--portal-menu-border)}.portal-crumb__list{list-style:none;margin:0;padding:.25rem 0 0}.portal-crumb__group+.portal-crumb__group{margin-top:.35rem;padding-top:.35rem;border-top:1px solid var(--portal-menu-border)}.portal-crumb__group-label{margin:0;padding:.45rem .85rem .2rem;font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--portal-menu-muted)}.portal-crumb__menu .portal-crumb__option{display:flex;align-items:center;gap:.6rem;width:100%;padding:.5rem .85rem;border:0;border-radius:0;background:transparent;color:var(--portal-menu-fg);font:inherit;font-size:.875rem;font-weight:500;text-align:left;cursor:pointer}.portal-crumb__menu .portal-crumb__option:hover{background:#f8fafc;color:var(--portal-menu-fg)}.portal-crumb__menu .portal-crumb__option.is-selected{background:color-mix(in srgb,var(--onelink-green-grass) 14%,#fff);color:var(--onelink-green-grass)}.portal-crumb__menu .portal-entity-icon{background:#f1f5f9;color:#64748b}.portal-crumb__menu .portal-org-icon{background:color-mix(in srgb,var(--onelink-green-grass) 18%,#fff);color:var(--onelink-green-grass)}.portal-org-icon{place-items:center;width:1.35rem;height:1.35rem;background:color-mix(in srgb,var(--onelink-green-grass) 18%,#fff);color:var(--onelink-green-grass);font-size:.7rem;font-weight:700}.portal-entity-icon,.portal-org-icon{display:grid;border-radius:6px;flex-shrink:0}.portal-entity-icon{place-items:center;width:1.35rem;height:1.35rem;background:#f1f5f9;color:var(--muted)}.portal-app--supabase .portal-vertical-icon{width:1.35rem;height:1.35rem;border-radius:6px;font-size:.65rem}.portal-mobile-context{position:relative;flex:1 1 auto;min-width:0}.portal-mobile-context--fab{flex:0 0 auto;min-width:0}.portal-mobile-context__trigger{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0;min-height:2.35rem;padding:.35rem .65rem;border:1px solid var(--border);border-radius:10px;background:#fff;color:var(--fg);font:inherit;text-align:left;cursor:default}.portal-mobile-context__trigger.is-switchable{cursor:pointer}.portal-mobile-context__trigger-icon{display:inline-flex;flex:0 0 auto}.portal-mobile-context__trigger-copy{display:flex;flex-direction:column;gap:.05rem;flex:1 1 auto;min-width:0}.portal-mobile-context__trigger-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:600;line-height:1.2}.portal-mobile-context__trigger-subtitle{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;font-weight:500;line-height:1.2;color:#64748b}.portal-mobile-context__trigger-chevron{flex:0 0 auto;width:.45rem;height:.45rem;border-right:2px solid #64748b;border-bottom:2px solid #64748b;transform:rotate(45deg) translateY(-1px)}.portal-mobile-context__backdrop{position:fixed;inset:0;z-index:120;border:0;padding:0;background:rgba(15,23,42,.38)}.portal-mobile-context__sheet{position:fixed;left:0;right:0;bottom:0;z-index:121;max-height:min(72vh,34rem);overflow-y:auto;padding:.35rem .85rem calc(.85rem + env(safe-area-inset-bottom, 0px));border-radius:16px 16px 0 0;background:#fff;box-shadow:0 -12px 40px rgba(15,23,42,.18)}.portal-mobile-context__sheet-handle{width:2.5rem;height:.28rem;margin:.35rem auto .65rem;border-radius:999px;background:#cbd5e1}.portal-mobile-context__sheet-title{margin:0 0 .45rem;font-size:1rem;font-weight:700;color:#0f172a}.portal-mobile-context__detail-head{display:flex;align-items:center;gap:.65rem;margin-bottom:.55rem}.portal-mobile-context__back{flex:0 0 auto;padding:.25rem .15rem;border:0;background:transparent;color:var(--onelink-green-grass);font:inherit;font-size:.9rem;font-weight:600;cursor:pointer}.portal-mobile-context__detail-title{flex:1 1 auto;margin:0;font-size:1rem;font-weight:700;color:#0f172a}.portal-mobile-context__path{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem .35rem;margin:0 0 .85rem;font-size:.78rem;font-weight:500;line-height:1.35;color:#64748b}.portal-mobile-context__path--summary{padding:.55rem .65rem;border-radius:10px;background:#f8fafc;border:1px solid #eef2f6}.portal-mobile-context__path-segment{display:inline-flex;align-items:center;gap:.35rem;min-width:0}.portal-mobile-context__path-segment>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-mobile-context__path-sep{color:#94a3b8;font-weight:700}.portal-mobile-context__hint{margin:-.35rem 0 .75rem;padding:.55rem .65rem;border-radius:8px;background:#fffbeb;border:1px solid #fde68a;color:#92400e;font-size:.78rem;line-height:1.4}.portal-mobile-context__stack{display:flex;flex-direction:column;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;background:#fff}.portal-mobile-context__stack-row{display:flex;align-items:center;gap:.65rem;width:100%;min-height:3.1rem;padding:.65rem .75rem;border:0;border-bottom:1px solid #eef2f6;background:#fff;color:inherit;font:inherit;text-align:left}.portal-mobile-context__stack-row:last-child{border-bottom:0}.portal-mobile-context__stack-row.is-switchable{cursor:pointer}.portal-mobile-context__stack-row.is-switchable:hover:not(:disabled){background:#f8fafc}.portal-mobile-context__stack-row.is-switchable:disabled{opacity:.65;cursor:default}.portal-mobile-context__stack-row.is-static{background:#fafbfc}.portal-mobile-context__stack-row.is-active .portal-mobile-context__stack-value{color:#14532d}.portal-mobile-context__stack-icon{display:inline-flex;flex:0 0 auto}.portal-mobile-context__stack-copy{display:flex;flex-direction:column;gap:.1rem;flex:1 1 auto;min-width:0}.portal-mobile-context__stack-type{font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}.portal-mobile-context__stack-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.92rem;font-weight:600;color:#0f172a}.portal-mobile-context__stack-chevron{flex:0 0 auto;font-size:1.15rem;line-height:1;color:#94a3b8;font-weight:400}.portal-mobile-context__section+.portal-mobile-context__section{margin-top:.85rem;padding-top:.85rem;border-top:1px solid #eef2f6}.portal-mobile-context__section-title{margin:0 0 .35rem;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#64748b}.portal-mobile-context__list{list-style:none;margin:0;padding:0}.portal-mobile-context__option{display:flex;align-items:center;gap:.65rem;width:100%;min-height:2.75rem;padding:.55rem .45rem;border:0;border-radius:10px;background:transparent;color:#0f172a;font:inherit;font-size:.92rem;font-weight:600;text-align:left;cursor:pointer}.portal-mobile-context__option:hover:not(:disabled){background:#f8fafc}.portal-mobile-context__option.is-selected{background:color-mix(in srgb,var(--onelink-green-grass) 8%,#fff);color:#14532d}.portal-mobile-context__option:disabled{cursor:default}.portal-mobile-context__option-label{flex:1 1 auto;min-width:0}.portal-mobile-context__option-check{flex:0 0 auto;font-size:.85rem;font-weight:800;color:var(--onelink-green-grass)}body.portal-mobile-context-open{overflow:hidden}.portal-rail-wrap{flex:0 0 var(--portal-rail-width);width:var(--portal-rail-width);min-width:var(--portal-rail-width);display:flex;flex-direction:column;min-height:0;background:#f8fafc;border-right:1px solid var(--border)}.portal-rail{display:flex;flex:1 1 auto;flex-direction:column;align-items:stretch;gap:.5rem;min-height:0;padding:.65rem .45rem;overflow:hidden}.portal-rail__brand{display:flex;align-items:center;gap:.55rem;min-height:2.35rem;margin-bottom:.15rem;padding:0 .35rem}.portal-rail__logo{display:block;width:1.75rem;height:1.75rem;object-fit:contain}.portal-rail__mark{flex:0 0 2rem;display:grid;place-items:center;width:2rem;height:2rem;border-radius:8px;background:var(--onelink-green-grass);color:#fff;font-size:.85rem;font-weight:800;line-height:1}.portal-rail__brand-label{overflow:hidden;min-width:0;font-size:.875rem;font-weight:700;color:var(--fg);white-space:nowrap;text-overflow:ellipsis}.portal-rail__nav{display:flex;flex-direction:column;align-items:stretch;gap:.2rem;width:100%;flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;padding:0 .15rem .35rem}.portal-rail__btn{display:flex;align-items:center;justify-content:flex-start;gap:.5rem;width:100%;min-height:2.25rem;padding:0 .35rem;border-radius:8px;color:var(--muted);text-decoration:none;transition:background .15s ease,color .15s ease}.portal-rail__btn-icon{flex:0 0 2rem;display:grid;place-items:center;width:2rem;height:2rem}.portal-rail__btn-icon svg{width:18px;height:18px}.portal-rail__btn-label{flex:1 1 auto;min-width:0;font-size:.8125rem;font-weight:500;color:inherit;white-space:nowrap;line-height:1.25;overflow:hidden;text-overflow:ellipsis}.portal-rail__btn:hover{background:#eef2f6;color:var(--fg)}.portal-rail__btn.is-active{background:color-mix(in srgb,var(--onelink-green-grass) 14%,#fff)}.portal-rail__btn.is-active,.portal-rail__btn.is-active .portal-rail__btn-label{color:var(--onelink-green-grass)}.portal-rail__btn--config{margin-top:auto}.portal-app--config-mode{--portal-rail-collapsed-width:3.75rem;--portal-rail-width-expanded:15rem;--portal-panel-width:14.5rem}.portal-rail-wrap--collapsed{position:relative;z-index:40;flex:0 0 var(--portal-rail-collapsed-width);width:var(--portal-rail-collapsed-width);min-width:var(--portal-rail-collapsed-width);overflow:visible}.portal-rail-wrap--collapsed.portal-rail-wrap--peek .portal-rail{position:absolute;top:0;left:0;bottom:0;z-index:50;width:var(--portal-rail-width-expanded);background:#f8fafc;border-right:1px solid var(--border);box-shadow:4px 0 20px rgba(15,23,42,.1)}.portal-app--config-mode .portal-rail-wrap--collapsed:not(.portal-rail-wrap--peek) .portal-rail__brand-label,.portal-app--config-mode .portal-rail-wrap--collapsed:not(.portal-rail-wrap--peek) .portal-rail__btn-label{display:none}.portal-app--config-mode .portal-rail-wrap--collapsed:not(.portal-rail-wrap--peek) .portal-rail__brand,.portal-app--config-mode .portal-rail-wrap--collapsed:not(.portal-rail-wrap--peek) .portal-rail__btn{justify-content:center;padding:0}.portal-panel{display:none;flex:0 0 var(--portal-panel-width,14.5rem);width:var(--portal-panel-width,14.5rem);min-width:var(--portal-panel-width,14.5rem);flex-direction:column;min-height:0;padding:.85rem .65rem 1rem;background:#fff;border-right:1px solid var(--border);overflow:hidden}.portal-app--config-mode .portal-panel{display:flex}.portal-panel__title{margin:0 0 .75rem;padding:0 .35rem;font-size:.95rem;font-weight:700;color:var(--fg)}.portal-panel__nav{flex:1;min-height:0;overflow-y:auto}.portal-panel__group+.portal-panel__group{margin-top:.85rem}.portal-panel__group-label{margin:0 0 .35rem;padding:0 .35rem;font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}.portal-panel__link{display:block;padding:.45rem .55rem;border-radius:8px;color:var(--fg);font-size:.8125rem;font-weight:500;text-decoration:none;line-height:1.35}.portal-panel__link:hover{background:#f8fafc;color:var(--fg)}.portal-panel__link.is-active{background:color-mix(in srgb,var(--onelink-green-grass) 14%,#fff);color:var(--onelink-green-grass);font-weight:600}.portal-main{flex:1 1 0;min-width:0;min-height:0;padding:1.75rem 2rem;overflow-x:hidden;overflow-y:auto;background:var(--bg)}.portal-app--supabase .portal-main h2{margin-top:0;font-size:1.5rem;font-weight:600;color:var(--fg)}.portal-app--supabase .portal-main .card{box-shadow:0 1px 2px rgba(15,23,42,.04)}.portal-page-header{margin-bottom:1.25rem}.portal-page-header h1{margin:0 0 .35rem;font-size:1.65rem;font-weight:600;color:var(--fg)}.portal-page-lead{margin:0;color:var(--muted);font-size:.95rem;line-height:1.5;max-width:42rem}.portal-empty-card{padding:1.25rem 1.35rem}.portal-empty-card__title{margin:0 0 .35rem;font-weight:600;color:var(--fg)}.portal-empty-card__text{margin:0;color:var(--muted);font-size:.9rem;line-height:1.5}.portal-module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.portal-module-card{display:block;padding:1rem 1.1rem;text-decoration:none;color:inherit;transition:border-color .15s ease,box-shadow .15s ease}.portal-module-card:hover{border-color:color-mix(in srgb,var(--onelink-green-grass) 35%,var(--border));box-shadow:0 4px 14px rgba(15,23,42,.06)}.portal-module-card__icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin-bottom:.65rem;border-radius:8px;background:color-mix(in srgb,var(--onelink-green-grass) 10%,#fff);color:var(--onelink-green-grass)}.portal-module-card__title{margin:0 0 .35rem;font-size:1rem;font-weight:600}.portal-module-card__lead{margin:0;font-size:.82rem;line-height:1.45;color:var(--muted)}.portal-main:has(.portal-maps--fullscreen){padding:0;overflow:hidden;display:flex;flex-direction:column;min-height:0;height:100%}.portal-maps{display:flex;flex-direction:column;gap:.85rem;min-height:calc(100vh - 7rem)}.portal-maps--fullscreen{flex:1 1 auto;min-height:0;gap:0}.portal-maps__stage{position:relative;flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.portal-maps--fullscreen .portal-maps__canvas{flex:1 1 auto;width:100%;height:100%;min-height:0;border:none;border-radius:0;background:#0f1419;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.portal-maps__canvas-wrap{position:relative;flex:1 1 auto;display:flex;flex-direction:column;min-height:0;width:100%;height:100%}.portal-maps--fullscreen .portal-maps__canvas-wrap{flex:1 1 auto;min-height:0;height:100%}.portal-maps__load-error{position:absolute;inset:0;z-index:3;display:grid;place-content:center;gap:.45rem;padding:1.5rem;background:rgba(15,20,25,.88);color:#f8fafc;text-align:center}.portal-maps__load-error-title{margin:0;font-size:1.05rem;font-weight:700}.portal-maps__load-error-hint,.portal-maps__load-error-text{margin:0;max-width:36rem;justify-self:center;font-size:.88rem;line-height:1.45;color:#cbd5e1}.portal-maps__load-error-hint code{font-size:.8rem;color:#e2e8f0}.portal-maps--fullscreen .portal-maps__canvas .gm-style,.portal-maps--fullscreen .portal-maps__canvas .gm-style *{-webkit-tap-highlight-color:transparent}.portal-maps__legend--overlay{top:.75rem;right:.75rem;pointer-events:none}.portal-maps__legend--overlay,.portal-maps__status--overlay{position:absolute;z-index:2;padding:.45rem .65rem;border-radius:8px;background:rgba(255,255,255,.92);border:1px solid var(--border);box-shadow:0 2px 8px rgba(15,23,42,.08)}.portal-maps__status--overlay{left:.75rem;bottom:.75rem;max-width:min(32rem,calc(100% - 1.5rem));margin:0;font-size:.8rem;line-height:1.4}.portal-mobile-fab{position:fixed;right:calc(.85rem + env(safe-area-inset-right, 0px));bottom:calc(.85rem + env(safe-area-inset-bottom, 0px));z-index:35;display:grid;place-items:center;width:3.15rem;height:3.15rem;padding:0;border:0;border-radius:12px;background:var(--onelink-green-grass);color:#fff;box-shadow:0 6px 20px rgba(15,23,42,.22);cursor:pointer;text-decoration:none}.portal-mobile-fab svg{width:1.35rem;height:1.35rem}.portal-mobile-fab:hover{filter:brightness(1.04)}.portal-mobile-fab.is-open{background:#14532d}.portal-mobile-fab--home{background:#fff;color:var(--onelink-green-grass);border:1px solid #e2e8f0;box-shadow:0 4px 16px rgba(15,23,42,.14)}.portal-mobile-fab--home:hover{background:#f8fafc;filter:none}.portal-mobile-context__fab-bar{display:inline-flex;align-items:center;gap:.45rem;min-width:0;max-width:min(14.5rem,calc(100vw - 7.5rem));height:3.15rem;padding:0 .7rem 0 .65rem;border:1px solid #e2e8f0;border-radius:12px;background:#fff;color:#0f172a;font:inherit;text-align:left;cursor:default;box-shadow:0 4px 16px rgba(15,23,42,.14)}.portal-mobile-context__fab-bar.is-switchable:hover:not(:disabled){background:#f8fafc}.portal-mobile-context__fab-bar.is-switchable{cursor:pointer}.portal-mobile-context__fab-bar.is-open{background:color-mix(in srgb,var(--onelink-green-grass) 10%,#fff)}.portal-mobile-context__fab-bar:disabled{opacity:.72}.portal-mobile-context__fab-bar-icon{display:inline-flex;flex:0 0 auto;color:var(--onelink-green-grass)}.portal-mobile-context__fab-bar-copy{display:flex;flex-direction:column;gap:.05rem;min-width:0;flex:1 1 auto}.portal-mobile-context__fab-bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;font-weight:700;line-height:1.15;color:#0f172a}.portal-mobile-context__fab-bar-subtitle{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.68rem;font-weight:500;line-height:1.1;color:#64748b}.portal-mobile-context__fab-bar-chevron{flex:0 0 auto;width:.45rem;height:.45rem;margin-left:.05rem;border-right:2px solid #94a3b8;border-bottom:2px solid #94a3b8;transform:rotate(45deg) translateY(-1px)}.portal-mobile-context__fab-bar--maps-full{width:auto;max-width:min(14.5rem,calc(100vw - 7.5rem));flex:0 1 auto;min-width:0}.portal-mobile-context__fab-compact{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:3.15rem;height:3.15rem;padding:0;border:1px solid #e2e8f0;border-radius:12px;background:#fff;color:var(--onelink-green-grass);cursor:default;box-shadow:0 4px 16px rgba(15,23,42,.14)}.portal-mobile-context__fab-compact.is-switchable{cursor:pointer}.portal-mobile-context__fab-compact.is-switchable:hover:not(:disabled){background:#f8fafc}.portal-mobile-context__fab-compact.is-open{background:color-mix(in srgb,var(--onelink-green-grass) 10%,#fff)}.portal-mobile-context__fab-compact:disabled{opacity:.72}.portal-mobile-context__fab-compact-icon{display:inline-flex}.portal-maps-module-launcher,.portal-mobile-fab-bar{display:none}.portal-maps-module-launcher__backdrop{position:fixed;inset:0;z-index:36;border:0;padding:0;background:rgba(15,23,42,.28)}.portal-maps-module-launcher__panel{position:fixed;right:calc(.85rem + env(safe-area-inset-right, 0px));bottom:calc(4.35rem + env(safe-area-inset-bottom, 0px));z-index:37;width:min(calc(100vw - 1.7rem),20.5rem);max-height:min(58vh,26rem);overflow-y:auto;padding:.85rem;border-radius:14px;background:#fff;border:1px solid var(--border);box-shadow:0 12px 36px rgba(15,23,42,.18)}.portal-maps-module-launcher__title{margin:0 0 .65rem;font-size:.95rem;font-weight:700;color:#0f172a}.portal-maps-module-launcher__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.portal-maps-module-launcher__tile{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:.4rem;min-height:5.35rem;padding:.65rem .35rem .55rem;border-radius:12px;background:#f4f6f8;border:1px solid #e8edf2;color:#0f172a;text-decoration:none;text-align:center;transition:background .12s ease,border-color .12s ease,box-shadow .12s ease}button.portal-maps-module-launcher__tile{width:100%;cursor:pointer;font:inherit;appearance:none}button.portal-maps-module-launcher__tile:disabled{cursor:default}.portal-mobile-context__launcher-head{margin-bottom:.15rem}.portal-mobile-context__hint--launcher{margin-top:-.35rem;margin-bottom:.65rem}.portal-mobile-context__launcher-list{list-style:none;margin:0;padding:0;border:1px solid #e8edf2;border-radius:12px;overflow:hidden;background:#fff}.portal-mobile-context__launcher-list>li+li{border-top:1px solid #eef2f6}.portal-mobile-context__group-label{margin:0;padding:.55rem .85rem .35rem;font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#64748b;background:#f8fafc}.portal-mobile-context__launcher-level,.portal-mobile-context__launcher-option{display:flex;align-items:center;gap:.65rem;width:100%;min-height:3rem;padding:.65rem .75rem;border:0;background:#fff;color:#0f172a;font:inherit;text-align:left;cursor:pointer}.portal-mobile-context__launcher-level:hover:not(:disabled),.portal-mobile-context__launcher-option:hover:not(:disabled){background:#f8fafc}.portal-mobile-context__launcher-option.is-selected{background:color-mix(in srgb,var(--onelink-green-grass) 8%,#fff);color:#14532d}.portal-mobile-context__launcher-level:disabled,.portal-mobile-context__launcher-option:disabled{cursor:default;opacity:.88}.portal-mobile-context__launcher-level-icon,.portal-mobile-context__launcher-option-icon{display:inline-flex;flex:0 0 auto}.portal-mobile-context__launcher-option-label{flex:1 1 auto;min-width:0;font-size:.9rem;font-weight:600;line-height:1.25}.portal-mobile-context__launcher-level-copy{display:flex;flex-direction:column;gap:.08rem;flex:1 1 auto;min-width:0}.portal-mobile-context__launcher-level-type{font-size:.72rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:#64748b}.portal-mobile-context__launcher-level-value{font-size:.9rem;font-weight:600;color:#0f172a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-maps-module-launcher__tile:hover{background:#eef2f6;border-color:color-mix(in srgb,var(--onelink-green-grass) 28%,#e8edf2);box-shadow:0 2px 8px rgba(15,23,42,.06)}.portal-maps-module-launcher__tile.is-active{background:color-mix(in srgb,var(--onelink-green-grass) 16%,#fff);border-color:color-mix(in srgb,var(--onelink-green-grass) 42%,#bbf7d0);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--onelink-green-grass) 18%,transparent)}.portal-maps-module-launcher__tile.is-active:hover{background:color-mix(in srgb,var(--onelink-green-grass) 20%,#fff);border-color:color-mix(in srgb,var(--onelink-green-grass) 48%,#bbf7d0)}.portal-maps-module-launcher__tile.is-active .portal-maps-module-launcher__tile-icon,.portal-maps-module-launcher__tile.is-active .portal-maps-module-launcher__tile-label{color:var(--onelink-green-grass)}.portal-maps-module-launcher__tile-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;color:#334155}.portal-maps-module-launcher__tile-icon svg{width:1.35rem;height:1.35rem}.portal-maps-module-launcher__tile-label{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;font-size:.68rem;font-weight:600;line-height:1.25;color:#334155}body.portal-maps-module-launcher-open{overflow:hidden}.portal-maps--fullscreen .portal-maps__missing-token{margin:1.25rem}.portal-maps__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}.portal-maps__header h1{margin:0 0 .25rem;font-size:1.5rem;font-weight:600}.portal-maps__lead{margin:0;color:var(--muted);font-size:.9rem;max-width:38rem}.portal-maps__legend{display:flex;gap:.85rem;flex-wrap:wrap;font-size:.82rem;color:var(--muted)}.portal-maps__legend-item{display:inline-flex;align-items:center;gap:.35rem}.portal-maps__swatch{width:.75rem;height:.75rem;border-radius:999px;border:2px solid #fff;box-shadow:0 0 0 1px rgba(15,23,42,.12)}.portal-maps__swatch--entity{background:#2d6a4f}.portal-maps__swatch--sensor{background:#40916c}.portal-maps__canvas{width:100%;height:clamp(420px,62vh,720px);min-height:420px;border-radius:10px;overflow:hidden;border:1px solid var(--border);background:#e2e8f0}.portal-maps__canvas--loading{display:grid;place-items:center;color:var(--muted);font-size:.9rem}.portal-maps__empty,.portal-maps__stats{margin:0;font-size:.82rem}.portal-maps__missing-token{padding:1rem 1.1rem}.portal-map-popup{display:flex;flex-direction:column;gap:.15rem;font-size:.82rem;line-height:1.35}.portal-map-popup strong{color:#0f172a}.portal-map-popup span{color:#64748b}.portal-map-popup--cuartel,.portal-map-popup--environmental,.portal-map-popup--rich,.portal-map-popup--soil,.portal-map-popup--weather{gap:.65rem;min-width:0;max-width:17rem;width:fit-content;padding:.75rem .85rem .8rem;box-sizing:border-box}.portal-map-popup--cuartel{max-width:13rem}.portal-map-popup--rich .portal-map-popup__head{align-items:center;min-height:0;padding-right:0;margin:0}.portal-map-popup__identity{display:flex;flex-direction:column;gap:.12rem;margin:0 0 .05rem;padding-right:1.75rem;min-width:0}.portal-map-popup__head{display:flex;align-items:center;min-height:0;padding-right:0;margin:0}.portal-map-popup--cuartel .portal-map-popup__head{padding-right:1.75rem}.portal-map-popup__entity{font-size:.9rem;font-weight:700;color:#0f172a;line-height:1.25;flex:1 1 auto;min-width:0}.portal-map-popup__device{display:none}.portal-map-popup__id{display:block;font-size:.72rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:#94a3b8;letter-spacing:.01em;margin:0;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-map-popup__freshness{display:block;margin-top:.12rem;font-size:.62rem;font-weight:600;color:#64748b;line-height:1.25}.portal-map-popup--environmental .portal-map-popup__freshness{margin-top:.08rem;font-size:.58rem;color:#94a3b8}.portal-map-popup__avg,.portal-map-popup__hero{display:flex;align-items:baseline;justify-content:space-between;gap:.65rem;padding:.45rem .55rem;border-radius:8px;background:#f8fafc;border:1px solid #e2e8f0}.portal-map-popup__avg-value,.portal-map-popup__hero-value{font-size:.95rem;font-weight:800;color:#0f172a!important;font-variant-numeric:tabular-nums}.portal-map-popup__avg-label,.portal-map-popup__hero-label{font-size:.72rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#64748b!important}.portal-map-popup__depths,.portal-map-popup__metrics{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.25rem}.portal-map-popup__depths li,.portal-map-popup__metrics li{display:flex;align-items:center;justify-content:space-between;gap:.75rem;font-size:.78rem;padding:.05rem 0}.portal-map-popup__depth-label,.portal-map-popup__metric-label{color:#64748b;font-weight:600}.portal-map-popup__depth-value,.portal-map-popup__metric-value{color:#0f172a!important;font-weight:700;font-variant-numeric:tabular-nums}.portal-map-popup__irrigation,.portal-map-popup__note{margin:.15rem 0 0;font-size:.76rem;color:#475569;line-height:1.35}.portal-map-popup__cta{display:inline-flex;align-items:center;justify-content:center;width:100%;margin-top:.55rem;padding:.55rem .85rem;border-radius:8px;background:var(--onelink-green-grass);color:#fff!important;font-size:.78rem;font-weight:700;text-decoration:none;text-align:center}.portal-map-popup__cta:hover{filter:brightness(.95)}.portal-map-popup--environmental.portal-map-popup--sheet{gap:0;max-width:16rem;padding:.72rem .75rem .65rem;border-radius:12px}.portal-env-popup__head{display:flex;flex-direction:column;align-items:flex-start;gap:.28rem;padding-right:1.4rem;margin-bottom:.62rem;padding-bottom:.58rem;border-bottom:1px solid #eef2f7}.portal-env-popup__title{margin:0;font-size:.92rem;font-weight:700;color:#0f172a;line-height:1.3;letter-spacing:-.01em}.portal-env-popup__ago{font-size:.68rem;font-weight:500;color:#94a3b8;line-height:1.35}.portal-env-popup__temp{display:flex;flex-direction:column;align-items:flex-start;gap:.22rem;padding-bottom:.55rem;margin-bottom:.4rem;border-bottom:1px solid #eef2f7}.portal-env-popup__temp-value{font-size:1.65rem;font-weight:700;color:#0f172a;letter-spacing:-.03em;line-height:1.05;font-variant-numeric:tabular-nums}.portal-env-popup__temp-unit{font-size:.78rem;font-weight:600;color:#94a3b8;margin-left:.1rem}.portal-env-popup__temp-range{font-size:.7rem;font-weight:600;color:#64748b;line-height:1.3}.portal-env-popup__stats{margin:0;padding:0;list-style:none;display:flex;flex-direction:column}.portal-env-popup__row{display:flex;align-items:center;justify-content:space-between;gap:.65rem;padding:.28rem 0;border-bottom:1px solid #f1f5f9;font-size:.72rem;line-height:1.25}.portal-env-popup__row:last-child{border-bottom:none;padding-bottom:.1rem}.portal-env-popup__row-label{color:#64748b;font-weight:500;min-width:0}.portal-env-popup__row-value{color:#0f172a!important;font-weight:700;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;flex-shrink:0}.portal-env-popup__action{margin-top:.5rem;padding:.48rem .6rem;font-size:.74rem}.portal-map-popup--compact{gap:.4rem;padding:.55rem .62rem .58rem;max-width:15.25rem}.portal-map-popup--compact .portal-map-popup__identity{gap:.04rem;margin:0;padding-right:1.55rem}.portal-map-popup--compact .portal-map-popup__entity{font-size:.82rem;line-height:1.2}.portal-map-popup--compact .portal-map-popup__id{font-size:.64rem}.portal-map-popup--compact .portal-map-popup__avg,.portal-map-popup--compact .portal-map-popup__hero{gap:.45rem;padding:.32rem .42rem;border-radius:7px}.portal-map-popup--compact .portal-map-popup__hero-main{display:flex;flex-direction:column;gap:.05rem;min-width:0}.portal-map-popup--compact .portal-map-popup__hero-sub{font-size:.64rem;font-weight:600;color:#64748b!important;line-height:1.2}.portal-map-popup--compact .portal-map-popup__avg-value,.portal-map-popup--compact .portal-map-popup__hero-value{font-size:.88rem}.portal-map-popup--compact .portal-map-popup__avg-label,.portal-map-popup--compact .portal-map-popup__hero-label{font-size:.64rem}.portal-map-popup--compact .portal-map-popup__metrics{gap:.12rem}.portal-map-popup--compact .portal-map-popup__metrics--grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:.45rem;row-gap:.1rem}.portal-map-popup--compact .portal-map-popup__metrics li{font-size:.7rem;padding:0;gap:.35rem}.portal-map-popup--compact .portal-map-popup__metric-label{font-size:.68rem}.portal-map-popup--compact .portal-map-popup__metric-value{font-size:.72rem}.portal-map-popup--compact .portal-map-popup__cta{margin-top:.28rem;padding:.42rem .62rem;font-size:.72rem;border-radius:7px}@media (max-width:639px){.gm-style-iw:has(.portal-map-popup--environmental){max-width:min(16rem,calc(100vw - 2rem))!important}.portal-map-popup--environmental.portal-map-popup--sheet{padding:.65rem .68rem .6rem;max-width:min(16rem,calc(100vw - 2rem))}.portal-env-popup__head{margin-bottom:.55rem;padding-bottom:.5rem}.portal-env-popup__temp-value{font-size:1.48rem}.portal-env-popup__row{font-size:.7rem;padding:.24rem 0}.portal-env-popup__action{margin-top:.38rem;padding:.4rem .5rem}.portal-map-popup--compact{gap:.32rem;padding:.48rem .52rem .52rem;max-width:min(15rem,calc(100vw - 2.25rem))}.portal-map-popup--compact .portal-map-popup__avg,.portal-map-popup--compact .portal-map-popup__hero{padding:.28rem .38rem}.portal-map-popup--compact .portal-map-popup__metrics li{font-size:.68rem}.portal-map-popup--compact .portal-map-popup__cta{margin-top:.22rem;padding:.38rem .55rem}.gm-style-iw:has(.portal-map-popup--compact) .gm-style-iw-chr{top:.32rem!important;right:.32rem!important}}.gm-style-iw:has(.portal-map-popup--rich){padding:0!important;width:fit-content!important;max-width:17rem!important}.gm-style-iw:has(.portal-map-popup--environmental){max-width:16rem!important}.gm-style-iw:has(.portal-map-popup--cuartel){max-width:13rem!important}.gm-style-iw:has(.portal-map-popup--rich) .gm-style-iw-c{padding:0!important;max-height:none!important;border-radius:12px!important;overflow:visible!important;width:fit-content!important;max-width:inherit!important}.gm-style-iw:has(.portal-map-popup--rich) .gm-style-iw-chr{position:absolute!important;top:.45rem!important;right:.45rem!important;left:auto!important;z-index:3;width:1.75rem!important;height:1.75rem!important;padding:0!important;margin:0!important;border:none!important;background:none!important;display:flex!important;align-items:center!important;justify-content:center!important;pointer-events:auto!important}.gm-style-iw:has(.portal-map-popup--rich) .gm-style-iw-chr .gm-ui-hover-effect{position:absolute!important;top:0!important;right:0!important;left:auto!important;width:1.75rem!important;height:1.75rem!important;margin:0!important;padding:0!important;border:none!important;outline:none!important;box-shadow:none!important;background:none!important;background-color:transparent!important;opacity:1!important}.gm-style-iw:has(.portal-map-popup--rich) .gm-style-iw-chr .gm-ui-hover-effect:focus,.gm-style-iw:has(.portal-map-popup--rich) .gm-style-iw-chr .gm-ui-hover-effect:focus-visible,.gm-style-iw:has(.portal-map-popup--rich) .gm-style-iw-chr .gm-ui-hover-effect:hover{border:none!important;outline:none!important;box-shadow:none!important;background:rgba(15,23,42,.06)!important;border-radius:999px!important}.gm-style-iw:has(.portal-map-popup--rich) .gm-style-iw-chr .gm-ui-hover-effect>span{margin:0!important;border:none!important;box-shadow:none!important}.gm-style-iw:has(.portal-map-popup--rich) .gm-style-iw-d{overflow:visible!important;padding:0!important;max-height:none!important;width:fit-content!important;max-width:inherit!important}.gm-style-iw:has(.portal-map-popup--rich) .gm-style-iw-d>div{overflow:visible!important;max-height:none!important;width:fit-content!important;max-width:inherit!important}.portal-map-picker__canvas{width:100%;height:280px;min-height:280px;border-radius:10px;overflow:hidden;border:1px solid var(--border);background:#e2e8f0}.portal-map-picker__canvas--loading{background:linear-gradient(135deg,#e2e8f0,#cbd5e1)}.portal-map-picker__error{margin:.5rem 0 0;font-size:.85rem}.portal-map-picker__canvas--geofence{height:min(62vh,540px);min-height:420px}.portal-map-picker--geofence .portal-map-picker__stage{position:relative;border-radius:10px;overflow:hidden;border:1px solid var(--border)}.portal-map-picker--geofence .portal-map-picker__canvas--geofence{border:none;border-radius:0}.portal-map-picker__stage{position:relative}.portal-map-picker__canvas--drawing,.portal-map-picker__stage--drawing,.portal-map-picker__stage--drawing .gm-style,.portal-map-picker__stage--drawing .gm-style :not(button):not(a):not([role=button]){cursor:crosshair!important}.portal-geofence-overlay{position:absolute;z-index:2;pointer-events:none}.portal-geofence-overlay>*{pointer-events:auto}.portal-geofence-toolbar{position:absolute;top:10px;left:10px;z-index:2;max-width:calc(100% - 20px);padding:.45rem .55rem;border-radius:10px;background:rgba(255,255,255,.94);box-shadow:0 2px 10px rgba(15,23,42,.12)}.portal-geofence-overlay--hint{top:auto;bottom:10px;left:50%;transform:translateX(-50%);padding:.35rem .75rem;font-size:.78rem;font-weight:600;color:#15803d;white-space:nowrap}.portal-geofence-overlay--warn{color:#b45309}.portal-map-picker__coords,.portal-map-picker__hint{margin:.5rem 0 0;font-size:.82rem}.portal-map-picker__coords--warn{color:#b45309}.portal-geofence-steps{margin:0 0 .65rem;font-size:.84rem;color:var(--muted);line-height:1.45}.portal-geofence-steps__short{display:none}.portal-geofence-steps li+li{margin-top:.2rem}.portal-geofence-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem}.portal-geofence-toolbar__btn{padding:.38rem .7rem;border:1px solid var(--border);border-radius:8px;background:#fff;color:#0f172a;font-size:.8rem;font-weight:600;cursor:pointer;box-shadow:0 1px 2px rgba(15,23,42,.06)}.portal-geofence-toolbar__btn:disabled{opacity:.45;cursor:not-allowed}.portal-geofence-toolbar__btn--primary{background:var(--onelink-green-grass);border-color:var(--onelink-green-grass);color:#fff}.portal-geofence-toolbar__btn--primary:disabled{background:#94a3b8;border-color:#94a3b8}.portal-geofence-toolbar__status{font-size:.78rem;color:#64748b;white-space:nowrap}.portal-config{display:flex;flex-direction:column;gap:1.25rem}.portal-config--entities{gap:0}.portal-config--entities .portal-page-header{margin-bottom:0}.portal-config__form{padding:1.1rem 1.25rem}.portal-config__form-title,.portal-config__list-title{margin:0 0 1rem;font-size:1.05rem;font-weight:600}.portal-config__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.85rem 1rem}.portal-config__field{display:flex;flex-direction:column;gap:.35rem;font-size:.82rem}.portal-config__field span{color:var(--muted);font-weight:500}.portal-config__field input,.portal-config__field select{padding:.45rem .55rem;border:1px solid var(--border);border-radius:8px;font-size:.9rem;background:#fff}.portal-config__checks{border:0;padding:0;margin:0}.portal-config__checks legend{color:var(--muted);font-weight:500;font-size:.82rem;margin-bottom:.35rem}.portal-config__check-list{display:flex;flex-direction:column;gap:.45rem}.portal-config__check{display:flex;align-items:flex-start;gap:.5rem;font-size:.88rem;color:var(--text);cursor:pointer}.portal-config__check input{margin-top:.15rem;flex-shrink:0}.portal-config__check--block{margin-top:.25rem}.portal-config__map-section h3{margin:1.1rem 0 .65rem;font-size:.95rem;font-weight:600}.portal-config__actions{margin-top:1rem}.portal-config__submit{padding:.5rem 1rem;border:none;border-radius:8px;background:var(--onelink-green-grass);color:#fff;font-weight:600;font-size:.9rem;cursor:pointer}.portal-config__submit:disabled{opacity:.55;cursor:not-allowed}.portal-config__submit--danger{background:#dc2626}.portal-config__submit--danger:hover:not(:disabled){background:#b91c1c}.portal-config__alert{margin:0 0 1rem;padding:.55rem .75rem;border-radius:8px;font-size:.85rem}.portal-config__alert--error{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}.portal-config__alert--success{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}.portal-config__list{padding:1.1rem 1.25rem}.portal-config__table-wrap{overflow-x:auto}.portal-config__table{width:100%;border-collapse:collapse;font-size:.85rem}.portal-config__table td,.portal-config__table th{padding:.5rem .65rem;text-align:left;border-bottom:1px solid var(--border)}.portal-config__table th{color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.02em}.portal-config__grid--compact{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr))}.portal-config__field--grid-full{grid-column:1/-1}.portal-cuartel-crop-editor{display:flex;flex-direction:column;gap:1.35rem;margin-top:1rem}.portal-cuartel-crop-editor__section{display:flex;flex-direction:column;gap:.65rem;padding-top:.25rem;border-top:1px solid var(--border)}.portal-cuartel-crop-editor__section:first-child{border-top:0;padding-top:0}.portal-cuartel-crop-editor__section-head h4{margin:0;font-size:.95rem;font-weight:600}.portal-cuartel-crop-editor__section-head p{margin:.2rem 0 0;font-size:.82rem}.portal-cuartel-crop-editor__pollinator-toggle-row{display:flex;align-items:center;gap:.5rem;width:fit-content}.portal-cuartel-crop-editor__pollinator-toggle-label{font-size:.95rem;font-weight:600;color:var(--text)}.portal-cuartel-crop-editor__pollinator-lead{margin:.35rem 0 0;font-size:.82rem}.portal-cuartel-pollinator-switch{position:relative;display:inline-block;flex:0 0 2.5rem;width:2.5rem;height:1.4rem;cursor:pointer}.portal-cuartel-pollinator-switch input{position:absolute;opacity:0;width:0;height:0}.portal-cuartel-pollinator-switch__slider{position:absolute;inset:0;border-radius:999px;background:color-mix(in srgb,var(--muted) 35%,var(--border));transition:background .15s ease}.portal-cuartel-pollinator-switch__slider:before{content:"";position:absolute;top:2px;left:2px;width:1.1rem;height:1.1rem;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .15s ease}.portal-cuartel-pollinator-switch input:checked+.portal-cuartel-pollinator-switch__slider{background:var(--accent)}.portal-cuartel-pollinator-switch input:checked+.portal-cuartel-pollinator-switch__slider:before{transform:translateX(1.1rem)}.portal-cuartel-pollinator-switch input:focus-visible+.portal-cuartel-pollinator-switch__slider{outline:2px solid var(--accent);outline-offset:2px}.portal-cuartel-crop-editor__rows{display:flex;flex-direction:column;gap:.55rem}.portal-cuartel-crop-editor__row{display:grid;grid-template-columns:1fr 1fr minmax(5.5rem,.55fr) auto;gap:.55rem;align-items:start;padding:.65rem .75rem;border:1px solid var(--border);border-radius:8px;background:#fff}.portal-cuartel-crop-editor__row--pollinator{grid-template-columns:1fr minmax(5.5rem,.45fr) auto}.portal-cuartel-crop-editor__row .portal-config__field{margin:0}.portal-cuartel-crop-editor__row-action{display:flex;flex-direction:column;gap:.35rem}.portal-cuartel-crop-editor__row-action-label{visibility:hidden;font-size:.82rem;font-weight:500;line-height:1.2;user-select:none}.portal-config__field--narrow input{min-width:0}.portal-cuartel-crop-editor__remove{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:2.35rem;height:2.35rem;padding:0;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--muted);cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.portal-cuartel-crop-editor__remove svg{display:block}.portal-cuartel-crop-editor__remove:hover:not(:disabled){background:#f4f6f5;border-color:#cbd5e1;color:#64748b}.portal-cuartel-crop-editor__remove:focus-visible{outline:2px solid color-mix(in srgb,var(--portal-accent,#40916c) 45%,transparent);outline-offset:1px}.portal-cuartel-crop-editor__remove:disabled{opacity:.35;cursor:not-allowed}.portal-cuartel-crop-editor__add{align-self:flex-start;display:inline-flex;align-items:center;gap:.35rem;padding:.42rem .8rem;border:1px dashed color-mix(in srgb,var(--portal-accent,#40916c) 45%,var(--border));border-radius:8px;background:transparent;color:var(--portal-accent,#40916c);font-size:.86rem;font-weight:500;cursor:pointer}.portal-cuartel-crop-editor__add:hover{background:color-mix(in srgb,var(--portal-accent,#40916c) 8%,transparent)}.portal-cuartel-crop-editor__add span{font-size:1rem;line-height:1}.portal-cuartel-crop-editor__empty{margin:0;font-size:.85rem;padding:.35rem 0}@media (max-width:720px){.portal-cuartel-crop-editor__row,.portal-cuartel-crop-editor__row--pollinator{grid-template-columns:1fr}.portal-cuartel-crop-editor__row-action{flex-direction:row;align-items:center;justify-content:flex-end;gap:.5rem}.portal-cuartel-crop-editor__row-action-label{display:none}}.portal-config__geo-ok{color:#047857;font-variant-numeric:tabular-nums}.portal-config__geo-missing{color:#b45309;font-size:.85rem}.portal-config__list-lead{margin:-.35rem 0 1rem;font-size:.85rem}.portal-config__row-action{text-align:right;white-space:nowrap}.portal-config__link-btn{padding:0;border:none;background:none;color:var(--onelink-green-grass);font-size:.85rem;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.portal-config__link-btn:hover{color:#1b4332}.portal-config__edit-row td{padding:0;border-bottom:1px solid var(--border)}.portal-config__edit-panel{padding:1rem 1.25rem 1.25rem;background:#f8faf9}.portal-config__edit-title{margin:0 0 .75rem;font-size:.9rem;font-weight:600}.portal-config__notice{padding:1rem 1.1rem}.portal-entities-workspace{display:flex;flex-direction:column;gap:1rem}.portal-entity-access-notice{padding:.85rem 1rem;font-size:.875rem;color:var(--portal-muted,#64748b)}.portal-entity-progress{display:flex;flex-direction:column;gap:.45rem;margin-bottom:1rem}.portal-entity-progress__head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;font-size:.875rem}.portal-entity-progress__bar{height:6px;border-radius:999px;background:#e2e8f0;overflow:hidden}.portal-entity-progress__bar>span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#16a34a,#22c55e);transition:width .25s ease}.portal-entities-workspace__split{display:grid;grid-template-columns:minmax(220px,320px) minmax(0,1fr);gap:1rem;align-items:start}.portal-entities-workspace__tree{padding:1rem;max-height:calc(100vh - 14rem);overflow:auto}.portal-entities-workspace__tree-title{margin:0 0 .25rem;font-size:.95rem;font-weight:600}.portal-entities-workspace__tree-lead{margin:0 0 .75rem;font-size:.8rem}.portal-entities-workspace__detail{min-width:0}.portal-entity-tree__empty{margin:0;font-size:.85rem}.portal-entity-tree__row{display:flex;align-items:center;gap:.25rem;min-height:2rem;border-radius:6px}.portal-entity-tree__row.is-selected{background:rgba(22,163,74,.08)}.portal-entity-tree__toggle,.portal-entity-tree__toggle-spacer{flex:0 0 1.25rem;width:1.25rem;height:1.25rem}.portal-entity-tree__toggle{display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;background:transparent;cursor:pointer;color:#64748b}.portal-entity-tree__arrow{display:block;width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:5px solid;transition:transform .15s ease}.portal-entity-tree__arrow.is-open{transform:rotate(90deg)}.portal-entity-tree__select{flex:1;display:flex;align-items:center;gap:.4rem;min-width:0;padding:.25rem .35rem;border:none;background:transparent;text-align:left;cursor:pointer;font:inherit;color:inherit}.portal-entity-tree__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:500}.portal-entity-tree__type{flex-shrink:0;font-size:.7rem;color:var(--portal-muted,#64748b)}.portal-entity-tree__dot{flex-shrink:0;width:8px;height:8px;border-radius:50%}.portal-entity-tree__dot--complete{background:#22c55e}.portal-entity-tree__dot--partial{background:#eab308}.portal-entity-tree__add{flex-shrink:0;width:1.5rem;height:1.5rem;padding:0;border:1px solid #cbd5e1;border-radius:4px;background:#fff;color:#16a34a;font-size:1rem;line-height:1;cursor:pointer}.portal-entity-tree__add:hover{background:#f0fdf4;border-color:#86efac}.portal-entity-detail{display:flex;flex-direction:column;gap:1rem}.portal-entity-detail--empty{min-height:12rem;display:flex;align-items:center}.portal-entity-detail__head{margin:0}.portal-entity-detail__crumb{margin:0 0 .35rem;font-size:.78rem}.portal-entity-detail__title{margin:0 0 .35rem;font-size:1.25rem;font-weight:600}.portal-entity-detail__lead{margin:0;font-size:.875rem}.portal-entity-detail__section{padding:1rem 1.1rem}.portal-entity-detail__section h3{margin:0 0 .85rem;font-size:.95rem;font-weight:600}.portal-entity-detail__actions{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;margin-top:1rem}.portal-entity-detail__actions-primary{display:flex;align-items:center;gap:.5rem;margin-left:auto}.portal-config__submit--secondary{background:#fff;color:var(--onelink-green-grass);border:1px solid var(--onelink-green-grass)}.portal-config__submit--secondary:hover:not(:disabled){background:#f0fdf4}.portal-entity-detail__hint{margin:.75rem 0 0;font-size:.85rem}.portal-entity-steps{display:flex;flex-wrap:wrap;gap:.5rem}.portal-entity-steps__btn{display:inline-flex;align-items:center;gap:.45rem;padding:.45rem .85rem;border:1px solid #e2e8f0;border-radius:999px;background:#fff;font-size:.82rem;cursor:pointer;color:#334155}.portal-entity-steps__btn.is-active{border-color:#16a34a;background:#f0fdf4;color:#15803d;font-weight:600}.portal-entity-steps__num{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border-radius:50%;background:#e2e8f0;font-size:.72rem;font-weight:700}.portal-entity-steps__btn.is-active .portal-entity-steps__num{background:#16a34a;color:#fff}.portal-entity-steps__btn.is-done{color:#15803d;background:#f8fafc}.portal-entity-steps__btn.is-done .portal-entity-steps__num{background:#dcfce7;color:#15803d}.portal-entity-steps__label{min-width:0}.portal-entity-summary{margin:0;padding-left:1.1rem;font-size:.875rem}.portal-entity-summary__warn{color:#ca8a04}.portal-entity-sensors{margin:0;padding-left:1.1rem;font-size:.875rem}.portal-entity-sensors--assigned{list-style:none;padding-left:0}.portal-entity-sensors__row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.45rem 0;border-bottom:1px solid var(--portal-border,#e2e8f0)}.portal-entity-sensors--readonly .portal-entity-sensors__row{justify-content:flex-start}.portal-entity-sensors__assign{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin-top:.75rem}.portal-entity-sensors__assign .portal-config__field{flex:1 1 12rem;margin:0}.portal-entity-sensors__meta{font-size:.8125rem}.portal-sensor-claim{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--portal-border,#e2e8f0)}.portal-sensor-claim__title{margin:0 0 .35rem;font-size:.9375rem;font-weight:600}.portal-sensor-claim__lead{margin:0 0 .75rem;font-size:.875rem}.portal-sensor-claim__row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem}.portal-sensor-claim__field{flex:1 1 14rem;margin:0}.portal-sensor-claim__actions{margin-top:.75rem}.portal-sensor-identifier-input{display:flex;flex-direction:column;gap:.75rem}.portal-sensor-identifier-input--modal{gap:.5rem}.portal-sensor-identifier-input__field{margin:0}.portal-sensor-identifier-input__row{display:flex;align-items:stretch;gap:.5rem}.portal-sensor-identifier-input__row--toolbar{gap:.4rem}.portal-sensor-identifier-input__row input{flex:1;min-width:0}.portal-sensor-identifier-input__paste{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:2.65rem;min-width:2.65rem;padding:0;border:1px solid var(--portal-border,#e2e8f0);border-radius:.375rem;background:#f8fafc;color:#475569;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.portal-sensor-identifier-input__paste svg{display:block;flex-shrink:0}.portal-sensor-identifier-input__paste:hover:not(:disabled){background:#f1f5f9;border-color:#cbd5e1}.portal-sensor-identifier-input__paste:disabled{opacity:.5;cursor:not-allowed}.portal-sensor-qr-btn{display:flex;align-items:center;justify-content:center;gap:.55rem;width:100%;padding:.85rem 1rem;border:2px dashed color-mix(in srgb,var(--onelink-green-grass) 42%,#fff);border-radius:8px;background:color-mix(in srgb,var(--onelink-green-grass) 11%,#fff);color:var(--onelink-green-grass);font-size:.9375rem;font-weight:600;line-height:1.2;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.portal-sensor-qr-btn:hover:not(:disabled){background:color-mix(in srgb,var(--onelink-green-grass) 17%,#fff);border-color:color-mix(in srgb,var(--onelink-green-grass) 58%,#fff);color:var(--onelink-green-medium)}.portal-sensor-qr-btn.is-active{border-style:solid;background:color-mix(in srgb,var(--onelink-green-grass) 20%,#fff);border-color:var(--onelink-green-grass);color:var(--onelink-green-medium)}.portal-sensor-qr-btn:disabled{opacity:.55;cursor:not-allowed}.portal-sensor-qr-btn svg{flex-shrink:0}.portal-sensor-qr-btn--compact{width:auto;flex-shrink:0;padding:0 .7rem;min-width:2.65rem;border-width:1px;border-style:solid;background:color-mix(in srgb,var(--onelink-green-grass) 11%,#fff);border-color:color-mix(in srgb,var(--onelink-green-grass) 35%,var(--portal-border,#e2e8f0))}.portal-sensor-qr-btn--compact:hover:not(:disabled){background:color-mix(in srgb,var(--onelink-green-grass) 17%,#fff);border-color:color-mix(in srgb,var(--onelink-green-grass) 50%,#fff)}.portal-sensor-qr-btn--compact.is-active{background:color-mix(in srgb,var(--onelink-green-grass) 20%,#fff);border-color:var(--onelink-green-grass)}.portal-qr-scanner{margin-top:.75rem}.portal-sensor-identifier-input--modal .portal-qr-scanner{margin-top:.35rem}.portal-qr-scanner--edge{width:calc(100% + 2.3rem);margin-left:-1.15rem;margin-right:-1.15rem}.portal-qr-scanner__viewport{width:100%;max-width:none;min-height:14rem;overflow:hidden;border-radius:.5rem;border:1px solid var(--portal-border,#e2e8f0);background:#0f172a}.portal-qr-scanner--edge .portal-qr-scanner__viewport{border-radius:0;border-left:none;border-right:none;aspect-ratio:4/3;min-height:0;max-height:min(48vh,20rem)}.portal-qr-scanner__viewport video{width:100%!important;height:auto!important;display:block;object-fit:cover}.portal-qr-scanner__viewport>div{width:100%!important;border:none!important}.portal-qr-scanner--edge .portal-qr-scanner__status{margin-left:1.15rem;margin-right:1.15rem}.portal-qr-scanner__status{margin:.35rem 0 0;font-size:.8125rem}.portal-sensors-panel{display:flex;flex-direction:column;gap:.85rem}.portal-sensors-hero{display:flex;flex-direction:column;gap:.7rem;padding:.85rem 1rem}.portal-sensors-hero__head{display:flex;align-items:center;justify-content:space-between;gap:1rem}.portal-page-header--compact{margin-bottom:0;min-width:0}.portal-sensors-hero__action{flex-shrink:0;white-space:nowrap}.portal-sensors-hero__controls{align-items:center;flex-wrap:wrap}.portal-sensors-hero__controls,.portal-sensors-hero__meta{display:flex;gap:.75rem;padding-top:.7rem;border-top:1px solid var(--border)}.portal-sensors-hero__meta{flex-direction:column}.portal-sensors-hero__filters,.portal-sensors-hero__kpis{display:flex;flex-direction:column;gap:.45rem;min-width:0}.portal-sensors-hero__filters{padding-top:.65rem;border-top:1px solid var(--border)}.portal-sensors-hero__section-label{margin:0;font-size:.6875rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#64748b}.portal-sensors-hero__kpis .portal-sensor-kpi-tags{margin-bottom:0}.portal-sensors-hero__filters .portal-sensor-branch-bar{flex:none;width:100%}.portal-sensors-hero__filters .portal-sensor-branch-bar__inner{flex-direction:column;align-items:flex-start;gap:.45rem}.portal-sensors-hero__filters .portal-sensor-branch-bar__track{width:100%}.portal-sensors-hero__controls .portal-sensor-kpi-tags{margin-left:auto;margin-bottom:0}.portal-sensors-hero__controls--stacked{flex-direction:column;align-items:stretch;gap:.55rem}.portal-sensors-hero__controls--stacked .portal-sensor-kpi-tags{margin-left:0}.portal-sensors-hero__controls--stacked .portal-sensor-branch-bar{flex:none;width:100%}.portal-sensors-hero__controls--stacked .portal-sensor-branch-bar__inner{flex-direction:column;align-items:flex-start;gap:.45rem}.portal-sensors-hero__controls--stacked .portal-sensor-branch-bar__track{width:100%}.portal-sensors-hero__controls-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.portal-sensor-branch-bar--grow{flex:1;min-width:min(100%,16rem)}.portal-sensor-branch-bar__inner--compact .portal-sensor-branch-bar__title{font-size:.75rem}.portal-config__field--checkbox{flex-direction:row;align-items:center;gap:.5rem}.portal-config__field--checkbox input{width:auto;margin:0}.portal-users-invite-form,.portal-users-invite-result{display:flex;flex-direction:column;gap:.75rem}.portal-users-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1rem;align-items:end}.portal-users-filters--single{grid-template-columns:minmax(12rem,18rem)}.portal-sensors-table-wrap .portal-users-filters--single{max-width:18rem}.portal-users-filter{margin:0;min-width:0}.portal-users-filter select{width:100%;cursor:pointer}@media (max-width:520px){.portal-users-filters{grid-template-columns:1fr}}.portal-users-invite-result__lead{margin:0}.portal-user-edit{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.portal-user-edit__body{display:grid;grid-template-columns:13rem minmax(0,1fr);flex:1;min-height:22rem;overflow:hidden}.portal-user-edit__nav{display:flex;flex-direction:column;gap:.15rem;padding:.85rem .65rem;border-right:1px solid var(--border);background:#f8fafc;overflow-y:auto}.portal-user-edit__content{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.portal-user-edit__error{margin:.75rem 1.25rem 0}.portal-user-edit__panel{display:flex;flex-direction:column;gap:.75rem;flex:0 1 auto;overflow-y:auto;padding:1rem 1.25rem .5rem}.portal-user-edit__panel--compact{flex:0 0 auto}.portal-user-edit__panel--scroll{max-height:min(50vh,24rem);overflow:auto}.portal-user-edit__meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.75rem 1rem;margin:0;font-size:.8125rem}.portal-user-edit__meta div{display:flex;flex-direction:column;gap:.2rem}.portal-user-edit__meta dt{margin:0;color:var(--muted);font-size:.6875rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.portal-user-edit__meta dd{margin:0;color:var(--fg)}.portal-user-edit__badge{display:inline-flex;align-items:center;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;font-weight:600;background:color-mix(in srgb,var(--onelink-green-grass) 12%,#fff);color:#0f766e;border:1px solid color-mix(in srgb,var(--onelink-green-grass) 30%,#e2e8f0)}.portal-user-edit__badge--warn{background:#fffbeb;color:#b45309;border-color:#fde68a}.portal-user-edit__invite-label{margin:0 0 .35rem;font-size:.8125rem}.portal-user-edit .invite-link-copy{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.portal-user-edit .invite-link-copy__path{flex:1;min-width:0;padding:.45rem .6rem;border:1px solid var(--border);border-radius:8px;background:#f8fafc;font-size:.75rem;color:#0f766e;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-user-edit .invite-link-copy__btn{flex-shrink:0;padding:.45rem .75rem;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--fg);font-size:.8125rem;cursor:pointer}.portal-user-edit .invite-link-copy__btn:hover{background:#f8fafc;border-color:#cbd5e1}.portal-user-edit__nav-btn{display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;width:100%;min-width:0;padding:.55rem .7rem;border:1px solid transparent;border-radius:8px;background:transparent;color:#64748b;cursor:pointer;text-align:left;transition:border-color .15s ease,background .15s ease,color .15s ease}.portal-user-edit__nav-btn:hover{background:#fff;border-color:#e2e8f0;color:#334155}.portal-user-edit__nav-btn.is-active{border-color:color-mix(in srgb,var(--onelink-green-grass) 35%,#e2e8f0);background:color-mix(in srgb,var(--onelink-green-grass) 10%,#fff);color:#0f766e}.portal-user-edit__nav-label{font-size:.8125rem;font-weight:600;line-height:1.25}.portal-user-edit__nav-hint{font-size:.6875rem;font-weight:500;line-height:1.25;color:#94a3b8}.portal-user-edit__nav-btn.is-active .portal-user-edit__nav-hint{color:#14b8a6}.portal-user-edit__footer{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;padding:.85rem 1.25rem;border-top:1px solid var(--border);background:#fafbfc;flex-shrink:0;margin-top:auto}.portal-user-edit__footer-btn{padding:.5rem .9rem;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--fg);font-size:.875rem;font-weight:500;cursor:pointer}.portal-user-edit__footer-btn:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.portal-user-edit__footer-btn:disabled{opacity:.6;cursor:not-allowed}.portal-user-edit__section-lead{margin:0;font-size:.8125rem;line-height:1.45}.portal-user-edit__panel--access{flex:1;min-height:0;gap:.65rem}.portal-user-edit__panel--access .entity-access-picker,.portal-user-edit__panel--access .module-access-picker{display:flex;flex:1;flex-direction:column;gap:.65rem;min-height:0}.portal-user-edit .access-picker-toolbar{padding:.6rem .85rem;border:1px solid var(--border);border-radius:10px;background:#f8fafc}.portal-user-edit .access-picker-toolbar__all{align-items:center;font-size:.8125rem}.portal-user-edit .access-picker-toolbar__all input,.portal-user-edit .entity-access-picker__check input,.portal-user-edit .module-access-picker__check input{width:1rem;height:1rem;margin:0;accent-color:var(--onelink-green-grass);flex-shrink:0}.portal-user-edit .access-picker-toolbar__count{font-size:.75rem;font-weight:600;font-variant-numeric:tabular-nums;padding:.2rem .55rem;border-radius:999px;background:#fff;border:1px solid #e2e8f0;color:#475569}.portal-user-edit .entity-access-picker__tree{flex:1;min-height:11rem;max-height:none;border:1px solid var(--border);border-radius:10px;background:#fff;overflow-y:auto}.portal-user-edit .entity-access-picker__row{min-height:2.25rem;border-radius:6px;margin:0 .25rem}.portal-user-edit .entity-access-picker__row:hover{background:#f8fafc}.portal-user-edit .entity-access-picker__toggle{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;flex-shrink:0;padding:0;border:none;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.portal-user-edit .entity-access-picker__toggle:hover:not(:disabled){background:#f1f5f9;color:#334155}.portal-user-edit .entity-access-picker__toggle-spacer{display:inline-block;width:1.5rem;flex-shrink:0}.portal-user-edit .entity-access-picker__check{flex:1;min-width:0;gap:.55rem;padding:.15rem 0;font-size:.875rem}.portal-user-edit .entity-access-picker__name{font-weight:500;color:#1e293b}.portal-user-edit .module-access-picker__list{flex:1;min-height:8rem;max-height:none;overflow-y:auto;display:flex;flex-direction:column;gap:.85rem;padding:.15rem .1rem}.portal-user-edit .module-access-picker__group{padding:.65rem .75rem;border:1px solid var(--border);border-radius:10px;background:#fff}.portal-user-edit .module-access-picker__group-label{margin:0 0 .55rem;font-size:.6875rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#64748b}.portal-user-edit .module-access-picker__checklist{display:grid;grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));gap:.45rem;margin:0;padding:0;list-style:none}.portal-user-edit .module-access-picker__check{display:flex;align-items:center;gap:.5rem;margin:0;padding:.5rem .6rem;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;font-size:.8125rem;line-height:1.3;cursor:pointer;transition:border-color .15s ease,background .15s ease}.portal-user-edit .module-access-picker__check:hover{border-color:#cbd5e1;background:#fff}.portal-user-edit .module-access-picker__check:has(input:checked){border-color:var(--onelink-green-grass);background:color-mix(in srgb,var(--onelink-green-grass) 10%,#fff);color:#0f766e;font-weight:600}.portal-modal--user-edit{max-height:min(88vh,720px);overflow:hidden}.portal-modal--user-edit .portal-modal__head{align-items:flex-start}.portal-modal__head-text{min-width:0}.portal-modal__subtitle{margin:.2rem 0 0;font-size:.875rem}.portal-modal--user-edit .portal-modal__body{padding:0;display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.portal-modal--wide .portal-user-edit{flex:1;min-height:0}.portal-modal--wide .portal-modal__body:has(.portal-user-edit){display:flex;flex-direction:column;min-height:0}@media (max-width:640px){.portal-user-edit__body{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}.portal-user-edit__nav{flex-direction:row;gap:.35rem;padding:.65rem;border-right:none;border-bottom:1px solid var(--border);overflow-x:auto}.portal-user-edit__nav-btn{flex:0 0 auto;min-width:8.5rem}}.portal-user-role-picker{display:flex;flex-direction:column;gap:.5rem}.portal-user-role-picker__option{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;width:100%;padding:.7rem .85rem;border:1px solid var(--border);border-radius:8px;background:#fff;text-align:left;cursor:pointer;transition:border-color .15s ease,background .15s ease}.portal-user-role-picker__option:hover:not(:disabled){border-color:color-mix(in srgb,var(--onelink-green-grass) 40%,var(--border));background:color-mix(in srgb,var(--onelink-green-grass) 6%,#fff)}.portal-user-role-picker__option.is-selected{border-color:var(--onelink-green-grass);background:color-mix(in srgb,var(--onelink-green-grass) 10%,#fff)}.portal-user-role-picker__label{font-size:.875rem;font-weight:600;color:var(--fg)}.portal-user-role-picker__desc{font-size:.8125rem;color:var(--muted)}.portal-sensor-kpi-tags{display:flex;flex-wrap:wrap;gap:.45rem;margin-bottom:.75rem}.portal-sensor-kpi-tag{display:inline-flex;align-items:center;gap:.35rem;padding:.28rem .65rem;border-radius:999px;font-size:.75rem;line-height:1.2;border:1px solid transparent;background:#f8fafc;color:#475569}.portal-sensor-kpi-tag strong{font-size:.8125rem;font-weight:700;color:inherit}.portal-sensor-kpi-tag--neutral{background:#f1f5f9;border-color:#e2e8f0;color:#334155}.portal-sensor-kpi-tag--online{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}.portal-sensor-kpi-tag--offline{background:#fffbeb;border-color:#fde68a;color:#b45309}.portal-sensor-kpi-tag--never{background:#f8fafc;border-color:#e2e8f0;color:#64748b}.portal-sensor-kpi-tag--unassigned{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.portal-sensor-branch-bar{flex:1;min-width:min(100%,16rem)}.portal-sensor-branch-bar__inner{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}.portal-sensor-branch-bar__title{margin:0;font-size:.8125rem;font-weight:600;color:#334155;white-space:nowrap;flex-shrink:0}.portal-sensor-branch-bar__track{display:flex;flex-wrap:wrap;gap:.4rem;flex:1;min-width:0}.portal-sensor-branch-bar__tab{display:inline-flex;align-items:center;gap:.45rem;max-width:12.5rem;padding:.42rem .55rem .42rem .7rem;border:1px solid #e2e8f0;border-radius:.5rem;background:#fff;font-size:.8125rem;line-height:1.2;color:#475569;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.portal-sensor-branch-bar__tab:hover{border-color:#cbd5e1;background:#f8fafc}.portal-sensor-branch-bar__tab.is-active{border-color:#14b8a6;background:#f0fdfa;color:#0f766e;font-weight:600}.portal-sensor-branch-bar__tab--muted.is-active{border-color:#60a5fa;background:#eff6ff;color:#1d4ed8}.portal-sensor-branch-bar__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.portal-sensor-branch-bar__count{flex-shrink:0;min-width:1.25rem;padding:.12rem .4rem;border-radius:999px;background:#f1f5f9;font-size:.6875rem;font-weight:700;color:#64748b;text-align:center}.portal-sensor-branch-bar__tab.is-active .portal-sensor-branch-bar__count{background:#ccfbf1;color:#0f766e}.portal-sensor-branch-bar__tab--muted.is-active .portal-sensor-branch-bar__count{background:#dbeafe;color:#1d4ed8}.portal-sensors-table-wrap{padding:0;overflow-x:auto}.portal-sensors-table-toolbar{padding:.75rem .85rem;border-bottom:1px solid var(--border);background:#fafbfc}.portal-sensors-table-wrap .portal-users-filters{max-width:36rem}.portal-sensors-table{width:100%;border-collapse:collapse;font-size:.875rem}.portal-sensors-table td,.portal-sensors-table th{padding:.65rem .85rem;text-align:left;border-bottom:1px solid var(--portal-border,#e2e8f0);vertical-align:middle}.portal-sensors-table th{font-size:.72rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#64748b;background:#f8fafc}.portal-sensors-table__empty{margin:0;padding:1.25rem .85rem;font-size:.875rem}.portal-sensors-table__meta{display:block;font-size:.8125rem;margin-top:.15rem}.portal-sensors-table__status-cell{display:flex;flex-direction:column;align-items:flex-start;gap:.2rem}.portal-sensors-table__status-tag{display:inline-flex;align-items:center;padding:.22rem .55rem;border-radius:999px;font-size:.6875rem;font-weight:600;line-height:1.2;border:1px solid transparent;white-space:nowrap}.portal-sensors-table__status-tag--online{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}.portal-sensors-table__status-tag--offline{background:#fef2f2;border-color:#fecaca;color:#dc2626}.portal-sensors-table__status-tag--never{background:#f1f5f9;border-color:#e2e8f0;color:#64748b}.portal-sensors-table__status-time{font-size:.75rem;line-height:1.2}.portal-sensors-table__battery-tag{display:inline-flex;align-items:center;padding:.22rem .55rem;border-radius:999px;font-size:.6875rem;font-weight:600;line-height:1.2;border:1px solid transparent;white-space:nowrap}.portal-sensors-table__battery-tag--high{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}.portal-sensors-table__battery-tag--medium{background:#fffbeb;border-color:#fde68a;color:#b45309}.portal-sensors-table__battery-tag--low{background:#fef2f2;border-color:#fecaca;color:#dc2626}.portal-sensors-table__battery-tag--unknown{background:#f1f5f9;border-color:#e2e8f0;color:#64748b}.portal-sensors-table__actions{width:1%;white-space:nowrap}.portal-table-actions{display:inline-flex;align-items:center;gap:.2rem}.portal-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:1px solid transparent;border-radius:.375rem;background:transparent;color:#0f766e;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.portal-icon-btn:hover:not(:disabled){background:#f0fdfa;border-color:#99f6e4;color:#0d9488}.portal-icon-btn:active:not(:disabled){background:#ccfbf1}.portal-icon-btn--danger{color:#dc2626}.portal-icon-btn--danger:hover:not(:disabled){background:#fef2f2;border-color:#fecaca;color:#b91c1c}.portal-icon-btn:disabled{opacity:.45;cursor:not-allowed}.portal-icon-btn svg{display:block;flex-shrink:0}.portal-sensors-modal__lead{margin:0 0 1rem;font-size:.875rem}.portal-sensors-add-modal{display:flex;flex-direction:column;gap:.65rem}.portal-sensors-add-modal .portal-sensors-modal__lead{margin:0;font-size:.8125rem;line-height:1.35}.portal-sensors-add-modal .portal-config__alert{margin:0}.portal-sensors-add-modal .portal-modal__actions{margin-top:.25rem}.portal-sensors-modal__hint{margin:.5rem 0 0;font-size:.8125rem}@media (max-width:720px){.portal-sensors-hero__head{flex-direction:column;align-items:stretch}.portal-sensors-hero__action{width:100%}.portal-sensors-hero__controls{flex-direction:column;align-items:stretch}.portal-sensors-hero__controls .portal-sensor-kpi-tags{margin-left:0}.portal-sensor-branch-bar__inner,.portal-sensors-hero__controls-row{flex-direction:column;align-items:stretch}.portal-sensor-branch-bar__track{width:100%;flex-wrap:wrap}.portal-sensor-branch-bar__tab{max-width:none;flex:1 1 calc(50% - 0.2rem)}}.portal-entity-geofence-toggle{display:flex;align-items:flex-start;gap:.5rem;margin-top:.75rem;font-size:.875rem;cursor:pointer}.portal-entity-geofence-toggle input{margin-top:.15rem}.portal-geofence-style{display:flex;flex-direction:column;gap:1rem;flex-shrink:0;margin-top:0;padding-top:.85rem;border-top:1px solid var(--portal-border,#e5e7eb);position:relative;z-index:1;background:var(--card,#fff)}.portal-geofence-editor{display:flex;flex-direction:column;min-height:0;gap:0}.portal-geofence-style__group{margin:0;padding:0;border:0;min-inline-size:0}.portal-geofence-style__group legend{font-size:.8125rem;font-weight:600;margin-bottom:.5rem;padding:0}.portal-geofence-style__colors{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.portal-geofence-style__color-row{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem 1rem}.portal-geofence-style__opacity{display:inline-flex;align-items:center;gap:.35rem;flex-shrink:0;padding-left:.35rem;border-left:1px solid var(--border)}.portal-geofence-style__opacity-label{font-size:.75rem;font-weight:500;color:var(--muted);white-space:nowrap}.portal-geofence-style__opacity input[type=range]{width:4.25rem;accent-color:var(--accent)}.portal-geofence-style__opacity-value{min-width:2rem;font-size:.75rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text)}.portal-geofence-style__swatch{width:1.75rem;height:1.75rem;border-radius:999px;border:2px solid #ffffff;box-shadow:0 0 0 1px rgba(0,0,0,.12);cursor:pointer;padding:0}.portal-geofence-style__swatch.is-active{box-shadow:0 0 0 2px var(--portal-accent,#2d6a4f)}.portal-geofence-style__custom{display:inline-flex;align-items:center;gap:.4rem;font-size:.8125rem;cursor:pointer}.portal-geofence-style__custom input[type=color]{width:2rem;height:2rem;padding:0;border:1px solid var(--portal-border,#d1d5db);border-radius:.375rem;background:transparent;cursor:pointer}.portal-geofence-style__modes{display:flex;flex-wrap:wrap;gap:.75rem 1.25rem}.portal-geofence-style__radio{display:inline-flex;align-items:center;gap:.4rem;font-size:.875rem;cursor:pointer}.portal-config__checkbox{display:flex;align-items:flex-start;gap:.5rem;font-size:.875rem;cursor:pointer}.portal-modal-backdrop{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:1.25rem 1rem;overflow-y:auto;background:rgba(15,23,42,.45)}.portal-modal{width:min(100%,32rem);max-height:calc(100vh - 4rem);display:flex;flex-direction:column;background:#fff;border-radius:12px;box-shadow:0 24px 48px rgba(15,23,42,.18)}.portal-modal--wide{width:min(100%,56rem);height:min(calc(100vh - 2.5rem),900px);max-height:calc(100vh - 2.5rem)}.portal-modal--scanner{width:min(100%,40rem)}.portal-modal--scanner .portal-modal__body{padding-top:.75rem;padding-bottom:1rem}.portal-modal__head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.15rem;border-bottom:1px solid var(--border);flex-shrink:0}.portal-modal__title{margin:0;font-size:1.05rem;font-weight:700}.portal-modal__close{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:2rem;height:2rem;padding:0;border:none;border-radius:8px;background:#f8fafc;color:var(--muted);cursor:pointer;font-size:1rem;line-height:1}.portal-modal__close:hover{background:#eef2f6;color:var(--fg)}.portal-modal__body{padding:1rem 1.15rem 1.25rem;overflow-y:auto}.portal-modal__actions{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;margin-top:1rem}.portal-modal__actions--single .portal-config__submit{width:100%}.portal-modal--wide .portal-modal__body{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;padding:1rem 1.15rem}.portal-modal--wide .portal-modal__body:has(.portal-entity-detail--embedded),.portal-modal--wide .portal-modal__body:has(.portal-user-edit){overflow:hidden}.portal-entity-detail--embedded{display:flex;flex-direction:column;gap:.65rem}.portal-modal--wide .portal-entity-detail--embedded{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.portal-modal--wide .portal-entity-detail--embedded .portal-entity-detail__crumb,.portal-modal--wide .portal-entity-detail--embedded .portal-entity-steps{flex-shrink:0}.portal-modal--wide .portal-entity-detail--embedded .portal-entity-detail__section:has(.portal-cuartel-crop-editor){overflow-y:auto}.portal-modal--wide .portal-entity-detail--embedded .portal-entity-detail__section{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.portal-modal--wide .portal-entity-detail--embedded .portal-config__alert,.portal-modal--wide .portal-entity-detail--embedded .portal-entity-detail__section h3{flex-shrink:0}.portal-modal--wide .portal-entity-detail--embedded .portal-entity-detail__section:has(.portal-geofence-editor){overflow:hidden}.portal-modal--wide .portal-geofence-editor{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;gap:0}.portal-modal--wide .portal-map-picker--geofence{flex:0 0 auto;display:flex;flex-direction:column;min-height:min(34vh,340px);height:min(38vh,380px);max-height:min(42vh,420px);overflow:hidden}.portal-modal--wide .portal-geofence-steps{flex-shrink:0;margin-bottom:.35rem}.portal-modal--wide .portal-map-picker__stage{position:relative;flex:1 1 auto;min-height:min(38vh,400px);overflow:hidden}.portal-modal--wide .portal-map-picker__canvas--geofence{position:absolute;inset:0;width:100%;height:100%;min-height:0}.portal-modal--wide .portal-entity-detail--embedded .portal-entity-detail__section:has(.portal-geofence-editor) h3{margin-bottom:.35rem}.portal-modal--wide .portal-geofence-style{flex:0 0 auto;margin-top:0;padding-top:.65rem;padding-bottom:.25rem;border-top:1px solid var(--border);background:var(--card,#fff);gap:.65rem;position:relative;z-index:2}.portal-modal--wide .portal-entity-detail__actions{flex-shrink:0;margin-top:auto;padding-top:.85rem;border-top:1px solid var(--border);background:#fff}.portal-modal--wide .portal-entity-detail--embedded .portal-entity-detail__section:has(.portal-geofence-editor) .portal-entity-detail__actions{margin-top:0;position:relative;z-index:4}.portal-entity-detail--embedded .portal-entity-detail__section{padding:.85rem 0;border:none;box-shadow:none;background:transparent}.portal-entities-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.75rem}.portal-entities-page-head__action{flex-shrink:0;margin-top:.15rem;white-space:nowrap}.portal-entities-table-wrap{padding:0;overflow-x:auto}.portal-entities-table{width:100%;border-collapse:collapse;font-size:.875rem}.portal-entities-table td,.portal-entities-table th{padding:.65rem .85rem;text-align:left;border-bottom:1px solid var(--border);vertical-align:middle}.portal-entities-table th{font-size:.72rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#64748b;background:#f8fafc}.portal-entities-table__row{cursor:pointer}.portal-entities-table__row:hover{background:#f8fafc}.portal-entities-table__name-inner{display:flex;align-items:center;gap:.35rem;min-width:0}.portal-entities-table__toggle,.portal-entities-table__toggle-spacer{flex:0 0 1.1rem;width:1.1rem;height:1.1rem}.portal-entities-table__toggle{display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;background:transparent;cursor:pointer;color:#64748b}.portal-entities-table__arrow{display:block;width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:5px solid;transition:transform .15s ease}.portal-entities-table__arrow.is-open{transform:rotate(90deg)}.portal-entities-table__label{font-weight:500}.portal-entities-table__crop{color:var(--muted);max-width:16rem}.portal-entities-table__status{display:inline-flex;align-items:center;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600}.portal-entities-table__status--complete{background:#dcfce7;color:#15803d}.portal-entities-table__status--partial{background:#fef9c3;color:#a16207}.portal-entities-table__actions{display:flex;flex-wrap:wrap;gap:.35rem;white-space:nowrap}.portal-entities-table__action{padding:.25rem .5rem;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:var(--fg);font-size:.78rem;cursor:pointer}.portal-entities-table__action:hover{background:#f8fafc}.portal-entities-table__action--danger{color:#dc2626;border-color:#fecaca}.portal-entities-table__action--danger:hover{background:#fef2f2}.portal-entities-table__empty{padding:2rem 1rem!important;text-align:center}.portal-entity-create-parent{display:flex;flex-direction:column;gap:1rem}.portal-entity-create-step{margin:0;font-size:.78rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase}.portal-entity-create-form__lead{margin:0;font-size:.9rem;line-height:1.45}.portal-entity-create-choices{display:flex;flex-direction:column;gap:.55rem}.portal-entity-create-choice{display:flex;align-items:flex-start;gap:.65rem;padding:.75rem .85rem;border:1px solid #e2e8f0;border-radius:10px;cursor:pointer;transition:border-color .15s ease,background .15s ease}.portal-entity-create-choice:hover{border-color:#cbd5e1;background:#f8fafc}.portal-entity-create-choice.is-selected{border-color:#16a34a;background:#f0fdf4}.portal-entity-create-choice input{margin-top:.2rem;accent-color:#16a34a}.portal-entity-create-choice__body{display:flex;flex-direction:column;gap:.2rem;font-size:.875rem}.portal-entity-create-choice__body strong{color:var(--fg)}.portal-entity-create-choice__body .muted{font-size:.82rem;line-height:1.4}.portal-entity-create-children{display:flex;flex-direction:column;gap:.5rem}.portal-entity-create-children__label{margin:0;font-size:.875rem;font-weight:600}.portal-entity-create-children__list{list-style:none;margin:0;padding:0;max-height:10rem;overflow-y:auto;border:1px solid var(--border);border-radius:8px;background:#f8fafc}.portal-entity-create-children__item{display:flex;align-items:flex-start;gap:.55rem;padding:.55rem .75rem;font-size:.875rem;cursor:pointer;border-bottom:1px solid var(--border)}.portal-entity-create-children__item:last-child{border-bottom:none}.portal-entity-create-children__item input{margin-top:.15rem;flex-shrink:0}.portal-entity-create-form{display:flex;flex-direction:column;gap:1rem}.portal-entity-create-form__meta{margin:0;font-size:.875rem}@media (max-width:900px){.portal-entities-workspace__split{grid-template-columns:1fr}.portal-entities-workspace__tree{max-height:none}.portal-topbar__email{display:none}}@media (max-width:640px){body:has(.portal-app),html:has(.portal-app){position:fixed;inset:0;width:100%;max-width:100%;height:100%;height:100dvh;overflow:hidden;overscroll-behavior:none;background:#fff;touch-action:manipulation}.portal-app{position:fixed;inset:0;width:100%;max-width:100%;height:100%;height:100dvh;max-height:100dvh;overflow:hidden;overscroll-behavior:none}.portal-app--supabase{--portal-topbar-height:3.35rem}.portal-topbar{gap:.65rem;padding:max(.4rem,env(safe-area-inset-top,0px)) max(.75rem,env(safe-area-inset-right,0px)) .4rem max(.75rem,env(safe-area-inset-left,0px))}.portal-topbar__actions,.portal-topbar__crumbs{display:none}.portal-topbar__mobile{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;min-width:0}.portal-entities-page-head{flex-direction:column;align-items:stretch}.portal-entities-page-head__action{width:100%;margin-top:0}.portal-rail-wrap{display:none}.portal-maps-module-launcher{display:block}.portal-maps__status--overlay{display:none}.portal-mobile-fab-bar{display:flex;justify-content:flex-end;position:fixed;left:calc(.85rem + env(safe-area-inset-left, 0px));right:calc(.85rem + env(safe-area-inset-right, 0px));bottom:calc(.85rem + env(safe-area-inset-bottom, 0px));z-index:35;pointer-events:none}.portal-mobile-fab-bar:has(.portal-mobile-fab-bar__dock--maps){justify-content:flex-end}.portal-mobile-fab-bar__dock{display:flex;flex-direction:column;align-items:flex-end;gap:.55rem;pointer-events:auto}.portal-mobile-fab-bar__dock--maps{width:auto;max-width:100%;align-items:flex-end}.portal-mobile-fab-bar__cluster{display:flex;align-items:center;gap:.5rem;max-width:100%}.portal-mobile-fab-bar__cluster--maps{width:auto;max-width:100%;justify-content:flex-end;margin-left:auto}.portal-mobile-fab-bar__cluster--maps .portal-maps-module-launcher{flex:0 0 auto}.portal-mobile-fab-bar__cluster--maps .portal-mobile-context--fab{flex:0 1 auto;min-width:0;width:auto}.portal-mobile-fab-bar__cluster .portal-mobile-context--fab{min-width:0;flex:0 0 auto}.portal-mobile-fab-bar__cluster .portal-mobile-fab{position:static;flex:0 0 auto;width:3.15rem}.portal-mobile-fab-bar__dock>.portal-mobile-fab{position:static}.portal-mobile-fab-bar .portal-maps-module-launcher{display:block;flex:0 0 auto}.portal-main:not(:has(.portal-maps--fullscreen)){padding:1.25rem 1rem}.portal-main:has(.portal-maps--fullscreen){flex:1 1 auto;min-height:0;height:100%}.portal-maps--fullscreen{height:100%;min-height:0}.portal-config-mobile-nav{display:none}.portal-config-mobile-nav--section{display:flex;flex-direction:column;gap:.4rem;position:sticky;top:0;z-index:25;margin:0 -1rem .75rem;padding:.65rem 1rem .8rem;background:var(--bg);border-bottom:1px solid var(--border)}.portal-config-mobile-nav__back{display:inline-flex;align-items:center;align-self:flex-start;gap:.1rem;min-height:2rem;padding:.15rem .35rem .15rem 0;margin:0;color:var(--onelink-green-grass);font-size:.9rem;font-weight:600;text-decoration:none;line-height:1.2;border-radius:6px;-webkit-tap-highlight-color:transparent}.portal-config-mobile-nav__back:active{opacity:.72}.portal-config-mobile-nav__back-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.15rem;height:1.15rem;margin:0}.portal-config-mobile-nav__section-title{margin:0;font-size:1.35rem;font-weight:800;color:#0f172a;line-height:1.2;letter-spacing:-.01em}.portal-config-nav-list__group+.portal-config-nav-list__group{margin-top:.85rem}.portal-config-nav-list__group-label{margin:0 0 .35rem;padding:0 .15rem;font-size:.68rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#94a3b8}.portal-config-nav-list__link{display:block;padding:.75rem .85rem;margin-bottom:.35rem;border:1px solid #e8ecf1;border-radius:10px;background:#f8fafc;text-decoration:none;color:inherit}.portal-config-nav-list__link.is-active{border-color:color-mix(in srgb,var(--onelink-green-grass) 35%,#e2e8f0);background:color-mix(in srgb,var(--onelink-green-grass) 10%,#fff)}.portal-config-nav-list__link-label{display:block;font-size:.92rem;font-weight:700;color:#0f172a;line-height:1.25}.portal-config-nav-list__link.is-active .portal-config-nav-list__link-label{color:var(--onelink-green-grass)}.portal-config-nav-list__link-lead{display:block;margin-top:.2rem;font-size:.78rem;line-height:1.35;color:#64748b}.portal-config--hub{min-width:0}.portal-config-hub__head{margin-bottom:.85rem}.portal-config-hub__title{margin:0;font-size:1.35rem;font-weight:800;color:#0f172a;line-height:1.2}.portal-config-hub__lead{margin:.35rem 0 0;font-size:.88rem;line-height:1.45;color:#64748b}.portal-config-nav-list--hub{padding-bottom:.5rem}.portal-app--config-mode .portal-panel{display:none}.portal-app--config-mode .portal-main{padding:0 1rem 5.75rem;min-width:0}.portal-app--config-mode .portal-main:not(:has(.portal-config-mobile-nav--section)){padding-top:1rem}.portal-app--config-mode .portal-config{min-width:0}.portal-app--config-mode .portal-page-header h1{display:none}.portal-app--config-mode .portal-page-header{margin-bottom:0}.portal-app--config-mode .portal-page-lead{margin:0 0 .75rem;font-size:.85rem;line-height:1.45;color:#64748b}.portal-app--config-mode .portal-empty-card,.portal-app--config-mode .portal-entities-table-wrap,.portal-app--config-mode .portal-sensors-hero,.portal-app--config-mode .portal-sensors-table-wrap{min-width:0}.portal-app--config-mode .portal-sensors-hero{padding:.85rem}.portal-app--config-mode .portal-entities-page-head{margin-bottom:.85rem;flex-direction:column;align-items:stretch;gap:.75rem}.portal-app--config-mode .portal-entities-page-head__action{width:100%;min-height:44px;margin-top:0}.portal-app--config-mode .portal-users-filters{flex-direction:column;align-items:stretch}.portal-app--config-mode .portal-users-filter select{width:100%;min-width:0}.portal-app--config-mode .portal-entities-table-wrap{padding:0 0 calc(6.25rem + env(safe-area-inset-bottom, 0px));overflow:visible;background:transparent;border:none;box-shadow:none}.portal-app--config-mode .portal-entities-table{display:block;width:100%}.portal-app--config-mode .portal-sensors-table-wrap{padding:.65rem .75rem .75rem;overflow:visible}.portal-app--config-mode .portal-entities-table thead,.portal-app--config-mode .portal-sensors-table thead,.portal-app--config-mode .portal-users-table thead{display:none}.portal-app--config-mode .portal-sensors-table tbody,.portal-app--config-mode .portal-users-table tbody{display:block}.portal-app--config-mode .portal-entities-table tbody{display:flex;flex-direction:column;gap:.55rem}.portal-app--config-mode .portal-entities-table__row,.portal-app--config-mode .portal-sensors-table tbody tr,.portal-app--config-mode .portal-users-table tbody tr{display:block;margin-bottom:.65rem;border:1px solid var(--border);border-radius:10px;background:#fff;overflow:hidden;box-shadow:0 1px 2px rgba(15,23,42,.04)}.portal-app--config-mode .portal-entities-table__row{display:grid;grid-template-columns:1fr 1fr;margin:0;border:1px solid #e2e8f0;border-radius:12px;background:#fff;box-shadow:0 1px 3px rgba(15,23,42,.05);overflow:hidden}.portal-app--config-mode .portal-entities-table__row[data-depth="1"]{width:calc(100% - .75rem);margin-left:.75rem}.portal-app--config-mode .portal-entities-table__row[data-depth="2"]{width:calc(100% - 1.5rem);margin-left:1.5rem}.portal-app--config-mode .portal-entities-table__row[data-depth="3"]{width:calc(100% - 2.25rem);margin-left:2.25rem}.portal-app--config-mode .portal-entities-table__row[data-depth]:not([data-depth="0"]){border-left:3px solid color-mix(in srgb,var(--onelink-green-grass) 50%,#e2e8f0)}.portal-app--config-mode .portal-entities-table__row:hover{background:#fff}.portal-app--config-mode .portal-entities-table td,.portal-app--config-mode .portal-sensors-table td,.portal-app--config-mode .portal-users-table td{display:grid;grid-template-columns:minmax(4.75rem,34%) minmax(0,1fr);gap:.45rem .65rem;align-items:start;padding:.55rem .75rem;border-bottom:1px solid #f1f5f9;text-align:left}.portal-app--config-mode .portal-entities-table td{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.45rem .85rem;border-bottom:1px solid #f1f5f9;min-width:0}.portal-app--config-mode .portal-entities-table td.portal-entities-table__name{grid-column:1/-1;flex-direction:row;align-items:center;gap:.35rem;padding:.65rem .85rem .4rem;border-bottom:none;background:#fff}.portal-app--config-mode .portal-entities-table td.portal-entities-table__name:before{display:none}.portal-app--config-mode .portal-entities-table td.portal-entities-table__name .portal-entities-table__label{font-size:.95rem;font-weight:700;color:#0f172a;line-height:1.25}.portal-app--config-mode .portal-entities-table td:nth-child(2),.portal-app--config-mode .portal-entities-table td:nth-child(3){min-width:0;padding-top:.35rem;padding-bottom:.45rem}.portal-app--config-mode .portal-entities-table td:nth-child(2){padding-right:.5rem}.portal-app--config-mode .portal-entities-table td:nth-child(3){padding-left:.5rem;border-left:1px solid #f1f5f9}.portal-app--config-mode .portal-entities-table td.portal-entities-table__crop{grid-column:1/-1;color:#475569;font-size:.84rem;line-height:1.35;padding-top:.35rem;padding-bottom:.55rem}.portal-app--config-mode .portal-entities-table td[data-label]:before{font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#94a3b8}.portal-app--config-mode .portal-entities-table__status{font-size:.7rem;font-weight:700;padding:.15rem .5rem;border-radius:999px}.portal-app--config-mode .portal-entities-table td.portal-entities-table__actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:.4rem;align-items:stretch;border-bottom:none;border-top:1px solid #eef2f6;background:#f8fafc;padding:.5rem .75rem .6rem}.portal-app--config-mode .portal-entities-table td.portal-entities-table__actions[data-label]:before{display:none;content:none}.portal-app--config-mode .portal-entities-table td[data-label]:before,.portal-app--config-mode .portal-sensors-table td[data-label]:before,.portal-app--config-mode .portal-users-table td[data-label]:before{content:attr(data-label);font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8;line-height:1.35;padding-top:.1rem}.portal-app--config-mode .portal-entities-table td[data-label]:before{font-size:.62rem;line-height:1.15;padding-top:0}.portal-app--config-mode .portal-sensors-table__actions{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.portal-app--config-mode .portal-entities-table__action{width:100%;min-width:0;min-height:0;height:auto;padding:.4rem .5rem;border-radius:8px;font-size:.8rem;font-weight:600;line-height:1.2;text-align:center;background:#fff;border:1px solid #e2e8f0;color:#334155;box-shadow:none}.portal-app--config-mode .portal-entities-table__actions>.portal-entities-table__action:first-child:nth-last-child(3){grid-column:1/-1}.portal-app--config-mode .portal-entities-table__action:active{background:#f8fafc}.portal-app--config-mode .portal-entities-table__action--danger{border-color:#fecaca;color:#dc2626;background:#fff}.portal-app--config-mode .portal-entities-table__action--danger:active{background:#fef2f2}.portal-app--config-mode .portal-entities-table td:last-child,.portal-app--config-mode .portal-sensors-table td:last-child,.portal-app--config-mode .portal-users-table td:last-child{border-bottom:none}.portal-app--config-mode .portal-sensors-table__actions:before{flex:0 0 100%;margin-bottom:.1rem}.portal-app--config-mode .portal-entities-table__name-inner{padding-left:0!important;gap:.35rem;min-width:0}.portal-app--config-mode .portal-entities-table__toggle{width:1.5rem;height:1.5rem;border-radius:6px;background:#f1f5f9}.portal-app--config-mode .portal-entities-table__toggle-spacer{display:none}.portal-app--config-mode .portal-entities-table__empty{display:block;padding:1rem .75rem;border:none}.portal-app--config-mode .portal-sensors-table-toolbar{margin-bottom:.65rem}.portal-app--config-mode .portal-config__grid{grid-template-columns:1fr}.portal-app--config-mode .portal-config__submit{width:100%}.portal-app--config-mode .portal-mobile-fab-bar{left:1rem;right:1rem;bottom:calc(1rem + env(safe-area-inset-bottom, 0px))}.portal-modal-backdrop:has(.portal-modal--wide){padding:0;align-items:stretch}.portal-modal--wide{width:100%;height:100%;max-height:none;min-height:100dvh;border-radius:0;box-shadow:none}.portal-modal--wide .portal-modal__head{padding:.75rem 1rem}.portal-modal--wide .portal-modal__title{font-size:1rem}.portal-modal--wide .portal-modal__body{padding:.65rem 1rem 0}.portal-modal--wide .portal-entity-detail--embedded{gap:.55rem}.portal-modal--wide .portal-entity-detail--embedded .portal-entity-detail__crumb{display:none}.portal-entity-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;background:#f8fafc}.portal-entity-steps__btn{flex-direction:column;justify-content:center;gap:.2rem;min-height:3.1rem;padding:.45rem .25rem;border:none;border-right:1px solid #e2e8f0;border-radius:0;font-size:.68rem;line-height:1.15;text-align:center}.portal-entity-steps__btn:last-child{border-right:none}.portal-entity-steps__btn.is-active{background:#f0fdf4;box-shadow:inset 0 -2px 0 #16a34a}.portal-entity-steps__num{width:1.1rem;height:1.1rem;font-size:.65rem}.portal-modal--wide .portal-entity-detail--embedded .portal-entity-detail__section h3{display:none}.portal-modal--wide .portal-entity-detail--embedded .portal-entity-detail__section{padding-bottom:0}.portal-modal--wide .portal-entity-detail__actions{position:sticky;bottom:0;z-index:5;flex-wrap:nowrap;gap:.5rem;margin-top:.75rem;padding:.75rem 0 calc(.85rem + env(safe-area-inset-bottom, 0px));border-top:1px solid var(--border);background:#fff}.portal-modal--wide .portal-entity-detail__actions .portal-config__link-btn{flex-shrink:0;min-height:2.5rem;padding:.45rem .65rem}.portal-modal--wide .portal-entity-detail__actions .portal-config__submit{flex:1 1 auto;width:auto;min-width:0;min-height:2.5rem}.portal-geofence-steps__full{display:none}.portal-geofence-steps__short{display:inline}.portal-geofence-steps{margin-bottom:.45rem;font-size:.78rem}.portal-modal--wide .portal-map-picker--geofence{min-height:0;height:auto;max-height:none}.portal-modal--wide .portal-map-picker__stage{display:flex;flex-direction:column;min-height:min(42vh,320px);height:auto;max-height:none}.portal-modal--wide .portal-map-picker__canvas--geofence{position:relative;flex:1 1 auto;min-height:min(38vh,280px);height:auto}.portal-geofence-toolbar{position:static;order:2;flex-shrink:0;max-width:none;width:100%;margin:0;padding:.5rem .65rem;border-top:1px solid var(--border);border-radius:0;background:#fff;box-shadow:none}.portal-geofence-toolbar__btn{flex:1 1 auto;min-width:0;min-height:2.25rem;text-align:center}.portal-geofence-toolbar__status{flex:0 0 100%;text-align:center;font-size:.72rem;padding-top:.15rem}.portal-geofence-overlay--hint{bottom:auto;top:auto;left:auto;transform:none;position:relative;order:3;margin:0;padding:.35rem .65rem;border-top:1px solid #f1f5f9;background:#f8fafc;white-space:normal;text-align:center;width:100%;max-width:none}.portal-geofence-style__color-row{flex-direction:column;align-items:stretch;gap:.65rem}.portal-geofence-style__opacity{border-left:none;padding-left:0;width:100%;justify-content:space-between}.portal-geofence-style__opacity input[type=range]{flex:1 1 auto;width:auto;min-width:0;max-width:8rem}.portal-modal--wide .portal-geofence-style{padding-top:.55rem;padding-bottom:.35rem;gap:.55rem}.portal-modal--wide .portal-geofence-editor{overflow-y:visible}}@media (min-width:641px){.portal-config--hub,.portal-config-mobile-nav{display:none}}