.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url("./media/layers-55W3Q4RM.png");width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url("./media/layers-2x-TBM42ERR.png");background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url("./media/marker-icon-2V3QKKVC.png")}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-moz-box-sizing:border-box;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}:root{--primary: #6C63FF;--primary-hover: #5A52E0;--primary-active: #4B43CC;--primary-container: #7f7fff;--primary-fixed: #EFEEFF;--on-primary: #ffffff;--on-primary-container: #ffffff;--secondary: #4CAF50;--secondary-container: rgba(76, 175, 80, .12);--surface: #FFFFFF;--canvas: #F5F4FC;--primary-deep: #2E2786;--primary-soft: #D9D6FF;--surface-container-lowest: #ffffff;--surface-container-low: #ffffff;--surface-container: #F0EFF8;--surface-container-high: #E8E7F3;--surface-container-highest: #DEDCEC;--surface-variant: #E2E1EE;--surface-bright: #F8F7FD;--on-surface: #1E1E28;--on-surface-variant: #585768;--outline: #6C6A80;--outline-variant: #CBC9DB;--outline-hover: #A9A7C2;--success: #2E7D32;--success-container: #EAF5EB;--warning: #8F5600;--rating: #F5B301;--warning-container: #FFF4E0;--error: #BA1A1A;--error-container: #FDECEC;--info: #1A5CC4;--info-container: #EBF2FE;--shadow-sm: 0 1px 2px rgb(20 20 40 / .05);--shadow-md: 0 1px 2px rgb(20 20 40 / .04), 0 4px 12px -2px rgb(20 20 40 / .08);--shadow-lg: var(--shadow-pop);--shadow-pop: 0 0 0 1px rgb(20 20 40 / .05), 0 8px 24px -6px rgb(20 20 40 / .14);--ring: 0 0 0 3px rgb(108 99 255 / .22);--ring-error: 0 0 0 3px rgb(186 26 26 / .16);--scrim: rgb(20 20 40 / .4);--font-base: "Geist", system-ui, -apple-system, "Segoe UI", sans-serif;--text-xs: 12px;--text-sm: 13px;--text-base: 14px;--text-md: 15px;--text-lg: 18px;--text-xl: 22px;--text-2xl: 28px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-pill: 999px;--ease-out: cubic-bezier(.2, .8, .2, 1);--dur-fast: .12s;--dur: .18s;--dur-slow: .26s;--table-header-bg: var(--surface-bright);--table-row-hover: var(--surface-bright);--table-border: var(--surface-variant)}*,*:before,*:after{box-sizing:border-box}body{font-family:var(--font-base);font-size:var(--text-base);line-height:1.5;font-feature-settings:"kern","liga","calt";background-color:var(--canvas);color:var(--on-surface);margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}button,input,select,textarea{font-family:inherit}h1,h2,h3,h4{font-weight:600;letter-spacing:-.02em}table{font-variant-numeric:tabular-nums}.page-shell{min-height:100vh;background-color:var(--canvas);padding-top:var(--space-4);font-family:var(--font-base);color:var(--on-surface)}.main-container{padding:var(--space-5) var(--space-5) var(--space-6);max-width:1200px;margin:0 auto}.main-container.wide{max-width:1440px}.header{margin-bottom:var(--space-5);padding:var(--space-5) var(--space-6);background-color:var(--primary-fixed);border:1px solid var(--primary-soft);border-radius:var(--radius-xl)}.header .header-row{margin-bottom:0}.header h1{font-size:var(--text-2xl);font-weight:600;line-height:1.2;margin:0 0 var(--space-1) 0;letter-spacing:-.02em;color:var(--primary-deep)}.header.hero{background-color:var(--primary-deep);border-color:var(--primary-deep)}.header.hero h1,.header.hero p{color:var(--on-primary)}@media (max-width: 768px){.header{padding:var(--space-4)}}.header p{font-size:var(--text-md);color:var(--on-surface-variant);margin:0}.header-row{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-5)}@media (max-width: 768px){.header-row{flex-direction:column;align-items:stretch}}.section-card{background-color:var(--surface-container-lowest);border-radius:var(--radius-lg);border:1px solid var(--surface-variant);overflow:hidden}.section-padding{padding:var(--space-5)}.section-header{border-bottom:1px solid var(--surface-variant);padding:var(--space-4) var(--space-5);background-color:var(--surface-container-lowest);display:flex;justify-content:space-between;align-items:center;gap:var(--space-3)}.section-title{font-size:var(--text-lg);font-weight:600;margin:0;letter-spacing:-.01em}.section-body{padding:var(--space-5)}.btn{font-family:var(--font-base);font-size:var(--text-base);font-weight:500;line-height:20px;min-height:36px;padding:7px 14px;gap:6px;border-radius:var(--radius-md);cursor:pointer;border:1px solid transparent;white-space:nowrap;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);appearance:none;-webkit-appearance:none;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.btn:not(:disabled):active{transform:scale(.98)}.btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background-color:var(--primary-hover);color:var(--on-primary);box-shadow:inset 0 1px #ffffff29,0 1px 2px #1414281f}.btn-primary:hover{background-color:var(--primary-active)}.btn-secondary{color:var(--on-surface);background-color:var(--surface-container-lowest);border-color:var(--outline-variant);box-shadow:var(--shadow-sm)}.btn-secondary:hover{background-color:var(--surface-bright);border-color:var(--outline-hover)}.btn-ghost{color:var(--on-surface-variant);background-color:transparent}.btn-ghost:hover{color:var(--on-surface);background-color:var(--surface-container)}.btn-danger{background-color:var(--error);color:var(--on-primary);box-shadow:inset 0 1px #ffffff24,0 1px 2px #1414281f}.btn-danger:hover{background-color:color-mix(in srgb,var(--error) 86%,black)}.btn-danger-ghost{color:var(--error);background-color:transparent}.btn-danger-ghost:hover{background-color:var(--error-container)}.btn-sm{min-height:30px;padding:4px 10px;font-size:var(--text-sm);border-radius:var(--radius-sm)}.input-field{width:100%;min-height:36px;background-color:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-md);padding:7px 12px;font-family:var(--font-base);font-size:var(--text-base);line-height:20px;color:var(--on-surface);box-sizing:border-box;transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.input-field::placeholder{color:var(--outline)}.input-field:hover{border-color:var(--outline-hover)}.input-field:focus{outline:none;border-color:var(--primary);box-shadow:var(--ring)}.input-field:disabled{background-color:var(--surface-bright);border-color:var(--outline-variant);color:var(--outline);cursor:not-allowed}.password-field{position:relative;display:block}.password-field .input-field{padding-right:40px}.password-toggle{position:absolute;top:50%;right:4px;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:32px;height:28px;padding:0;border:none;border-radius:var(--radius-md);background:transparent;color:var(--on-surface-variant);cursor:pointer}.password-toggle:hover{color:var(--on-surface)}.password-toggle:focus-visible{outline:none;box-shadow:var(--ring)}select.input-field{appearance:none;padding-right:32px;background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%236b6b76%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpolyline%20points%3D%226%209%2012%2015%2018%209%22%2F%3E%3C%2Fsvg%3E);background-repeat:no-repeat;background-position:right 10px center;background-size:16px 16px}.form-group{margin-bottom:var(--space-5)}.form-group:last-child{margin-bottom:0}label.block-label{display:block;font-size:var(--text-sm);font-weight:500;color:var(--on-surface);margin-bottom:6px}.filter-row{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;margin-bottom:var(--space-5)}.filter-row .input-field,.filter-row select.input-field,.filter-row app-multi-select{min-width:200px;flex:1 1 200px;max-width:320px}.status-pill{display:inline-flex;align-items:center;font-size:var(--text-xs);line-height:18px;padding:1px 8px;border-radius:var(--radius-pill);font-weight:500;background-color:var(--success-container);color:var(--success);box-shadow:inset 0 0 0 1px color-mix(in srgb,currentColor 18%,transparent);white-space:nowrap}.status-pill.allocated{background-color:var(--warning-container);color:var(--warning)}.status-pill.inactive{background-color:var(--error-container);color:var(--error)}.status-pill.available-for-projects{background-color:var(--success-container);color:var(--success)}.chip{display:inline-flex;align-items:center;gap:6px;background-color:var(--surface-container);color:var(--on-surface);border-radius:var(--radius-pill);padding:2px 10px;font-size:var(--text-sm);font-weight:500}.chip-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.modal-backdrop{position:fixed;inset:0;background:var(--scrim);display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-4);animation:fadeIn var(--dur) var(--ease-out)}.modal{background-color:var(--surface-container-lowest);border-radius:var(--radius-xl);box-shadow:var(--shadow-pop);width:100%;max-width:600px;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;animation:popIn var(--dur-slow) var(--ease-out)}.modal--sm{max-width:420px}.modal--lg{max-width:820px}.modal-header-block{padding:var(--space-5) var(--space-5) var(--space-4);border-bottom:1px solid var(--surface-variant)}.modal-header-block h2{margin:0;font-size:var(--text-lg);font-weight:600;color:var(--on-surface)}.modal-body-block{padding:var(--space-5);overflow-y:auto;flex:1}.modal-footer-block{padding:var(--space-4) var(--space-5) var(--space-5);border-top:1px solid var(--surface-variant);display:flex;justify-content:flex-end;gap:var(--space-2)}.modal.confirmation-modal{width:auto;max-width:400px;text-align:center}.confirmation-modal-header{padding:28px 32px 16px}.confirmation-heading{margin:0;font-size:var(--text-lg);font-weight:600;color:var(--on-surface)}.confirmation-modal-body{padding:var(--space-2) var(--space-6) var(--space-5)}.confirmation-label{font-size:var(--text-base);line-height:1.5;color:var(--on-surface-variant);margin:0}.confirmation-modal-actions{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4) var(--space-6);border-top:1px solid var(--surface-variant);gap:var(--space-3)}.loading{display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);color:var(--on-surface-variant);padding:var(--space-6) 0}.loading:before{content:"";display:inline-block;flex-shrink:0;width:14px;height:14px;margin-right:10px;vertical-align:-2px;border:2px solid var(--surface-container-highest);border-top-color:var(--primary);border-radius:50%;animation:canvas-spin .7s linear infinite}.empty-state{text-align:center;padding:var(--space-7) var(--space-5);font-size:var(--text-sm);color:var(--on-surface-variant)}.empty-state .empty-title{margin:0 0 var(--space-1);font-size:var(--text-base);font-weight:500;color:var(--on-surface)}.empty-state p{margin:0}.empty-state .btn{margin-top:var(--space-4)}.empty-text{font-size:var(--text-sm);color:var(--outline)}.skeleton{display:block;background:linear-gradient(90deg,var(--surface-container) 25%,var(--surface-container-high) 50%,var(--surface-container) 75%);background-size:200% 100%;border-radius:var(--radius-sm);animation:canvas-shimmer 1.4s ease-in-out infinite}.skeleton-line{height:12px;width:100%}.skeleton-line.short{width:45%}.skeleton-line.tall{height:26px;width:65%}.skeleton-block{height:180px;border-radius:var(--radius-md)}.skeleton-card{height:220px;border-radius:var(--radius-lg)}.error-text{font-size:var(--text-sm);color:var(--error);margin:var(--space-2) 0}.info-text{font-size:var(--text-sm);color:var(--on-surface-variant);margin:var(--space-2) 0}.divider{height:1px;background-color:var(--surface-variant);border:none;margin:var(--space-4) 0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}@keyframes canvas-pop-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes canvas-rise-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes canvas-fade-out{0%{opacity:1}to{opacity:0}}@keyframes canvas-spin{to{transform:rotate(360deg)}}@keyframes canvas-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}::view-transition-old(root){animation:canvas-fade-out var(--dur) var(--ease-out) both}::view-transition-new(root){animation:canvas-rise-in var(--dur) var(--ease-out) both}::view-transition-old(navbar){display:none}::view-transition-new(navbar){animation:none}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}.nav-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.leaflet-container img{max-width:none!important}.leaflet-container{z-index:1}.leaflet-control-container{z-index:400!important;position:absolute}.map-wrapper{width:100%;padding-bottom:60px}.map-container{position:relative;width:100%;height:500px;border-radius:12px;overflow:hidden}.map{width:100%;height:100%}.map-toggle-btn{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:800;padding:6px 14px;border-radius:var(--radius-pill);background:#ffffffeb;border:1px solid var(--surface-variant);font-size:var(--text-sm);font-weight:500;color:var(--on-surface);box-shadow:var(--shadow-pop);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.map-toggle-btn:hover{background:var(--surface-container-lowest);border-color:var(--outline-variant)}.animal-marker{width:54px;height:54px;background:var(--primary-hover);border:2px solid var(--surface-container-lowest);border-radius:50%;display:flex;align-items:center;justify-content:center;position:relative;box-shadow:var(--shadow-pop);transition:transform var(--dur-fast) var(--ease-out);animation:markerFloatIn var(--dur-slow) var(--ease-out)}.animal-marker img{width:32px;height:32px;object-fit:contain;filter:brightness(0) invert(1)}@keyframes markerFloatIn{0%{opacity:0;transform:translateY(6px) scale(.9)}}.animal-count{position:absolute;bottom:-4px;right:-4px;min-width:18px;height:18px;padding:0 4px;display:flex;align-items:center;justify-content:center;background:var(--primary-deep);color:var(--on-primary);border:2px solid var(--surface-container-lowest);border-radius:50%;font-size:10px;font-weight:700;line-height:1}.animal-photo-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:var(--primary-hover)}th.sortable-th{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th.sortable-th:after{content:"";display:inline-block;margin-left:6px;width:0;height:0;vertical-align:middle;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:5px solid var(--outline);opacity:.35}th.sortable-th.sorted-asc:after{opacity:1;border-bottom-color:var(--primary);border-top:none}th.sortable-th.sorted-desc:after{opacity:1;border-bottom:none;border-top:5px solid var(--primary)}th.sortable-th:hover{color:var(--primary-hover)}.table-wrapper{width:100%;overflow-x:auto;border:1px solid var(--table-border);border-radius:var(--radius-lg);background-color:var(--surface-container-lowest)}.section-card>.table-wrapper{border:0;border-radius:0}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-base);font-variant-numeric:tabular-nums}.data-table thead th{text-align:left;font-size:var(--text-xs);font-weight:500;color:var(--on-surface-variant);background-color:var(--table-header-bg);padding:10px var(--space-4);border-bottom:1px solid var(--table-border);white-space:nowrap}.data-table tbody td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--table-border);color:var(--on-surface);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr{transition:background-color var(--dur-fast) var(--ease-out)}.data-table tbody tr:hover{background-color:var(--table-row-hover)}.data-table .cell-actions .btn+.btn{margin-left:2px}.data-table .cell-actions{text-align:right;white-space:nowrap}.data-table .cell-numeric{text-align:right;font-variant-numeric:tabular-nums}.table-empty{padding:var(--space-6);text-align:center;color:var(--on-surface-variant)}.auth-page{position:fixed;inset:0;display:grid;grid-template-rows:132px 1fr}@media (min-width: 900px){.auth-page{grid-template-rows:auto;grid-template-columns:55fr 45fr}}.auth-visual{position:relative;display:flex;flex-direction:column;justify-content:flex-end;padding:var(--space-4) var(--space-5);overflow:hidden;background:url(/Elephant_.jpg) no-repeat center center/cover}.auth-visual:before{content:"";position:absolute;inset:0;background:linear-gradient(to top,#0c101cd9,#0c101c4d 60%,#0c101c40)}.auth-brand{position:relative;color:var(--on-primary)}.auth-brand h1{margin:0 0 var(--space-2);font-size:clamp(22px,3.4vw,40px);font-weight:600;line-height:1.1;letter-spacing:-.02em}.auth-brand p{margin:0;max-width:34ch;font-size:var(--text-md);line-height:1.5;color:#ffffffdb}.auth-panel{display:flex;overflow-y:auto;padding:var(--space-6);background:var(--surface-container-lowest)}.auth-logo{display:block;width:128px;height:auto;margin-bottom:var(--space-6)}@media (min-width: 900px){.auth-visual{padding:var(--space-7)}.auth-panel{padding:var(--space-7) var(--space-6)}}@media (max-width: 899px) and (max-height: 640px){.auth-page{grid-template-rows:1fr}.auth-visual{display:none}}@media (max-width: 479px){.auth-brand p{display:none}.auth-visual{padding:var(--space-4)}.auth-panel{padding:var(--space-6) var(--space-4)}.auth-logo{margin-bottom:var(--space-5)}}.auth-card{margin:auto;width:100%;max-width:380px;color:var(--on-surface);animation:canvas-rise-in var(--dur-slow) var(--ease-out)}.auth-card:has(>app-onboarding-stepper){max-width:420px;animation:none}.auth-card:has(>app-onboarding-stepper)>*{animation:canvas-rise-in var(--dur-slow) var(--ease-out) backwards}.auth-card:has(>app-onboarding-stepper)>:nth-child(2){animation-delay:40ms}.auth-card:has(>app-onboarding-stepper)>:nth-child(3){animation-delay:80ms}.auth-card:has(>app-onboarding-stepper)>:nth-child(4){animation-delay:.11s}.auth-card:has(>app-onboarding-stepper)>:nth-child(n+5){animation-delay:.14s}@media (max-width: 479px){.auth-card{margin-top:0}}.auth-card--wide{container-type:inline-size;max-width:560px}.auth-card h2{margin:0 0 var(--space-2);font-size:var(--text-2xl);font-weight:600;line-height:1.2;letter-spacing:-.02em}.auth-alt-text{margin:0 0 var(--space-5);line-height:1.5;color:var(--on-surface-variant)}.auth-card a{color:var(--primary-hover);font-weight:500;text-decoration:none}.auth-card a:hover{color:var(--primary-hover);text-decoration:underline}.auth-card .info-text{margin:0 0 var(--space-4);color:var(--on-surface-variant)}.auth-card .error-text{margin:0 0 var(--space-4)}.auth-card .field-error{display:block;margin:var(--space-1) 0 0;font-size:var(--text-sm);color:var(--error)}.auth-card .form-group{margin-bottom:var(--space-4)}.auth-card .is-invalid,.auth-card .is-invalid:hover,.auth-card .is-invalid:focus{border-color:var(--error)}.auth-card .is-invalid:focus{box-shadow:var(--ring-error)}.auth-forgot{display:block;margin-bottom:var(--space-5);font-size:var(--text-sm)}.auth-card .btn:not(.modal *){width:100%;min-height:40px}.auth-card .btn:not(.modal *)+.btn{margin-top:var(--space-2)}@container (min-width: 520px){.auth-form-split{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--space-4);align-items:start}.auth-form-split>.auth-span-full,.auth-form-split>button{grid-column:1 / -1}}.content-layout{display:flex;align-items:flex-start;gap:var(--space-6)}.card-grid{flex:1;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-content:flex-start;gap:var(--space-5)}.legend-panel{width:var(--legend-width, 380px);flex-shrink:0;position:sticky;top:calc(70px + var(--space-5));padding:var(--space-5);background-color:var(--surface-container-lowest);border:1px solid var(--surface-variant);border-radius:var(--radius-lg);transition:width var(--dur-slow) var(--ease-out),padding var(--dur-slow) var(--ease-out)}.legend-panel.collapsed{width:140px;padding:var(--space-4)}.legend-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-2);padding-bottom:var(--space-4);margin-bottom:var(--space-4);border-bottom:1px solid var(--surface-variant)}.legend-panel.collapsed .legend-header{align-items:center;padding-bottom:0;margin-bottom:0;border-bottom:none}.legend-title{margin:0 0 var(--space-1);font-size:var(--text-md);font-weight:600;color:var(--on-surface)}.legend-desc{margin:0;font-size:var(--text-sm);color:var(--on-surface-variant)}.expand-btn{display:flex;align-items:center;justify-content:center;padding:var(--space-1);background:transparent;border:none;border-radius:var(--radius-md);color:var(--on-surface-variant);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.expand-btn:hover{background-color:var(--surface-container);color:var(--on-surface)}.legend-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2);max-height:600px;overflow-y:auto;overflow-x:hidden}.legend-item{display:flex;align-items:center;gap:var(--space-3);min-width:0;padding:var(--space-2) var(--space-3);border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.legend-item:hover{background-color:var(--surface-bright)}.legend-item.active-legend{background-color:var(--primary-fixed);border-color:var(--primary)}.legend-color{width:14px;height:14px;flex-shrink:0;border-radius:var(--radius-sm)}.legend-name{flex:1;font-size:var(--text-base);font-weight:500;color:var(--on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.legend-count{flex-shrink:0;padding:2px var(--space-2);background-color:var(--surface-container);border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:500;color:var(--on-surface-variant)}@media (max-width: 1024px){.content-layout{flex-direction:column}.legend-panel,.legend-panel.collapsed{width:100%;position:static}}.dashboard-layout{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:var(--space-5);max-width:1800px;margin:0 auto;padding:var(--space-5) var(--space-5) var(--space-6)}.dashboard-layout.with-filters{grid-template-columns:260px minmax(0,1fr) auto}.dashboard-layout>.header{grid-column:1 / -1;margin-bottom:0}.dashboard-layout>.header .header-row{margin-bottom:0}.main-content-area{min-width:0}.filter-sidebar,.map-sidebar,.widget-sidebar{align-self:start;position:sticky;top:calc(70px + var(--space-5))}.map-sidebar,.widget-sidebar{width:380px;z-index:10}.filter-sidebar,.map-panel,.widget-panel{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-5);background-color:var(--surface-container-lowest);border:1px solid var(--surface-variant);border-radius:var(--radius-lg)}.filter-header,.map-panel-header,.widget-panel-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);padding-bottom:var(--space-4);border-bottom:1px solid var(--surface-variant)}.filter-header h3,.map-panel-header h3,.widget-panel-header h3{margin:0;font-size:var(--text-md);font-weight:600;color:var(--on-surface)}.filter-section h4{margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:500;color:var(--on-surface-variant)}@media (max-width: 1023px){.dashboard-layout,.dashboard-layout.with-filters{grid-template-columns:minmax(0,1fr)}.filter-sidebar,.map-sidebar,.widget-sidebar{width:auto;position:static}}.map-panel .map-wrapper{width:100%;height:400px;padding-bottom:0;border-radius:var(--radius-md);overflow:hidden}.animal-page .filter-count{margin-left:var(--space-1);display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 var(--space-1);background-color:var(--primary-hover);border-radius:var(--radius-pill);font-size:11px;font-weight:600;line-height:1;color:var(--on-primary)}.animal-page{display:block}.animal-page .btn-icon{width:16px;height:16px;margin-right:var(--space-1)}.animal-page .card-grid>.empty-state{grid-column:1 / -1}.animal-page .pagination{display:flex;justify-content:flex-end;align-items:center;gap:var(--space-3);margin-top:var(--space-5)}.animal-page .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3) var(--space-5)}.animal-page .full-width{grid-column:1 / -1}.animal-page .notes-input{min-height:60px;resize:vertical}.animal-page .upload-row{display:flex;align-items:center;gap:var(--space-4);margin-top:var(--space-2)}.animal-page .selected-file-name{flex:1;min-width:0;font-size:13px;color:var(--on-surface-variant);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.animal-page .custom-file-upload{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:var(--space-2) var(--space-4);background-color:var(--primary-hover);border-radius:var(--radius-md);font-size:13px;font-weight:500;color:var(--on-primary);cursor:pointer;transition:background-color .15s}.animal-page .custom-file-upload:hover{background-color:var(--primary-hover)}.animal-page .custom-file-upload input[type=file]{display:none}.animal-page .current-image-wrapper{width:200px;height:130px;border-radius:var(--radius-md);overflow:hidden;background-color:var(--surface-container)}.animal-page .current-image{width:100%;height:100%;object-fit:cover}.animal-details-image-wrapper{width:100%;height:240px;margin-bottom:var(--space-4);border-radius:var(--radius-lg);overflow:hidden;background-color:var(--surface-container)}.animal-details-image{width:100%;height:100%;object-fit:cover}.animal-details-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3) var(--space-4);font-size:var(--text-base);color:var(--on-surface)}.animal-details-grid p{margin:0;padding:var(--space-3) 0;border-bottom:1px solid var(--surface-variant)}.animal-details-grid p:last-child{border-bottom:none}.animal-details-grid strong{font-weight:500;color:var(--on-surface-variant)}.animal-notes-title,.animal-notes{grid-column:1 / -1}.animal-notes{margin-top:var(--space-2);padding:var(--space-3);background-color:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:var(--radius-md);font-size:13px}@media (max-width: 768px){.animal-page .form-grid,.animal-details-grid{grid-template-columns:1fr}.animal-page .nav-actions{flex-direction:column;align-items:stretch}}.animal-card{position:relative;display:flex;flex-direction:column;background-color:var(--surface-container-lowest);border:1px solid var(--surface-variant);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;transition:border-color var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out)}.animal-card:hover{border-color:var(--outline-hover);box-shadow:var(--shadow-sm)}.animal-card:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.animal-card .card-header{position:relative;z-index:2;display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);padding:var(--space-5) var(--space-5) var(--space-3);background-color:var(--surface-container-lowest)}.animal-card .card-header h3{min-width:0;margin:0;overflow-wrap:anywhere;font-size:var(--text-md);font-weight:600;line-height:1.3;letter-spacing:-.01em;color:var(--on-surface)}.animal-card .status-pill{flex-shrink:0}.card-body-content{position:relative;flex:1;min-height:120px;padding:0 var(--space-5) var(--space-5)}.animal-info{display:flex;flex-direction:column;gap:var(--space-2);font-size:14px;line-height:1.4;color:var(--on-surface)}.animal-info p{margin:0}.animal-info strong{font-weight:500;color:var(--on-surface-variant)}.animal-card .card-footer{position:relative;z-index:2;display:flex;justify-content:flex-end;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background-color:var(--surface-container-lowest);border-top:1px solid var(--surface-variant)}.card-image-overlay{position:absolute;inset:0;z-index:1;background-color:var(--surface-container-lowest);opacity:0;transition:opacity var(--dur-slow) var(--ease-out)}.card-image-overlay img{width:100%;height:100%;object-fit:cover}.animal-card.has-photo:hover .card-image-overlay{opacity:1}.subnav-tabs{display:flex;gap:2px;width:fit-content;max-width:100%;overflow-x:auto;margin-inline:auto;padding:3px;background:var(--surface-container);border-radius:10px}.subnav-tab{padding:5px 14px;background:transparent;border:none;border-radius:7px;font-family:var(--font-base);font-size:var(--text-sm);font-weight:500;line-height:20px;color:var(--on-surface-variant);text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.subnav-tab:hover{color:var(--on-surface)}.subnav-tab.active{background-color:var(--surface-container-lowest);color:var(--primary-hover);box-shadow:0 0 0 1px #1414280d,0 1px 3px #1414281a}.subnav-tab:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.pill{padding:3px var(--space-3);background-color:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-pill);font-family:var(--font-base);font-size:var(--text-sm);font-weight:500;color:var(--on-surface-variant);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.pill:hover{color:var(--on-surface);border-color:var(--outline-hover)}.pill.active{background-color:var(--primary-fixed);border-color:color-mix(in srgb,var(--primary) 35%,transparent);color:var(--primary-hover)}.pill:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.drag-drop-zone{display:flex;align-items:center;justify-content:center;width:100%;padding:var(--space-6) var(--space-5);background-color:var(--surface-container-lowest);border:1px dashed var(--outline-variant);border-radius:var(--radius-lg);text-align:center;cursor:pointer;transition:border-color var(--dur) var(--ease-out),background-color var(--dur) var(--ease-out)}.drag-drop-zone:hover,.drag-drop-zone.dragover{background-color:var(--primary-fixed);border-color:var(--primary)}.hidden-file-input{display:none}.drag-drop-content{display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.upload-icon{width:40px;height:40px;color:var(--primary-hover)}.upload-text{margin:0;font-size:14px;color:var(--on-surface)}.upload-text strong{color:var(--primary-hover)}.upload-hint{margin:0;font-size:12px;color:var(--on-surface-variant)}.file-name{margin:var(--space-2) 0 0;padding:var(--space-1) var(--space-3);background-color:var(--primary-fixed);border-radius:999px;font-size:13px;font-weight:500;color:var(--primary-hover);word-break:break-all}.cropper-section{max-width:632px;padding:var(--space-4);background-color:var(--surface-bright);border:1px solid var(--outline-variant);border-radius:var(--radius-lg)}.canvas-wrapper{background-color:var(--surface-container-high);border:1px dashed var(--primary);border-radius:var(--radius-md);overflow:hidden;cursor:grab}.canvas-wrapper:active{cursor:grabbing}.crop-controls{display:flex;align-items:center;gap:var(--space-4);margin-top:var(--space-4)}.crop-controls input[type=range]{flex:1;accent-color:var(--primary)}.existing-image img,.cropped-preview img{display:block;max-width:600px;border:1px solid var(--outline-variant);border-radius:var(--radius-md)}.existing-image img{height:250px;object-fit:cover;margin-top:var(--space-2)}.cropped-preview img{box-shadow:var(--shadow-sm)}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4)}.kpi-card{display:flex;flex-direction:column;gap:var(--space-1);min-width:0;padding:var(--space-4) var(--space-5);background-color:var(--surface-container-lowest);border:1px solid var(--surface-variant);border-radius:var(--radius-lg)}.kpi-label{font-size:var(--text-xs);font-weight:500;color:var(--on-surface-variant)}.kpi-value{font-size:var(--text-xl);font-weight:700;line-height:1.2;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--primary-deep)}.kpi-meta{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);font-size:var(--text-sm);color:var(--on-surface-variant)}.kpi-delta{display:inline-flex;align-items:center;gap:2px;padding:0 6px;border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:500;line-height:18px;font-variant-numeric:tabular-nums;background-color:var(--surface-container);color:var(--on-surface-variant)}.kpi-delta.up{background-color:var(--success-container);color:var(--success)}.kpi-delta.down{background-color:var(--error-container);color:var(--error)}.kpi-delta.flat{background-color:var(--surface-container);color:var(--on-surface-variant)}.kpi-delta.warn{background-color:var(--warning-container);color:var(--warning)}.field-hint{margin:var(--space-1) 0 0;font-size:var(--text-xs);color:var(--on-surface-variant)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.data-table tfoot td{padding:var(--space-3) var(--space-4);background-color:var(--surface-bright);border-top:1px solid var(--surface-variant);font-weight:600}.kpi-spark{height:40px;margin-top:var(--space-2)}.chart-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:var(--space-4)}@media (max-width: 720px){.chart-grid{grid-template-columns:1fr}}.chart-card{min-width:0;background-color:var(--surface-container-lowest);border:1px solid var(--surface-variant);border-radius:var(--radius-lg);overflow:hidden;animation:canvas-rise-in var(--dur-slow) var(--ease-out)}.chart-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5) 0}.chart-card-title{margin:0;font-size:var(--text-md);font-weight:600;letter-spacing:-.01em;color:var(--on-surface)}.chart-card-sub{margin:2px 0 0;font-size:var(--text-sm);color:var(--on-surface-variant)}.chart-card-body{padding:var(--space-4) var(--space-5) var(--space-5)}.chart-swap{animation:fadeIn var(--dur) var(--ease-out)}.dropdown-menu{position:absolute;z-index:50;min-width:180px;padding:var(--space-1);background-color:var(--surface-container-lowest);border:1px solid var(--surface-variant);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);animation:canvas-pop-in .16s var(--ease-out)}.dropdown-item{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);border:none;border-radius:var(--radius-sm);background:none;font:inherit;font-size:var(--text-sm);color:var(--on-surface);text-align:left;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.dropdown-item:hover,.dropdown-item:focus-visible{background-color:var(--surface-container);outline:none}.dropdown-item:disabled{color:var(--outline);cursor:default;background:none}.dropdown-item.danger{color:var(--error)}.dropdown-item.danger:hover,.dropdown-item.danger:focus-visible{background-color:var(--error-container)}.back-link{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2) var(--space-1) var(--space-1);margin-left:calc(-1 * var(--space-1));border:none;border-radius:var(--radius-sm);background:none;font:inherit;font-size:var(--text-sm);font-weight:500;color:var(--on-surface-variant);text-decoration:none;cursor:pointer;transition:color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.back-link:hover{color:var(--on-surface);background-color:var(--surface-container)}.back-link svg{flex-shrink:0}.field-error{display:block;margin-top:var(--space-1);font-size:var(--text-xs);color:var(--error)}.input-field.invalid,.input-field.invalid:hover{border-color:var(--error)}.input-field.invalid:focus{border-color:var(--error);box-shadow:var(--ring-error)}.status-pill.info{background-color:var(--info-container);color:var(--info)}.status-pill.neutral{background-color:var(--surface-container);color:var(--on-surface-variant)}.status-pill.warning{background-color:var(--warning-container);color:var(--warning)}.status-pill.error{background-color:var(--error-container);color:var(--error)}.status-pill.planned{background-color:var(--surface-container);color:var(--on-surface-variant)}.status-pill.on-hold{background-color:var(--warning-container);color:var(--warning)}.status-pill.completed{background-color:var(--primary-fixed);color:var(--primary-hover)}.status-pill.cancelled,.status-pill.overdue{background-color:var(--error-container);color:var(--error)}.stepper{display:flex;align-items:center;gap:var(--space-2);overflow-x:auto;padding-bottom:var(--space-1);scrollbar-width:thin}.stepper-step{display:inline-flex;align-items:center;gap:var(--space-2);flex-shrink:0;padding:var(--space-1) var(--space-2) var(--space-1) var(--space-1);border:none;border-radius:var(--radius-md);background:none;font:inherit;font-size:var(--text-sm);font-weight:500;color:var(--on-surface-variant);white-space:nowrap;transition:color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}button.stepper-step{cursor:pointer}button.stepper-step:hover:not(:disabled,.active,.error){color:var(--on-surface)}.stepper-step:focus-visible{outline:none;box-shadow:var(--ring)}.stepper-step:disabled{cursor:default}.stepper-index{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:24px;height:24px;border-radius:50%;font-size:var(--text-xs);font-weight:600;font-variant-numeric:tabular-nums;background-color:var(--surface-container);color:var(--on-surface-variant);transition:background-color var(--dur) var(--ease-out),color var(--dur) var(--ease-out)}.stepper-step.active{color:var(--primary-hover)}.stepper-step.active .stepper-index{background-color:var(--primary-hover);color:var(--on-primary)}.stepper-step.complete .stepper-index{background-color:var(--success-container);color:var(--success)}.stepper-step.error{color:var(--error)}.stepper-step.error .stepper-index{background-color:var(--error-container);color:var(--error)}.stepper-line{flex:1 1 0;min-width:16px;height:1px;background-color:var(--surface-variant)}.attention-list{list-style:none;margin:0;padding:0}.attention-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--surface-variant);transition:background-color var(--dur-fast) var(--ease-out)}.attention-item:last-child{border-bottom:none}.attention-item:hover{background-color:var(--surface-bright)}.attention-dot{flex-shrink:0;width:8px;height:8px;border-radius:50%;background-color:var(--warning)}.attention-dot.error{background-color:var(--error)}.attention-dot.info{background-color:var(--info)}.attention-dot.success{background-color:var(--success)}.attention-dot.neutral{background-color:var(--outline-variant)}.attention-body{flex:1 1 auto;min-width:0}.attention-title{font-size:var(--text-base);font-weight:500;color:var(--on-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attention-meta{font-size:var(--text-sm);color:var(--on-surface-variant)}.attention-action{flex-shrink:0}.data-table td a:not(.btn){color:var(--on-surface);font-weight:500;text-decoration:none;transition:color var(--dur-fast) var(--ease-out)}.data-table td a:not(.btn):hover{color:var(--primary-hover);text-decoration:underline}.inventory-content .header{padding:0;background:none;border:0;border-radius:0}input.switch{appearance:none;position:relative;flex-shrink:0;width:36px;height:20px;margin:0;border-radius:var(--radius-pill);background:var(--outline);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out)}input.switch:before{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--surface);box-shadow:var(--shadow-sm);transition:transform var(--dur-fast) var(--ease-out)}input.switch:checked{background:var(--primary-hover)}input.switch:checked:before{transform:translate(16px)}input.switch:focus-visible{outline:2px solid var(--primary);outline-offset:2px}input.switch:disabled{opacity:.5;cursor:not-allowed}
