.data-table-scroll{overflow-x:auto}.data-table-toolbar{justify-content:flex-end;align-items:flex-start;gap:.5rem;margin-bottom:.5rem;display:flex}.data-table-toolbar-start{flex:1;min-width:0}.data-table-customizer{position:relative}.data-table-customizer-button{border:1px solid var(--data-table-border,var(--border,light-dark(#d0d0d0,#3a3e45)));background:var(--data-table-customizer-bg,var(--surface,light-dark(#fff,#1d2024)));color:inherit;font:inherit;cursor:pointer;white-space:nowrap;border-radius:.375rem;align-items:center;gap:.375rem;padding:.375rem .625rem;display:inline-flex}.data-table-customizer-button:hover{background:var(--data-table-customizer-hover-bg,var(--surface-hover,light-dark(#f5f5f5,#292d33)))}.data-table-customizer-panel{z-index:20;border:1px solid var(--data-table-border,var(--border,light-dark(#d0d0d0,#30343a)));background:var(--data-table-panel-bg,var(--surface,light-dark(#fff,#1d2024)));border-radius:.5rem;min-width:12rem;padding:.75rem;position:absolute;top:calc(100% + .375rem);right:0;box-shadow:0 8px 24px #0000001f}.data-table-customizer-title{margin:0 0 .5rem;font-weight:600}.data-table-customizer-list{gap:.375rem;margin:0;padding:0;list-style:none;display:grid}.data-table-customizer-option{cursor:pointer;align-items:center;gap:.5rem;display:flex}.data-table-customizer-option:has(input:disabled){opacity:.6;cursor:not-allowed}.data-table-customizer-actions{gap:.5rem;margin-top:.75rem;display:flex}.data-table{border-collapse:collapse;width:100%;max-width:100%}.data-table-checkbox{width:2rem}.data-table-sort{color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0}.data-table-sort:hover{color:inherit;background:0 0;text-decoration:underline}.data-table-sort-indicator{text-align:center;width:1em;margin-left:.25em;display:inline-block}.data-table-status{color:var(--text-secondary,#616161)}.data-table-visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.combobox{min-width:0;position:relative}.combobox-input{box-sizing:border-box;border:1px solid var(--combobox-border,var(--border,light-dark(#d0d0d0,#3a3e45)));background:var(--combobox-bg,var(--surface,light-dark(#fff,#1d2024)));width:100%;color:inherit;font:inherit;text-overflow:ellipsis;cursor:pointer;border-radius:.375rem;padding:.375rem 1.8rem .375rem .5rem}.combobox-open .combobox-input{cursor:text}.combobox-input:disabled{cursor:not-allowed;opacity:.6}.combobox-with-detail .combobox-input{color:#0000}.combobox-with-icon .combobox-input{padding-left:1.7rem}.combobox-icon{color:var(--combobox-muted,var(--text-secondary,light-dark(#616161,#9b9da5)));pointer-events:none;display:inline-flex;position:absolute;top:50%;left:.55rem;transform:translateY(-50%)}.combobox-option-icon{vertical-align:-.15em;color:var(--combobox-muted,var(--text-secondary,light-dark(#616161,#9b9da5)));margin-right:.4rem;display:inline-flex}.combobox-chevron{color:var(--combobox-muted,var(--text-secondary,light-dark(#616161,#9b9da5)));pointer-events:none;position:absolute;top:50%;right:.5rem;transform:translateY(-50%)}.combobox-list{z-index:20;border:1px solid var(--combobox-border,var(--border,light-dark(#d0d0d0,#3a3e45)));background:var(--combobox-panel-bg,var(--surface,light-dark(#fff,#1d2024)));border-radius:.375rem;max-height:16rem;margin:0;padding:.2rem;position:absolute;top:calc(100% + .2rem);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #0000001f}.combobox-option,.combobox-empty{border-radius:.25rem;padding:.3rem .5rem}.combobox-option{cursor:pointer}.combobox-option-label,.combobox-detail{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.combobox-detail{color:var(--combobox-muted,var(--text-secondary,light-dark(#616161,#9b9da5)));font-size:.875em;font-weight:400}.combobox-value{pointer-events:none;align-items:baseline;gap:.6rem;min-width:0;display:flex;position:absolute;top:50%;left:calc(.5rem + 1px);right:1.8rem;transform:translateY(-50%)}.combobox-with-icon .combobox-value{left:calc(1.7rem + 1px)}.combobox-value>.combobox-option-label{flex:0 auto;min-width:3rem}.combobox-value>.combobox-detail{flex:0 auto;min-width:0}.combobox-option-active{background:var(--combobox-hover-bg,var(--surface-hover,light-dark(#f5f5f5,#292d33)))}.combobox-option[aria-selected=true]{font-weight:600}.combobox-option-add{border-top:1px solid var(--combobox-border,var(--border,light-dark(#d0d0d0,#3a3e45)));background:var(--combobox-panel-bg,var(--surface,light-dark(#fff,#1d2024)));color:var(--combobox-accent,var(--primary,light-dark(#1a66d6,#6ea8fe)));border-radius:0 0 .25rem .25rem;align-items:center;gap:.4rem;margin-top:.2rem;font-weight:600;display:flex;position:sticky;bottom:-.2rem}.combobox-option-add.combobox-option-active{background:var(--combobox-hover-bg,var(--surface-hover,light-dark(#f5f5f5,#292d33)))}.combobox-option-empty,.combobox-empty{color:var(--combobox-muted,var(--text-secondary,light-dark(#616161,#9b9da5)))}.combobox-list-detail{grid-template-columns:minmax(0,max-content) minmax(0,1fr);align-content:start;column-gap:1rem;display:grid}.combobox-list-detail>.combobox-option,.combobox-list-detail>.combobox-empty{grid-column:1/-1;grid-template-columns:subgrid;align-items:baseline;display:grid}.combobox-list-detail>.combobox-option-add{align-items:center;display:flex}.filter-table-tabs{border-bottom:1px solid var(--filter-table-border,var(--border,light-dark(#d0d0d0,#3a3e45)));gap:.25rem;margin-bottom:.75rem;display:flex}.filter-table-tab{color:var(--filter-table-muted,var(--text-secondary,light-dark(#616161,#9b9da5)));font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.375rem .375rem 0 0;align-items:center;gap:.4rem;margin-bottom:-1px;padding:.5rem .875rem;display:inline-flex}.filter-table-tab:hover{color:inherit;background:0 0}.filter-table-tab[aria-selected=true]{border-color:var(--filter-table-border,var(--border,light-dark(#d0d0d0,#3a3e45))) var(--filter-table-border,var(--border,light-dark(#d0d0d0,#3a3e45))) transparent;background:var(--filter-table-bg,var(--surface,light-dark(#fff,#1d2024)));color:inherit;font-weight:600}.filter-table-badge{background:var(--filter-table-accent,var(--primary,light-dark(#1a66d6,#6ea8fe)));color:light-dark(#fff,#10141a);text-align:center;border-radius:999px;min-width:1.25rem;padding:.05rem .4rem;font-size:.75em;font-weight:600}.filter-table-toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.filter-table-input{box-sizing:border-box;border:1px solid var(--filter-table-border,var(--border,light-dark(#d0d0d0,#3a3e45)));background:var(--filter-table-bg,var(--surface,light-dark(#fff,#1d2024)));width:100%;color:inherit;font:inherit;border-radius:.375rem;padding:.375rem .5rem}.filter-table-search{flex:0 16rem;min-width:10rem;position:relative}.filter-table-search .filter-table-input{padding-left:1.9rem}.filter-table-search-icon{color:var(--filter-table-muted,var(--text-secondary,light-dark(#616161,#9b9da5)));pointer-events:none;position:absolute;top:50%;left:.55rem;transform:translateY(-50%)}.filter-table-pills,.filter-table-chips{flex-wrap:wrap;gap:.375rem;margin:0;padding:0;list-style:none;display:flex}.filter-table-pill,.filter-table-chip{background:var(--filter-table-pill-bg,light-dark(#1a66d61f,#6ea8fe29));color:var(--filter-table-accent,var(--primary,light-dark(#1a66d6,#6ea8fe)));font:inherit;border:1px solid #0000;border-radius:999px;align-items:center;gap:.3rem;padding:.2rem .55rem;font-size:.8125rem;line-height:1.4;display:inline-flex}.filter-table-pill{cursor:pointer}.filter-table-pill:hover{background:var(--filter-table-pill-bg,light-dark(#1a66d61f,#6ea8fe29));border-color:currentColor}.filter-table-pill-clear{color:var(--filter-table-muted,var(--text-secondary,light-dark(#616161,#9b9da5)));background:0 0}.filter-table-pill-clear:hover{background:0 0}.filter-table-chip-remove{color:inherit;cursor:pointer;background:0 0;border:none;padding:0;display:inline-flex}.filter-table-chip-remove:hover{background:0 0}.filter-table-multi{gap:.375rem;min-width:0;display:grid}.filter-table-form{--filter-table-label-width:9rem;--filter-table-label-gap:1rem;gap:1.25rem;max-width:40rem;display:grid}.filter-table-fieldset{border:none;gap:.5rem;min-width:0;margin:0;padding:0;display:grid}.filter-table-fieldset+.filter-table-fieldset{border-top:1px solid var(--filter-table-border,var(--border,light-dark(#d0d0d0,#3a3e45)));padding-top:1.25rem}.filter-table-legend{float:left;width:100%;padding:0 0 0 calc(var(--filter-table-label-width) + var(--filter-table-label-gap));box-sizing:border-box;color:var(--filter-table-muted,var(--text-secondary,light-dark(#616161,#9b9da5)));letter-spacing:.04em;text-transform:uppercase;margin-bottom:.25rem;font-size:.75rem;font-weight:600}.filter-table-field{grid-template-columns:var(--filter-table-label-width) minmax(0, 1fr);align-items:start;gap:var(--filter-table-label-gap);display:grid}.filter-table-label{padding-top:calc(.375rem + 1px)}.filter-table-form-actions{border-top:1px solid var(--filter-table-border,var(--border,light-dark(#d0d0d0,#3a3e45)));justify-content:flex-end;gap:.5rem;padding-top:1.25rem;display:flex}.filter-table-button{align-items:center;gap:.375rem;display:inline-flex}.filter-table-button-primary{border-color:var(--filter-table-accent,var(--primary,light-dark(#1a66d6,#6ea8fe)));background:var(--filter-table-accent,var(--primary,light-dark(#1a66d6,#6ea8fe)));color:light-dark(#fff,#10141a);font-weight:600}.filter-table-button-primary:hover{filter:brightness(1.1);background:var(--filter-table-accent,var(--primary,light-dark(#1a66d6,#6ea8fe)))}@media (width<=640px){.filter-table-field{grid-template-columns:1fr;gap:.25rem}.filter-table-label{padding-top:0}.filter-table-legend{padding-left:0}}*,:before,:after{box-sizing:border-box}:root{color-scheme:dark;--bg-base:#1c1c1c;--bg-default:#222225;--bg-surface:#242424;--bg-raised:#2e2e2e;--bg-input:#2d2d31;--bg-code:#333;--bg-hover:#3d3d3d;--text:#f5f5f5;--text-secondary:#b8b8b8;--text-muted:#969696;--text-subtle:#a0a0a0;--border:#3d3d3d;--border-strong:#525252;--primary:#08bf08;--primary-hover:#00b800;--primary-contrast:#fff;--link:#74caff;--error:#ffa48d;--error-bg:#e1474729;--success:#5be584;--muted-dot:#666;--shadow:0 8px 24px #0000003d;--font-size-sm:.75rem;--font-size-base:.9375rem;--font-size-lg:1rem;--font-size-xl:1.15rem;--font-size-2xl:1.3rem;--topbar-height:3.5rem}html{background-color:var(--bg-base)}html,body,#root{min-height:100%}body{background-color:var(--bg-base);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:var(--font-size-base);margin:0;padding:0;line-height:1.45;transition:background-color .15s,color .15s}h1,h2,h3{color:var(--text);text-wrap:balance;line-height:1.25}h2{font-size:var(--font-size-2xl);margin:0 0 .5rem}h3{font-size:var(--font-size-lg);margin:1rem 0 .4rem}p{margin:0 0 .5rem}ul{padding-left:1.1rem}li{margin-bottom:.2rem}h1,h2,h3{color:var(--text)}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}code{background-color:var(--bg-code);color:var(--text);border:1px solid var(--border);font-size:var(--font-size-base);border-radius:.25rem;padding:.05rem .3rem}form{flex-direction:column;gap:.4rem;max-width:20rem;display:flex}input,select,textarea{font-family:inherit;font-size:var(--font-size-base);background-color:var(--bg-input);color:var(--text);border:1px solid var(--border-strong);border-radius:.3rem;padding:.36rem .5rem}textarea{resize:vertical;min-height:4.5rem;line-height:1.45}input::placeholder,textarea::placeholder{color:var(--text-muted)}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--primary);outline-offset:1px}button{font-size:var(--font-size-base);cursor:pointer;background-color:var(--bg-raised);color:var(--text);border:1px solid var(--border-strong);border-radius:.3rem;padding:.36rem .6rem;transition:background-color .15s,border-color .15s}button:hover{background-color:var(--bg-hover)}button[type=submit]{background-color:var(--primary);border-color:var(--primary);color:var(--primary-contrast)}button[type=submit]:hover{background-color:var(--primary-hover);border-color:var(--primary-hover)}table{border-collapse:collapse;width:100%;max-width:100%;font-size:var(--font-size-base);background-color:var(--bg-surface);border:1px solid var(--border);border-radius:.35rem;margin:.5rem 0;overflow:hidden}th,td{text-align:left;border-bottom:1px solid var(--border);padding:.35rem .5rem}thead th{background-color:var(--bg-raised);color:var(--text-secondary);font-weight:600;font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}tbody tr:hover{background-color:var(--bg-hover)}tbody tr:last-child td{border-bottom:none}.tree-name{padding-left:calc(var(--tree-depth,0) * 1.25rem);align-items:center;min-height:1.25rem;display:flex;position:relative}.tree-child:before{content:"";left:calc(var(--tree-depth,0) * 1.25rem - .55rem);border-left:1px solid var(--border-strong);position:absolute;top:0;bottom:0}.tree-child:after{content:"";left:calc(var(--tree-depth,0) * 1.25rem - .55rem);border-top:1px solid var(--border-strong);width:.4rem;position:absolute;top:50%}.app-shell{flex-direction:column;align-items:stretch;width:100%;min-height:100vh;display:flex}.app-topbar{z-index:5;background-color:var(--bg-surface);border-bottom:1px solid var(--border);height:var(--topbar-height);align-items:center;gap:.75rem;padding:.35rem .75rem;display:flex;position:sticky;top:0}.app-topbar-brand{font-size:var(--font-size-lg);color:var(--text);flex-shrink:0;font-weight:700;text-decoration:none}.app-topbar-brand:hover{color:var(--text)}.app-topbar-ticket{background-color:var(--primary);border-color:var(--primary);color:var(--primary-contrast);flex-shrink:0;padding:.25rem .6rem;font-weight:600}.app-topbar-ticket:hover{background-color:var(--primary-hover);border-color:var(--primary-hover)}.app-topbar-actions{flex-shrink:0;align-items:center;gap:.4rem;margin-left:auto;display:flex}.app-language-switcher{align-items:center;display:inline-flex}.app-language-select{max-width:8rem;padding:.25rem .4rem}.app-tenant-context{align-items:center;min-width:0;display:inline-flex;position:relative}.app-tenant-context-list{border:1px solid var(--border-strong);color:var(--text-muted);border-radius:.3rem;justify-content:center;align-items:center;margin-left:.35rem;padding:.3rem;display:inline-flex}.app-tenant-context-list:hover{background-color:var(--bg-hover);color:var(--text)}.app-tenant-context-fixed{color:var(--text);font-weight:600}.app-tenant-context-button{background-color:var(--bg-input);border:1px solid var(--border-strong);align-items:center;gap:.4rem;max-width:18rem;padding:.3rem .5rem;display:inline-flex}.app-tenant-context-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-tenant-context-chevron{color:var(--text-muted);display:inline-flex}.app-tenant-context-popover{z-index:10;background-color:var(--bg-raised);border:1px solid var(--border);width:18rem;box-shadow:var(--shadow);border-radius:.35rem;flex-direction:column;gap:.25rem;padding:.35rem;display:flex;position:absolute;top:calc(100% + .3rem);left:0}.app-tenant-context-search{width:100%}.app-tenant-context-options{max-height:20rem;overflow-y:auto}.app-tenant-context-option{text-align:left;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;border-radius:.25rem;width:100%;padding:.3rem .5rem;display:block;overflow:hidden}.app-tenant-context-option.group{font-weight:600}.app-tenant-context-option.nested{padding-left:1.4rem}.app-tenant-context-option.active{background-color:var(--bg-hover)}.app-tenant-context-option.selected{color:var(--primary)}.app-tenant-context-empty{color:var(--text-muted);margin:0;padding:.3rem .5rem}.app-tenant-context-add{border:none;border-top:1px solid var(--border);text-align:left;background:0 0;border-radius:0;align-items:center;gap:.4rem;width:100%;display:inline-flex}.app-tenant-context-add:hover{background-color:var(--bg-hover)}.app-tenant-context-add.primary{color:var(--primary);font-weight:600}.app-user-menu{position:relative}.app-user-button{max-width:12rem;font-size:var(--font-size-base);background:0 0;border:none;align-items:center;gap:.35rem;display:inline-flex}.app-user-button:hover{background-color:var(--bg-hover)}.app-user-info{flex-direction:column;align-items:flex-start;min-width:0;line-height:1.2;display:flex}.app-user-role{color:var(--text-muted);font-size:.75rem}.app-user-username{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.app-user-dropdown{background-color:var(--bg-raised);border:1px solid var(--border);min-width:10rem;box-shadow:var(--shadow);z-index:10;border-radius:.35rem;padding:.25rem;position:absolute;bottom:calc(100% + .3rem);left:0}.app-user-language{border-bottom:1px solid var(--border);margin-bottom:.25rem;padding:.25rem}.app-user-language .app-language-switcher,.app-user-language .app-language-select{width:100%;max-width:none}.app-user-logout{text-align:left;background:0 0;border:none;align-items:center;gap:.45rem;width:100%;display:inline-flex}.app-user-logout:hover{background-color:var(--bg-hover)}.app-sidebar-user{border-top:1px solid var(--border);align-items:center;gap:.25rem;margin-top:auto;padding-top:.5rem;display:flex}.app-sidebar-user .app-user-menu{flex:1;min-width:0}.app-sidebar-toggle{color:var(--text-secondary);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:.35rem;display:inline-flex}.app-sidebar-toggle:hover{background-color:var(--bg-hover);color:var(--text)}.app-sidebar-user .app-user-button{width:100%;max-width:none}.app-body{flex:1;align-items:stretch;width:100%;min-height:0;display:flex}.app-main{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.app-sidebar{width:13rem;top:var(--topbar-height);height:calc(100vh - var(--topbar-height));background-color:var(--bg-surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:.5rem;padding:.6rem .5rem;display:flex;position:sticky}.app-nav{flex-direction:column;flex:1;gap:.3rem;min-height:0;display:flex;overflow-y:auto}.app-nav-group{flex-direction:column;gap:.15rem;display:flex}.app-nav-label{font-size:var(--font-size-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap;padding:.3rem .5rem;font-weight:700}.app-nav-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.app-nav a,.app-nav-item>a{font-size:var(--font-size-base);color:var(--text);border:1px solid #0000;border-radius:.3rem;align-items:center;gap:.45rem;padding:.35rem .5rem;text-decoration:none;display:flex}.app-nav-icon{vertical-align:-.15em;flex-shrink:0;display:inline-flex}.device-role-name .app-nav-icon{margin-right:.25rem}.app-nav a:hover,.app-nav-item:hover{background-color:var(--bg-hover)}.app-nav a.active,.app-nav-item.active{background-color:var(--bg-raised);border-color:var(--border);font-weight:600}.app-nav-item{border:1px solid #0000;border-radius:.3rem;align-items:center;display:flex;position:relative}.app-nav-item>a{background:0 0;border:none;flex:1;min-width:0;padding:.25rem .5rem}.app-nav-item:hover{background-color:var(--bg-hover)}.app-nav-item.active{background-color:var(--bg-raised);border-color:var(--border)}.app-nav-add{color:var(--text-secondary);opacity:0;background:0 0;border:1px solid #0000;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;margin-right:.25rem;padding:.15rem;transition:opacity .12s;display:inline-flex}.app-nav-add-icon{display:inline-flex}.app-nav-item:hover .app-nav-add,.app-nav-item.active .app-nav-add,.app-nav-item:focus-within .app-nav-add,.app-nav-add:focus-visible{opacity:1}.app-nav-add:hover:not(:disabled){background-color:var(--bg-hover);border-color:var(--border);color:var(--text)}.app-nav-add:disabled{cursor:default}.app-sidebar.collapsed{width:calc(2rem + 24px)}.app-sidebar.collapsed .app-nav-text,.app-sidebar.collapsed .app-user-info{display:none}.app-sidebar.collapsed .app-nav-label{border-top:1px solid var(--border);height:0;margin:.25rem;padding:0;overflow:hidden}.app-sidebar.collapsed .app-sidebar-user{flex-direction:column}.app-sidebar.collapsed .app-user-button{justify-content:center}.app-content{flex:1;width:100%;min-width:0;padding:.9rem 1rem 2rem}.app-footer{border-top:1px solid var(--border);color:var(--text-muted);text-align:right;padding:.4rem 1rem;font-size:.75rem}.app-content>div:not(.app-auth){max-width:none}.app-content h2:first-of-type{border-bottom:1px solid var(--border);padding-bottom:.4rem}.page-subtitle{color:var(--text-secondary);font-size:var(--font-size-base);margin-top:-.25rem}.card{background-color:var(--bg-surface);border:1px solid var(--border);border-radius:.35rem;margin:.6rem 0;padding:.7rem .8rem}.toolbar{flex-wrap:wrap;align-items:end;gap:.4rem;margin-bottom:.4rem;display:flex}.empty{color:var(--text-secondary);background-color:var(--bg-surface);border:1px dashed var(--border-strong);font-size:var(--font-size-base);border-radius:.35rem;margin:.5rem 0;padding:.6rem .75rem}.skeleton{color:var(--text-secondary)}.badge{border:1px solid var(--border-strong);font-size:var(--font-size-sm);white-space:nowrap;background-color:var(--bg-raised);color:var(--text-secondary);border-radius:999px;padding:.05rem .4rem;font-weight:600;line-height:1.4;display:inline-block}.badge-active,.badge-connected{color:var(--success);border-color:var(--success)}.badge-planned,.badge-staged{color:var(--link);border-color:var(--link)}.badge-decommissioned{color:var(--error);border-color:var(--error)}.text-danger{color:var(--error)}.text-success{color:var(--success)}.text-muted{color:var(--text-muted)}.finding-detail{overflow-wrap:anywhere;grid-template-columns:8rem 12rem minmax(8rem,1fr);gap:.5rem;display:grid}.btn-danger:hover{background-color:var(--error-bg);border-color:var(--error);color:var(--error)}.btn-add{background-color:var(--primary);border-color:var(--primary);color:var(--primary-contrast);font-weight:600}.btn-add:hover{background-color:var(--primary-hover);border-color:var(--primary-hover)}.app-content div:has(>table){overflow-x:auto}.app-content thead th{z-index:1;position:sticky;top:0}.app-content tbody tr:nth-child(2n){background-color:color-mix(in srgb, var(--bg-hover) 45%, transparent)}.app-content tbody tr:hover{background-color:var(--bg-hover)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{background-color:var(--primary);color:var(--primary-contrast);z-index:10;border-radius:0 0 .5rem;padding:.5rem .75rem;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}.app-content--centered{place-items:center;display:grid}.app-auth{background-color:var(--bg-surface);border:1px solid var(--border);width:100%;max-width:24rem;box-shadow:var(--shadow);border-radius:.5rem;padding:1.25rem}.app-auth form{max-width:none}.app-content form{flex-flow:wrap;align-items:end;max-width:none}.app-content form input,.app-content form select,.app-content form textarea{flex:9rem;min-width:0}.app-content form button{flex-shrink:0}.app-content .app-auth form{flex-flow:column;align-items:stretch}.app-content .app-auth form input,.app-content .app-auth form select,.app-content .app-auth form textarea,.app-content .app-auth form button{flex:none}@media (width<=48rem){.app-topbar{height:auto;min-height:var(--topbar-height);flex-wrap:wrap}.app-body{flex-direction:column}.app-sidebar,.app-sidebar.collapsed{border-right:none;border-bottom:1px solid var(--border);width:100%;height:auto;position:static}.app-sidebar-toggle{display:none}.app-nav{flex-flow:wrap}.app-content{padding:.75rem .75rem 1.5rem}}.app-inline-error{color:var(--error);background-color:var(--error-bg);border:1px solid var(--error);font-size:var(--font-size-base);border-radius:.3rem;margin-top:.4rem;padding:.35rem .5rem}.app-header{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.status-dot-connected{color:var(--success)}.status-dot-free{color:var(--muted-dot)}.page-header{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.5rem;padding-bottom:.4rem;display:flex}.page-header h2{border-bottom:none;margin:0;padding:0}.list-tabs{align-self:stretch;align-items:flex-end;gap:1rem;min-width:0;display:flex}.list-tabs a{font-size:var(--font-size-lg);color:var(--text-muted);white-space:nowrap;border-bottom:2px solid #0000;margin-bottom:calc(-.4rem - 1px);padding-bottom:.4rem;font-weight:600;line-height:1.25;text-decoration:none}.list-tabs a:hover{color:var(--text);text-decoration:none}.list-tabs a[aria-current=page]{color:var(--text);border-bottom-color:var(--primary)}.app-nav-item.active>a{font-weight:600}.page-header-actions{align-items:center;gap:.5rem;display:flex}.page-header>.btn-add,.page-header-actions{margin-left:auto}.app-content .page-header h2:first-of-type{border-bottom:none;padding-bottom:0}.app-content .form-page{max-width:66rem;margin-inline:auto}.app-content .device-type-import-page{max-width:52rem}.app-content .device-type-import-page .import-data{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.app-content form.form-stacked{flex-flow:column;align-items:stretch;gap:.6rem;max-width:none}.form-section{flex-direction:column;gap:.6rem;display:flex}.form-section+.form-section{margin-top:.8rem}.form-section-title{font-size:var(--font-size-lg);color:var(--text);margin:0 0 .6rem 10.75rem;padding:0;font-weight:600}.app-content .import-prompt-controls .field input,.app-content .form-stacked .field input,.app-content .form-stacked .field select,.app-content .form-stacked .field textarea{flex:none;width:100%}.form-actions{gap:.4rem;margin-left:10.75rem;padding-top:.2rem;display:flex}.field{grid-template-columns:10rem minmax(0,1fr);align-items:start;gap:.25rem .75rem;display:grid}.field label{font-size:var(--font-size-base);color:#d6d6d6;font-weight:500}.field .required{color:var(--error)}.field-hint{font-size:var(--font-size-sm);color:var(--text-muted);margin:0}.field-hint-error{color:var(--error)}.field-group-label{font-size:var(--font-size-base);color:#d6d6d6;font-weight:500}.field>label,.field>.field-group-label{text-align:right;padding-top:.35rem}.field-fieldset{border:0;min-width:0;margin:0;padding:0}.field-control{flex-direction:column;grid-column:2;gap:.25rem;min-width:0;display:flex}.service-window{align-items:center;gap:.5rem;display:flex}.app-content .form-stacked .field .service-window input[type=time]{width:8rem}.app-content .form-stacked .field .service-window input[type=checkbox]{width:auto}.form-wide{flex-direction:column;gap:.25rem;margin-left:10.75rem;display:flex}.service-targets{margin:0}.duration-input{gap:.25rem;display:flex}.duration-input input{width:6rem}.service-hours-list{grid-template-columns:max-content auto;column-gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.service-hours-list>li{grid-column:1/-1;grid-template-columns:subgrid;display:grid}.contact-list{grid-template-columns:max-content auto;column-gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.contact-list-scoped{grid-template-columns:max-content max-content auto}.contact-list>li{grid-column:1/-1;grid-template-columns:subgrid;display:grid}.contact-rows{flex-direction:column;gap:.4rem;display:flex}.contact-row{align-items:center;gap:.25rem;display:flex}.contact-rows-sortable>.field-hint{padding-left:1.5rem}.contact-row-dragging{opacity:.4}.contact-inputs{flex:auto;min-width:0;display:flex}.app-content .form-stacked .field .contact-inputs input{flex:auto;width:auto;min-width:0}.app-content .form-stacked .field .contact-inputs>*{border-radius:0}.app-content .form-stacked .field .contact-inputs>:first-child{border-radius:.3rem 0 0 .3rem}.app-content .form-stacked .field .contact-inputs>:last-child{border-radius:0 .3rem .3rem 0}.app-content .form-stacked .field .contact-inputs>:not(:first-child){margin-left:-1px}.contact-inputs>:focus-visible{z-index:1;position:relative}.contact-handle,.contact-remove{color:var(--text-muted);background:0 0;border:0;justify-content:center;align-self:stretch;align-items:center;padding:0;display:inline-flex}.contact-handle{cursor:grab;width:1.25rem}.contact-handle:hover{color:var(--text);background:0 0}.contact-handle:active{cursor:grabbing}.contact-remove{border:1px solid #0000;width:2.25rem}.contact-remove:hover{background-color:var(--bg-raised);border-color:var(--border-strong);color:var(--error)}.contact-add{background-color:var(--primary);border-color:var(--primary);width:2.25rem;height:2.25rem;color:var(--primary-contrast);justify-content:center;align-self:flex-end;align-items:center;padding:0;display:inline-flex}.contact-add:hover{background-color:var(--primary-hover);border-color:var(--primary-hover)}.address-place-row{gap:.4rem;display:flex}.app-content .form-stacked .field .address-place-row input{flex:auto;width:auto;min-width:0}.app-content .form-stacked .field .address-place-row .address-postcode{flex:0 0 7rem;width:7rem}.app-content .form-stacked .field .contact-inputs select{flex:0 0 7.5rem;width:7.5rem}.field-checkbox-label{align-items:center;gap:.4rem;display:flex}.rack-type-fixed-width{padding:.36rem .5rem}.combobox{--combobox-border:var(--border-strong);--combobox-bg:var(--bg-input);--combobox-panel-bg:var(--bg-raised);--combobox-hover-bg:var(--bg-hover);--combobox-muted:var(--text-muted);--combobox-accent:var(--primary)}.app-content .form-stacked .field .combobox{width:100%}.app-content .form-stacked .field .combobox-input{font-size:var(--font-size-base);border-radius:.3rem;padding:.36rem 1.8rem .36rem .5rem}.app-content .form-stacked .field .combobox-with-icon .combobox-input{padding-left:1.7rem}.app-content .form-stacked .field input:disabled,.app-content .form-stacked .field textarea:disabled{cursor:not-allowed;opacity:.6}.combobox-list{box-shadow:var(--shadow);border-radius:.3rem}.combobox-option,.combobox-empty,.combobox-value{font-size:var(--font-size-base)}.combobox-detail{font-size:var(--font-size-sm)}.combobox-option-add{border-top-color:var(--border)}.vm-host-row{gap:.4rem;display:flex}.app-content .form-stacked .field .vm-host-row input{flex:auto;width:auto;min-width:0}.vm-host-row button{white-space:nowrap;flex:none}.rack-mount-row{gap:.4rem;display:flex}.app-content .form-stacked .field .rack-mount-row .combobox{flex:auto;width:auto;min-width:0}.app-content .form-stacked .field .rack-mount-row .rack-mount-face{flex:0 0 9rem;width:9rem}.app-content .form-stacked .field .rack-mount-row .rack-mount-position{flex:0 0 7rem;width:7rem}.app-content .form-stacked .field .field-checkbox-label input{flex:none;width:auto}@media (width<=36rem){.field{grid-template-columns:1fr}.field>label,.field>.field-group-label{text-align:left;padding-top:0}.field-control,.app-content .form-stacked .field>input,.app-content .form-stacked .field>select,.app-content .form-stacked .field>textarea,.field>.field-hint{grid-column:auto}.form-actions,.form-section-title{margin-left:0}}.import-rename{align-items:center;gap:.35rem;display:inline-flex}.app-content .import-prompt-form{border-bottom:1px solid var(--border);gap:.5rem;margin-bottom:1rem;padding-bottom:1rem;display:grid}.import-prompt-form h3,.import-prompt-form p{margin:0}.import-prompt-controls{grid-template-columns:repeat(2,minmax(0,1fr)) auto;align-items:end;gap:.75rem;display:grid}.import-prompt-controls .field{grid-template-columns:minmax(0,1fr)}:where(.import-prompt-controls) .field>label{text-align:left;padding-top:0}.import-prompt-controls .field-control{grid-column:auto}.import-copy-prompt{overflow-wrap:anywhere;max-width:100%}@media (width<=600px){.import-prompt-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.import-copy-prompt{grid-column:1/-1}}.import-field-options{border:1px solid var(--border);background:var(--bg-surface);border-radius:.25rem;margin-top:.35rem;padding:.7rem .8rem}.import-field-options h3{font-size:var(--font-size-lg);margin:0 0 .25rem}.app-content .import-field-options-table{border-collapse:collapse;width:100%;font-size:var(--font-size-sm);margin-top:.65rem}.app-content .import-field-options-table th,.app-content .import-field-options-table td{border-bottom:1px solid var(--border);text-align:left;padding:.35rem .45rem}.app-content .import-field-options-table th{font-size:var(--font-size-sm);color:var(--text-muted);font-weight:600}.app-content .import-field-options-table td:nth-child(2){white-space:nowrap;color:var(--text-muted)}@media (width<=36rem){.import-field-options{overflow-x:auto}.import-field-options-table{min-width:30rem}}.toolbar-row{flex-wrap:wrap;align-items:center;gap:.5rem;margin:.5rem 0;display:flex}.toolbar-search{flex:14rem;display:flex}.toolbar-search-input{flex:auto;width:100%;min-width:0}.toolbar-count{font-size:var(--font-size-base);color:var(--text-secondary);white-space:nowrap}.toolbar-spacer{flex:auto}.sort-th{color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0}.sort-th:hover{color:var(--text);background:0 0}.data-table-sort:after{content:" ▲×";visibility:hidden}th[aria-sort=ascending] .data-table-sort:after,th[aria-sort=descending] .data-table-sort:after{content:none}.data-table-sort-clear{margin-left:0}.cell-checkbox{width:2rem}.cell-truncate{text-overflow:ellipsis;white-space:nowrap;max-width:16rem;overflow:hidden}.link-btn{color:var(--link);font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;padding:0}.link-btn:hover{background:0 0}.row-actions{align-items:center;gap:.25rem;display:inline-flex}.icon-btn{justify-content:center;align-items:center;padding:.3rem;display:inline-flex}.icon-btn-connect{color:var(--success);padding:.45rem}.icon-btn-connect:disabled{color:var(--text-secondary);opacity:.45;cursor:not-allowed}.icon-btn-danger{color:var(--error);padding:.45rem}.row-menu-wrap{display:inline-flex;position:relative}.row-menu{z-index:30;background-color:var(--bg-raised);border:1px solid var(--border);min-width:9rem;box-shadow:var(--shadow);border-radius:.35rem;padding:.25rem;position:fixed}.row-menu-item{text-align:left;background:0 0;border:none;align-items:center;gap:.45rem;width:100%;display:inline-flex}.row-menu-item:hover{background-color:var(--bg-hover)}.row-menu-danger{color:var(--error)}.row-menu-danger:hover{background-color:var(--error-bg)}.add-component-menu{display:inline-flex;position:relative}.add-component-dropdown{background-color:var(--bg-raised);border:1px solid var(--border);min-width:11rem;box-shadow:var(--shadow);z-index:10;border-radius:.35rem;flex-direction:column;padding:.25rem;display:flex;position:absolute;top:calc(100% + .3rem);right:0}.add-component-item{text-align:left;white-space:nowrap;background:0 0;border:none;width:100%}.add-component-item:hover{background-color:var(--bg-hover)}.paginator-showing{font-size:var(--font-size-base);color:var(--text-secondary);white-space:nowrap;margin:.5rem 0}.app-content .modal-wrap{z-index:20;justify-content:center;align-items:flex-start;padding:4rem 1rem 1rem;display:flex;position:fixed;inset:0}.app-content .modal-backdrop{cursor:default;background-color:#00000073;border:none;border-radius:0;width:100%;height:100%;padding:0;position:absolute;inset:0}.app-content .modal-backdrop:hover{background-color:#00000073}.app-content .modal{background-color:var(--bg-surface);border:1px solid var(--border);width:100%;max-width:28rem;box-shadow:var(--shadow);border-radius:.5rem;padding:1rem 1.1rem 1.1rem;position:relative}.modal h3{margin-top:0}.object-selector{max-width:34rem}.modal-header{justify-content:space-between;align-items:center;display:flex}.modal-header h3{margin-bottom:.75rem}.object-selector-search{width:100%}.object-selector-results{max-height:22rem;margin-top:.75rem;overflow-y:auto}.object-selector-results ul{grid-template-columns:minmax(0,max-content) minmax(0,1fr) auto;column-gap:1rem;margin:0;padding:0;list-style:none;display:grid}.object-selector-results li{grid-column:1/-1;grid-template-columns:subgrid;display:grid}.object-selector-option{grid-column:1/-1;grid-template-columns:subgrid;text-align:left;border-radius:.25rem;align-items:baseline;row-gap:.1rem;display:grid}.object-selector-option small{color:var(--text-muted)}.object-selector-label,.object-selector-detail,.object-selector-note{overflow-wrap:anywhere}.object-selector-note{grid-column:1/-1}.app-content .modal.connect-dialog{max-width:40rem}.connect-steps{border-bottom:1px solid var(--border);font-size:var(--font-size-base);color:var(--text-muted);gap:1.25rem;margin:0 0 .75rem;padding:0 0 .75rem;list-style:none;display:flex}.connect-steps li{align-items:center;gap:.4rem;display:flex}.connect-steps li.active{color:var(--text);font-weight:600}.connect-step-num{border:1px solid var(--border-strong);width:1.35rem;height:1.35rem;font-size:var(--font-size-sm);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.connect-steps li.active .connect-step-num{background-color:var(--primary);border-color:var(--primary);color:var(--primary-contrast)}.connect-steps li.done .connect-step-num{border-color:var(--primary);color:var(--primary)}.app-content .connect-dialog form.connect-port-form{flex-flow:column;align-items:stretch;gap:.75rem}.app-content .connect-port-form .object-selector-search{flex:none}.connect-peer{background-color:var(--bg-raised);border:1px solid var(--border);border-radius:.35rem;justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem .75rem;display:flex}.connect-peer-info{flex-direction:column;min-width:0;display:flex}.connect-peer-info strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.connect-peer-info small{color:var(--text-muted)}.port-grid{grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));gap:.4rem;max-height:18rem;padding:.1rem;display:grid;overflow-y:auto}.app-content .port-grid .port-tile{text-align:left;background-color:var(--bg-input);border-color:var(--border);flex-direction:column;align-items:flex-start;gap:.1rem;min-width:0;padding:.4rem .55rem;display:flex}.app-content .port-grid .port-tile:hover:not(:disabled){border-color:var(--border-strong);background-color:var(--bg-hover)}.app-content .port-grid .port-tile.selected,.app-content .port-grid .port-tile.selected:hover{border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary);background-color:#08bf0824}.app-content .port-grid .port-tile:disabled{opacity:.45;cursor:not-allowed}.port-tile-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;overflow:hidden}.port-tile small{text-overflow:ellipsis;white-space:nowrap;max-width:100%;color:var(--text-muted);font-size:var(--font-size-sm);overflow:hidden}.connect-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:.75rem;padding-top:.75rem;display:flex}.connect-summary{white-space:nowrap;align-items:center;gap:.4rem;min-width:0;margin:0;display:flex}.connect-summary-peer{text-overflow:ellipsis;overflow:hidden}.connect-summary-hint{color:var(--text-muted)}.modal-actions{gap:.4rem;margin-left:auto;display:flex}.modal-actions button:disabled{opacity:.45;cursor:not-allowed}.detail-stats{flex-wrap:wrap;gap:.5rem;margin:.6rem 0;display:flex}.detail-stat{background-color:var(--bg-surface);border:1px solid var(--border);color:var(--text);border-radius:.35rem;flex:8rem;padding:.5rem .75rem;text-decoration:none}.detail-stat:hover{background-color:var(--bg-hover);border-color:var(--border-strong)}.detail-stat-value{font-size:var(--font-size-xl);font-weight:700}.detail-stat-label{font-size:var(--font-size-sm);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.detail-grid{grid-template-columns:auto 1fr;gap:.3rem .75rem;margin:0;display:grid}.detail-grid dt{font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);font-weight:600}.detail-grid dd{overflow-wrap:anywhere;min-width:0;margin:0}.markdown :is(p,ul,ol,pre,blockquote,table,hr,h3,h4,h5,h6){margin:0}.markdown>:nth-child(n+2){margin-top:.4rem}.markdown :is(ul,ol){padding-left:1.25rem}.markdown :is(h3,h4,h5,h6){font-size:var(--font-size-lg)}.markdown :any-link{color:var(--link)}.markdown code{background:var(--bg-code);border-radius:3px;padding:.05rem .25rem;font-size:.9em}.markdown pre{background:var(--bg-code);border-radius:4px;padding:.5rem;overflow-x:auto}.markdown pre code{background:0 0;padding:0}.markdown blockquote{border-left:3px solid var(--border-strong);color:var(--text-secondary);padding-left:.6rem}.markdown hr{border:none;border-top:1px solid var(--border)}.markdown table{border-collapse:collapse}.markdown :is(th,td){border:1px solid var(--border);text-align:left;padding:.2rem .5rem}.section-header{flex-wrap:wrap;align-items:baseline;gap:.75rem;margin:1rem 0 .4rem;display:flex}.section-header h3{margin:0}.detail-split{grid-template-columns:repeat(auto-fit,minmax(min(24rem,100%),1fr));align-items:start;gap:0 1rem;display:grid}.detail-split .section-header{margin-top:.6rem}.attachment-drop{border:1px dashed #0000;border-radius:.35rem;position:relative}.attachment-drop.dragging{border-color:var(--primary);background-color:var(--bg-surface)}.attachment-drop-hint{color:var(--text);pointer-events:none;background-color:#00000073;justify-content:center;align-items:center;margin:0;display:flex;position:absolute;inset:0}.attachment-grid{grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));gap:.6rem;margin:0;padding:0;list-style:none;display:grid}.attachment-thumb{text-align:left;background-color:var(--bg-surface);border:1px solid var(--border);border-radius:.35rem;flex-direction:column;gap:.3rem;width:100%;padding:.3rem;display:flex}.attachment-thumb img{aspect-ratio:4/3;object-fit:cover;background-color:var(--bg-raised);border-radius:.25rem;width:100%;display:block}.attachment-caption{white-space:nowrap;text-overflow:ellipsis;font-size:var(--font-size-base);color:var(--text-secondary);overflow:hidden}.app-content .modal.attachment-lightbox{max-width:min(80rem,100%)}.attachment-full{width:auto;max-width:100%;height:auto;max-height:70vh;margin:0 auto;display:block}.attachment-meta,.attachment-description{color:var(--text-secondary);font-size:var(--font-size-base);overflow-wrap:anywhere}.attachment-item{position:relative}.attachment-star{color:var(--text-secondary);border:1px solid var(--border-strong);background-color:#0000008c;border-radius:999px;padding:.25rem;display:inline-flex;position:absolute;top:.55rem;right:.55rem}span.attachment-star,.attachment-star.marked{color:#f5c518}.floorplan-stage{border:1px solid var(--border);background-color:var(--bg-raised);border-radius:.35rem;width:fit-content;max-width:100%;margin:.6rem 0;position:relative;overflow:hidden}.floorplan-stage>img{width:auto;max-width:100%;height:auto;max-height:60vh;display:block}.floorplan-overlay{width:100%;height:100%;position:absolute;inset:0}.floorplan-area polygon{fill:#74caff24;stroke:var(--link);stroke-width:2px;vector-effect:non-scaling-stroke;cursor:pointer}.floorplan-area:hover polygon{fill:#74caff47}.floorplan-area-label{white-space:nowrap;text-overflow:ellipsis;max-width:40%;font-size:var(--font-size-sm);color:var(--text);background-color:#0009;border-radius:.25rem;padding:.05rem .4rem;font-weight:600;text-decoration:none;position:absolute;overflow:hidden;transform:translate(-50%,-50%)}.floorplan-marker{width:1.75rem;height:1.75rem;color:var(--text);background-color:var(--bg-surface);border:2px solid var(--primary);box-shadow:var(--shadow);border-radius:999px;place-items:center;display:grid;position:absolute;transform:translate(-50%,-50%)}.floorplan-marker-rack{border-radius:.3rem}.floorplan-marker-inactive{opacity:.75;border-style:dashed}.floorplan-marker:hover,.floorplan-marker:focus-visible{z-index:1;background-color:var(--bg-hover)}.floorplan-editor{margin:.6rem 0}.floorplan-toolbar{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.floorplan-palette-actions button.active,.floorplan-kinds button.active{background-color:var(--bg-hover);border-color:var(--primary)}.floorplan-kinds{gap:.4rem;margin-bottom:.5rem;display:flex}.floorplan-edit-layout,.floorplan-view{--floorplan-palette-width:16rem;--floorplan-palette-gap:.75rem}.floorplan-edit-layout{grid-template-columns:minmax(0, 1fr) var(--floorplan-palette-width);gap:var(--floorplan-palette-gap);align-items:start;display:grid}.floorplan-view{max-width:calc(100% - var(--floorplan-palette-width) - var(--floorplan-palette-gap))}.floorplan-area.floorplan-area-editing polygon{cursor:move}.floorplan-area.floorplan-area-editing.selected polygon{fill:#74caff4d;stroke-dasharray:6 3}.floorplan-draft{fill:#74caff33;stroke:var(--link);stroke-width:2px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.floorplan-area-label-static{pointer-events:none}.floorplan-handle{background-color:var(--bg-surface);border:2px solid var(--primary);cursor:nwse-resize;touch-action:none;border-radius:.15rem;width:.8rem;height:.8rem;position:absolute;transform:translate(-50%,-50%)}.floorplan-handle-vertex{cursor:move}.floorplan-handle-midpoint{opacity:.75;cursor:copy;border-width:1px;border-radius:50%;width:.6rem;height:.6rem}.floorplan-handle-close{background-color:var(--primary);cursor:pointer;border-radius:50%}.floorplan-draw-layer{cursor:crosshair;touch-action:none;position:absolute;inset:0}.floorplan-marker-editing{cursor:move;touch-action:none}.floorplan-marker-remove{border-radius:999px;place-items:center;width:.9rem;height:.9rem;padding:0;display:grid;position:absolute;top:-.45rem;right:-.45rem}.floorplan-inspector{flex-wrap:wrap;align-items:end;gap:.6rem;margin-bottom:.6rem;display:flex}.floorplan-inspector label{font-size:var(--font-size-sm);gap:.2rem;display:grid}.floorplan-palette{border:1px solid var(--border);border-radius:.35rem;max-height:70vh;padding:.5rem;overflow-y:auto}.floorplan-palette-actions{margin-bottom:.6rem}.floorplan-draw-toggle{width:100%}.floorplan-palette h4,.floorplan-palette h5{margin:0 0 .4rem}.floorplan-palette h5{font-size:var(--font-size-sm);color:var(--text-muted);margin-top:.6rem}.floorplan-palette-search{width:100%}.floorplan-palette ul{margin:0;padding:0;list-style:none}.floorplan-palette-item{text-align:left;cursor:grab;align-items:center;gap:.4rem;width:100%;margin-bottom:.2rem;display:flex}@media (width<=800px){.floorplan-edit-layout{grid-template-columns:minmax(0,1fr)}}.floorplan-hint{color:var(--text-muted);font-size:var(--font-size-base)}.floorplan-palette-actions .floorplan-hint{font-size:var(--font-size-sm);margin:.4rem 0 0}.detail-columns{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:1rem;margin:.6rem 0;display:grid}.rack-unracked{margin-top:1rem}.rack-unracked h3{align-items:center;gap:.5rem;display:flex}.rack-unracked .badge{background-color:var(--bg-hover);border-radius:.3rem;justify-content:center;align-items:center;min-width:1.5rem;height:1.5rem;padding:0 .25rem;display:inline-flex}.rack-unracked-empty{color:var(--text-muted)}@media (width<=60rem){.detail-columns{grid-template-columns:minmax(0,1fr)}}.rack-elev-dual{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:0;display:grid}@media (width<=48rem){.rack-elev-dual{grid-template-columns:minmax(0,1fr)}}.rack-face-title{font-size:var(--font-size-base);text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);margin:0 0 .3rem;font-weight:700}.rack-util{font-size:var(--font-size-base);color:var(--text-secondary);align-items:center;gap:.5rem;margin:.5rem 0;display:flex}.rack-util-bar{background-color:var(--bg-raised);border:1px solid var(--border);border-radius:999px;flex:12rem;height:.6rem;overflow:hidden}.rack-util-fill{background-color:var(--primary);height:100%;display:block}.rack-elev{--rack-row-h:1.9rem;box-sizing:border-box;background-color:var(--bg-surface);border:1px solid var(--border-strong);grid-template-columns:2rem minmax(0,1fr);grid-auto-rows:var(--rack-row-h);border-radius:0;gap:0;width:100%;margin:0;padding:0;list-style:none;display:grid}.rack-u{min-height:var(--rack-row-h);border:0;border-bottom:1px solid var(--border);background-color:var(--bg-default);outline:none;align-items:stretch;margin:0;display:flex;overflow:hidden}.rack-u:last-child{border-bottom:0}.rack-u-gutter-row{background-color:var(--bg-raised);border-bottom:1px solid var(--border);align-items:stretch;margin:0;display:flex;overflow:hidden}.rack-block{min-height:var(--rack-row-h);border-bottom:1px solid var(--border);background-color:var(--bg-default);flex-direction:column;justify-content:center;align-items:stretch;margin:0;display:flex;overflow:hidden}.rack-u-gutter{background-color:var(--bg-raised);color:var(--text-subtle);font-variant-numeric:tabular-nums;border-right:1px solid var(--border);flex:0 0 1.65rem;justify-content:center;align-items:center;padding:0 .25rem;font-size:.7rem;display:flex}.rack-u-gutter-row .rack-u-gutter{flex:auto}.rack-u-body{white-space:nowrap;flex:auto;align-items:center;min-width:0;padding:0 .4rem;display:flex;overflow:hidden}.rack-u-device{background-color:var(--bg-raised)}.rack-u-device:hover{background-color:var(--bg-hover)}.rack-u-device-rear,.rack-u-device-rear:hover{background-image:repeating-linear-gradient(-45deg,#0000 0 5px,#e1474759 5px 7px)}.rack-u-free{border-style:solid}.rack-u-free:hover{background-color:var(--bg-raised)}.rack-dev{width:100%;min-width:0;color:var(--text);white-space:nowrap;justify-content:center;align-items:center;gap:.35rem;text-decoration:none;display:flex;overflow:hidden}.rack-dev-name{text-overflow:ellipsis;flex-shrink:1;min-width:0;font-weight:600;overflow:hidden}.rack-dev-meta{color:var(--text-secondary);font-size:var(--font-size-sm);text-overflow:ellipsis;flex-shrink:2;min-width:0;overflow:hidden}.rack-u-device-rear .rack-dev-name{background-color:var(--bg-raised);border-radius:3px;padding:0 .3rem;font-weight:500}.rack-u-device-rear .rack-dev-meta{display:none}.rack-dev-face{font-size:var(--font-size-sm);border:1px solid var(--border-strong);color:var(--text-secondary);border-radius:999px;flex-shrink:0;padding:0 .4rem}.rack-u-body .badge{flex-shrink:0}.rack-free-btn{border:1px solid var(--border-strong);background:var(--bg-raised);min-width:0;height:100%;color:var(--text-muted);font-size:var(--font-size-sm);border-radius:.2rem;flex:1 1 0;justify-content:center;align-items:center;padding:.15rem .45rem;display:inline-flex}.rack-free-actions{align-items:center;gap:.35rem;width:100%;height:100%;display:none}.rack-u-free:hover .rack-free-actions,.rack-u-free:focus-within .rack-free-actions{display:flex}.rack-free-btn:hover,.rack-free-btn:focus-visible{background:var(--primary);color:var(--primary-contrast)}.rack-u-shelf{background-color:var(--bg-raised);grid-template-columns:minmax(0,1fr);display:grid}.rack-shelf-clearance{outline:1px dashed var(--border-strong);outline-offset:-1px;background:repeating-linear-gradient(-45deg, transparent 0 6px, var(--bg-hover) 6px 7px);flex-direction:column;flex:auto;gap:.15rem;min-height:0;padding:.2rem .4rem;display:flex;position:relative;overflow:hidden}.rack-shelf-caption{font-size:var(--font-size-sm);color:var(--text-muted)}.rack-u-shelf-mount{background-color:var(--bg-default);flex-direction:row;align-items:stretch;display:flex;overflow:hidden}.rack-mount-slot{color:var(--text-muted);font-size:var(--font-size-sm);flex:auto;align-items:center;padding:0 .6rem;font-style:italic;display:flex}.rack-u-shelf-mount:hover .rack-mount-slot,.rack-u-shelf-mount:focus-within .rack-mount-slot{display:none}.rack-shelf-clearance-link{color:var(--text);flex-direction:column;justify-content:center;gap:.15rem;padding-left:.6rem;text-decoration:none;display:flex}a.rack-shelf-clearance-link:hover{background-color:var(--bg-hover)}.rack-child-shelf{font-size:var(--font-size-sm);color:var(--text-secondary);border:1px solid var(--border-strong);white-space:nowrap;border-radius:.2rem;flex-shrink:0;padding:0 .3rem}.rack-mount-actions{flex:auto;align-items:center;gap:.35rem;padding:.15rem .15rem .15rem .4rem;display:none}.rack-u-shelf-mount:hover .rack-mount-actions,.rack-u-shelf-mount:focus-within .rack-mount-actions{display:flex}.rack-shelf-plate{min-height:var(--rack-row-h);color:var(--text);flex:auto;justify-content:center;align-items:center;gap:.35rem;padding:0 .4rem;text-decoration:none;display:flex;overflow:hidden}a.rack-shelf-plate:hover{background-color:var(--bg-hover)}.rack-shelf-plate-row{min-width:0;min-height:var(--rack-row-h);align-items:stretch;display:flex;position:relative;overflow:hidden}.rack-shelf-devices{flex-wrap:wrap;align-items:center;gap:.25rem;min-width:0;margin:0;padding:0;list-style:none;display:flex}.rack-shelf-plate-row .rack-shelf-devices,.rack-u-shelf-mount .rack-shelf-devices{flex-wrap:nowrap;padding-right:.25rem;overflow:hidden}.rack-shelf-device{border:1px solid var(--border-strong);background-color:var(--bg-raised);max-width:12rem;font-size:var(--font-size-sm);white-space:nowrap;border-radius:.2rem;align-items:center;gap:.15rem;padding:0 0 0 .4rem;display:inline-flex}.rack-shelf-device-link{text-overflow:ellipsis;color:var(--text);font-weight:600;text-decoration:none;overflow:hidden}.rack-shelf-device-link:hover{text-decoration:underline}.rack-shelf-device-remove{color:var(--text-muted);background:0 0;border:0;flex-shrink:0;padding:0 .35rem;line-height:1.3}.rack-shelf-device-remove:hover,.rack-shelf-device-remove:focus-visible{color:var(--error);background-color:var(--error-bg)}.rack-shelf-device-actions{background-color:var(--bg-raised);gap:.25rem;max-width:calc(100% - .5rem);height:1.4rem;display:none;position:absolute;top:.2rem;right:.25rem}.rack-shelf-device-actions .rack-free-btn{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;overflow:hidden}.rack-u-shelf:hover .rack-shelf-device-actions,.rack-u-shelf:focus-within .rack-shelf-device-actions{display:inline-flex}.tab-bar-wrap{border-bottom:1px solid var(--border);align-items:stretch;display:flex}.tab-bar{scrollbar-width:thin;flex:1;align-items:stretch;gap:0;min-width:0;margin:0;padding:0;display:flex;overflow-x:auto}.tab-item{border:1px solid var(--border);background-color:var(--bg-surface);max-width:14rem;color:var(--text-secondary);font-size:var(--font-size-base);cursor:pointer;user-select:none;white-space:nowrap;border-radius:0;flex-shrink:0;align-items:center;gap:.35rem;padding:.3rem .35rem .3rem .6rem;display:inline-flex}.tab-item:hover{background-color:var(--bg-hover);color:var(--text)}.tab-item.active{background-color:var(--bg-raised);border-color:var(--border-strong);color:var(--text);font-weight:600}.tab-title{text-overflow:ellipsis;max-width:10rem;overflow:hidden}.tab-close{color:var(--text-muted);background:0 0;border:1px solid #0000;border-radius:0;flex-shrink:0;justify-content:center;align-items:center;padding:.15rem;display:inline-flex}.tab-close:hover{background-color:var(--bg-hover);border-color:var(--border);color:var(--text)}.tab-close-icon{display:inline-flex}.tab-pane[hidden]{display:none}.tab-icon{color:var(--text-muted);flex-shrink:0;display:inline-flex}.tab-item.active .tab-icon{color:var(--text-secondary)}.tab-list{flex-shrink:0;display:flex;position:relative}.tab-list-toggle{border:1px solid var(--border);background-color:var(--bg-surface);color:var(--text-secondary);border-radius:0;align-items:center;padding:0 .45rem;display:inline-flex}.tab-list-toggle:hover{background-color:var(--bg-hover);color:var(--text)}.tab-menu{background-color:var(--bg-raised);border:1px solid var(--border);min-width:12rem;max-width:22rem;box-shadow:var(--shadow);z-index:20;border-radius:.35rem;flex-direction:column;padding:.25rem;display:flex}.tab-list-menu{max-height:60vh;position:absolute;top:calc(100% + .2rem);right:0;overflow-y:auto}.tab-context-menu{position:fixed}.tab-menu-item{width:100%;color:var(--text);text-align:left;white-space:nowrap;background:0 0;border:none;border-radius:.25rem;align-items:center;gap:.45rem;display:flex}.tab-menu-item:hover,.tab-menu-item.active{background-color:var(--bg-hover)}.tab-menu .tab-title{max-width:none}.breadcrumbs{font-size:var(--font-size-base);margin:0 0 .75rem}.breadcrumbs ol{flex-wrap:wrap;align-items:center;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.breadcrumbs li+li:before{content:"›";color:var(--text-muted);margin-right:.35rem}.breadcrumbs [aria-current=page]{color:var(--text-secondary)}.view-switch{flex-wrap:wrap;gap:.25rem;margin:.5rem 0;display:flex}.view-switch [aria-pressed=true]{border-color:var(--primary);background-color:var(--bg-hover)}.link-board{grid-template-columns:minmax(0,1fr) 12rem minmax(0,1fr);align-items:start;gap:.75rem;display:grid}.link-board h3{margin:.25rem 0 .4rem}.link-board .toolbar-search-input{margin-bottom:.25rem}.app-content .link-board-scroll{max-height:70vh;overflow:auto}.link-board-row{cursor:pointer}.link-board-row:hover td{background-color:var(--bg-raised)}.link-board-row.inactive td{color:var(--text-muted)}.link-board-row.highlighted td{background-color:#74caff1f}.link-board-row.selected td{background-color:#08bf082e}.link-board-detail{color:var(--text-muted);font-size:var(--font-size-sm);display:block}.link-board-state{text-align:right;white-space:nowrap}.link-board-state>*+.btn-small{margin-left:.35rem}.link-board-suggestion{color:var(--link)}.link-board-middle{top:calc(var(--topbar-height) + .5rem);flex-direction:column;gap:.6rem;padding-top:2.1rem;display:flex;position:sticky}.link-board-hint{color:var(--text-secondary);font-size:var(--font-size-sm);margin:0}.link-board-toggle{font-size:var(--font-size-sm);color:var(--text-secondary);cursor:pointer;align-items:center;gap:.35rem;display:flex}@media (width<=1100px){.link-board{grid-template-columns:minmax(0,1fr)}.link-board-middle{padding-top:0;position:static}}.app-content .changelog-diff td{vertical-align:top;overflow-wrap:anywhere}.app-content .changelog-diff .diff-removed{background-color:var(--error-bg)}.app-content .changelog-diff .diff-added{background-color:color-mix(in srgb, var(--success) 16%, transparent)}
