@import "https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/variable/pretendardvariable.css";@font-face{font-family:Material Icons;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/material-icons-latin-400-normal-kAwBdRge.woff2)format("woff2"),url(/assets/material-icons-latin-400-normal-B5tbEuci.woff)format("woff")}:root{--swal2-outline:0 0 0 3px #6496c880;--swal2-container-padding:.625em;--swal2-backdrop:#0006;--swal2-backdrop-transition:background-color .15s;--swal2-width:32em;--swal2-padding:0 0 1.25em;--swal2-border:none;--swal2-border-radius:.3125rem;--swal2-background:white;--swal2-color:#545454;--swal2-show-animation:swal2-show .3s;--swal2-hide-animation:swal2-hide .15s forwards;--swal2-icon-zoom:1;--swal2-title-padding:.8em 1em 0;--swal2-html-container-padding:1em 1.6em .3em;--swal2-input-border:1px solid #d9d9d9;--swal2-input-border-radius:.1875em;--swal2-input-box-shadow:inset 0 1px 1px #0000000f, 0 0 0 3px transparent;--swal2-input-background:transparent;--swal2-input-transition:border-color .2s, box-shadow .2s;--swal2-input-hover-box-shadow:inset 0 1px 1px #0000000f, 0 0 0 3px transparent;--swal2-input-focus-border:1px solid #b4dbed;--swal2-input-focus-box-shadow:inset 0 1px 1px #0000000f, 0 0 0 3px #6496c880;--swal2-progress-step-background:#add8e6;--swal2-validation-message-background:#f0f0f0;--swal2-validation-message-color:#666;--swal2-footer-border-color:#eee;--swal2-footer-background:transparent;--swal2-footer-color:inherit;--swal2-timer-progress-bar-background:#0000004d;--swal2-close-button-position:initial;--swal2-close-button-inset:auto;--swal2-close-button-font-size:2.5em;--swal2-close-button-color:#ccc;--swal2-close-button-transition:color .2s, box-shadow .2s;--swal2-close-button-outline:initial;--swal2-close-button-box-shadow:inset 0 0 0 3px transparent;--swal2-close-button-focus-box-shadow:inset var(--swal2-outline);--swal2-close-button-hover-transform:none;--swal2-actions-justify-content:center;--swal2-actions-width:auto;--swal2-actions-margin:1.25em auto 0;--swal2-actions-padding:0;--swal2-actions-border-radius:0;--swal2-actions-background:transparent;--swal2-action-button-transition:background-color .2s, box-shadow .2s;--swal2-action-button-hover:black 10%;--swal2-action-button-active:black 10%;--swal2-confirm-button-box-shadow:none;--swal2-confirm-button-border-radius:.25em;--swal2-confirm-button-background-color:#7066e0;--swal2-confirm-button-color:#fff;--swal2-deny-button-box-shadow:none;--swal2-deny-button-border-radius:.25em;--swal2-deny-button-background-color:#dc3741;--swal2-deny-button-color:#fff;--swal2-cancel-button-box-shadow:none;--swal2-cancel-button-border-radius:.25em;--swal2-cancel-button-background-color:#6e7881;--swal2-cancel-button-color:#fff;--swal2-toast-show-animation:swal2-toast-show .5s;--swal2-toast-hide-animation:swal2-toast-hide .1s forwards;--swal2-toast-border:none;--swal2-toast-box-shadow:0 0 1px #00000013, 0 1px 2px #00000013, 1px 2px 4px #00000013, 1px 3px 8px #00000013, 2px 4px 16px #00000013}[data-swal2-theme=dark]{--swal2-dark-theme-black:#19191a;--swal2-dark-theme-white:#e1e1e1;--swal2-background:var(--swal2-dark-theme-black);--swal2-color:var(--swal2-dark-theme-white);--swal2-footer-border-color:#555;--swal2-input-background:color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-background:color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-color:var(--swal2-dark-theme-white);--swal2-timer-progress-bar-background:#ffffffb3}@media (prefers-color-scheme:dark){[data-swal2-theme=auto]{--swal2-dark-theme-black:#19191a;--swal2-dark-theme-white:#e1e1e1;--swal2-background:var(--swal2-dark-theme-black);--swal2-color:var(--swal2-dark-theme-white);--swal2-footer-border-color:#555;--swal2-input-background:color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-background:color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-color:var(--swal2-dark-theme-white);--swal2-timer-progress-bar-background:#ffffffb3}}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{pointer-events:none;background-color:#0000!important}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:auto}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px var(--swal2-backdrop)}body.swal2-toast-shown .swal2-container{box-sizing:border-box;pointer-events:none;background-color:#0000;width:360px;max-width:100%}body.swal2-toast-shown .swal2-container.swal2-top{inset:0 auto auto 50%;transform:translate(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{inset:0 0 auto auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{inset:0 auto auto 0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{inset:50% auto auto 0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{inset:50% auto auto 50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{inset:50% 0 auto auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{inset:auto auto 0 0}body.swal2-toast-shown .swal2-container.swal2-bottom{inset:auto auto 0 50%;transform:translate(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{inset:auto 0 0 auto}@media print{body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown) .swal2-container{position:static!important}}div:where(.swal2-container){z-index:1060;box-sizing:border-box;height:100%;padding:var(--swal2-container-padding);transition:var(--swal2-backdrop-transition);-webkit-overflow-scrolling:touch;grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);grid-template-areas:"top-start top top-end""center-start center center-end""bottom-start bottom-center bottom-end";display:grid;position:fixed;inset:0;overflow-x:hidden}div:where(.swal2-container).swal2-backdrop-show,div:where(.swal2-container).swal2-noanimation{background:var(--swal2-backdrop)}div:where(.swal2-container).swal2-backdrop-hide{background:0 0!important}div:where(.swal2-container).swal2-top-start,div:where(.swal2-container).swal2-center-start,div:where(.swal2-container).swal2-bottom-start{grid-template-columns:minmax(0,1fr) auto auto}div:where(.swal2-container).swal2-top,div:where(.swal2-container).swal2-center,div:where(.swal2-container).swal2-bottom{grid-template-columns:auto minmax(0,1fr) auto}div:where(.swal2-container).swal2-top-end,div:where(.swal2-container).swal2-center-end,div:where(.swal2-container).swal2-bottom-end{grid-template-columns:auto auto minmax(0,1fr)}div:where(.swal2-container).swal2-top-start>.swal2-popup{align-self:start}div:where(.swal2-container).swal2-top>.swal2-popup{grid-column:2;place-self:start center}div:where(.swal2-container).swal2-top-end>.swal2-popup,div:where(.swal2-container).swal2-top-right>.swal2-popup{grid-column:3;place-self:start end}div:where(.swal2-container).swal2-center-start>.swal2-popup,div:where(.swal2-container).swal2-center-left>.swal2-popup{grid-row:2;align-self:center}div:where(.swal2-container).swal2-center>.swal2-popup{grid-area:2/2;place-self:center}div:where(.swal2-container).swal2-center-end>.swal2-popup,div:where(.swal2-container).swal2-center-right>.swal2-popup{grid-area:2/3;place-self:center end}div:where(.swal2-container).swal2-bottom-start>.swal2-popup,div:where(.swal2-container).swal2-bottom-left>.swal2-popup{grid-area:3/1;align-self:end}div:where(.swal2-container).swal2-bottom>.swal2-popup{grid-area:3/2;place-self:end center}div:where(.swal2-container).swal2-bottom-end>.swal2-popup,div:where(.swal2-container).swal2-bottom-right>.swal2-popup{grid-area:3/3;place-self:end}div:where(.swal2-container).swal2-grow-row>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}div:where(.swal2-container).swal2-grow-column>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}div:where(.swal2-container).swal2-no-transition{transition:none!important}div:where(.swal2-container)[popover]{border:0;width:auto}div:where(.swal2-container) div:where(.swal2-popup){box-sizing:border-box;width:var(--swal2-width);max-width:100%;padding:var(--swal2-padding);border:var(--swal2-border);border-radius:var(--swal2-border-radius);background:var(--swal2-background);color:var(--swal2-color);grid-template-columns:minmax(0,100%);font-family:inherit;font-size:1rem;display:none;position:relative}div:where(.swal2-container) div:where(.swal2-popup):focus{outline:none}div:where(.swal2-container) div:where(.swal2-popup).swal2-loading{overflow-y:hidden}div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable,div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable div:where(.swal2-icon){cursor:grab}div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging,div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging div:where(.swal2-icon){cursor:grabbing}div:where(.swal2-container) h2:where(.swal2-title){max-width:100%;padding:var(--swal2-title-padding);color:inherit;text-align:center;text-transform:none;overflow-wrap:break-word;cursor:initial;margin:0;font-size:1.875em;font-weight:600;position:relative}div:where(.swal2-container) div:where(.swal2-actions){z-index:1;box-sizing:border-box;align-items:center;justify-content:var(--swal2-actions-justify-content);width:var(--swal2-actions-width);margin:var(--swal2-actions-margin);padding:var(--swal2-actions-padding);border-radius:var(--swal2-actions-border-radius);background:var(--swal2-actions-background);flex-wrap:wrap;display:flex}div:where(.swal2-container) div:where(.swal2-loader){border:.25em solid #2778c4;border-color:#2778c4 #0000;border-radius:100%;justify-content:center;align-items:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:1.5s linear infinite swal2-rotate-loading;display:none}div:where(.swal2-container) button:where(.swal2-styled){transition:var(--swal2-action-button-transition);border:none;margin:.3125em;padding:.625em 1.1em;font-weight:500;box-shadow:0 0 0 3px #0000}div:where(.swal2-container) button:where(.swal2-styled):not([disabled]){cursor:pointer}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm){border-radius:var(--swal2-confirm-button-border-radius);background:initial;background-color:var(--swal2-confirm-button-background-color);box-shadow:var(--swal2-confirm-button-box-shadow);color:var(--swal2-confirm-button-color);font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm):hover{background-color:color-mix(in srgb, var(--swal2-confirm-button-background-color), var(--swal2-action-button-hover))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm):active{background-color:color-mix(in srgb, var(--swal2-confirm-button-background-color), var(--swal2-action-button-active))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny){border-radius:var(--swal2-deny-button-border-radius);background:initial;background-color:var(--swal2-deny-button-background-color);box-shadow:var(--swal2-deny-button-box-shadow);color:var(--swal2-deny-button-color);font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny):hover{background-color:color-mix(in srgb, var(--swal2-deny-button-background-color), var(--swal2-action-button-hover))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny):active{background-color:color-mix(in srgb, var(--swal2-deny-button-background-color), var(--swal2-action-button-active))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel){border-radius:var(--swal2-cancel-button-border-radius);background:initial;background-color:var(--swal2-cancel-button-background-color);box-shadow:var(--swal2-cancel-button-box-shadow);color:var(--swal2-cancel-button-color);font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel):hover{background-color:color-mix(in srgb, var(--swal2-cancel-button-background-color), var(--swal2-action-button-hover))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel):active{background-color:color-mix(in srgb, var(--swal2-cancel-button-background-color), var(--swal2-action-button-active))}div:where(.swal2-container) button:where(.swal2-styled):focus-visible{box-shadow:var(--swal2-action-button-focus-box-shadow);outline:none}div:where(.swal2-container) button:where(.swal2-styled)[disabled]:not(.swal2-loading){opacity:.4}div:where(.swal2-container) button:where(.swal2-styled)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-footer){border-top:1px solid var(--swal2-footer-border-color);background:var(--swal2-footer-background);color:var(--swal2-footer-color);text-align:center;cursor:initial;margin:1em 0 0;padding:1em 1em 0;font-size:1em}div:where(.swal2-container) .swal2-timer-progress-bar-container{border-bottom-right-radius:var(--swal2-border-radius);border-bottom-left-radius:var(--swal2-border-radius);position:absolute;bottom:0;left:0;right:0;overflow:hidden;grid-column:auto!important}div:where(.swal2-container) div:where(.swal2-timer-progress-bar){background:var(--swal2-timer-progress-bar-background);width:100%;height:.25em}div:where(.swal2-container) img:where(.swal2-image){max-width:100%;cursor:initial;margin:2em auto 1em}div:where(.swal2-container) button:where(.swal2-close){position:var(--swal2-close-button-position);inset:var(--swal2-close-button-inset);z-index:2;width:1.2em;height:1.2em;transition:var(--swal2-close-button-transition);border-radius:var(--swal2-border-radius);outline:var(--swal2-close-button-outline);color:var(--swal2-close-button-color);font-family:monospace;font-size:var(--swal2-close-button-font-size);cursor:pointer;background:0 0;border:none;justify-content:center;justify-self:end;align-items:center;margin-top:0;margin-bottom:-1.2em;margin-right:0;padding:0;overflow:hidden}div:where(.swal2-container) button:where(.swal2-close):hover{transform:var(--swal2-close-button-hover-transform);color:#f27474;background:0 0}div:where(.swal2-container) button:where(.swal2-close):focus-visible{box-shadow:var(--swal2-close-button-focus-box-shadow);outline:none}div:where(.swal2-container) button:where(.swal2-close)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-html-container){z-index:1;padding:var(--swal2-html-container-padding);color:inherit;text-align:center;overflow-wrap:break-word;word-break:break-word;cursor:initial;justify-content:center;margin:0;font-size:1.125em;font-weight:400;line-height:normal;overflow:auto}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea),div:where(.swal2-container) select:where(.swal2-select),div:where(.swal2-container) div:where(.swal2-radio),div:where(.swal2-container) label:where(.swal2-checkbox){margin:1em 2em 3px}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea){box-sizing:border-box;width:auto;transition:var(--swal2-input-transition);border:var(--swal2-input-border);border-radius:var(--swal2-input-border-radius);background:var(--swal2-input-background);box-shadow:var(--swal2-input-box-shadow);color:inherit;font-size:1.125em}div:where(.swal2-container) input:where(.swal2-input).swal2-inputerror,div:where(.swal2-container) input:where(.swal2-file).swal2-inputerror,div:where(.swal2-container) textarea:where(.swal2-textarea).swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}div:where(.swal2-container) input:where(.swal2-input):hover,div:where(.swal2-container) input:where(.swal2-file):hover,div:where(.swal2-container) textarea:where(.swal2-textarea):hover{box-shadow:var(--swal2-input-hover-box-shadow)}div:where(.swal2-container) input:where(.swal2-input):focus,div:where(.swal2-container) input:where(.swal2-file):focus,div:where(.swal2-container) textarea:where(.swal2-textarea):focus{border:var(--swal2-input-focus-border);box-shadow:var(--swal2-input-focus-box-shadow);outline:none}div:where(.swal2-container) input:where(.swal2-input)::placeholder,div:where(.swal2-container) input:where(.swal2-file)::placeholder,div:where(.swal2-container) textarea:where(.swal2-textarea)::placeholder{color:#ccc}div:where(.swal2-container) .swal2-range{background:var(--swal2-background);margin:1em 2em 3px}div:where(.swal2-container) .swal2-range input{width:80%}div:where(.swal2-container) .swal2-range output{width:20%;color:inherit;text-align:center;font-weight:600}div:where(.swal2-container) .swal2-range input,div:where(.swal2-container) .swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}div:where(.swal2-container) .swal2-input{height:2.625em;padding:0 .75em}div:where(.swal2-container) .swal2-file{background:var(--swal2-input-background);width:75%;margin-left:auto;margin-right:auto;font-size:1.125em}div:where(.swal2-container) .swal2-textarea{height:6.75em;padding:.75em}div:where(.swal2-container) .swal2-select{background:var(--swal2-input-background);min-width:50%;max-width:100%;color:inherit;padding:.375em .625em;font-size:1.125em}div:where(.swal2-container) .swal2-radio,div:where(.swal2-container) .swal2-checkbox{background:var(--swal2-background);color:inherit;justify-content:center;align-items:center}div:where(.swal2-container) .swal2-radio label,div:where(.swal2-container) .swal2-checkbox label{margin:0 .6em;font-size:1.125em}div:where(.swal2-container) .swal2-radio input,div:where(.swal2-container) .swal2-checkbox input{flex-shrink:0;margin:0 .4em}div:where(.swal2-container) label:where(.swal2-input-label){justify-content:center;margin:1em auto 0;display:flex}div:where(.swal2-container) div:where(.swal2-validation-message){background:var(--swal2-validation-message-background);color:var(--swal2-validation-message-color);justify-content:center;align-items:center;margin:1em 0 0;padding:.625em;font-size:1em;font-weight:300;overflow:hidden}div:where(.swal2-container) div:where(.swal2-validation-message):before{content:"!";color:#fff;text-align:center;background-color:#f27474;border-radius:50%;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;font-weight:600;line-height:1.5em;display:inline-block}div:where(.swal2-container) .swal2-progress-steps{background:0 0;flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;font-weight:600}div:where(.swal2-container) .swal2-progress-steps li{display:inline-block;position:relative}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step{z-index:20;color:#fff;text-align:center;background:#2778c4;border-radius:2em;flex-shrink:0;width:2em;height:2em;line-height:2em}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:var(--swal2-progress-step-background);color:#fff}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:var(--swal2-progress-step-background)}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step-line{z-index:10;background:#2778c4;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px}div:where(.swal2-icon){box-sizing:content-box;zoom:var(--swal2-icon-zoom);cursor:default;-webkit-user-select:none;user-select:none;border:.25em solid #000;border-radius:50%;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;font-family:inherit;line-height:5em;position:relative}div:where(.swal2-icon) .swal2-icon-content{align-items:center;font-size:3.75em;display:flex}div:where(.swal2-icon).swal2-error{color:#f27474;border-color:#f27474}div:where(.swal2-icon).swal2-error .swal2-x-mark{flex-grow:1;position:relative}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line]{background-color:#f27474;border-radius:.125em;width:2.9375em;height:.3125em;display:block;position:absolute;top:2.3125em}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-error.swal2-icon-show{animation:.5s swal2-animate-error-icon}div:where(.swal2-icon).swal2-error.swal2-icon-show .swal2-x-mark{animation:.5s swal2-animate-error-x-mark}div:where(.swal2-icon).swal2-warning{color:#f8bb86;border-color:#f8bb86}div:where(.swal2-icon).swal2-warning.swal2-icon-show{animation:.5s swal2-animate-error-icon}div:where(.swal2-icon).swal2-warning.swal2-icon-show .swal2-icon-content{animation:.5s swal2-animate-i-mark}div:where(.swal2-icon).swal2-info{color:#3fc3ee;border-color:#3fc3ee}div:where(.swal2-icon).swal2-info.swal2-icon-show{animation:.5s swal2-animate-error-icon}div:where(.swal2-icon).swal2-info.swal2-icon-show .swal2-icon-content{animation:.8s swal2-animate-i-mark}div:where(.swal2-icon).swal2-question{color:#87adbd;border-color:#87adbd}div:where(.swal2-icon).swal2-question.swal2-icon-show{animation:.5s swal2-animate-error-icon}div:where(.swal2-icon).swal2-question.swal2-icon-show .swal2-icon-content{animation:.8s swal2-animate-question-mark}div:where(.swal2-icon).swal2-success{color:#a5dc86;border-color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line]{border-radius:50%;width:3.75em;height:7.5em;position:absolute}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=left]{transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em;top:-.4375em;left:-2.0635em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=right]{transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0;top:-.6875em;left:1.875em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success .swal2-success-ring{z-index:2;box-sizing:content-box;border:.25em solid #a5dc864d;border-radius:50%;width:100%;height:100%;position:absolute;top:-.25em;left:-.25em}div:where(.swal2-icon).swal2-success .swal2-success-fix{z-index:1;width:.4375em;height:5.625em;position:absolute;top:.5em;left:1.625em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line]{z-index:2;background-color:#a5dc86;border-radius:.125em;height:.3125em;display:block;position:absolute}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=tip]{width:1.5625em;top:2.875em;left:.8125em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=long]{width:2.9375em;top:2.375em;right:.5em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-tip{animation:.75s swal2-animate-success-line-tip}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-long{animation:.75s swal2-animate-success-line-long}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:4.25s ease-in swal2-rotate-success-circular-line}[class^=swal2]{-webkit-tap-highlight-color:#0000}.swal2-show{animation:var(--swal2-show-animation)}.swal2-hide{animation:var(--swal2-hide-animation)}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{width:50px;height:50px;position:absolute;top:-9999px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{left:auto;right:0}.swal2-toast{box-sizing:border-box;border:var(--swal2-toast-border);background:var(--swal2-background);box-shadow:var(--swal2-toast-box-shadow);pointer-events:auto;grid-template-columns:min-content auto min-content;padding:1em;overflow-y:hidden;grid-area:1/1/4/4!important}.swal2-toast>*{grid-column:2}.swal2-toast h2:where(.swal2-title){text-align:initial;margin:.5em 1em;padding:0;font-size:1em}.swal2-toast .swal2-loading{justify-content:center}.swal2-toast input:where(.swal2-input){height:2em;margin:.5em;font-size:1em}.swal2-toast .swal2-validation-message{font-size:1em}.swal2-toast div:where(.swal2-footer){margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-toast button:where(.swal2-close){grid-area:1/3/99/3;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-toast div:where(.swal2-html-container){overflow:initial;text-align:initial;margin:.5em 1em;padding:0;font-size:1em}.swal2-toast div:where(.swal2-html-container):empty{padding:0}.swal2-toast .swal2-loader{grid-area:1/1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-toast .swal2-icon{grid-area:1/1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-toast .swal2-icon .swal2-icon-content{align-items:center;font-size:1.8em;font-weight:700;display:flex}.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{width:1.375em;top:.875em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-toast div:where(.swal2-actions){justify-content:flex-start;height:auto;margin:.5em 0 0;padding:0 .5em}.swal2-toast button:where(.swal2-styled){margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-toast .swal2-success [class^=swal2-success-circular-line]{border-radius:50%;width:1.6em;height:3em;position:absolute}.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{transform-origin:2em 2em;border-radius:4em 0 0 4em;top:-.8em;left:-.5em;transform:rotate(-45deg)}.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{transform-origin:0 1.5em;border-radius:0 4em 4em 0;top:-.25em;left:.9375em}.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-toast .swal2-success .swal2-success-fix{width:.4375em;height:2.6875em;top:0;left:.4375em}.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{width:.75em;top:1.125em;left:.1875em}.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{width:1.375em;top:.9375em;right:.1875em}.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:.75s swal2-toast-animate-success-line-tip}.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:.75s swal2-toast-animate-success-line-long}.swal2-toast.swal2-show{animation:var(--swal2-toast-show-animation)}.swal2-toast.swal2-hide{animation:var(--swal2-toast-hide-animation)}@keyframes swal2-show{0%{opacity:0;transform:translateY(-50px)scale(.9)}to{opacity:1;transform:translate(0,0)scale(1)}}@keyframes swal2-hide{0%{opacity:1;transform:translate(0,0)scale(1)}to{opacity:0;transform:translateY(-50px)scale(.9)}}@keyframes swal2-animate-success-line-tip{0%{width:0;top:1.1875em;left:.0625em}54%{width:0;top:1.0625em;left:.125em}70%{width:3.125em;top:2.1875em;left:-.375em}84%{width:1.0625em;top:3em;left:1.3125em}to{width:1.5625em;top:2.8125em;left:.8125em}}@keyframes swal2-animate-success-line-long{0%{width:0;top:3.375em;right:2.875em}65%{width:0;top:3.375em;right:2.875em}84%{width:3.4375em;top:2.1875em;right:0}to{width:2.9375em;top:2.375em;right:.5em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}to{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{opacity:0;margin-top:1.625em;transform:scale(.4)}50%{opacity:0;margin-top:1.625em;transform:scale(.4)}80%{margin-top:-.375em;transform:scale(1.15)}to{opacity:1;margin-top:0;transform:scale(1)}}@keyframes swal2-animate-error-icon{0%{opacity:0;transform:rotateX(100deg)}to{opacity:1;transform:rotateX(0)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}to{transform:rotateY(0)}}@keyframes swal2-animate-i-mark{0%{opacity:0;transform:rotate(45deg)}25%{opacity:.4;transform:rotate(-25deg)}50%{opacity:.8;transform:rotate(15deg)}75%{opacity:1;transform:rotate(-5deg)}to{opacity:1;transform:rotateX(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em)rotate(2deg)}33%{transform:translateY(0)rotate(-2deg)}66%{transform:translateY(.3125em)rotate(2deg)}to{transform:translateY(0)rotate(0)}}@keyframes swal2-toast-hide{to{opacity:0;transform:rotate(1deg)}}@keyframes swal2-toast-animate-success-line-tip{0%{width:0;top:.5625em;left:.0625em}54%{width:0;top:.125em;left:.125em}70%{width:1.625em;top:.625em;left:-.25em}84%{width:.5em;top:1.0625em;left:.75em}to{width:.75em;top:1.125em;left:.1875em}}@keyframes swal2-toast-animate-success-line-long{0%{width:0;top:1.625em;right:1.375em}65%{width:0;top:1.25em;right:.9375em}84%{width:1.125em;top:.9375em;right:0}to{width:1.375em;top:.9375em;right:.1875em}}:root{--bg:#f5f7fb;--card:#fff;--card-soft:#f8fafc;--text:#191f28;--muted:#6b7684;--border:#e5e8eb;--blue:#3182f6;--blue-soft:#e8f3ff;--green:#00a881;--green-soft:#e6f8f3;--amber:#f59e0b;--amber-soft:#fff7e6;--danger:#f04452;--danger-soft:#fff0f2;--shadow:0 18px 44px #0f172a14;--shadow-hover:0 24px 58px #0f172a21;--shadow-surface:inset 0 0 0 1px #0f172a0f, 0 1px 2px #0f172a0a, 0 18px 44px #0f172a14;--shadow-surface-hover:inset 0 0 0 1px #3182f629, 0 2px 4px #0f172a0d, 0 24px 58px #0f172a21;--image-outline:#0000001a;--ease-out:cubic-bezier(.2, 0, 0, 1);--radius-xl:34px;--radius-lg:28px;--radius-md:20px;--radius-sm:14px;color:var(--text);background:var(--bg);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;font-family:Pretendard Variable,Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans KR,Apple SD Gothic Neo,sans-serif}@keyframes enter-soft{0%{filter:blur(8px);opacity:0;transform:translateY(8px)}}@keyframes app-view-enter{0%{filter:blur(8px);opacity:0;transform:translateY(12px)scale(.992)}to{filter:blur();opacity:1;transform:translateY(0)scale(1)}}@keyframes app-view-first-block-enter{0%{opacity:.4;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}[data-theme=dark]{--bg:#0f141b;--card:#171d25;--card-soft:#121820;--text:#f2f5f9;--muted:#96a3b3;--border:#2b3440;--blue:#62a6ff;--blue-soft:#62a6ff24;--green:#34d399;--green-soft:#34d39924;--amber:#fbbf24;--amber-soft:#fbbf2424;--danger:#fb7185;--danger-soft:#fb718524;--shadow:0 18px 44px #00000047;--shadow-hover:0 24px 58px #0000005c;--shadow-surface:inset 0 0 0 1px #ffffff14, 0 1px 2px #0000002e, 0 18px 44px #00000047;--shadow-surface-hover:inset 0 0 0 1px #62a6ff2e, 0 2px 4px #0000003d, 0 24px 58px #0000005c;--image-outline:#ffffff1a}*{box-sizing:border-box}body{background:radial-gradient(circle at top left, #3182f61f, transparent 34rem), var(--bg);min-width:320px;min-height:100vh;margin:0}button,select,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed}a{color:inherit;text-decoration:none}main,.app-header,.app-nav{width:min(1180px,100% - 32px);margin:0 auto}main{padding:18px 0 calc(110px + env(safe-area-inset-bottom))}.app-header{padding:max(24px, env(safe-area-inset-top)) 0 16px;align-items:center;gap:18px;display:flex}.brand-mark{background:linear-gradient(135deg, var(--blue), #7c3aed);box-shadow:var(--shadow-surface);color:#fff;letter-spacing:-.06em;border-radius:24px;flex:none;justify-content:center;align-items:center;width:64px;height:64px;font-size:24px;font-weight:900;display:inline-flex}.eyebrow{color:var(--blue);letter-spacing:.08em;text-transform:uppercase;margin:0 0 7px;font-size:12px;font-weight:900}h1,h2,h3,p{margin:0}h1{letter-spacing:-.06em;font-size:clamp(28px,5vw,44px);line-height:1}.app-header p:last-child,.page-hero p:last-child,.dashboard-hero p,.muted-text,.empty{color:var(--muted);text-wrap:pretty;font-size:14px;font-weight:700;line-height:1.55}.app-nav{z-index:10;background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:var(--shadow-surface);border:0;border-radius:999px;align-items:center;gap:8px;padding:8px;display:flex;position:sticky;top:0;overflow-x:auto}.app-nav button,.app-nav a{transition-property:background-color,box-shadow,color,transform;transition-duration:.2s;transition-timing-function:var(--ease-out);color:var(--muted);background:0 0;border:0;border-radius:999px;flex:none;align-items:center;gap:8px;min-height:42px;padding:0 16px;font-size:14px;font-weight:900;display:inline-flex;position:relative;overflow:hidden}.app-nav button.active,.app-nav a:hover,.app-nav button:hover{background:var(--blue-soft);color:var(--blue)}.app-nav button:after,.app-nav a:after{content:"";opacity:0;transform-origin:50%;height:2px;transition:opacity .2s var(--ease-out), transform .2s var(--ease-out);background:currentColor;border-radius:999px;position:absolute;bottom:7px;left:18px;right:18px;transform:scaleX(.28)}.app-nav button.active:after,.app-nav a.active:after{opacity:.9;transform:scaleX(1)}.app-nav button svg,.app-nav a svg{transition:transform .2s var(--ease-out)}.app-nav button.active svg,.app-nav a.active svg{transform:translateY(-1px)scale(1.07)}.app-main,.app-main.direction-panel-page{position:relative}.app-main.direction-panel-page>.app-view-transition{min-width:0}.tracking-side-panel.direction-outside-panel{z-index:9;width:300px;max-height:calc(100vh - 188px);position:fixed;top:172px;right:max(16px,50vw - 906px);overflow:hidden auto}.app-main.monitoring-page{width:min(1180px,100% - 24px)}.app-view-transition{transform-origin:top;will-change:filter, opacity, transform;animation:.28s cubic-bezier(.2,.72,.24,1) both app-view-enter}.app-view-transition>:first-child{animation:.34s cubic-bezier(.2,.72,.24,1) both app-view-first-block-enter}.card,.page-hero,.bento-card,.error-banner,.skeleton-card,.selector-card,.editor-card{background:var(--card);border-radius:var(--radius-xl);box-shadow:var(--shadow-surface);border:0}.error-banner,.skeleton-card{margin-bottom:16px;padding:16px 18px;font-weight:900}.error-banner{color:var(--danger)}.page-hero{margin-bottom:16px;padding:clamp(22px,4vw,34px)}.page-hero h2,.bento-hero-card h2,.card h2,.editor-header h2{letter-spacing:-.06em;text-wrap:balance;margin-bottom:10px;font-size:clamp(26px,4vw,42px);line-height:1.05}.card{margin-bottom:16px;padding:22px}.section-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.button,.primary-button,.secondary-button,.file-button{border-radius:var(--radius-sm);min-height:44px;transition-property:box-shadow,opacity,transform,background-color,color;transition-duration:.18s;transition-timing-function:var(--ease-out);white-space:nowrap;border:0;justify-content:center;align-items:center;padding:0 16px;font-weight:900;display:inline-flex}.button,.primary-button{background:var(--blue);color:#fff}.button.secondary,.secondary-button,.file-button{background:var(--blue-soft);color:var(--blue)}.secondary-button.danger{background:var(--danger-soft);color:var(--danger)}.primary-button:disabled{background:var(--border);color:var(--muted)}.file-button{cursor:pointer}.button:active,.primary-button:active,.secondary-button:active,.file-button:active,.app-nav button:active,.theme-toggle:active{transform:translateY(1px)scale(.985)}.button:focus-visible,.primary-button:focus-visible,.secondary-button:focus-visible,.file-button:focus-visible,.app-nav button:focus-visible,.app-nav a:focus-visible{outline:4px solid color-mix(in srgb, var(--blue) 24%, transparent);outline-offset:3px}:where(.button,.primary-button,.secondary-button,.file-button,.icon-button,.link-button,.app-nav button,.app-nav a,.theme-toggle,.route-editor-view-tabs button,.route-editor-toolbar button) svg{flex:none;width:1em;height:1em}:where(.card,.page-hero,.bento-card,.selector-card,.editor-card,.metric,.editor-metrics article,.monitoring-summary-card,.route-editor-data-panel,.table-scroll,.bento-table-wrap){transition-property:background-color,border-color,box-shadow,color,opacity,transform;transition-duration:.2s;transition-timing-function:var(--ease-out)}:where(.card,.page-hero,.bento-card,.selector-card,.editor-card,.metric,.editor-metrics article,.monitoring-summary-card,.route-editor-data-panel):focus-within{box-shadow:var(--shadow-surface-hover)}@media (hover:hover) and (pointer:fine){:where(.button,.primary-button,.secondary-button,.file-button,.icon-button,.link-button):hover:not(:disabled){box-shadow:var(--shadow-surface-hover);transform:translateY(-1px)}:where(.button,.primary-button):hover:not(:disabled){background:color-mix(in srgb, var(--blue) 88%, #fff)}:where(.secondary-button,.button.secondary,.file-button):hover:not(:disabled){background:color-mix(in srgb, var(--blue) 16%, var(--card))}:where(.app-nav button,.app-nav a,.theme-toggle):hover{transform:translateY(-1px)}:where(.bento-card,.selector-card,.metric,.editor-metrics article,.monitoring-summary-card,.route-editor-data-panel):hover{box-shadow:var(--shadow-surface-hover)}:where(.bento-card,.selector-card,.metric,.editor-metrics article,.monitoring-summary-card):hover{transform:translateY(-1px)}:where(.table-scroll,.bento-table-wrap) tbody tr:hover td{background:color-mix(in srgb, var(--blue) 6%, transparent)}}.dashboard-page{padding-top:18px}.bento-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;display:grid}.bento-card{animation:enter-soft .7s var(--ease-out) both;animation-delay:calc(var(--stagger,0) * 80ms);transform-origin:50%;padding:22px;position:relative;overflow:hidden}.bento-card:after{content:"";background:radial-gradient(circle,#3182f61f,#0000 62%);width:220px;height:220px;position:absolute;top:-90px;right:-90px}.bento-hero-card{grid-column:span 3;min-height:276px}.metric-button-grid{grid-column:span 3;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.bento-hero-card p:not(.eyebrow),.bento-side-card p:not(.eyebrow){color:var(--muted);text-wrap:pretty;max-width:520px;font-size:15px;font-weight:700;line-height:1.6}.bento-action-row,.compact-actions,.toolbar-buttons{flex-wrap:wrap;gap:8px;margin-top:22px;display:flex}.bento-metric-card{appearance:none;color:var(--text);box-shadow:var(--shadow-surface);text-align:left;min-height:158px;transition-property:box-shadow,transform,background-color;transition-duration:.18s;transition-timing-function:var(--ease-out);border:0;grid-column:span 1;justify-items:start;display:grid}.bento-metric-card:hover{box-shadow:var(--shadow-surface-hover);transform:translateY(-3px)}.metric-card-label{align-items:center;gap:8px;display:inline-flex}.metric-card-label svg{color:var(--blue);flex:none;width:15px;height:15px}.bento-metric-card:active{transform:translateY(-1px)scale(.96)}.bento-metric-card:focus-visible{outline:4px solid color-mix(in srgb, var(--blue) 24%, transparent);outline-offset:3px}.bento-metric-card span,.editor-metrics span,.metric{color:var(--muted);letter-spacing:-.01em;font-size:13px;font-weight:800}.bento-metric-card span{align-items:center;gap:6px;display:inline-flex}.bento-metric-card span:before{content:"";opacity:.5;background:currentColor;border-radius:999px;width:7px;height:7px}.bento-metric-card strong,.editor-metrics strong,.metric strong{color:var(--text);letter-spacing:-.07em;font-variant-numeric:tabular-nums;margin-top:16px;font-size:clamp(34px,4vw,46px);font-weight:850;line-height:.95;display:block}.bento-metric-card small{color:var(--muted);letter-spacing:-.01em;align-self:end;margin-top:18px;font-size:12px;font-weight:750;display:block}.bento-metric-card.primary{background:linear-gradient(135deg,#3182f6 0%,#5b8cff 48%,#7c3aed 100%)}.bento-metric-card.primary span,.bento-metric-card.primary strong,.bento-metric-card.primary small{color:#fff}.bento-metric-card.neutral{background:linear-gradient(135deg, var(--card) 0%, var(--card-soft) 100%)}.bento-metric-card.blue{background:linear-gradient(135deg, var(--blue-soft) 0%, var(--card) 100%)}.bento-metric-card.purple{background:linear-gradient(135deg, #7c3aed24 0%, var(--card) 100%)}.bento-metric-card.success{background:linear-gradient(135deg, var(--green-soft) 0%, var(--card) 100%)}.bento-metric-card.warning{background:linear-gradient(135deg, var(--amber-soft) 0%, var(--card) 100%)}.bento-metric-card.blue span,.bento-metric-card.blue strong{color:var(--blue)}.bento-metric-card.purple span,.bento-metric-card.purple strong{color:#7c3aed}.bento-metric-card.success span,.bento-metric-card.success strong{color:var(--green)}.bento-metric-card.warning span,.bento-metric-card.warning strong{color:var(--amber)}.bento-wide-card{grid-column:span 4}.bento-side-card{grid-column:span 2}.bento-side-card h2{font-size:30px}.facility-flow-strip{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:0 0 16px;display:grid}.facility-step{background:var(--card);box-shadow:var(--shadow-soft), inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);color:var(--muted);cursor:pointer;text-align:left;border:0;border-radius:20px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;min-height:72px;padding:14px;transition:background .18s,box-shadow .18s,color .18s,opacity .18s,transform .18s;display:grid}.facility-step:hover:not(:disabled),.facility-step.active{background:color-mix(in srgb, var(--blue) 8%, var(--card));box-shadow:var(--shadow-soft), inset 0 0 0 1px color-mix(in srgb, var(--blue) 32%, transparent);color:var(--blue)}.facility-step:active:not(:disabled){transform:translateY(1px)}.facility-step:disabled{cursor:not-allowed;opacity:.48}.facility-step-index{background:color-mix(in srgb, var(--blue) 12%, var(--card-soft));color:var(--blue);border-radius:999px;justify-content:center;align-items:center;width:30px;height:30px;font-size:12px;font-weight:950;display:inline-flex}.facility-step.complete .facility-step-index{background:var(--green-soft);color:var(--green)}.facility-step strong,.facility-step small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.facility-step strong{color:var(--text);letter-spacing:0;font-size:14px;font-weight:950}.facility-step small{color:var(--muted);margin-top:3px;font-size:12px;font-weight:850}.facility-step .material-icons,.facility-step svg{flex:none;width:18px;height:18px;font-size:20px}.facility-panel{margin-bottom:12px;padding:0;transition:box-shadow .18s,transform .18s}.facility-panel.is-open{box-shadow:var(--shadow-soft), inset 0 0 0 1px color-mix(in srgb, var(--blue) 12%, transparent)}.facility-panel.is-collapsed{box-shadow:0 10px 28px #0f172a0d, inset 0 0 0 1px color-mix(in srgb, var(--border) 70%, transparent)}.facility-panel-header{color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:minmax(96px,auto) minmax(160px,1fr) minmax(180px,1.4fr) auto;align-items:center;gap:8px 14px;width:100%;min-height:78px;padding:20px 22px;display:grid}.facility-panel-header:hover{background:color-mix(in srgb, var(--blue) 5%, transparent)}.facility-panel-kicker,.facility-panel-summary{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:900;overflow:hidden}.facility-panel-title{color:var(--text);letter-spacing:-.04em;text-overflow:ellipsis;white-space:nowrap;font-size:22px;font-weight:950;overflow:hidden}.facility-panel-header .material-icons,.facility-panel-header>svg{background:var(--card-soft);color:var(--muted);border-radius:999px;width:36px;height:36px;padding:9px;font-size:22px}.facility-panel.is-open .facility-panel-header .material-icons,.facility-panel.is-open .facility-panel-header>svg{background:var(--blue-soft);color:var(--blue)}.facility-panel-body{border-top:1px solid color-mix(in srgb, var(--border) 70%, transparent);gap:14px;padding:18px 22px 22px;display:grid}.facility-inline-actions{justify-content:flex-end}.facility-context-row{background:color-mix(in srgb, var(--card-soft) 84%, transparent);color:var(--muted);border-radius:18px;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:10px;padding:12px 14px;display:flex}.facility-context-row span{font-size:13px;font-weight:900}.facility-context-row strong{color:var(--text)}.facility-context-copy{flex-wrap:wrap;flex:220px;align-items:center;gap:10px;min-width:0;display:flex}.facility-context-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:8px;margin-left:auto;display:inline-flex}.facility-context-actions .csv-action-group{background:color-mix(in srgb, var(--card) 88%, transparent);border:1px solid var(--border);border-radius:14px;padding:4px}.detail-actions-heading{margin-bottom:0}@media (width<=980px){.facility-flow-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.facility-panel-header{grid-template-columns:1fr auto}.facility-panel-kicker,.facility-panel-summary{grid-column:1/-1}}@media (width<=640px){.facility-flow-strip{grid-template-columns:1fr}.facility-panel-header{min-height:70px;padding:16px}.facility-panel-title{font-size:19px}.facility-panel-body{padding:14px 16px 18px}}.detail-card{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:18px;display:flex}.detail-card div{gap:4px;display:grid}.detail-card strong{font-size:22px}.detail-card small{color:var(--muted);font-weight:700}.detail-label{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:900}.grid,.metric-grid,.editor-metrics{gap:14px;display:grid}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:16px}.metric,.editor-metrics article{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-surface);padding:18px}.selector-card{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:16px;padding:18px;display:grid}.selector-card p{color:var(--muted);grid-column:1/-1;font-size:13px;font-weight:800}.selector-card label,.properties-panel label{color:var(--muted);gap:7px;font-size:12px;font-weight:900;display:grid}.selector-card select,.properties-panel input,.properties-panel select{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 82%, transparent);color:var(--text);border:0;min-height:46px;padding:0 12px}.editor-card{padding:22px}.editor-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.editor-header h2{font-size:clamp(24px,3vw,34px)}.editor-metrics{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:14px}.editor-metrics .warning strong{color:var(--amber)}.editor-layout{align-items:start;gap:14px;display:grid}.beacon-drawer,.properties-panel,.canvas-panel,.coordinate-card{background:var(--card-soft);border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 70%, transparent);border:0;padding:14px}.panel-title-row,.canvas-toolbar,.selected-summary,.status-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.panel-title-row h3,.canvas-toolbar h3,.properties-panel h3,.coordinate-card h3{margin:0;font-size:16px}.mini-badge{background:var(--blue-soft);color:var(--blue);border-radius:999px;padding:5px 8px;font-size:11px;font-weight:900}.beacon-list-button{background:var(--card);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 82%, transparent);color:var(--text);text-align:left;border:0;flex-wrap:wrap;align-items:center;gap:10px;width:100%;margin-top:8px;padding:10px;display:flex}.beacon-list-button span,.beacon-dot{background:var(--blue);color:#fff;border-radius:999px;flex:none;justify-content:center;align-items:center;width:36px;height:36px;font-size:12px;font-weight:900;display:inline-flex}.beacon-list-button strong{flex:90px}.beacon-list-button small{color:var(--muted);flex:0 0 100%;padding-left:46px;font-size:11px;font-weight:800}.canvas-toolbar{align-items:flex-start;margin-bottom:12px}.toolbar-buttons{justify-content:flex-end;margin-top:0}.floorplan-canvas-wrap{background:var(--card);cursor:crosshair;outline:1px solid var(--image-outline);outline-offset:-1px;overscroll-behavior:contain;border:0;border-radius:24px;justify-content:center;align-items:center;transition:background .24s,box-shadow .24s,outline-color .24s;display:flex;position:relative;overflow:hidden}.floorplan-canvas-wrap.active{outline:2px solid color-mix(in srgb, var(--blue) 48%, transparent);outline-offset:-2px}.floorplan-canvas-wrap.beacon-placement-mode{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 22%, transparent)}.floorplan-canvas-wrap.sensor-placement-mode{box-shadow:inset 0 0 0 1px #ef44443d}.floorplan-canvas-wrap.sensor-placement-mode.active{outline-color:#ef44446b}.floorplan-canvas-wrap.zoomed{cursor:zoom-in}.floorplan-canvas-wrap.can-pan{cursor:grab}.floorplan-canvas-wrap.panning{cursor:grabbing}.floorplan-canvas-wrap.can-pan .floorplan-canvas{cursor:inherit}.floorplan-canvas{touch-action:none;width:100%;height:auto;max-height:none;display:block}.canvas-empty-state{color:var(--muted);pointer-events:none;text-align:center;place-items:center;gap:4px;display:grid;position:absolute;inset:0}.canvas-empty-state strong{color:var(--text);font-size:18px}.status-row{color:var(--muted);min-height:34px;padding:10px 4px 0;font-size:12px;font-weight:900}.property-stack{gap:12px;display:grid}.selected-summary{justify-content:flex-start}.selected-summary div{gap:3px;min-width:0;display:grid}.selected-summary small{color:var(--muted);overflow-wrap:anywhere}.coordinate-card{margin-top:14px}.table-scroll,.bento-table-wrap{overflow-x:auto}.list-pagination-toolbar{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:8px;display:flex}.page-size-control{color:var(--muted);align-items:center;gap:8px;font-size:12px;font-weight:900;display:inline-flex}.page-size-control select{background:var(--card);border:1px solid var(--border);color:var(--text);border-radius:999px;min-height:34px;padding:0 30px 0 12px;font-size:12px;font-weight:900}.pagination-status{color:var(--muted);white-space:nowrap;font-size:12px;font-weight:900}.pagination-actions{align-items:center;gap:8px;display:inline-flex}.pagination-actions>span{color:var(--text);text-align:center;min-width:48px;font-size:12px;font-weight:950}.pagination-actions .button.compact{min-height:34px;padding:0 12px}table{border-collapse:collapse;width:100%;min-width:680px}th,td{border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;padding:12px 10px;font-size:13px}th{color:var(--muted);font-weight:900}td{font-weight:750}.theme-toggle{background:var(--text);transition-property:box-shadow,transform,background-color,color;transition-duration:.18s;transition-timing-function:var(--ease-out);bottom:max(18px, env(safe-area-inset-bottom));box-shadow:var(--shadow-surface);color:var(--card);min-height:48px;right:max(18px, env(safe-area-inset-right));z-index:20;border:0;border-radius:999px;align-items:center;gap:8px;padding:0 16px;font-size:13px;font-weight:900;display:inline-flex;position:fixed}.app-footer{border-top:1px solid var(--border);background:var(--bg);justify-content:center;margin-top:24px;padding:16px 18px;display:flex}.footer-links{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.footer-links a{color:var(--muted);background:var(--card);border-radius:999px;padding:10px 14px;font-size:14px;font-weight:700;text-decoration:none;transition:background-color .18s,color .18s}.footer-links a:hover{background:var(--blue-soft);color:var(--blue)}.theme-toggle-icon svg{width:18px;height:18px;display:block}.theme-toggle-icon{background:color-mix(in srgb, var(--card) 22%, transparent);border-radius:999px;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex}@media (width<=1080px){.bento-hero-card,.bento-wide-card{grid-column:span 6}.bento-side-card,.metric-button-grid{grid-column:span 3}.bento-metric-card{grid-column:span 1}}@media (width<=720px){main,.app-header,.app-nav{width:min(100% - 24px,1180px)}.app-header{align-items:flex-start}.brand-mark{width:54px;height:54px}.bento-grid,.selector-card,.editor-metrics,.metric-grid{grid-template-columns:1fr}.bento-hero-card,.bento-wide-card,.bento-side-card,.metric-button-grid,.bento-metric-card{grid-column:span 1}.section-heading,.editor-header,.canvas-toolbar,.status-row,.detail-card{flex-direction:column;align-items:stretch}.compact-actions,.toolbar-buttons,.bento-action-row{grid-template-columns:1fr;width:100%;display:grid}.button,.primary-button,.secondary-button,.file-button{width:100%}.theme-toggle span[data-theme-label]{display:none}}.bento-card:first-child{--stagger:0}.bento-card:nth-child(2){--stagger:1}.bento-card:nth-child(3){--stagger:2}.bento-card:nth-child(4){--stagger:3}.bento-card:nth-child(5){--stagger:4}.bento-card:nth-child(6){--stagger:5}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=480px){.metric-button-grid{grid-template-columns:1fr}}.monitoring-hero{background:radial-gradient(circle at 92% 20%, #3182f62e, transparent 24rem), linear-gradient(135deg, var(--card), var(--card-soft))}.monitoring-empty{padding:28px}.monitoring-shell{gap:16px;display:grid}.monitoring-command-shell{--monitoring-scene-height:clamp(540px, calc(100vh - 230px), 780px);min-height:0;display:block;position:relative}.monitoring-command-layout{grid-template-columns:minmax(0,1fr);min-width:0;display:grid}.monitoring-center-container{z-index:1;min-width:0;position:relative}.monitoring-center-panel{gap:12px;min-width:0;display:grid}.monitoring-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.monitoring-left-panel .monitoring-summary-grid{grid-template-columns:1fr}.monitoring-summary-card,.render-profile-card{background:color-mix(in srgb, var(--card-soft) 72%, var(--card));border:1px solid color-mix(in srgb, var(--border) 86%, transparent);box-shadow:none;border-radius:8px;gap:5px;padding:11px;display:grid}.monitoring-summary-card.primary{color:#fff;background:linear-gradient(135deg,#2563eb 0%,#3182f6 58%,#14b8a6 100%);border-color:#0000}.monitoring-summary-card.warning strong{color:var(--amber)}.monitoring-summary-card.danger strong{color:var(--danger)}.monitoring-summary-card span,.render-profile-card span{color:var(--muted);font-size:12px;font-weight:900}.monitoring-summary-card.primary span,.monitoring-summary-card.primary small{color:#ffffffd6}.monitoring-summary-card strong,.render-profile-card strong{letter-spacing:0;font-size:24px;line-height:1}.monitoring-left-panel .monitoring-summary-card strong{font-size:22px}.monitoring-summary-card small,.render-profile-card small{color:var(--muted);font-size:12px;font-weight:800}.monitoring-toolbar{border-radius:8px;grid-template-columns:minmax(0,1fr) auto;justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:14px 16px;display:grid}.monitoring-toolbar h2{letter-spacing:0;font-size:24px;line-height:1.12}.monitoring-toolbar .muted-text{color:var(--muted);max-width:760px;margin-top:4px;font-size:12px;font-weight:800}.monitoring-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:7px;max-width:420px;display:flex}.monitoring-data-strip{background:color-mix(in srgb, var(--card-soft) 84%, transparent);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px;display:flex}.monitoring-left-panel .monitoring-data-strip{background:0 0;border:0;padding:12px;display:grid}.monitoring-data-strip span{background:var(--card);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);color:var(--muted);border-radius:999px;align-items:center;gap:7px;min-height:32px;padding:0 12px;font-size:12px;font-weight:850;display:inline-flex}.monitoring-left-panel .monitoring-data-strip span{border-radius:8px;flex-direction:column;justify-content:center;align-items:flex-start;gap:3px;width:100%;min-height:44px;padding:8px 10px}.monitoring-data-strip strong{color:var(--text);font-size:11px;font-weight:950}.monitoring-data-strip span.ready{background:var(--green-soft);border-color:color-mix(in srgb, var(--green) 28%, var(--border));color:var(--green)}.monitoring-data-strip span.pending{background:var(--amber-soft);border-color:color-mix(in srgb, var(--amber) 34%, var(--border));color:var(--amber)}.segmented-control{background:var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 82%, transparent);border-radius:999px;padding:4px;display:inline-flex}.segmented-control button{color:var(--muted);background:0 0;border:0;border-radius:999px;min-height:38px;padding:0 14px;font-size:13px;font-weight:900}.segmented-control button.active{background:var(--blue);color:#fff}.webgl-scene-card{background:linear-gradient(180deg, color-mix(in srgb, var(--card-soft) 72%, transparent), transparent), var(--card);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);width:100%;max-width:100%;box-shadow:var(--shadow-surface);height:var(--monitoring-scene-height);z-index:1;border-radius:8px;min-height:540px;position:relative;overflow:hidden}.scene-hud,.scene-legend{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb, var(--card) 84%, transparent);border:1px solid color-mix(in srgb, var(--border) 72%, transparent);z-index:2;border-radius:8px;gap:4px;max-width:min(320px,100% - 32px);padding:9px 11px;display:grid;position:absolute;box-shadow:0 12px 30px #0f172a2e}.scene-hud strong{letter-spacing:.08em;font-size:12px;font-weight:950}.scene-hud span{color:var(--muted);font-size:11px;font-weight:850}.scene-hud.top-left{top:12px;left:12px}.scene-hud.top-right{text-align:right;top:12px;right:12px}.scene-hud.connected strong{color:var(--green)}.scene-hud.connecting strong{color:var(--amber)}.scene-hud.disconnected strong,.scene-hud.unsupported strong{color:var(--danger)}.scene-legend{flex-wrap:wrap;gap:8px;display:flex;bottom:12px;left:12px;right:auto}.scene-legend span{color:var(--muted);align-items:center;gap:6px;font-size:12px;font-weight:900;display:inline-flex}.legend-dot,.device-status-dot{border-radius:999px;flex:none;display:inline-flex}.legend-dot{width:10px;height:10px}.legend-dot.normal,.device-status-dot.normal,.device-status-pill.normal{background:var(--green)}.legend-dot.waiting,.device-status-dot.waiting,.device-status-pill.waiting{background:var(--amber)}.legend-dot.uncertain,.device-status-dot.uncertain,.device-status-pill.uncertain{background:#f97316}.legend-dot.lost,.device-status-dot.lost,.device-status-pill.lost{background:var(--danger)}.monitoring-side-panel{background:color-mix(in srgb, var(--card) 96%, transparent);border:1px solid color-mix(in srgb, var(--border) 88%, transparent);box-shadow:var(--shadow-surface);border-radius:8px;align-content:start;align-self:start;gap:12px;min-width:0;margin-bottom:0;padding:12px;display:grid}.monitoring-viewport-panel{height:var(--monitoring-panel-height,clamp(540px, calc(100vh - 230px), 780px));max-height:var(--monitoring-panel-height,calc(100vh - 112px));overscroll-behavior:contain;top:var(--monitoring-panel-top,96px);z-index:80;width:100%;position:fixed;overflow:auto}.monitoring-viewport-left{width:252px;left:16px}.monitoring-viewport-right{width:380px;right:16px}.monitoring-left-panel,.monitoring-right-panel{min-height:0}.selected-device-card{background:var(--card-soft);border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 80%, transparent);gap:8px;padding:16px;display:grid}.selected-device-card h3{letter-spacing:0;margin:0;font-size:22px}.selected-device-card p{color:var(--muted);overflow-wrap:anywhere;font-size:12px;font-weight:850}.selected-device-card dl{gap:9px;margin:8px 0 0;display:grid}.selected-device-card dl div{justify-content:space-between;align-items:center;gap:10px;display:flex}.selected-device-card dt,.selected-device-card dd{margin:0}.selected-device-card dt{color:var(--muted);font-size:12px;font-weight:850}.selected-device-card dd{text-align:right;font-size:13px;font-weight:900}.device-status-pill{color:#fff;border-radius:999px;justify-content:center;align-items:center;width:fit-content;min-height:26px;padding:0 10px;font-size:11px;font-weight:950;display:inline-flex}.device-list{gap:8px;max-height:420px;padding-right:2px;display:grid;overflow:auto}.device-list button{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 78%, transparent);color:var(--text);text-align:left;border:0;grid-template-columns:10px minmax(0,1fr);align-items:center;gap:2px 10px;min-height:58px;padding:10px 12px;display:grid}.device-list button.active{box-shadow:inset 0 0 0 2px var(--blue), var(--shadow-surface)}.device-status-dot{grid-row:span 2;width:10px;height:10px}.device-list strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.device-list small{color:var(--muted);font-size:11px;font-weight:800}.tactical-device-panel{gap:12px}.tactical-panel-title{align-items:start}.tactical-panel-title p{color:var(--muted);margin:4px 0 0;font-size:12px;font-weight:850}.device-status-command-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.device-status-filter{background:color-mix(in srgb, var(--card-soft) 82%, transparent);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);border-left:4px solid var(--status-color,var(--blue));color:var(--text);text-align:left;border-radius:8px;justify-content:space-between;align-items:center;min-height:48px;padding:9px 10px;display:flex}.device-status-filter.all{--status-color:var(--blue);grid-column:1/-1}.device-status-filter.normal{--status-color:var(--green)}.device-status-filter.waiting{--status-color:var(--amber)}.device-status-filter.uncertain{--status-color:#f97316}.device-status-filter.lost{--status-color:var(--danger)}.device-status-filter span{color:var(--muted);font-size:12px;font-weight:900}.device-status-filter strong{color:var(--text);letter-spacing:0;font-size:22px;font-weight:950}.device-status-filter.active{background:color-mix(in srgb, var(--status-color) 18%, var(--card));border-color:color-mix(in srgb, var(--status-color) 54%, var(--border));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--status-color) 28%, transparent)}.device-roster-toolbar{background:color-mix(in srgb, var(--card-soft) 78%, transparent);border:1px solid color-mix(in srgb, var(--border) 84%, transparent);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;min-height:48px;padding:10px 12px;display:flex}.device-roster-toolbar span,.device-roster-toolbar small{color:var(--muted);font-size:12px;font-weight:850}.device-roster-toolbar strong{color:var(--text);margin-top:2px;font-size:13px;font-weight:950;display:block}.selected-device-strip{background:color-mix(in srgb, var(--card-soft) 72%, transparent);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);border-left:4px solid var(--status-color,var(--blue));border-radius:8px;grid-template-columns:auto minmax(0,1fr);gap:8px 10px;padding:12px;display:grid}.selected-device-strip.normal{--status-color:var(--green)}.selected-device-strip.waiting{--status-color:var(--amber)}.selected-device-strip.uncertain{--status-color:#f97316}.selected-device-strip.lost{--status-color:var(--danger)}.selected-device-strip strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;display:block;overflow:hidden}.selected-device-strip small{color:var(--muted);overflow-wrap:anywhere;font-size:11px;font-weight:800;display:block}.selected-device-strip dl{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0;display:grid}.selected-device-strip dl div{background:color-mix(in srgb, var(--card) 72%, transparent);border-radius:6px;padding:7px}.selected-device-strip dt,.selected-device-strip dd{margin:0}.selected-device-strip dt{color:var(--muted);font-size:10px;font-weight:850}.selected-device-strip dd{color:var(--text);margin-top:2px;font-size:11px;font-weight:900}.monitoring-selection-hint{background:color-mix(in srgb, var(--blue) 10%, transparent);border:1px dashed color-mix(in srgb, var(--blue) 34%, var(--border));color:var(--muted);border-radius:8px;margin:0;padding:12px;font-size:12px;font-weight:850}.tactical-device-list{gap:6px;max-height:min(50vh,520px)}.device-list .device-roster-item{--status-color:var(--blue);border-left:4px solid var(--status-color);grid-template-columns:10px minmax(0,1fr) auto;min-height:52px}.device-list .device-roster-item.normal{--status-color:var(--green)}.device-list .device-roster-item.waiting{--status-color:var(--amber)}.device-list .device-roster-item.uncertain{--status-color:#f97316}.device-list .device-roster-item.lost{--status-color:var(--danger)}.device-list .device-roster-item.active{background:color-mix(in srgb, var(--status-color) 16%, var(--card));box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--status-color) 70%, var(--blue))}.device-roster-main,.device-roster-meta{gap:3px;min-width:0;display:grid}.device-roster-meta{justify-items:end}.device-roster-meta em{color:var(--status-color);font-size:11px;font-style:normal;font-weight:950}.device-roster-meta small{color:var(--muted);font-size:11px;font-weight:850}@media (width>=1600px){.app-main.monitoring-page{width:min(1280px,100vw - 840px)}.monitoring-viewport-left{left:calc(50vw + min(1280px,100vw - 840px)/-2 - 276px)}.monitoring-viewport-right{right:calc(50vw + min(1280px,100vw - 840px)/-2 - 404px)}}@media (width<=1599px){.app-main.monitoring-page{width:min(1180px,100% - 24px)}.monitoring-command-shell,.monitoring-command-layout{min-height:0}.monitoring-viewport-panel{display:none}.monitoring-left-panel .monitoring-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.monitoring-left-panel .monitoring-data-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.monitoring-right-panel{grid-template-columns:1fr}.device-status-command-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.device-status-filter.all{grid-column:auto}.tactical-device-list{max-height:420px}}@media (width<=760px){.monitoring-left-panel .monitoring-summary-grid,.monitoring-left-panel .monitoring-data-strip,.device-status-command-grid{grid-template-columns:1fr 1fr}.monitoring-toolbar{grid-template-columns:1fr;align-items:stretch}.monitoring-actions,.segmented-control{grid-template-columns:1fr 1fr;width:100%;max-width:none;display:grid}.webgl-scene-card,.webgl-scene-canvas{height:auto;min-height:480px}.scene-hud.top-left,.scene-hud.top-right{max-width:calc(50% - 18px)}}@media (width<=520px){.monitoring-left-panel .monitoring-summary-grid,.monitoring-left-panel .monitoring-data-strip,.device-status-command-grid,.monitoring-actions,.segmented-control,.selected-device-strip dl{grid-template-columns:1fr}.scene-hud.top-left,.scene-hud.top-right,.scene-legend{max-width:calc(100% - 24px);position:static}.webgl-scene-card{gap:8px;padding:8px;display:grid}}body.floorplan-wide-mode .app-view-transition,body.route-editor-wide-mode .app-view-transition,body.monitoring-wide-mode .app-view-transition{will-change:auto;animation:none;transform:none}body.monitoring-wide-mode{overflow:hidden}.monitoring-command-shell.wide-mode{--monitoring-scene-height:100%;background:color-mix(in srgb, var(--app-bg) 94%, var(--card));box-sizing:border-box;z-index:120;height:100dvh;padding:12px 404px 12px 280px;display:grid;position:fixed;inset:0;overflow:hidden}.monitoring-command-shell.wide-mode .monitoring-command-layout,.monitoring-command-shell.wide-mode .monitoring-center-container,.monitoring-command-shell.wide-mode .monitoring-center-panel{height:100%;min-height:0}.monitoring-command-shell.wide-mode .monitoring-center-panel{grid-template-rows:auto minmax(0,1fr);display:grid}.monitoring-command-shell.wide-mode .monitoring-toolbar{padding:10px 12px}.monitoring-command-shell.wide-mode .webgl-scene-card{height:100%;min-height:0}.monitoring-command-shell.wide-mode .webgl-scene-canvas{min-height:0}.monitoring-wide-toggle{min-width:42px}.monitoring-wide-toggle.active{background:color-mix(in srgb, var(--blue) 14%, var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 34%, transparent);color:var(--blue)}.monitoring-viewport-panel.monitoring-wide-panel{z-index:130;height:calc(100dvh - 24px);max-height:calc(100dvh - 24px);display:grid;top:12px}.monitoring-viewport-left.monitoring-wide-panel{width:252px;left:12px}.monitoring-viewport-right.monitoring-wide-panel{width:380px;right:12px}@media (width<=1180px){.monitoring-command-shell.wide-mode{padding:12px}.monitoring-viewport-panel.monitoring-wide-panel{display:none}}.floorplan-editor-card{padding:clamp(18px,2vw,28px)}.floorplan-wide-layout{grid-template-columns:1fr}.floorplan-full-panel{order:-1}.floorplan-settings-panel{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:12px;margin-bottom:16px;display:grid}.floorplan-settings-panel label,.floorplan-settings-panel div{color:var(--muted);gap:7px;font-size:12px;font-weight:900;display:grid}.floorplan-settings-panel input{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 82%, transparent);color:var(--text);border:0;min-height:46px;padding:0 12px}.floorplan-settings-panel strong{color:var(--text);font-size:18px}.floorplan-full-panel .floorplan-canvas-wrap{aspect-ratio:1920/1260;width:100%;min-height:0}.floorplan-canvas-wrap.upload-ready{cursor:pointer}.upload-empty-button{cursor:pointer;pointer-events:auto;background:0 0;border:0;width:100%;height:100%}.floorplan-drawer,.floorplan-properties-panel{width:100%}.floorplan-drawer{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;display:grid}.floorplan-drawer .panel-title-row,.floorplan-drawer .muted-text{grid-column:1/-1}.beacon-list-button:disabled{opacity:.48}.placement-mode-card,.beacon-overview-card,.sensor-list-side-card,.selected-sensor-card,.sensor-overview-card{gap:12px;display:grid}.placement-mode-toggle{grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid}.placement-mode-toggle button{transition:background .2s,box-shadow .2s,color .2s,transform .2s}.placement-mode-toggle button.active{box-shadow:0 8px 18px color-mix(in srgb, var(--blue) 22%, transparent);transform:translateY(-1px)}.placement-mode-toggle button:nth-child(2).active{background:#ef4444;box-shadow:0 8px 18px #ef444438}.placement-mode-panel{--placement-accent:var(--blue);transform-origin:top;animation:.22s both placementModeCardIn}.beacon-list-side-card,.selected-beacon-card,.unplaced-notice-card,.beacon-overview-card{--placement-accent:var(--blue)}.sensor-list-side-card,.selected-sensor-card,.sensor-overview-card{--placement-accent:#ef4444}.placement-mode-panel.is-active{box-shadow:var(--shadow-surface), inset 3px 0 0 color-mix(in srgb, var(--placement-accent) 70%, transparent)}.placement-mode-panel.is-hidden{display:none}@keyframes placementModeCardIn{0%{opacity:0;transform:translateY(8px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}.beacon-list-button,.sensor-list-button{transition:background .2s,box-shadow .2s,opacity .2s,transform .2s}.beacon-list-button:hover:not(:disabled),.sensor-list-button:hover:not(:disabled),.beacon-list-button.active,.sensor-list-button.active{transform:translateY(-1px)}.floorplan-sensor-list{gap:8px;max-height:320px;display:grid;overflow:auto}.sensor-list-button{background:var(--card);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 78%, transparent);color:var(--text);text-align:left;border:0;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:2px 10px;min-height:68px;padding:10px 12px;display:grid}.sensor-list-button span{background:color-mix(in srgb, #ef4444 12%, var(--card-soft));color:#b91c1c;border-radius:999px;grid-row:span 2;justify-content:center;align-items:center;width:32px;height:32px;font-size:11px;font-weight:950;display:inline-flex}.sensor-list-button strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.sensor-list-button small{color:var(--muted);font-size:11px;font-weight:800}.sensor-list-button.active{box-shadow:inset 0 0 0 2px #ef4444, var(--shadow-surface)}.sensor-list-button.degraded,.sensor-list-button.warning{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--amber) 38%, var(--border))}.sensor-list-button.offline{opacity:.78}.sensor-dot{color:#fff;border-radius:999px;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:950;display:inline-flex}.sensor-dot.normal{background:#ef4444}.sensor-dot.warning{background:var(--amber)}.sensor-dot.offline{background:#64748b}.sensor-property-stack,.sensor-local-actions{gap:10px;display:grid}.sensor-local-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.coordinate-sensor-section{gap:12px;margin-top:18px;display:grid}.floorplan-properties-panel .property-stack{grid-template-columns:repeat(3,minmax(0,1fr))}.floorplan-properties-panel .selected-summary,.floorplan-properties-panel .primary-button,.floorplan-properties-panel .secondary-button,.floorplan-properties-panel h3,.floorplan-properties-panel .muted-text{grid-column:1/-1}.monitoring-floor-image{--floorplan-azimuth-deg:0deg;object-fit:contain;opacity:.78;pointer-events:none;height:100%;transform:rotate(var(--floorplan-azimuth-deg));transform-origin:50%;z-index:0;width:100%;position:absolute;inset:0}.webgl-scene-canvas{cursor:crosshair;touch-action:manipulation;z-index:1;width:100%;height:100%;min-height:540px;display:block;position:relative}@media (width<=960px){.floorplan-settings-panel,.floorplan-properties-panel .property-stack{grid-template-columns:1fr}}main.floorplan-page{width:min(1680px,100% - 24px)}.floorplan-workbench{grid-template-columns:292px minmax(0,1fr) 320px;align-items:start;gap:16px;display:grid}.floorplan-side-panel{gap:14px;display:grid;position:sticky;top:86px}.floorplan-side-card{background:var(--card-soft);border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 74%, transparent), var(--shadow-surface);padding:14px}.floorplan-side-card h3{letter-spacing:-.03em;margin:0;font-size:16px}.side-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.side-metric-grid article{background:var(--card);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 78%, transparent);border-radius:16px;gap:8px;padding:12px;display:grid}.side-metric-grid span{color:var(--muted);font-size:11px;font-weight:900}.side-metric-grid strong{color:var(--text);letter-spacing:-.06em;font-size:26px;line-height:1}.floorplan-left-panel .property-stack{margin-top:12px}.floorplan-left-panel .property-stack label{color:var(--muted);gap:7px;font-size:12px;font-weight:900;display:grid}.floorplan-left-panel .property-stack input,.floorplan-left-panel .property-stack select{background:var(--card);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 82%, transparent);color:var(--text);border:0;min-height:44px;padding:0 12px}.floorplan-center-panel{min-width:0}.floorplan-beacon-list{gap:8px;max-height:calc(100vh - 150px);padding-right:2px;display:grid;overflow:auto}.floorplan-beacon-list .beacon-list-button{margin-top:0}.beacon-list-button.active{box-shadow:inset 0 0 0 2px var(--blue), var(--shadow-surface)}.floorplan-right-panel .beacon-list-button small{padding-left:46px}@media (width<=1500px){.floorplan-workbench{grid-template-columns:270px minmax(0,1fr) 290px}}@media (width<=1120px){.floorplan-workbench{grid-template-columns:1fr}.floorplan-side-panel{position:static}.floorplan-left-panel{order:1}.floorplan-center-panel{order:0}.floorplan-right-panel{order:2}.floorplan-beacon-list{max-height:none}}.floorplan-editor-shell{grid-template-columns:292px minmax(0,1fr) 320px;align-items:start;gap:16px;display:grid}.floorplan-center-container{min-width:0}.outside-panel{box-shadow:none;background:0 0;padding:12px}.floorplan-editor-shell>.floorplan-side-panel{gap:14px;display:grid;position:sticky;top:86px}.floorplan-editor-shell .floorplan-side-card{background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow-surface);padding:16px}.floorplan-editor-shell .floorplan-beacon-list{max-height:calc(100vh - 128px)}.floorplan-center-container .coordinate-card{margin-top:16px}@media (width<=1500px){.floorplan-editor-shell{grid-template-columns:270px minmax(0,1fr) 290px}}@media (width<=1120px){.floorplan-editor-shell{grid-template-columns:1fr}.floorplan-editor-shell>.floorplan-side-panel{position:static}.floorplan-editor-shell .floorplan-left-panel{order:1}.floorplan-editor-shell .floorplan-center-container{order:0}.floorplan-editor-shell .floorplan-right-panel{order:2}.floorplan-editor-shell .floorplan-beacon-list{max-height:none}}.floorplan-view-toggle{background:var(--card-soft);border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 74%, transparent);grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:16px 0;padding:6px;display:grid}.floorplan-view-toggle button{border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;font:inherit;background:0 0;border:0;min-height:42px;padding:0 14px;font-size:13px;font-weight:900}.floorplan-view-toggle button.active{background:var(--card);box-shadow:var(--shadow-surface);color:var(--text)}.floorplan-coordinate-view{min-height:min(76vh,820px)}.floorplan-settings-side-card{grid-template-columns:1fr;align-items:stretch;margin-bottom:0}.floorplan-settings-side-card .secondary-button{width:100%}.floorplan-size-summary{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 76%, transparent);padding:12px}.floorplan-left-panel .floorplan-beacon-list{max-height:min(48vh,440px)}.floorplan-left-panel .beacon-list-button small{padding-left:46px}.unplaced-notice-card{background:linear-gradient(180deg, color-mix(in srgb, var(--blue) 10%, var(--card)), var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 18%, transparent), var(--shadow-surface)}.unplaced-notice-card>strong{color:var(--text);letter-spacing:-.04em;margin-top:10px;font-size:18px;display:block}.notice-close-button{background:color-mix(in srgb, var(--card-soft) 82%, transparent);color:var(--muted);cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;width:28px;height:28px;font-size:18px;font-weight:900;display:inline-flex}.notice-close-button:hover{background:color-mix(in srgb, var(--blue) 12%, var(--card));color:var(--blue)}.beacon-list-button.unplaced{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 20%, var(--border))}.beacon-list-button.placed{opacity:.88}.floorplan-settings-side-card .azimuth-knob-panel{background:var(--card-soft);border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 76%, transparent);align-items:stretch;gap:12px;padding:14px;display:grid}.floorplan-settings-side-card .azimuth-knob-header{justify-content:space-between;align-items:center;display:flex}.azimuth-knob-header span{color:var(--muted);font-size:12px;font-weight:900}.azimuth-knob-header strong{color:var(--text);letter-spacing:-.04em;font-size:20px}.azimuth-knob{--azimuth-deg:0deg;background:radial-gradient(circle at 50% 42%, var(--card) 0 34%, color-mix(in srgb, var(--blue) 10%, var(--card-soft)) 35% 100%);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 74%, transparent), var(--shadow-surface);color:var(--text);cursor:grab;touch-action:none;border:0;border-radius:999px;place-self:center;width:166px;height:166px;position:relative}.azimuth-knob:active{cursor:grabbing}.azimuth-knob:focus-visible{outline:3px solid color-mix(in srgb, var(--blue) 34%, transparent);outline-offset:4px}.azimuth-knob-ring{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--blue) 28%, transparent);transform:rotate(var(--azimuth-deg));border-radius:999px;transition:transform .12s;position:absolute;inset:22px}.azimuth-needle{background:linear-gradient(180deg, var(--blue), color-mix(in srgb, var(--blue) 60%, #7dd3fc));box-shadow:0 8px 20px color-mix(in srgb, var(--blue) 24%, transparent);border-radius:999px;width:5px;height:54px;position:absolute;top:8px;left:50%;transform:translate(-50%)}.azimuth-needle:before{border-bottom:13px solid var(--blue);content:"";border-left:8px solid #0000;border-right:8px solid #0000;position:absolute;top:-10px;left:50%;transform:translate(-50%)}.azimuth-cardinal{color:var(--muted);z-index:1;font-size:11px;font-weight:950;position:absolute}.azimuth-cardinal.north{top:9px;left:50%;transform:translate(-50%)}.azimuth-cardinal.east{top:50%;right:12px;transform:translateY(-50%)}.azimuth-cardinal.south{bottom:9px;left:50%;transform:translate(-50%)}.azimuth-cardinal.west{top:50%;left:12px;transform:translateY(-50%)}.azimuth-knob-center{background:var(--card);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 70%, transparent);color:var(--blue);z-index:2;border-radius:999px;justify-content:center;align-items:center;width:54px;height:54px;font-size:13px;font-weight:950;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.floorplan-full-panel .floorplan-canvas-wrap{aspect-ratio:1920/1260;justify-content:center;align-items:center;min-height:0;display:flex}.floorplan-full-panel .floorplan-canvas{aspect-ratio:1920/1260;width:min(100%,1.52381*min(86vh,1120px));height:auto;max-height:none}.azimuth-knob-ring{transition:none}.webgl-scene-card.floorplan-calibrated{aspect-ratio:1920/1260;min-height:0}.webgl-scene-card.floorplan-calibrated .webgl-scene-canvas{cursor:crosshair;touch-action:manipulation;z-index:1;width:100%;height:100%;min-height:0;display:block;position:relative}.webgl-scene-card.floorplan-calibrated .monitoring-floor-image{object-fit:contain}.azimuth-knob{overflow:visible}.azimuth-knob-ring{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--blue) 34%, transparent), 0 0 0 1px color-mix(in srgb, var(--blue) 10%, transparent);transform:rotate(var(--azimuth-deg));transform-origin:50%;inset:24px;overflow:visible}.azimuth-needle{width:6px;height:50px;top:11px;transform:translate(-50%)}.azimuth-needle:before{border-bottom-width:15px;border-left-width:10px;border-right-width:10px;top:-12px}.azimuth-cardinal{background:color-mix(in srgb, var(--card) 86%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 60%, transparent);border-radius:999px;justify-content:center;align-items:center;width:22px;height:22px;line-height:1;display:flex}.azimuth-cardinal.north{color:var(--blue);transform:translate(-50%, -50%) rotate(calc(-1 * var(--azimuth-deg)));font-size:13px;top:-19px;left:50%}.azimuth-knob{background:linear-gradient(180deg, color-mix(in srgb, var(--blue) 12%, var(--card-soft)), color-mix(in srgb, var(--blue) 6%, var(--card-soft)));overflow:visible}.azimuth-knob:before{background:color-mix(in srgb, var(--blue) 8%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 9%, transparent);content:"";pointer-events:none;border-radius:999px;position:absolute;inset:18px}.azimuth-knob-ring{box-shadow:inset 0 0 0 3px color-mix(in srgb, var(--blue) 32%, transparent);height:116px;transform:translate(-50%, -50%) rotate(var(--azimuth-deg));transform-origin:50%;z-index:2;border-radius:999px;width:116px;position:absolute;inset:50% auto auto 50%;overflow:visible}.azimuth-needle{z-index:3;width:6px;height:52px;top:6px;left:50%;transform:translate(-50%)}.azimuth-knob-center{z-index:4;width:60px;height:60px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.azimuth-cardinal{z-index:4}.azimuth-cardinal.north{transform:translate(-50%, -50%) rotate(calc(-1 * var(--azimuth-deg)));top:-18px;left:50%}.azimuth-cardinal.east{transform:translate(50%, -50%) rotate(calc(-1 * var(--azimuth-deg)));top:50%;right:-18px}.azimuth-cardinal.south{transform:translate(-50%, 50%) rotate(calc(-1 * var(--azimuth-deg)));bottom:-18px;left:50%}.azimuth-cardinal.west{transform:translate(-50%, -50%) rotate(calc(-1 * var(--azimuth-deg)));top:50%;left:-18px}.azimuth-lock-group{align-items:center;gap:8px;display:flex}.azimuth-lock-button{background:var(--card);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);color:var(--muted);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:6px;min-height:30px;padding:0 10px;display:inline-flex}.azimuth-lock-button span:not(.lock-icon){color:inherit;font-size:11px;font-weight:950}.azimuth-lock-button:hover{background:color-mix(in srgb, var(--blue) 8%, var(--card));color:var(--blue)}.lock-icon{box-sizing:border-box;border:2px solid;border-radius:3px;width:12px;height:9px;margin-top:5px;display:inline-block;position:relative}.lock-icon:before{box-sizing:border-box;content:"";transform-origin:20% 100%;border:2px solid;border-bottom:0;border-radius:8px 8px 0 0;width:10px;height:9px;position:absolute;top:-9px;left:50%;transform:translate(-50%)}.azimuth-lock-button:not(.locked) .lock-icon:before{transform:translate(-50%)rotate(-18deg)}.azimuth-knob:disabled{cursor:not-allowed;opacity:.72}.azimuth-locked-note{color:var(--blue);font-weight:850}.floorplan-settings-side-card input:disabled{background:color-mix(in srgb, var(--card-soft) 88%, transparent);color:var(--muted);cursor:not-allowed}.azimuth-heading-lock{align-items:center;gap:10px;display:flex}.azimuth-heading-label{color:var(--muted);white-space:nowrap;font-size:12px;font-weight:950}.azimuth-lock-button{background:linear-gradient(180deg, color-mix(in srgb, var(--blue) 10%, var(--card)), var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 22%, transparent), 0 10px 24px color-mix(in srgb, var(--blue) 10%, transparent);color:var(--text);gap:9px;min-height:42px;padding:0 16px}.azimuth-lock-button span:not(.lock-icon){letter-spacing:-.03em;font-size:13px}.azimuth-lock-button:hover{background:color-mix(in srgb, var(--blue) 14%, var(--card));transform:translateY(-1px)}.azimuth-lock-button.locked{background:linear-gradient(180deg, var(--blue), color-mix(in srgb, var(--blue) 78%, #1d4ed8));box-shadow:0 12px 28px color-mix(in srgb, var(--blue) 30%, transparent);color:#fff}.lock-icon{border-radius:4px;width:15px;height:12px;margin-top:6px}.lock-icon:before{width:12px;height:11px;top:-11px}.floorplan-settings-side-card>.panel-title-row{width:100%}.floorplan-settings-side-card>.panel-title-row .mini-badge{margin-left:auto}.settings-divider{background:color-mix(in srgb, var(--border) 78%, transparent);width:100%;height:1px;margin:2px 0 4px}.beacon-clear-all-button{width:100%;margin-top:12px}.beacon-visibility-toggle{background:var(--card);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 76%, transparent);color:var(--muted);cursor:pointer;white-space:nowrap;border:0;border-radius:999px;align-items:center;gap:7px;min-height:32px;padding:0 11px;font-size:12px;font-weight:950;display:inline-flex}.beacon-visibility-toggle:hover:not(:disabled){background:color-mix(in srgb, var(--blue) 9%, var(--card));color:var(--blue)}.beacon-visibility-toggle.active{background:color-mix(in srgb, var(--blue) 12%, var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 28%, transparent), 0 8px 18px color-mix(in srgb, var(--blue) 10%, transparent);color:var(--blue)}.beacon-visibility-toggle:disabled{cursor:not-allowed;opacity:.45}.visibility-dot{box-shadow:0 0 0 4px color-mix(in srgb, currentColor 14%, transparent);background:currentColor;border-radius:999px;width:7px;height:7px;display:inline-flex}.beacon-visibility-toggle:not(.active) .visibility-dot{background:0 0;box-shadow:inset 0 0 0 2px}.swal2-toss-popup{box-shadow:var(--shadow-card);font-family:var(--font-main);border-radius:28px;padding:24px}.swal2-toss-confirm{background:var(--blue);color:#fff;cursor:pointer;border:0;border-radius:999px;min-height:44px;padding:0 22px;font-size:14px;font-weight:900}.monitoring-beacon-toggle.active{background:color-mix(in srgb, var(--blue) 12%, var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 28%, transparent);color:var(--blue)}.monitoring-beacon-toggle:disabled{cursor:not-allowed;opacity:.48}.coordinate-actions{justify-content:flex-end;align-items:center;gap:8px;display:inline-flex}.compact-export-button{white-space:nowrap;min-height:34px;padding:0 12px;font-size:12px}.beacon-label-mode-control{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);grid-template-columns:auto 1fr;align-items:center;gap:8px;margin:12px 0 10px;padding:10px;display:grid}.beacon-label-mode-control>span{color:var(--muted);white-space:nowrap;font-size:11px;font-weight:950}.compact-label-mode{grid-template-columns:repeat(3,minmax(0,1fr));padding:4px}.compact-label-mode button{min-height:30px;padding:0 8px;font-size:11px}body.floorplan-wide-mode{overflow:hidden}.floorplan-editor-shell.wide-mode{background:color-mix(in srgb, var(--app-bg) 94%, var(--card));box-sizing:border-box;z-index:120;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(252px,300px) minmax(0,1fr) minmax(268px,320px);align-items:stretch;gap:12px;height:100dvh;padding:12px;display:grid;position:fixed;inset:0;overflow:hidden}.floorplan-editor-shell.wide-mode>.floorplan-side-panel{overscroll-behavior:contain;align-content:start;gap:12px;min-height:0;display:grid;position:static;overflow:auto}.floorplan-editor-shell.wide-mode .floorplan-left-panel{order:0}.floorplan-editor-shell.wide-mode .floorplan-center-container{border-radius:28px;order:1;grid-template-rows:minmax(0,1fr);min-width:0;min-height:0;padding:14px;display:grid;overflow:hidden}.floorplan-editor-shell.wide-mode .floorplan-right-panel{order:2}.floorplan-editor-shell.wide-mode .editor-header,.floorplan-editor-shell.wide-mode .floorplan-view-toggle{display:none}.floorplan-editor-shell.wide-mode .floorplan-side-card{padding:14px}.floorplan-editor-shell.wide-mode .floorplan-beacon-list{max-height:calc(100dvh - 308px)}.floorplan-editor-shell.wide-mode .selected-beacon-card .property-stack{grid-template-columns:1fr}.floorplan-editor-shell.wide-mode .floorplan-full-panel{grid-template-rows:auto minmax(0,1fr) auto;place-items:stretch center;gap:10px;min-width:0;height:100%;min-height:0;padding:12px;display:grid;overflow:hidden}.floorplan-editor-shell.wide-mode .canvas-toolbar{background:color-mix(in srgb, var(--card) 90%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);border-radius:20px;align-items:center;width:100%;margin:0;padding:10px 12px}.floorplan-editor-shell.wide-mode .canvas-toolbar>div:first-child{min-width:0}.floorplan-editor-shell.wide-mode .canvas-toolbar .muted-text{margin:4px 0 0}.floorplan-editor-shell.wide-mode .floorplan-canvas-wrap{aspect-ratio:1920/1260;place-self:center;width:min(100%,152.381dvh - 256px);max-width:100%;min-height:0;max-height:100%}.floorplan-editor-shell.wide-mode .floorplan-canvas{aspect-ratio:1920/1260;width:100%;height:100%;max-height:100%}.floorplan-editor-shell.wide-mode .status-row{width:100%;min-height:28px;margin:0}.floorplan-editor-shell.wide-mode .icon-tool-button{min-width:42px;height:42px}.wide-mode-toggle.active{background:color-mix(in srgb, var(--blue) 14%, var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 34%, transparent);color:var(--blue)}@media (width<=1280px){.floorplan-editor-shell.wide-mode{grid-template-columns:minmax(220px,260px) minmax(0,1fr) minmax(230px,280px)}}@media (width<=980px){body.floorplan-wide-mode{overflow:auto}.floorplan-editor-shell.wide-mode{grid-template-columns:1fr;height:auto;min-height:100dvh;inset:0;overflow:auto}.floorplan-editor-shell.wide-mode>.floorplan-side-panel{max-height:none;overflow:visible}.floorplan-editor-shell.wide-mode .floorplan-left-panel{order:1}.floorplan-editor-shell.wide-mode .floorplan-center-container{order:0;padding:12px}.floorplan-editor-shell.wide-mode .floorplan-right-panel{order:2}.floorplan-editor-shell.wide-mode .floorplan-view-toggle{display:grid}.floorplan-editor-shell.wide-mode .canvas-toolbar{flex-direction:column;align-items:stretch}.floorplan-editor-shell.wide-mode .floorplan-canvas-wrap{width:min(100%,152.381dvh - 347.429px)}}.icon-toolbar{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;margin-top:0;display:flex}.floorplan-zoom-control{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:color-mix(in srgb, var(--card) 90%, transparent);box-shadow:var(--shadow-surface), inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);border-radius:999px;flex:none;align-items:center;gap:3px;min-height:44px;padding:5px;display:inline-flex}.floorplan-canvas-zoom-overlay{z-index:7;position:absolute;bottom:14px;right:14px}.floorplan-ruler-overlay{pointer-events:none;z-index:6;position:absolute;inset:0}.floorplan-ruler-svg{width:100%;height:100%;display:block}.floorplan-ruler-band{fill:color-mix(in srgb, var(--card) 88%, transparent);stroke:color-mix(in srgb, var(--border) 82%, transparent);stroke-width:1.5px;vector-effect:non-scaling-stroke}.floorplan-ruler-tick line{stroke:color-mix(in srgb, var(--muted) 70%, transparent);stroke-linecap:square;stroke-width:1.5px;vector-effect:non-scaling-stroke}.floorplan-ruler-tick.medium line{stroke:color-mix(in srgb, var(--text) 44%, transparent);stroke-width:1.8px}.floorplan-ruler-tick.major line{stroke:color-mix(in srgb, var(--text) 68%, transparent);stroke-width:2.3px}.floorplan-ruler-label{fill:color-mix(in srgb, var(--text) 76%, transparent);letter-spacing:0;paint-order:stroke;stroke:color-mix(in srgb, var(--card) 88%, transparent);stroke-linejoin:round;stroke-width:4px;font-size:19px;font-weight:950}.floorplan-ruler-label.vertical{text-anchor:start}.floorplan-ruler-hit{cursor:pointer;opacity:0;pointer-events:auto;z-index:1;background:0 0;border:0;position:absolute}.floorplan-ruler-hit-corner{width:52px;height:52px;top:0;left:0}.floorplan-ruler-hit-top{height:34px;top:0;left:52px;right:0}.floorplan-ruler-hit-left{width:34px;top:52px;bottom:0;left:0}.floorplan-ruler-unit-popover{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb, var(--card) 95%, transparent);box-shadow:var(--shadow-surface), inset 0 0 0 1px color-mix(in srgb, var(--border) 76%, transparent);pointer-events:auto;z-index:4;border-radius:14px;gap:4px;min-width:144px;padding:7px;display:grid;position:absolute;top:40px;left:6px}.floorplan-ruler-unit-popover button{color:var(--text);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:2px;width:100%;min-height:36px;padding:0 9px;transition:background .18s,color .18s,transform .18s;display:grid}.floorplan-ruler-unit-popover button:hover,.floorplan-ruler-unit-popover button:focus-visible,.floorplan-ruler-unit-popover button.active{background:color-mix(in srgb, var(--blue) 12%, transparent);color:var(--blue);outline:0}.floorplan-ruler-unit-popover button:active{transform:scale(.98)}.floorplan-ruler-unit-popover strong{letter-spacing:0;text-transform:uppercase;font-size:12px;font-weight:950;line-height:1}.floorplan-ruler-unit-popover span{color:currentColor;opacity:.72;font-size:11px;font-weight:850;line-height:1.1}.floorplan-zoom-control button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;gap:4px;min-width:34px;height:34px;padding:0 9px;font-size:12px;font-weight:950;transition:background .18s,color .18s,transform .18s,box-shadow .18s;display:inline-flex}.floorplan-zoom-step-button,.floorplan-zoom-reset-button,.floorplan-zoom-fit-button{width:34px;padding:12px}.floorplan-zoom-control button:hover:not(:disabled),.floorplan-zoom-control button:focus-visible{background:color-mix(in srgb, var(--blue) 13%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 18%, transparent);color:var(--blue);outline:0}.floorplan-zoom-control button:active:not(:disabled){transform:translateY(1px)scale(.985)}.floorplan-zoom-control button:disabled{cursor:not-allowed;opacity:.4}.floorplan-zoom-input-label:has(input:disabled){cursor:not-allowed;opacity:.4}.floorplan-zoom-control svg{font-size:15px;line-height:1}.floorplan-zoom-input-label{background:color-mix(in srgb, var(--card-soft) 76%, var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 68%, transparent);color:var(--muted);border-radius:999px;justify-content:center;align-items:center;gap:2px;min-width:72px;height:34px;padding:0 10px;font-size:11px;font-weight:950;display:inline-flex}.floorplan-zoom-input-label input{appearance:textfield;color:var(--text);text-align:right;background:0 0;border:0;outline:0;width:40px;padding:12px;font-size:13px;font-weight:950}.floorplan-zoom-input-label input::-webkit-inner-spin-button{appearance:none;margin:0}.floorplan-zoom-input-label input::-webkit-outer-spin-button{appearance:none;margin:0}.floorplan-zoom-divider{background:color-mix(in srgb, var(--border) 82%, transparent);width:1px;height:20px;margin:0 2px;display:block}.icon-tool-button{background:var(--card);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 76%, transparent);color:var(--muted);cursor:pointer;border:0;border-radius:14px;flex:none;justify-content:center;align-items:center;gap:4px;min-width:40px;height:40px;padding:0 10px;transition:background .18s,box-shadow .18s,color .18s,transform .18s;display:inline-flex}.icon-tool-button:hover:not(:disabled),.icon-tool-button.active{background:color-mix(in srgb, var(--blue) 12%, var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 30%, transparent);color:var(--blue)}.icon-tool-button:active:not(:disabled){transform:translateY(1px)scale(.985)}.icon-tool-button:focus-visible{outline:4px solid color-mix(in srgb, var(--blue) 24%, transparent);outline-offset:2px}.icon-tool-button:disabled{cursor:not-allowed;opacity:.42}.icon-tool-button .material-icons{font-size:22px;line-height:1}.icon-tool-button svg{width:18px;height:18px}.icon-tool-format{color:inherit;letter-spacing:0;font-size:10px;font-weight:950;line-height:1}.icon-tool-button.compact-export-button{white-space:nowrap;min-width:44px;height:34px;min-height:34px;padding:0 10px;font-size:12px}.floorplan-upload-menu,.floorplan-export-menu{z-index:12;flex:none;display:inline-flex;position:relative}.upload-menu-trigger,.export-menu-trigger{gap:7px;min-width:58px;padding:0 12px}.export-menu-chevron{opacity:.68;transition:transform .18s;width:11px!important;height:11px!important}.upload-menu-trigger.active .export-menu-chevron,.export-menu-trigger.active .export-menu-chevron{transform:rotate(180deg)}.floorplan-upload-dropdown,.floorplan-export-dropdown{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb, var(--card) 94%, transparent);box-shadow:var(--shadow-surface), inset 0 0 0 1px color-mix(in srgb, var(--border) 76%, transparent);border-radius:16px;gap:4px;min-width:128px;padding:8px;display:grid;position:absolute;top:calc(100% + 8px);right:0}.floorplan-upload-dropdown button,.floorplan-export-dropdown button{color:var(--text);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:12px;grid-template-columns:18px 54px;place-items:center start;gap:8px;width:100%;height:40px;padding:0 10px;font-size:12px;font-weight:850;transition:background .18s,color .18s,transform .18s;display:grid}.floorplan-upload-dropdown button:hover:not(:disabled),.floorplan-upload-dropdown button:focus-visible,.floorplan-export-dropdown button:hover:not(:disabled),.floorplan-export-dropdown button:focus-visible{background:color-mix(in srgb, var(--blue) 11%, transparent);color:var(--blue);outline:0}.floorplan-upload-dropdown button:active:not(:disabled),.floorplan-export-dropdown button:active:not(:disabled){transform:scale(.98)}.floorplan-upload-dropdown button:disabled,.floorplan-export-dropdown button:disabled{cursor:not-allowed;opacity:.42}.floorplan-upload-dropdown svg,.floorplan-export-dropdown svg{color:currentColor;width:15px;height:15px}.export-format-badge{background:var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 78%, transparent);color:currentColor;letter-spacing:0;border-radius:8px;justify-content:center;align-items:center;min-width:54px;height:24px;padding:0 7px;font-size:11px;font-weight:950;display:inline-flex}.app-header-with-actions{justify-content:space-between;align-items:center}.app-header-copy{flex:auto;min-width:0}.header-admin-actions,.section-actions,.admin-quick-actions,.form-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.admin-session-pill{background:var(--green-soft);color:var(--green);white-space:nowrap;border-radius:999px;align-items:center;min-height:34px;padding:0 12px;font-size:12px;font-weight:950;display:inline-flex}.admin-session-pill.muted{background:var(--card-soft);color:var(--muted);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 80%, transparent)}.admin-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.admin-login-card,.admin-status-card{max-width:760px}.admin-status-card{justify-content:space-between;align-items:center;gap:16px;display:flex}.admin-status-card strong{letter-spacing:-.04em;margin-top:4px;font-size:24px;display:block}.admin-status-card small{color:var(--muted);margin-top:4px;font-weight:800;display:block}.admin-settings-card{max-width:none}.management-hub-card{justify-content:space-between;align-items:center;gap:24px;display:flex}.management-hub-copy{gap:6px;min-width:0;max-width:680px;display:grid}.management-hub-copy p{color:var(--muted);margin:0;font-size:13px;font-weight:800;line-height:1.5}.management-session-meta{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);gap:4px;min-width:220px;padding:14px 16px;display:grid}.management-session-meta span{color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:950}.management-session-meta strong{font-size:18px;font-weight:950}.management-session-meta small{color:var(--muted);font-size:12px;font-weight:850}.management-tabs-card{padding:10px}.management-tab-strip{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.management-tab-strip button{border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;text-align:left;min-height:64px;transition:background-color .18s var(--ease-out), color .18s var(--ease-out), transform .18s var(--ease-out);background:0 0;border:0;align-items:center;gap:10px;padding:12px 14px;display:flex}.management-tab-strip button:hover:not(:disabled){background:var(--card-soft);color:var(--text)}.management-tab-strip button:disabled{cursor:wait;opacity:.64}.management-tab-strip button.active{background:color-mix(in srgb, var(--blue) 12%, var(--card-soft));color:var(--blue)}.management-tab-strip button svg{flex:none;width:17px;height:17px}.management-tab-strip span{gap:3px;min-width:0;display:grid}.management-tab-strip strong{color:inherit;font-size:14px;font-weight:950}.management-tab-strip small{color:var(--muted);font-size:11px;font-weight:800;line-height:1.3}.management-loading-card{animation:management-panel-in .24s var(--ease-out);gap:14px;display:grid;overflow:hidden}.management-loading-copy{align-items:center;gap:14px;display:flex}.management-loading-copy strong{font-size:16px;font-weight:950;line-height:1.45;display:block}.management-loading-icon{background:var(--blue-soft);color:var(--blue);border-radius:16px;flex:none;justify-content:center;align-items:center;width:42px;height:42px;display:inline-flex}.management-loading-icon svg{width:17px;height:17px}.management-loading-bar{background:var(--card-soft);border-radius:999px;height:7px;position:relative;overflow:hidden}.management-loading-bar span{animation:management-loading-scan .72s var(--ease-out) infinite;background:linear-gradient(90deg, transparent, var(--blue), transparent);border-radius:inherit;width:46%;height:100%;display:block}@keyframes management-panel-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes management-loading-scan{0%{transform:translate(-115%)}to{transform:translate(230%)}}.admin-settings-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.admin-settings-tile{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 78%, transparent);color:var(--text);cursor:pointer;text-align:left;min-height:112px;transition:background-color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .18s var(--ease-out);border:0;align-items:flex-start;gap:12px;padding:16px;display:flex}.admin-settings-tile:hover:not(:disabled){background:color-mix(in srgb, var(--blue) 8%, var(--card-soft));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 26%, transparent);transform:translateY(-1px)}.admin-settings-tile:disabled{cursor:not-allowed;opacity:.52}.admin-settings-tile svg{color:var(--blue);flex:none;width:18px;height:18px;margin-top:2px}.admin-settings-tile span{gap:6px;min-width:0;display:grid}.admin-settings-tile strong{font-size:16px;font-weight:950}.admin-settings-tile small{color:var(--muted);font-size:12px;font-weight:800;line-height:1.45}.admin-form-card{margin-bottom:0;transition:box-shadow .18s,transform .18s}.admin-form-card.active{box-shadow:var(--shadow-surface-hover);transform:translateY(-2px)}.admin-form-wide{grid-column:1/-1}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.form-grid label{color:var(--muted);gap:7px;font-size:13px;font-weight:900;display:grid}.form-grid input,.form-grid select{background:var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 84%, transparent);color:var(--text);border:0;border-radius:14px;outline:none;width:100%;min-height:44px;padding:0 13px}.form-grid input:focus,.form-grid select:focus{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--blue) 52%, transparent)}.form-actions{grid-column:1/-1;justify-content:flex-start;margin-top:4px}.beacon-create-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.beacon-create-grid label:first-child,.beacon-create-grid label:nth-child(2),.beacon-create-grid label:nth-child(3){grid-column:span 1}@media (width<=860px){.app-header-with-actions,.admin-status-card{flex-direction:column;align-items:flex-start}.header-admin-actions,.section-actions,.admin-quick-actions{justify-content:flex-start}.admin-grid,.admin-settings-grid,.management-tab-strip,.form-grid,.beacon-create-grid{grid-template-columns:1fr}}.login-gate-page{min-height:100vh;padding:max(24px, env(safe-area-inset-top)) 16px max(92px, env(safe-area-inset-bottom));align-items:center;display:flex}.login-gate-card{background:var(--card);border-radius:var(--radius-xl);box-shadow:var(--shadow-surface);width:min(100%,760px);max-width:760px;margin:0 auto;padding:clamp(24px,5vw,42px)}.login-gate-brand{align-items:center;gap:18px;margin-bottom:24px;display:flex}.login-gate-brand h1{margin-bottom:10px}.login-gate-brand p:last-child,.login-hint{color:var(--muted);font-size:14px;font-weight:800;line-height:1.55}.login-gate-form{grid-template-columns:1fr}.login-hint{background:var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 84%, transparent);border-radius:14px;padding:12px 14px}.login-hint strong{color:var(--blue)}.login-error{margin-bottom:14px}@media (width<=640px){.login-gate-brand{flex-direction:column;align-items:flex-start}}.button.compact,.secondary-button.compact,.button.secondary.compact{min-height:36px;padding:0 11px}.button .material-icons,.button.secondary .material-icons,.secondary-button .material-icons,.icon-button .material-icons,.link-button .material-icons,.button svg,.button.secondary svg,.secondary-button svg,.icon-button svg,.link-button svg,.app-nav button svg{flex:none;width:16px;height:16px;font-size:18px;line-height:1}.table-actions{align-items:center;gap:6px;display:inline-flex}.icon-button,.link-button{cursor:pointer;border:0;justify-content:center;align-items:center;font-family:inherit;font-weight:900;display:inline-flex}.icon-button{background:var(--card-soft);color:var(--text);height:38px;transition:background-color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .18s var(--ease-out);border-radius:12px;width:38px}.icon-button:hover{background:color-mix(in srgb, var(--blue) 10%, var(--card-soft));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 20%, transparent);color:var(--blue);transform:translateY(-1px)}.icon-button.danger{color:#ef4444}.icon-button.danger:hover{background:color-mix(in srgb, #ef4444 10%, var(--card-soft));box-shadow:inset 0 0 0 1px #ef444438}.icon-button.warning{background:var(--amber-soft);color:var(--amber)}.icon-button.warning:hover{background:var(--amber);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--amber) 22%, transparent);color:#fff}.button.warning{background:var(--amber);color:#fff}.button.warning:hover{box-shadow:0 16px 34px color-mix(in srgb, var(--amber) 26%, transparent)}.icon-button:disabled,.button:disabled,.secondary-button:disabled{cursor:not-allowed;opacity:.55;transform:none}.link-button{color:var(--blue);background:0 0;padding:12px;text-decoration:none}.link-button:hover{text-decoration:underline}.selected-row td{background:color-mix(in srgb, var(--blue) 7%, transparent)}.beacon-detail-card{gap:18px;display:grid}.beacon-detail-grid,.modal-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.beacon-detail-grid article,.modal-summary-grid article{background:var(--card-soft);border-radius:20px;gap:6px;padding:16px;display:grid}.beacon-detail-grid span,.modal-summary-grid span{color:var(--muted);font-size:12px;font-weight:900}.beacon-detail-grid strong,.modal-summary-grid strong{font-size:18px}.beacon-detail-grid small{color:var(--muted);font-weight:800}.modal-backdrop{z-index:80;background:#0f172a73;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.app-modal{background:var(--card);box-shadow:var(--shadow-card);border-radius:28px;width:min(100%,560px);max-width:560px;max-height:min(760px,100vh - 48px);padding:26px;overflow:auto}.app-modal-wide{width:min(100%,920px);max-width:920px}.modal-heading{gap:6px;display:grid}.modal-heading h2{letter-spacing:-.05em;margin:0;font-size:28px}.modal-heading p:last-child{color:var(--muted);margin:0;font-weight:700}.modal-heading-wide,.form-actions.modal-heading-wide{grid-column:1/-1}.notification-modal{width:min(100%,1080px);max-width:min(1080px,100vw - 32px)}.notification-form textarea{background:var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 84%, transparent);color:var(--text);font:inherit;resize:vertical;border:0;border-radius:16px;width:100%;min-height:96px;padding:13px 14px}.notification-form textarea:focus{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--blue) 72%, transparent);outline:none}.notification-target-summary,.notification-result-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.notification-result-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.notification-target-summary article,.notification-result-grid article{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);gap:5px;padding:14px;display:grid}.notification-target-summary span,.notification-result-grid span{color:var(--muted);font-size:12px;font-weight:900}.notification-target-summary strong,.notification-result-grid strong{color:var(--text);overflow-wrap:anywhere;min-width:0;font-size:20px;font-weight:950}.notification-target-summary small{color:var(--muted);font-size:12px;font-weight:750}.notification-actions{justify-content:flex-end}.notification-history-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px;display:grid}.notification-history-grid section{background:var(--card-soft);border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);gap:12px;min-width:0;padding:16px;display:grid}.compact-scroll{max-height:280px}.notification-table{min-width:620px}.delivery-status{border-radius:999px;padding:5px 9px;font-size:12px;font-weight:950;display:inline-flex}.delivery-status.SUCCESS{background:var(--green-soft);color:var(--green)}.delivery-status.PARTIAL{background:var(--amber-soft);color:var(--amber)}.delivery-status.FAILED{background:var(--danger-soft);color:var(--danger)}.delivery-status.NO_TOKENS,.delivery-status.UNKNOWN{background:var(--card);color:var(--muted)}.swal2-toss-cancel{background:var(--card-soft);color:var(--muted);cursor:pointer;border:0;border-radius:999px;min-height:44px;margin-left:8px;padding:0 22px;font-size:14px;font-weight:900}@media (width<=860px){.beacon-detail-grid,.modal-summary-grid{grid-template-columns:1fr}.app-modal{border-radius:22px;padding:20px}.notification-target-summary,.notification-result-grid,.notification-history-grid{grid-template-columns:1fr}.notification-actions{flex-direction:column;align-items:stretch}}.beacon-list-controls{grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:12px;margin:16px 0 12px;display:grid}.beacon-filter-card{background:var(--card-soft);border:1px solid color-mix(in srgb, var(--border) 74%, transparent);border-radius:var(--radius-sm);gap:12px;min-width:0;padding:14px;display:grid;box-shadow:inset 0 1px #ffffff52}.beacon-filter-heading{align-items:center;gap:10px;display:flex}.beacon-filter-heading strong,.beacon-search-label{color:var(--text);font-size:14px;font-weight:900}.beacon-filter-icon{background:color-mix(in srgb, var(--blue) 12%, transparent);color:var(--blue);border-radius:12px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.beacon-filter-tags{flex-wrap:wrap;gap:8px;display:flex}.beacon-filter-tag{background:var(--card);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);color:var(--muted);cursor:pointer;border-radius:999px;align-items:center;gap:8px;min-height:36px;padding:7px 12px;transition:background .18s,border-color .18s,color .18s,transform .18s;display:inline-flex}.beacon-filter-tag:hover{border-color:color-mix(in srgb, var(--blue) 42%, var(--border));color:var(--text);transform:translateY(-1px)}.beacon-filter-tag.active{background:color-mix(in srgb, var(--blue) 12%, var(--card));border-color:color-mix(in srgb, var(--blue) 54%, var(--border));color:var(--blue)}.beacon-filter-tag span{font-size:13px;font-weight:900}.beacon-filter-tag small{color:inherit;opacity:.72;font-size:11px;font-weight:900}.beacon-search-card{align-content:start}.beacon-search-input-wrap{background:var(--card);border:1px solid color-mix(in srgb, var(--border) 78%, transparent);color:var(--muted);border-radius:14px;align-items:center;gap:10px;min-height:44px;padding:0 10px 0 12px;display:flex}.beacon-search-input-wrap input{color:var(--text);font:inherit;background:0 0;border:0;outline:none;flex:1;min-width:0}.beacon-search-input-wrap input::placeholder{color:color-mix(in srgb, var(--muted) 68%, transparent)}.beacon-search-clear{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;display:inline-flex}.beacon-search-clear:hover{background:color-mix(in srgb, var(--text) 8%, transparent);color:var(--text)}.beacon-filter-reset{margin-left:auto}@media (width<=860px){.beacon-list-controls{grid-template-columns:1fr}.beacon-filter-reset{margin-left:0}}.beacon-list-summary{background:var(--card-soft);border-radius:var(--radius-sm);color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px 16px;margin:14px 0;padding:12px 14px;font-size:13px;font-weight:850;display:flex}.beacon-list-summary strong{color:var(--text)}.beacon-list-table{min-width:1040px}.table-badge{vertical-align:middle;margin-left:8px}.beacon-show-card,.beacon-fingerprint-detail-card,.fingerprint-detail-panel{gap:16px;display:grid}.fingerprint-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.fingerprint-summary-grid article,.fingerprint-source-card{background:var(--card-soft);border-radius:var(--radius-sm);gap:6px;padding:16px;display:grid}.fingerprint-summary-grid article.manual{background:color-mix(in srgb, var(--green) 10%, var(--card-soft))}.fingerprint-summary-grid span,.fingerprint-source-card .eyebrow,.fingerprint-source-values span{color:var(--muted);font-size:12px;font-weight:900}.fingerprint-summary-grid strong{color:var(--text);font-size:20px;font-weight:950}.fingerprint-summary-grid small{color:var(--muted);font-weight:800}.fingerprint-source-card h3{margin:0;font-size:18px}.fingerprint-source-values{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.fingerprint-source-values strong{color:var(--text);margin-top:3px;font-size:15px;display:block}@media (width<=980px){.fingerprint-summary-grid,.fingerprint-source-values{grid-template-columns:1fr}}.fingerprint-insight-panel{gap:18px}.fingerprint-insight-heading{align-items:flex-start}.fingerprint-insight-heading h2{letter-spacing:-.04em}.fingerprint-kpi-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;display:grid}.fingerprint-kpi{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 70%, transparent);gap:6px;min-height:112px;padding:16px;display:grid}.fingerprint-kpi.primary{background:linear-gradient(135deg, color-mix(in srgb, var(--blue) 13%, var(--card)), var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 28%, transparent)}.fingerprint-kpi span,.fingerprint-card-heading span,.fingerprint-kpi small{color:var(--muted);font-size:12px;font-weight:900}.fingerprint-kpi strong{color:var(--text);letter-spacing:0;overflow-wrap:anywhere;min-width:0;font-size:19px;font-weight:950}.fingerprint-control-card,.fingerprint-analysis-card,.fingerprint-table-card{background:var(--card);border-radius:var(--radius-sm);box-shadow:var(--shadow-soft), inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent)}.fingerprint-control-card{justify-content:space-between;align-items:center;gap:16px;padding:16px;display:flex}.fingerprint-control-card h3,.fingerprint-card-heading h3{letter-spacing:-.03em;margin:0;font-size:18px}.fingerprint-segmented-control{background:var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 74%, transparent);border-radius:14px;flex-wrap:wrap;gap:4px;padding:4px;display:inline-flex}.fingerprint-segmented-control button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:11px;min-height:34px;padding:0 12px;font-size:13px;font-weight:900}.fingerprint-segmented-control button.active{background:var(--blue);color:#fff;box-shadow:0 8px 18px color-mix(in srgb, var(--blue) 26%, transparent)}.fingerprint-analysis-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.fingerprint-analysis-card,.fingerprint-table-card{gap:12px;padding:16px;display:grid;overflow:hidden}.fingerprint-card-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.fingerprint-chart-wrap{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 68%, transparent);gap:8px;min-width:0;padding:12px;display:grid}.fingerprint-line-chart{width:100%;min-height:220px;display:block}.chart-axis{stroke:color-mix(in srgb, var(--muted) 72%, transparent);stroke-width:1px}.chart-grid-line{stroke:color-mix(in srgb, var(--border) 66%, transparent);stroke-width:1px}.chart-series-line{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px}.chart-series-point{stroke:var(--card);stroke-width:2px}.chart-tick,.chart-axis-label{fill:var(--muted);font-size:12px;font-weight:800}.fingerprint-chart-legend{flex-wrap:wrap;gap:8px 16px;padding:0 4px 4px;display:flex}.fingerprint-chart-legend span{color:var(--muted);align-items:center;gap:6px;font-size:12px;font-weight:850;display:inline-flex}.fingerprint-chart-legend i{border-radius:999px;width:10px;height:10px;display:inline-block}.fingerprint-direction-card{grid-column:1/-1}.fingerprint-polar-wrap{grid-template-columns:minmax(280px,1fr) minmax(180px,260px);align-items:center;padding:16px}.fingerprint-polar-chart{width:100%;min-height:300px;display:block}.polar-ring{fill:color-mix(in srgb, var(--card) 80%, transparent);stroke:color-mix(in srgb, var(--border) 72%, transparent);stroke-width:1.25px}.polar-ring.outer{fill:color-mix(in srgb, var(--card-soft) 76%, transparent);stroke:color-mix(in srgb, var(--blue) 28%, var(--border));stroke-width:1.5px}.polar-axis{stroke:color-mix(in srgb, var(--muted) 46%, transparent);stroke-dasharray:5 7;stroke-width:1.2px}.polar-cardinal{fill:var(--text);font-size:15px;font-weight:950}.polar-heat-halo{opacity:.28}.polar-heat-point{stroke:var(--card);stroke-width:2.5px}.fingerprint-polar-meta{gap:14px;display:grid}.rssi-heat-legend{gap:8px;display:grid}.rssi-heat-legend span,.fingerprint-polar-stats span{color:var(--muted);justify-content:space-between;align-items:center;gap:8px;font-size:13px;font-weight:850;display:flex}.rssi-heat-legend i{border-radius:999px;width:34px;height:10px;display:inline-block}.rssi-heat-legend .heat-low{background:linear-gradient(90deg,#2563eb,#22d3ee)}.rssi-heat-legend .heat-mid{background:linear-gradient(90deg,#22d3ee,#facc15,#f97316)}.rssi-heat-legend .heat-high{background:linear-gradient(90deg,#f97316,#ef4444)}.fingerprint-polar-stats{background:var(--card);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 68%, transparent);gap:8px;padding:12px;display:grid}.fingerprint-polar-stats strong{color:var(--text);font-weight:950}.fingerprint-data-table{border-collapse:separate;border-spacing:0;color:var(--text);width:100%;min-width:760px}.fingerprint-data-table th,.fingerprint-data-table td{border-bottom:1px solid color-mix(in srgb, var(--border) 72%, transparent);text-align:left;padding:12px 10px;font-size:14px}.fingerprint-data-table th{background:color-mix(in srgb, var(--card-soft) 82%, transparent);color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:950}.fingerprint-data-table tbody tr{cursor:pointer}.fingerprint-data-table tbody tr:hover td,.fingerprint-data-table tbody tr.selected-row td{background:color-mix(in srgb, var(--blue) 8%, transparent)}.fingerprint-data-table.compact th,.fingerprint-data-table.compact td{padding:10px;font-size:13px}.magnetic-table{min-width:1040px}.fingerprint-focused-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}@media (width<=1180px){.fingerprint-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=900px){.fingerprint-analysis-grid,.fingerprint-focused-grid{grid-template-columns:1fr}.fingerprint-control-card{flex-direction:column;align-items:stretch}.fingerprint-polar-wrap{grid-template-columns:1fr}}@media (width<=680px){.fingerprint-kpi-grid{grid-template-columns:1fr}.fingerprint-card-heading{flex-direction:column;align-items:flex-start}.fingerprint-polar-chart{min-height:250px}}.mobile-device-card{gap:18px;display:grid}.device-actions{flex-wrap:wrap;align-items:center}.compact-select-label{color:var(--muted);align-items:center;gap:8px;font-size:13px;font-weight:900;display:inline-flex}.compact-select-label select{background:var(--card-soft);border:1px solid var(--border);color:var(--text);border-radius:999px;min-height:40px;padding:0 36px 0 14px;font-weight:800}.device-source-note{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;padding:12px 14px;font-size:13px;font-weight:800;display:flex}.device-source-note code{color:var(--text);font-size:13px;font-weight:900}.device-session-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.device-session-summary article{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px}.device-session-summary span{color:var(--muted);margin-bottom:8px;font-size:12px;font-weight:900;display:block}.device-session-summary strong{letter-spacing:0;font-size:28px;line-height:1;display:block}.device-filter-toggle{justify-self:start}.device-session-table{min-width:1080px}.device-session-table th,.device-session-table td{white-space:nowrap}.device-id-chip,.device-session-meta{background:var(--card-soft);border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:6px 10px;font-size:12px;font-weight:900;display:inline-flex}.device-id-chip{color:var(--blue)}.device-count-pair{align-items:center;gap:8px;display:inline-flex}.device-count-pair strong,.device-count-pair small{background:var(--card-soft);border:1px solid var(--border);color:var(--text);text-align:center;border-radius:999px;min-width:34px;padding:5px 9px;font-size:12px;font-weight:950}.device-count-pair small{color:var(--muted)}.device-timeline-panel{border:1px solid var(--border);border-radius:var(--radius-lg);gap:16px;padding:18px;display:grid}.device-timeline-context{color:var(--muted);margin:-8px 0 0;font-size:13px;font-weight:850}.device-timeline-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.device-timeline-summary article{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px}.device-timeline-summary span{color:var(--muted);margin-bottom:7px;font-size:12px;font-weight:900;display:block}.device-timeline-summary strong{color:var(--text);letter-spacing:0;font-size:24px;line-height:1;display:block}.device-timeline-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.device-timeline-card{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);gap:12px;min-width:0;padding:14px;display:grid}.device-timeline-card h3{font-size:18px}.table-scroll.compact{border-radius:var(--radius-sm);max-height:300px}.table-scroll.compact table{min-width:620px}.empty.compact{min-height:96px;margin:0}@media (width<=860px){.device-actions{flex-direction:column;align-items:stretch}.compact-select-label,.compact-select-label select,.device-actions .button{width:100%}.compact-select-label{flex-direction:column;align-items:stretch}.device-session-summary,.device-timeline-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.device-timeline-grid{grid-template-columns:1fr}}@media (width<=560px){.device-session-summary,.device-timeline-summary{grid-template-columns:1fr}}.direction-hero{position:relative;overflow:hidden}.direction-management-layout{grid-template-columns:minmax(0,1fr) minmax(260px,300px);align-items:start;gap:16px;display:grid}.direction-list-main{min-width:0;overflow:hidden}.direction-list-main .table-scroll{min-width:0;max-width:100%;overflow-x:auto}.direction-list-actions{align-items:center;gap:8px;display:flex}.direction-side-panel{align-self:start;gap:14px;display:grid;position:sticky;top:16px}.direction-side-heading{gap:12px;display:grid}.direction-side-heading h2{letter-spacing:0;margin:4px 0 0;font-size:clamp(22px,3vw,26px);line-height:1.1}.direction-side-heading span{color:var(--muted);margin-top:6px;font-size:13px;font-weight:850;line-height:1.45;display:block}.direction-side-actions{grid-template-columns:1fr;gap:8px;display:grid}.direction-side-actions .button,.direction-side-actions .icon-button{min-height:42px}.direction-side-actions .button{text-overflow:ellipsis;white-space:nowrap;justify-content:center;min-width:0;padding-inline:12px;overflow:hidden}.direction-outside-panel .button,.direction-outside-panel select,.direction-outside-panel .direction-info-strip{min-width:0;max-width:100%}.direction-outside-panel .direction-side-heading,.direction-outside-panel .direction-side-heading>div,.direction-outside-panel .direction-filter-grid,.direction-outside-panel .direction-compact-stats{min-width:0}.direction-outside-panel .direction-side-heading span,.direction-outside-panel .direction-info-strip{overflow-wrap:anywhere}.direction-outside-panel .direction-compact-stats span{min-width:0}.direction-side-filter-grid{grid-template-columns:1fr}.direction-side-filter-grid .button.secondary{justify-content:center;width:100%;min-height:42px}.direction-side-panel .direction-compact-stats{gap:6px;padding:7px}.direction-side-panel .direction-compact-stats span{justify-content:space-between;width:100%}.direction-filter-card,.direction-list-card{gap:18px;display:grid}.direction-filter-grid{grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) minmax(120px,.48fr) minmax(150px,.58fr);gap:14px;display:grid}.direction-filter-grid.direction-side-filter-grid{grid-template-columns:1fr}.direction-filter-grid.direction-side-filter-grid label,.direction-filter-grid.direction-side-filter-grid select,.direction-filter-grid.direction-side-filter-grid button,.direction-filter-grid.direction-side-filter-grid .direction-info-strip{width:100%;min-width:0}.direction-filter-grid.direction-side-filter-grid .direction-info-strip{align-items:flex-start;line-height:1.45}.direction-filter-grid label{color:var(--muted);gap:8px;font-size:13px;font-weight:900;display:grid}.direction-filter-grid select{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);min-height:46px;padding:0 14px;font-weight:800}.direction-info-strip svg{color:var(--blue);flex:none;width:16px;height:16px}.direction-info-strip{background:var(--blue-soft);border:1px solid color-mix(in srgb, var(--blue) 24%, transparent);border-radius:var(--radius-md);color:var(--blue);align-items:center;gap:10px;padding:14px 16px;font-size:14px;font-weight:900;display:flex}.direction-metric-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.direction-compact-stats{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);flex-wrap:wrap;align-items:center;gap:8px;padding:8px;display:flex}.direction-compact-stats span{background:var(--card);border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;min-height:32px;padding:0 11px;font-size:12px;font-weight:900;display:inline-flex}.direction-compact-stats strong{color:var(--text);font-size:14px;font-weight:950}.direction-table{min-width:920px}.direction-table td:first-child strong{font-weight:950;display:block}.direction-table td:first-child small{color:var(--muted);margin-top:4px;font-size:12px;font-weight:800;display:block}.floor-chip,.direction-badge{white-space:nowrap;border-radius:999px;align-items:center;min-height:28px;padding:0 10px;font-size:12px;font-weight:950;display:inline-flex}.floor-chip{background:var(--card-soft);border:1px solid var(--border);color:var(--muted)}.direction-badge.forward{background:var(--blue-soft);color:var(--blue)}.direction-badge.left{background:var(--green-soft);color:var(--green)}.direction-badge.right{background:var(--amber-soft);color:var(--amber)}.direction-badge.wrong{background:var(--danger-soft);color:var(--danger)}.route-node-table-wrap table{min-width:820px}.route-node-status{white-space:nowrap;border-radius:999px;align-items:center;min-height:28px;padding:0 10px;font-size:12px;font-weight:950;display:inline-flex}.route-node-status.active{background:var(--green-soft);color:var(--green)}.route-node-status.blocked{background:var(--danger-soft);color:var(--danger)}.direction-modal-preview{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);justify-content:space-between;align-self:end;align-items:center;gap:10px;min-height:46px;padding:0 14px;display:flex}.direction-modal-preview span{color:var(--muted);font-size:13px;font-weight:900}.direction-modal-preview strong{color:var(--blue);font-size:14px;font-weight:950}@media (width<=1100px){.tracking-side-panel.direction-outside-panel{width:min(320px,100vw - 32px);max-height:min(460px,100vh - 120px);top:auto;bottom:16px;right:16px}}@media (width<=980px){.direction-filter-grid,.direction-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.direction-filter-grid.direction-side-filter-grid{grid-template-columns:1fr}}@media (width<=640px){.direction-filter-grid,.direction-metric-grid{grid-template-columns:1fr}}@keyframes route-editor-panel-enter{0%{opacity:0;transform:translateY(10px)scale(.992)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes route-editor-tip-enter{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.route-graph-editor-shell{display:block;position:relative;overflow:visible}.route-node-detail-panel{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:color-mix(in srgb, var(--card-soft) 92%, transparent);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-surface);max-height:min(72vh,720px);right:calc(100% + 14px);top:var(--route-node-panel-top,0px);z-index:24;gap:12px;width:300px;padding:14px;transition:top .12s linear;animation:.22s cubic-bezier(.2,.72,.24,1) both route-editor-panel-enter;display:grid;position:absolute;overflow:auto}.route-node-detail-heading{grid-template-columns:38px minmax(0,1fr) 34px;align-items:flex-start;gap:10px;display:grid}.route-node-detail-heading h3{overflow-wrap:anywhere;margin:2px 0 0;font-size:18px;line-height:1.15}.route-node-detail-heading button,.route-node-detail-icon{border-radius:12px;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex}.route-node-detail-icon{background:var(--blue-soft);border:1px solid color-mix(in srgb, var(--blue) 28%, var(--border));color:var(--blue);width:38px;height:38px}.route-node-detail-heading button{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000}.route-node-detail-heading button:hover,.route-node-detail-heading button:focus-visible{background:color-mix(in srgb, var(--danger) 10%, transparent);border-color:color-mix(in srgb, var(--danger) 28%, var(--border));color:var(--danger);outline:0}.route-node-detail-list{gap:8px;margin:0;display:grid}.route-node-detail-list>div{background:color-mix(in srgb, var(--card) 76%, transparent);border:1px solid color-mix(in srgb, var(--border) 78%, transparent);border-radius:12px;gap:4px;padding:8px 10px;display:grid}.route-node-detail-list dt,.route-node-detail-list dd{margin:0}.route-node-detail-list dt{color:var(--muted);font-size:11px;font-weight:950}.route-node-detail-list dd{color:var(--text);overflow-wrap:anywhere;font-size:13px;font-weight:900}.route-node-detail-note{background:color-mix(in srgb, var(--blue) 9%, transparent);border:1px solid color-mix(in srgb, var(--blue) 20%, var(--border));color:var(--blue);border-radius:12px;margin:0;padding:9px 10px;font-size:12px;font-weight:900;line-height:1.45}body.route-editor-wide-mode{overflow:hidden}.route-graph-editor-shell.wide-mode{min-height:100dvh}.route-graph-editor-shell.wide-mode .route-node-detail-panel{z-index:130;width:300px;max-height:calc(100dvh - 100px);position:fixed;top:86px;left:12px;right:auto}.route-graph-editor-card{gap:16px;transition:margin .2s,transform .2s,width .2s;display:grid;overflow:visible}.route-graph-editor-card.active{border-color:color-mix(in srgb, var(--blue) 34%, var(--border))}.route-graph-editor-card.active .route-editor-stage-shell{border-color:color-mix(in srgb, var(--blue) 42%, var(--border));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 18%, transparent)}.route-graph-editor-card.wide-mode{background:color-mix(in srgb, var(--app-bg) 94%, var(--card));box-sizing:border-box;z-index:120;border-radius:0;grid-template-rows:auto auto auto minmax(0,1fr);align-content:stretch;gap:10px;width:auto;height:100dvh;margin:0;padding:12px;display:grid;position:fixed;inset:0;overflow:hidden;transform:none}.route-graph-editor-card.wide-mode .route-editor-header{align-items:center}.route-graph-editor-card.wide-mode .route-editor-data-panel{grid-row:3/5;grid-template-rows:auto auto minmax(0,1fr);min-height:0;overflow:hidden}.route-graph-editor-card.wide-mode .route-editor-data-scroll{min-height:0;max-height:none;overflow:auto}.route-editor-header{justify-content:space-between;align-items:start;gap:18px;display:flex}.route-editor-title-block{max-width:720px}.route-editor-header h2{margin-bottom:4px}.route-editor-header p:not(.eyebrow){color:var(--muted);margin:0;font-size:14px;font-weight:800;line-height:1.45}.route-editor-actions{place-items:flex-end end;gap:10px;min-width:330px;display:grid}.route-editor-summary{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.route-editor-summary span{background:var(--card-soft);border:1px solid var(--border);color:var(--muted);border-radius:999px;align-items:center;gap:6px;min-height:32px;padding:0 12px;font-size:12px;font-weight:950;display:inline-flex}.route-editor-summary strong{color:var(--text);font-size:14px}.route-editor-summary span.dirty{background:var(--danger-soft);border-color:color-mix(in srgb, var(--danger) 26%, var(--border));color:var(--danger)}.route-editor-summary span.saved{background:var(--green-soft);border-color:color-mix(in srgb, var(--green) 26%, var(--border));color:var(--green)}.route-editor-window-actions{align-items:center;gap:8px;display:flex}.route-editor-window-actions button{background:var(--card-soft);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;width:38px;height:38px;display:inline-flex}.route-editor-window-actions button:hover,.route-editor-window-actions button:focus-visible,.route-editor-window-actions button.active{background:color-mix(in srgb, var(--blue) 12%, transparent);border-color:color-mix(in srgb, var(--blue) 38%, var(--border));color:var(--blue);outline:0}.route-editor-view-tabs{isolation:isolate;background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);align-items:center;gap:6px;padding:6px;display:flex}.route-editor-view-tabs button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;gap:8px;min-height:36px;padding:0 12px;font-size:12px;font-weight:950;transition:background .18s,color .18s,transform .18s;display:inline-flex;position:relative;overflow:hidden}.route-editor-view-tabs button:after{content:"";opacity:0;transform-origin:50%;background:currentColor;border-radius:999px;height:2px;transition:opacity .18s,transform .18s;position:absolute;bottom:4px;left:12px;right:12px;transform:scaleX(.35)}.route-editor-view-tabs button:hover,.route-editor-view-tabs button:focus-visible,.route-editor-view-tabs button.active{background:color-mix(in srgb, var(--blue) 12%, transparent);color:var(--blue);outline:0}.route-editor-view-tabs button:active{transform:translateY(1px)scale(.98)}.route-editor-view-tabs button.active:after{opacity:.82;transform:scaleX(1)}.route-editor-view-tabs strong{background:color-mix(in srgb, var(--card) 78%, transparent);color:inherit;border-radius:999px;justify-content:center;align-items:center;min-width:22px;height:20px;padding:0 7px;font-size:11px;display:inline-flex}.route-editor-data-panel{background:color-mix(in srgb, var(--card-soft) 86%, transparent);border:1px solid var(--border);border-radius:var(--radius-md);gap:12px;min-height:0;padding:14px;animation:.22s cubic-bezier(.2,.72,.24,1) both route-editor-panel-enter;display:grid}.route-editor-data-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.route-editor-data-header h3{margin:0;font-size:17px}.route-editor-data-header span{background:var(--card);border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:7px 10px;font-size:12px;font-weight:950}.route-editor-data-toolbar{background:color-mix(in srgb, var(--card) 78%, transparent);border:1px solid var(--border);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;display:flex}.route-editor-data-toolbar>span{color:var(--muted);font-size:12px;font-weight:900}.route-editor-data-toolbar>span strong{color:var(--text)}.route-editor-pagination-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.route-editor-pagination-actions button,.route-editor-page-indicator{border-radius:10px;align-items:center;min-height:30px;padding:0 10px;font-size:12px;font-weight:950;display:inline-flex}.route-editor-pagination-actions button{background:var(--card-soft);border:1px solid var(--border);color:var(--muted);transition:background .18s,border-color .18s,color .18s,transform .18s}.route-editor-pagination-actions button:hover:not(:disabled),.route-editor-pagination-actions button.active{background:var(--blue-soft);border-color:color-mix(in srgb, var(--blue) 32%, var(--border));color:var(--blue)}.route-editor-pagination-actions button:active:not(:disabled){transform:translateY(1px)scale(.985)}.route-editor-pagination-actions button:disabled{cursor:not-allowed;opacity:.42}.route-editor-page-indicator{background:color-mix(in srgb, var(--blue) 10%, transparent);color:var(--blue);justify-content:center;min-width:64px}.route-editor-data-scroll{border:1px solid color-mix(in srgb, var(--border) 84%, transparent);overscroll-behavior:contain;border-radius:14px;max-height:min(82vh,1180px)}.route-editor-data-scroll.all{max-height:none}.route-editor-data-scroll table{min-width:920px}.route-editor-data-scroll th,.route-editor-data-scroll td{padding:7px 10px;font-size:11px}.route-editor-data-scroll thead th{background:color-mix(in srgb, var(--card-soft) 92%, var(--card));z-index:1;position:sticky;top:0}.route-editor-toolbar{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:8px;display:flex}.route-editor-tool-group,.route-editor-segment{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.route-editor-segment{background:color-mix(in srgb, var(--card) 78%, transparent);border:1px solid var(--border);border-radius:12px;padding:4px}.route-editor-toolbar button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;gap:7px;min-height:36px;padding:0 12px;font-size:12px;font-weight:950;transition:background .18s,color .18s,transform .18s;display:inline-flex}.route-editor-toolbar button:hover:not(:disabled),.route-editor-toolbar button:focus-visible,.route-editor-toolbar button.active{background:color-mix(in srgb, var(--blue) 12%, transparent);color:var(--blue);outline:0}.route-editor-toolbar button:active:not(:disabled){transform:scale(.97)}.route-editor-toolbar button:disabled{cursor:not-allowed;opacity:.44}.route-editor-save{margin-left:auto}.route-editor-clear{margin-left:0}.route-editor-workspace{min-height:0;animation:.22s cubic-bezier(.2,.72,.24,1) both route-editor-panel-enter;display:grid}.route-editor-stage-data-actions{z-index:4;align-items:center;gap:8px;display:inline-flex;position:absolute;top:14px;right:14px}.route-editor-stage-data-actions .csv-action-group,.route-editor-data-header-actions .csv-action-group{background:color-mix(in srgb, var(--card) 90%, transparent);border:1px solid var(--border);border-radius:14px;padding:4px;box-shadow:0 10px 24px #0f172a14}.route-editor-data-header-actions{justify-content:flex-end;align-items:center;gap:8px;display:inline-flex}.route-graph-editor-card.wide-mode .route-editor-workspace{grid-template-columns:1fr}.route-editor-stage-shell{background:radial-gradient(circle at 30% 24%, color-mix(in srgb, var(--blue) 10%, transparent), transparent 28%), linear-gradient(180deg, color-mix(in srgb, var(--card-soft) 88%, transparent), var(--card));border:1px solid var(--border);border-radius:var(--radius-md);height:clamp(620px,70vh,900px);min-height:620px;position:relative;overflow:hidden}.route-graph-editor-card.wide-mode .route-editor-workspace,.route-graph-editor-card.wide-mode .route-editor-stage-shell{height:100%;min-height:0}.route-editor-stage{color:color-mix(in srgb, var(--muted) 72%, transparent);touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;min-height:100%;display:block}.route-editor-zoom-controls{background:color-mix(in srgb, var(--card) 92%, transparent);border:1px solid var(--border);z-index:2;border-radius:16px;align-items:center;gap:6px;padding:6px;display:inline-flex;position:absolute;bottom:16px;right:16px;box-shadow:0 14px 36px #0f172a2e}.route-editor-zoom-controls button,.route-editor-zoom-controls input{color:var(--text);background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;min-width:34px;height:34px;font-size:12px;font-weight:950;display:inline-flex}.route-editor-zoom-controls button{cursor:pointer}.route-editor-zoom-controls button:hover,.route-editor-zoom-controls button:focus-visible{background:color-mix(in srgb, var(--blue) 12%, transparent);color:var(--blue);outline:0}.route-editor-zoom-controls input{background:var(--card-soft);text-align:center;width:56px}.route-editor-zoom-controls span{color:var(--muted);font-size:12px;font-weight:950}.route-editor-zoom-controls .fit{padding:0 10px}.route-editor-workspace.mode-node .route-editor-stage{cursor:crosshair}.route-editor-workspace.mode-edge .route-editor-stage{cursor:default}.route-editor-workspace.mode-edge .route-editor-node{cursor:crosshair}.route-editor-workspace.panning-stage .route-editor-stage,.route-editor-workspace.dragging-node .route-editor-stage,.route-editor-node.dragging{cursor:grabbing}.route-editor-grid{fill:url(#route-editor-grid)}.route-editor-floorplan-image{opacity:.74;pointer-events:none}.route-editor-axis{stroke:color-mix(in srgb, var(--blue) 24%, transparent);stroke-dasharray:7 8;stroke-width:1.4px}#route-editor-arrow-beacon path{fill:color-mix(in srgb, var(--blue) 74%, transparent)}#route-editor-arrow-escape path{fill:color-mix(in srgb, var(--amber) 86%, transparent)}#route-editor-arrow-mixed path{fill:color-mix(in srgb, var(--blue) 72%, var(--amber))}#route-editor-arrow-preview path{fill:color-mix(in srgb, var(--danger) 84%, transparent)}.route-editor-edge line,.route-editor-edge-preview line{stroke-linecap:round;stroke-width:4.5px}.route-editor-edge.tone-beacon line{stroke:color-mix(in srgb, var(--blue) 68%, transparent)}.route-editor-edge.tone-escape line{stroke:color-mix(in srgb, var(--amber) 86%, transparent)}.route-editor-edge.tone-mixed line{stroke:url(#route-editor-mixed-edge-gradient)}.route-editor-edge-preview line{stroke:color-mix(in srgb, var(--danger) 84%, transparent)}.route-editor-edge.bidirectional line,.route-editor-edge-preview.bidirectional line{stroke-dasharray:none}.route-editor-edge.oneway line,.route-editor-edge-preview.oneway line{stroke-dasharray:12 10}.route-editor-edge.blocked line{opacity:.58;stroke:color-mix(in srgb, var(--danger) 68%, transparent)}.route-editor-edge-start{fill:color-mix(in srgb, var(--amber) 10%, transparent);pointer-events:none;stroke:color-mix(in srgb, var(--amber) 86%, transparent);stroke-dasharray:10 8;stroke-width:5px}.route-editor-node{cursor:pointer;filter:url(#route-editor-node-shadow)}.route-editor-node.draft{cursor:grab}.route-editor-node circle{fill:var(--card);stroke:color-mix(in srgb, var(--blue) 72%, transparent);stroke-width:7px;transition:fill .18s,stroke .18s,stroke-width .18s,transform .18s}.route-editor-node text{fill:var(--text);letter-spacing:0;pointer-events:none;text-anchor:middle;font-size:18px;font-weight:950}.route-editor-node.fallback circle{stroke:#7c3aedb3}.route-editor-node.unmatched circle{opacity:.78;stroke-dasharray:10 8}.route-editor-node.draft circle{fill:color-mix(in srgb, var(--amber) 16%, var(--card));stroke:var(--amber)}.route-editor-node.blocked circle{fill:color-mix(in srgb, var(--danger) 12%, var(--card));stroke:var(--danger)}.route-editor-node.locked circle{fill:color-mix(in srgb, var(--card) 88%, transparent)}.route-editor-node.dragging circle,.route-editor-node.selected circle,.route-editor-node:hover circle,.route-editor-node:focus-visible circle{fill:color-mix(in srgb, var(--blue) 12%, var(--card));stroke-width:9px;outline:0}.route-editor-node-hover{background:color-mix(in srgb, var(--card) 94%, transparent);border:1px solid color-mix(in srgb, var(--blue) 24%, var(--border));pointer-events:none;z-index:3;border-radius:8px;gap:3px;min-width:196px;max-width:240px;padding:8px 10px;animation:.14s both route-editor-tip-enter;display:grid;position:absolute;box-shadow:0 16px 34px #0f172a2e}.route-editor-node-hover span{color:var(--blue);font-size:10px;font-weight:950}.route-editor-node-hover strong{color:var(--text);overflow-wrap:anywhere;font-size:12px;font-weight:950;line-height:1.25}.route-editor-node-hover small{color:var(--muted);font-size:11px;font-weight:800;line-height:1.35}@media (width<=1180px){.route-node-detail-panel{width:min(320px,100% - 24px);max-height:min(46vh,420px);top:12px;left:12px;right:auto}.route-editor-header,.route-editor-actions{justify-items:start;display:grid}.route-editor-actions{min-width:0}.route-editor-summary{justify-content:start}}@media (width<=760px){.route-graph-editor-card.wide-mode{width:100%;left:auto;transform:none}.route-editor-view-tabs,.route-editor-toolbar,.route-editor-tool-group,.route-editor-segment{grid-template-columns:1fr}.route-editor-view-tabs button,.route-editor-toolbar button,.route-editor-tool-group,.route-editor-segment{width:100%}}.route-node-detail-actions{gap:8px;display:flex}.route-node-detail-actions button,.route-editor-row-action,.route-editor-row-actions button{background:var(--card-soft);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:999px;align-items:center;min-height:30px;padding:0 10px;font-size:12px;font-weight:900;transition:background .18s,border-color .18s,color .18s,transform .18s;display:inline-flex}.route-node-detail-actions button:hover:not(:disabled),.route-editor-row-action:hover:not(:disabled),.route-editor-row-actions button:hover:not(:disabled){background:var(--primary-soft);color:var(--primary);border-color:#2563eb61;transform:translateY(-1px)}.route-node-detail-actions button:disabled,.route-editor-row-action:disabled,.route-editor-row-actions button:disabled{cursor:not-allowed;opacity:.48}.route-editor-row-actions{white-space:nowrap;align-items:center;gap:6px;display:flex}.visually-hidden-file-input{opacity:0;pointer-events:none;width:1px;height:1px;position:fixed}.csv-action-group{align-items:center;gap:6px;display:inline-flex}.csv-action-group .icon-button{width:36px;height:36px}.floorplan-crop-actions{background:color-mix(in srgb, var(--card) 92%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);border-radius:999px;flex:none;align-items:center;gap:4px;padding:4px;display:inline-flex}.mini-action-button{background:var(--blue);color:#fff;cursor:pointer;letter-spacing:0;border:0;border-radius:999px;justify-content:center;align-items:center;min-width:54px;height:30px;padding:0 11px;font-size:11px;font-weight:900;transition:background .18s,color .18s,opacity .18s,transform .18s;display:inline-flex}.mini-action-button.ghost{background:color-mix(in srgb, var(--card-soft) 82%, var(--card));color:var(--muted)}.mini-action-button:hover:not(:disabled){transform:translateY(-1px)}.mini-action-button:active:not(:disabled){transform:translateY(1px)scale(.985)}.mini-action-button:disabled{cursor:not-allowed;opacity:.42}.floorplan-canvas-wrap.crop-editing .floorplan-canvas{cursor:default}.floorplan-canvas-wrap.crop-edge-left .floorplan-canvas,.floorplan-canvas-wrap.crop-edge-right .floorplan-canvas{cursor:ew-resize}.floorplan-canvas-wrap.crop-edge-top .floorplan-canvas,.floorplan-canvas-wrap.crop-edge-bottom .floorplan-canvas{cursor:ns-resize}
