@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@500;600&family=Space+Grotesk:wght@400;500;600;700&display=swap";.voice-quick{position:relative}.voice-quick-btn{width:44px;height:44px;border-radius:14px;border:none;background:#ffb347;color:#1b2437;font-size:18px;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;box-shadow:0 8px 16px #ffb34740}.voice-quick-btn.recording{background:#ff6b6b;color:#fff;box-shadow:0 8px 16px #ff6b6b59}.voice-quick-btn.processing{background:#ffd166}.voice-quick-btn:active{transform:scale(.94)}.voice-panel{position:absolute;top:54px;right:0;width:260px;background:#fff;border-radius:14px;padding:12px;border:1px solid rgba(20,35,60,.12);box-shadow:0 18px 40px #0c122329;z-index:30}.voice-panel-title{font-weight:700;font-size:13px;color:#1b2437;margin-bottom:6px}.voice-panel-text{font-size:12px;color:#4d5b76;margin-bottom:8px}.voice-number{font-family:IBM Plex Mono,monospace;font-size:18px;font-weight:600;color:#1b2437;margin-bottom:8px}.voice-candidates{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.voice-candidate{border:1px solid rgba(20,35,60,.2);border-radius:10px;padding:6px 10px;background:#f4f6fb;font-size:12px;cursor:pointer}.voice-panel-actions{display:flex;gap:8px}.voice-confirm,.voice-close{flex:1;border-radius:10px;border:none;padding:6px 8px;font-size:12px;cursor:pointer}.voice-confirm{background:#2f6fed;color:#fff}.voice-confirm:disabled{opacity:.5;cursor:not-allowed}.voice-close{background:#f0f2f7;color:#1b2437}.voice-error{margin-top:8px;font-size:11px;color:#b42318}.voice-note{margin-top:6px;font-size:11px;color:#8f6b00}@media (max-width: 720px){.voice-panel{top:auto;bottom:62px;right:50%;transform:translate(50%);width:280px}.voice-confirm,.voice-close{padding:10px 8px;font-size:14px;border-radius:12px}}.quick-bar{position:sticky;top:0;z-index:20;padding:16px 20px 12px;background:linear-gradient(135deg,#faf7f1fa,#f0f6fffa);border-bottom:1px solid rgba(20,35,60,.08);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;flex-direction:column;gap:10px}.quick-label{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#34435e;font-weight:600}.quick-input-wrap{display:flex;align-items:center;background:#fff;border-radius:14px;border:1.5px solid rgba(19,29,48,.14);transition:border-color .2s,box-shadow .2s;overflow:hidden}.quick-input-wrap:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #2f6fed1f}.quick-search-icon{flex-shrink:0;margin-left:14px;color:var(--muted);pointer-events:none}.quick-input{flex:1;min-width:0;padding:14px 12px;border:none;background:transparent;font-size:18px;font-weight:600;color:var(--ink)}.quick-input:focus{outline:none}.quick-input::placeholder{color:#9aa3b4;font-weight:400}.quick-input::-webkit-search-cancel-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.quick-clear-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;background:#0000000f;border-radius:8px;color:var(--muted);cursor:pointer;flex-shrink:0;margin-right:6px;transition:background .15s}.quick-clear-btn:hover{background:#0000001a}.quick-submit-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:none;background:var(--accent);color:#fff;border-radius:12px;cursor:pointer;flex-shrink:0;margin:2px;transition:background .15s,transform .1s}.quick-submit-btn:hover{background:#2560d4}.quick-submit-btn:active{transform:scale(.95)}.quick-actions{display:flex;align-items:center;gap:10px}.quick-voice-center{display:flex;align-items:center;justify-content:center}.quick-toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.quick-toggle input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.toggle-track{position:relative;width:40px;height:24px;background:#d1d5db;border-radius:12px;transition:background .2s;flex-shrink:0}.quick-toggle input:checked+.toggle-track{background:var(--accent)}.toggle-thumb{position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:0 1px 3px #0003}.quick-toggle input:checked+.toggle-track .toggle-thumb{transform:translate(16px)}.toggle-label{font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap}.import-link{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:44px;padding:0 14px;border-radius:14px;background:#f4f6fb;color:var(--ink);text-decoration:none;font-weight:600;font-size:14px;border:1px solid rgba(20,35,60,.1);transition:background .15s}.import-link:hover{background:#e8edf7}.import-icon{flex-shrink:0}@media (max-width: 720px){.quick-bar{position:fixed;top:auto;bottom:0;left:0;right:0;padding:14px 16px calc(14px + env(safe-area-inset-bottom));border-top:1px solid rgba(20,35,60,.08);border-bottom:none;border-radius:20px 20px 0 0;box-shadow:0 -6px 28px #090e181a;gap:10px}.quick-label{display:none}.quick-input{font-size:16px;padding:12px 10px}.quick-submit-btn{width:42px;height:42px;border-radius:11px}.quick-actions{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px}.quick-toggle{justify-self:start;gap:6px}.toggle-track{width:36px;height:22px}.toggle-thumb{width:18px;height:18px}.quick-toggle input:checked+.toggle-track .toggle-thumb{transform:translate(14px)}.toggle-label{font-size:11px}.quick-voice-center{justify-self:center}.quick-voice-center .voice-quick-btn{width:52px;height:52px;border-radius:50%;font-size:22px;box-shadow:0 6px 18px #ffb3474d}.import-link{justify-self:end;width:44px;height:44px;padding:0;border-radius:50%}.import-text{display:none}}.lts-section{display:flex;flex-direction:column;gap:10px}.lts-header{display:flex;align-items:center;justify-content:space-between}.lts-title{font-size:14px;font-weight:700;color:#1b2437;margin:0}.lts-link-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;border:1px solid rgba(20,35,60,.2);background:#fff;color:#1b2437;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s}.lts-link-btn:hover{background:#f4f6fb;border-color:#14233c59}.lts-loading,.lts-empty{font-size:13px;color:#6b7a99;padding:4px 0}.lts-tags{display:flex;flex-direction:column;gap:8px}.lts-tag-card{background:#fff;border:1px solid rgba(20,35,60,.1);border-radius:12px;padding:11px 13px;display:flex;flex-direction:column;gap:7px}.lts-tag--present{border-left:3px solid #4caf50}.lts-tag--stale{border-left:3px solid #e0e0e0;opacity:.85}.lts-tag-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.lts-tag-name-row{display:flex;align-items:center;gap:5px;min-width:0}.lts-tag-icon{color:#4d5b76;flex-shrink:0}.lts-tag-name{font-size:13px;font-weight:700;color:#1b2437;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lts-tag-presence{display:flex;align-items:center;gap:4px;flex-shrink:0}.lts-icon-present{color:#4caf50}.lts-icon-stale{color:#9e9e9e}.lts-present{font-size:11px;font-weight:700;color:#2e7d32}.lts-stale{font-size:11px;font-weight:700;color:#757575}.lts-tag-details{display:flex;flex-wrap:wrap;gap:5px}.lts-detail{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:999px;background:#f4f6fb;color:#33415c;font-size:11px;font-weight:600;white-space:nowrap}.lts-detail--dim{color:#6b7a99;font-weight:500}.lts-unlink-btn{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;border:1px solid rgba(198,40,40,.25);background:transparent;color:#c62828;font-size:11px;font-weight:600;cursor:pointer;transition:background .15s}.lts-unlink-btn:hover:not(:disabled){background:#c628280f}.lts-unlink-btn:disabled{opacity:.5;cursor:not-allowed}.lts-dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a142859;display:flex;align-items:flex-start;justify-content:center;padding-top:80px;z-index:200}.lts-dialog{background:#fff;border-radius:18px;width:100%;max-width:380px;box-shadow:0 8px 40px #0a14282e;display:flex;flex-direction:column;overflow:hidden;margin:0 16px}.lts-dialog-header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 12px;border-bottom:1px solid rgba(20,35,60,.07)}.lts-dialog-title{font-size:15px;font-weight:700;color:#1b2437}.lts-dialog-close{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;border:none;background:#f4f6fb;color:#4d5b76;cursor:pointer}.lts-dialog-close:hover{background:#e8ecf5}.lts-dialog-search-wrap{position:relative;display:flex;align-items:center;padding:12px 18px;border-bottom:1px solid rgba(20,35,60,.07)}.lts-search-icon{position:absolute;left:30px;color:#6b7a99;pointer-events:none}.lts-search-input{width:100%;padding:8px 10px 8px 30px;border:1px solid rgba(20,35,60,.15);border-radius:8px;font-size:13px;color:#1b2437;background:#f8f9fc;outline:none}.lts-search-input:focus{border-color:#14233c59;background:#fff}.lts-dialog-hint{padding:14px 18px;font-size:13px;color:#6b7a99}.lts-tag-results{display:flex;flex-direction:column;max-height:260px;overflow-y:auto}.lts-tag-result{display:flex;flex-direction:column;gap:2px;padding:11px 18px;text-align:left;border:none;background:transparent;cursor:pointer;border-bottom:1px solid rgba(20,35,60,.05);transition:background .1s}.lts-tag-result:hover:not(:disabled){background:#f5f8ff}.lts-tag-result:disabled{cursor:not-allowed}.lts-tag-result--taken{opacity:.55;background:#fafafa}.lts-tag-result--taken .lts-tag-result-meta{color:#a65300}.lts-tag-result-name{font-size:13px;font-weight:600;color:#1b2437}.lts-tag-result-meta{font-size:11px;color:#6b7a99}.lts-dialog-error{padding:10px 18px;font-size:12px;color:#c62828}.telemetry-timeline{display:flex;flex-direction:column;gap:12px}.telemetry-timeline-header{align-items:flex-start;display:flex;gap:12px;justify-content:space-between}.telemetry-timeline-header h3{margin:0 0 4px}.telemetry-timeline-header p{color:#667085;font-size:13px;margin:0}.telemetry-range-control{border:1px solid #d0d5dd;border-radius:8px;display:flex;flex-wrap:wrap;overflow:hidden}.telemetry-range-control button{background:#fff;border:0;border-right:1px solid #d0d5dd;color:#344054;cursor:pointer;font:inherit;font-size:13px;min-height:34px;padding:6px 10px}.telemetry-range-control button:last-child{border-right:0}.telemetry-range-control button.active{background:#e8f3ff;color:#155eef;font-weight:700}.telemetry-chart-wrap{border:1px solid #eaecf0;border-radius:8px;height:280px;padding:8px 4px 2px}.telemetry-state{background:#f8fafc;border:1px dashed #d0d5dd;border-radius:8px;color:#667085;font-size:14px;padding:16px;text-align:center}.telemetry-state--error{background:#fff4f4;border-color:#fecdca;color:#b42318}.telemetry-legend{align-items:center;color:#475467;display:flex;flex-wrap:wrap;font-size:13px;gap:10px}.telemetry-legend span{align-items:center;display:inline-flex;gap:5px}.telemetry-legend i{border-radius:50%;display:inline-block;height:9px;width:9px}.telemetry-dot--temperatureC{background:#d84315}.telemetry-dot--humidityPct{background:#00796b}.telemetry-dot--rssi{background:#1565c0}.telemetry-dot--batteryV{background:#6a1b9a}.telemetry-dot--stepCount{background:#ef6c00}.telemetry-source{background:#f2f4f7;border-radius:999px;padding:4px 8px}@media (max-width: 600px){.telemetry-timeline-header{flex-direction:column}.telemetry-range-control{width:100%}.telemetry-range-control button{flex:1 1 auto}}.animal-profile{background:#fff;border-radius:12px;padding:20px;box-shadow:0 2px 8px #0000001a;margin:20px 0}.profile-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:16px;border-bottom:2px solid #e0e0e0}.animal-number{font-size:28px;color:#333}.animal-number strong{color:#2196f3;font-weight:700}.checked-badge{background:#4caf50;color:#fff;padding:6px 12px;border-radius:20px;font-size:14px;font-weight:600}.profile-section{margin:20px 0;padding:16px 0;border-bottom:1px solid #f0f0f0}.profile-section:last-child{border-bottom:none}.profile-section h3{margin:0 0 12px;color:#555;font-size:16px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.profile-item{display:flex;flex-direction:column;gap:4px}.profile-item.full-width{grid-column:1 / -1}.profile-item .label{font-size:12px;color:#888;font-weight:600}.profile-item .value{font-size:16px;color:#333}.vaccine-summary{display:flex;gap:20px;margin-bottom:12px}.summary-item{display:flex;gap:8px;align-items:center}.summary-item .label{font-size:14px;color:#666}.summary-item .value{font-size:16px;font-weight:600;color:#2196f3}.no-data{color:#999;font-style:italic;margin:0}.monitor-summary{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.monitor-summary span{background:#eef7ee;border:1px solid #c8e6c9;border-radius:6px;color:#2e7d32;font-size:14px;padding:6px 8px}.monitor-form{display:flex;flex-direction:column;gap:14px;padding:14px;background:#f9f9f9;border:1px solid #e0e0e0;border-radius:8px}.monitor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.monitor-field{display:flex;flex-direction:column;gap:6px}.monitor-field span,.symptom-title{color:#666;font-size:13px;font-weight:600}.monitor-field select,.monitor-field input{border:2px solid #ddd;border-radius:6px;font:inherit;min-height:42px;padding:8px 10px}.monitor-field select:focus,.monitor-field input:focus{border-color:#2196f3;outline:none}.monitor-field-full{width:100%}.symptom-group{display:flex;flex-direction:column;gap:8px}.symptom-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.symptom-option{align-items:center;background:#fff;border:1px solid #ddd;border-radius:6px;display:flex;gap:8px;min-height:38px;padding:8px 10px}.symptom-option input{margin:0}.vaccination-list{margin-top:12px;display:flex;flex-direction:column;gap:8px}.vaccination-item{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#f5f5f5;border-radius:6px}.vax-name{font-weight:500;color:#333}.vax-date{font-size:14px;color:#666}.action-section{margin-top:24px;display:flex;flex-direction:column;gap:12px}.action-btn{padding:16px;font-size:16px;font-weight:600;border:2px solid #ddd;border-radius:8px;background:#fff;cursor:pointer;transition:all .2s;touch-action:manipulation}.action-btn:hover{background:#f5f5f5;border-color:#2196f3}.action-btn:active{transform:scale(.98)}.action-btn.primary{background:#4caf50;color:#fff;border-color:#4caf50}.action-btn.primary:hover{background:#45a049}.action-btn.primary.checked{background:#81c784;border-color:#81c784;cursor:default}.action-btn:disabled{opacity:.6;cursor:not-allowed}.inline-form{display:flex;flex-direction:column;gap:12px;padding:12px;background:#f9f9f9;border-radius:8px}.form-input,.form-textarea{padding:12px;font-size:16px;border:2px solid #ddd;border-radius:6px;font-family:inherit}.form-input:focus,.form-textarea:focus{outline:none;border-color:#2196f3}.form-textarea{resize:vertical;min-height:80px}.form-actions{display:flex;gap:8px}.btn-submit,.btn-cancel{flex:1;padding:10px;font-size:14px;font-weight:600;border:none;border-radius:6px;cursor:pointer;transition:all .2s}.btn-submit{background:#2196f3;color:#fff}.btn-submit:hover{background:#1976d2}.btn-submit:disabled{opacity:.6;cursor:not-allowed}.btn-cancel{background:#f5f5f5;color:#666}.btn-cancel:hover{background:#e0e0e0}@media (max-width: 600px){.animal-profile{padding:16px}.animal-number{font-size:24px}.profile-grid,.monitor-grid,.symptom-options{grid-template-columns:1fr}}.animal-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0c108c;display:flex;align-items:center;justify-content:center;padding:24px;z-index:1000}.animal-modal{width:min(980px,96vw);max-height:90vh;background:#fff;border-radius:16px;box-shadow:0 30px 80px #060a1259;overflow:auto;padding:18px 22px 24px}.animal-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:12px}.animal-modal-title{font-size:20px;font-weight:700;letter-spacing:.2px}.animal-modal-close{border:1px solid #e1e4ea;background:#f7f8fb;color:#1f2328;padding:6px 12px;border-radius:999px;cursor:pointer}.animal-modal-close:hover{background:#eef1f6}.animal-modal-loading,.animal-modal-error{padding:16px;color:#4a5568}@media (max-width: 720px){.animal-modal{width:100%;max-height:92vh;border-radius:14px;padding:14px 16px 20px}}.sd-section-header{display:flex;align-items:center;gap:7px}.sd-section-title{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#4d5b76}.sd-live-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.sd-live-dot--connected{background:#4caf50}.sd-live-dot--connecting{background:#ff9800;animation:sd-pulse 1.5s ease-in-out infinite}.sd-live-dot--error{background:#c62828}@keyframes sd-pulse{0%,to{opacity:1}50%{opacity:.35}}.sd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.sd-card{background:#fff;border:1px solid rgba(20,35,60,.1);border-radius:14px;padding:13px 15px;display:flex;flex-direction:column;gap:8px}.sd-card--online{border-left:3px solid #4caf50}.sd-card--offline{border-left:3px solid #e0e0e0;opacity:.75}.sd-card-header{display:flex;align-items:center;justify-content:space-between}.sd-card-kind{display:flex;align-items:center;gap:6px;color:#33415c}.sd-card-kind-label{font-size:13px;font-weight:700;color:#1b2437}.sd-status-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.sd-status--online{background:#4caf50}.sd-status--offline{background:#bdbdbd}.sd-card-id{font-family:IBM Plex Mono,monospace;font-size:11px;color:#6b7a99;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-metrics{display:flex;flex-wrap:wrap;gap:4px}.sd-metric{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:999px;background:#f4f6fb;color:#33415c;font-size:11px;font-weight:600;white-space:nowrap}.sd-metric-key{color:#4d5b76;font-weight:500}@media (max-width: 520px){.sd-grid{grid-template-columns:1fr 1fr}}@media (max-width: 360px){.sd-grid{grid-template-columns:1fr}}.animals-page{display:flex;flex-direction:column;gap:16px;padding:0 20px 24px}.filters-row{display:flex;gap:8px;flex-wrap:wrap}.chip{border:1px solid rgba(20,35,60,.2);background:#fff;color:#1b2437;padding:8px 12px;border-radius:999px;font-size:12px;font-weight:600;cursor:pointer}.recent-row{display:flex;flex-direction:column;gap:8px}.recent-title{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#4d5b76}.recent-list{display:flex;flex-wrap:wrap;gap:8px}.recent-chip{border:none;background:#f4f6fb;color:#1b2437;border-radius:999px;padding:6px 12px;font-weight:600;cursor:pointer}.list-wrap{background:#fff;border-radius:18px;border:1px solid rgba(20,35,60,.08);overflow:hidden}.tag-status-bar{display:flex;align-items:center;gap:6px;font-size:11px;color:#4d5b76}.tag-status-dot{width:6px;height:6px;border-radius:50%;background:#2db478;flex-shrink:0}.list-skeleton,.list-empty{padding:40px;text-align:center;color:#4d5b76;font-weight:600}.animal-row{display:grid;grid-template-columns:1.1fr 1fr 1fr 1.2fr;gap:12px;align-items:center;padding:10px 16px;border-bottom:1px solid rgba(20,35,60,.08);cursor:pointer;background:#fff}.animal-row.selected{background:#f0f6ff}.row-left{display:flex;flex-direction:column;gap:4px}.animal-number{font-family:IBM Plex Mono,monospace;font-size:20px;font-weight:700;color:#1b2437}.pen-text{font-size:12px;color:#4d5b76}.row-tag{display:flex;align-items:center}.row-tag-empty{color:#c0c8d8;font-size:13px}.row-tag-telemetry{display:flex;flex-direction:column;gap:4px}.row-tag-header{display:flex;align-items:center;gap:5px}.row-tag-presence-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.row-tag-presence-dot.dot--present{background:#2db478}.row-tag-presence-dot.dot--stale{background:#b0bac8}.row-tag-name{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600;color:#1b2437}.row-tag-seen{font-size:11px;color:#4d5b76}.row-tag-pills{display:flex;flex-wrap:wrap;gap:4px}.tag-pill{display:inline-block;padding:1px 6px;border-radius:999px;background:#eef2fb;color:#33415c;font-size:10px;font-weight:600;white-space:nowrap}.row-middle{display:flex;flex-direction:column;gap:6px}.status-badge{width:fit-content;font-size:11px;padding:4px 10px;border-radius:999px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.status-badge.healthy{background:#2db4781f;color:#1c7c58}.status-badge.sick{background:#eb575726;color:#b42318}.status-badge.pregnant{background:#ff9f432e;color:#a65300}.status-badge.quarantine{background:#7878ff2e;color:#2f6fed}.status-badge.sold{background:#78828c2e;color:#556070}.vaccine-block{display:flex;align-items:center;gap:8px;font-size:12px;color:#4d5b76}.vaccine-status{font-weight:700;padding:4px 8px;border-radius:8px;font-size:11px}.vaccine-status.ok{background:#2f6fed1f;color:#2f6fed}.vaccine-status.due{background:#ff9f432e;color:#a65300}.vaccine-status.overdue{background:#eb575733;color:#b42318}.row-right{display:flex;flex-direction:column;gap:6px;align-items:flex-end}.checked-indicator{font-size:12px;font-weight:600;color:#4d5b76}.checked-indicator.yes{color:#1c7c58}.check-btn{border:none;background:#1b2437;color:#f8f6ef;padding:8px 12px;border-radius:10px;font-size:12px;cursor:pointer}.check-btn:disabled{background:#d6dae1;color:#7b8796;cursor:not-allowed}.load-more{display:flex;justify-content:center}.load-more-btn{border:1px solid rgba(20,35,60,.2);background:#fff;color:#1b2437;padding:10px 16px;border-radius:12px;font-weight:600;cursor:pointer}@media (max-width: 900px){.animal-row{grid-template-columns:1fr 1fr;grid-template-areas:"left right" "tag right" "middle right"}.row-left{grid-area:left}.row-tag{grid-area:tag}.row-middle{grid-area:middle}.row-right{grid-area:right;align-items:flex-end}}@media (max-width: 640px){.animals-page{padding:0 16px 140px}.filters-row{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}.chip{white-space:nowrap;padding:8px 14px}.list-wrap{border-radius:14px}.advanced-search{grid-template-columns:1fr;justify-content:stretch}.animal-row{grid-template-columns:1fr;gap:8px;padding:12px 14px}.row-right{flex-direction:row;justify-content:space-between;align-items:center}.check-btn{padding:10px 14px;font-size:13px}}.profile-page{padding:20px;display:flex;flex-direction:column;gap:16px}.profile-top{display:flex;justify-content:flex-start}.back-btn{border:1px solid rgba(20,35,60,.2);background:#fff;color:#1b2437;padding:8px 12px;border-radius:12px;font-weight:600;cursor:pointer}.profile-loading,.profile-error{padding:16px;border-radius:12px;background:#fff;color:#4d5b76}.profile-error{color:#b42318;border:1px solid rgba(180,35,24,.3)}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px}.login-panel{width:min(420px,100%);background:#ffffffeb;border:1px solid rgba(27,36,55,.1);border-radius:8px;padding:22px;box-shadow:0 18px 60px #1b243724}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:18px}.login-logo{width:48px;height:48px;border-radius:8px}.login-brand h1{font-size:24px;line-height:1.1;color:#2e7d32}.login-brand p{color:var(--muted);font-size:13px}.login-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:16px}.login-tabs button,.login-submit{border:0;border-radius:7px;cursor:pointer;font-weight:700}.login-tabs button{padding:9px 10px;background:#eef2f7;color:var(--muted)}.login-tabs button.active{background:#2f6fed1f;color:var(--accent)}.login-field{display:grid;gap:6px;margin-bottom:12px;color:var(--muted);font-size:13px;font-weight:700}.login-field input{height:42px;border:1px solid rgba(27,36,55,.18);border-radius:7px;padding:0 12px;background:#fff;color:var(--ink);font-size:15px}.login-error{background:#c6282814;color:#b42318;border-radius:7px;padding:9px 10px;font-size:13px;margin:4px 0 12px}.login-submit{width:100%;height:42px;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--accent);color:#fff}.login-submit:disabled{opacity:.65;cursor:not-allowed}.admin-page{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:18px 0 40px}.admin-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.admin-header h1{font-size:28px}.admin-header p{color:var(--muted);font-size:13px;font-weight:700}.admin-tabs{display:inline-flex;gap:6px;background:#ffffffb3;border:1px solid rgba(27,36,55,.1);border-radius:8px;padding:4px}.admin-tabs button,.admin-panel-title button,.admin-secondary-btn,.admin-primary-btn,.admin-row--button,.admin-status{border:0;cursor:pointer;font-weight:700}.admin-tabs button{display:inline-flex;align-items:center;gap:6px;padding:8px 11px;border-radius:7px;background:transparent;color:var(--muted)}.admin-tabs button.active{background:#2f6fed1f;color:var(--accent)}.admin-alert{border-radius:7px;padding:10px 12px;margin-bottom:12px;font-size:13px;font-weight:700}.admin-alert--error{background:#c6282817;color:#b42318}.admin-alert--success{background:#2e7d3217;color:#2e7d32}.admin-grid{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:14px;align-items:start}.admin-grid--single{grid-template-columns:1fr}.admin-staff-layout{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:14px;align-items:start}.admin-staff-form{position:sticky;top:12px}.admin-staff-main{display:grid;gap:14px}.admin-panel{background:#ffffffe6;border:1px solid rgba(27,36,55,.1);border-radius:8px;padding:16px}.admin-panel h2{font-size:18px;margin-bottom:12px}.admin-panel-title{display:flex;justify-content:space-between;gap:10px}.admin-panel-title button{align-self:start;padding:6px 9px;border-radius:7px;background:#0000000f;color:var(--ink)}.admin-panel label{display:grid;gap:6px;margin-bottom:11px;color:var(--muted);font-size:13px;font-weight:700}.admin-panel input,.admin-panel select{height:38px;border:1px solid rgba(27,36,55,.16);border-radius:7px;padding:0 10px;background:#fff;color:var(--ink)}.admin-checkbox{display:flex!important;grid-template-columns:none!important;align-items:center;gap:8px!important}.admin-checkbox input{width:16px;height:16px}.admin-primary-btn{width:100%;height:40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:7px;background:var(--accent);color:#fff}.admin-primary-btn:disabled{opacity:.6;cursor:not-allowed}.admin-secondary-btn{min-height:38px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:7px;background:#2f6fed1f;color:var(--accent);padding:0 12px}.admin-secondary-btn:disabled{opacity:.55;cursor:not-allowed}.admin-table{display:grid;gap:8px}.admin-access-form{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:10px;align-items:end;padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid rgba(27,36,55,.1)}.admin-access-form label{margin-bottom:0}.admin-access-form .admin-primary-btn{align-self:end}.admin-access-list{display:grid;gap:8px}.admin-empty-state{padding:12px;border-radius:7px;background:#f8fafc;color:var(--muted);font-size:13px;font-weight:700}.admin-row{width:100%;display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 12px;border-radius:7px;background:#f8fafc;text-align:left}.admin-row.selected{outline:2px solid rgba(47,111,237,.25)}.admin-row strong,.admin-row span{display:block}.admin-row span{color:var(--muted);font-size:12px}.admin-row-meta{display:grid;justify-items:end;gap:5px}.admin-status,.admin-pill{border-radius:999px;padding:5px 9px;background:#c628281a;color:#b42318;font-size:12px}.admin-status.active,.admin-pill.active{background:#2e7d321a;color:#2e7d32}.monitoring-editor{max-width:100%}.monitoring-field-list{display:grid;gap:12px;margin:12px 0}.monitoring-add-field{display:grid;grid-template-columns:minmax(180px,1fr) minmax(150px,220px) auto;gap:10px;align-items:end;padding:12px;border-radius:8px;background:#f8fafc;border:1px solid rgba(27,36,55,.1)}.monitoring-toolbar{display:inline-flex;gap:8px}.monitoring-field-card{border:1px solid rgba(27,36,55,.12);border-radius:8px;padding:12px;background:#f8fafc}.monitoring-field-card.is-disabled{opacity:.68}.monitoring-card-summary{display:flex;justify-content:space-between;gap:12px;align-items:center}.monitoring-card-summary strong{display:inline-block;font-size:16px;margin-right:8px}.monitoring-card-summary p{color:var(--muted);font-size:13px;font-weight:700;margin-top:6px}.monitoring-card-actions{display:inline-flex;align-items:center;gap:8px}.monitoring-card-actions button,.monitoring-toolbar button{border:0;border-radius:7px;cursor:pointer;font-weight:700;padding:7px 9px;background:#0000000f;color:var(--ink)}.monitoring-card-actions button:disabled{opacity:.45;cursor:not-allowed}.monitoring-edit-panel{border:1px solid rgba(47,111,237,.18);border-radius:8px;background:#fff;padding:14px;margin:12px 0}.monitoring-edit-grid{display:grid;grid-template-columns:minmax(180px,1fr) auto auto;gap:12px;align-items:center}.monitoring-switches{display:flex;gap:16px;margin-top:8px}.monitoring-options{margin-top:10px}.monitoring-number-row{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));gap:10px;margin-top:8px}.monitoring-option-row{display:grid;grid-template-columns:minmax(160px,1fr) minmax(160px,220px) 90px;gap:8px;align-items:center;margin-top:8px}.monitoring-option-row input,.monitoring-option-row select{height:36px;border:1px solid rgba(27,36,55,.16);border-radius:7px;padding:0 9px;background:#fff}@media (max-width: 820px){.admin-header,.admin-row{align-items:stretch;flex-direction:column}.admin-grid,.admin-staff-layout,.admin-access-form{grid-template-columns:1fr}.admin-staff-form{position:static}.admin-row-meta{justify-items:start}.monitoring-add-field,.monitoring-number-row,.monitoring-option-row{grid-template-columns:1fr}.monitoring-card-summary,.monitoring-edit-grid{flex-direction:column;align-items:stretch;grid-template-columns:1fr}.monitoring-card-actions,.monitoring-toolbar{flex-wrap:wrap}}.today-page{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:18px 0 44px}.today-header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px}.today-header h1{font-size:30px;line-height:1.1}.today-header p{color:var(--muted);font-size:13px;font-weight:700;margin-top:4px}.today-refresh{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:7px;padding:9px 12px;background:var(--accent);color:#fff;cursor:pointer;font-weight:700}.today-refresh:disabled{opacity:.6;cursor:not-allowed}.today-alert,.today-loading{border-radius:7px;padding:12px;background:#c6282817;color:#b42318;font-weight:700}.today-loading{background:#2f6fed1a;color:var(--accent)}.today-progress{display:grid;gap:12px;padding:16px;margin-bottom:14px;border:1px solid rgba(27,36,55,.1);border-radius:8px;background:#ffffffe6}.today-progress span,.today-metric span,.today-row span{color:var(--muted);font-size:12px;font-weight:700}.today-progress strong{display:block;margin-top:4px;font-size:36px;line-height:1}.today-progress p{margin-top:4px;color:var(--muted);font-size:13px;font-weight:700}.today-progress-bar{height:10px;overflow:hidden;border-radius:999px;background:#1b24371a}.today-progress-bar span{display:block;height:100%;border-radius:inherit;background:#2e7d32}.today-metrics{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));gap:10px;margin-bottom:14px}.today-metric{display:grid;gap:8px;min-height:116px;padding:13px;border:1px solid rgba(27,36,55,.1);border-radius:8px;background:#ffffffe6}.today-metric svg{color:#2e7d32}.today-metric--warn svg{color:#b26a00}.today-metric--urgent svg{color:#b42318}.today-metric strong{align-self:end;font-size:28px;line-height:1}.today-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:start}.today-panel{border:1px solid rgba(27,36,55,.1);border-radius:8px;background:#ffffffeb;padding:14px}.today-panel--priority{border-color:#b423182e}.today-panel-title{display:flex;align-items:center;gap:8px;margin-bottom:12px}.today-panel-title h2{font-size:18px}.today-list{display:grid;gap:8px}.today-row{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:54px;padding:10px 11px;border-radius:7px;background:#f8fafc;color:var(--ink);text-decoration:none}.today-row--link:hover{outline:2px solid rgba(47,111,237,.18)}.today-row strong,.today-row span{display:block}.today-severity{white-space:nowrap;border-radius:999px;padding:5px 8px;font-size:12px;font-weight:700;background:#b26a001f;color:#8a5200}.today-severity--sick,.today-severity--urgent{background:#b423181a;color:#b42318}.today-empty{border-radius:7px;padding:12px;background:#f8fafc;color:var(--muted);font-size:13px;font-weight:700}@media (max-width: 980px){.today-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.today-grid{grid-template-columns:1fr}}@media (max-width: 640px){.today-header,.today-row{align-items:stretch;flex-direction:column}.today-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}.gateway-page{display:flex;flex-direction:column;gap:16px;padding:0 20px 32px}.gateway-page-header{display:flex;flex-direction:column;gap:4px}.gateway-page-header h1{font-size:30px;line-height:1.1;color:#1b2437}.gateway-page-header p{color:#4d5b76;font-size:13px;font-weight:700}.summary-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}@media (min-width: 768px){.summary-strip{grid-template-columns:repeat(6,1fr)}}.summary-strip--loading .summary-card{opacity:.5}.summary-card{background:#fff;border:1px solid rgba(20,35,60,.08);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:3px;min-width:0}.summary-card--green{background:#f0fbf3;border-color:#2e7d3226}.summary-card--grey{background:#f8f8f8}.summary-card--blue{background:#f0f6ff;border-color:#2f6fed26}.summary-card--orange{background:#fff8f0;border-color:#a6530033}.summary-value{font-size:26px;font-weight:700;color:#1b2437;line-height:1;display:flex;align-items:center;gap:6px}.summary-value--health{font-size:16px;font-weight:700;gap:5px}.summary-label{font-size:12px;font-weight:700;color:#1b2437;margin-top:2px}.summary-sub{font-size:11px;color:#4d5b76}.health-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;display:inline-block}.dot--live{background:#4caf50}.dot--warn{background:#ff9800}.dot--off{background:#9e9e9e}.gateway-toolbar{position:sticky;top:0;z-index:50;background:#f8f6eff2;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:16px;border:1px solid rgba(20,35,60,.08);padding:10px 14px;display:flex;flex-direction:column;gap:10px}.toolbar-tabs{display:flex;gap:4px;flex-wrap:wrap}.tab-btn{border:1px solid transparent;background:transparent;color:#4d5b76;padding:6px 14px;border-radius:999px;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.tab-btn:hover{background:#14233c0f;color:#1b2437}.tab-btn--active{background:#1b2437;color:#f8f6ef;border-color:#1b2437}.toolbar-filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.toolbar-search{flex:1;min-width:180px}.toolbar-right{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-left:auto}.gateway-input{border:1px solid rgba(20,35,60,.2);background:#fff;color:#1b2437;padding:8px 12px;border-radius:999px;font-size:13px;outline:none;min-width:0}.gateway-input:focus{border-color:#1b2437;box-shadow:0 0 0 2px #1b243714}.gateway-select{border:1px solid rgba(20,35,60,.2);background:#fff;color:#1b2437;padding:8px 12px;border-radius:999px;font-size:13px;outline:none;cursor:pointer}.gateway-select:focus{border-color:#1b2437}.gateway-select:disabled{opacity:.45;cursor:not-allowed}.refresh-interval-select{padding-right:8px}.chip{border:1px solid rgba(20,35,60,.2);background:#fff;color:#1b2437;padding:8px 12px;border-radius:999px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.chip.active{background:#1b2437;color:#f8f6ef;border-color:#1b2437}.chip:disabled{opacity:.4;cursor:not-allowed}.clear-btn{color:#c62828;border-color:#c628284d}.clear-btn:hover{background:#fff0f0}.view-toggle{display:flex;border:1px solid rgba(20,35,60,.2);border-radius:999px;overflow:hidden}.view-btn{border:none;background:#fff;color:#4d5b76;padding:7px 11px;font-size:15px;cursor:pointer;line-height:1}.view-btn--active{background:#1b2437;color:#f8f6ef}.refresh-group{display:flex;gap:4px;align-items:center}.gateway-status-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:12px;color:#4d5b76;min-height:18px}.status-count{font-weight:600;color:#1b2437}.status-refreshing{color:#2f6fed;font-weight:500}.status-updated{color:#4d5b76}.status-error{color:#c62828;font-weight:600}.status-success{color:#2e7d32;font-weight:600}.gateway-content-area{display:flex;gap:16px;align-items:flex-start}.gateway-data-area{flex:1;min-width:0;display:flex;flex-direction:column;gap:12px}.list-wrap{background:#fff;border-radius:18px;border:1px solid rgba(20,35,60,.08);overflow:auto}.list-skeleton,.list-empty{padding:48px 24px;text-align:center;color:#4d5b76;font-weight:600}.gateway-table{width:100%;border-collapse:collapse;font-size:13px}.gateway-table th{text-align:left;padding:11px 14px;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:#4d5b76;border-bottom:1px solid rgba(20,35,60,.08);white-space:nowrap;background:#fafafa}.gateway-row{cursor:pointer;outline:none}.gateway-row td{padding:11px 14px;border-bottom:1px solid rgba(20,35,60,.05);vertical-align:middle}.gateway-row:last-child td{border-bottom:none}.gateway-row:hover td{background:#f5f8ff}.gateway-row:focus-visible td{background:#eef4ff}.gateway-row--selected td{background:#eef4ff}.cell-mono{font-family:IBM Plex Mono,monospace;font-size:12px}.cell-sm{font-size:12px}.cell-dim{color:#9e9e9e}.cell-stack{display:flex;flex-direction:column;gap:2px}.cell-primary{font-size:13px;font-weight:600;color:#1b2437}.cell-secondary{font-size:11px;color:#4d5b76}.cell-animal-linked{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.telemetry-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:5px}.telemetry-badge{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;background:#f4f6fb;color:#33415c;font-size:10px;font-weight:700;letter-spacing:.02em}.attention-stack{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.attention-pill{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;background:#fff3e0;color:#a65300;font-size:11px;font-weight:700;white-space:nowrap}.attention-pill--ok{background:#e8f5e9;color:#2e7d32}.presence-badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.presence-badge--present{background:#e8f5e9;color:#2e7d32}.presence-badge--stale{background:#f0f0f0;color:#616161}.kind-badge{display:inline-block;padding:2px 8px;border-radius:6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.kind-badge--ibeacon{background:#2f6fed1f;color:#2f6fed}.kind-badge--ble{background:#0096881f;color:#00695c}.kind-badge--unknown{background:#78828c1f;color:#556070}.protocol-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.04em;background:#f4f6fb;color:#33415c;text-transform:uppercase}.signal-label{font-size:12px;font-weight:600;white-space:nowrap}.signal--excellent{color:#2e7d32}.signal--good{color:#00695c}.signal--fair{color:#a65300}.signal--weak{color:#b42318}.signal-dbm{font-weight:400;color:#4d5b76;font-size:11px}.linked-badge{display:inline-block;background:#e3f2fd;color:#1565c0;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700;font-family:IBM Plex Mono,monospace}.link-btn{border:1px solid rgba(20,35,60,.15);background:#fff;color:#1b2437;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap}.link-btn:hover{background:#f4f6fb}.link-btn:disabled{opacity:.45;cursor:not-allowed}.link-btn--unlink{color:#c62828;border-color:#c6282840}.link-btn--unlink:hover{background:#fff0f0}.link-btn--primary{background:#1b2437;color:#f8f6ef;border-color:#1b2437;padding:7px 14px}.link-btn--primary:hover{background:#2a3650}.tag-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.tag-card{background:#fff;border:1px solid rgba(20,35,60,.1);border-radius:16px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;cursor:pointer;outline:none;transition:box-shadow .15s}.tag-card:hover{box-shadow:0 2px 12px #14233c1a}.tag-card:focus-visible{box-shadow:0 0 0 2px #2f6fed}.tag-card--present{border-left:3px solid #4caf50}.tag-card--stale{border-left:3px solid #e0e0e0;opacity:.8}.tag-card--selected{background:#eef4ff;border-color:#2f6fed}.tag-card-top{display:flex;align-items:center;justify-content:space-between}.card-top-badges,.drawer-badges{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.tag-card-id{display:flex;flex-direction:column;gap:2px}.tag-card-meta{display:flex;flex-direction:column;gap:5px}.tag-meta-item{display:flex;align-items:center;gap:8px;font-size:12px}.tag-meta-label{font-size:11px;color:#4d5b76;font-weight:600;min-width:52px;flex-shrink:0}.tag-card-animal{display:flex;align-items:center;gap:8px;font-size:12px}.tag-card-actions{margin-top:2px}.by-gateway-groups{display:flex;flex-direction:column;gap:20px}.gateway-group{display:flex;flex-direction:column;gap:8px}.gateway-group-header{display:flex;align-items:center;gap:12px;padding:6px 4px;border-bottom:2px solid rgba(20,35,60,.08)}.gateway-group-mac{font-size:14px;font-weight:700;color:#1b2437}.gateway-group-count{font-size:12px;color:#4d5b76;font-weight:500}.gateway-pagination{display:flex;align-items:center;gap:12px;justify-content:center;padding-top:4px}.page-info{font-size:13px;color:#4d5b76;font-weight:500}.icon-spin{animation:gateway-spin 1s linear infinite}@keyframes gateway-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tag-drawer{width:296px;flex-shrink:0;background:#fff;border:1px solid rgba(20,35,60,.08);border-radius:18px;padding:16px;display:flex;flex-direction:column;gap:0;position:sticky;top:160px;max-height:calc(100vh - 200px);overflow-y:auto}.drawer-technical{border-top:1px solid rgba(20,35,60,.08);border-bottom:1px solid rgba(20,35,60,.08);margin:4px 0 10px;padding:8px 0}.drawer-technical summary{cursor:pointer;color:#1b2437;font-size:12px;font-weight:700;list-style-position:inside}.drawer-technical .drawer-section{border-top:none}.drawer-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.drawer-close{border:none;background:transparent;color:#4d5b76;cursor:pointer;padding:4px 6px;border-radius:6px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.drawer-close:hover{background:#14233c12}.drawer-primary{margin-bottom:16px;display:flex;flex-direction:column;gap:4px}.drawer-display-id{font-family:IBM Plex Mono,monospace;font-size:20px;font-weight:700;color:#1b2437;word-break:break-all}.drawer-display-sub{font-family:IBM Plex Mono,monospace;font-size:12px;color:#4d5b76}.drawer-section{border-top:1px solid rgba(20,35,60,.07);padding:12px 0;display:flex;flex-direction:column;gap:9px}.drawer-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#4d5b76;margin-bottom:4px}.drawer-row{display:grid;grid-template-columns:72px 1fr;gap:8px;align-items:baseline;font-size:12px}.drawer-label{font-size:11px;font-weight:600;color:#4d5b76;padding-top:1px}.drawer-value{color:#1b2437;font-size:12px;word-break:break-word}.drawer-value--mono{font-family:IBM Plex Mono,monospace;font-size:11px}.drawer-value--wrap{word-break:break-all}.drawer-value-sub{font-size:11px;color:#4d5b76}.drawer-animal-linked{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.copy-btn{border:none;background:transparent;color:#4d5b76;cursor:pointer;padding:0 4px;vertical-align:middle;opacity:.6;display:inline-flex;align-items:center;justify-content:center}.copy-btn:hover{opacity:1;color:#2f6fed}.raw-toggle{border:none;background:transparent;color:#4d5b76;font-size:12px;font-weight:600;cursor:pointer;padding:0;text-align:left;display:inline-flex;align-items:center;gap:6px}.raw-toggle:hover{color:#1b2437}.raw-payload{font-family:IBM Plex Mono,monospace;font-size:10px;background:#f4f6fb;border-radius:8px;padding:8px;overflow-x:auto;color:#4d5b76;white-space:pre-wrap;word-break:break-all;margin-top:6px}.raw-payload-stack{display:flex;flex-direction:column;gap:8px}.drawer-mobile-backdrop{display:none}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:200}.dialog{background:#fff;border-radius:18px;padding:24px;width:min(440px,92vw);display:flex;flex-direction:column;gap:14px;box-shadow:0 8px 40px #0000002e}.dialog-title{font-size:17px;font-weight:700;color:#1b2437;margin:0}.dialog-desc{font-size:13px;color:#4d5b76;margin:0;word-break:break-all}.dialog-search-wrap{display:flex;flex-direction:column;gap:0;position:relative}.dialog-searching{font-size:12px;color:#4d5b76;padding:6px 12px}.animal-matches{border:1px solid rgba(20,35,60,.15);border-top:none;border-radius:0 0 12px 12px;overflow:hidden;background:#fff}.animal-match-row{width:100%;display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border:none;background:transparent;cursor:pointer;font-size:13px;text-align:left;border-bottom:1px solid rgba(20,35,60,.05)}.animal-match-row:last-child{border-bottom:none}.animal-match-row:hover,.animal-match-row--selected{background:#f0f6ff}.animal-match-num{font-weight:700;color:#1b2437;font-family:IBM Plex Mono,monospace}.animal-match-pen{font-size:12px;color:#4d5b76}.dialog-selected-animal{font-size:13px;color:#1b2437;background:#f0f6ff;border-radius:10px;padding:8px 12px}.dialog-label{font-size:12px;font-weight:600;color:#4d5b76}.dialog-error{font-size:12px;color:#c62828;margin:0}.dialog-actions{display:flex;gap:8px;justify-content:flex-end}@media (max-width: 1024px){.tag-drawer{width:260px}}@media (max-width: 768px){.gateway-page{padding:0 14px 28px}.gateway-page--drawer-open .gateway-content-area{display:block}.tag-drawer{position:fixed;bottom:0;left:0;right:0;width:100%;max-height:65vh;border-radius:20px 20px 0 0;z-index:100;top:auto;box-shadow:0 -4px 32px #00000026;overflow-y:auto}.drawer-mobile-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:99}.toolbar-filters{flex-wrap:wrap}.toolbar-search{min-width:140px}.summary-strip{grid-template-columns:repeat(3,1fr)}.summary-value{font-size:20px}.tag-cards-grid{grid-template-columns:1fr 1fr}}@media (max-width: 480px){.tag-cards-grid{grid-template-columns:1fr}.toolbar-filters{gap:6px}.tab-btn{font-size:12px;padding:5px 10px}.gateway-table th:nth-child(4),.gateway-table td:nth-child(4){display:none}}.sensors-page{display:flex;flex-direction:column;gap:16px;padding:0 20px 32px}.sensors-page-header{display:flex;flex-direction:column;gap:4px}.sensors-page-header h1{font-size:30px;line-height:1.1;color:#1b2437}.sensors-page-header p{color:#4d5b76;font-size:13px;font-weight:700}.sensors-toolbar{position:sticky;top:0;z-index:50;background:#f8f6eff2;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:16px;border:1px solid rgba(20,35,60,.08);padding:10px 14px;display:flex;align-items:center;justify-content:flex-start;gap:12px;flex-wrap:wrap}.list-empty--error{color:#c62828}.sensors-toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.sensors-toolbar-right{display:flex;align-items:center;gap:8px}.sse-indicator{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#4d5b76}.sse-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.sse-dot--connected{background:#4caf50}.sse-dot--connecting{background:#ff9800}.sse-dot--error{background:#c62828}.kind-badge--air{background:#2e7d321f;color:#2e7d32}.kind-badge--water{background:#2f6fed1f;color:#2f6fed}.online-badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;background:#e8f5e9;color:#2e7d32;white-space:nowrap}.offline-badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;background:#f0f0f0;color:#616161;white-space:nowrap}.metrics-grid{display:flex;gap:5px;flex-wrap:wrap;margin-top:4px}.metric-pill{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;background:#f4f6fb;color:#33415c;font-size:11px;font-weight:600;white-space:nowrap;gap:3px}.metric-pill-key{color:#4d5b76;font-weight:500}.sensors-table{width:100%;border-collapse:collapse;font-size:13px}.sensors-table th{text-align:left;padding:11px 14px;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:#4d5b76;border-bottom:1px solid rgba(20,35,60,.08);white-space:nowrap;background:#fafafa}.sensor-row td{padding:11px 14px;border-bottom:1px solid rgba(20,35,60,.05);vertical-align:middle}.sensor-row:last-child td{border-bottom:none}.sensor-row:hover td{background:#f5f8ff}.sensors-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.sensor-card{background:#fff;border:1px solid rgba(20,35,60,.1);border-radius:16px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}.sensor-card--online{border-left:3px solid #4caf50}.sensor-card--offline{border-left:3px solid #e0e0e0;opacity:.8}.sensor-card-top{display:flex;align-items:center;justify-content:space-between}.sensor-card-id{display:flex;flex-direction:column;gap:3px}.sensor-card-device-id{font-size:15px;font-weight:700;color:#1b2437}.sensor-card-type{font-size:11px;color:#4d5b76}.sensor-card-footer{font-size:11px;color:#4d5b76;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.sensor-primary-reading{font-size:30px;line-height:1;font-weight:800;color:#1b2437}.sensor-technical{border-top:1px solid rgba(20,35,60,.08);padding-top:8px}.sensor-technical summary{cursor:pointer;color:#4d5b76;font-size:12px;font-weight:700}.sensor-technical-grid{display:grid;grid-template-columns:86px minmax(0,1fr);gap:6px 10px;margin-top:8px;font-size:11px}.sensor-technical-grid span{color:#4d5b76;font-weight:700}.sensor-technical-grid strong{min-width:0;overflow-wrap:anywhere;color:#1b2437;font-family:IBM Plex Mono,monospace;font-weight:600}@media (max-width: 768px){.sensors-page{padding:0 14px 28px}.sensors-card-grid{grid-template-columns:1fr 1fr}}@media (max-width: 480px){.sensors-card-grid{grid-template-columns:1fr}}.behavior-page{display:flex;flex-direction:column;gap:16px;padding:0 20px 32px}.behavior-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.behavior-page-header h1{font-size:30px;line-height:1.1;color:#1b2437}.behavior-page-header p{margin-top:4px;color:#4d5b76;font-size:13px;font-weight:700}.behavior-icon-btn,.behavior-advanced-btn,.behavior-secondary-btn,.behavior-preset{border:1px solid rgba(47,111,237,.18);border-radius:7px;background:#2f6fed14;color:#2f6fed;cursor:pointer;font-weight:800}.behavior-icon-btn{width:38px;height:36px;display:inline-grid;place-items:center;flex:0 0 auto}.behavior-icon-btn:disabled{opacity:.55;cursor:wait}.behavior-spin{animation:behavior-spin .9s linear infinite}@keyframes behavior-spin{to{transform:rotate(360deg)}}.behavior-toolbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px;border:1px solid rgba(20,35,60,.08);border-radius:8px;background:#f8f6eff2;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.behavior-preset-group,.behavior-filter-summary{display:inline-flex;align-items:center;gap:7px;min-height:36px}.behavior-preset-group{flex-wrap:wrap}.behavior-preset{min-height:30px;padding:5px 10px;color:#4d5b76;background:#fff;border-color:#4d5b7633}.behavior-preset--active{color:#fff;background:#2f6fed;border-color:#2f6fed}.behavior-filter-summary{min-width:0;margin-left:auto;color:#4d5b76;font-size:12px;font-weight:800}.behavior-filter-summary span{max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:5px 8px;border-radius:7px;background:#ffffffbf}.behavior-advanced-btn,.behavior-secondary-btn{min-height:32px;display:inline-flex;align-items:center;gap:6px;padding:6px 10px}.behavior-advanced-btn--active{background:#2f6fed;color:#fff}.behavior-advanced-filters{display:grid;grid-template-columns:minmax(180px,1.2fr) minmax(160px,1fr) minmax(190px,.9fr) minmax(190px,.9fr);gap:10px;padding:12px;border:1px solid rgba(20,35,60,.08);border-radius:8px;background:#fff}.behavior-filter{min-width:0;display:flex;flex-direction:column;gap:5px}.behavior-filter span{color:#4d5b76;font-size:11px;font-weight:800;text-transform:uppercase}.behavior-filter input{width:100%;min-height:36px;border:1px solid rgba(77,91,118,.24);border-radius:7px;background:#fff;color:#1b2437;font-size:13px;font-weight:700;padding:7px 9px}.behavior-status-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;min-height:28px;color:#4d5b76;font-size:12px;font-weight:700}.behavior-status-error{color:#c62828}.behavior-kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(140px,1fr));gap:10px}.behavior-kpi{min-height:116px;display:flex;flex-direction:column;justify-content:space-between;gap:8px;padding:14px;border:1px solid rgba(20,35,60,.08);border-left:4px solid #8a99b5;border-radius:8px;background:#fff}.behavior-kpi--primary{border-left-color:#2f6fed}.behavior-kpi--green{border-left-color:#2e7d32}.behavior-kpi--orange{border-left-color:#f57c00}.behavior-kpi--purple{border-left-color:#7b1fa2}.behavior-kpi-label{color:#4d5b76;font-size:12px;font-weight:800;text-transform:uppercase}.behavior-kpi strong{color:#1b2437;font-size:32px;line-height:1;font-weight:800}.behavior-kpi .behavior-kpi-time{font-size:20px;line-height:1.15}.behavior-kpi-sub{color:#4d5b76;font-size:11px;font-weight:700}.behavior-content-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(360px,.9fr);gap:14px;align-items:start}.behavior-panel{border:1px solid rgba(20,35,60,.08);border-radius:8px;background:#fff}.behavior-panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid rgba(20,35,60,.06)}.behavior-panel-header h2{font-size:16px;color:#1b2437}.behavior-panel-header span{color:#4d5b76;font-size:12px;font-weight:800}.behavior-distribution{display:flex;flex-direction:column;gap:12px;padding:16px}.behavior-distribution-row{display:grid;grid-template-columns:128px minmax(0,1fr) 42px;gap:10px;align-items:center}.behavior-distribution-meta{display:flex;flex-direction:column;gap:2px}.behavior-distribution-meta span{color:#4d5b76;font-size:12px;font-weight:800}.behavior-distribution-meta strong,.behavior-distribution-percent{color:#1b2437;font-size:12px;font-weight:800}.behavior-distribution-track{height:10px;overflow:hidden;border-radius:999px;background:#eef2f7}.behavior-distribution-fill{display:block;height:100%;min-width:2px;border-radius:999px}.behavior-distribution-fill--eating,.behavior-dot--eating{background:#2e7d32}.behavior-distribution-fill--drinking,.behavior-dot--drinking{background:#2f6fed}.behavior-distribution-fill--moving,.behavior-dot--moving{background:#f57c00}.behavior-distribution-fill--standing,.behavior-dot--standing{background:#6d4c41}.behavior-distribution-fill--lying,.behavior-dot--lying{background:#7b1fa2}.behavior-distribution-fill--unknown,.behavior-dot--unknown{background:#78909c}.behavior-activity-list{display:flex;flex-direction:column}.behavior-activity-row{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px 16px;border-bottom:1px solid rgba(20,35,60,.05)}.behavior-activity-row:last-child{border-bottom:0}.behavior-dot{width:9px;height:9px;border-radius:999px}.behavior-activity-main{min-width:0;display:flex;flex-direction:column;gap:2px}.behavior-activity-main strong{color:#1b2437;font-size:13px}.behavior-activity-main span,.behavior-activity-side{color:#4d5b76;font-size:12px;font-weight:700}.behavior-activity-side{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.behavior-table-wrap{overflow-x:auto}.behavior-table{width:100%;min-width:980px;border-collapse:collapse;font-size:13px}.behavior-table th{position:sticky;top:0;text-align:left;padding:11px 12px;border-bottom:1px solid rgba(20,35,60,.08);background:#fafafa;color:#4d5b76;font-size:11px;font-weight:800;text-transform:uppercase;white-space:nowrap}.behavior-table td{padding:11px 12px;border-bottom:1px solid rgba(20,35,60,.05);vertical-align:middle}.behavior-table tbody tr:last-child td{border-bottom:0}.behavior-table tbody tr:hover td{background:#f5f8ff}.behavior-mono{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600}.behavior-clip-cell{max-width:220px;overflow-wrap:anywhere}.behavior-pill{display:inline-flex;align-items:center;min-height:24px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.behavior-pill--eating{background:#e8f5e9;color:#2e7d32}.behavior-pill--drinking{background:#e8f0fe;color:#2f6fed}.behavior-pill--moving{background:#fff3e0;color:#e65100}.behavior-pill--standing{background:#efebe9;color:#5d4037}.behavior-pill--lying{background:#f3e5f5;color:#6a1b9a}.behavior-pill--unknown{background:#eceff1;color:#546e7a}.behavior-empty{padding:28px;color:#4d5b76;font-weight:800;text-align:center}.behavior-empty--compact{padding:18px}@media (max-width: 1180px){.behavior-kpi-grid{grid-template-columns:repeat(3,minmax(160px,1fr))}.behavior-content-grid{grid-template-columns:1fr}.behavior-advanced-filters{grid-template-columns:repeat(2,minmax(180px,1fr))}}@media (max-width: 720px){.behavior-page{padding:0 14px 28px}.behavior-page-header,.behavior-toolbar{align-items:stretch}.behavior-filter-summary{width:100%;margin-left:0}.behavior-advanced-btn,.behavior-icon-btn{width:100%;justify-content:center}.behavior-kpi-grid,.behavior-advanced-filters{grid-template-columns:1fr}.behavior-distribution-row{grid-template-columns:94px minmax(0,1fr) 38px}}.import-animals{margin-top:24px;padding:16px;border:1px solid #e0e0e0;border-radius:12px;background:#fafafa}.import-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.back-link{display:inline-block;margin-bottom:8px;text-decoration:none;color:#1b2437;font-weight:600}.import-header h2{margin:0;font-size:20px}.template-btn{padding:8px 12px;border-radius:8px;border:1px solid #cccccc;background:#fff;cursor:pointer}.import-form{margin-top:12px;display:flex;flex-direction:column;gap:12px}.manual-hint{font-size:14px;color:#455a64}.file-load{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.bulk-section{border:1px solid #e0e0e0;background:#fff;border-radius:12px;padding:12px;display:grid;gap:12px}.bulk-title{font-weight:600}.bulk-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.bulk-field{display:grid;gap:6px;font-size:13px}.bulk-field label{color:#546e7a;font-weight:600}.bulk-field input,.bulk-field select{padding:8px 10px;border-radius:8px;border:1px solid #cfd8dc;font-size:14px}.bulk-divider{grid-column:1 / -1;margin-top:6px;font-weight:600;color:#37474f}.bulk-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}.bulk-preview{display:grid;gap:6px;background:#f7f9fa;border-radius:10px;padding:10px;border:1px dashed #cfd8dc;min-width:200px}.bulk-preview-title{font-weight:600;color:#37474f}.bulk-preview-list{display:grid;gap:4px;font-size:13px;color:#455a64}.bulk-preview-empty{font-size:13px;color:#90a4ae}.manual-grid{display:grid;gap:6px;border:1px solid #e0e0e0;background:#fff;border-radius:10px;padding:8px;overflow-x:auto}.manual-row{display:grid;grid-template-columns:44px 140px 120px 120px 120px 140px 140px 120px 160px 200px 160px 90px;gap:6px;align-items:center}.manual-header{font-size:12px;font-weight:600;color:#37474f;border-bottom:1px solid #e0e0e0;padding-bottom:6px}.manual-cell{display:flex;align-items:center}.manual-cell input,.manual-cell select{width:100%;padding:6px 8px;border-radius:6px;border:1px solid #cfd8dc;font-size:13px;background:#fff}.radio-group{display:flex;flex-wrap:wrap;gap:8px;font-size:12px}.radio-option{display:inline-flex;align-items:center;gap:6px;color:#455a64;white-space:nowrap}.radio-option input{margin:0}.index-cell{font-weight:600;justify-content:center;color:#546e7a}.action-cell{justify-content:center}.row-action{border:1px solid #d7ccc8;background:#fff;border-radius:6px;padding:4px 8px;cursor:pointer;font-size:12px}.manual-actions{display:flex;gap:8px}.secondary-btn{padding:8px 12px;border-radius:8px;border:1px solid #cfd8dc;background:#fff;cursor:pointer}.checkbox-row{display:flex;align-items:center;gap:8px}.import-btn,.errors-btn{padding:10px 14px;border-radius:8px;border:none;background:#1b5e20;color:#fff;cursor:pointer}.import-btn:disabled{opacity:.6;cursor:not-allowed}.import-message{margin-top:12px;color:#c62828}.import-summary{margin-top:16px;padding:12px;border-radius:8px;background:#fff;border:1px solid #e0e0e0;display:grid;gap:6px}.import-errors{margin-top:16px;padding:12px;border-radius:8px;background:#fff7f7;border:1px solid #f4c7c7;display:grid;gap:6px}.errors-title{font-weight:600}.error-row{font-size:14px}@media (max-width: 900px){.manual-row{grid-template-columns:36px 140px 120px 120px 120px 140px 140px 120px 160px 200px 160px 90px}}@media (max-width: 640px){.import-header{flex-direction:column;align-items:flex-start}.manual-actions,.bulk-actions,.file-load{flex-direction:column}}.install-banner{display:flex;align-items:center;gap:12px;padding:12px 16px;margin:12px 20px 0;background:#fff;border:1px solid rgba(47,111,237,.2);border-radius:14px;box-shadow:0 2px 12px #2f6fed14}.install-logo{width:40px;height:40px;border-radius:10px;flex-shrink:0}.install-text{flex:1;display:flex;flex-direction:column;gap:2px;font-size:13px;color:var(--muted);min-width:0}.install-text strong{font-size:14px;color:var(--ink)}.install-btn{border:none;background:var(--accent);color:#fff;padding:8px 16px;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0}.install-btn:hover{background:#2560d4}.install-dismiss{display:flex;align-items:center;justify-content:center;border:none;background:none;color:var(--muted);cursor:pointer;padding:4px;flex-shrink:0}@media (max-width: 640px){.install-banner{margin:8px 16px 0;padding:10px 12px;gap:10px}}.farm-canvas-wrap{width:100%;height:100%;overflow:hidden;position:relative;background-color:#f5f3ed;background-image:linear-gradient(rgba(180,170,150,.25) 1px,transparent 1px),linear-gradient(90deg,rgba(180,170,150,.25) 1px,transparent 1px);background-size:40px 40px;cursor:default}.farm-canvas-wrap--drawing{cursor:crosshair}.canvas-empty-hint,.canvas-draw-hint{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:14px;color:#9e9e9e;pointer-events:none;text-align:center;-webkit-user-select:none;user-select:none}.canvas-draw-hint{color:var(--accent);font-weight:600;background:#2f6fed12;padding:8px 16px;border-radius:20px;border:1px dashed rgba(47,111,237,.3)}.layout-sidebar{width:210px;flex-shrink:0;border-right:1px solid #e8e3d8;background:#faf8f3;padding:16px 12px;display:flex;flex-direction:column;gap:8px;overflow-y:auto}.sidebar-heading{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.sidebar-hint{font-size:11px;color:var(--muted);margin-bottom:4px}.sidebar-palette{display:flex;flex-direction:column;gap:6px}.palette-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;border:1px solid #e8e3d8;background:#fff;cursor:grab;-webkit-user-select:none;user-select:none;transition:box-shadow .12s,border-color .12s,opacity .12s}.palette-item:hover{box-shadow:0 2px 8px #00000014;border-color:#ccc}.palette-item:active{cursor:grabbing}.palette-item--dragging{opacity:.4}.palette-item-icon{display:flex;align-items:center;flex-shrink:0}.palette-item-text{display:flex;flex-direction:column;gap:1px;min-width:0}.palette-item-label{font-size:13px;font-weight:600;color:var(--ink)}.palette-item-desc{font-size:11px;color:var(--muted)}.link-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:1000}.link-modal{background:#fff;border-radius:12px;box-shadow:0 8px 32px #0000002e;width:360px;max-height:480px;display:flex;flex-direction:column;overflow:hidden}.link-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 12px;border-bottom:1px solid #f0ebe0}.link-modal-title{font-size:14px;font-weight:700;color:var(--ink)}.link-modal-close{background:none;border:none;cursor:pointer;color:var(--muted);padding:3px;display:flex;align-items:center;border-radius:4px}.link-modal-close:hover{background:#eee;color:var(--ink)}.link-modal-search-wrap{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid #f0ebe0}.link-modal-search-icon{color:var(--muted);flex-shrink:0}.link-modal-search-input{flex:1;border:none;outline:none;font-size:13px;background:transparent;color:var(--ink)}.link-modal-list{flex:1;overflow-y:auto;padding:6px 0}.link-modal-state{padding:16px;font-size:13px;color:var(--muted);text-align:center}.link-modal-state--error{color:#c62828}.link-modal-row{display:flex;flex-direction:column;gap:2px;width:100%;padding:9px 16px;border:none;background:transparent;text-align:left;cursor:pointer;transition:background .1s}.link-modal-row:hover{background:#f5f3ed}.link-modal-row--current{background:#2f6fed12}.link-modal-row--current .link-modal-row-primary{color:var(--accent)}.link-modal-row-primary{font-size:13px;font-weight:600;color:var(--ink);font-family:IBM Plex Mono,monospace}.link-modal-row-secondary{font-size:11px;color:var(--muted)}.quick-info-panel{width:220px;flex-shrink:0;border-left:1px solid #e8e3d8;background:#fff;display:flex;flex-direction:column;overflow:hidden}.quick-info-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px 9px;border-top:3px solid #ccc;border-bottom:1px solid #f0ebe0;background:#faf8f3}.quick-info-kind{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.quick-info-close{background:none;border:none;cursor:pointer;color:var(--muted);padding:2px;display:flex;align-items:center;border-radius:4px;transition:background .1s}.quick-info-close:hover{background:#eee;color:var(--ink)}.quick-info-body{flex:1;padding:12px;display:flex;flex-direction:column;gap:10px;overflow-y:auto}.quick-info-field{display:flex;flex-direction:column;gap:3px}.quick-info-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.quick-info-value{font-size:13px;color:var(--ink);word-break:break-all}.quick-info-mono{font-family:IBM Plex Mono,monospace;font-size:12px}.quick-info-input{font-size:13px;padding:5px 8px;border:1px solid #ddd;border-radius:6px;outline:none;background:#fff;color:var(--ink);width:100%;transition:border-color .15s}.quick-info-input:focus{border-color:var(--accent)}.quick-info-footer{padding:10px 12px;border-top:1px solid #f0ebe0}.quick-info-delete-btn{display:flex;align-items:center;gap:5px;background:none;border:1px solid #e57373;color:#c62828;font-size:12px;font-weight:600;padding:5px 10px;border-radius:6px;cursor:pointer;width:100%;justify-content:center;transition:background .12s}.quick-info-delete-btn:hover{background:#ffebee}.quick-info-divider{height:1px;background:#f0ebe0;margin:2px 0}.quick-info-dim{font-size:12px;color:var(--muted)}.quick-info-label-row{display:flex;align-items:center;justify-content:space-between;gap:6px}.quick-info-link-actions{display:flex;align-items:center;gap:4px}.quick-info-icon-btn{display:flex;align-items:center;gap:3px;background:none;border:1px solid #ddd;border-radius:5px;font-size:11px;font-weight:600;color:var(--accent);padding:2px 6px;cursor:pointer;transition:background .1s,border-color .1s}.quick-info-icon-btn:hover{background:#2f6fed12;border-color:var(--accent)}.quick-info-icon-btn--unlink{color:var(--muted);border-color:#e0dbd0}.quick-info-icon-btn--unlink:hover{background:#f5f3ed;border-color:#bbb;color:var(--ink)}.linked-entity-data{display:flex;flex-direction:column;gap:5px;background:#f8f6ef;border-radius:7px;padding:8px 10px}.linked-entity-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.linked-entity-key{font-size:11px;color:var(--muted);white-space:nowrap}.linked-entity-val{font-size:12px;font-weight:600;color:var(--ink);font-family:IBM Plex Mono,monospace;text-align:right;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zone-panel{width:220px;flex-shrink:0;border-left:1px solid #e8e3d8;background:#fff;display:flex;flex-direction:column;overflow:hidden}.zone-panel-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px 9px;border-top:3px solid #ccc;border-bottom:1px solid #f0ebe0;background:#faf8f3}.zone-panel-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.zone-panel-close{background:none;border:none;cursor:pointer;color:var(--muted);padding:2px;display:flex;align-items:center;border-radius:4px;transition:background .1s}.zone-panel-close:hover{background:#eee;color:var(--ink)}.zone-panel-body{flex:1;padding:12px;display:flex;flex-direction:column;gap:10px;overflow-y:auto}.zone-panel-field{display:flex;flex-direction:column;gap:4px}.zone-panel-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.zone-panel-value{font-size:13px;color:var(--ink)}.zone-panel-mono{font-family:IBM Plex Mono,monospace;font-size:12px}.zone-panel-input{font-size:13px;padding:5px 8px;border:1px solid #ddd;border-radius:6px;outline:none;background:#fff;color:var(--ink);width:100%;transition:border-color .15s}.zone-panel-input:focus{border-color:var(--accent)}.zone-color-swatches{display:flex;flex-wrap:wrap;gap:6px}.zone-color-swatch{width:22px;height:22px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .1s,border-color .1s;padding:0}.zone-color-swatch:hover{transform:scale(1.15)}.zone-color-swatch--active{border-color:var(--ink);transform:scale(1.1)}.zone-panel-footer{padding:10px 12px;border-top:1px solid #f0ebe0}.zone-panel-delete-btn{display:flex;align-items:center;gap:5px;background:none;border:1px solid #e57373;color:#c62828;font-size:12px;font-weight:600;padding:5px 10px;border-radius:6px;cursor:pointer;width:100%;justify-content:center;transition:background .12s}.zone-panel-delete-btn:hover{background:#ffebee}.layout-page{display:flex;flex-direction:column;height:calc(100vh - 64px);overflow:hidden}.layout-page--loading,.layout-page--error{display:flex;align-items:center;justify-content:center;height:calc(100vh - 64px);font-size:14px;color:var(--muted)}.layout-page--error{color:#c62828}.layout-toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;border-bottom:1px solid #e8e3d8;background:#fff;flex-shrink:0;gap:12px;min-height:46px}.layout-toolbar-left{display:flex;align-items:center;gap:8px;min-width:0}.layout-toolbar-icon{color:var(--muted);flex-shrink:0}.layout-name{font-size:14px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layout-dirty-dot{width:7px;height:7px;border-radius:50%;background:#f59e0b;flex-shrink:0}.layout-toolbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.layout-mode-toggle{display:flex;border:1px solid #e0dbd0;border-radius:7px;overflow:hidden}.layout-mode-btn{display:flex;align-items:center;gap:5px;padding:5px 11px;font-size:12px;font-weight:600;border:none;background:transparent;color:var(--muted);cursor:pointer;transition:background .12s,color .12s}.layout-mode-btn:hover{background:#f0ebe0;color:var(--ink)}.layout-mode-btn.active{background:var(--ink);color:#fff}.layout-save-btn{display:flex;align-items:center;gap:5px;padding:5px 13px;font-size:12px;font-weight:700;border:none;border-radius:7px;background:var(--accent);color:#fff;cursor:pointer;transition:opacity .12s}.layout-save-btn:hover{opacity:.88}.layout-save-btn:disabled{opacity:.6;cursor:default}.layout-zone-btn{display:flex;align-items:center;gap:5px;padding:5px 11px;font-size:12px;font-weight:600;border:1px solid #e0dbd0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;transition:background .12s,color .12s,border-color .12s}.layout-zone-btn:hover{background:#f0ebe0;color:var(--ink)}.layout-zone-btn.active{background:#2f6fed1a;border-color:var(--accent);color:var(--accent)}.layout-body{display:flex;flex:1;overflow:hidden}.layout-canvas-area{flex:1;position:relative;overflow:hidden;transition:outline .1s}.layout-canvas-area--over{outline:2px dashed var(--accent);outline-offset:-2px}.layout-drag-ghost{padding:5px 12px;border-radius:20px;color:#fff;font-size:12px;font-weight:700;white-space:nowrap;opacity:.9;pointer-events:none;box-shadow:0 4px 12px #0003}.camera-page{width:min(1280px,calc(100vw - 32px));margin:18px auto 40px;display:grid;gap:16px}.camera-page-header,.camera-settings-panel,.camera-card,.camera-empty{background:#ffffffc7;border:1px solid rgba(77,91,118,.16);border-radius:8px;box-shadow:0 10px 30px #1b243714}.camera-error{border:1px solid rgba(198,40,40,.22);border-radius:8px;background:#c6282814;color:#b3261e;padding:10px 12px;font-weight:800}.camera-page-header{min-height:72px;padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:16px}.camera-page-header h1,.camera-card-header h2,.camera-settings-header h2{margin:0;color:var(--ink);line-height:1.15}.camera-page-header h1{font-size:24px}.camera-count,.camera-card-header span{display:block;margin-top:5px;color:var(--muted);font-size:13px;font-weight:700}.camera-settings-button,.camera-actions button,.camera-empty button,.camera-settings-header button{border:0;border-radius:7px;padding:10px 14px;background:var(--accent);color:#fff;font-weight:800;cursor:pointer}.camera-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:20px;background:#1118278c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.camera-settings-panel{width:min(620px,calc(100vw - 32px));max-height:min(760px,calc(100vh - 40px));padding:18px;overflow:auto;background:#fff}.camera-settings-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.camera-settings-header h2{font-size:18px}.camera-settings-header button{width:36px;height:36px;padding:0;background:#1b243714;color:var(--ink);font-size:18px}.camera-tabs{display:flex;gap:8px;margin-bottom:16px;padding-bottom:8px;overflow-x:auto}.camera-tabs button{flex:0 0 auto;border:1px solid rgba(77,91,118,.2);border-radius:7px;padding:9px 12px;background:#fff;color:var(--ink);font-weight:800;cursor:pointer}.camera-tabs button.active{border-color:#2f6fedcc;background:#2f6fed1a;color:var(--accent)}.camera-tabs .camera-add-tab{border-style:dashed}.camera-form{display:grid;gap:12px}.camera-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.camera-form-grid.two-columns{grid-template-columns:repeat(2,minmax(0,1fr))}.camera-form label{display:grid;gap:6px;color:var(--muted);font-size:13px;font-weight:700}.camera-form input,.camera-form select{width:100%;border:1px solid rgba(77,91,118,.24);border-radius:7px;background:#fff;color:var(--ink);padding:9px 10px;font-size:14px;outline:none}.camera-form input:focus,.camera-form select:focus{border-color:#2f6fedcc;box-shadow:0 0 0 3px #2f6fed1f}.camera-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:4px}.camera-actions button[type=button]{background:#1b243714;color:var(--ink)}.camera-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px}.camera-card{min-width:0;overflow:hidden}.camera-card-header{min-height:64px;padding:12px 14px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px}.camera-card-header h2{font-size:16px}.camera-card-controls{display:flex;align-items:center;gap:8px;justify-self:center}.camera-card-control{display:grid;gap:4px;min-width:104px}.camera-card-control span{display:block;margin:0;color:var(--muted);font-size:11px;font-weight:800;line-height:1}.camera-card-controls select{border:1px solid rgba(77,91,118,.24);border-radius:7px;background:#fff;color:var(--ink);padding:8px 9px;font-size:13px;font-weight:800;outline:none}.camera-card-toggle{align-self:end;justify-self:end;margin-right:-8px;border:0;border-radius:7px;min-height:36px;padding:8px 11px;background:var(--accent);color:#fff;font-weight:800;cursor:pointer}.camera-viewer{aspect-ratio:16 / 9;display:grid;place-items:center;overflow:hidden;background:#111827}.camera-viewer img{width:100%;height:100%;object-fit:contain;display:block}.camera-placeholder,.camera-empty{color:#ffffffb8;font-weight:800;text-align:center;padding:24px}.camera-empty{min-height:260px;display:grid;place-items:center;align-content:center;gap:14px;color:var(--muted)}@media (max-width: 760px){.camera-page{width:min(100vw - 20px,1280px)}.camera-page-header,.camera-card-header{align-items:stretch}.camera-card-header{grid-template-columns:1fr}.camera-card-controls{justify-content:space-between;justify-self:stretch}.camera-card-toggle{justify-self:stretch;margin-right:0}.camera-form-grid,.camera-form-grid.two-columns,.camera-grid{grid-template-columns:1fr}}@media (max-width: 760px){.camera-modal-backdrop{padding:10px;align-items:end}.camera-settings-panel{width:100%;max-height:calc(100vh - 20px)}}:root{color-scheme:light;--ink: #1b2437;--muted: #4d5b76;--paper: #ffffff;--surface: #f8f6ef;--accent: #2f6fed;--warm: #ffb347}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Space Grotesk,Segoe UI,sans-serif;background:radial-gradient(circle at top left,#fff7e6,#f0f6ff 45%,#f9f6ef);color:var(--ink);min-height:100vh}.app-shell{min-height:100vh}.app-header{display:flex;align-items:center;padding:12px 20px}.app-header-link{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}.app-logo{width:40px;height:40px;border-radius:10px}.app-title{font-size:22px;font-weight:700;color:#2e7d32}@media (max-width: 640px){.app-header{padding:10px 16px}.app-logo{width:36px;height:36px}.app-title{font-size:20px}}.app-nav{display:flex;align-items:center;gap:2px;margin-left:20px}.app-nav-link{font-size:13px;font-weight:600;padding:5px 11px;border-radius:7px;text-decoration:none;color:var(--muted);transition:background .12s,color .12s}.app-nav-link:hover{background:#0000000d;color:var(--ink)}.app-nav-link.active{background:#2f6fed1a;color:var(--accent)}.app-user{margin-left:auto;display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;font-weight:700}.app-user-role{padding:3px 7px;border-radius:999px;background:#2f6fed1a;color:var(--accent);text-transform:capitalize}.app-farm-select{min-width:150px;max-width:220px;border:1px solid rgba(77,91,118,.22);border-radius:7px;padding:5px 8px;background:var(--paper);color:var(--ink);font-size:13px;font-weight:700}.app-user button{border:0;border-radius:7px;padding:6px 10px;background:#0000000f;color:var(--ink);cursor:pointer;font-weight:700}.app-loading{min-height:50vh;display:grid;place-items:center;color:var(--muted);font-weight:700}@media (max-width: 640px){.app-header{flex-wrap:wrap}.app-user{width:100%;justify-content:flex-end;margin-left:0;margin-top:8px}}button,input,select,textarea{font-family:inherit}
