:root{--bg:#f5f6f3;--surface:#fff;--text:#202e2b;--muted:#74817c;--line:#dce2dc;--accent:#006b61;--tint:#e3f0e9;--danger:#b63d36;--side:#eaf0eb;--shadow:0 22px 80px #142e2a25;color-scheme:light;font:15px/1.55 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
:root[data-theme=dark]{--bg:#111e1b;--surface:#1b2c27;--text:#edf3ed;--muted:#a4b5ac;--line:#33473e;--accent:#69d8b5;--tint:#234438;--danger:#ff9690;--side:#091410;color-scheme:dark}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button,a{touch-action:manipulation}button{cursor:pointer}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{border:0;background:transparent;color:inherit;border-radius:8px;padding:9px 13px}button:hover{background:var(--tint)}button.primary{background:var(--accent);color:var(--bg);font-weight:650}button.danger{color:var(--danger)}button:disabled{opacity:.5;cursor:wait}.small{font-size:12px;color:var(--muted)}.mono,code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.boot{margin:60px}.shell{display:grid;grid-template-columns:238px minmax(0,1fr);min-height:100vh}.shell.collapsed{grid-template-columns:76px minmax(0,1fr)}aside{position:sticky;top:0;height:100vh;background:var(--side);color:var(--text);padding:30px 19px;display:flex;flex-direction:column;gap:32px}.brand{display:flex;align-items:center;gap:10px;color:var(--text);font-size:24px;letter-spacing:-1px;font-weight:700}.brand svg{width:30px;height:30px;flex:none}.brand small{font:10px system-ui;display:block;letter-spacing:3px;color:var(--accent);margin-top:-5px}.nav{display:grid;gap:5px}.nav a{display:flex;align-items:center;gap:13px;color:var(--text);border-radius:8px;padding:3.6px 14px;font-size:14px;line-height:18px;white-space:nowrap}.nav a:hover,.nav a.active{background:var(--tint);color:var(--accent);text-decoration:none}.nav a.active{box-shadow:inset 3px 0 var(--accent)}.nav svg{height:18px;width:18px;flex:none}.sidebar-bottom{margin-top:auto;display:grid;gap:10px}.sidebar-bottom button{color:var(--text);text-align:left}.collapsed .nav-label,.collapsed .brand-label,.collapsed .sidebar-copy{display:none}.collapsed aside{padding:30px 10px}.collapsed .nav a{padding:3.6px 18px}.collapsed .brand{justify-content:center}main{padding:32px clamp(22px,5vw,76px) 70px;max-width:1700px;width:100%;margin:auto;align-self:start}.topbar{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:22px;gap:16px}.eyebrow{font-size:11px;font-weight:650;letter-spacing:2px;text-transform:uppercase;color:var(--muted)}.top-actions{display:flex;align-items:center;gap:8px}.locale{padding:5px 8px;background:var(--surface);border:1px solid var(--line);border-radius:7px}.page-title{display:flex;justify-content:space-between;gap:20px;align-items:center;margin:39px 0 30px}.page-title h1{font-size:clamp(28px,4vw,42px);letter-spacing:-1.7px;line-height:1.1;font-weight:550;margin:7px 0 12px}.page-title p{color:var(--muted);margin:0;max-width:650px}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.section-title{display:flex;align-items:center;gap:12px;margin:34px 0 20px;font-size:13px;font-weight:600}.section-title:after{content:"";height:1px;background:linear-gradient(90deg,var(--accent),transparent);flex:1;opacity:.4}.section-title svg{color:var(--accent);width:23px;height:23px}.stats{display:flex;gap:clamp(20px,5vw,80px);border-bottom:1px solid var(--line);padding:0 0 27px;flex-wrap:wrap}.stat strong{display:block;font-size:32px;letter-spacing:-1px;font-weight:500}.stat span{color:var(--muted);font-size:12px}.table-wrap{width:100%;overflow:auto}table{width:100%;border-collapse:collapse;text-align:left}th{color:var(--muted);font-weight:500;text-transform:uppercase;font-size:10px;letter-spacing:1.2px;padding:12px 14px;border-bottom:1px solid var(--line)}td{padding:17px 14px;border-bottom:1px solid var(--line);font-size:14px}tbody tr:hover{background:var(--tint)}td:first-child{font-weight:550}td .primary-link{font-weight:650;color:var(--text)}.tag{background:var(--tint);color:var(--accent);border-radius:5px;padding:4px 8px;white-space:nowrap;font-size:11px}.warning{color:var(--danger);background:color-mix(in srgb,var(--danger) 8%,transparent);padding:12px 16px;border-left:3px solid var(--danger);margin:15px 0}.empty{padding:45px 0;color:var(--muted);max-width:620px}.detail-meta{display:flex;gap:40px;flex-wrap:wrap;padding:0 0 20px}.detail-meta div{display:grid;gap:4px}.detail-meta dt{font-size:11px;color:var(--muted)}.detail-meta dd{margin:0}.rack-layout{display:grid;grid-template-columns:minmax(250px,380px) minmax(0,1fr);gap:40px}.rack{border-left:14px solid var(--line);border-right:14px solid var(--line);background:var(--surface);padding:6px;align-self:start}.unit{display:flex;min-height:29px;border-top:1px solid var(--line);gap:10px;align-items:center;font:11px ui-monospace,monospace}.unit .unit-number{width:28px;text-align:center;color:var(--muted)}.unit.occupied{background:var(--tint);border-color:var(--accent);color:var(--accent)}.unit a{flex:1;font-weight:700}.port-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(82px,1fr));gap:9px;margin:18px 0}.port-tile{border:1px solid var(--line);border-radius:5px;padding:12px 6px;background:var(--surface);text-align:center}.port-tile svg{display:block;margin:0 auto 6px;width:25px;height:25px;color:var(--muted)}.port-tile.connected svg{color:var(--accent)}.plan{position:relative;background:#fff;line-height:0;max-width:1050px}.plan img{width:100%;height:auto}.plan svg.overlay{position:absolute;inset:0;width:100%;height:100%}.plan polygon{fill:#00b88a12;stroke:#00a27c;stroke-width:2;vector-effect:non-scaling-stroke;cursor:pointer;transition:fill .15s}.plan [data-room-target]:hover polygon,.plan [data-room-target]:focus polygon{fill:#00b88a65;stroke-width:3}.plan-editor polygon{fill:#00b88a44}.plan-editor{cursor:crosshair}.plan-list{margin:24px 0}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:20px 0}.search{max-width:300px}.search input{padding:9px 0;background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0}.room-list{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0}.room-list a{border-bottom:1px solid var(--line);padding:8px 0;margin-right:15px}.trace-node{display:flex;align-items:center;gap:15px;padding:15px 0}.trace-node svg{width:26px;color:var(--accent)}.trace-edge{border-left:2px dashed var(--accent);margin-left:12px;padding:9px 25px;font-size:12px;color:var(--muted)}.trace-node strong{display:block}.toast{position:fixed;bottom:25px;right:25px;z-index:50;background:var(--text);color:var(--bg);padding:14px 22px;border-radius:10px;box-shadow:var(--shadow);max-width:calc(100vw - 50px)}form{display:grid;gap:17px}label{display:grid;gap:6px;font-size:12px;font-weight:550}input,select,textarea{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:7px;background:var(--bg);color:var(--text)}input[type=checkbox]{width:auto}textarea{min-height:85px;resize:vertical}form .actions{justify-content:flex-end;border-top:1px solid var(--line);padding-top:17px}fieldset{border:0;padding:0;margin:0;display:grid;gap:17px}.tree{border-left:1px solid var(--line);margin:12px;padding-left:14px}.tree details{margin:8px 0}.tree summary{cursor:pointer;padding:5px;color:var(--text)}.tree .tree-port{display:flex;align-items:center;gap:10px;padding:6px}.tree-port input{width:auto}.mobile-menu{display:none}.breadcrumb{display:flex;gap:8px;flex-wrap:wrap;font-size:12px;margin-bottom:16px}.port-detail{display:flex;align-items:center;gap:25px}.port-detail>svg{width:65px;height:65px;color:var(--accent)}.help{font-size:12px;color:var(--muted);font-weight:400}.footer-note{margin-top:40px;font-size:11px;color:var(--muted)}
@media(max-width:1000px){.rack-layout{grid-template-columns:1fr}.rack{max-width:450px}.shell{grid-template-columns:205px minmax(0,1fr)}main{padding:25px}.page-title{align-items:flex-start}.page-title h1{font-size:32px}}
@media(max-width:700px){.shell,.shell.collapsed{display:block}.shell aside{display:none;position:fixed;left:0;top:0;width:238px;z-index:30;padding:30px 19px;box-shadow:var(--shadow)}.shell.mobile-open aside{display:flex}.collapsed .nav-label,.collapsed .brand-label,.collapsed .sidebar-copy{display:initial}.mobile-menu{display:block}.topbar{padding-bottom:15px}.page-title{flex-direction:column;margin-top:25px}.stats{gap:25px}.stat strong{font-size:26px}main{padding:20px}.topbar .eyebrow{display:none}.top-actions{margin-left:auto}td,th{padding:12px 9px}.detail-meta{gap:20px}.brand{justify-content:flex-start}}

.locale{width:auto}.top-actions button{white-space:nowrap}.search{width:min(300px,100%)}main{margin:0 auto}

/* The rack floats over the page; it never reserves a column in the content. */
.floating-rack{position:fixed;right:0;top:0;width:min(360px,calc(100vw - 60px));max-height:100vh;max-height:100dvh;overflow-y:auto;overscroll-behavior:contain;z-index:20;box-shadow:-8px 8px 30px #0002;scrollbar-gutter:stable;background:var(--surface)}
.floating-rack[hidden]{display:none}
.floating-rack .rack{position:relative;max-width:none}
.floating-rack .unit{height:30px;min-height:30px}
.floating-rack .unit-number{flex:none}
.floating-rack .unit a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.rack-insert-image{position:absolute;left:44px;right:6px;display:block;background:var(--surface);border-bottom:1px solid var(--line)}
.rack-insert-image img{display:block;width:100%;height:100%;object-fit:contain}
.rack-insert-image:hover,.rack-insert-image:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.rack-toggle{position:fixed;right:min(360px,calc(100vw - 60px));top:0;z-index:21;background:var(--surface);border:1px solid var(--line);border-radius:0 0 0 8px;writing-mode:vertical-rl;padding:12px 8px;font-size:12px;box-shadow:-4px 4px 12px #0001}
.rack-toggle.rack-is-hidden{right:0}
.template-preview{display:block;max-width:100%;max-height:230px;object-fit:contain;margin:12px 0;background:var(--surface)}

.sidebar-close{position:absolute;right:6px;top:0;padding:2px 10px;font-size:24px;color:var(--text)}

/* Visual inventory editors */
th button{padding:0;border-radius:0;text-align:left;font:inherit;letter-spacing:inherit;text-transform:inherit;white-space:nowrap}
.plan polygon,.room-focus{fill:color-mix(in srgb,var(--region-color,#00a27c) 18%,transparent);stroke:var(--region-color,#00a27c);stroke-width:2;vector-effect:non-scaling-stroke}
.plan [data-room-target]:hover polygon,.plan [data-room-target]:focus polygon{fill:color-mix(in srgb,var(--region-color,#00a27c) 48%,transparent);stroke:var(--region-color,#00a27c)}
.plan-list .room-list{display:block}
.room-canvas{width:100%;max-width:1050px;margin:18px 0}
.room-map{display:block;width:100%;height:auto;background:#fff;max-height:75vh}
.schematic-room{fill:var(--surface);stroke:var(--line);stroke-width:8}
.cabinet-marker{cursor:pointer}.cabinet-marker circle{fill:var(--accent);stroke:var(--surface);stroke-width:2;vector-effect:non-scaling-stroke}.cabinet-marker text{fill:var(--text);paint-order:stroke;stroke:var(--surface);stroke-width:3;stroke-linejoin:round}
[data-place-cabinet]{cursor:crosshair}
.image-stage{position:relative;width:100%;margin:20px 0;line-height:0;background:var(--surface)}
.image-stage>img{display:block;width:100%;height:auto}
.port-marker{position:absolute;transform:translate(-50%,-50%);display:grid;place-items:center;min-width:24px;min-height:24px;border:2px solid var(--surface);border-radius:50%;background:var(--accent);color:var(--bg);font:700 12px/1 system-ui;padding:3px;box-shadow:0 0 0 1px var(--text)}
.port-marker:hover,.port-marker:focus{outline:3px solid #f5aa30;text-decoration:none}
.port-marker.connected{background:#d88411;color:white}
.port-tile small{display:block;overflow-wrap:anywhere;font-size:10px}
.local-port-list{margin-top:24px}.local-port-list summary{cursor:pointer}
.rack-drag-handle{position:sticky;top:0;z-index:2;cursor:grab;touch-action:none;user-select:none;background:var(--surface);color:var(--muted);font-size:11px;padding:4px 12px;line-height:20px;border-bottom:1px solid var(--line)}
.rack-drag-handle:active{cursor:grabbing}
.port-context-menu{position:fixed;z-index:60;display:grid;min-width:180px;max-width:300px;padding:10px;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}
.port-context-menu strong{padding:6px 12px;font-size:12px;overflow-wrap:anywhere}.port-context-menu button{text-align:left}
.ancestry{margin-top:25px}
/* V5 direct actions and precise port placement */
.action-icon{width:23px;height:23px;display:block;flex:none}
.icon-button{display:inline-flex;align-items:center;justify-content:center;min-width:38px;min-height:38px;padding:7px;border-radius:6px}
.icon-button.danger{color:#cf3636}.icon-button:hover{background:var(--soft)}
.row-actions{display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.port-context-menu .row-actions{display:flex;gap:8px}
[data-port-layout] .port-marker{touch-action:none;cursor:grab}
[data-port-layout] .port-marker:active{cursor:grabbing}
[data-port-layout] .port-marker.selected{outline:3px solid #e5a52f;outline-offset:3px}

[data-port-layout] .port-marker.selected{background:#00695e;color:#fff}
.port-context-menu{max-height:calc(100dvh - 20px);overflow:auto;min-width:240px}
.port-context-menu .row-actions,.context-connection{display:flex;flex-direction:column;align-items:stretch}
.port-context-menu .icon-button{justify-content:flex-start;gap:10px}
.context-connection{border-top:1px solid var(--line);margin-top:8px;padding-top:8px}
[data-port-layout] .port-marker.selected{z-index:3}
.tabs{display:flex;gap:18px;border-bottom:1px solid var(--line);margin-bottom:20px}.tabs [aria-selected=true]{border-bottom:3px solid #007d71;color:#007d71}
.image-stage:not([data-port-layout]) .port-marker{border-radius:2px;background:rgba(0,130,115,.28);border:1px solid #007d71;color:var(--text);min-width:28px;min-height:22px}
.image-stage:not([data-port-layout]) .port-marker.connected{background:rgba(213,151,38,.28);border-color:#aa7417}
.module-stage{position:relative;min-height:170px;border:1px solid var(--line);background:var(--soft);margin:20px 0}
.din-stage{background:linear-gradient(0deg,transparent 43%,#a2a9aa 44%,#d9ddde 55%,#8c9597 56%,transparent 58%);}
.module-stage .mini-marker{top:50%!important}.mini-marker{position:absolute;transform:translate(-50%,-50%);z-index:2;border:1px dashed #98681e;background:rgba(218,174,64,.25);color:var(--text);border-radius:2px;padding:3px;min-width:25px;max-width:85px;min-height:30px;font-size:10px;overflow:hidden}
.mini-marker.filled{border-style:solid}.mini-marker img{max-width:65px;max-height:35px;display:block}.mini-marker span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-marker:hover{background:rgba(218,174,64,.55)}
.rack-mini-list{display:flex;flex-wrap:wrap;gap:1px;position:relative;z-index:3;max-width:100%;overflow:auto;max-height:55px}.rack-mini-list button{font-size:9px;padding:1px 3px;min-height:14px;background:#dfb75c66;max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rack-insert-image .rack-mini-list{position:absolute;left:5px;right:5px;bottom:2px}.unit[data-free-unit]{cursor:pointer}.unit[data-free-unit]:hover{background:#67ae9d33}.unit .rack-mini-list{grid-column:2}
#insert-warning{font-weight:700;border-left:4px solid #d43e31;padding:12px;background:#d43e3120}.mini-marker:focus-visible{outline:3px solid #c99824}
.rack-unit-content{display:flex;align-items:center;gap:5px;min-width:0;overflow:hidden}.rack-unit-content>a{flex-shrink:0;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rack-unit-content .rack-mini-list{max-height:26px;flex:1;flex-wrap:nowrap}.module-stage{overflow-x:auto;min-width:0}.module-stage .mini-marker{max-width:calc(100% / var(--slot-count, 1) - 2px);min-width:20px}
.module-scroll{max-width:100%;overflow-x:auto}.module-stage .mini-marker{max-width:calc(100% / var(--slot-count, 1) - 4px)}
.mini-marker{line-height:1.3}.rack-insert-image[role=link]{cursor:pointer}
/* V9: editable plan geometry and transparent built-in rails */
[data-region-canvas] [data-editor-region]{cursor:pointer}[data-region-canvas] .editing-region polygon{stroke:#e99a18;stroke-width:3;vector-effect:non-scaling-stroke;fill-opacity:.4}.region-vertex{fill:#fff;stroke:#b47713;stroke-width:2;vector-effect:non-scaling-stroke;cursor:move;touch-action:none}.region-vertex.selected,.region-vertex:focus{fill:#ffb733;stroke:#533704;outline:none}.region-list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:8px}.region-list-row.selected{background:#e9b34b22}.region-editor-controls{border-left:3px solid #c78f27;padding-left:12px;margin:18px 0}.plan-editor{touch-action:pan-y}.builtin-rail-preview{background:transparent}.room-focus[data-room-target]{cursor:pointer}
.image-stage.rail-image-stage,.rack-insert-image.rail-image-stage{background:transparent}

/* v10: physical mounting geometry, shared by rack and instance views. */
.hardware-scroll{max-width:100%;overflow:auto;padding:18px 8px;margin:12px 0}
.hardware-device{position:relative;flex:none;isolation:isolate}
.hardware-artwork{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:100%;height:100%}
.hardware-artwork>img{display:block;width:100%;height:100%;max-width:none;object-fit:fill;pointer-events:none}
.hardware-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%;overflow:hidden;border:1px solid var(--border);background:var(--surface);font-size:10px;text-align:center}
.hardware-rail>.hardware-artwork>.hardware-fallback{background:linear-gradient(to bottom,transparent 35%,#9ba5a8 36%,#e2e7e7 45%,#69777b 55%,#b0b9bc 64%,transparent 65%);color:transparent}
.hardware-module,.hardware-empty{position:absolute;transform:translate(-50%,-50%)}
.hardware-module{z-index:4;cursor:pointer;outline-offset:2px}
.hardware-module:hover,.hardware-module:focus-visible{outline:2px solid var(--accent)}
.hardware-empty{z-index:2;min-width:0;padding:1px 2px;font-size:10px;line-height:16px;border:1px dashed var(--border);opacity:.65;background:var(--surface);cursor:pointer}
.hardware-empty:hover,.hardware-empty:focus-visible{opacity:1}
.hardware-artwork>.port-marker{z-index:3;border-radius:3px;background:rgba(34,160,120,.24);border:1px solid #299f7e;min-width:22px;height:22px;display:grid;place-items:center;text-decoration:none}
.hardware-rack{position:relative}
.hardware-rack>.unit{height:var(--rack-row);min-height:0;box-sizing:border-box}
.hardware-rack-root{position:absolute;left:44px;cursor:pointer}
.hardware-rack .hardware-empty{font-size:8px;line-height:12px;max-width:calc(var(--ppi) * .9);overflow:hidden}
.hardware-rack .hardware-fallback{font-size:8px}
.hardware-rack-root:focus-visible{outline:2px solid var(--accent)}

/* v12: device artwork defines the hit area, and children stay in their parent. */
.hardware-device{overflow:hidden;pointer-events:none}
.hardware-module{pointer-events:none}
.hardware-artwork{pointer-events:none}
.hardware-artwork>img,.hardware-artwork>.hardware-fallback,.hardware-artwork>.port-marker,.hardware-empty{pointer-events:auto}
.hardware-module:hover,.hardware-module:focus-visible{outline:none}
.hardware-module:focus-visible>.hardware-device>.hardware-artwork{outline:2px solid var(--accent);outline-offset:-2px}
.floating-rack .hardware-current>.hardware-artwork{outline:3px solid #e6a52e;outline-offset:-3px;box-shadow:inset 0 0 0 5px #e6a52e55}
.floating-rack .hardware-current>.hardware-artwork:after{content:'';position:absolute;inset:0;border:3px solid #e6a52e;pointer-events:none;z-index:9}
#ip-summary .stat strong{font-size:clamp(14px,2vw,28px);overflow-wrap:anywhere}
[data-ip-row] small{display:block;max-width:28em;font-size:11px;color:var(--muted)}
[data-form=ip-search]{align-items:end;flex-wrap:wrap}
[data-form=ip-search] label:first-child{flex:1;min-width:200px}

/* V13: compact inventory lists and small address tiles. */
.table-wrap td,.table-wrap th{padding:5px 9px;line-height:1.25;height:auto}
.table-wrap td .row-actions,.table-wrap td .actions{gap:3px;margin:0}
.table-wrap td button,.table-wrap th button{padding:3px 5px;min-height:0;margin:0}
.table-wrap .icon-button{width:27px;height:27px;min-width:27px;padding:4px}
.table-wrap .action-icon{width:17px;height:17px}
.table-wrap td p{margin:0}
.ip-tile-grid{display:flex;flex-wrap:wrap;gap:3px;max-width:100%;margin:10px 0 14px}
button.ip-tile,.ip-legend i.ip-tile{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;min-width:18px;min-height:18px;padding:0;margin:0;border:1px solid var(--muted);border-radius:2px;font:9px/1 monospace;background:transparent;color:var(--text)}
button.ip-tile.used,.ip-legend .ip-tile.used{background:#23935c;border-color:#17834c;color:white}
button.ip-tile.dhcp,.ip-legend .ip-tile.dhcp{background:#2777ca;border-color:#1b65af;color:white}
button.ip-tile:hover,button.ip-tile:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.ip-legend{display:flex;flex-wrap:wrap;gap:16px;font-size:12px}.ip-legend>span{display:flex;align-items:center;gap:5px}

/* Delegated addresses cannot be edited in the supernet. */
button.ip-tile.subnet,.ip-legend .ip-tile.subnet{background:var(--line);border-color:var(--muted);color:var(--muted)}
button.ip-tile.subnet:disabled{cursor:not-allowed;opacity:.65}
button.ip-tile.subnet:hover{outline:none}

/* Floating network hierarchy: no column reserved in the page. */
.network-tree{position:fixed;right:18px;top:85px;width:340px;max-width:calc(100vw - 24px);max-height:65vh;overflow:auto;z-index:35;background:var(--bg);border:1px solid var(--line);box-shadow:0 12px 32px #0004;font-size:.85rem}
.network-tree ul{list-style:none;margin:0;padding:5px 10px 5px 18px}.network-tree li{padding:4px 0}.network-tree summary{cursor:pointer}.network-tree a{overflow-wrap:anywhere}.network-tree-heading{display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background:var(--bg);border-bottom:1px solid var(--line)}
.network-tree-heading [data-tree-drag]{cursor:move;touch-action:none;flex:1;text-align:left}.tree-current{background:#26b99333;outline:1px solid #26b993}.network-tree-toggle{position:fixed;right:18px;bottom:18px;z-index:34}.ip-window{display:flex;gap:16px;align-items:center;margin:10px 0}.network-tree [data-row-type]{display:inline-block}
@media(max-width:700px){.network-tree{top:65px;width:290px;max-height:55vh}.network-tree-toggle{bottom:8px;right:8px}}
/* Patch paths move and scroll with the cabinet, without blocking device clicks. */
.hardware-rack .port-marker{width:10px;min-width:10px;height:10px;min-height:0;padding:0;font-size:7px;line-height:1;border-radius:1px;z-index:8}
.rack-patches{position:absolute;left:0;top:0;overflow:hidden;pointer-events:none;z-index:6}
.rack-patches .patch-halo{fill:none;stroke:var(--bg);stroke-width:4;opacity:.65;pointer-events:none}
.rack-patches .patch-wire{fill:none;stroke-width:1.7;opacity:.85;pointer-events:stroke;cursor:pointer}
.rack-patches circle{pointer-events:all;cursor:pointer}.rack-patches g:focus .patch-wire,.rack-patches g:hover .patch-wire{stroke-width:3;opacity:1}

.rack-patches .patch-wire{stroke-width:var(--patch-width,1.7);stroke-linecap:round;stroke-linejoin:round}.rack-patches .patch-halo{stroke-width:var(--patch-halo-width,4);stroke-linecap:round;stroke-linejoin:round}

/* Native accessible checkbox behavior, presented as illuminated switches. */
input[type=checkbox]{appearance:none;-webkit-appearance:none;position:relative;width:42px;height:24px;min-width:42px;border:1px solid var(--muted);border-radius:20px;padding:0;background:var(--line);cursor:pointer;vertical-align:middle;transition:background .2s,box-shadow .2s}
input[type=checkbox]:before{content:"";position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:var(--surface);box-shadow:0 1px 3px #0005;transition:transform .2s}
input[type=checkbox]:checked{background:#159b55;border-color:#31cf78;box-shadow:0 0 8px #28db7977}input[type=checkbox]:checked:before{transform:translateX(18px);background:#eafff1}input[type=checkbox]:disabled{opacity:.5;cursor:not-allowed}.switch-field{display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:650px}
.theme-toggle{padding:0;width:44px;height:44px;flex:none;border-radius:50%;overflow:hidden}.theme-toggle img{display:block;width:100%;height:100%;object-fit:contain;border-radius:50%;transition:transform .4s ease,filter .3s ease}.theme-toggle:hover img{transform:rotate(12deg)}[data-theme=dark] .theme-toggle img{transform:rotate(180deg)}[data-theme=dark] .theme-toggle:hover img{transform:rotate(192deg)}
body,main,aside,dialog,table,.floating-rack{transition:background-color .25s ease,color .25s ease,border-color .25s ease}.top-actions{flex-wrap:wrap}.auth-page{max-width:480px;margin:8vh auto;padding:30px}.table-export{display:flex;gap:8px;justify-content:flex-end;padding:7px 0;font-size:11px}.csv-header{display:block;white-space:normal;overflow-wrap:anywhere}form[data-form=settings]{max-width:750px}.csv-actions{margin:15px 0}fieldset[hidden]{display:none}
@media(prefers-reduced-motion:reduce){*,*:before{transition:none!important}}

/* Compact permission editor: explicit assignments, no table export. */
.permission-editor .permission-toolbar{display:flex;gap:.5rem;align-items:center;margin-bottom:.65rem}
.permission-editor .permission-toolbar input{flex:1;min-width:0}
.permission-editor table td,.permission-editor table th{padding:.2rem .5rem;height:auto}
.permission-editor table select{padding:.15rem .4rem;min-height:28px;margin:0;width:100%}
.permission-editor table td:first-child{width:65%}
.permission-editor .permission-group th{padding-top:.65rem;font-size:.8rem;opacity:.75;text-align:left}
.permission-editor [data-permission-picker]{padding:.5rem;border:1px solid currentColor;margin-bottom:.5rem}
.permission-editor [data-picker-options]{display:flex;flex-direction:column;max-height:220px;overflow:auto;gap:.2rem}
.permission-editor [data-picker-options] strong{font-size:.8rem;padding:.4rem}
.permission-editor [data-picker-options] button{text-align:left;padding:.25rem .5rem}
.permission-editor [hidden]{display:none!important}
@media(max-width:600px){.permission-editor .permission-toolbar{flex-wrap:wrap}.permission-editor .permission-toolbar input{flex-basis:100%}}

.log-filters{display:flex;flex-wrap:wrap;gap:.6rem;align-items:end;margin-bottom:1rem}.log-filters label{margin:0;flex:1;min-width:130px}.audit-table td{vertical-align:top;padding:.3rem .5rem}.audit-table pre{white-space:pre-wrap;overflow-wrap:anywhere;max-width:65ch;max-height:400px;overflow:auto;font-size:.8rem}.log-paging{display:flex;gap:.7rem;align-items:center;margin-top:.7rem}.shell>aside{overflow-y:auto}

.log-filters label:has(input[type=datetime-local]){min-width:220px}.log-filters input,.log-filters select{width:100%;min-width:0;box-sizing:border-box}

.bulk-toolbar{display:flex;align-items:center;gap:.7rem;margin:.35rem 0}.bulk-toolbar button{padding:.2rem .4rem}td[data-bulk-select],th[data-bulk-select]{width:28px;padding:.2rem .4rem!important}.bulk-choice{appearance:auto!important;-webkit-appearance:checkbox!important;width:16px!important;height:16px!important;min-height:0!important;margin:0!important;padding:0!important;box-shadow:none!important;accent-color:#18a66c}.bulk-choice::before,.bulk-choice::after{display:none!important}
.global-search{position:relative;width:280px;max-width:32vw}.global-search input{width:100%;min-width:0;padding:.45rem .65rem}.global-results{position:absolute;right:0;top:calc(100% + 5px);width:420px;max-width:85vw;max-height:65vh;overflow:auto;background:var(--bg,#fff);color:var(--text,#23352e);border:1px solid #7c9c8c70;box-shadow:0 8px 26px #0003;z-index:5000;padding:.5rem}.global-results a{display:flex;flex-direction:column;padding:.45rem}.global-results a:hover,.global-results a:focus{background:#48c9a52a}.global-results small{opacity:.75;overflow-wrap:anywhere}.site-flyout{position:fixed;width:240px;max-width:calc(100vw - 16px);max-height:min(280px,var(--flyout-available-height,calc(100dvh - 16px)));overflow:auto;background:var(--bg,#fff);color:var(--text,#23352e);box-shadow:0 8px 24px #0004;border:1px solid #7c9c8c70;z-index:5000;padding:.4rem}.site-flyout a{display:block;padding:.45rem .65rem;overflow-wrap:anywhere}.site-flyout a:hover,.site-flyout a:focus{background:#48c9a52a}[hidden]{display:none!important}.ip-summary-row{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.ip-summary-row .stats{flex:1;min-width:280px}.ip-pie{width:92px;height:92px;border-radius:50%;flex:none;box-shadow:0 0 0 1px #7c9c8c60}.room-canvas{overflow:auto;max-width:100%;max-height:78vh}.room-map[data-enhanced-room]{flex:none}.room-neighbour{opacity:.25;pointer-events:none}.plan-link-halo{fill:none;stroke:#fff9;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.plan-link-wire{fill:none;stroke:#6377d8;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.plan-link:hover .plan-link-wire{stroke:#e47a39;stroke-width:3}.plan-link text{fill:#1c367e;paint-order:stroke;stroke:#fff;stroke-width:2px}.cabinet-marker rect{fill:#267ca4;fill-opacity:.75;stroke:#113d57;stroke-width:1}.cabinet-marker.current rect{stroke:#f68c27;stroke-width:3;fill:#f4b63f}.cabinet-marker text{fill:#193449;stroke:#fff;stroke-width:2;paint-order:stroke}.plan-connections{display:flex;gap:.8rem;flex-wrap:wrap;margin:.3rem 0 1rem}.plan .overlay a{pointer-events:auto}.top-actions{gap:.5rem}.audit-table td:nth-child(4){max-width:450px;overflow-wrap:anywhere}
@media(max-width:800px){.topbar,.top-actions{flex-wrap:wrap;height:auto}.global-search{max-width:none;width:100%;flex-basis:100%;order:3}.global-results{left:0;right:auto}.ip-summary-row .stats{min-width:220px}}

.cable-route-canvas{position:relative;max-height:68vh;overflow:auto}.cable-route-canvas img{display:block;width:100%;height:auto}.cable-route-canvas svg{position:absolute;inset:0;width:100%;height:100%;touch-action:none}.route-vertex{fill:var(--bg,#fff);stroke:#208ddd;stroke-width:2;cursor:grab}.route-vertex.selected{fill:#ffb347}.cable-route-canvas .plan-link-wire{fill:none;stroke:#258bd2;stroke-width:3}.cable-route-canvas .plan-link-halo{fill:none;stroke:var(--bg,#fff);stroke-width:6}[data-template-port-rows] input,[data-template-port-rows] select{width:100%;min-width:100px}

[data-cable-editor]{max-height:68vh;overflow:auto}.cable-route-canvas{max-height:none;overflow:visible}

/* Dense table controls are the project-wide default, including modal tables. */
table td,table th{padding:4px 8px;line-height:1.25}table td input:not([type=checkbox]),table td select{padding:3px 6px;min-height:28px;height:28px;margin:0;line-height:1.2}table td button{padding:3px 5px;margin:0;min-height:26px}table td label{margin:0}.port-default-control{display:flex;gap:3px;align-items:center}.port-default-control input,.port-default-control select{flex:1;min-width:0!important}.copy-down{flex:none!important;width:28px;height:28px}.copy-down svg{width:18px;height:18px;display:block}.plan-zoom-viewport{overflow:auto;position:relative;max-width:100%;overscroll-behavior:contain}.plan-zoom-controls{display:flex;gap:4px;align-items:center;justify-content:flex-end;margin:3px 0;font-size:12px}.plan-zoom-controls button{padding:3px 8px}.plan-zoom-content{transform-origin:top left}.plan-zoom-viewport>.plan{max-width:none;margin:0}.cable-route-canvas svg{overflow:visible}
/* V32: independent through-link marker, with the first third highlighted. */
.port-marker.is-linked,.port-tile.is-linked{background:linear-gradient(to right,rgba(85,116,230,.75) 0 33.333%,rgba(34,160,120,.24) 33.333% 100%)}
.device-patch-stubs{position:absolute;inset:0;width:100%;height:100%;pointer-events:none!important;z-index:2}
.device-patch-stubs path{fill:none;stroke:#d58b23;stroke-width:4;vector-effect:non-scaling-stroke}
.password-policy{border:0;padding:0;margin:16px 0}.password-policy fieldset{border:0;padding:0;margin:0}.password-policy fieldset:disabled{opacity:.45}
.password-requirements{font-size:.875rem;max-width:55rem;color:var(--muted)}
.port-defaults td{padding:4px 8px}.port-defaults input:not([type=checkbox]),.port-defaults select{height:28px;min-height:28px;margin:0;padding:3px 6px}

/* Compact fixed-size switches, independent of table column/input flex width. */
.port-linkable-control input[type=checkbox]{flex:0 0 34px!important;width:34px!important;min-width:34px!important;max-width:34px;height:20px;min-height:20px;margin:0;padding:0}
.port-linkable-control input[type=checkbox]:before{width:14px;height:14px;left:2px;top:2px}
.port-linkable-control input[type=checkbox]:checked:before{transform:translateX(14px)}
.definition-combobox{position:relative}.definition-suggestions{position:absolute;left:0;right:0;top:100%;z-index:30;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);max-height:220px;overflow:auto}
.definition-suggestions [role=option]{display:block;width:100%;text-align:left;padding:6px 10px;border-radius:0;font-size:13px}
.definition-suggestions [aria-selected=true]{background:var(--tint);outline:1px solid var(--accent);outline-offset:-1px}.definition-suggestions p{padding:6px 10px;margin:0;font-size:13px}

/* All context menu actions share one hover/focus treatment. */
.port-context-menu :is(a,button,[role="menuitem"]){width:100%;box-sizing:border-box;text-align:left;border-radius:4px}
.port-context-menu :is(a,button,[role="menuitem"]):is(:hover,:focus-visible){background:color-mix(in srgb,var(--accent) 22%,var(--surface));outline:1px solid color-mix(in srgb,var(--accent) 55%,transparent)}
.rack-faces{overflow:auto}.rack-faces-canvas{position:relative;display:flex;flex-flow:row nowrap;align-items:flex-start;gap:18px;width:max-content}
/* Absolute rack hardware cannot establish an intrinsic flex width. */
.rack-face{flex:none;min-width:0;width:min(360px,calc(100vw - 60px))}.rack-face>.hardware-rack{width:100%}.rack-face-label{font-size:12px;padding:2px 8px}
.floating-rack:has(.rack-faces){max-width:calc(100vw - 56px);width:max-content}
.hardware-faces{display:flex;flex-flow:column nowrap;gap:16px;overflow:auto}.hardware-faces>section{flex:none}

/* Persistent top menu, with measured space for wrapped mobile actions. */
.shell{--nav-width:238px}.shell>main{padding-top:calc(var(--top-menu-height,80px) + 24px)}
.shell .topbar{position:fixed;top:0;left:var(--nav-width);right:0;z-index:60;background:var(--bg);padding:12px clamp(22px,5vw,76px);box-shadow:0 3px 10px #0000000a}
.locked-user{color:#a020b0!important}[data-theme=dark] .locked-user{color:#df80eb!important}
.floating-rack,.rack-toggle{top:var(--top-menu-height,80px)}
.floating-rack{max-height:calc(100dvh - var(--top-menu-height,80px))}
@media(max-width:1000px){.shell{--nav-width:205px}.shell .topbar{padding-inline:25px}}
.shell.collapsed{--nav-width:76px}
@media(max-width:700px){.shell,.shell.collapsed{--nav-width:0px}.shell .topbar{padding-inline:20px}.shell.mobile-open aside{z-index:80}}

/* SSO secondary action: two thirds of the primary login control. */
.auth-page .sso-login-actions { margin-top: .6rem; }
.auth-page .sso-login-button { font-size: .67em; padding: 6px 8.7px; min-height: 0; }

.plan-order-actions{display:inline-grid;grid-template-columns:30px 30px;gap:2px;vertical-align:middle;margin-left:4px}
.plan-order-actions .icon-button,.plan-order-placeholder{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;padding:5px}
.network-tree .network-tree-root{padding-left:12px}
.network-tree ul ul{padding:2px 0 2px 14px}
.network-tree ul ul>li{position:relative;padding:4px 4px 4px 16px}
.network-tree ul ul>li::before{content:"";position:absolute;left:0;top:0;bottom:0;border-left:1px solid var(--line);pointer-events:none}
.network-tree ul ul>li:last-child::before{bottom:auto;height:1.1em}
.network-tree ul ul>li::after{content:"";position:absolute;left:0;top:1.1em;width:12px;border-top:1px solid var(--line);pointer-events:none}
.network-tree-heading [data-tree-drag]{user-select:none}

/* Plan tools follow the actual displayed plan width, not the page width. */
.plan-zoom-frame{display:block;max-width:100%;min-width:0;margin:12px 0}.plan-zoom-frame .plan-zoom-controls{width:100%;justify-content:flex-end;flex-wrap:wrap;gap:4px}.plan-zoom-controls label{display:inline-flex;align-items:center;gap:3px;margin:0;font-size:12px}.plan-zoom-controls input[data-zoom-value]{width:64px;min-width:0;padding:3px 4px;height:28px;margin:0}.plan-zoom-viewport{width:100%;max-height:78vh}.plan-zoom-content{position:relative;overflow:hidden}.plan-zoom-controls [data-zoom-message]{font-size:11px;color:var(--muted)}

/* Shared fixed footer, keeping content and floating controls above it. */
:root{--footer-height:32px;--free-range:#8e239f}
:root[data-theme=dark]{--free-range:#df80eb}
body{padding-bottom:var(--footer-height)}
.app-footer{position:fixed;inset:auto 0 0;height:var(--footer-height);z-index:90;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 18px;background:var(--bg);color:var(--muted);border-top:1px solid var(--line);font-size:12px}
.shell{min-height:calc(100dvh - var(--footer-height))}
.shell>aside{height:calc(100dvh - var(--footer-height))}
.network-tree-toggle{bottom:calc(var(--footer-height) + 8px)}
.floating-rack{max-height:calc(100dvh - var(--top-menu-height,80px) - var(--footer-height))}
.ip-free-range>td{color:var(--free-range)}
.runtime-information{display:grid;grid-template-columns:max-content 1fr;gap:8px 24px}.runtime-information dd{margin:0;overflow-wrap:anywhere}

.app-footer a,.app-footer a:visited,.app-footer a:hover{color:inherit;text-decoration:none}

/* Only the tree body scrolls; the opaque heading has its own fixed row. */
.network-tree{display:flex;flex-direction:column;overflow:hidden}
.network-tree-heading{position:relative;flex:none;z-index:1;background:var(--bg)}
.network-tree>.network-tree-root{overflow:auto;min-height:0;margin:0}
.move-tree{max-height:55vh;overflow:auto}.move-tree ul{list-style:none;padding-left:18px;margin:0}.move-tree label.move-choice{display:inline-flex;align-items:center;gap:8px;margin:0;padding:4px;font-size:14px}.move-choice input{width:auto;margin:0}.move-tree summary{cursor:pointer}.move-choice:has(input:checked){background:var(--tint)}
.ip-info{position:relative;display:inline-flex;cursor:help}.ip-info>[role=tooltip]{display:none;position:absolute;left:0;bottom:100%;z-index:50;min-width:200px;max-width:350px;max-height:250px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--surface);color:var(--text);border:1px solid var(--line);padding:8px;box-shadow:var(--shadow)}.ip-info:hover>[role=tooltip],.ip-info:focus>[role=tooltip]{display:block}

/* Plan infrastructure uses CSS-pixel sizes, including CSS transforms on zoom. */
.plan-link-wire,.plan-link-halo{vector-effect:none;stroke-width:var(--plan-stroke-width,2.2px)}
.plan-link-halo{stroke-width:var(--plan-stroke-width,5px)}
.plan-link:hover .plan-link-wire{stroke-width:var(--plan-hover-width,3px)}
.cabinet-marker [data-screen-fixed] text{font-size:12px}

.ip-tile-nav{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:32px;height:32px;padding:5px;flex:0 0 32px}
.ip-tile-nav svg{width:20px;height:20px}
.ip-tile-nav-placeholder{visibility:hidden;pointer-events:none}

.ip-segment-navigation{display:inline-flex;align-items:center;gap:6px;flex-shrink:0}

/* Submenu indicators stay aligned at the expanded sidebar's right edge. */
.shell aside a[aria-haspopup="true"]{position:relative;padding-right:30px}
.shell aside a[aria-haspopup="true"]::after{content:"";position:absolute;right:14px;top:50%;width:7px;height:7px;border-top:2px solid currentColor;border-right:2px solid currentColor;transform:translateY(-50%) rotate(45deg);pointer-events:none}
.shell.collapsed:not(.mobile-open) aside a[aria-haspopup="true"]::after{display:none}

.shell main .auth-page{max-width:420px;margin:48px auto;padding:24px;width:100%;box-sizing:border-box;min-height:0}

@media(min-width:701px){.shell>aside{position:fixed;left:0;top:0;width:var(--nav-width);z-index:65}.shell>main{grid-column:2}}

.welcome-networks article{display:flex;align-items:center;gap:18px;padding:12px 0;border-bottom:1px solid var(--line)}.welcome-networks article .ip-pie{width:70px;height:70px}.welcome-networks p{font-size:12px;color:var(--muted)}

/* Compact inventory counts; rotate headings, not cells or whole tables. */
th.vertical-stat { width: 32px; min-width: 32px; padding: 4px; vertical-align: bottom; }
th.vertical-stat > button { writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; padding: 6px 3px; max-height: 220px; }
td.stat-count { text-align: center; padding: 4px; font-variant-numeric: tabular-nums; }

/* Object actions always follow the object title, before its description. */
.page-title { flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 8px; }
.page-title > .actions { justify-content: flex-start; align-self: flex-start; margin: 0; }
.page-title > .page-title-description { margin-top: 4px; }

/* Search destinations stay identifiable without flashing or layout changes. */
.search-result-highlight {
 outline: 3px solid #b078e8;
 outline-offset: 4px;
 background-color: rgba(176,120,232,.18);
 scroll-margin-block: 110px 40px;
}
tr.search-result-highlight > td { background-color: rgba(176,120,232,.18); }

.tenant-combobox{position:relative}
.tenant-combobox [role=listbox]{position:absolute;z-index:80;inset:auto 0;max-height:240px;overflow:auto;background:var(--bg,#18232a);border:1px solid #788b94}
.tenant-combobox [role=option]{display:block;text-align:left;width:100%;padding:6px 10px}
.tenant-combobox [role=option]:hover,.tenant-combobox [aria-selected=true]{background:rgba(176,120,232,.22)}

/* Shared tactile action treatment; navigation, tabs and icon actions keep their own styles. */
button.technical-action,[data-database-backups] a.technical-action,button.primary:not(.icon-button):not(.sso-login-button),.table-export button {
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border:1px solid color-mix(in srgb,var(--accent) 65%,var(--line));
  border-radius:4px 11px 4px 11px;min-height:38px;padding:8px 16px;
  background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 16%,var(--surface)),var(--surface));
  color:var(--text);font-weight:650;letter-spacing:.025em;
  box-shadow:inset 0 1px 0 color-mix(in srgb,var(--accent) 22%,transparent),0 2px 5px #00000012;
  transition:background .16s ease,border-color .16s ease,box-shadow .16s ease;
}
button.primary:not(.icon-button):not(.sso-login-button) {background:var(--accent);color:var(--bg)}
button.technical-action:not(:disabled):hover,[data-database-backups] a.technical-action:hover,button.primary:not(.icon-button):not(.sso-login-button):not(:disabled):hover,.table-export button:hover {
  border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent),0 0 12px color-mix(in srgb,var(--accent) 23%,transparent);
}
button.technical-action:focus-visible,[data-database-backups] a.technical-action:focus-visible,button.primary:not(.icon-button):not(.sso-login-button):focus-visible,.table-export button:focus-visible {outline:2px solid var(--accent);outline-offset:3px}
button.technical-action:disabled,button.primary:not(.icon-button):not(.sso-login-button):disabled{opacity:.5;box-shadow:none}
:is(form[data-form="asset-settings"],form[data-form="settings"],form[data-form="oauth-settings"],form[data-form="frame-security"],form[data-form="mail-settings"])>.settings-save {
  display:flex;justify-content:flex-start;align-items:center;width:100%;margin-top:20px;
}
:is(form[data-form="asset-settings"],form[data-form="settings"],form[data-form="oauth-settings"],form[data-form="frame-security"],form[data-form="mail-settings"])>.settings-save>button {
  width:300px;max-width:100%;flex:0 1 300px;
}
@media(prefers-reduced-motion:reduce){button.technical-action,button.primary:not(.icon-button):not(.sso-login-button),.table-export button{transition:none}}
[data-database-backups] .settings-save{display:flex;justify-content:flex-start;margin:12px 0}
[data-database-backups] .technical-action{width:300px;max-width:100%;text-decoration:none}
[data-db-backup-result]{display:flex;align-items:flex-start;flex-direction:column;gap:12px}
.patch-editor-scroll{overflow:auto;max-height:65vh;max-width:100%;padding:12px;border:1px solid var(--line);background:var(--surface)}
[data-patch-editor-scene]{isolation:isolate}
[data-patch-editor-scene] .rack-face{width:390px;min-width:390px;flex:0 0 390px}
[data-patch-editor-scene] .rack-patches{opacity:.2;pointer-events:none}
[data-patch-editor-scene] .rack-patches g{pointer-events:none}
.patch-editor-overlay{position:absolute;left:0;top:0;z-index:20;overflow:visible;touch-action:none;cursor:crosshair}
.patch-editor-hit{fill:none;stroke:transparent;stroke-width:18;pointer-events:stroke}
.patch-editor-wire{fill:none;stroke:var(--accent);stroke-width:3;pointer-events:none}
.patch-editor-overlay circle{stroke:var(--bg);stroke-width:2;fill:var(--accent)}
.patch-editor-overlay .patch-point{cursor:grab}
.patch-editor-overlay .patch-point.selected{fill:#da9a22;stroke:var(--text)}
.patch-editor-overlay .patch-fixed{fill:var(--muted);pointer-events:none}


.port-context-menu{max-height:calc(100dvh - var(--footer-height,32px) - 16px);overflow-y:auto}

/* Login license notices persist until dismissed and keep the footer clear. */
.license-toasts{position:fixed;top:calc(var(--top-menu-height,80px) + 12px);right:18px;width:min(440px,calc(100vw - 28px));max-height:calc(100dvh - var(--top-menu-height,80px) - var(--footer-height,32px) - 24px);overflow:auto;z-index:500;display:grid;gap:10px;pointer-events:none}
.license-notice{position:relative;padding:16px 40px 16px 18px;border:1px solid color-mix(in srgb,#ca922b 65%,var(--line));border-left:3px solid #ca922b;border-radius:8px;background:var(--surface);color:var(--text);box-shadow:0 8px 28px #0003;pointer-events:auto;font-size:13px;line-height:1.5}
.license-notice p{margin:6px 0 10px}.license-notice>a{font-weight:650;text-decoration:underline}.license-notice>button{position:absolute;right:5px;top:5px;padding:2px 8px;font-size:23px;line-height:1.2}.license-notice strong{display:block;color:var(--text)}
/* Consistent compact context actions: approximately 35% less than 38px. */
.port-context-menu :is(a,button,[role="menuitem"]){min-height:24.7px;height:auto;min-width:0;padding:3.35px 10px;line-height:18px;font-size:13px;display:flex;align-items:center;gap:8px}
.port-context-menu :is(.row-actions,.context-connection){gap:5.2px}
.port-context-menu .action-icon{width:18px;height:18px}
.port-context-menu strong{padding:3px 10px;line-height:16px}
.port-context-menu button.technical-action{min-height:24.7px;padding:3.35px 10px;line-height:18px;box-shadow:none}
.toast{bottom:calc(var(--footer-height,32px) + 12px);z-index:500}
.user-email-error{display:block;color:var(--danger);font-size:12px;line-height:1.3;margin-top:4px}.user-email-error:empty{display:none}
input[aria-invalid="true"]{border-color:var(--danger)}
.user-name-action{padding:0;color:var(--accent);border:0;display:inline;font:inherit}.user-name-action:hover{text-decoration:underline}
.floating-rack .hardware-hovered>.hardware-artwork{outline:3px solid #27bc68;outline-offset:-3px;box-shadow:inset 0 0 0 5px #27bc6844}
.floating-rack .hardware-hovered>.hardware-artwork:after{content:'';position:absolute;inset:0;border:3px solid #27bc68;pointer-events:none;z-index:9}

/* Licensing: customer-facing status, generous typography, compact supporting details. */
.license-overview{--license-signal:var(--accent);max-width:1120px}
.license-overview.license-caution{--license-signal:#a76813}
:root[data-theme=dark] .license-overview.license-caution{--license-signal:#edbe72}
.license-overview.license-attention{--license-signal:var(--danger)}
.license-hero{display:flex;align-items:center;gap:40px;position:relative;isolation:isolate;padding:24px 0 32px;border-bottom:1px solid var(--line)}
.license-hero:before{content:"";position:absolute;z-index:-1;inset:0 -20px;background:radial-gradient(ellipse at 95% 45%,color-mix(in srgb,var(--license-signal) 12%,transparent),transparent 58%);pointer-events:none}
.license-intro{flex:1;min-width:0}.license-kicker{font-size:11px;font-weight:650;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:18px}.license-kicker span{margin:0 8px;color:var(--license-signal)}
.license-status{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--license-signal);border:1px solid color-mix(in srgb,var(--license-signal) 30%,transparent);background:color-mix(in srgb,var(--license-signal) 7%,transparent);border-radius:30px;padding:5px 11px;font-weight:650}.license-status i{width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 9px color-mix(in srgb,var(--license-signal) 45%,transparent)}
.license-intro h2{font-size:clamp(28px,3.6vw,46px);font-weight:550;letter-spacing:-1.5px;line-height:1.15;margin:16px 0 10px;overflow-wrap:anywhere}
.license-intro>p{max-width:650px;font-size:14px;color:var(--muted);margin:0}.license-scope{display:flex;gap:14px 32px;flex-wrap:wrap;margin-top:25px;font-size:11px;color:var(--muted)}.license-scope b{display:block;font-size:13px;font-weight:500;color:var(--text);overflow-wrap:anywhere;margin-top:3px}
.license-emblem{width:135px;flex:none;color:var(--license-signal);opacity:.85;padding:12px}.license-emblem svg{display:block;width:100%;height:auto}
.license-metrics{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:56px;padding:30px 0 26px;border-bottom:1px solid var(--line)}
.license-overview h3{font-size:15px;font-weight:600;letter-spacing:-.2px;margin:0 0 12px}.license-metrics h3{color:var(--muted);font-size:12px;font-weight:500;letter-spacing:.4px}.license-number{font-size:58px;font-weight:500;letter-spacing:-2px;line-height:1.15;font-variant-numeric:tabular-nums}.license-number span{font-size:23px;font-weight:400;color:var(--muted);letter-spacing:-.6px;margin-left:12px}
.license-metrics p{font-size:13px;margin:6px 0}.license-meter{height:9px;background:var(--line);border-radius:8px;position:relative;overflow:hidden;margin:24px 0 9px}.license-meter>span{height:100%;display:block;background:var(--license-signal);border-radius:8px}.license-meter>i{position:absolute;top:0;bottom:0;width:2px;background:var(--surface)}.license-meter-key{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 16px;font-size:11px;color:var(--muted)}.license-meter-key>span:first-child{color:var(--license-signal)}
.license-overview .license-footnote{font-size:11px;line-height:1.6;color:var(--muted);margin-top:12px}.license-expiry{display:block;font-size:16px;font-weight:500;margin-top:19px}.license-term .license-footnote{margin-top:2px}.license-renewal{color:var(--license-signal)}.license-alert{border-left:2px solid var(--license-signal);padding-left:15px;color:var(--license-signal);font-size:13px}
.license-actions-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:56px;padding:30px 0}.license-actions-grid section>p{font-size:13px;color:var(--muted);margin:0 0 20px;max-width:480px}.license-actions-grid form{gap:9px}.license-file-label input{padding:7px;max-width:100%;font-size:12px}.license-file-label input::file-selector-button{background:var(--tint);color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);padding:7px 12px;margin-right:10px;border-radius:4px;font:inherit;cursor:pointer}.license-paste{margin-top:8px}.license-overview summary{cursor:pointer;color:var(--muted);font-size:12px;padding:7px 0}.license-paste label{margin:10px 0}.license-paste textarea{font:12px/1.5 ui-monospace,monospace}.license-overview .settings-save{margin-top:10px}.license-overview .technical-action{width:300px;max-width:100%;justify-content:center;gap:8px}.license-request .technical-action svg{width:19px;height:19px;flex:none}.license-request{padding-left:0}.license-technical{border-top:1px solid var(--line);padding-top:10px}.license-technical dl{display:grid;grid-template-columns:1fr 1fr;gap:14px 28px;font-size:12px;margin-top:12px}.license-technical dt{color:var(--muted);font-size:11px}.license-technical dd{margin:3px 0 0;overflow-wrap:anywhere}
.toast a{display:block;margin-top:7px;color:inherit;font-weight:650;text-decoration:underline;text-underline-offset:3px}
@media(max-width:900px){.license-metrics,.license-actions-grid{gap:30px}.license-emblem{width:100px}.license-number{font-size:48px}}
@media(max-width:600px){.license-hero{gap:12px;padding-top:12px}.license-emblem{width:65px;padding:0;align-self:flex-start;margin-top:40px}.license-intro h2{font-size:30px}.license-kicker{letter-spacing:1px}.license-scope{gap:12px}.license-metrics,.license-actions-grid{grid-template-columns:1fr;gap:28px}.license-term{border-top:1px solid var(--line);padding-top:24px}.license-request{border-top:1px solid var(--line);padding-top:24px}.license-technical dl{grid-template-columns:1fr}.license-overview .technical-action{width:100%}}

/* Module selection and license catalog share the compact inventory styling. */
.nav-group-title{padding:0 14px 10px;color:var(--muted)}
.plan-modules{display:flex;align-items:center;flex-wrap:wrap;gap:10px 24px;margin:18px 0 24px;padding:0}
.plan-modules legend{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:8px}
.plan-modules label{display:inline-flex;align-items:center;gap:9px;margin:0;cursor:pointer}
.plan-modules input[role=switch]{flex:none;width:34px;min-width:34px;max-width:34px;height:20px}
.plan-modules input[role=switch]:before{width:14px;height:14px;left:2px;top:2px}
.plan-modules input[role=switch]:checked:before{transform:translateX(14px)}
.license-modules{margin:26px 0}.license-modules h3{font-size:16px;font-weight:600}
.license-modules td,.license-modules th{padding:4px 14px}
.module-unlicensed{background:var(--bg);color:var(--muted)}
@media(min-width:1200px){
 .license-modules table{display:block;width:100%}
 .license-modules thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
 .license-modules tbody{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px}
 .license-modules tbody tr{display:flex;align-items:center;justify-content:space-between;min-width:0;border-bottom:1px solid var(--line)}
 .license-modules tbody td{display:block;border-bottom:0;overflow-wrap:anywhere}
 .license-modules tbody td:first-child{flex:1;min-width:0}
 .license-modules tbody td:last-child{flex:none;text-align:right}
}

/* Reservations: compact selectors and a scrollable quarter-hour week. */
.booking-resource-picker {border-bottom:1px solid var(--line);padding-bottom:12px;margin:12px 0}
.booking-picker-heading {display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.booking-picker-heading input {margin-left:auto;max-width:260px}
.booking-resource-list {max-height:180px;overflow:auto;margin-top:8px;display:grid;gap:2px}
.booking-resource-list label {display:flex;align-items:center;gap:8px;margin:0;padding:4px 6px}
.booking-resource-row {display:flex;align-items:center;gap:8px}
.booking-resource-row>label {flex:1;min-width:0}
.booking-resource-row[hidden] {display:none}
.booking-resource-row .actions {margin:0;flex:none}
.booking-filters {display:flex;flex-wrap:wrap;gap:12px;margin:12px 0}
.booking-filters label {flex:1 1 220px;max-width:420px;margin:0}
.booking-resource-list label[hidden] {display:none}
.booking-resource-list input {margin:0!important;flex:none}
.booking-resource-list i {width:8px;height:8px;flex:none;border-radius:50%;background:var(--booking-color)}
.booking-week-toolbar {display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:12px 0}
.booking-calendar-head,.booking-grid {display:grid;grid-template-columns:54px repeat(7,minmax(92px,1fr));min-width:700px}
.booking-calendar-head {padding-right:12px;border-bottom:1px solid var(--line)}
.booking-calendar-head strong {padding:9px 3px;text-align:center;font-size:12px}
.booking-calendar-head strong.is-past {color:var(--muted);opacity:.5}
.booking-workspace {max-width:100%;overflow-x:auto}
.booking-grid-scroll {height:min(600px,65vh);overflow-y:auto;min-width:700px}
.booking-grid {height:1536px}
.booking-hours {position:relative;font-size:11px;opacity:.75}
.booking-hours span {position:absolute;right:7px}
.booking-day {position:relative;border-left:1px solid var(--line);background:repeating-linear-gradient(to bottom,transparent 0,transparent 15px,color-mix(in srgb,var(--line) 40%,transparent) 15px,color-mix(in srgb,var(--line) 40%,transparent) 16px);cursor:crosshair}
.booking-day:focus {outline:2px solid var(--accent);outline-offset:-2px}
.booking-past {position:absolute;inset:0 0 auto;height:0;background:#8a8a8a;opacity:.5;z-index:2;pointer-events:none}
.booking-event {position:absolute;border:1px solid var(--booking-color);border-left:3px solid var(--booking-color);background:color-mix(in srgb,var(--booking-color) 24%,var(--bg));border-radius:4px;padding:2px 4px;min-height:0;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start;font-size:11px;line-height:1.15;cursor:pointer;text-align:left;z-index:1}
.booking-event strong,.booking-event small {overflow:hidden;max-width:100%;text-overflow:ellipsis;white-space:nowrap}
.booking-event.is-cancelled {opacity:.55;border-style:dashed;text-decoration:line-through;background:repeating-linear-gradient(45deg,transparent,transparent 5px,#8882 5px,#8882 10px)}
.booking-form-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}
.booking-time-presets {grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 16px}
.booking-time-presets button {flex:1 1 150px}
.booking-time-presets small {display:block;margin-top:3px;font-weight:400;font-variant-numeric:tabular-nums}
.booking-datetime {border:0;padding:0;margin:0 0 14px;min-width:0}
.booking-datetime legend {padding:0;margin-bottom:6px;font-size:13px;font-weight:650;color:var(--text)}
.booking-datetime-fields {display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.booking-datetime-fields>input {flex:1 1 145px;min-width:0;width:auto;margin:0}
.booking-clock {display:flex;align-items:center;gap:4px;flex:none}
.booking-clock select {width:66px;min-width:0;margin:0;padding:9px 7px;font-variant-numeric:tabular-nums}
.booking-details {display:grid;grid-template-columns:140px 1fr;gap:8px 16px}
.booking-details dd {margin:0}.booking-text {white-space:pre-wrap}
.booking-place {cursor:grab;color:#3686c7;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.booking-place circle {fill:color-mix(in srgb,var(--bg) 90%,transparent);stroke:currentColor}
.booking-place.parking {color:#9874d5}.booking-place text {fill:currentColor;stroke:none;font-size:12px;font-weight:600}
[data-booking-place]:focus .booking-place circle {stroke-width:3}
.booking-placement-canvas {cursor:crosshair!important}
[data-plugin-table="reservations.resources"] td,[data-plugin-table="mail.deliveries"] td {padding-top:4px;padding-bottom:4px}
@media(max-width:700px){.booking-form-grid {grid-template-columns:1fr}.booking-picker-heading input{margin-left:0}}
.mail-message-content{white-space:pre-wrap;overflow-wrap:anywhere;max-height:45vh;overflow:auto;font:inherit}

/* Approved Velundis identity. Compact navigation shows only the V emblem. */
.brand{min-width:0;width:100%;min-height:52px;justify-content:flex-start;line-height:0}
.brand-art{display:block;width:100%;max-width:330px;line-height:0}
.brand-art img{display:block;width:100%;height:auto;object-fit:contain}
.brand-art .brand-logo-dark,.brand-art .brand-symbol{display:none}
:root[data-theme=dark] .brand-art .brand-logo-light{display:none}
:root[data-theme=dark] .brand-art .brand-logo-dark{display:block}
.auth-brand{margin:0 0 20px;line-height:0}
.auth-brand .brand-art{width:min(100%,300px)}
@media(min-width:701px){
 .shell.collapsed .brand-art-compact{width:48px;height:48px;max-width:none;flex:none}
 .shell.collapsed .brand-art-compact .brand-logo{display:none}
 .shell.collapsed .brand-art-compact .brand-symbol{display:block;width:48px;height:48px}
}

/* Mail template editor: compact controls, safely isolated preview. */
.mail-template-placeholders{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0}
.mail-template-placeholders>span{width:100%;font-size:.8rem;opacity:.7}
.mail-template-placeholders .technical-action{font-size:.75rem;padding:4px 8px;min-height:28px}
[data-form="mail-template"] textarea[name="html_body"]{font-family:ui-monospace,monospace;font-size:.82rem;line-height:1.4;min-height:200px;white-space:pre;overflow:auto;tab-size:2}
.mail-template-images{display:grid;gap:8px;margin:12px 0}
[data-template-images]{display:flex;flex-wrap:wrap;gap:8px}
[data-template-images] button{display:flex;align-items:center;gap:6px;max-width:220px;overflow:hidden}
[data-template-images] img{width:46px;height:34px;object-fit:contain}
[data-template-images] span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mail-image-upload{width:fit-content;cursor:pointer}
.mail-image-upload input{max-width:220px;font-size:.8rem}
.mail-template-preview iframe{width:100%;height:300px;border:1px solid var(--line);background:white;border-radius:8px;margin-top:8px}
.mail-template-heading{max-width:300px}
.mail-template-search{display:block;max-width:480px;margin:12px 0}

/* Occupancy overlays leave room links and editing hit targets intact. */
.plan [data-room-target] polygon.booking-room-occupied,.plan [data-room-target] polygon.booking-room-upcoming{fill-opacity:1;stroke:none;pointer-events:none}
.booking-place.occupied circle{fill:#249b65;stroke:#126442}
.booking-place.occupied{color:#fff}
.booking-place.occupied text{fill:var(--text);paint-order:stroke;stroke:var(--bg);stroke-width:3px}
[data-booking-readonly] .booking-place{cursor:pointer}
[data-booking-room-tooltip]{position:fixed;z-index:6000;pointer-events:none;max-width:min(360px,calc(100vw - 16px));padding:8px 11px;border:1px solid var(--line);border-radius:6px;background:var(--surface,var(--bg));color:var(--text);box-shadow:var(--shadow)}
[data-booking-room-tooltip] strong,[data-booking-room-tooltip] span{display:block}
[data-booking-room-tooltip] span{font-size:.85rem;margin-top:3px}
.booking-room-preview{margin:14px 0}
.mail-template-plan-switch{margin:12px 0;justify-content:flex-start}

/* Asset catalogues use the shared compact table and modal conventions. */
.asset-archived,.asset-archived a{color:#b05bce}
.manufacturer-logo{max-width:120px;max-height:56px;object-fit:contain}
.asset-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 24px}
.asset-details dt{font-size:.8rem;opacity:.7}.asset-details dd{margin:3px 0;white-space:pre-wrap;overflow-wrap:anywhere}
.asset-notes{max-width:24rem;white-space:pre-wrap}
[data-plugin-resource="assets"] td,[data-plugin-resource="manufacturers"] td,[data-plugin-resource="asset_models"] td,[data-plugin-resource="suppliers"] td,[data-plugin-resource="asset_statuses"] td{padding-top:4px;padding-bottom:4px}

/* Object histories use the same compact rows as all inventory tables. */
.record-history-table td,.record-history-table th{padding-top:4px;padding-bottom:4px;vertical-align:top}
.record-history-table td:last-child{white-space:normal;overflow-wrap:anywhere}
.history-change{display:grid;grid-template-columns:minmax(100px,.5fr) minmax(0,1fr) auto minmax(0,1fr);gap:4px 10px;padding:2px 0;align-items:start}
.history-change span{white-space:pre-wrap;max-height:12rem;overflow:auto}
[data-history-filter] input{height:28px;min-height:28px;margin:0}
[data-history-filter] label{margin:0}

/* CAD viewer follows the plan viewport and leaves the fixed footer unobstructed. */
.cad-viewer{position:relative;width:100%;height:min(62vh,720px);min-height:250px;overflow:hidden;border-radius:8px;background:var(--bg);touch-action:none}
.cad-viewer canvas{display:block;width:100%;height:100%;cursor:grab;outline-offset:-3px}
.cad-tooltip{position:absolute;max-width:180px;padding:5px 9px;border-radius:5px;background:var(--panel,#1b2632);color:var(--text,#edf3f8);pointer-events:none;box-shadow:0 3px 14px #0004;font-size:.85rem}
.cad-status{font-size:.9rem;min-height:1.4em;margin:4px 0;color:var(--muted)}
[data-plugin-table="sites.building_models"] td{padding-top:4px;padding-bottom:4px}
[data-plugin-table="sites.building_models"] .warning{max-width:42rem;margin:3px 0;font-size:.85rem}

/* CAD list uses the same compact sortable headings as the other tables. */
[data-plugin-table="sites.building_models"] th button{border:0;background:transparent;color:inherit;font:inherit;padding:0;cursor:pointer;}

/* Values owned by an external asset source remain visibly read-only. */
.asset-synced-field input:disabled { color: var(--muted); background: color-mix(in srgb, currentColor 8%, transparent); opacity: .65; cursor: not-allowed; }
.sql-query { margin: 12px 0 0; padding: 18px; max-height: 65dvh; overflow: auto; white-space: pre; tab-size: 2; border: 1px solid var(--line); border-radius: 8px; background: var(--bg); color: var(--text); font: 13px/1.7 ui-monospace, SFMono-Regular, Consolas, monospace; }
.sql-query .sql-keyword { color: #7045a4; font-weight: 650; }
.sql-query .sql-string, .sql-query .sql-identifier { color: #006b61; }
.sql-query .sql-number { color: #994d0a; }
.sql-query .sql-comment { color: #596e65; font-style: italic; }
.sql-query .sql-operator, .sql-query .sql-punctuation { color: #4b6176; }
:root[data-theme=dark] .sql-query .sql-keyword { color: #d0adff; }
:root[data-theme=dark] .sql-query .sql-string, :root[data-theme=dark] .sql-query .sql-identifier { color: #69d8b5; }
:root[data-theme=dark] .sql-query .sql-number { color: #f3bd7e; }
:root[data-theme=dark] .sql-query .sql-comment { color: #a4b5ac; }
:root[data-theme=dark] .sql-query .sql-operator, :root[data-theme=dark] .sql-query .sql-punctuation { color: #a8c9e9; }
[data-asset-connection][hidden] { display: none; }
/* Ticketing follows the compact inventory tables. */
.ticket-filters{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:12px 0}.ticket-filters input[type=search]{max-width:360px}.ticket-filters label{display:flex;align-items:center;gap:8px;margin:0}.ticket-filters select{width:auto}
.ticket-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px}.ticket-detail-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,28%);gap:24px}.ticket-meta{border-left:1px solid var(--line);padding-left:18px}.ticket-text{white-space:pre-wrap;overflow-wrap:anywhere}.ticket-timeline article{padding:12px 0;border-bottom:1px solid var(--line)}.ticket-timeline header{font-size:.85rem;opacity:.8}.ticket-timeline .ticket-internal{border-left:3px solid #be8b31;padding-left:12px}.ticket-ref{display:inline-flex;align-items:center;gap:4px;margin:4px 8px 4px 0}.ticket-deleted{color:#b161c9}
[data-plugin-table^="tickets."] td,[data-plugin-table^="tickets."] th{padding-top:4px;padding-bottom:4px}
.ticket-note-form{margin:18px 0 24px}.ticket-note-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:center}.ticket-note-actions>label{grid-column:1;margin:0;display:flex;align-items:center;gap:8px}.ticket-note-actions>button{grid-column:3;width:100%;margin:0}.ticket-note-actions input[role=switch]{flex:none}
.ticket-inline-image{display:block;max-width:100%;height:auto;margin:10px 0;border-radius:5px}.ticket-description{margin:12px 0}.ticket-description img{object-fit:contain}
[data-ticket-description-preview]{max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:6px;padding:10px;margin:8px 0 16px}
.ticket-observer-search{display:grid;grid-template-columns:minmax(0,1fr) 38px;align-items:end;gap:8px}.ticket-observer-search .definition-combobox{min-width:0}.ticket-observer-search .icon-button{height:36px;margin:0 0 12px}.ticket-observer-list{list-style:none;padding:0;margin:8px 0 16px}.ticket-observer-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 0;border-bottom:1px solid var(--line);min-height:28px}.ticket-observer-list .icon-button{width:28px;height:28px;min-height:28px;padding:4px}.ticket-observer-list .empty{border:0}.ticket-observer-search [aria-selected=true]{background:color-mix(in srgb,var(--accent) 15%,transparent)}
@media(max-width:760px){.ticket-detail-grid,.ticket-fields{grid-template-columns:1fr}.ticket-meta{border-left:0;padding-left:0}.ticket-filters{align-items:stretch}}

/* Ticket workflow uses the same compact table spacing as other configuration lists. */
.ticket-workflow th,.ticket-workflow td{padding:4px 8px;vertical-align:middle}
.ticket-workflow input[role=switch]{width:32px!important;height:18px!important;min-height:18px;display:inline-block;margin:0;vertical-align:middle}
.ticket-workflow th:not(:nth-child(2)),.ticket-workflow td{text-align:center}
.ticket-workflow th:nth-child(2){text-align:left}
