:root{--bg: #09090b;--bg-subtle: #0c0c0f;--bg-card: #121214;--bg-elevated: #1a1a1f;--bg-hover: #222228;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .14);--text: #fafafa;--text-secondary: #a1a1aa;--text-muted: #71717a;--accent: #3b82f6;--accent-hover: #2563eb;--accent-muted: rgba(59, 130, 246, .12);--accent-glow: rgba(59, 130, 246, .2);--success: #60a5fa;--warning: #f59e0b;--danger: #ef4444;--info: #38bdf8;--radius: 14px;--radius-sm: 10px;--radius-lg: 18px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 8px 32px rgba(0, 0, 0, .45);--shadow-lg: 0 24px 48px rgba(0, 0, 0, .5);--font: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--header-height: 60px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--header-total: calc(var(--header-height) + var(--safe-top))}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.55;min-height:100vh;min-height:100dvh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}a{color:inherit;text-decoration:none}button,input,select,textarea{font-family:inherit;font-size:inherit}::selection{background:var(--accent-muted);color:var(--text)}.app-shell{display:flex;min-height:100vh;background:radial-gradient(ellipse 80% 60% at 100% 0%,rgba(59,130,246,.06) 0%,transparent 55%),radial-gradient(ellipse 60% 50% at 0% 100%,rgba(255,255,255,.02) 0%,transparent 50%),var(--bg)}.app-header{position:fixed;top:0;left:0;right:0;z-index:120;min-height:var(--header-total);box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;padding:var(--safe-top) max(1rem,var(--safe-right)) 0 max(1.25rem,var(--safe-left));background:#0c0c0feb;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--border)}.app-header-brand{display:flex;align-items:center;gap:.75rem;min-width:0}.app-header-title{font-size:1rem;font-weight:700;letter-spacing:-.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.menu-toggle{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text);cursor:pointer;flex-shrink:0;transition:background .15s ease,border-color .15s ease}.menu-toggle:hover{background:var(--bg-hover);border-color:var(--border-strong)}.nav-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:130;border:none;background:#0000008c;cursor:pointer}.nav-drawer{position:fixed;top:var(--header-total);right:0;bottom:0;z-index:140;width:min(300px,100vw);display:flex;flex-direction:column;padding:1rem max(.875rem,var(--safe-right)) max(1rem,var(--safe-bottom)) .875rem;background:#0c0c0ffa;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-left:1px solid var(--border);transform:translate(100%);transition:transform .22s ease;pointer-events:none}.nav-drawer.open{transform:translate(0);pointer-events:auto}.nav-drawer-footer{border-top:1px solid var(--border);padding-top:1rem;margin-top:auto}.nav-logout{width:100%}.brand-icon{width:42px;height:42px;background:linear-gradient(145deg,#fafafa,#d4d4d8);border-radius:12px;display:flex;align-items:center;justify-content:center;color:#09090b;box-shadow:var(--shadow-sm)}.brand-text h1{font-size:1.0625rem;font-weight:700;letter-spacing:-.03em}.brand-text span{font-size:.6875rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:500}.nav-list{list-style:none;flex:1;display:flex;flex-direction:column;gap:.125rem;padding:0 .25rem}.nav-link{display:flex;align-items:center;gap:.75rem;padding:.6875rem .875rem;border-radius:var(--radius-sm);color:var(--text-secondary);transition:background .15s ease,color .15s ease;font-weight:500;font-size:.875rem}.nav-link:hover{background:var(--bg-hover);color:var(--text)}.nav-link.active{background:var(--accent-muted);color:var(--text);box-shadow:inset 0 0 0 1px #3b82f633}.user-badge{display:flex;align-items:center;gap:.75rem;padding:.625rem .75rem;margin-bottom:.625rem;border-radius:var(--radius-sm);background:var(--bg-elevated);border:1px solid var(--border)}.user-avatar{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#3b82f6,#6366f1);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.75rem;color:#fff;flex-shrink:0}.user-info{flex:1;min-width:0}.user-name{font-size:.8125rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{font-size:.6875rem;color:var(--text-muted)}.main-content{flex:1;width:100%;margin:0 auto;padding:calc(var(--header-total) + 2rem) max(2.5rem,var(--safe-right)) max(2rem,var(--safe-bottom)) max(2.5rem,var(--safe-left));max-width:1280px}.page-header{margin-bottom:2rem}.page-header h2{font-size:1.875rem;font-weight:700;letter-spacing:-.04em;margin-bottom:.375rem}.page-header p{color:var(--text-secondary);font-size:.9375rem;max-width:540px}.page-loader{padding:2rem 0;text-align:center;color:var(--text-muted);font-size:.9375rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem}.stats-grid .stat-card,.two-col .card,.dashboard-jobs-card,.dashboard-alerts{content-visibility:auto;contain-intrinsic-size:auto 220px}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.375rem 1.5rem;transition:border-color .2s ease,box-shadow .2s ease,transform .15s ease}.stat-card-link{display:block;text-decoration:none;color:inherit;cursor:pointer;position:relative}.stat-card-link:hover{border-color:#3b82f659;box-shadow:var(--shadow-sm);transform:translateY(-1px)}.stat-card-go{display:inline-flex;align-items:center;gap:.125rem;margin-top:.625rem;font-size:.75rem;font-weight:500;color:var(--accent)}.stat-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.stat-card .label{font-size:.75rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.625rem}.stat-card .value{font-size:2.125rem;font-weight:700;letter-spacing:-.04em;line-height:1}.stat-card .sub{font-size:.8125rem;color:var(--text-muted);margin-top:.5rem}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.card-link{display:block;text-decoration:none;color:inherit;transition:border-color .2s ease,box-shadow .2s ease}.card-link:hover{border-color:#3b82f659;box-shadow:var(--shadow)}.card-header-link{display:inline-flex;align-items:center;gap:.125rem;font-size:.8125rem;font-weight:500;color:var(--accent);flex-shrink:0}.dashboard-jobs-card{margin-top:1.5rem}.dashboard-date{color:var(--text-muted)}.dashboard-alerts{margin-bottom:1.25rem;border-color:#f59e0b59}.dashboard-alert-list{list-style:none;display:flex;flex-direction:column;gap:.5rem}.dashboard-alert-item{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem .875rem;border-radius:var(--radius-sm);background:var(--bg-subtle);color:inherit;text-decoration:none}.dashboard-alert-item:hover{background:var(--bg-hover)}.dashboard-quick-links{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem}.dashboard-quick-link{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem .9rem;border-radius:999px;border:1px solid var(--border);background:var(--bg-card);color:var(--text);text-decoration:none;font-size:.875rem}.dashboard-quick-link:hover{border-color:var(--accent);background:var(--accent-muted)}.stat-card-warn{border-color:#f59e0b59}.stat-card-danger{border-color:#ef444459}.dashboard-status-ok{color:#22c55e}.dashboard-status-due_soon,.dashboard-status-unknown{color:var(--warning)}.dashboard-status-overdue{color:var(--danger)}.dashboard-map-card{margin-top:1.25rem}.dashboard-map-promo{display:flex;align-items:center;gap:1rem}.dashboard-map-promo svg:last-child{margin-left:auto;color:var(--text-muted)}.card-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border);background:#ffffff03}.card-header h3{font-size:.9375rem;font-weight:600;letter-spacing:-.01em}.card-body{padding:1.5rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.125rem;border-radius:var(--radius-sm);border:none;font-weight:600;font-size:.8125rem;cursor:pointer;transition:all .15s ease;white-space:nowrap}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--text);color:var(--bg)}.btn-primary:hover:not(:disabled){background:#e4e4e7;transform:translateY(-1px);box-shadow:0 4px 12px #00000040}.btn-secondary{background:transparent;color:var(--text);border:1px solid var(--border-strong)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover);border-color:#fff3}.btn-danger{background:transparent;color:var(--danger);border:1px solid rgba(239,68,68,.35)}.btn-danger:hover:not(:disabled){background:#ef444414}.btn-ghost{background:transparent;color:var(--text-muted);padding:.5rem}.btn-ghost:hover:not(:disabled){color:var(--text);background:var(--bg-hover)}.btn-sm{padding:.4375rem .875rem;font-size:.8125rem}.btn-icon{padding:.5rem;width:36px;height:36px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.form-group{display:flex;flex-direction:column;gap:.4375rem}.form-group.full-width{grid-column:1 / -1}.form-group label{font-size:.8125rem;font-weight:500;color:var(--text-secondary)}.form-group input,.form-group select,.form-group textarea{background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.6875rem .875rem;color:var(--text);transition:border-color .15s ease,box-shadow .15s ease}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#3b82f680;box-shadow:0 0 0 3px var(--accent-muted)}.form-group textarea{resize:vertical;min-height:88px}.form-actions{display:flex;gap:.75rem;margin-top:1.25rem;grid-column:1 / -1}.error-msg{color:var(--danger);font-size:.8125rem;margin-top:.5rem}.info-box{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);padding:1rem 1.25rem;font-size:.875rem;color:var(--text-secondary);text-align:left;margin-top:1rem}.info-box p{margin-bottom:.5rem}.info-box ol{margin:.5rem 0 0 1.25rem;display:flex;flex-direction:column;gap:.375rem}.info-box strong{color:var(--text)}.icon-success{color:var(--success)}.text-link{color:var(--accent);font-weight:600}.text-link:hover{color:var(--accent-hover)}.access-list{display:flex;flex-direction:column;gap:1rem}.access-row{border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.375rem;background:var(--bg-subtle)}.access-row-role{align-items:flex-start}.access-role-picker{flex:1;min-width:220px}.access-role-picker label{display:block;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.375rem}.access-role-picker select{width:100%;margin-bottom:.5rem}.access-role-summary,.access-role-pages{font-size:.8125rem;color:var(--text-muted);line-height:1.45;margin:0}.access-role-pages{margin-top:.375rem}.access-member-name{font-weight:600;margin-bottom:.125rem}.access-member-email{font-size:.8125rem;color:var(--text-muted)}.access-toggles{display:flex;flex-wrap:wrap;gap:.75rem 1.25rem;margin:1rem 0}.access-toggle{display:flex;align-items:center;gap:.5rem;font-size:.875rem;cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--text-secondary)}.access-toggle input{width:1rem;height:1rem;accent-color:var(--accent)}.access-actions{display:flex;flex-wrap:wrap;gap:.5rem}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.875rem 1.125rem;border-bottom:1px solid var(--border);font-size:.875rem}th{font-weight:600;color:var(--text-muted);font-size:.6875rem;text-transform:uppercase;letter-spacing:.06em;background:#ffffff05}tr:last-child td{border-bottom:none}tbody tr{transition:background .12s ease}tbody tr:hover td{background:#ffffff05}.td-actions{display:flex;gap:.25rem;justify-content:flex-end}.badge{display:inline-flex;align-items:center;padding:.25rem .625rem;border-radius:999px;font-size:.6875rem;font-weight:600;letter-spacing:.02em}.badge-pending{background:#f59e0b1f;color:#fbbf24}.badge-progress{background:#38bdf81f;color:#38bdf8}.badge-completed{background:#3b82f61f;color:#60a5fa}.badge-high{background:#ef44441f;color:#f87171}.badge-medium{background:#f59e0b1f;color:#fbbf24}.badge-low{background:#a1a1aa1f;color:#a1a1aa}.badge-owner{background:#6366f11f;color:#818cf8}.auth-page{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:max(2rem,var(--safe-top)) max(2rem,var(--safe-right)) max(2rem,var(--safe-bottom)) max(2rem,var(--safe-left));background:radial-gradient(ellipse 70% 60% at 50% -10%,rgba(59,130,246,.12) 0%,transparent 55%),radial-gradient(ellipse 50% 40% at 100% 100%,rgba(99,102,241,.08) 0%,transparent 50%),var(--bg)}.auth-card{width:100%;max-width:420px;background:#121214e6;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border-strong);border-radius:var(--radius-lg);padding:2.5rem;box-shadow:var(--shadow-lg)}.auth-card .brand-icon{margin:0 auto 1.5rem;width:56px;height:56px;border-radius:16px}.auth-card h2{text-align:center;font-size:1.5rem;font-weight:700;letter-spacing:-.03em;margin-bottom:.5rem}.auth-card .subtitle{text-align:center;color:var(--text-secondary);font-size:.9375rem;margin-bottom:2rem}.auth-form{display:flex;flex-direction:column;gap:1rem}.empty-state{text-align:center;padding:3rem 2rem;color:var(--text-muted)}.empty-state svg{opacity:.35;margin-bottom:1rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:200;padding:max(1rem,var(--safe-top)) max(1rem,var(--safe-right)) max(1rem,var(--safe-bottom)) max(1rem,var(--safe-left))}.modal{background:var(--bg-card);border:1px solid var(--border-strong);border-radius:var(--radius-lg);width:100%;max-width:640px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border)}.modal-header h3{font-size:1.0625rem;font-weight:600;letter-spacing:-.02em}.modal-body{padding:1.5rem}.tabs{display:flex;gap:.25rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border)}.tab{padding:.75rem 1.125rem;background:none;border:none;color:var(--text-muted);font-weight:500;font-size:.8125rem;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s ease,border-color .15s ease}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.recent-list{list-style:none}.recent-item{display:flex;align-items:center;gap:1rem;padding:.875rem 0;border-bottom:1px solid var(--border)}.recent-item:last-child{border-bottom:none}.recent-icon{width:38px;height:38px;border-radius:10px;background:var(--bg-elevated);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-secondary);flex-shrink:0}.recent-content{flex:1;min-width:0}.recent-title{font-weight:500;font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recent-meta{font-size:.75rem;color:var(--text-muted);margin-top:.125rem}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}@media (max-width: 900px){.two-col{grid-template-columns:1fr}}@media (max-width: 768px){.main-content{padding:calc(var(--header-total) + 1.25rem) max(1.25rem,var(--safe-right)) max(1.25rem,var(--safe-bottom)) max(1.25rem,var(--safe-left))}.nav-drawer{width:min(320px,100vw)}}.pest-tracker{max-width:640px}.pest-tracker-header h2{font-size:1.875rem;font-weight:700;letter-spacing:-.04em;margin-bottom:.25rem}.pest-tracker-header p{color:var(--text-secondary);font-size:.9375rem}.pest-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin:1.5rem 0 1rem}.pest-sort-group{display:flex;gap:.5rem;flex-wrap:wrap}.pest-sort-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.4375rem .875rem;border-radius:999px;border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);font-size:.8125rem;font-weight:500;cursor:pointer;transition:all .15s ease}.pest-sort-btn:hover{border-color:var(--border-strong);color:var(--text)}.pest-sort-btn.active{background:var(--text);color:var(--bg);border-color:var(--text)}.pest-search-btn{width:40px;height:40px;border-radius:50%;border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:all .15s ease}.pest-search-btn:hover,.pest-search-btn.active{border-color:var(--accent);color:var(--accent)}.pest-search-bar{margin-bottom:1rem}.pest-search-bar input{width:100%;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.75rem 1rem;color:var(--text)}.pest-search-bar input:focus{outline:none;border-color:#3b82f680;box-shadow:0 0 0 3px var(--accent-muted)}.pest-list{list-style:none;display:flex;flex-direction:column;gap:.625rem;margin-bottom:5rem}.pest-empty{text-align:center;color:var(--text-muted);padding:2rem}.pest-row{width:100%;display:flex;align-items:center;gap:1rem;padding:1rem 1.125rem;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;text-align:left;color:inherit;transition:border-color .15s ease,background .15s ease}.pest-row:hover{border-color:var(--border-strong);background:var(--bg-elevated)}.pest-row-icon{width:48px;height:48px;border-radius:50%;background:var(--accent-muted);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.pest-row-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:.125rem}.pest-row-name{font-weight:600;font-size:1rem}.pest-row-meta{font-size:.8125rem;color:var(--text-muted)}.pest-row-chevron{color:var(--text-muted);flex-shrink:0}.pest-fab-wrap{position:fixed;bottom:max(2rem,calc(1rem + var(--safe-bottom)));left:max(2.5rem,var(--safe-left));right:max(2.5rem,var(--safe-right));display:flex;justify-content:center;pointer-events:none;z-index:50}.pest-fab{pointer-events:auto;display:inline-flex;align-items:center;gap:.5rem;padding:.875rem 1.5rem;border-radius:999px;border:1px solid var(--border-strong);background:var(--bg-card);color:var(--text);font-weight:600;font-size:.9375rem;cursor:pointer;box-shadow:var(--shadow);transition:transform .15s ease,box-shadow .15s ease}.pest-fab:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.pest-history-toggle{display:inline-flex;align-items:center;gap:.5rem;background:none;border:none;color:var(--text-muted);font-size:.8125rem;cursor:pointer;padding:.5rem 0;margin-top:.5rem}.pest-history-toggle:hover{color:var(--text)}.pest-recent-list{list-style:none;font-size:.8125rem;color:var(--text-muted);display:flex;flex-direction:column;gap:.375rem;padding:.75rem;background:var(--bg-subtle);border-radius:var(--radius-sm);border:1px solid var(--border)}@media (max-width: 768px){.pest-fab-wrap{left:1.25rem;right:1.25rem;bottom:1.25rem}}.pest-detail{max-width:640px;padding-bottom:2rem}.pest-back-link{display:inline-flex;align-items:center;gap:.5rem;color:var(--text-muted);font-size:.875rem;font-weight:500;margin-bottom:1.25rem;transition:color .15s ease}.pest-back-link:hover{color:var(--text)}.pest-detail-header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.pest-detail-icon{width:56px;height:56px;border-radius:50%;background:var(--accent-muted);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.pest-detail-header h2{font-size:1.75rem;font-weight:700;letter-spacing:-.03em}.pest-detail-header p{color:var(--text-muted);font-size:.875rem;margin-top:.125rem}.pest-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:.875rem;margin-bottom:1.25rem}.pest-stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.125rem 1.25rem}.pest-stat-label{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.375rem}.pest-stat-value{font-size:2rem;font-weight:700;letter-spacing:-.03em;line-height:1}.pest-stat-sub{font-size:.8125rem;color:var(--text-muted);margin-top:.375rem}.pest-detail-actions{margin-bottom:1.5rem}.pest-sighting-list{list-style:none}.pest-sighting-item{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.pest-sighting-item:last-child{border-bottom:none}.pest-sighting-date{font-weight:600;font-size:.9375rem;margin-bottom:.25rem}.pest-sighting-meta{font-size:.875rem;color:var(--text-secondary)}.pest-sighting-by{font-size:.75rem;color:var(--text-muted);margin-top:.25rem}.heatmap-page{display:flex;flex-direction:column;gap:1.25rem;height:100%;min-height:calc(100vh - 3rem)}.heatmap-toolbar{padding:1rem 1.25rem}.heatmap-toolbar-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem}.heatmap-filter{display:flex;flex-direction:column;gap:.375rem;font-size:.8125rem;color:var(--text-muted)}.heatmap-filter select{min-width:180px;padding:.5rem .75rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);font:inherit}.heatmap-stats{display:flex;flex-wrap:wrap;gap:.75rem 1.25rem;font-size:.875rem;color:var(--text-secondary)}.heatmap-legend{display:flex;align-items:center;gap:.75rem;margin-top:1rem;font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.heatmap-legend-bar{flex:1;height:10px;border-radius:999px;background:linear-gradient(90deg,#440154,#31688e,#35b779,#90d743,#fde725,#fb9a06,#f97316 90%,#dc2626)}.heatmap-map-wrap{position:relative;flex:1;min-height:420px;overflow:hidden;padding:0}.heatmap-map{width:100%;height:min(70vh,640px);min-height:420px;background:#0f172a;z-index:0}.heatmap-empty{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:2rem;text-align:center;background:#09090be0;color:var(--text-secondary)}.heatmap-empty h3{color:var(--text);font-size:1.125rem}.heatmap-empty p{max-width:28rem;font-size:.9375rem;line-height:1.6}.heatmap-empty svg{color:var(--accent);opacity:.85}.leaflet-container{font-family:var(--font);background:#0f172a}.leaflet-control-attribution{background:#09090bd9!important;color:var(--text-muted)!important;font-size:.6875rem!important}.leaflet-control-attribution a{color:var(--text-secondary)!important}.date-range-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem}.date-range-fields{display:flex;flex-wrap:wrap;gap:1rem}.date-range-fields label{display:flex;flex-direction:column;gap:.375rem;font-size:.8125rem;color:var(--text-muted)}.date-range-fields input[type=date]{padding:.5rem .75rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);font:inherit}.date-range-actions{display:flex;flex-wrap:wrap;gap:.5rem}.record-meta{font-size:.75rem;color:var(--text-muted);margin-top:.25rem}.record-meta-compact{margin-top:.125rem}.info-msg{color:var(--info);font-size:.875rem}.reports-page{display:flex;flex-direction:column;gap:1.25rem}.reports-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}.summary-list{list-style:none}.summary-list li{display:flex;justify-content:space-between;gap:1rem;padding:.625rem 0;border-bottom:1px solid var(--border)}.summary-list li:last-child{border-bottom:none}.empty-inline{color:var(--text-muted);font-size:.9375rem}.reports-footnote{font-size:.8125rem;color:var(--text-muted)}.print-report{display:none}@media print{body *{visibility:hidden}.print-report,.print-report *{visibility:visible}.print-report{display:block;position:absolute;left:0;top:0;width:100%;padding:1rem;color:#000;background:#fff}.print-report-header{margin-bottom:1rem}.print-report-header h1{font-size:1.25rem;margin-bottom:.25rem}.print-report table{width:100%;border-collapse:collapse;font-size:.75rem}.print-report th,.print-report td{border:1px solid #ccc;padding:.35rem .5rem;text-align:left}}@media (max-width: 768px){.reports-grid{grid-template-columns:1fr}.stats-grid[style*="repeat(4"]{grid-template-columns:repeat(2,1fr)!important;max-width:none!important}}.toast{position:fixed;bottom:max(1.25rem,calc(.75rem + var(--safe-bottom)));right:max(1.25rem,var(--safe-right));z-index:9999;max-width:min(420px,calc(100vw - 2rem));padding:.875rem 1.125rem;border-radius:var(--radius-sm);font-size:.9375rem;box-shadow:var(--shadow-lg);animation:toast-in .2s ease}.toast-success{background:#22c55e26;border:1px solid rgba(34,197,94,.35);color:#86efac}.toast-error{background:#ef444426;border:1px solid rgba(239,68,68,.35);color:#fca5a5}.toast-info{background:#3b82f626;border:1px solid rgba(59,130,246,.35);color:#93c5fd}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.install-prompt{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:1.25rem;padding:.875rem 1rem;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--accent-muted)}.install-prompt-text{display:flex;align-items:center;gap:.625rem;font-size:.9375rem;color:var(--text-secondary)}.install-prompt-actions{display:flex;align-items:center;gap:.375rem}.update-prompt{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:1.25rem;padding:.875rem 1rem;border-radius:var(--radius-sm);border:1px solid rgba(59,130,246,.35);background:#3b82f61a}.update-prompt-text{display:flex;align-items:center;gap:.625rem;font-size:.9375rem;color:var(--text-secondary)}.update-prompt-actions{display:flex;align-items:center;gap:.375rem}.toolbar-row{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.filter-chips{display:flex;gap:.375rem}.chip{padding:.375rem .75rem;border-radius:999px;border:1px solid var(--border);background:transparent;color:var(--text-muted);font:inherit;font-size:.8125rem;cursor:pointer}.chip.active{background:var(--accent-muted);border-color:#3b82f659;color:var(--text)}.row-overdue{background:#ef44440f}.mobile-sub{font-size:.75rem;color:var(--text-muted);margin-top:.25rem}@media (max-width: 768px){.data-table thead{display:none}.data-table tbody tr{display:block;margin-bottom:.875rem;padding:.875rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated)}.data-table tbody tr.row-overdue{border-color:#ef444459}.data-table td{display:flex;justify-content:space-between;gap:1rem;padding:.375rem 0;border:none;text-align:right}.data-table td:before{content:attr(data-label);font-weight:600;font-size:.75rem;color:var(--text-muted);text-align:left;flex-shrink:0}.data-table td[data-label=""]:before{display:none}.data-table .td-actions{justify-content:flex-end;width:100%}.toast{left:1rem;right:1rem;bottom:1rem}}.badge-work{background:#6366f11f;color:#a5b4fc}.badge-report{background:#f59e0b1f;color:#fbbf24}.job-workflow-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.5rem}.job-workflow-card{display:flex;flex-direction:column;gap:.875rem;padding:1rem 1.125rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card)}.job-workflow-card svg{color:var(--accent);flex-shrink:0}.job-workflow-card strong{display:block;font-size:.9375rem;margin-bottom:.25rem}.job-workflow-card span{display:block;font-size:.8125rem;color:var(--text-muted);line-height:1.45}.job-share-link{font-size:.75rem;color:var(--accent);text-decoration:underline;text-underline-offset:2px}.job-stats-grid{grid-template-columns:repeat(4,1fr);max-width:720px;margin-bottom:1.5rem}.job-board-header{flex-wrap:wrap;gap:1rem}.job-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.job-card{display:flex;flex-direction:column;gap:.75rem;padding:1.125rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);transition:border-color .15s ease}.job-card-overdue{border-color:#ef444459;background:#ef44440a}.job-card-report{border-left:3px solid rgba(245,158,11,.6)}.job-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.job-card-badges{display:flex;flex-wrap:wrap;gap:.375rem}.job-card-admin{display:flex;gap:.125rem;flex-shrink:0}.job-card-title{font-size:1.0625rem;font-weight:600;letter-spacing:-.02em;line-height:1.35}.job-card-desc{font-size:.875rem;color:var(--text-secondary);line-height:1.5}.job-card-meta{display:flex;flex-direction:column;gap:.375rem;font-size:.8125rem;color:var(--text-muted)}.job-card-meta span{display:inline-flex;align-items:center;gap:.375rem}.job-card-unassigned{color:var(--warning);font-weight:500}.job-card-notes{padding:.75rem;border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border);font-size:.8125rem;color:var(--text-secondary);line-height:1.5}.job-card-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.25rem;padding-top:.75rem;border-top:1px solid var(--border)}.form-hint{font-size:.875rem;color:var(--text-muted);line-height:1.5;margin:0}.auth-footer{margin-top:1.25rem;text-align:center;font-size:.875rem;color:var(--text-muted)}.auth-footer a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.report-card{max-width:480px}.report-success{text-align:center;display:flex;flex-direction:column;align-items:center;gap:.75rem}.report-success h2{font-size:1.375rem}.report-success p{color:var(--text-secondary);margin-bottom:.5rem}@media (max-width: 900px){.job-workflow-cards{grid-template-columns:1fr}.job-stats-grid{grid-template-columns:repeat(2,1fr)}}.settings-info{display:flex;align-items:flex-start;gap:1rem}.settings-info svg{color:var(--accent);flex-shrink:0;margin-top:.125rem}.settings-info p{margin-top:.25rem;font-size:.875rem;color:var(--text-muted);line-height:1.5}.settings-form{display:flex;flex-direction:column;gap:.875rem}.settings-section-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-top:.25rem}.settings-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);cursor:pointer}.settings-toggle-row strong{display:block;font-size:.9375rem;margin-bottom:.2rem}.settings-toggle-copy{flex:1;cursor:pointer}.settings-toggle-copy strong{display:block;font-size:.9375rem;margin-bottom:.2rem}.settings-toggle-copy span,.settings-toggle-row span{display:block;font-size:.8125rem;color:var(--text-muted);line-height:1.45}.settings-toggle-row input{width:18px;height:18px;flex-shrink:0;accent-color:var(--accent)}.settings-divider{height:1px;background:var(--border);margin:.25rem 0}.settings-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.5rem}.settings-blocker{display:flex;align-items:flex-start;gap:.625rem;padding:.875rem 1rem;margin-bottom:1.25rem;border-radius:var(--radius-sm);border:1px solid #f59e0b;background:#f59e0b1f;color:var(--text);font-size:.875rem;line-height:1.5}.settings-blocker svg{flex-shrink:0;color:#f59e0b;margin-top:.125rem}.photo-upload{display:flex;flex-wrap:wrap;gap:.75rem}.photo-thumb{position:relative;width:88px;height:88px;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--border)}.photo-thumb img{width:100%;height:100%;object-fit:cover}.photo-remove{position:absolute;top:4px;right:4px;width:24px;height:24px;border:none;border-radius:999px;background:#000000a6;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}.photo-add{width:88px;height:88px;border:1px dashed var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;cursor:pointer;font-size:.75rem}.photo-add:hover{border-color:var(--accent);color:var(--accent)}.offline-banner{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;background:#7c2d12;color:#fff;font-size:.8125rem;position:sticky;top:0;z-index:200}.offline-banner-sync{background:#854d0e}.job-card-ref{font-size:.8125rem;color:var(--text-muted);margin-bottom:.35rem}.job-card-photos{display:flex;flex-wrap:wrap;gap:.5rem;margin:.5rem 0 .75rem}.job-card-photos a{display:block;width:72px;height:72px;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--border)}.job-card-photos img{width:100%;height:100%;object-fit:cover}.report-reference{font-size:1rem;margin:.75rem 0}.access-permissions{margin-top:.875rem;padding-top:.875rem;border-top:1px solid var(--border)}.access-permissions-label{display:block;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.access-permissions-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.5rem}.role-template-table-wrap{overflow-x:auto}.role-template-table{width:100%;border-collapse:collapse;font-size:.875rem}.role-template-table th,.role-template-table td{padding:.75rem;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.role-template-table th:not(:first-child),.role-template-table td.role-template-check{text-align:center;width:6rem}.role-template-check input{width:18px;height:18px;accent-color:var(--accent)}.access-permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.access-permission-toggle{display:flex;align-items:center;gap:.5rem;font-size:.875rem;cursor:pointer}.access-permission-toggle input{accent-color:var(--accent)}.analytics-bars{display:flex;flex-direction:column;gap:.75rem}.analytics-row{display:grid;grid-template-columns:minmax(80px,1fr) 2fr auto;gap:.75rem;align-items:center}.analytics-label{font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.analytics-bar-wrap{height:10px;background:var(--bg-elevated);border-radius:999px;overflow:hidden;border:1px solid var(--border)}.analytics-bar{height:100%;border-radius:999px;min-width:4px}.analytics-bar-species{background:var(--accent)}.analytics-bar-spray{background:#22c55e}.analytics-value{font-weight:600;font-size:.875rem;min-width:2rem;text-align:right}@media (max-width: 640px){.analytics-row{grid-template-columns:1fr auto;grid-template-rows:auto auto}.analytics-bar-wrap{grid-column:1 / -1}.access-permission-grid{grid-template-columns:1fr}}.water-supply-tabs,.water-category-tabs,.water-section-tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.water-supply-tab,.water-category-tab,.water-section-tabs button{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:.5rem 1rem;font-size:.875rem;cursor:pointer}.water-supply-tab.active,.water-category-tab.active,.water-section-tabs button.active{background:var(--accent);border-color:var(--accent);color:#fff}.water-section-tabs button{display:inline-flex;align-items:center;gap:.4rem}.water-compliance{display:flex;flex-direction:column;gap:.25rem;padding:.875rem 1rem;border-radius:var(--radius);margin-bottom:1rem;border:1px solid var(--border);background:var(--surface)}.water-compliance-ok{border-color:#22c55e55}.water-compliance-due_soon{border-color:#f59e0b55}.water-compliance-overdue,.water-compliance-unknown{border-color:#ef444455}.water-entry-list{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.water-entry-card{border:1px solid var(--border);border-radius:var(--radius);padding:1rem;background:var(--surface)}.water-entry-header{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.5rem}.water-entry-actions{display:flex;gap:.25rem}.water-attachments{display:flex;flex-wrap:wrap;gap:.75rem;margin:.5rem 0}.water-attachments a{font-size:.875rem}.file-thumb{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;width:100%;height:100%;padding:.5rem;text-align:center;font-size:.75rem;color:var(--text-muted)}.edit-history{margin-top:.5rem}.edit-history-toggle{display:inline-flex;align-items:center;gap:.35rem;border:none;background:none;color:var(--text-muted);font-size:.8125rem;cursor:pointer;padding:0}.edit-history-list{margin-top:.5rem;padding-left:.75rem;border-left:2px solid var(--border)}.edit-history-item{font-size:.8125rem;color:var(--text-muted);margin-bottom:.5rem}.edit-history-detail{margin-top:.15rem}.input-with-action{display:flex;gap:.35rem;align-items:center}.input-with-action input{flex:1}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:spin .8s linear infinite}.fencing-map-card{overflow:hidden}.fencing-map-body{padding:0}.fencing-map-embed{display:block;width:100%;height:min(70vh,640px);min-height:360px;border:0}.location-capture{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.field-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin-bottom:1.25rem}.field-action-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1rem .75rem;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text);text-decoration:none;font-size:.875rem;font-weight:500;transition:border-color .15s,background .15s}.field-action-btn:hover{border-color:var(--accent);background:#22c55e14}.estate-map-page{display:flex;flex-direction:column;gap:1.25rem}.estate-map-toolbar{padding:1rem}.estate-map-toolbar-row{display:flex;flex-wrap:wrap;align-items:center;gap:1rem}.estate-map-toggle{display:inline-flex;align-items:center;gap:.5rem;font-size:.875rem;cursor:pointer}.estate-map-count{margin-left:auto;display:inline-flex;align-items:center;gap:.35rem}.estate-map-container{overflow:hidden;padding:0}.estate-map-canvas{width:100%;height:min(70vh,640px);min-height:360px}.water-system-tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0}.water-system-tab{padding:.5rem .875rem;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:.8125rem;cursor:pointer}.water-system-tab.active{border-color:var(--accent);color:var(--text);background:#22c55e1a}.water-system-card{margin-bottom:1rem}.water-system-card .card-body{padding-top:0}
