.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{--fangstr-white: #ffffff;--fangstr-black: #0f1010;--fangstr-gray-050: #f1f4f7;--fangstr-gray-100: #e2e8ef;--fangstr-gray-200: #d3dbe4;--fangstr-gray-300: #c5ccd5;--fangstr-gray-400: #9ba0a7;--fangstr-gray-500: #7a7f84;--fangstr-gray-600: #5e6266;--fangstr-gray-700: #434648;--fangstr-gray-800: #252728;--fangstr-gray-900: #191a1b;--fangstr-blue-050: #eef5f6;--fangstr-blue-100: #dceaec;--fangstr-blue-200: #c9dee1;--fangstr-blue-300: #b4d1d6;--fangstr-blue-400: #72a9b2;--fangstr-blue-500: #3e8996;--fangstr-blue-600: #0d6b7b;--fangstr-blue-650: #006374;--fangstr-blue-700: #004d5a;--fangstr-blue-800: #002b33;--fangstr-blue-850: #00252b;--fangstr-blue-900: #001d22;--fangstr-blue-950: #001215;--fangstr-bright-blue-100: #acf3ff;--fangstr-bright-blue-200: #72ebff;--fangstr-bright-blue-300: #1fdeff;--fangstr-bright-blue-400: #00afcd;--fangstr-bright-blue-500: #008ba2;--fangstr-green-400: #57af9f;--fangstr-green-500: #148e78;--fangstr-green-700: #004f41;--fangstr-orange-300: #f7c18e;--fangstr-orange-400: #ee851f;--fangstr-orange-700: #6c3805;--fangstr-red-400: #db8896;--fangstr-red-500: #cd586b;--fangstr-red-700: #8c0e22;--fangstr-purple-400: #bd8cde;--fangstr-purple-500: #a461d1;--fangstr-chart-1: #0071a5;--fangstr-chart-2: #ee9c17;--fangstr-chart-3: #8e4f8f;--fangstr-chart-4: #388659;--fangstr-chart-5: #cf507c;--fangstr-chart-6: #f36a52;--fangstr-chart-7: #5e478f;--fangstr-primary: var(--fangstr-blue-900);--fangstr-secondary: var(--fangstr-blue-800);--fangstr-tertiary: var(--fangstr-blue-850);--fangstr-dialog-bg: var(--fangstr-blue-900);--fangstr-primary-contrast: var(--fangstr-gray-100);--fangstr-secondary-contrast: var(--fangstr-gray-100);--fangstr-tertiary-contrast: var(--fangstr-gray-100);--fangstr-attention: var(--fangstr-bright-blue-400);--fangstr-attention-light: var(--fangstr-bright-blue-300);--fangstr-attention-dark: var(--fangstr-bright-blue-500);--fangstr-attention-contrast: var(--fangstr-blue-800);--fangstr-success: var(--fangstr-green-500);--fangstr-warning: var(--fangstr-orange-400);--fangstr-danger: var(--fangstr-red-500);--fangstr-table-odd: var(--fangstr-blue-900);--fangstr-table-even: var(--fangstr-blue-850);--fangstr-table-divide: var(--fangstr-blue-850);--fangstr-menu-background: var(--fangstr-blue-800);--fangstr-menu-selected: var(--fangstr-blue-900);--fangstr-menu-hover: var(--fangstr-blue-700);--fangstr-menu-contrast: var(--fangstr-gray-100);--fangstr-light: var(--fangstr-gray-100);--fangstr-medium: var(--fangstr-gray-400);--fangstr-dark: var(--fangstr-black);--fangstr-disabled: var(--fangstr-gray-500);--fangstr-border: var(--fangstr-gray-700);--fangstr-high-contrast: var(--fangstr-white);--fangstr-space-1: 4px;--fangstr-space-2: 8px;--fangstr-space-3: 12px;--fangstr-space-4: 16px;--fangstr-space-5: 20px;--fangstr-space-6: 24px;--fangstr-space-8: 32px;--fangstr-space-12: 48px;--fangstr-radius: 5px;--fangstr-border-thin: 1px;--fangstr-border-thick: 2px;--app-canvas: var(--fangstr-blue-950);--app-chrome: var(--fangstr-blue-900);--app-surface: var(--fangstr-blue-900);--app-raised: var(--fangstr-blue-850);--app-overlay: var(--fangstr-blue-800);--app-hairline: var(--fangstr-blue-800);--app-hairline-strong: var(--fangstr-blue-700);--app-control-border: var(--fangstr-gray-700);--app-text: var(--fangstr-gray-100);--app-text-muted: var(--fangstr-gray-400);--app-text-subtle: var(--fangstr-gray-500);--app-accent: var(--fangstr-bright-blue-400);--app-accent-strong: var(--fangstr-bright-blue-300);--app-accent-tint: color-mix(in srgb, var(--fangstr-bright-blue-400) 12%, transparent);--app-row-hover: color-mix(in srgb, var(--fangstr-bright-blue-400) 5%, var(--fangstr-blue-900));--app-selected: color-mix(in srgb, var(--fangstr-bright-blue-400) 10%, var(--fangstr-blue-900));--app-focus-ring: 0 0 0 2px var(--fangstr-blue-950), 0 0 0 4px var(--fangstr-bright-blue-400);--app-shadow-overlay: 0 12px 32px color-mix(in srgb, var(--fangstr-black) 55%, transparent), 0 0 0 1px var(--fangstr-blue-700);--app-control-h: 30px;--app-control-h-sm: 24px;--app-row-h: 34px}@font-face{font-family:Inter;font-weight:100 900;font-style:normal;font-display:swap;src:url(/assets/fonts/InterVariable.woff2) format("woff2-variations")}@font-face{font-family:Inter;font-weight:100 900;font-style:italic;font-display:swap;src:url(/assets/fonts/InterVariable-Italic.woff2) format("woff2-variations")}@font-face{font-family:JetBrains Mono;font-weight:400;font-style:normal;font-display:swap;src:url(/assets/fonts/JetBrainsMono-Regular.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:700;font-style:normal;font-display:swap;src:url(/assets/fonts/JetBrainsMono-Bold.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:400;font-style:italic;font-display:swap;src:url(/assets/fonts/JetBrainsMono-Italic.woff2) format("woff2")}:root{--fangstr-font-sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--fangstr-font-mono: "JetBrains Mono", "Cascadia Code", Consolas, monospace}body{font-family:var(--fangstr-font-sans)}.fx-h1{font-size:32px;line-height:40px;font-weight:400}.fx-h1-bold{font-size:32px;line-height:40px;font-weight:600}.fx-h2{font-size:20px;line-height:24px;font-weight:500}.fx-h3{font-size:16px;line-height:24px;font-weight:500}.fx-h4{font-size:16px;line-height:24px;font-weight:600}.fx-subtitle{font-size:14px;line-height:20px;font-weight:600;letter-spacing:.02em}.fx-body{font-size:16px;line-height:20px;font-weight:400}.fx-body-bold{font-size:16px;line-height:20px;font-weight:600}.fx-body-14{font-size:14px;line-height:20px;font-weight:500}.fx-detail{font-size:12px;line-height:16px;font-weight:400}.fx-detail-bold{font-size:12px;line-height:16px;font-weight:600}.fx-label{font-size:12px;line-height:20px;font-weight:500;text-transform:uppercase}.data-mono{font-family:var(--fangstr-font-mono);font-variant-numeric:tabular-nums}:root{--shell-sidebar-width: 232px;--shell-sidebar-rail: 56px;--shell-topbar-height: 48px;--shell-statusbar-height: 26px}.health-pill{display:inline-flex;align-items:center;gap:6px;padding:0 var(--fangstr-space-2);border:var(--fangstr-border-thin) solid transparent;border-radius:4px;font-size:11px;font-weight:600;line-height:18px;white-space:nowrap}.health-pill:before{content:"";width:6px;height:6px;border-radius:50%;background-color:currentColor}.health-pill.health-normal-sea,.health-pill.health-normal-harbour{color:var(--fangstr-green-400);border-color:color-mix(in srgb,var(--fangstr-success) 40%,transparent);background-color:color-mix(in srgb,var(--fangstr-success) 14%,transparent)}.health-pill.health-coverage-gap,.health-pill.health-channel-fault{color:var(--fangstr-orange-300);border-color:color-mix(in srgb,var(--fangstr-warning) 40%,transparent);background-color:color-mix(in srgb,var(--fangstr-warning) 12%,transparent)}.health-pill.health-silent-failure{color:var(--fangstr-red-400);border-color:color-mix(in srgb,var(--fangstr-danger) 45%,transparent);background-color:color-mix(in srgb,var(--fangstr-danger) 16%,transparent)}.health-pill.health-unknown{color:var(--fangstr-gray-300);border-color:color-mix(in srgb,var(--fangstr-medium) 30%,transparent);background-color:color-mix(in srgb,var(--fangstr-medium) 10%,transparent)}.source-pill{display:inline-flex;align-items:center;padding:0 var(--fangstr-space-2);border:var(--fangstr-border-thin) solid var(--app-hairline-strong);border-radius:4px;font-size:11px;font-weight:500;line-height:18px;white-space:nowrap}.source-pill.source-rockfleet-fishery,.source-pill.source-rockfleet-gofish{color:var(--fangstr-gray-200);background-color:color-mix(in srgb,var(--fangstr-medium) 14%,transparent)}.source-pill.source-maritim-static{color:var(--fangstr-orange-300);border-color:color-mix(in srgb,var(--fangstr-warning) 35%,transparent);background-color:color-mix(in srgb,var(--fangstr-warning) 10%,transparent)}.source-pill.source-south-vms{color:var(--fangstr-purple-400);border-color:color-mix(in srgb,var(--fangstr-purple-500) 40%,transparent);background-color:color-mix(in srgb,var(--fangstr-purple-500) 12%,transparent)}.stat-card{position:relative;display:flex;flex-direction:column;gap:var(--fangstr-space-1);padding:var(--fangstr-space-4);background-color:var(--app-surface);border:var(--fangstr-border-thin) solid var(--app-hairline);border-radius:var(--fangstr-radius);color:var(--app-text);text-decoration:none;overflow:hidden;transition:background-color .1s ease,border-color .1s ease}.stat-card:before{content:"";position:absolute;inset:0 0 auto;height:2px;background-color:transparent}a.stat-card,button.stat-card{cursor:pointer}a.stat-card:hover,button.stat-card:hover{background-color:var(--app-row-hover);border-color:var(--app-hairline-strong)}.stat-card.urgent:before{background-color:var(--fangstr-danger)}.stat-card.warn:before{background-color:var(--fangstr-warning)}.stat-value{font-size:28px;font-weight:600;line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--app-text)}.stat-value.urgent{color:var(--fangstr-red-400)}.stat-value.warn{color:var(--fangstr-orange-300)}.stat-value.info{color:var(--app-accent-strong)}.stat-value.muted{color:var(--app-text-muted)}.stat-value.success{color:var(--fangstr-green-400)}.stat-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--app-text-muted)}.stat-sublabel{font-size:12px;color:var(--app-text-subtle);line-height:1.4}.op-page{position:relative;display:flex;flex-direction:column;height:100%;min-height:0;padding:var(--fangstr-space-5) var(--fangstr-space-6) var(--fangstr-space-4);box-sizing:border-box}.op-input,.op-select,.op-field>input,.op-field>select{height:var(--app-control-h);padding:0 var(--fangstr-space-3);border:var(--fangstr-border-thin) solid var(--app-control-border);border-radius:var(--fangstr-radius);background-color:var(--app-canvas);color:var(--app-text);font-family:inherit;font-size:13px;transition:border-color .1s ease,box-shadow .1s ease}.op-input::placeholder{color:var(--app-text-subtle)}.op-input:hover,.op-select:hover,.op-field>input:hover,.op-field>select:hover{border-color:var(--fangstr-gray-600)}.op-input:focus,.op-select:focus,.op-field>input:focus,.op-field>select:focus{outline:none;border-color:var(--app-accent);box-shadow:0 0 0 3px var(--app-accent-tint)}.op-search{width:280px}.op-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--fangstr-space-2);height:var(--app-control-h);padding:0 var(--fangstr-space-3);border:var(--fangstr-border-thin) solid var(--app-control-border);border-radius:var(--fangstr-radius);background-color:var(--app-raised);color:var(--app-text);font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;text-decoration:none;transition:background-color .1s ease,border-color .1s ease,color .1s ease}.op-btn:hover:not(:disabled){border-color:var(--fangstr-gray-600);background-color:var(--app-overlay)}.op-btn:active:not(:disabled){transform:translateY(.5px)}.op-btn:disabled{opacity:.5;cursor:not-allowed}.op-btn-primary{border-color:var(--app-accent);background-color:var(--app-accent);color:var(--fangstr-blue-950);font-weight:600}.op-btn-primary:hover:not(:disabled){border-color:var(--app-accent-strong);background-color:var(--app-accent-strong)}.op-btn-ghost{border-color:transparent;background-color:transparent;color:var(--app-text-muted)}.op-btn-ghost:hover:not(:disabled){border-color:var(--app-hairline-strong);background-color:var(--app-raised);color:var(--app-text)}.op-btn-danger{border-color:color-mix(in srgb,var(--fangstr-danger) 60%,transparent);background-color:transparent;color:var(--fangstr-red-400)}.op-btn-danger:hover:not(:disabled){border-color:var(--fangstr-danger);background-color:color-mix(in srgb,var(--fangstr-danger) 14%,transparent)}.op-btn-sm{height:var(--app-control-h-sm);padding:0 var(--fangstr-space-2);font-size:12px}.op-tabs{display:flex;gap:var(--fangstr-space-4);border-bottom:var(--fangstr-border-thin) solid var(--app-hairline);overflow-x:auto}.op-tab{position:relative;padding:var(--fangstr-space-2) 0 var(--fangstr-space-3);margin-bottom:-1px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--app-text-muted);font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap}.op-tab:hover{color:var(--app-text)}.op-tab.active{border-bottom-color:var(--app-accent);color:var(--app-text)}.op-chip{height:26px;padding:0 var(--fangstr-space-3);border:var(--fangstr-border-thin) solid var(--app-hairline-strong);border-radius:var(--fangstr-radius);background-color:transparent;color:var(--app-text-muted);font-family:inherit;font-size:12px;font-weight:500;cursor:pointer;transition:background-color .1s ease,color .1s ease,border-color .1s ease}.op-chip:hover{color:var(--app-text);background-color:var(--app-raised)}.op-chip.active{border-color:color-mix(in srgb,var(--app-accent) 60%,transparent);background-color:var(--app-accent-tint);color:var(--app-accent-strong)}.op-filters{display:flex;flex-wrap:wrap;align-items:center;gap:var(--fangstr-space-2) var(--fangstr-space-4);padding:var(--fangstr-space-3) 0}.op-meta{color:var(--app-text-subtle);font-size:12px;font-variant-numeric:tabular-nums}.op-meta.warn{color:var(--fangstr-warning)}.op-field-inline{display:flex;align-items:center;gap:var(--fangstr-space-2);color:var(--app-text-muted);font-size:12px}.op-error,.op-notice{display:flex;gap:var(--fangstr-space-2);margin-bottom:var(--fangstr-space-3);padding:var(--fangstr-space-2) var(--fangstr-space-3);border:var(--fangstr-border-thin) solid color-mix(in srgb,var(--fangstr-danger) 45%,transparent);border-left:3px solid var(--fangstr-danger);border-radius:var(--fangstr-radius);background-color:color-mix(in srgb,var(--fangstr-danger) 8%,var(--app-surface));color:var(--fangstr-red-400);font-size:12.5px;line-height:18px}.op-notice{border-color:color-mix(in srgb,var(--fangstr-success) 45%,transparent);border-left-color:var(--fangstr-success);background-color:color-mix(in srgb,var(--fangstr-success) 8%,var(--app-surface));color:var(--fangstr-green-400)}.op-footnote{margin:var(--fangstr-space-3) 0 0;color:var(--app-text-subtle);font-size:12px}.op-table-wrap{flex:1 1 auto;min-height:0;overflow:auto;border:var(--fangstr-border-thin) solid var(--app-hairline);border-radius:var(--fangstr-radius);background-color:var(--app-surface)}.op-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.op-table thead th{position:sticky;top:0;z-index:1;height:32px;padding:0 var(--fangstr-space-3);text-align:left;background-color:var(--app-raised);border-bottom:var(--fangstr-border-thin) solid var(--app-hairline-strong);color:var(--app-text-muted);font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}.op-table tbody td{height:var(--app-row-h);padding:0 var(--fangstr-space-3);border-bottom:var(--fangstr-border-thin) solid var(--app-hairline);color:var(--app-text);white-space:nowrap}.op-table tbody tr:last-child td{border-bottom:0}.op-table tbody tr:hover td{background-color:var(--app-row-hover)}.op-table tbody tr.row-off td{opacity:.55}.op-table td.right,.op-table th.right{text-align:right}.op-num{text-align:right;font-variant-numeric:tabular-nums}.op-mono{font-family:var(--fangstr-font-mono);font-size:12.5px}.op-muted{color:var(--app-text-muted)}.op-empty{padding:var(--fangstr-space-12) var(--fangstr-space-8);text-align:center;color:var(--app-text-muted)}.op-clip{display:inline-block;max-width:32ch;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.op-link{color:var(--app-accent);text-decoration:none}.op-link:hover{color:var(--app-accent-strong);text-decoration:underline;text-underline-offset:2px}.op-link-btn{border:0;padding:0;background:transparent;color:var(--app-accent);font-family:var(--fangstr-font-mono);font-size:12.5px;cursor:pointer}.op-link-btn:hover{color:var(--app-accent-strong);text-decoration:underline;text-underline-offset:2px}.op-pill{display:inline-flex;align-items:center;gap:6px;padding:0 var(--fangstr-space-2);border:var(--fangstr-border-thin) solid color-mix(in srgb,var(--fangstr-medium) 30%,transparent);border-radius:4px;font-size:11px;font-weight:600;line-height:18px;background-color:color-mix(in srgb,var(--fangstr-medium) 10%,transparent);color:var(--fangstr-gray-300);white-space:nowrap}.op-pill:before{content:"";flex:0 0 auto;width:6px;height:6px;border-radius:50%;background-color:currentColor}.op-pill.good{border-color:color-mix(in srgb,var(--fangstr-success) 40%,transparent);background-color:color-mix(in srgb,var(--fangstr-success) 14%,transparent);color:var(--fangstr-green-400)}.op-pill.warn{border-color:color-mix(in srgb,var(--fangstr-warning) 40%,transparent);background-color:color-mix(in srgb,var(--fangstr-warning) 12%,transparent);color:var(--fangstr-orange-300)}.op-pill.bad{border-color:color-mix(in srgb,var(--fangstr-danger) 45%,transparent);background-color:color-mix(in srgb,var(--fangstr-danger) 14%,transparent);color:var(--fangstr-red-400)}.op-pill.info{border-color:color-mix(in srgb,var(--app-accent) 40%,transparent);background-color:var(--app-accent-tint);color:var(--app-accent-strong)}.op-panel{padding:var(--fangstr-space-4);margin-bottom:var(--fangstr-space-3);border:var(--fangstr-border-thin) solid var(--app-hairline);border-radius:var(--fangstr-radius);background-color:var(--app-surface)}.op-panel h2,.op-panel h3{margin:0 0 var(--fangstr-space-2);color:var(--app-text);font-size:14px;line-height:20px;font-weight:600}.op-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--fangstr-space-4);margin:calc(var(--fangstr-space-4) * -1) calc(var(--fangstr-space-4) * -1) var(--fangstr-space-4);padding:var(--fangstr-space-3) var(--fangstr-space-4);border-bottom:var(--fangstr-border-thin) solid var(--app-hairline);flex-wrap:wrap}.op-panel-head h2,.op-panel-head h3{margin:0}.op-grid{display:flex;flex-wrap:wrap;gap:var(--fangstr-space-4)}.op-field{display:flex;flex-direction:column;gap:6px;min-width:180px;flex:1 1 180px;font-size:12px;font-weight:500;color:var(--app-text-muted)}.op-field small{color:var(--app-text-subtle);font-size:11px;font-weight:400}.op-field small.bad{color:var(--fangstr-red-400)}.op-field.checkbox{flex-direction:row;align-items:center;flex:0 0 auto;min-width:0}.op-form-actions{display:flex;gap:var(--fangstr-space-2);margin-top:var(--fangstr-space-4);padding-top:var(--fangstr-space-3);border-top:var(--fangstr-border-thin) solid var(--app-hairline)}.op-kv{display:grid;grid-template-columns:max-content 1fr;gap:var(--fangstr-space-2) var(--fangstr-space-4);margin:0;font-size:13px}.op-kv dt{color:var(--app-text-muted)}.op-kv dd{margin:0;color:var(--app-text)}.op-code{margin:0;padding:var(--fangstr-space-3);max-height:220px;overflow:auto;border:var(--fangstr-border-thin) solid var(--app-hairline);border-radius:var(--fangstr-radius);background-color:var(--app-canvas);color:var(--fangstr-gray-200);font-family:var(--fangstr-font-mono);font-size:12px;line-height:18px}.op-code.wrap{white-space:pre-wrap;word-break:break-all}.op-inspector{position:absolute;top:0;right:0;bottom:0;z-index:10;width:min(480px,46vw);overflow:auto;padding:var(--fangstr-space-4) var(--fangstr-space-5);border-left:var(--fangstr-border-thin) solid var(--app-hairline-strong);background-color:var(--app-surface);box-shadow:-16px 0 40px color-mix(in srgb,var(--fangstr-black) 45%,transparent);box-sizing:border-box;animation:op-inspector-in .14s ease-out}@keyframes op-inspector-in{0%{transform:translate(12px);opacity:0}}@media(prefers-reduced-motion:reduce){.op-inspector{animation:none}}.op-inspector-head{display:flex;align-items:center;justify-content:space-between;margin:calc(var(--fangstr-space-4) * -1) calc(var(--fangstr-space-5) * -1) var(--fangstr-space-4);padding:var(--fangstr-space-3) var(--fangstr-space-5);border-bottom:var(--fangstr-border-thin) solid var(--app-hairline);background-color:var(--app-raised)}.op-close{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:0;border-radius:var(--fangstr-radius);background:transparent;color:var(--app-text-muted);font-size:16px;line-height:1;cursor:pointer}.op-close:hover{background-color:var(--app-overlay);color:var(--app-text)}.op-split{display:flex;gap:var(--fangstr-space-4);flex:1 1 auto;min-height:0}.op-split-side{flex:0 0 280px;min-width:0;overflow:auto;border:var(--fangstr-border-thin) solid var(--app-hairline);border-radius:var(--fangstr-radius);background-color:var(--app-surface);padding:var(--fangstr-space-3)}.op-split-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;min-height:0}.op-pill-x{margin-left:var(--fangstr-space-1);padding:0;border:0;background:transparent;color:inherit;font-size:13px;line-height:1;cursor:pointer}.op-pill-x:hover{color:var(--app-text)}.page-header,.op-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--fangstr-space-4) var(--fangstr-space-6);margin-bottom:var(--fangstr-space-5);flex-wrap:wrap}.page-header-text,.op-header-text{display:flex;flex-direction:column;gap:2px;min-width:0}.page-header h1,.op-header h1{margin:0;color:var(--app-text);font-size:24px;line-height:32px;font-weight:650;letter-spacing:-.02em}.page-header-text p,.op-header-text p{margin:var(--fangstr-space-1) 0 0;max-width:88ch;color:var(--app-text-muted);font-size:13px;line-height:20px}.page-header-text strong,.op-header-text strong{color:var(--app-text);font-weight:600}.page-header-actions,.op-actions{display:flex;align-items:center;gap:var(--fangstr-space-2);flex-wrap:wrap}.eyebrow{display:inline-flex;align-items:center;gap:var(--fangstr-space-2);margin:0;font-family:var(--fangstr-font-mono);font-size:10.5px;font-weight:700;line-height:16px;letter-spacing:.14em;text-transform:uppercase;color:var(--app-accent)}.op-btn svg{width:14px;height:14px;flex:0 0 14px}.panel{display:flex;flex-direction:column;min-width:0;border:var(--fangstr-border-thin) solid var(--app-hairline);border-radius:10px;background-color:var(--app-raised)}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--fangstr-space-4);padding:var(--fangstr-space-4) var(--fangstr-space-5) var(--fangstr-space-3)}.panel-head h2{margin:0;color:var(--app-text);font-size:14px;line-height:20px;font-weight:600}.panel-head p{margin:2px 0 0;color:var(--app-text-subtle);font-size:12px}.panel-empty{margin:0;padding:var(--fangstr-space-6) var(--fangstr-space-5);color:var(--app-text-muted);font-size:13px}.panel-empty.bad{color:var(--fangstr-red-400)}.skeleton{display:inline-block;width:100%;height:12px;border-radius:4px;vertical-align:middle;background-color:color-mix(in srgb,var(--fangstr-blue-700) 45%,transparent);background-image:linear-gradient(90deg,transparent 0%,color-mix(in srgb,var(--fangstr-blue-500) 22%,transparent) 50%,transparent 100%);background-size:200% 100%;background-repeat:no-repeat;animation:skeleton-sweep 1.4s ease-in-out infinite}.skeleton-num{width:96px;height:36px;border-radius:6px}.skeleton-pill{width:64px;height:18px}.skeleton-block{display:block;height:100%;min-height:48px;border-radius:8px}@keyframes skeleton-sweep{0%{background-position:150% 0}to{background-position:-50% 0}}@media(prefers-reduced-motion:reduce){.skeleton{animation:none}}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.reload-bar{position:relative;height:2px;overflow:hidden;border-radius:999px}.reload-bar:after{content:"";position:absolute;inset-block:0;width:30%;border-radius:inherit;background-color:var(--app-accent);animation:reload-slide 1s ease-in-out infinite}@keyframes reload-slide{0%{left:-30%}to{left:100%}}@media(prefers-reduced-motion:reduce){.reload-bar:after{animation:none;left:0;width:100%;opacity:.5}}html{--mat-app-background-color: var(--app-canvas);--mat-app-text-color: var(--app-text);--mat-sys-surface: var(--app-surface);--mat-sys-surface-container: var(--app-overlay);--mat-sys-surface-container-high: var(--app-raised);--mat-sys-on-surface: var(--app-text);--mat-sys-on-surface-variant: var(--app-text-muted);--mat-sys-primary: var(--app-accent);--mat-sys-on-primary: var(--fangstr-blue-950);--mat-sys-error: var(--fangstr-danger);--mat-sys-outline: var(--app-control-border);--mat-sys-outline-variant: var(--app-hairline);--mat-sys-corner-extra-small: var(--fangstr-radius);--mat-sys-corner-small: var(--fangstr-radius)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background-color:var(--app-canvas);color:var(--app-text);font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv11","ss01"}::selection{background-color:color-mix(in srgb,var(--app-accent) 35%,transparent);color:var(--fangstr-white)}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:none;box-shadow:var(--app-focus-ring)}*{scrollbar-width:thin;scrollbar-color:var(--fangstr-blue-700) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background-color:var(--fangstr-blue-700);border:3px solid transparent;border-radius:999px;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background-color:var(--fangstr-blue-600)}*::-webkit-scrollbar-track{background:transparent}kbd{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border:var(--fangstr-border-thin) solid var(--app-hairline-strong);border-bottom-width:2px;border-radius:4px;background-color:var(--app-raised);color:var(--app-text-muted);font-family:var(--fangstr-font-sans);font-size:10.5px;font-weight:600;line-height:1}
