/* IDC_トポロジー可視化ポータル_editor.css */
.edit-action-row{display:flex;gap:.4rem;flex-wrap:wrap;margin:.55rem 0}
.edit-action,.edit-guest,.add-guest{font-size:.74rem;padding:.28rem .55rem;border:1px solid var(--card-border);border-radius:6px;background:var(--surface);color:var(--accent);cursor:pointer}
.edit-action:hover,.edit-guest:hover,.add-guest:hover{border-color:var(--accent);background:var(--accent-soft)}
.edit-guest{margin-left:.35rem}
.data-tools{gap:.3rem;margin-top:.55rem}
.data-tools button{font-size:.71rem;padding:.25rem .5rem;border-radius:6px;line-height:1.35}
header .import-note{font-size:.69rem;margin-top:.25rem;line-height:1.45}
.edit-overlay{display:none;position:fixed;inset:0;z-index:140;background:rgba(5,13,22,.68);padding:1rem;overflow:auto}
.edit-overlay.open{display:flex;align-items:flex-start;justify-content:center}
.edit-modal{width:min(760px,100%);margin:3vh auto;background:var(--surface);color:var(--ink);border:1px solid var(--card-border);border-radius:14px;box-shadow:0 22px 70px rgba(0,0,0,.3);padding:1rem}
.edit-modal h2{margin:0 0 .2rem;font-size:1.08rem}
.edit-modal .edit-note{margin:0 0 .8rem;color:var(--muted);font-size:.78rem}
.edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}
.edit-field{display:flex;flex-direction:column;gap:.2rem}
.edit-field.wide{grid-column:1/-1}
.edit-field label{font-size:.72rem;font-weight:700;color:var(--muted)}
.edit-field input,.edit-field select,.edit-field textarea{width:100%;border:1px solid var(--card-border);border-radius:7px;background:var(--bg);color:var(--ink);font:inherit;font-size:.82rem;padding:.5rem .6rem}
.edit-field textarea{min-height:5.2rem;resize:vertical}
.edit-field input:focus,.edit-field select:focus,.edit-field textarea:focus{outline:2px solid var(--accent);outline-offset:1px}
.edit-form-section{grid-column:1/-1;display:flex;align-items:baseline;gap:.65rem;margin-top:.2rem;padding:.65rem .15rem .35rem;border-bottom:1px solid var(--line)}
.edit-form-section b{color:var(--accent);font-size:.82rem}.edit-form-section span{color:var(--muted);font-size:.68rem}
.edit-type-placeholder{grid-column:1/-1;display:grid;place-items:center;gap:.35rem;min-height:150px;padding:1.2rem;border:1px dashed color-mix(in srgb,var(--accent) 40%,var(--card-border));border-radius:10px;background:color-mix(in srgb,var(--accent-soft) 55%,var(--surface));text-align:center}
.edit-type-placeholder b{color:var(--text);font-size:.9rem}.edit-type-placeholder span{color:var(--muted);font-size:.74rem}
.edit-modal-actions{display:flex;gap:.5rem;justify-content:flex-end;flex-wrap:wrap;margin-top:.85rem;padding-top:.75rem;border-top:1px solid var(--line)}
.edit-modal-actions button{font-size:.8rem}
.edit-modal-actions .danger{margin-right:auto;color:var(--danger);border-color:var(--danger)}
.fault-edit-row{display:flex;justify-content:flex-end;margin:0 0 .65rem}
.fault-step-heading{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:.7rem;margin-top:.2rem;padding-top:.7rem;border-top:1px solid var(--line)}
.fault-step-heading button,.remove-fault-step{font:inherit;font-size:.72rem;border:1px solid var(--card-border);border-radius:7px;background:var(--surface);color:var(--accent);cursor:pointer;padding:.28rem .55rem}
.fault-step-heading button:hover,.remove-fault-step:hover{border-color:var(--accent);background:var(--accent-soft)}
.edit-fault-step{position:relative;grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;margin:0;padding:.75rem;border:1px solid var(--card-border);border-radius:10px;background:color-mix(in srgb,var(--layer) 55%,var(--surface))}
.edit-fault-step legend{padding:0 .35rem;color:var(--accent);font-size:.75rem;font-weight:800}
.edit-fault-step .remove-fault-step{position:absolute;top:.45rem;right:.55rem;color:var(--danger)}
.edit-fault-step .edit-field.wide{grid-column:1/-1}
.inventory-heading{display:flex;align-items:center;justify-content:space-between;gap:.6rem}
.inventory-heading h3{margin:.75rem 0 .55rem}
.inventory-heading-actions{display:flex;align-items:center;justify-content:flex-end;gap:.45rem;flex-wrap:wrap}
.drive-sync-state{font-size:.72rem;color:var(--muted);max-width:min(42vw,380px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.drive-sync-action{border-color:color-mix(in srgb,var(--accent) 48%,var(--card-border));color:var(--accent-strong)}
.drive-sync-action[disabled]{cursor:wait;opacity:.68}
.drive-sync-overlay{display:none;position:fixed;inset:0;z-index:115;align-items:center;justify-content:center;padding:1rem;background:rgba(3,9,16,.74);backdrop-filter:blur(10px)}
.drive-sync-overlay.open{display:flex}
.drive-sync-modal{width:min(560px,100%);max-height:min(760px,calc(100vh - 2rem));overflow:auto;padding:1.15rem;border:1px solid var(--card-border);border-radius:16px;background:var(--surface-raised);color:var(--ink);box-shadow:var(--shadow-lg)}
.drive-sync-head{display:flex;align-items:center;gap:.75rem;padding-bottom:.85rem;border-bottom:1px solid var(--line)}
.drive-sync-head>div:last-child{min-width:0}
.drive-sync-head span{display:block;color:var(--accent);font:700 .64rem/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.16em}
.drive-sync-head h2{margin:.15rem 0 0;font-size:clamp(1.05rem,2vw,1.3rem)}
.drive-sync-icon{display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;border:1px solid color-mix(in srgb,var(--accent) 52%,var(--card-border));border-radius:12px;background:var(--accent-soft);color:var(--accent);font-size:1.35rem}
.drive-sync-lead{margin:.85rem 0;color:var(--muted);font-size:.8rem;line-height:1.65}
.drive-sync-source,.drive-sync-meta{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem .8rem;border:1px solid var(--card-border);border-radius:9px;background:var(--layer);font-size:.75rem}
.drive-sync-source span,.drive-sync-meta span{color:var(--muted)}
.drive-sync-source b,.drive-sync-meta b{min-width:0;overflow-wrap:anywhere;text-align:right}
.drive-sync-preview{min-height:116px;margin-top:.7rem}
.drive-sync-loading{display:flex;align-items:center;justify-content:center;gap:.7rem;min-height:116px;border:1px dashed var(--card-border);border-radius:10px;color:var(--muted);font-size:.78rem}
.drive-sync-spinner{width:20px;height:20px;border:2px solid var(--card-border);border-top-color:var(--accent);border-radius:50%;animation:drive-sync-spin .8s linear infinite}
@keyframes drive-sync-spin{to{transform:rotate(360deg)}}
.drive-sync-diff{display:grid;grid-template-columns:repeat(4,1fr);gap:.55rem;margin-top:.65rem}
.drive-sync-diff>div{display:grid;grid-template-columns:1fr auto auto;align-items:end;gap:.2rem;padding:.72rem;border:1px solid var(--card-border);border-radius:9px;background:var(--layer)}
.drive-sync-diff span{grid-column:1/-1;color:var(--muted);font-size:.68rem}
.drive-sync-diff b{font-size:1.35rem;line-height:1;color:var(--ink)}
.drive-sync-diff small{color:var(--muted);font-size:.65rem}
.drive-sync-diff .add{border-top:2px solid var(--run)}
.drive-sync-diff .update{border-top:2px solid var(--warn)}
.drive-sync-diff .same{border-top:2px solid var(--accent)}
.drive-sync-diff .exclude{border-top:2px solid var(--danger)}
.drive-sync-policy{display:flex;gap:.6rem;margin-top:.65rem;padding:.72rem .8rem;border-radius:9px;background:color-mix(in srgb,var(--accent-soft) 70%,var(--layer));font-size:.72rem;line-height:1.55}
.drive-sync-policy b{flex:0 0 auto;color:var(--accent)}
.drive-sync-policy span{color:var(--muted)}
.drive-sync-error{min-height:1.2em;margin:.65rem 0 0;color:var(--danger);font-size:.73rem}
.drive-sync-failed,.drive-sync-success{display:flex;align-items:center;gap:.75rem;min-height:116px;padding:1rem;border:1px solid var(--card-border);border-radius:10px;background:var(--layer)}
.drive-sync-failed{display:grid;border-color:color-mix(in srgb,var(--danger) 45%,var(--card-border))}
.drive-sync-failed b{color:var(--danger)}
.drive-sync-failed span,.drive-sync-success p{margin:0;color:var(--muted);font-size:.74rem;line-height:1.55}
.drive-sync-success>span{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:color-mix(in srgb,var(--run) 18%,var(--layer));color:var(--run);font-size:1.15rem;font-weight:800}
.drive-sync-success b{display:block;margin-bottom:.25rem}
.drive-sync-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.85rem;padding-top:.8rem;border-top:1px solid var(--line)}
.drive-sync-actions button{min-height:34px;padding:.35rem .8rem;border:1px solid var(--card-border);border-radius:7px;background:var(--surface);color:var(--ink);font:inherit;font-size:.74rem;font-weight:700;cursor:pointer}
.drive-sync-actions button:hover{border-color:var(--accent);color:var(--accent)}
.drive-sync-actions button.primary{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}
.drive-sync-actions button:disabled{cursor:wait;opacity:.62}
@media(max-width:560px){.drive-sync-diff{grid-template-columns:1fr}.drive-sync-policy{display:grid}.drive-sync-source,.drive-sync-meta{align-items:flex-start;flex-direction:column;gap:.25rem}.drive-sync-source b,.drive-sync-meta b{text-align:left}}
.table-add-action,.table-edit-action{font:inherit;border:1px solid var(--card-border);background:var(--surface);color:var(--accent);cursor:pointer}
.table-add-action{font-size:.72rem;font-weight:700;border-radius:7px;padding:.28rem .55rem;white-space:nowrap}
.table-edit-action{font-size:.68rem;border-radius:5px;padding:.16rem .42rem}
.table-add-action:hover,.table-edit-action:hover{border-color:var(--accent);background:var(--accent-soft)}
.inventory-table th.table-action-cell,.inventory-table td.table-action-cell{position:sticky;right:0;text-align:center;background:var(--surface);box-shadow:-1px 0 var(--line);white-space:nowrap}
.inventory-table th.table-action-cell{background:var(--layer);z-index:2}
@media(max-width:640px){.edit-grid,.edit-fault-step{grid-template-columns:1fr}.edit-field.wide,.edit-fault-step .edit-field.wide{grid-column:auto}}


/* IDC_トポロジー可視化ポータル_design.css */
/* IDC topology portal — production visual system */
:root{
  color-scheme:light;
  --bg:#eef3f8;
  --surface:#ffffff;
  --surface-raised:#ffffff;
  --ink:#132238;
  --muted:#64758a;
  --accent:#0877a8;
  --accent-ink:#ffffff;
  --accent-soft:#e1f3fa;
  --layer:#edf3f8;
  --layer-border:#c3d2df;
  --card-border:#d5e0e9;
  --line:#e3eaf0;
  --run:#087a55;
  --run-bg:#e0f5ec;
  --stop:#6f7d8c;
  --stop-bg:#edf1f4;
  --stby:#a05f00;
  --stby-bg:#fff2d8;
  --stby-border:#e8bc69;
  --danger:#c13b37;
  --danger-bg:#fff0ef;
  --warn:#a76200;
  --warn-bg:#fff3dc;
  --sim:#7652d6;
  --edge-main:#1784b3;
  --edge-mgmt:#70879d;
  --edge-inter:#d48a22;
  --shadow-sm:0 1px 2px rgba(19,34,56,.05),0 5px 18px rgba(19,34,56,.05);
  --shadow-md:0 12px 36px rgba(19,34,56,.09);
  --shadow-lg:0 28px 80px rgba(4,18,35,.22);
  --radius-sm:8px;
  --radius-md:12px;
  --radius-lg:18px;
}

@media (prefers-color-scheme:dark){
  :root{
    color-scheme:dark;
    --bg:#07111c;
    --surface:#0f1c29;
    --surface-raised:#142434;
    --ink:#e7eff7;
    --muted:#90a4b8;
    --accent:#46b8e5;
    --accent-ink:#04141f;
    --accent-soft:#102f40;
    --layer:#142434;
    --layer-border:#29445a;
    --card-border:#243c50;
    --line:#1e3446;
    --run:#5bd5a6;
    --run-bg:#103329;
    --stop:#91a0af;
    --stop-bg:#1b2936;
    --stby:#f0b65b;
    --stby-bg:#3a2a0f;
    --stby-border:#725522;
    --danger:#ff8f88;
    --danger-bg:#3b1b1d;
    --warn:#f5bd68;
    --warn-bg:#3a2a12;
    --sim:#b7a0ff;
    --edge-main:#53bce8;
    --edge-mgmt:#718ba2;
    --edge-inter:#e7a54a;
    --shadow-sm:0 1px 2px rgba(0,0,0,.22),0 8px 24px rgba(0,0,0,.16);
    --shadow-md:0 18px 45px rgba(0,0,0,.25);
    --shadow-lg:0 32px 90px rgba(0,0,0,.5);
  }
}

:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#07111c;--surface:#0f1c29;--surface-raised:#142434;--ink:#e7eff7;--muted:#90a4b8;
  --accent:#46b8e5;--accent-ink:#04141f;--accent-soft:#102f40;--layer:#142434;
  --layer-border:#29445a;--card-border:#243c50;--line:#1e3446;--run:#5bd5a6;--run-bg:#103329;
  --stop:#91a0af;--stop-bg:#1b2936;--stby:#f0b65b;--stby-bg:#3a2a0f;--stby-border:#725522;
  --danger:#ff8f88;--danger-bg:#3b1b1d;--warn:#f5bd68;--warn-bg:#3a2a12;--sim:#b7a0ff;
  --edge-main:#53bce8;--edge-mgmt:#718ba2;--edge-inter:#e7a54a;
  --shadow-sm:0 1px 2px rgba(0,0,0,.22),0 8px 24px rgba(0,0,0,.16);
  --shadow-md:0 18px 45px rgba(0,0,0,.25);--shadow-lg:0 32px 90px rgba(0,0,0,.5);
}

:root[data-theme="light"]{
  color-scheme:light;
  --bg:#eef3f8;--surface:#ffffff;--surface-raised:#ffffff;--ink:#132238;--muted:#64758a;
  --accent:#0877a8;--accent-ink:#ffffff;--accent-soft:#e1f3fa;--layer:#edf3f8;
  --layer-border:#c3d2df;--card-border:#d5e0e9;--line:#e3eaf0;--run:#087a55;--run-bg:#e0f5ec;
  --stop:#6f7d8c;--stop-bg:#edf1f4;--stby:#a05f00;--stby-bg:#fff2d8;--stby-border:#e8bc69;
  --danger:#c13b37;--danger-bg:#fff0ef;--warn:#a76200;--warn-bg:#fff3dc;--sim:#7652d6;
  --edge-main:#1784b3;--edge-mgmt:#70879d;--edge-inter:#d48a22;
  --shadow-sm:0 1px 2px rgba(19,34,56,.05),0 5px 18px rgba(19,34,56,.05);
  --shadow-md:0 12px 36px rgba(19,34,56,.09);--shadow-lg:0 28px 80px rgba(4,18,35,.22);
}

html{
  scroll-behavior:smooth;
  font-size:clamp(14px,calc(12px + .28vw),16px)
}
body{
  min-height:100vh;
  font-family:"BIZ UDPGothic","Yu Gothic UI","Hiragino Sans","Noto Sans JP","Meiryo",sans-serif;
  font-feature-settings:"palt" 1;
  letter-spacing:.01em;
  background:
    radial-gradient(circle at 12% -10%,color-mix(in srgb,var(--accent) 14%,transparent) 0,transparent 34rem),
    radial-gradient(circle at 92% 8%,color-mix(in srgb,var(--sim) 8%,transparent) 0,transparent 28rem),
    var(--bg);
}

button,input,select,textarea{font-family:inherit}
button{transition:border-color .18s ease,background-color .18s ease,color .18s ease,box-shadow .18s ease,transform .18s ease}
button:active{transform:translateY(1px)}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{
  outline:2px solid var(--accent);outline-offset:2px
}

.wrap{
  width:min(100%,1440px);
  max-width:1440px;
  margin-inline:auto;
  padding:clamp(.7rem,1.8vw,1.35rem) clamp(.55rem,2.4vw,2rem) clamp(3rem,6vw,4.5rem)
}
header{
  position:relative;
  overflow:hidden;
  padding:clamp(.85rem,1.6vw,1.2rem) clamp(.8rem,2vw,1.35rem) clamp(.8rem,1.5vw,1.05rem);
  border:1px solid var(--card-border);
  border-radius:var(--radius-lg);
  background:linear-gradient(135deg,var(--surface-raised),var(--surface));
  box-shadow:var(--shadow-md);
}
header::before{
  content:"";position:absolute;inset:0 0 auto;height:3px;
  background:linear-gradient(90deg,var(--accent),#45d0c1 46%,var(--sim));
}
header::after{
  content:"33B114";position:absolute;right:1.2rem;top:.55rem;
  color:var(--accent);opacity:.09;font:800 clamp(2.5rem,7vw,5.5rem)/1 var(--mono);
  letter-spacing:-.08em;pointer-events:none
}
header h1{
  position:relative;z-index:1;
  margin:0 0 clamp(.25rem,.6vw,.4rem);
  max-width:min(25em,calc(100% - clamp(6.5rem,12vw,9rem)));
  font-size:clamp(1.12rem,calc(.84rem + 1.5vw),1.82rem);
  line-height:1.32;
  letter-spacing:clamp(.01em,.18vw,.025em);
  overflow-wrap:anywhere;
  text-wrap:balance
}
.header-corner-actions{
  position:absolute;z-index:3;top:.85rem;right:1rem
}
.header-corner-actions button{
  min-height:34px;padding:.32rem .72rem;
  border:1px solid color-mix(in srgb,var(--accent) 45%,var(--card-border));
  border-radius:9px;background:var(--accent-soft);color:var(--accent);
  font-size:.74rem;font-weight:700;cursor:pointer;
  box-shadow:0 5px 16px color-mix(in srgb,var(--accent) 10%,transparent)
}
.header-corner-actions button:hover{
  color:var(--accent-ink);background:var(--accent);border-color:var(--accent)
}
header .meta{
  position:relative;z-index:1;max-width:1050px;
  font-size:clamp(.67rem,calc(.61rem + .22vw),.76rem);
  line-height:1.65;
  overflow-wrap:anywhere
}
header .meta code{
  display:inline-block;padding:.02rem .34rem;border:1px solid var(--card-border);
  border-radius:5px;background:var(--layer);color:var(--accent)
}
.data-tools{
  position:relative;z-index:1;
  margin-top:.7rem;padding-top:.7rem;border-top:1px solid var(--line)
}
.data-tools button,.import-actions button{
  min-height:clamp(30px,3vw,36px);
  padding:clamp(.28rem,.5vw,.4rem) clamp(.48rem,1vw,.78rem);
  font-size:clamp(.68rem,calc(.62rem + .2vw),.78rem);
  border-color:var(--card-border);background:var(--surface-raised);
  box-shadow:0 1px 2px rgba(0,0,0,.05)
}
.data-tools button:hover,.import-actions button:hover{
  color:var(--accent);border-color:var(--accent);background:var(--accent-soft)
}
.data-tools button.primary,.import-actions button.primary{
  background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 70%,#025175));
  color:var(--accent-ink);box-shadow:0 5px 16px color-mix(in srgb,var(--accent) 22%,transparent)
}
header .import-note{position:relative;z-index:1;margin-bottom:0}

nav.tabs{
  top:.65rem;
  gap:clamp(.25rem,.55vw,.45rem);
  margin:clamp(.7rem,1.4vw,1rem) 0 clamp(.9rem,1.7vw,1.25rem);
  padding:clamp(.3rem,.65vw,.48rem);
  border:1px solid var(--card-border);
  border-radius:14px;
  background:color-mix(in srgb,var(--surface) 92%,transparent);
  box-shadow:var(--shadow-sm);
  backdrop-filter:blur(16px);
}
nav.tabs button{
  flex:1 1 auto;
  min-height:clamp(34px,3.4vw,42px);
  border-color:transparent;
  border-radius:9px;
  background:transparent;
  font-size:clamp(.7rem,calc(.63rem + .24vw),.8rem);
  color:var(--muted);
  padding:clamp(.3rem,.55vw,.42rem) clamp(.42rem,1.1vw,.8rem);
  line-height:1.35;
  text-wrap:balance
}
nav.tabs button:hover{background:var(--layer);color:var(--ink);border-color:var(--card-border)}
nav.tabs button.active{
  color:var(--accent-ink);
  border-color:color-mix(in srgb,var(--accent) 78%,#fff);
  background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 72%,#025175));
  box-shadow:0 6px 18px color-mix(in srgb,var(--accent) 22%,transparent)
}

section.tab.active{animation:portal-in .22s ease-out}
@keyframes portal-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
h2{
  display:flex;align-items:center;gap:.55rem;
  margin-bottom:clamp(.35rem,.7vw,.5rem);
  font-size:clamp(1rem,calc(.84rem + .75vw),1.32rem);
  line-height:1.4;
  letter-spacing:clamp(.015em,.2vw,.035em);
  text-wrap:balance
}
h2::before{
  content:"";width:4px;height:1.35em;border-radius:99px;
  background:linear-gradient(var(--accent),#42c9bf);
  box-shadow:0 0 14px color-mix(in srgb,var(--accent) 35%,transparent)
}
.lead{
  font-size:clamp(.75rem,calc(.69rem + .2vw),.84rem);
  line-height:1.72;
  margin-bottom:clamp(.7rem,1.4vw,1rem)
}

.svgcard,.panel,.rack,.rolecard,.fstep,details.fault,.prep,.glocard,.metric,.tablewrap{
  border-color:var(--card-border);
  background:var(--surface);
  box-shadow:var(--shadow-sm)
}
.topo-grid{
  grid-template-columns:minmax(0,1fr) clamp(285px,26vw,350px);
  gap:clamp(.7rem,1.3vw,1rem)
}
.svgcard{
  border-radius:var(--radius-lg);
  padding:clamp(.5rem,1.1vw,.85rem);
  background:
    linear-gradient(color-mix(in srgb,var(--accent) 4%,transparent),transparent 28%),
    var(--surface)
}
.svgcard svg{border-radius:12px}
.controls{padding:.15rem;margin-bottom:.65rem}
.controls .mode,.controls .reset{min-height:34px;border-radius:8px;font-size:.76rem}
.controls .mode:hover,.controls .reset:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.controls .mode.on{box-shadow:0 5px 14px color-mix(in srgb,var(--accent) 20%,transparent)}
.controls .hint{margin-left:auto;font-size:.71rem}
.legend{
  margin:.7rem .15rem .1rem;padding:.6rem .7rem;
  border:1px solid var(--line);border-radius:9px;background:var(--layer);font-size:.71rem
}
.legend .layer-legend-title{font-weight:800;color:var(--ink)}
.legend .layer-note{flex-basis:100%;color:var(--muted)}
.osi-key{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:28px;height:18px;margin-right:.35em;padding:0 .3em;
  border:1px solid currentColor;border-radius:5px;
  font:800 .63rem/1 var(--mono);letter-spacing:.02em
}
.osi-l1{color:#62748a;background:color-mix(in srgb,#62748a 10%,var(--surface))}
.osi-l2{color:#087f8c;background:color-mix(in srgb,#087f8c 10%,var(--surface))}
.osi-l3{color:#245cc7;background:color-mix(in srgb,#245cc7 10%,var(--surface))}
.osi-l4{color:#9a5b00;background:color-mix(in srgb,#d28718 12%,var(--surface))}
.osi-l7{color:#9a3c79;background:color-mix(in srgb,#b3488e 11%,var(--surface))}
.node .osi-badge-bg{stroke-width:1}
.node .osi-badge-bg.osi-l1{fill:#eef2f6;stroke:#62748a}
.node .osi-badge-bg.osi-l2{fill:#e4f5f5;stroke:#087f8c}
.node .osi-badge-bg.osi-l3{fill:#e9effc;stroke:#245cc7}
.node .osi-badge-bg.osi-l4{fill:#fff4de;stroke:#9a5b00}
.node .osi-badge-bg.osi-l7{fill:#faeaf4;stroke:#9a3c79}
.node text.osi-badge-text{
  fill:#1c2836;
  font-family:Consolas,"SF Mono",Menlo,monospace;
  font-size:8px;font-weight:800;
  text-anchor:middle;pointer-events:none
}
.detail-layer-badges{display:flex;gap:.25rem;margin-bottom:.35rem}
.detail-layer-badges .osi-key{margin-right:0}

.node rect.body{filter:drop-shadow(0 3px 7px rgba(0,0,0,.08))}
.node:hover rect.body{filter:drop-shadow(0 5px 12px color-mix(in srgb,var(--accent) 20%,transparent))}
.panel{
  top:5.55rem;
  border-radius:var(--radius-lg);
  padding:clamp(.75rem,1.25vw,1rem);
  box-shadow:var(--shadow-md)
}
.panel::before{
  content:"DEVICE INSPECTOR";display:block;margin:-.15rem 0 .55rem;
  color:var(--accent);font:700 .61rem/1 var(--mono);letter-spacing:.14em
}
.panel h3{font-size:1.02rem}
.panel .roleblock{border:1px solid color-mix(in srgb,var(--accent) 22%,var(--card-border))}
.panel dl,.rolecard dl{row-gap:.25rem}
.tag{border:1px solid transparent;padding:.1rem .55rem}
.guest-list{gap:.65rem}
details.guestvm,.guest-case{overflow:hidden;border-color:var(--card-border);background:var(--layer)}
details.guestvm[open],.guest-case[open]{border-color:color-mix(in srgb,var(--accent) 48%,var(--card-border));background:var(--surface);box-shadow:0 7px 18px rgba(27,58,83,.09)}
.rolecard-vms details.guestvm{border-width:1.5px;border-radius:9px}
.rolecard-vms details.guestvm summary{
  display:grid;grid-template-columns:28px minmax(0,1fr) minmax(130px,auto);
  align-items:center;gap:.75rem;min-height:62px;padding:.68rem .85rem;
  background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 7%,var(--layer)),var(--layer));
  transition:background .16s ease,border-color .16s ease
}
.rolecard-vms details.guestvm summary:hover{background:color-mix(in srgb,var(--accent) 11%,var(--layer))}
.rolecard-vms details.guestvm[open] summary{background:color-mix(in srgb,var(--accent) 8%,var(--surface))}
.rolecard-vms details.guestvm summary::before{
  display:grid;place-items:center;width:28px;height:28px;border:1px solid color-mix(in srgb,var(--accent) 40%,var(--card-border));
  border-radius:7px;background:var(--surface);font-size:1rem;line-height:1
}
.rolecard-vms .guest-title{min-width:0}
.rolecard-vms .vmchip{
  display:flex;align-items:center;gap:.65rem;min-width:0;margin:0;padding:0;
  border:0;background:transparent;font-size:inherit
}
.rolecard-vms .vmchip .d{width:9px;height:9px;flex:0 0 9px;box-shadow:0 0 0 3px color-mix(in srgb,var(--run) 14%,transparent)}
.rolecard-vms .vmchip.off .d{box-shadow:0 0 0 3px color-mix(in srgb,var(--stop) 13%,transparent)}
.rolecard-vms .guest-identity{display:grid;gap:.18rem;min-width:0}
.rolecard-vms .guest-name{overflow:hidden;color:var(--text);font-size:clamp(.91rem,.84rem + .2vw,1.03rem);line-height:1.25;text-overflow:ellipsis;white-space:nowrap}
.rolecard-vms .vmchip.off .guest-name{color:var(--muted)}
.rolecard-vms .guest-ip{overflow:hidden;color:var(--accent);font-size:clamp(.73rem,.69rem + .12vw,.8rem);font-weight:650;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}
.rolecard-vms .guest-role{
  justify-self:end;max-width:min(32vw,310px);padding:.38rem .58rem;border:1px solid var(--card-border);border-radius:999px;
  background:var(--surface);color:var(--muted);font-size:clamp(.72rem,.68rem + .1vw,.78rem);font-weight:700;line-height:1.3;text-align:right
}
.rolecard-vms .guest-body{padding:.85rem 1rem 1rem;background:var(--surface)}
.rolecard-vms .guest-body dl{grid-template-columns:minmax(92px,auto) minmax(0,1fr);gap:.42rem 1rem;margin:.05rem 0 .8rem;font-size:clamp(.79rem,.75rem + .12vw,.86rem);line-height:1.55}
.rolecard-vms .guest-body dt{font-weight:700}
.rolecard-vms .guest-body dd{min-width:0;overflow-wrap:anywhere}
@media (max-width:720px){
  .rolecard-vms details.guestvm summary{grid-template-columns:28px minmax(0,1fr);gap:.6rem;padding:.65rem .7rem}
  .rolecard-vms .guest-role{grid-column:2;justify-self:start;max-width:100%;padding:.25rem .5rem;text-align:left}
  .rolecard-vms .guest-body{padding:.75rem}
  .rolecard-vms .guest-body dl{grid-template-columns:78px minmax(0,1fr);gap:.35rem .65rem}
}

.racklayout{
  grid-template-columns:minmax(clamp(285px,31vw,470px),clamp(320px,35vw,470px)) minmax(0,1fr);
  gap:clamp(.8rem,1.7vw,1.25rem)
}
.rack{border-width:1px;border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}
.rack .rrow{min-height:1.8rem}
.rack .u{font-weight:700}
.rack .occ.dev:hover{color:var(--accent);box-shadow:inset 3px 0 var(--accent)}
.rackside{
  padding:1.05rem 1.15rem;border:1px solid var(--card-border);
  border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm)
}

.rolegrid{
  grid-template-columns:repeat(auto-fill,minmax(min(100%,clamp(270px,29vw,340px)),1fr));
  gap:clamp(.6rem,1.1vw,.9rem)
}
#rolewrap .rolegrid-compact{
  grid-template-columns:minmax(0,1fr);
  gap:clamp(.48rem,.72vw,.66rem);align-items:start
}
.rolecard{
  position:relative;overflow:hidden;border-radius:var(--radius-md);
  --device-color:var(--accent);
  padding:clamp(.72rem,1.25vw,1rem) clamp(2.7rem,3.4vw,3.1rem) clamp(.72rem,1.25vw,1rem) clamp(.75rem,1.35vw,1.08rem);
  border-width:1.5px;border-color:color-mix(in srgb,var(--device-color) 48%,var(--card-border));
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease
}
.rolecard::after{
  content:"";position:absolute;inset:0 auto 0 0;width:3px;
  background:linear-gradient(var(--device-color),color-mix(in srgb,var(--device-color) 18%,transparent));opacity:.9
}
.rolecard.device-network{--device-color:#1d9fd1}
.rolecard.device-server{--device-color:#7857d8}
.rolecard.device-stopped{--device-color:#d48a20}
.rolecard-selectable{cursor:pointer;background:linear-gradient(135deg,color-mix(in srgb,var(--device-color) 7%,var(--surface)),var(--surface) 48%)}
.rolecard-selectable:focus-visible{outline:3px solid color-mix(in srgb,var(--device-color) 35%,transparent);outline-offset:2px}
.rolecard-selectable:hover{transform:translateY(-2px);border-color:var(--device-color);box-shadow:var(--shadow-md)}
.rolecard-selectable h3{margin:0;line-height:1.35;padding-right:.15rem}
.rolecard-selectable .rolecard-primary{border-color:color-mix(in srgb,var(--device-color) 28%,var(--card-border));background:color-mix(in srgb,var(--device-color) 7%,var(--layer))}
.rolecard-selectable .rolecard-extra{margin:0;border:0}
.rolecard-selectable .rolecard-extra>summary{position:absolute;z-index:2;top:clamp(.72rem,1.25vw,1rem);right:clamp(.72rem,1.25vw,1rem);display:block;width:28px;height:28px;padding:0;border:1px solid color-mix(in srgb,var(--device-color) 40%,var(--card-border));border-radius:7px;background:var(--surface);list-style:none;cursor:pointer}
.rolecard-selectable .rolecard-extra>summary::-webkit-details-marker{display:none}
.rolecard-selectable .rolecard-extra>summary::after{content:"＋";display:grid;place-items:center;width:100%;height:100%;border:0;color:var(--device-color);font-size:1rem;font-weight:800}
.rolecard-selectable .rolecard-extra[open]>summary::after{content:"−"}
.rolecard-selectable .rolecard-extra-body{margin-top:.75rem;padding:.8rem 0 .1rem;border-top:1px solid color-mix(in srgb,var(--device-color) 25%,var(--card-border));cursor:default}
.rolecard-status-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}
.rolecard-status-row .what{margin:0;color:var(--muted);font-size:.73rem;font-weight:700}
.server-rolecard{grid-column:auto}
.rolecard-selectable.is-open{grid-column:1/-1}
#rolewrap .rolegrid-compact .rolecard:not(.is-open){padding:.58rem 2.65rem .58rem .68rem}
#rolewrap .rolegrid-compact .rolecard:not(.is-open) h3{font-size:clamp(.86rem,.78rem + .25vw,1rem);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#rolewrap .rolegrid-compact .rolecard:not(.is-open) .rolecard-primary{margin-top:.38rem;padding:.36rem .5rem;min-height:0}
#rolewrap .rolegrid-compact .rolecard:not(.is-open) .rolecard-extra>summary{top:.58rem;right:.58rem;width:25px;height:25px}
.tiertitle{
  margin-top:1.35rem;padding:.45rem .7rem;border:0;border-radius:8px;
  background:var(--layer);color:var(--accent);font:700 .72rem/1.4 var(--mono)
}

.server-map{
  margin:.9rem 0 .7rem;padding:.75rem;
  border:1px solid var(--card-border);border-radius:12px;
  background:
    linear-gradient(90deg,color-mix(in srgb,var(--accent) 4%,transparent),transparent 45%),
    var(--layer)
}
.server-map-head{
  display:flex;align-items:center;justify-content:space-between;gap:.7rem;
  margin-bottom:.65rem;color:var(--ink);font-size:.75rem;font-weight:700
}
.server-map-updated{color:var(--muted);font:400 .64rem/1.4 var(--mono)}
.server-map-grid{
  display:grid;grid-template-columns:minmax(170px,1fr) 36px minmax(190px,1.05fr) 36px minmax(170px,1fr);
  align-items:stretch
}
.server-map-zone,.server-map-host{
  min-width:0;border:1px solid var(--card-border);border-radius:10px;background:var(--surface)
}
.server-map-zone{padding:.65rem}
.server-map-zone-title{
  margin-bottom:.45rem;color:var(--accent);font:700 .61rem/1.35 var(--mono);letter-spacing:.12em
}
.server-map-zone-title span{float:right;color:var(--muted);font-weight:400;letter-spacing:0}
.server-net-line{display:grid;grid-template-columns:9px 1fr;gap:.42rem;align-items:start;margin:.38rem 0}
.server-net-line b{display:block;font-size:.71rem;line-height:1.35}
.server-net-line small,.power-zone small{
  display:block;color:var(--muted);font-size:.62rem;line-height:1.5;overflow-wrap:anywhere
}
.server-state-dot{display:inline-block;width:8px;height:8px;margin-top:.18rem;border-radius:50%;background:var(--stop)}
.server-state-dot.on{background:var(--run);box-shadow:0 0 0 3px color-mix(in srgb,var(--run) 15%,transparent)}
.server-state-dot.off{background:var(--stop)}
.server-state-dot.standby{background:var(--stby)}
.server-map-empty{color:var(--muted);font-size:.68rem}
.server-map-connector{position:relative;align-self:center;height:2px;background:var(--card-border)}
.server-map-connector::after{
  content:"";position:absolute;right:-1px;top:-3px;width:7px;height:7px;
  border-top:2px solid var(--accent);border-right:2px solid var(--accent);transform:rotate(45deg)
}
.server-map-connector span{
  position:absolute;left:50%;top:50%;width:7px;height:7px;border-radius:50%;
  background:var(--accent);transform:translate(-50%,-50%);box-shadow:0 0 0 3px var(--accent-soft)
}
.server-map-connector.power{background:var(--stby-border)}
.server-map-connector.power::after{border-color:var(--stby)}
.server-map-connector.power span{background:var(--stby);box-shadow:0 0 0 3px var(--stby-bg)}
.server-map-host{
  position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:.28rem;padding:.75rem;text-align:center;border-width:2px
}
.server-map-host.on{border-color:color-mix(in srgb,var(--run) 55%,var(--card-border))}
.server-map-host.off{border-color:var(--card-border);opacity:.78}
.server-map-host.standby{border-color:var(--stby-border)}
.server-host-unit{
  position:absolute;left:.45rem;top:.4rem;color:var(--muted);font:700 .6rem/1 var(--mono)
}
.server-host-icon{
  display:grid;gap:3px;width:52px;padding:6px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer)
}
.server-host-icon span{height:4px;border-radius:99px;background:var(--accent)}
.server-map-host.off .server-host-icon span{background:var(--stop)}
.server-map-host>b{font-size:.82rem}
.server-map-host>small{max-width:28em;color:var(--muted);font-size:.62rem;line-height:1.45}
.server-host-status{
  border-radius:99px;padding:.08rem .48rem;background:var(--run-bg);color:var(--run);font-size:.62rem;font-weight:700
}
.server-map-host.off .server-host-status{background:var(--stop-bg);color:var(--stop)}
.server-map-host.standby .server-host-status{background:var(--stby-bg);color:var(--stby)}
.server-power-status{display:flex;align-items:center;gap:.4rem;margin:.35rem 0;font-size:.7rem}
.server-power-status .server-state-dot{margin-top:0}
.server-power-inputs{display:flex;gap:.35rem;flex-wrap:wrap;margin:.5rem 0}
.power-socket{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:50px;padding:.22rem .35rem;border:1px solid var(--stby-border);
  border-radius:6px;background:var(--stby-bg);color:var(--stby);font:700 .62rem/1.3 var(--mono)
}
.power-socket.off,.power-socket.unknown{border-color:var(--card-border);background:var(--stop-bg);color:var(--stop)}
.server-map-guests{
  position:relative;margin:.65rem 0 0;padding:.6rem .65rem .65rem;
  border:1px solid var(--card-border);border-radius:10px;background:var(--surface)
}
.server-map-guests::before{
  content:"";position:absolute;top:-.66rem;left:50%;width:1px;height:.66rem;background:var(--card-border)
}
.server-guest-flow{display:flex;gap:.35rem;flex-wrap:wrap}
.server-guest-node{
  display:inline-flex;align-items:center;gap:.3rem;min-height:25px;
  padding:.2rem .45rem;border:1px solid var(--card-border);border-radius:6px;
  background:var(--layer);font-size:.64rem
}
.server-guest-node i{width:6px;height:6px;border-radius:50%;background:var(--stop)}
.server-guest-node.on i{background:var(--run);box-shadow:0 0 0 2px color-mix(in srgb,var(--run) 13%,transparent)}
.server-guest-node.off{color:var(--muted);border-style:dashed}
.server-map-note{margin-top:.5rem;color:var(--muted);font-size:.61rem;line-height:1.55}
.panel .server-map{margin:.7rem 0}
.panel .server-map-head{align-items:flex-start;flex-direction:column;gap:.1rem}
.panel .server-map-grid{grid-template-columns:1fr;gap:.45rem}
.panel .server-map-connector{width:2px;height:18px;justify-self:center}
.panel .server-map-connector::after{
  right:-3px;top:auto;bottom:-1px;transform:rotate(135deg)
}
.panel .server-map-connector span{top:50%}
.panel .server-map-guests{padding:.55rem}

.flow{max-width:900px}
.fstep{border-radius:var(--radius-md);padding:.8rem .95rem}
.farrow{color:var(--accent);filter:drop-shadow(0 0 6px color-mix(in srgb,var(--accent) 35%,transparent))}
details.fault{overflow:hidden;border-radius:var(--radius-md)}
details.fault[open]{border-color:color-mix(in srgb,var(--accent) 42%,var(--card-border));box-shadow:var(--shadow-md)}
details.fault summary{min-height:48px}
details.fault[open] summary{background:var(--layer);border-bottom:1px solid var(--line)}
.fbox{border:1px solid transparent}
.fbox.sym{border-color:color-mix(in srgb,var(--danger) 22%,transparent)}
.fbox.imp{border-color:color-mix(in srgb,var(--warn) 22%,transparent)}
.fbox.chk{border-color:color-mix(in srgb,var(--accent) 22%,transparent)}
.prep{border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}
.pstep{border-radius:10px;background:var(--layer)}
pre.cmd{border:1px solid #28445e;background:#071522;color:#d9ebf8;box-shadow:inset 0 1px rgba(255,255,255,.04)}

.glogrid{grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:.8rem}
.glocard{border-radius:var(--radius-md);padding:.9rem 1rem;transition:border-color .18s ease,transform .18s ease}
.glocard:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--accent) 38%,var(--card-border))}
.glossary-open{overflow:hidden}
.glossary-overlay{
  position:fixed;inset:0;z-index:190;visibility:hidden;pointer-events:none
}
.glossary-overlay::before{
  content:"";position:absolute;inset:0;background:rgba(2,9,16,.62);
  opacity:0;transition:opacity .2s ease;backdrop-filter:blur(5px)
}
.glossary-overlay.open{visibility:visible;pointer-events:auto}
.glossary-overlay.open::before{opacity:1}
.glossary-drawer{
  position:absolute;inset:0 0 0 auto;width:min(560px,100%);overflow:auto;
  padding:1.1rem 1.1rem 2rem;border-left:1px solid var(--card-border);
  background:var(--bg);box-shadow:var(--shadow-lg);
  transform:translateX(100%);transition:transform .24s ease
}
.glossary-overlay.open .glossary-drawer{transform:none}
.glossary-drawer-head{
  position:sticky;top:-1.1rem;z-index:2;
  display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;
  margin:-.1rem -0.1rem .7rem;padding:1rem .1rem .75rem;
  border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 94%,transparent);
  backdrop-filter:blur(14px)
}
.glossary-drawer h2{margin:0}
.glossary-kicker{display:block;margin-bottom:.22rem;color:var(--accent);font:700 .61rem/1 var(--mono);letter-spacing:.14em}
.glossary-close{
  flex:0 0 auto;width:36px;height:36px;border:1px solid var(--card-border);
  border-radius:9px;background:var(--surface);color:var(--muted);font-size:1.25rem;cursor:pointer
}
.glossary-close:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}
.glossary-drawer .glogrid{grid-template-columns:1fr}
.glossary-drawer .glocard{background:var(--surface)}

.metricgrid{
  grid-template-columns:repeat(auto-fit,minmax(clamp(125px,13vw,160px),1fr));
  gap:clamp(.45rem,.8vw,.68rem)
}
.metric{
  position:relative;overflow:hidden;border-radius:var(--radius-md);
  padding:clamp(.6rem,1vw,.82rem) clamp(.65rem,1.1vw,.92rem)
}
.metric::after{
  content:"";position:absolute;right:-1rem;bottom:-1.35rem;width:4rem;height:4rem;border-radius:50%;
  background:color-mix(in srgb,var(--accent) 9%,transparent)
}
.metric b{font:700 clamp(1.15rem,calc(.95rem + .8vw),1.5rem)/1.25 var(--mono)}
.metric span{font-size:clamp(.66rem,calc(.61rem + .16vw),.72rem)}
.inventory-tools{
  padding:.6rem;border:1px solid var(--card-border);border-radius:var(--radius-md);
  background:var(--surface);box-shadow:var(--shadow-sm)
}
.inventory-tools input,.inventory-tools select{
  min-height:38px;border-radius:8px;background:var(--layer)
}
.inventory-tools input:focus,.inventory-tools select:focus{background:var(--surface)}
.inventory-heading h3{font-size:.9rem;letter-spacing:.035em}
.table-add-action,.table-edit-action{background:var(--layer)}
.tablewrap{border-radius:var(--radius-md);max-height:62vh}
.inventory-table{font-size:clamp(.68rem,calc(.63rem + .17vw),.75rem)}
.inventory-table th{
  background:var(--layer);color:var(--ink);font-size:.68rem;letter-spacing:.04em;text-transform:none
}
.inventory-table th,.inventory-table td{padding:.5rem .58rem}
.inventory-table tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--layer) 44%,transparent)}
.inventory-table tbody tr.inventory-network td{background:color-mix(in srgb,var(--accent) 11%,var(--surface))}
.inventory-table tbody tr.inventory-server td{background:color-mix(in srgb,#8b5cf6 12%,var(--surface))}
.inventory-table tbody tr.inventory-network td:first-child{box-shadow:inset 3px 0 var(--accent)}
.inventory-table tbody tr.inventory-server td:first-child{box-shadow:inset 3px 0 #8b5cf6}
.inventory-table tbody tr:hover td{background:var(--accent-soft)}
.inventory-type-chip{display:inline-flex;align-items:center;padding:.12rem .46rem;border-radius:999px;font-size:.66rem;font-weight:800;white-space:nowrap}
.inventory-type-chip.network{background:color-mix(in srgb,var(--accent) 18%,var(--surface));color:var(--accent)}
.inventory-type-chip.server{background:color-mix(in srgb,#8b5cf6 18%,var(--surface));color:color-mix(in srgb,#8b5cf6 82%,var(--ink))}
.source-chip{background:var(--layer)}
.sync-chip{display:inline-flex;align-items:center;min-height:1.35rem;padding:.12rem .42rem;border:1px solid var(--card-border);border-radius:999px;background:var(--layer);color:var(--muted);font-size:.64rem;font-weight:700;white-space:nowrap}
.sync-chip.current{border-color:color-mix(in srgb,var(--run) 40%,var(--card-border));background:color-mix(in srgb,var(--run-bg) 75%,var(--surface));color:var(--run)}
.sync-chip.manual{border-color:color-mix(in srgb,var(--accent) 42%,var(--card-border));background:var(--accent-soft);color:var(--accent)}
.sync-chip.excluded{border-color:color-mix(in srgb,var(--danger) 42%,var(--card-border));background:var(--danger-bg);color:var(--danger)}

.import-overlay,.edit-overlay{backdrop-filter:blur(8px)}
.import-modal,.edit-modal{
  border-color:var(--card-border);border-radius:var(--radius-lg);
  background:var(--surface-raised);box-shadow:var(--shadow-lg)
}
.import-modal .drop{background:var(--layer)}
.edit-field input,.edit-field select,.edit-field textarea{min-height:40px;background:var(--layer)}
.edit-field textarea{min-height:5.4rem}
.edit-modal-actions{position:sticky;bottom:-1rem;background:var(--surface-raised)}

footer{margin-top:2.5rem;padding:1rem 0;border-color:var(--card-border);text-align:center}

@media (max-width:1040px){
  nav.tabs button{flex:1 1 calc(33.333% - .4rem)}
  .topo-grid{grid-template-columns:1fr}
  .panel{position:relative;top:auto}
}
@media (max-width:760px){
  .wrap{padding:.7rem clamp(.5rem,2.2vw,.7rem) 3rem}
  header{padding:clamp(.78rem,2.5vw,.98rem)}
  header::after{display:none}
  header h1{max-width:100%;font-size:clamp(1.08rem,calc(.87rem + 1.15vw),1.32rem)}
  .header-corner-actions{position:relative;top:auto;right:auto;float:right;margin:-.05rem 0 .35rem .5rem}
  header .meta{font-size:clamp(.65rem,2.15vw,.72rem)}
  nav.tabs{top:.35rem;border-radius:11px}
  nav.tabs button{
    flex:1 1 calc(50% - .35rem);
    font-size:clamp(.68rem,2.35vw,.76rem);
    padding:clamp(.3rem,1.2vw,.38rem) clamp(.3rem,1.5vw,.5rem)
  }
  .controls .hint{width:100%;margin-left:0}
  .rolegrid,.glogrid{grid-template-columns:1fr}
  .racklayout{grid-template-columns:1fr}
  .metricgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .inventory-heading{align-items:flex-end}
  .server-map-grid{grid-template-columns:1fr;gap:.45rem}
  .server-map-connector{width:2px;height:18px;justify-self:center}
  .server-map-connector::after{right:-3px;top:auto;bottom:-1px;transform:rotate(135deg)}
}
@media (max-width:480px){
  .data-tools{align-items:stretch}
  .data-tools button{flex:1 1 calc(33.333% - .3rem)}
  nav.tabs button{flex-basis:calc(50% - .3rem)}
  .metricgrid{grid-template-columns:1fr 1fr}
}
@media (max-width:340px){
  nav.tabs button{flex-basis:100%}
  .data-tools button{flex-basis:100%}
  .metricgrid{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}
@media print{
  body{background:#fff}
  header,nav.tabs,.data-tools,.controls{position:static;box-shadow:none}
  .wrap{max-width:none;padding:0}
  section.tab{display:block!important;break-before:page}
}


/* IDC_トポロジー可視化ポータル_auth.css */
html.portal-auth-pending,
html.portal-auth-locked{
  background:#08111d;
}
html.portal-auth-pending body,
html.portal-auth-locked body{
  overflow:hidden;
}
html.portal-auth-pending body > :not(#idcPortalGate),
html.portal-auth-locked body > :not(#idcPortalGate){
  display:none !important;
}
.portal-auth-gate{
  display:none;
  position:fixed;
  inset:0;
  z-index:10000;
  align-items:center;
  justify-content:center;
  min-height:100vh;
  padding:1.25rem;
  overflow:auto;
  color:#e9f1f8;
  background:
    radial-gradient(circle at 20% 15%,rgba(67,145,207,.18),transparent 34rem),
    radial-gradient(circle at 85% 85%,rgba(36,112,152,.14),transparent 30rem),
    #08111d;
  font-family:"Yu Gothic UI","Hiragino Sans","Noto Sans JP","Meiryo",sans-serif;
}
html.portal-auth-pending .portal-auth-gate,
html.portal-auth-locked .portal-auth-gate{
  display:flex;
}
.portal-auth-card{
  width:min(100%,410px);
  padding:clamp(1.3rem,4vw,2rem);
  border:1px solid rgba(141,181,214,.25);
  border-radius:18px;
  background:rgba(16,29,44,.96);
  box-shadow:0 24px 70px rgba(0,0,0,.42);
}
.portal-auth-brand{
  display:flex;
  align-items:center;
  gap:.8rem;
  margin-bottom:1.3rem;
}
.portal-auth-mark{
  display:grid;
  place-items:center;
  width:42px;
  height:42px;
  border-radius:12px;
  color:#07111c;
  background:linear-gradient(145deg,#8ec5ef,#4d94c7);
  font-size:1.1rem;
  font-weight:800;
  box-shadow:0 8px 24px rgba(78,151,203,.28);
}
.portal-auth-brand small{
  display:block;
  color:#8fa8bb;
  font-size:.72rem;
  letter-spacing:.12em;
}
.portal-auth-brand strong{
  display:block;
  margin-top:.08rem;
  font-size:1rem;
  letter-spacing:.03em;
}
.portal-auth-card h1{
  margin:0 0 .35rem;
  font-size:clamp(1.2rem,calc(.95rem + 1.2vw),1.5rem);
  line-height:1.35;
}
.portal-auth-card > p{
  margin:0 0 1.35rem;
  color:#9fb1c1;
  font-size:.84rem;
  line-height:1.65;
}
.portal-auth-field{
  display:block;
  margin:.9rem 0;
  color:#c6d4df;
  font-size:.78rem;
  font-weight:700;
}
.portal-auth-field input{
  display:block;
  width:100%;
  margin-top:.38rem;
  padding:.78rem .85rem;
  border:1px solid #344b60;
  border-radius:9px;
  outline:none;
  color:#f4f8fb;
  background:#0b1724;
  font:inherit;
  font-size:.92rem;
  transition:border-color .15s,box-shadow .15s;
}
.portal-auth-field input:focus{
  border-color:#72b2df;
  box-shadow:0 0 0 3px rgba(114,178,223,.16);
}
.portal-auth-submit{
  width:100%;
  margin-top:.7rem;
  padding:.78rem 1rem;
  border:0;
  border-radius:9px;
  cursor:pointer;
  color:#07111c;
  background:linear-gradient(135deg,#91c9ef,#5a9dca);
  font:inherit;
  font-weight:800;
}
.portal-auth-submit:hover{filter:brightness(1.06)}
.portal-auth-submit:disabled{cursor:wait;opacity:.68}
.portal-auth-error{
  min-height:1.35rem;
  margin:.75rem 0 0;
  color:#ffaaa3;
  font-size:.77rem;
  text-align:center;
}
.portal-auth-foot{
  margin-top:1.25rem;
  padding-top:1rem;
  border-top:1px solid rgba(141,181,214,.16);
  color:#70879a;
  font-size:.68rem;
  text-align:center;
}
.portal-auth-logout{
  position:fixed;
  right:1rem;
  bottom:1rem;
  z-index:90;
  padding:.42rem .7rem;
  border:1px solid var(--card-border,#c9d4e0);
  border-radius:8px;
  color:var(--muted,#5b6b7d);
  background:var(--surface,#fff);
  box-shadow:0 5px 16px rgba(0,0,0,.1);
  cursor:pointer;
  font:inherit;
  font-size:.7rem;
}
.portal-auth-logout:hover{
  color:var(--accent,#35618f);
  border-color:var(--accent,#35618f);
}
@media (max-width:480px){
  .portal-auth-card{padding:1.45rem}
}
@media (prefers-reduced-motion:no-preference){
  .portal-auth-card{animation:portal-auth-in .24s ease-out}
  @keyframes portal-auth-in{
    from{opacity:0;transform:translateY(8px)}
    to{opacity:1;transform:translateY(0)}
  }
}


/* IDC_トポロジー可視化ポータル_admin.css */
/* NetBox-inspired administration shell */
:root{
  color-scheme:dark;
  --bg:#11161b;
  --surface:#1b2127;
  --surface-raised:#20272e;
  --ink:#e9eef3;
  --text:var(--ink);
  --muted:#98a5b2;
  --accent:#3c9ff0;
  --accent-ink:#ffffff;
  --accent-soft:#173653;
  --layer:#252c33;
  --layer-border:#39434d;
  --card-border:#343d46;
  --line:#303840;
  --run:#5bd5a6;
  --run-bg:#15382e;
  --stop:#9aa6b2;
  --stop-bg:#293039;
  --stby:#f0b65b;
  --stby-bg:#443316;
  --stby-border:#80602a;
  --danger:#ff8f88;
  --danger-bg:#452325;
  --warn:#f5bd68;
  --warn-bg:#443318;
  --sim:#b7a0ff;
  --edge-main:#53bce8;
  --edge-mgmt:#7d95aa;
  --edge-inter:#e7a54a;
  --sidebar-width:248px;
  --topbar-height:50px;
  --shadow-sm:0 1px 2px rgba(0,0,0,.24);
  --shadow-md:0 12px 30px rgba(0,0,0,.22);
  --shadow-lg:0 28px 70px rgba(0,0,0,.48);
}

/* 2026-08-10: multi-rack ledger view */
.rack-page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:6px}
.rack-page-kicker{display:block;margin-bottom:3px;color:var(--accent);font:700 9px/1.2 var(--mono);letter-spacing:.16em}
.rack-page-heading h2{margin:0}
.rack-page-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px}
.rack-connectivity-button{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:7px 12px;border:1px solid color-mix(in srgb,var(--accent) 55%,var(--card-border));border-radius:8px;background:color-mix(in srgb,var(--accent) 12%,var(--surface));color:var(--accent);cursor:pointer;box-shadow:var(--shadow-sm)}
.rack-connectivity-button span{font:800 17px/1 var(--mono)}
.rack-connectivity-button b{font-size:12px;white-space:nowrap}
.rack-connectivity-button:hover,.rack-connectivity-button[aria-expanded="true"]{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}
.rack-selector{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
.rack-selector button{display:flex;align-items:center;gap:8px;min-width:94px;padding:7px 9px;border:1px solid var(--card-border);border-radius:8px;background:var(--surface);color:var(--muted);cursor:pointer}
.rack-selector button b{color:var(--text);font:750 12px/1 var(--mono)}
.rack-selector button span{font:600 9px/1 var(--mono)}
.rack-selector button:hover,.rack-selector button.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--surface));color:var(--accent)}
.rack-summary{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 10px}
.rack-summary span{padding:5px 9px;border:1px solid var(--card-border);border-radius:999px;background:var(--surface);color:var(--muted);font-size:10px}
.rack-summary b{margin-right:3px;color:var(--text);font:750 12px/1 var(--mono)}
#tab-rack .racklayout{grid-template-columns:minmax(220px,270px) minmax(510px,1fr) minmax(245px,300px);align-items:start}
.rack .occ.dev{border-left:3px solid var(--accent);cursor:pointer}
.rack .occ.dev.rack-server{border-left-color:#7657d6}.rack .occ.dev.rack-switch,.rack .occ.dev.rack-chassis{border-left-color:#168bc1}.rack .occ.dev.rack-firewall{border-left-color:#dc664f}.rack .occ.dev.rack-storage{border-left-color:#3aa77f}
.rack .occ.dev.selected,.rack-face-device.selected{outline:2px solid var(--accent);outline-offset:-2px;background:color-mix(in srgb,var(--accent) 14%,var(--surface))}
.rack-list-model{float:right;max-width:44%;overflow:hidden;color:var(--muted);font:500 9px/1.3 var(--mono);text-overflow:ellipsis;white-space:nowrap}
.cat.storage{border-color:#4cbf95;background:color-mix(in srgb,#3aa77f 14%,var(--surface));color:#278568}
.rack-legend{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px;padding-top:10px;border-top:1px solid var(--card-border)}
.rack-source-note{margin:10px 0 0;color:var(--muted);font:500 9px/1.5 var(--mono)}
.rack-device-detail>p{margin:0;color:var(--muted);font-size:11px;line-height:1.6}
.rack-detail-title{display:flex;align-items:center;gap:8px;margin-bottom:9px}.rack-detail-title>div{display:grid;min-width:0}.rack-detail-title b{overflow:hidden;color:var(--text);font-size:13px;text-overflow:ellipsis}.rack-detail-title small{color:var(--muted);font:600 9px/1.4 var(--mono)}
.rack-device-detail dl{display:grid;grid-template-columns:60px minmax(0,1fr);gap:5px 9px;margin:10px 0 0;font-size:10px;line-height:1.5}.rack-device-detail dt{color:var(--muted);font-weight:700}.rack-device-detail dd{min-width:0;margin:0;color:var(--text);overflow-wrap:anywhere}

.rack-face-hardware{background-image:linear-gradient(90deg,rgba(255,255,255,.04),transparent 20%,transparent 80%,rgba(0,0,0,.25)),url("./assets/rack/brushed-metal.png");background-size:auto,cover}
.rack-face-hardware.storage{border-color:#3d9378}.rack-face-hardware.chassis{border-color:#397ba3}.rack-face-hardware.rear{background-image:linear-gradient(rgba(17,23,28,.48),rgba(17,23,28,.48)),url("./assets/rack/brushed-metal.png")}
.rack-face-identity{display:grid;min-width:90px;margin-right:auto}.rack-face-identity strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rack-face-identity .rack-face-model{overflow:hidden;max-width:210px;text-overflow:ellipsis;white-space:nowrap}
.rack-switch-jacks{display:grid;grid-template-columns:repeat(12,5px);gap:2px;margin-left:8px}.rack-jack{width:5px;height:5px;border:1px solid #82a2b3;border-radius:1px;background:#091016}.rack-jack.linked{border-color:#5de2b0;background:#218c69}
.rack-drive-bays{display:flex;gap:3px;margin-left:8px}.rack-drive-bay{width:14px;height:10px;border:1px solid #6e7d88;border-radius:2px;background:linear-gradient(90deg,#1b2328,#49545d)}.rack-drive-bay.warn{border-color:#e7a03c}
.rack-chassis-slots{display:flex;gap:2px;margin-left:8px}.rack-module-slot{width:8px;height:15px;border:1px solid #6ca7c7;background:#18384b}
.rack-rear-power.unknown{border-color:#65717a;background:#39434b;color:#d5dde2}

.connection-map-card{margin:10px 0 16px;padding:14px;border:1px solid var(--card-border);border-radius:12px;background:var(--surface);box-shadow:var(--shadow-sm)}
.connection-back-button{display:inline-flex;align-items:center;margin:0 0 9px;padding:5px 9px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer);color:var(--accent);font-size:9px;font-weight:700;cursor:pointer}.connection-back-button:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface))}
.connection-map-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:9px}.connection-map-head span{display:block;color:var(--accent);font:700 8px/1.2 var(--mono);letter-spacing:.17em}.connection-map-head h3{margin:3px 0 0;color:var(--text);font-size:14px}.connection-map-head>b{padding:5px 8px;border:1px solid var(--card-border);border-radius:999px;color:var(--muted);font:600 9px/1 var(--mono)}
.connection-vlan-legend{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.connection-vlan-legend span{display:flex;align-items:center;gap:5px;color:var(--muted);font:600 9px/1 var(--mono)}.connection-vlan-legend i{width:8px;height:8px;border-radius:50%;background:var(--vlan-color,#7e8b94)}
.connection-map{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:9px}
.connection-device{overflow:hidden;border:1px solid var(--card-border);border-radius:9px;background:var(--layer)}.connection-device>header{display:flex;align-items:center;gap:8px;padding:8px 9px;border-bottom:1px solid var(--card-border);background:color-mix(in srgb,var(--accent) 7%,var(--surface))}.connection-device-led{width:8px;height:8px;border-radius:50%;background:#39c38f;box-shadow:0 0 0 3px color-mix(in srgb,#39c38f 16%,transparent)}.connection-device header div{display:grid}.connection-device header b{color:var(--text);font-size:11px}.connection-device header small{color:var(--muted);font:500 8px/1.4 var(--mono)}
.connection-lines{display:grid;gap:1px;padding:4px}.connection-line{display:grid;grid-template-columns:62px minmax(68px,.55fr) minmax(110px,1fr);align-items:center;gap:6px;width:100%;padding:5px 6px;border:0;border-radius:5px;background:transparent;color:var(--text);text-align:left;cursor:pointer}.connection-line:hover{background:color-mix(in srgb,var(--vlan-color,#7e8b94) 12%,var(--surface))}.connection-port{font:650 9px/1.2 var(--mono)}.connection-path{display:flex;align-items:center;gap:5px;color:var(--vlan-color,#7e8b94);font:650 8px/1.2 var(--mono)}.connection-path i{flex:1;height:2px;background:var(--vlan-color,#7e8b94)}.connection-target{display:grid;min-width:0}.connection-target strong,.connection-target small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.connection-target strong{font-size:9px}.connection-target small{color:var(--muted);font:500 7px/1.3 var(--mono)}
.vlan-80{--vlan-color:#4e9fe8}.vlan-500{--vlan-color:#8a6de3}.vlan-900{--vlan-color:#dd8845}.vlan-901{--vlan-color:#3bad83}.vlan-998{--vlan-color:#d75d6c}.vlan-none{--vlan-color:#7e8b94}
@media(max-width:1420px){#tab-rack .racklayout{grid-template-columns:minmax(220px,280px) minmax(480px,1fr)}#tab-rack .rackside{grid-column:1/-1}}
@media(max-width:900px){.rack-page-heading{align-items:flex-start;flex-direction:column}.rack-page-actions,.rack-selector{justify-content:flex-start}#tab-rack .racklayout{grid-template-columns:1fr}.rack-face-card,.rackside{grid-column:auto!important}.connection-map{grid-template-columns:1fr}}
html{background:var(--bg)}
body{
  background:var(--bg);
  transition:padding-left .2s ease;
}
.wrap{
  width:100%;
  max-width:none;
  margin:0;
  padding:14px 18px 48px calc(var(--sidebar-width) + 18px);
  transition:padding-left .2s ease;
}

nav.tabs{
  position:fixed;
  z-index:120;
  inset:0 auto 0 0;
  width:var(--sidebar-width);
  height:100vh;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:4px;
  margin:0;
  padding:0 10px 16px;
  border:0;
  border-right:1px solid #303841;
  border-radius:0;
  background:#171c21;
  box-shadow:4px 0 16px rgba(0,0,0,.14);
  backdrop-filter:none;
  overflow-x:hidden;
  overflow-y:auto;
  transition:width .2s ease,transform .2s ease;
}
.portal-nav-brand{
  min-height:60px;
  display:flex;
  align-items:center;
  gap:10px;
  margin:0 -10px 8px;
  padding:0 10px;
  border-bottom:1px solid #303841;
  white-space:nowrap;
}
.portal-nav-mark{
  flex:0 0 34px;
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  border:1px solid #2f9ce8;
  border-radius:8px;
  color:#63b8f3;
  background:#12293a;
  font:800 12px/1 Consolas,monospace;
  box-shadow:0 0 20px rgba(60,159,240,.12);
}
.portal-nav-title{min-width:0;display:flex;flex:1;flex-direction:column}
.portal-nav-title strong{color:#ecf4fa;font-size:14px;letter-spacing:.03em}
.portal-nav-title small{margin-top:2px;color:#728291;font:600 9px/1.2 Consolas,monospace;letter-spacing:.12em}
.portal-nav-toggle{
  flex:0 0 30px;
  width:30px;height:30px;padding:0;
  border:1px solid #39434d;border-radius:6px;
  background:#20272e;color:#aab7c2;cursor:pointer;
}
.portal-nav-toggle:hover{color:#fff;border-color:#4c9bd8;background:#263646}
.portal-nav-group{
  margin:7px 8px 4px;
  color:#687786;
  font:700 9px/1.4 Consolas,monospace;
  letter-spacing:.14em;
  white-space:nowrap;
}
nav.tabs button[data-tab]{
  flex:0 0 auto;
  width:100%;
  min-height:40px;
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:10px;
  padding:7px 10px;
  border:1px solid transparent;
  border-radius:5px;
  background:transparent;
  color:#aab5c0;
  font-size:12px;
  font-weight:600;
  text-align:left;
  white-space:nowrap;
  box-shadow:none;
}
nav.tabs button[data-tab]::before{
  flex:0 0 21px;
  width:21px;
  color:#7d8c9a;
  font:700 14px/1 Consolas,monospace;
  text-align:center;
}
nav.tabs button[data-tab="dashboard"]::before{content:"◫"}
nav.tabs button[data-tab="topo"]::before{content:"⌘"}
nav.tabs button[data-tab="rack"]::before{content:"▥"}
nav.tabs button[data-tab="roles"]::before{content:"▣"}
nav.tabs button[data-tab="fault"]::before{content:"⚠"}
nav.tabs button[data-tab="inventory"]::before{content:"▤"}
nav.tabs button[data-tab="work"]::before{content:"▧"}
nav.tabs button[data-tab="guide"]::before{content:"?"}
nav.tabs button[data-tab]:hover{color:#edf5fb;border-color:#313c46;background:#20272e}
nav.tabs button[data-tab].active{
  color:#fff;
  border-color:#315c80;
  background:#294f72;
  box-shadow:inset 3px 0 #58b3f4;
}
nav.tabs button[data-tab].active::before{color:#7bc5fa}
.portal-nav-section{display:grid;gap:2px}
.portal-nav-section-toggle{
  width:100%;min-height:34px;display:flex;align-items:center;justify-content:space-between;
  padding:6px 10px;border:0;border-radius:5px;background:transparent;color:#798896;
  font-size:10px;font-weight:800;letter-spacing:.08em;text-align:left;cursor:pointer
}
.portal-nav-section-toggle:hover{color:#dce8f2;background:#1e252c}
.portal-nav-section-toggle i{font-style:normal;font-size:13px;transition:transform .18s ease}
.portal-nav-section:not(.open) .portal-nav-section-toggle i{transform:rotate(-90deg)}
.portal-nav-children{display:grid;gap:2px;padding-left:10px;border-left:1px solid #303c47;margin-left:15px}
.portal-nav-section:not(.open) .portal-nav-children{display:none}
.portal-nav-children button[data-tab]{min-height:36px;padding-left:8px}
.portal-nav-foot{
  margin-top:auto;
  padding:12px 9px 0;
  border-top:1px solid #2c343c;
  color:#63717e;
  font:500 9px/1.5 Consolas,monospace;
  white-space:nowrap;
}
.portal-nav-quick{
  display:grid;
  gap:5px;
  margin:10px 0 8px;
  padding:10px 7px;
  border-top:1px solid #2d3740;
  border-bottom:1px solid #2d3740;
  background:#151a1f;
}
.portal-nav-quick-title{
  margin:0 2px 3px;
  color:#687786;
  font:700 9px/1.4 Consolas,monospace;
  letter-spacing:.12em;
  white-space:nowrap;
}
.portal-nav-quick>button,
.portal-nav-quick>.portal-auth-logout,
.portal-nav-quick .header-corner-actions button{
  width:100%;
  min-height:34px;
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:7px;
  padding:0 9px;
  border:1px solid #36414b;
  border-radius:5px;
  background:#20272e;
  color:#b9c5cf;
  font-size:11px;
  font-weight:600;
  white-space:nowrap;
  cursor:pointer;
}
.portal-nav-quick>button:hover,
.portal-nav-quick>.portal-auth-logout:hover,
.portal-nav-quick .header-corner-actions button:hover{
  color:#fff;
  border-color:#438fc8;
  background:#263746;
}
.portal-nav-quick .header-corner-actions{
  display:grid;
  gap:5px;
  margin:0;
}
.portal-nav-quick .portal-language,
.portal-nav-quick .portal-theme{
  width:100%;
  min-height:34px;
  display:grid;
  grid-template-columns:1fr 1fr;
  padding:3px;
  border:1px solid #36414b;
  border-radius:5px;
  background:#20272e;
}
.portal-nav-quick .portal-language button,
.portal-nav-quick .portal-theme button{
  min-width:0;
  min-height:26px;
  padding:0 4px;
  border:0;
  border-radius:3px;
  background:transparent;
  color:#82909c;
  font-size:10px;
  font-weight:700;
  cursor:pointer;
}
.portal-nav-quick .portal-language button.active,
.portal-nav-quick .portal-theme button.active{background:#376f9c;color:#fff}
.portal-nav-quick>.portal-auth-logout{
  position:static;
  inset:auto;
  z-index:auto;
  box-shadow:none;
}

header{
  min-height:112px;
  padding:62px 16px 12px;
  border:1px solid var(--card-border);
  border-radius:5px;
  background:var(--surface);
  box-shadow:var(--shadow-sm);
}
.wrap > header{
  z-index:20;
  overflow:visible;
}
header::before{height:2px;background:#3c9ff0}
header::after{display:none}
header h1{
  max-width:none;
  margin:0 0 4px;
  font-size:clamp(1.08rem,1.8vw,1.55rem);
  letter-spacing:0;
}
header .meta{color:#8e9ba7}
.portal-topbar{
  position:absolute;
  z-index:4;
  inset:0 0 auto;
  height:50px;
  display:flex;
  align-items:center;
  gap:8px;
  padding:7px 10px;
  border-bottom:1px solid var(--line);
  background:#171d22;
}
.portal-menu-open{
  width:34px;height:34px;padding:0;
  border:1px solid #38434c;border-radius:5px;
  background:#222a31;color:#bec9d2;cursor:pointer;
}
.portal-search-shell{
  position:relative;
  flex:1 1 380px;
  max-width:720px;
}
.portal-search{
  position:relative;
  display:block;
  max-width:none;
}
.portal-search::before{
  content:"⌕";position:absolute;left:10px;top:50%;z-index:1;
  color:#788794;font-size:17px;transform:translateY(-52%);
}
.portal-search input{
  width:100%;height:34px;padding:0 36px 0 32px;
  border:1px solid #39434d;border-radius:4px;
  background:#232a31;color:#e5edf3;font-size:12px;
}
.portal-search input::placeholder{color:#758390}
.portal-search input:focus{border-color:#3d99dc;background:#202830}
.portal-search kbd{
  position:absolute;right:8px;top:50%;padding:2px 5px;
  border:1px solid #444f59;border-radius:3px;
  color:#73818e;background:#1a2025;font:9px/1.2 Consolas,monospace;
  transform:translateY(-50%);
}
.portal-search-results{
  position:absolute;z-index:120;top:calc(100% + 6px);left:0;right:0;
  max-height:min(65vh,560px);overflow:auto;padding:6px;
  border:1px solid #3a4854;border-radius:7px;
  background:#172028;box-shadow:0 16px 40px rgba(0,0,0,.38);
}
.portal-search-results[hidden]{display:none}
.portal-search-group{
  padding:8px 9px 4px;color:#6fb7e8;font-size:10px;font-weight:800;
  letter-spacing:.08em;text-transform:uppercase;
}
.portal-search-result{
  position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;
  width:100%;min-height:48px;padding:7px 92px 7px 10px;
  border:1px solid transparent;border-radius:5px;background:transparent;
  color:#e6eef4;text-align:left;cursor:pointer;
}
.portal-search-result:hover,.portal-search-result.active{
  border-color:#3e7faa;background:#213342;
}
.portal-search-result-title{
  grid-column:1;overflow:hidden;color:#eef6fb;font-size:12px;font-weight:700;
  text-overflow:ellipsis;white-space:nowrap;
}
.portal-search-result-meta{
  grid-column:1;overflow:hidden;margin-top:2px;color:#94a6b5;font-size:10px;
  text-overflow:ellipsis;white-space:nowrap;
}
.portal-search-result-page{
  position:absolute;right:10px;top:50%;max-width:78px;overflow:hidden;
  color:#69b9ef;font-size:10px;text-overflow:ellipsis;white-space:nowrap;
  transform:translateY(-50%);
}
.portal-search-empty{padding:22px 14px;color:#91a3b2;font-size:12px;text-align:center}
.portal-search-help{
  position:sticky;bottom:-6px;margin:6px -6px -6px;padding:7px 12px;
  border-top:1px solid #33414c;background:#141c23;color:#7f919f;font-size:9px;text-align:right;
}
.portal-search-hit{animation:portalSearchHit 2.1s ease!important}
@keyframes portalSearchHit{
  0%,100%{box-shadow:inherit}
  12%,65%{box-shadow:0 0 0 3px rgba(45,166,235,.72),0 0 24px rgba(45,166,235,.28)}
}
:root[data-theme="light"] .portal-topbar{
  border-bottom-color:#cbd7e2;
  background:#f8fbfd;
  box-shadow:0 2px 8px rgba(39,67,92,.10);
}
:root[data-theme="light"] .portal-menu-open{
  border-color:#c7d3de;
  background:#eef3f7;
  color:#40576b;
}
:root[data-theme="light"] .portal-menu-open:hover{
  border-color:#72a9d2;
  background:#e5f0f8;
  color:#1f608f;
}
:root[data-theme="light"] .portal-search::before{color:#668096}
:root[data-theme="light"] .portal-search input{
  border-color:#c7d3de;
  background:#ffffff;
  color:#23384b;
}
:root[data-theme="light"] .portal-search input::placeholder{color:#75889a}
:root[data-theme="light"] .portal-search input:focus{
  border-color:#4c9bd8;
  background:#ffffff;
  box-shadow:0 0 0 2px rgba(60,159,240,.12);
}
:root[data-theme="light"] .portal-search kbd{
  border-color:#c5d1dc;
  color:#61778a;
  background:#edf3f7;
}
:root[data-theme="light"] .portal-search-results{
  border-color:#b9cbd9;background:#fff;box-shadow:0 16px 38px rgba(40,70,94,.20);
}
:root[data-theme="light"] .portal-search-group{color:#267cad}
:root[data-theme="light"] .portal-search-result{color:#21384a}
:root[data-theme="light"] .portal-search-result:hover,
:root[data-theme="light"] .portal-search-result.active{border-color:#8fc2e2;background:#eaf5fc}
:root[data-theme="light"] .portal-search-result-title{color:#172f42}
:root[data-theme="light"] .portal-search-result-meta{color:#60788b}
:root[data-theme="light"] .portal-search-result-page{color:#2179ad}
:root[data-theme="light"] .portal-search-help{border-top-color:#d4e0e8;background:#f3f8fb;color:#667e90}
.header-corner-actions{
  position:static;
  display:flex;
  gap:5px;
  margin:0;
}
.header-corner-actions button{
  min-height:32px;padding:0 9px;
  border:1px solid #3a4650;border-radius:4px;
  background:#222a31;color:#b9c5cf;
  box-shadow:none;font-size:11px;
}
.data-tools{
  display:flex;
  flex-wrap:wrap;
  gap:5px;
  margin-top:9px;
  padding-top:9px;
}
.data-tools button,.import-actions button{min-height:30px;border-radius:4px}
header .import-note{font-size:10px}

section.tab{min-width:0;padding-top:15px}
.svgcard,.panel,.rack,.rolecard,.fstep,details.fault,.prep,.glocard,.metric,.tablewrap,.rackside{
  border-radius:5px;
  box-shadow:var(--shadow-sm);
}
.panel{border-radius:5px}
.panel::before{content:"DEVICE DETAILS"}
.metric,.rolecard{border-radius:5px}
.inventory-tools{border-radius:5px}
.inventory-result-count{
  min-width:92px;padding:7px 10px;border:1px solid var(--card-border);border-radius:5px;
  color:var(--accent);background:var(--accent-soft);font:700 11px/1.2 Consolas,monospace;text-align:center
}
.search-hit{
  padding:1px 2px;border-radius:2px;color:#101820;background:#ffd766;
  box-shadow:0 0 0 1px rgba(255,215,102,.28);font-weight:800
}
:root[data-theme="light"] .search-hit{color:#442f00;background:#ffe07a}

.racklayout{
  grid-template-columns:minmax(280px,390px) minmax(560px,1fr);
  gap:12px;
}
.rackside{grid-column:1/-1}
.rack-face-card{
  min-width:0;
  overflow:hidden;
  border:1px solid var(--card-border);
  border-radius:5px;
  background:var(--surface);
  box-shadow:var(--shadow-sm);
}
.rack-face-toolbar{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  padding:11px 12px;
  border-bottom:1px solid var(--line);
  background:#1a2026;
}
.rack-face-kicker{
  display:block;
  margin-bottom:3px;
  color:#55ace8;
  font:700 9px/1.2 Consolas,monospace;
  letter-spacing:.14em;
}
.rack-face-toolbar h3{margin:0;color:#edf4f9;font-size:14px}
.rack-face-toolbar p{margin:3px 0 0;color:#85939f;font-size:10px;line-height:1.5}
.rack-face-view{
  flex:0 0 auto;
  display:flex;
  padding:2px;
  border:1px solid #3a4550;
  border-radius:4px;
  background:#20272e;
}
.rack-face-view button{
  min-height:26px;
  padding:0 8px;
  border:0;
  border-radius:3px;
  background:transparent;
  color:#83919d;
  font-size:10px;
  font-weight:700;
  cursor:pointer;
}
.rack-face-view button.active{background:#376f9c;color:#fff}
.rack-face-scroll{overflow:auto;max-height:calc(100vh - 180px);min-height:520px}
.rack-face-table{
  min-width:620px;
  border-left:1px solid #49535c;
  border-top:1px solid #49535c;
  background:#171c21;
}
.rack-face-head,.rack-face-row{
  display:grid;
  grid-template-columns:38px minmax(280px,1fr) minmax(280px,1fr);
}
.rack-face-head{
  position:sticky;
  z-index:3;
  top:0;
  min-height:42px;
}
.rack-face-head b{
  display:flex;
  align-items:center;
  justify-content:center;
  border-right:1px solid #505a63;
  border-bottom:1px solid #505a63;
  color:#06131d;
  background:#ffc145;
  font:800 13px/1 Consolas,monospace;
  letter-spacing:.08em;
}
.rack-face-head b:first-child{background:#eef2f5;color:#17212a;font-size:10px}
.rack-face-head b:last-child{background:#83d0d8}
.rack-face-row{
  min-height:28px;
  transition:min-height .16s ease;
}
.rack-face-u{
  display:flex;
  align-items:center;
  justify-content:center;
  border-right:1px solid #4b555e;
  border-bottom:1px solid #4b555e;
  color:#c2ccd4;
  background:#20262c;
  font:700 10px/1 Consolas,monospace;
}
.rack-face-cell{
  position:relative;
  min-width:0;
  min-height:28px;
  display:flex;
  align-items:stretch;
  border-right:1px solid #4b555e;
  border-bottom:1px solid #4b555e;
  background:#242a30;
}
.rack-face-cell.empty{
  background:
    linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px) 0 0/24px 100%,
    #242a30;
}
.rack-face-cell.shelf{align-items:center;justify-content:center;color:#6e7b87;background:#1f252a;font:700 9px/1 Consolas,monospace}
.rack-face-device{cursor:pointer}
.rack-face-device:hover{z-index:2;outline:2px solid #4ca9e7;outline-offset:-2px}
.rack-face-device:focus-visible{z-index:2;outline:2px solid #7ac6fa;outline-offset:-2px}
.rack-face-hardware{
  position:relative;
  width:100%;
  min-width:0;
  display:flex;
  align-items:center;
  gap:6px;
  overflow:hidden;
  padding:3px 7px;
  border:2px solid #515b64;
  background:linear-gradient(#606a72,#394149);
  color:#f0f4f6;
  text-shadow:0 1px 1px rgba(0,0,0,.7);
}
.rack-face-hardware.switch{border-color:#447ca8;background:linear-gradient(#397aaa,#1f526f)}
.rack-face-hardware.firewall{border-color:#a7584f;background:linear-gradient(#80453e,#4a2927)}
.rack-face-hardware.offline{filter:saturate(.25);opacity:.65}
.rack-face-hardware.patch{border-color:#8b9298;background:linear-gradient(#656b70,#30363a)}
.rack-face-hardware.rear{background:linear-gradient(#4e565d,#2b3136)}
.rack-face-hardware strong{
  min-width:max-content;
  font-size:9px;
  letter-spacing:.025em;
}
.rack-face-model{
  min-width:0;
  overflow:hidden;
  color:#c5cfd6;
  font:8px/1.2 Consolas,monospace;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.rack-face-led{
  flex:0 0 6px;
  width:6px;height:6px;border-radius:50%;background:#65717b;
}
.rack-face-led.on{background:#4ee1a6;box-shadow:0 0 5px #4ee1a6}
.rack-face-led.standby{background:#ffc85a;box-shadow:0 0 5px #ffc85a}
.rack-face-led.off{background:#8d969d}
.rack-face-ports{
  margin-left:auto;
  display:flex;
  gap:2px;
  padding:2px 3px;
  border:1px solid #20282e;
  background:#11171b;
}
.rack-face-ports i{
  width:5px;height:5px;border:1px solid #77838c;background:#273039;
}
.rack-face-ports i.on{border-color:#5ddbb0;background:#26a87c}
.rack-rear-power{
  flex:0 0 auto;
  padding:2px 4px;
  border:1px solid #53606a;
  border-radius:2px;
  color:#b9c4cc;
  background:#22292f;
  font:700 7px/1 Consolas,monospace;
}
.rack-rear-power.on{border-color:#2b956d;color:#75e1bb}
.rack-rear-power.standby{border-color:#9a702b;color:#ffd078}
.rack-rear-power.off{color:#8c979f}
.rack-rear-ports{
  min-width:0;
  overflow:hidden;
  color:#d1d9df;
  font:8px/1.2 Consolas,monospace;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.rack-rear-fan{
  flex:0 0 18px;
  width:18px;height:18px;
  margin-left:auto;
  border:2px dotted #7d878e;
  border-radius:50%;
  opacity:.65;
}
.rack-patch-jacks{
  flex:1;
  height:9px;
  margin-left:auto;
  border:1px solid #232a2f;
  background:repeating-linear-gradient(90deg,#182027 0 7px,#9ba5ac 7px 8px);
}
.rack-face-note{
  margin:0;
  padding:8px 11px;
  border-top:1px solid var(--line);
  color:#7f8d98;
  background:#1a2026;
  font-size:9px;
  line-height:1.55;
}
:root[data-theme="light"] .rack-face-toolbar{border-bottom-color:var(--card-border);background:var(--surface)}
:root[data-theme="light"] .rack-face-kicker{color:var(--accent)}
:root[data-theme="light"] .rack-face-toolbar h3{color:var(--text)}
:root[data-theme="light"] .rack-face-toolbar p{color:var(--muted)}
:root[data-theme="light"] .rack-face-view{border-color:var(--card-border);background:var(--layer)}
:root[data-theme="light"] .rack-face-view button{color:var(--muted)}
:root[data-theme="light"] .rack-face-view button.active{background:var(--accent);color:#fff}
:root[data-theme="light"] .rack-face-table{border-color:var(--card-border);background:var(--surface)}
:root[data-theme="light"] .rack-face-head b{border-color:var(--card-border);color:#28343d;background:#ffd36e}
:root[data-theme="light"] .rack-face-head b:first-child{background:#f7fafc;color:#243746}
:root[data-theme="light"] .rack-face-head b:last-child{background:#a8dfe4}
:root[data-theme="light"] .rack-face-u{border-color:var(--card-border);color:#42596a;background:#f2f6f9}
:root[data-theme="light"] .rack-face-cell{border-color:var(--card-border);background:#fff}
:root[data-theme="light"] .rack-face-cell.empty{background:linear-gradient(90deg,rgba(53,84,105,.045) 1px,transparent 1px) 0 0/24px 100%,#fff}
:root[data-theme="light"] .rack-face-cell.shelf{color:#718594;background:#f1f5f8}
:root[data-theme="light"] .rack-face-hardware{border-color:#b7c6d0;background:linear-gradient(#f8fbfd,#e6edf2);color:#203746;text-shadow:none}
:root[data-theme="light"] .rack-face-hardware.switch{border-color:#63a8d2;background:linear-gradient(#e7f5fc,#cfe9f7);color:#174967}
:root[data-theme="light"] .rack-face-hardware.firewall{border-color:#d1857b;background:linear-gradient(#fff1ef,#f2d8d4);color:#6f2e29}
:root[data-theme="light"] .rack-face-hardware.patch{border-color:#9aaab5;background:linear-gradient(#f3f6f8,#dce4e9);color:#314855}
:root[data-theme="light"] .rack-face-hardware.rear{border-color:#b7c6d0;background:linear-gradient(#f7fafc,#e5ecf1);color:#263e4d}
:root[data-theme="light"] .rack-face-model{color:#5d7485}
:root[data-theme="light"] .rack-face-ports{border-color:#c4d1d9;background:#edf3f6}
:root[data-theme="light"] .rack-face-ports i{border-color:#8297a5;background:#fff}
:root[data-theme="light"] .rack-rear-power{border-color:#aabac4;color:#536b7b;background:#f3f7f9}
:root[data-theme="light"] .rack-rear-ports{color:#425b6b}
:root[data-theme="light"] .rack-rear-fan{border-color:#8295a1}
:root[data-theme="light"] .rack-patch-jacks{border-color:#a9bac5;background:repeating-linear-gradient(90deg,#edf3f6 0 7px,#768c9a 7px 8px)}
:root[data-theme="light"] .rack-face-note{border-top-color:var(--card-border);color:var(--muted);background:var(--surface)}
.rack-face-table.occupied-only .rack-face-row[data-rack-face-row="empty"]{display:none}

@media (max-width:1250px){
  .racklayout{grid-template-columns:minmax(270px,330px) minmax(520px,1fr)}
}
@media (max-width:1050px){
  .racklayout{grid-template-columns:1fr}
  .rackside{grid-column:auto}
  .rack-face-scroll{max-height:680px}
}
@media (max-width:640px){
  .rack-face-toolbar{flex-direction:column}
  .rack-face-scroll{min-height:440px}
}

.sidebar-collapsed{--sidebar-width:68px}
.sidebar-collapsed .portal-nav-title,
.sidebar-collapsed .portal-nav-group,
.sidebar-collapsed .portal-nav-foot,
.sidebar-collapsed .portal-nav-quick-title,
.sidebar-collapsed nav.tabs button[data-tab] span{display:none}
.sidebar-collapsed .portal-nav-section-toggle span,
.sidebar-collapsed .portal-nav-section-toggle i{display:none}
.sidebar-collapsed .portal-nav-section-toggle{min-height:8px;padding:0;border-top:1px solid #2f3942;border-radius:0}
.sidebar-collapsed .portal-nav-children{display:grid;padding:0;margin:0;border:0}
.sidebar-collapsed .portal-nav-brand{justify-content:center;padding-inline:7px}
.sidebar-collapsed .portal-nav-mark{display:none}
.sidebar-collapsed .portal-nav-toggle{display:block}
.sidebar-collapsed nav.tabs{padding-inline:8px}
.sidebar-collapsed nav.tabs button[data-tab]{justify-content:center;padding-inline:5px}
.sidebar-collapsed nav.tabs button[data-tab]::before{font-size:16px}
.sidebar-collapsed .portal-nav-quick{padding-inline:4px}
.sidebar-collapsed .portal-nav-quick .portal-language,
.sidebar-collapsed .portal-nav-quick .portal-theme{grid-template-columns:1fr}
.sidebar-collapsed .portal-nav-quick .portal-language button,
.sidebar-collapsed .portal-nav-quick .portal-theme button{padding:0;font-size:9px}
.sidebar-collapsed .portal-nav-quick>button,
.sidebar-collapsed .portal-nav-quick .header-corner-actions button{
  justify-content:center;
  padding:0;
  font-size:0;
}
.sidebar-collapsed .portal-nav-quick>button::first-letter,
.sidebar-collapsed .portal-nav-quick .header-corner-actions button::first-letter{font-size:14px}
.sidebar-collapsed .portal-action-text{display:none}

/* Purpose-based workspace and manual */
.workspace-titlebar,.guide-titlebar{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:16px}
.workspace-titlebar h2,.guide-titlebar h2{margin:.1rem 0 0}
.workspace-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.workspace-card{min-height:230px;padding:20px;border:1px solid var(--card-border);border-radius:9px;background:var(--surface);box-shadow:var(--shadow-sm)}
.workspace-card>span,.guide-section-head>span{color:var(--accent);font:700 10px/1.3 Consolas,monospace;letter-spacing:.12em}
.workspace-card h3{margin:5px 0 20px;font-size:16px}
.workspace-card p{min-height:42px;margin:8px 0 20px;color:var(--muted);font-size:12px}
.workspace-value{font-size:28px;font-weight:800;letter-spacing:.02em}
.workspace-card button{width:100%;min-height:36px;border:1px solid var(--card-border);border-radius:5px;background:var(--layer);color:var(--muted);font-weight:700}
.guide-index{position:sticky;top:56px;z-index:25;display:flex;flex-wrap:wrap;gap:7px;margin:0 0 14px;padding:10px;border:1px solid var(--card-border);border-radius:8px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:var(--shadow-sm);backdrop-filter:blur(10px)}
.guide-index a{padding:5px 10px;border:1px solid var(--card-border);border-radius:4px;color:var(--muted);font-size:11px;font-weight:700;text-decoration:none}
.guide-index a:hover{border-color:var(--accent);color:var(--ink);background:var(--accent-soft)}
.guide-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.guide-article{scroll-margin-top:116px;min-height:205px;padding:18px 20px;border:1px solid var(--card-border);border-radius:9px;background:var(--surface);box-shadow:var(--shadow-sm)}
.guide-article>span{float:right;color:var(--line);font:800 34px/1 Consolas,monospace}
.guide-article h3{margin:0 0 14px;font-size:16px}
.guide-article ol,.guide-article ul{margin:0;padding-left:1.35rem;color:var(--muted);font-size:12px}
.guide-article li+li{margin-top:8px}
.guide-article b{color:var(--ink)}
.guide-glossary{scroll-margin-top:116px;margin-top:16px;padding:18px;border:1px solid var(--card-border);border-radius:9px;background:var(--surface)}
.guide-section-head{margin-bottom:14px}
.guide-section-head h3{margin:3px 0 0;font-size:17px}

.portal-focus-mode header{
  min-height:52px;
  padding:52px 10px 0;
  border-bottom-color:transparent;
  background:transparent;
}
.portal-focus-mode header>h1,
.portal-focus-mode header>.meta,
.portal-focus-mode header>.data-tools-shell,
.portal-focus-mode header>.data-tools,
.portal-focus-mode header>.import-note{display:none}
.portal-focus-mode section.tab{padding-top:8px}

/* Dashboard */
.dashboard-titlebar{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px}
.dashboard-titlebar h2{margin:2px 0 4px;font-size:22px}
.dashboard-kicker,.dashboard-card-head span{color:var(--accent);font:700 9px/1.4 Consolas,monospace;letter-spacing:.15em}
.dashboard-basis{flex:0 0 auto;margin-top:4px;padding:5px 9px;border:1px solid var(--card-border);border-radius:99px;background:var(--surface);color:var(--muted);font-size:10px;font-weight:700}
.dashboard-summary{display:grid;grid-template-columns:repeat(5,minmax(125px,1fr));gap:10px;margin-bottom:12px}
.dashboard-metric{position:relative;min-height:100px;padding:14px 15px;border:1px solid var(--card-border);border-radius:6px;background:var(--surface);box-shadow:var(--shadow-sm);overflow:hidden}
.dashboard-metric::after{content:"";position:absolute;inset:auto 0 0;height:3px;background:var(--accent)}
.dashboard-metric.m1::after{background:var(--run)}.dashboard-metric.m2::after{background:var(--stby)}.dashboard-metric.m3::after{background:var(--stop)}.dashboard-metric.m4::after{background:var(--sim)}
.dashboard-metric span{display:block;color:var(--muted);font-size:11px;font-weight:700}.dashboard-metric b{display:block;margin:4px 0;color:var(--ink);font:700 27px/1.15 Consolas,monospace}.dashboard-metric small{display:block;color:var(--muted);font-size:9px}
.dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.dashboard-card{min-width:0;border:1px solid var(--card-border);border-radius:6px;background:var(--surface);box-shadow:var(--shadow-sm);overflow:hidden}
.dashboard-card-head{min-height:61px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border-bottom:1px solid var(--line);background:var(--surface-raised)}
.dashboard-card-head h3{margin:2px 0 0;font-size:14px}.dashboard-card-head button{min-height:28px;padding:4px 8px;border:1px solid var(--card-border);border-radius:4px;background:var(--surface);color:var(--muted);font-size:10px;font-weight:700;cursor:pointer}.dashboard-card-head button:hover{border-color:var(--accent);color:var(--accent)}
.dashboard-route-card>div:last-child,.dashboard-virtual-card>div:last-child,.dashboard-attention-card>div:last-child{padding:16px}
.dashboard-route{min-height:165px;display:flex;align-items:center;justify-content:center;gap:7px;padding:20px 8px;background:linear-gradient(180deg,color-mix(in srgb,var(--accent-soft) 35%,transparent),transparent)}
.dashboard-route>i{color:var(--accent);font:700 25px/1 Consolas,monospace}
.dashboard-route-node{position:relative;min-width:100px;padding:12px 9px;border:1px solid var(--card-border);border-top:3px solid var(--run);border-radius:5px;background:var(--surface);color:var(--ink);cursor:pointer;text-align:left}.dashboard-route-node.stby{border-top-color:var(--stby)}.dashboard-route-node.stop{border-top-color:var(--stop)}.dashboard-route-node:hover{transform:translateY(-2px);border-color:var(--accent)}.dashboard-route-node span,.dashboard-route-node small{display:block}.dashboard-route-node span{font-size:11px;font-weight:700}.dashboard-route-node small{margin-top:3px;color:var(--muted);font-size:9px}
.dashboard-route-legend{display:flex;gap:14px;margin-top:10px;color:var(--muted);font-size:9px}.dashboard-route-legend span{display:flex;align-items:center;gap:5px}.dashboard-route-legend i,.dashboard-status-legend i,.dashboard-attention-list i{width:8px;height:8px;border-radius:50%;background:var(--run)}.dashboard-route-legend i.stby,.dashboard-status-legend i.stby,.dashboard-attention-list i.stby{background:var(--stby)}.dashboard-route-legend i.stop,.dashboard-status-legend i.stop,.dashboard-attention-list i.stop{background:var(--stop)}
.dashboard-status-card>div:last-child{padding:15px}
.dashboard-status-layout{display:grid;grid-template-columns:132px 1fr;gap:18px;align-items:center}
.dashboard-donut{width:126px;height:126px;display:grid;place-content:center;border-radius:50%;background:conic-gradient(var(--run) 0 var(--run-angle),var(--stby) var(--run-angle) var(--standby-angle),var(--stop) var(--standby-angle) var(--stop-angle,360deg),var(--muted) var(--stop-angle,360deg) 360deg);position:relative}.dashboard-donut::before{content:"";position:absolute;inset:20px;border-radius:50%;background:var(--surface)}.dashboard-donut b,.dashboard-donut span{position:relative;z-index:1;text-align:center}.dashboard-donut b{font:700 26px/1 Consolas,monospace}.dashboard-donut span{margin-top:4px;color:var(--muted);font-size:10px}
.dashboard-status-legend{display:grid;gap:8px}.dashboard-status-legend span{display:grid;grid-template-columns:8px 1fr auto;align-items:center;gap:7px;padding-bottom:7px;border-bottom:1px solid var(--line);color:var(--muted);font-size:10px}.dashboard-status-legend b{color:var(--ink);font:700 12px Consolas,monospace}
.dashboard-heatmap{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;margin-top:15px;padding-top:14px;border-top:1px solid var(--line)}.dashboard-heat{aspect-ratio:1;border:0;border-radius:3px;background:var(--run);cursor:pointer}.dashboard-heat.stby{background:var(--stby)}.dashboard-heat.stop{background:var(--stop)}.dashboard-heat:hover{outline:2px solid var(--accent);outline-offset:1px}
.dashboard-host-list{display:grid;gap:3px}.dashboard-host{display:grid;grid-template-columns:minmax(118px,.85fr) minmax(100px,1.2fr) 105px;align-items:center;gap:12px;width:100%;padding:9px 8px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);cursor:pointer;text-align:left}.dashboard-host:last-child{border-bottom:0}.dashboard-host:hover{background:var(--accent-soft)}.dashboard-host-name b,.dashboard-host-name small{display:block}.dashboard-host-name b{font-size:11px}.dashboard-host-name small{color:var(--muted);font:9px Consolas,monospace}.dashboard-host-bar{height:7px;border-radius:99px;background:var(--stop-bg);overflow:hidden}.dashboard-host-bar i{display:block;height:100%;border-radius:inherit;background:var(--run)}.dashboard-host-count{color:var(--muted);font-size:9px;text-align:right}.dashboard-host-count b{color:var(--run);font:700 11px Consolas,monospace}
.dashboard-attention-list{display:grid;gap:3px;max-height:270px;overflow:auto}.dashboard-attention-list button{display:grid;grid-template-columns:9px 1fr auto;align-items:center;gap:9px;width:100%;padding:8px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);text-align:left;cursor:pointer}.dashboard-attention-list button:hover{background:var(--accent-soft)}.dashboard-attention-list span b,.dashboard-attention-list span small{display:block}.dashboard-attention-list span b{font-size:10px}.dashboard-attention-list span small{color:var(--muted);font-size:9px}.dashboard-attention-list em{padding:2px 5px;border:1px solid var(--card-border);border-radius:3px;color:var(--muted);font-size:8px;font-style:normal}.dashboard-empty{padding:20px;color:var(--muted);text-align:center}
.dashboard-alert-layout{display:grid;grid-template-columns:minmax(155px,.7fr) minmax(0,1.3fr);min-height:270px}
.dashboard-alert-overview{display:grid;align-content:center;justify-items:center;gap:14px;padding:18px;border-right:1px solid var(--line);background:linear-gradient(150deg,color-mix(in srgb,var(--stop-bg) 58%,var(--surface)),var(--surface))}
.dashboard-alert-donut{position:relative;width:142px;height:142px;display:grid;place-content:center;border-radius:50%;background:conic-gradient(var(--stop) 0 var(--alert-stop-angle),var(--stby) var(--alert-stop-angle) 360deg)}
.dashboard-alert-donut::before{content:"";position:absolute;inset:22px;border-radius:50%;background:var(--surface)}
.dashboard-alert-donut span,.dashboard-alert-donut b,.dashboard-alert-donut small{position:relative;z-index:1;text-align:center}.dashboard-alert-donut span{width:25px;height:25px;display:grid;place-content:center;margin:0 auto 2px;border:2px solid var(--stop);border-radius:50%;color:var(--stop);font:800 16px/1 var(--mono)}.dashboard-alert-donut b{font:800 30px/1 var(--mono)}.dashboard-alert-donut small{margin-top:4px;color:var(--muted);font-size:10px}
.dashboard-alert-legend{width:100%;display:grid;gap:7px}.dashboard-alert-legend span{display:grid;grid-template-columns:9px 1fr auto;align-items:center;gap:7px;color:var(--muted);font-size:10px}.dashboard-alert-legend i{width:8px;height:8px;border-radius:2px}.dashboard-alert-legend i.stop{background:var(--stop)}.dashboard-alert-legend i.stby{background:var(--stby)}.dashboard-alert-legend b{color:var(--ink);font:750 12px var(--mono)}
.dashboard-alert-feed{min-width:0;padding:12px 14px}.dashboard-alert-feed-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;padding:0 4px 8px;border-bottom:1px solid var(--line)}.dashboard-alert-feed-head b{font-size:11px}.dashboard-alert-feed-head span{color:var(--muted);font-size:9px}.dashboard-alert-feed .dashboard-attention-list{max-height:230px}.dashboard-alert-feed .dashboard-attention-list button{border-left:3px solid var(--stop)}.dashboard-alert-feed .dashboard-attention-list button:has(i.stby){border-left-color:var(--stby)}

@media (max-width:1100px){.dashboard-summary{grid-template-columns:repeat(3,1fr)}.dashboard-grid{grid-template-columns:1fr}.dashboard-route{justify-content:flex-start;overflow-x:auto}}
@media (max-width:620px){.dashboard-titlebar{display:block}.dashboard-basis{display:inline-block;margin-bottom:8px}.dashboard-summary{grid-template-columns:repeat(2,1fr)}.dashboard-route{padding-inline:4px}.dashboard-route-node{min-width:92px}.dashboard-status-layout{grid-template-columns:110px 1fr}.dashboard-donut{width:104px;height:104px}.dashboard-heatmap{grid-template-columns:repeat(8,1fr)}.dashboard-host{grid-template-columns:1fr 100px}.dashboard-host-bar{grid-column:1 / -1;grid-row:2}.dashboard-host-count{grid-column:2;grid-row:1}.dashboard-alert-layout{grid-template-columns:1fr}.dashboard-alert-overview{grid-template-columns:auto 1fr;justify-items:stretch;border-right:0;border-bottom:1px solid var(--line)}.dashboard-alert-donut{width:112px;height:112px}.dashboard-alert-donut::before{inset:18px}}

/* Stored equipment compact list + detail drawer */
.inventory-view-row{cursor:pointer}.inventory-view-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.inventory-view-row td{transition:background .12s ease}
.inventory-detail-open{overflow:hidden}
.inventory-detail-overlay{position:fixed;inset:0;z-index:230;visibility:hidden;pointer-events:none;background:rgba(0,0,0,0);transition:background .18s ease}
.inventory-detail-overlay.open{visibility:visible;pointer-events:auto;background:rgba(0,0,0,.62);backdrop-filter:blur(3px)}
.inventory-detail-drawer{position:absolute;inset:0 0 0 auto;width:min(610px,100%);overflow:auto;padding:0 18px 24px;border-left:1px solid var(--card-border);background:var(--surface);box-shadow:-20px 0 55px rgba(0,0,0,.44);transform:translateX(100%);transition:transform .22s ease}
.inventory-detail-overlay.open .inventory-detail-drawer{transform:none}
.inventory-detail-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 -18px;padding:15px 18px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(12px)}
.inventory-detail-head span{color:var(--accent);font:700 9px/1.4 Consolas,monospace;letter-spacing:.14em}.inventory-detail-head h2{margin:2px 0 0;font-size:18px}.inventory-detail-head h2::before{display:none}
.inventory-detail-close{min-width:34px;height:34px;padding:0 9px;border:1px solid var(--card-border);border-radius:5px;background:var(--surface-raised);color:var(--muted);font-size:18px;cursor:pointer}.inventory-detail-close:hover{color:var(--ink);border-color:var(--accent)}
.inventory-detail-summary{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:4px 10px;margin:16px 0;padding:13px;border:1px solid var(--card-border);border-radius:6px;background:var(--surface-raised)}.inventory-detail-summary .tag{grid-row:1 / 3}.inventory-detail-summary b{font-size:13px}.inventory-detail-summary small{color:var(--muted);font-size:10px}
.inventory-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:0;border:1px solid var(--card-border);border-radius:6px;overflow:hidden}.inventory-detail-grid>div{min-width:0;padding:10px 12px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.inventory-detail-grid>div:nth-child(even){border-right:0}.inventory-detail-grid dt{margin-bottom:3px;color:var(--muted);font-size:9px;font-weight:700}.inventory-detail-grid dd{margin:0;overflow-wrap:anywhere;color:var(--ink);font-size:11px;white-space:pre-wrap}
.inventory-detail-comment{margin-top:14px;padding:13px;border:1px solid color-mix(in srgb,var(--accent) 40%,var(--card-border));border-radius:6px;background:var(--accent-soft)}.inventory-detail-comment span{display:block;margin-bottom:4px;color:var(--accent);font-size:9px;font-weight:800;letter-spacing:.05em}.inventory-detail-comment p{margin:0;color:var(--ink);font-size:11px;white-space:pre-wrap}
.inventory-detail-actions{position:sticky;bottom:-24px;display:flex;justify-content:flex-end;gap:7px;margin:18px -18px -24px;padding:12px 18px;border-top:1px solid var(--line);background:var(--surface)}.inventory-detail-actions button{min-height:34px;padding:6px 10px;border:1px solid var(--card-border);border-radius:5px;background:var(--surface-raised);color:var(--ink);font-size:10px;font-weight:700;cursor:pointer}.inventory-detail-actions button:hover{border-color:var(--accent)}.inventory-detail-actions button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
@media (max-width:560px){.inventory-detail-grid{grid-template-columns:1fr}.inventory-detail-grid>div{border-right:0}.inventory-detail-actions{flex-wrap:wrap}}

.history-overlay{
  position:fixed;inset:0;z-index:220;
  visibility:hidden;pointer-events:none;
}
.history-overlay::before{
  content:"";position:absolute;inset:0;background:rgba(0,0,0,.62);
  opacity:0;transition:opacity .18s ease;backdrop-filter:blur(3px);
}
.history-overlay.open{visibility:visible;pointer-events:auto}
.history-overlay.open::before{opacity:1}
.history-drawer{
  position:absolute;inset:0 0 0 auto;
  width:min(610px,100%);overflow:auto;
  padding:0 16px 28px;
  border-left:1px solid #3a444e;
  background:#171d22;
  box-shadow:-20px 0 55px rgba(0,0,0,.44);
  transform:translateX(100%);transition:transform .22s ease;
}
.history-overlay.open .history-drawer{transform:none}
.history-head{
  position:sticky;top:0;z-index:2;
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin:0 -16px;padding:14px 16px;
  border-bottom:1px solid #343d46;background:rgba(23,29,34,.96);
  backdrop-filter:blur(12px);
}
.history-head h2{margin:0;font-size:18px}
.history-head h2::before{display:none}
.history-close{
  width:34px;height:34px;padding:0;border:1px solid #3b4650;border-radius:4px;
  background:#222a31;color:#b9c5cf;font-size:20px;cursor:pointer;
}
.history-toolbar{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0}
.history-toolbar button,.history-item button,.history-file-label{
  min-height:32px;padding:6px 9px;border:1px solid #3c4852;border-radius:4px;
  background:#222a31;color:#c1ccd5;font-size:11px;font-weight:700;cursor:pointer;
}
.history-toolbar button:hover,.history-item button:hover,.history-file-label:hover{
  color:#fff;border-color:#439ada;background:#273847;
}
.history-file-label input{display:none}
.history-scope{
  padding:9px 10px;border:1px solid #3c4852;border-radius:4px;
  background:#20272d;color:#94a3af;font-size:11px;line-height:1.6;
}
.history-list{display:grid;gap:8px;margin-top:12px}
.history-empty{padding:30px 12px;text-align:center;color:#788693}
.history-item{
  display:grid;grid-template-columns:10px 1fr auto;gap:10px;
  padding:11px;border:1px solid #343f49;border-radius:5px;background:#1d242a;
}
.history-dot{width:9px;height:9px;margin-top:5px;border-radius:50%;background:#4da9e8;box-shadow:0 0 0 4px #18334a}
.history-item h3{margin:0 0 3px;color:#edf3f8;font-size:12px}
.history-item p{margin:0;color:#8f9daa;font-size:10px;line-height:1.55}
.history-item time{font:10px/1.5 Consolas,monospace}
.history-item-actions{display:flex;flex-direction:column;gap:5px}
.history-current{color:#60c49e!important;border-color:#37604f!important;cursor:default!important}

@media (max-width:900px){
  :root{--sidebar-width:248px}
  .wrap{padding:8px 8px 40px}
  nav.tabs{transform:translateX(-102%);box-shadow:12px 0 35px rgba(0,0,0,.45)}
  .sidebar-mobile-open nav.tabs{transform:none}
  .sidebar-collapsed nav.tabs{width:248px;padding-inline:10px}
  .sidebar-collapsed .portal-nav-title,
  .sidebar-collapsed .portal-nav-group,
  .sidebar-collapsed .portal-nav-foot,
  .sidebar-collapsed .portal-nav-quick-title,
  .sidebar-collapsed nav.tabs button[data-tab] span{display:flex}
  .sidebar-collapsed .portal-nav-title{display:flex}
  .sidebar-collapsed .portal-nav-group,.sidebar-collapsed .portal-nav-foot{display:block}
  .sidebar-collapsed .portal-nav-quick{padding-inline:7px}
  .sidebar-collapsed .portal-nav-quick-title{display:block}
  .sidebar-collapsed .portal-nav-quick .portal-language,
  .sidebar-collapsed .portal-nav-quick .portal-theme{grid-template-columns:1fr 1fr}
  .sidebar-collapsed .portal-nav-quick .portal-language button,
  .sidebar-collapsed .portal-nav-quick .portal-theme button{font-size:10px}
  .sidebar-collapsed .portal-nav-quick>button,
  .sidebar-collapsed .portal-nav-quick .header-corner-actions button{
    justify-content:flex-start;padding:0 9px;font-size:11px;
  }
  .sidebar-collapsed .portal-nav-mark{display:grid}
  .sidebar-collapsed nav.tabs button[data-tab]{justify-content:flex-start;padding-inline:10px}
  .sidebar-collapsed .portal-nav-section-toggle span,
  .sidebar-collapsed .portal-nav-section-toggle i{display:block}
  .sidebar-collapsed .portal-nav-section-toggle{min-height:34px;padding:6px 10px;border:0}
  .sidebar-collapsed .portal-nav-children{padding-left:10px;border-left:1px solid #303c47;margin-left:15px}
  .workspace-grid,.guide-layout{grid-template-columns:1fr}
  header{padding-top:108px}
  .portal-topbar{height:auto;min-height:50px;flex-wrap:wrap}
  .portal-search-shell{order:3;flex-basis:100%;max-width:none}
  .portal-search{max-width:none}
  .portal-focus-mode header{padding-top:100px}
}
@media (max-width:560px){
  .workspace-titlebar,.guide-titlebar{align-items:flex-start;flex-direction:column}
  .guide-index{top:100px}
  .history-item{grid-template-columns:10px 1fr}
  .history-item-actions{grid-column:2;flex-direction:row}
}
@media print{
  nav.tabs,.portal-topbar,.history-overlay{display:none!important}
  .wrap{padding:0}
}
.rack-face-hardware{background-image:linear-gradient(90deg,rgba(255,255,255,.04),transparent 20%,transparent 80%,rgba(0,0,0,.25)),url("./assets/rack/brushed-metal.png");background-size:auto,cover}
.rack-face-hardware.rear{background-image:linear-gradient(rgba(17,23,28,.48),rgba(17,23,28,.48)),url("./assets/rack/brushed-metal.png")}
.rack-face-hardware.storage{border-color:#3d9378}.rack-face-hardware.chassis{border-color:#397ba3}
:root[data-theme="light"] .rack-face-hardware,:root[data-theme="light"] .rack-face-hardware.rear{background-image:none}

/* Detailed rack rear view */
.rack-rear-study{margin-top:12px;padding:12px;border:1px solid var(--card-border);border-left:4px solid var(--accent);border-radius:10px;background:var(--surface);box-shadow:var(--shadow-sm)}
.rack-rear-study[hidden]{display:none}.rack-rear-study-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:9px;border-bottom:1px solid var(--card-border)}.rack-rear-study-head h3{margin:3px 0 0;color:var(--text);font-size:15px}.rack-rear-study-badge{padding:5px 8px;border:1px solid color-mix(in srgb,var(--accent) 45%,var(--card-border));border-radius:999px;background:color-mix(in srgb,var(--accent) 10%,var(--surface));color:var(--accent);font:700 8px/1 var(--mono);letter-spacing:.08em;white-space:nowrap}
.rack-rear-study-filters{display:flex;flex-wrap:wrap;gap:5px}.rack-rear-study-filters button{padding:5px 9px;border:1px solid var(--card-border);border-radius:6px;background:var(--surface);color:var(--muted);font-size:9px;font-weight:700;cursor:pointer}.rack-rear-study-filters button.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 13%,var(--surface));color:var(--accent)}
.rack-rear-study-legend{display:flex;flex-wrap:wrap;gap:7px 14px;margin:8px 0;color:var(--muted);font:600 9px/1 var(--mono)}.rack-rear-study-legend span{display:flex;align-items:center;gap:5px}.rack-rear-study-legend i{display:block;width:16px;height:12px;border:1px solid #9ba6ad;background:#1a1d20}.rack-rear-study-legend .used i{border-color:#68d796;background:#68d796}.rack-rear-study-legend .unused i{background:transparent}
#rackRearStudySvg{display:block;width:100%;height:auto;max-height:1160px;border:1px solid var(--card-border);border-radius:9px;background:var(--layer);color:var(--text)}
.rear-study-frame{fill:var(--surface);stroke:color-mix(in srgb,var(--text) 72%,var(--card-border));stroke-width:5}.rear-study-rail,.rear-study-pdu{fill:color-mix(in srgb,var(--muted) 13%,var(--surface));stroke:var(--card-border);stroke-width:2}.rear-study-device{fill:color-mix(in srgb,var(--muted) 6%,var(--surface));stroke:color-mix(in srgb,var(--muted) 42%,var(--card-border));stroke-width:2;cursor:pointer}.rear-study-device.switch{fill:color-mix(in srgb,#60a8d7 14%,var(--surface));stroke:#4c9bcc}.rear-study-device.firewall{fill:color-mix(in srgb,#e57cab 12%,var(--surface));stroke:#cf6595}.rear-study-device.selected{stroke:var(--accent);stroke-width:5}.rear-study-label{fill:var(--text);font:700 13px/1 var(--mono);pointer-events:none}.rear-study-small{fill:var(--muted);font:500 11px/1 var(--mono);pointer-events:none}.rear-study-port{fill:transparent;stroke:color-mix(in srgb,var(--text) 48%,var(--card-border));stroke-width:1.2}.rear-study-port.live{fill:#43c98f;stroke:#238d65}.rear-study-fan{fill:none;stroke:color-mix(in srgb,var(--text) 48%,var(--card-border));stroke-width:2}.rear-study-vent{fill:var(--muted);opacity:.38}.rear-study-led{fill:#e99743}.rear-study-tag{fill:var(--surface);stroke:var(--card-border)}.rear-study-tag-text{fill:var(--text);font:700 11px/1 var(--mono);text-anchor:middle;pointer-events:none}
.rack-rear-study-detail{margin-top:8px;padding:7px 9px;border-left:3px solid var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface));color:var(--text);font:600 9px/1.5 var(--mono)}
@media(max-width:760px){.rack-rear-study-head{display:grid}.rack-rear-study-filters{justify-content:flex-start}.rack-rear-study{overflow-x:auto}#rackRearStudySvg{min-width:720px}.rack-rear-study-detail{font-family:inherit}}

/* Physical rack cable map preview */
.rack-cable-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:0 0 10px;padding:8px;border:1px solid var(--card-border);border-radius:8px;background:var(--layer)}
.rack-cable-toolbar button{padding:5px 9px;border:1px solid var(--card-border);border-radius:6px;background:var(--surface);color:var(--muted);font-size:9px;font-weight:700;cursor:pointer}
.rack-cable-toolbar button.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 13%,var(--surface));color:var(--accent)}
.rack-cable-toolbar span{color:var(--muted);font-size:9px}.rack-cable-toolbar .rack-cable-help{margin-left:auto}.rack-cable-toolbar .rack-cable-zoom-label{margin-left:7px;font-weight:700}
.rack-cable-map{display:block;overflow:auto;max-height:min(76vh,920px);border:1px solid var(--card-border);border-radius:10px;background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 3%,var(--layer)),var(--layer));scrollbar-color:color-mix(in srgb,var(--accent) 42%,var(--card-border)) var(--layer);scrollbar-width:thin}
.rack-cable-map svg{display:block;width:var(--rack-cable-zoom,100%);min-width:1000px;max-width:none;height:auto;color:var(--text)}
.cable-rack-frame{fill:color-mix(in srgb,var(--surface) 96%,transparent);stroke:color-mix(in srgb,var(--text) 34%,var(--card-border));stroke-width:2}
.cable-rack-title{fill:var(--text);font:700 14px/1 var(--mono)}
.cable-rack-caption,.cable-zone-label{fill:var(--muted);font:700 8px/1 var(--mono);letter-spacing:.12em}
.cable-rack-slot{fill:color-mix(in srgb,var(--muted) 5%,var(--surface));stroke:var(--card-border);stroke-width:.7}
.cable-rack-slot.occupied{fill:color-mix(in srgb,#7657d6 14%,var(--surface))}
.cable-rack-slot.switch,.cable-rack-slot.chassis{fill:color-mix(in srgb,#168bc1 15%,var(--surface))}
.cable-rack-slot.firewall{fill:color-mix(in srgb,#dc664f 15%,var(--surface))}
.cable-rack-slot.storage{fill:color-mix(in srgb,#3aa77f 15%,var(--surface))}
.cable-u{fill:var(--muted);font:600 8.5px/1 var(--mono)}
.cable-device-hit{fill:transparent;cursor:pointer}
.cable-device-name{fill:var(--text);font:700 9px/1 var(--mono);pointer-events:none}
.cable-device-model{fill:var(--muted);font:500 8px/1 var(--mono);pointer-events:none}
.cable-device-led{fill:#37c58d;pointer-events:none}
.cable-device-node.selected .cable-device-hit{fill:color-mix(in srgb,var(--accent) 22%,transparent);stroke:var(--accent);stroke-width:1.5}
.cable-external-node{cursor:pointer}.cable-external-node rect{fill:var(--surface);stroke:var(--card-border);stroke-width:1.3}.cable-external-node circle{fill:#37c58d}.cable-external-node text{fill:var(--text);font:700 10px/1 var(--mono)}.cable-external-node .cable-node-sub{fill:var(--muted);font-size:8px;font-weight:500}.cable-external-node.selected rect{stroke:var(--accent);stroke-width:2}
.cable-external-node.tone-normal rect{fill:color-mix(in srgb,var(--run) 10%,var(--surface));stroke:var(--run)}.cable-external-node.tone-normal text:first-of-type{fill:var(--run)}
.cable-external-node.tone-standby rect{fill:color-mix(in srgb,var(--stby) 11%,var(--surface));stroke:var(--stby)}.cable-external-node.tone-standby circle{fill:var(--stby)}.cable-external-node.tone-standby text:first-of-type{fill:var(--stby)}
.cable-external-node.tone-info rect{fill:color-mix(in srgb,var(--accent) 11%,var(--surface));stroke:var(--accent)}.cable-external-node.tone-info circle{fill:var(--accent)}.cable-external-node.tone-info text:first-of-type{fill:var(--accent)}
.rack-cable{--cable-color:var(--vlan-color,#7e8b94);cursor:pointer;opacity:.58;transition:opacity .16s ease}
.rack-cable-line{fill:none;stroke:var(--cable-color);stroke-width:1.7;stroke-opacity:.78;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.rack-cable-hit{fill:none;stroke:transparent;stroke-width:11}
.rack-cable-port{fill:var(--surface);stroke:var(--cable-color);stroke-width:1.7;pointer-events:none}
.cable-arrow-head{fill:context-stroke}
.rack-cable:hover,.rack-cable.selected,.rack-cable.related{opacity:1}.rack-cable:hover .rack-cable-line,.rack-cable.selected .rack-cable-line,.rack-cable.related .rack-cable-line{stroke-width:3;stroke-opacity:1;filter:drop-shadow(0 0 2px color-mix(in srgb,var(--cable-color) 58%,transparent))}
.rack-cable.dimmed{opacity:.07}.rack-cable.filter-hidden{display:none}
.rack-cable-detail{margin-top:8px;padding:7px 9px;border-left:3px solid var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface));color:var(--text);font:600 9px/1.5 var(--mono)}
@media(max-width:760px){.rack-cable-toolbar .rack-cable-help{flex-basis:100%;margin-left:0}.rack-cable-toolbar .rack-cable-zoom-label{margin-left:0}.rack-cable-map{max-height:70vh}.rack-cable-map svg{min-width:1000px}.rack-cable-detail{font-family:inherit}}

/* Device catalog */
.role-catalog-tabs{display:flex;flex-wrap:wrap;gap:3px;margin:10px 0 0;border-bottom:1px solid var(--card-border)}.role-catalog-tabs button{margin-bottom:-1px;padding:9px 13px;border:1px solid transparent;border-bottom-color:var(--card-border);border-radius:6px 6px 0 0;background:transparent;color:var(--muted);font-size:11px;font-weight:700;cursor:pointer}.role-catalog-tabs button.active{border-color:var(--card-border);border-bottom-color:var(--surface);background:var(--surface);color:var(--accent)}
.role-catalog-tools{display:flex;align-items:center;gap:8px;margin:10px 0;padding:8px;border:1px solid var(--card-border);border-radius:8px;background:var(--surface)}.role-catalog-tools input{min-width:0;flex:1;padding:8px 10px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer);color:var(--text);font-size:11px}.role-catalog-tools b{flex:0 0 auto;padding:5px 8px;border-radius:999px;background:color-mix(in srgb,var(--accent) 10%,var(--surface));color:var(--accent);font:700 9px/1 var(--mono)}
.role-catalog-panel{display:none}.role-catalog-panel.active{display:block}.role-catalog-table-wrap{overflow:auto;border:1px solid var(--card-border);border-radius:8px;background:var(--surface)}.role-catalog-table{width:100%;border-collapse:collapse;font-size:11px}.role-catalog-table th,.role-catalog-table td{padding:9px 10px;border-bottom:1px solid var(--card-border);text-align:left;vertical-align:middle}.role-catalog-table th{position:sticky;top:0;z-index:1;background:var(--layer);color:var(--muted);font-size:9px;letter-spacing:.05em}.role-catalog-table tbody tr{cursor:pointer}.role-catalog-table tbody tr:hover{background:color-mix(in srgb,var(--accent) 10%,var(--surface))}.role-catalog-table tbody tr.selected{background:color-mix(in srgb,var(--accent) 18%,var(--surface));box-shadow:inset 4px 0 var(--accent),inset 0 0 0 1px color-mix(in srgb,var(--accent) 42%,var(--card-border))}.role-catalog-table tbody tr:last-child td{border-bottom:0}.role-catalog-name{color:var(--accent);font-weight:700}.role-catalog-count{display:inline-flex;min-width:24px;justify-content:center;padding:3px 6px;border-radius:999px;background:color-mix(in srgb,var(--accent) 12%,var(--surface));color:var(--accent);font:700 9px/1 var(--mono)}
.role-catalog-detail{margin-top:10px;padding:12px;border:1px solid var(--card-border);border-left:4px solid var(--accent);border-radius:8px;background:var(--surface)}.role-catalog-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding-bottom:8px;border-bottom:1px solid var(--card-border)}.role-catalog-detail h3{margin:0;color:var(--text);font-size:14px}.role-catalog-detail-head button{border:1px solid var(--card-border);border-radius:5px;background:var(--layer);color:var(--muted);cursor:pointer}.role-catalog-detail dl{display:grid;grid-template-columns:110px minmax(0,1fr);gap:7px 12px;margin:10px 0 0;font-size:11px}.role-catalog-detail dt{color:var(--muted);font-weight:700}.role-catalog-detail dd{margin:0;color:var(--text);overflow-wrap:anywhere}.role-catalog-empty{padding:28px;text-align:center;color:var(--muted)}
.role-catalog-detail[hidden],.role-catalog-empty[hidden],#rolewrap .rolecard[hidden],.roles-heading-actions[hidden]{display:none!important}
.role-device-table-wrap{max-height:min(66vh,760px)}.role-device-table{min-width:920px}.role-device-table th:nth-child(1){width:24%}.role-device-table th:nth-child(2){width:18%}.role-device-table th:nth-child(3){width:15%}.role-device-table th:nth-child(4){width:22%}.role-device-table th:nth-child(5){width:10%}.role-device-table th:nth-child(6){width:11%}.role-device-row{position:relative;outline:none}.role-device-row td:first-child{border-left:4px solid var(--accent)}.role-device-row.device-server td:first-child{border-left-color:#8b5cf6}.role-device-row.device-stopped td:first-child{border-left-color:var(--stop)}.role-device-row:hover,.role-device-row:focus-visible{background:color-mix(in srgb,var(--accent) 13%,var(--surface));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 44%,var(--card-border))}.role-device-row.device-stopped{background:color-mix(in srgb,var(--stop) 6%,var(--surface))}.role-device-row.device-stopped:hover,.role-device-row.device-stopped:focus-visible{background:color-mix(in srgb,var(--stop) 12%,var(--surface));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--stop) 48%,var(--card-border))}.role-device-table .role-device-name{display:grid;gap:2px;width:100%;text-decoration:none!important}.role-device-table .role-device-name b{overflow:hidden;color:var(--accent);font-size:.86rem;text-overflow:ellipsis;white-space:nowrap}.role-device-table .role-device-name small{overflow:hidden;color:var(--muted);font-size:.7rem;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.role-device-table .role-device-name:hover b{color:color-mix(in srgb,var(--accent) 72%,var(--text))}.role-device-type{font-weight:750}.role-device-ip{color:var(--accent)}.role-device-table .tag{min-width:64px;justify-content:center;padding:.24rem .55rem;border-width:1px;border-style:solid}.role-device-table-empty{border:1px solid var(--card-border);border-top:0;border-radius:0 0 8px 8px;background:var(--surface)}
#rolewrap .role-device-row>.asset-extra{display:none!important}
.role-interface-table{min-width:1080px}.role-interface-table th:nth-child(1){width:16%}.role-interface-table th:nth-child(2){width:16%}.role-interface-table th:nth-child(3){width:11%}.role-interface-table th:nth-child(4){width:19%}.role-interface-table th:nth-child(5){width:10%}.role-interface-table th:nth-child(6){width:20%}.role-interface-table th:nth-child(7){width:8%}.role-interface-table tbody tr{cursor:default}.role-interface-name,.role-interface-device{color:var(--accent);font-weight:800}.role-interface-status{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid color-mix(in srgb,var(--run) 52%,var(--card-border));border-radius:999px;background:color-mix(in srgb,var(--run) 12%,var(--surface));color:color-mix(in srgb,var(--run) 76%,var(--text));font-size:.72rem;font-weight:800;white-space:nowrap}.role-interface-status i{width:7px;height:7px;border-radius:50%;background:var(--run);box-shadow:0 0 0 3px color-mix(in srgb,var(--run) 18%,transparent)}.role-interface-vlan{display:inline-flex;padding:3px 7px;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--card-border));border-radius:5px;background:color-mix(in srgb,var(--accent) 8%,var(--surface));color:var(--text);font:750 .72rem/1.2 var(--mono);white-space:nowrap}.role-interface-table td:nth-child(6) b,.role-interface-table td:nth-child(6) small{display:block}.role-interface-table td:nth-child(6) small{margin-top:3px;color:var(--muted);font-size:.7rem}.role-interface-open{padding:5px 8px;border:1px solid color-mix(in srgb,var(--accent) 42%,var(--card-border));border-radius:5px;background:color-mix(in srgb,var(--accent) 9%,var(--surface));color:var(--accent);font-size:.72rem;font-weight:800;white-space:nowrap;cursor:pointer}.role-interface-open:hover,.role-interface-open:focus-visible{background:var(--accent);color:#fff;outline:none}

/* Virtual machine catalog */
#vmCatalogIndex[hidden],.vm-detail-page[hidden],.vm-catalog-empty[hidden]{display:none!important}.vm-catalog-titlebar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:4px 2px 12px}.vm-catalog-titlebar span,.vm-detail-head>div>span{color:#8b5cf6;font:800 .68rem/1.2 var(--mono);letter-spacing:.14em}.vm-catalog-titlebar h2{margin:4px 0 2px}.vm-catalog-titlebar p{margin:0;color:var(--muted);font-size:.82rem}.vm-catalog-titlebar>b{padding:6px 10px;border:1px solid color-mix(in srgb,#8b5cf6 35%,var(--card-border));border-radius:999px;background:color-mix(in srgb,#8b5cf6 8%,var(--surface));color:#8b5cf6;font:750 .72rem/1 var(--mono);white-space:nowrap}.vm-catalog-metrics{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:8px;margin-bottom:10px}.vm-catalog-metrics>div{position:relative;overflow:hidden;padding:10px 12px;border:1px solid var(--card-border);border-left:3px solid #8b5cf6;border-radius:8px;background:var(--surface)}.vm-catalog-metrics>div.running{border-left-color:var(--run)}.vm-catalog-metrics>div.stopped{border-left-color:var(--stby)}.vm-catalog-metrics span{display:block;color:var(--muted);font-size:.7rem}.vm-catalog-metrics b{display:block;margin-top:3px;color:var(--text);font-size:1.15rem}.vm-catalog-toolbar{display:grid;grid-template-columns:auto minmax(240px,1fr) 170px auto;align-items:center;gap:8px;margin-bottom:10px;padding:8px;border:1px solid var(--card-border);border-radius:8px;background:var(--surface)}.vm-catalog-tabs{display:flex;padding:3px;border:1px solid var(--card-border);border-radius:7px;background:var(--layer)}.vm-catalog-tabs button{padding:6px 10px;border:0;border-radius:5px;background:transparent;color:var(--muted);font-size:.74rem;font-weight:800;cursor:pointer;white-space:nowrap}.vm-catalog-tabs button.active{background:color-mix(in srgb,#8b5cf6 16%,var(--surface));color:color-mix(in srgb,#8b5cf6 76%,var(--text));box-shadow:inset 0 0 0 1px color-mix(in srgb,#8b5cf6 42%,var(--card-border))}.vm-catalog-toolbar input,.vm-catalog-toolbar select{min-width:0;padding:8px 10px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer);color:var(--text);font-size:.8rem}.vm-catalog-toolbar>span{display:grid;place-items:center;min-width:58px;padding:5px 8px;border-radius:999px;background:color-mix(in srgb,#8b5cf6 12%,var(--surface));color:#8b5cf6;font:800 .72rem/1 var(--mono)}.vm-catalog-table-wrap{overflow:auto;max-height:min(68vh,760px);border:1px solid var(--card-border);border-radius:9px;background:var(--surface)}.vm-catalog-table{width:100%;min-width:1080px;border-collapse:collapse;font-size:.82rem}.vm-catalog-table th,.vm-catalog-table td{padding:10px 11px;border-bottom:1px solid var(--card-border);text-align:left;vertical-align:middle}.vm-catalog-table th{position:sticky;top:0;z-index:2;background:var(--layer);color:var(--muted);font-size:.72rem;letter-spacing:.04em}.vm-catalog-table tbody tr{cursor:pointer;outline:none}.vm-catalog-table tbody tr:hover,.vm-catalog-table tbody tr:focus-visible{background:color-mix(in srgb,#8b5cf6 10%,var(--surface));box-shadow:inset 4px 0 #8b5cf6}.vm-catalog-table tbody tr:last-child td{border-bottom:0}.vm-catalog-table td b,.vm-catalog-table td small{display:block}.vm-catalog-table td small{margin-top:3px;color:var(--muted);font-size:.69rem}.vm-catalog-name,.vm-catalog-ip{color:color-mix(in srgb,#8b5cf6 72%,var(--text));font-weight:850}.vm-catalog-host{padding:0;border:0;background:transparent;color:var(--accent);font-weight:850;cursor:pointer}.vm-catalog-host:hover{text-decoration:underline}.vm-catalog-empty{padding:34px;border:1px solid var(--card-border);border-top:0;text-align:center;color:var(--muted)}.vm-detail-back{margin-bottom:10px;padding:6px 10px;border:1px solid var(--card-border);border-radius:6px;background:var(--surface);color:#8b5cf6;font-weight:750;cursor:pointer}.vm-detail-breadcrumb{margin-bottom:10px;color:var(--muted);font-size:.76rem}.vm-detail-breadcrumb span{color:#8b5cf6;font-family:var(--mono)}.vm-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;padding:15px 16px;border:1px solid var(--card-border);border-top:3px solid #8b5cf6;border-radius:10px 10px 0 0;background:var(--surface)}.vm-detail-head h2{margin:4px 0 2px;font-size:1.45rem}.vm-detail-head p{margin:0;color:var(--muted)}.vm-detail-actions{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:7px}.vm-detail-actions button,.vm-recovery-link{padding:7px 10px;border:1px solid color-mix(in srgb,#8b5cf6 42%,var(--card-border));border-radius:6px;background:color-mix(in srgb,#8b5cf6 9%,var(--surface));color:color-mix(in srgb,#8b5cf6 76%,var(--text));font-size:.76rem;font-weight:800;cursor:pointer}.vm-detail-actions button:hover,.vm-recovery-link:hover{background:#8b5cf6;color:#fff}.vm-detail-tabs{display:flex;gap:3px;padding:0 12px;border:1px solid var(--card-border);border-top:0;background:var(--surface)}.vm-detail-tabs button{padding:10px 9px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-weight:750;cursor:pointer}.vm-detail-tabs button.active{border-bottom-color:#8b5cf6;color:var(--text)}.vm-detail-tabs b{display:inline-grid;place-items:center;min-width:20px;margin-left:3px;padding:2px 5px;border-radius:999px;background:color-mix(in srgb,#8b5cf6 16%,var(--surface));color:#8b5cf6;font-size:.65rem}.vm-detail-content{margin-top:14px}.vm-detail-card{overflow:hidden;border:1px solid var(--card-border);border-radius:9px;background:var(--surface);box-shadow:var(--shadow-sm)}.vm-detail-card[hidden]{display:none!important}.vm-detail-card h3{margin:0;padding:10px 12px;border-bottom:1px solid var(--card-border);background:var(--layer);font-size:.86rem}.vm-detail-card dl{display:grid;grid-template-columns:minmax(150px,34%) 1fr;margin:0}.vm-detail-card dt,.vm-detail-card dd{margin:0;padding:10px 12px;border-bottom:1px dashed color-mix(in srgb,var(--card-border) 76%,transparent);font-size:.82rem}.vm-detail-card dt{color:var(--muted);font-weight:750}.vm-detail-card dd{overflow-wrap:anywhere}.vm-detail-card>p{margin:0;padding:13px;color:var(--muted);font-size:.8rem}.vm-detail-card pre{margin:0;padding:14px;overflow:auto;background:color-mix(in srgb,#8b5cf6 5%,var(--layer));color:var(--text);font:600 .76rem/1.65 var(--mono);white-space:pre-wrap}.vm-recovery-link{margin:0 13px 13px}.vm-related-link{display:flex;align-items:center;justify-content:space-between;width:100%;padding:11px 12px;border:0;border-bottom:1px solid var(--card-border);background:transparent;color:var(--text);text-align:left;cursor:pointer}.vm-related-link:hover{background:color-mix(in srgb,#8b5cf6 10%,var(--surface))}.vm-related-link span,.vm-related-link b,.vm-related-link small{display:block}.vm-related-link b{color:#8b5cf6}.vm-related-link small{margin-top:3px;color:var(--muted);font-size:.7rem}.vm-related-link i{color:#8b5cf6;font-size:1.15rem}.vm-detail-empty{padding:14px!important;color:var(--muted)}
@media(max-width:900px){.vm-catalog-metrics{grid-template-columns:1fr 1fr}.vm-catalog-toolbar{grid-template-columns:1fr}.vm-catalog-tabs{width:max-content}.vm-detail-head{display:grid}.vm-detail-actions{justify-content:flex-start}.vm-detail-card dl{grid-template-columns:1fr}.vm-detail-card dd{padding-top:0}}

/* IP address management */
#ipamIndex[hidden],.ipam-detail-page[hidden]{display:none!important}.ipam-titlebar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:4px 2px 12px}.ipam-titlebar span,.ipam-detail-head>div>span{color:var(--accent);font:800 .68rem/1.2 var(--mono);letter-spacing:.14em}.ipam-titlebar h2{margin:4px 0 2px}.ipam-titlebar p{margin:0;color:var(--muted);font-size:.82rem}.ipam-titlebar>b{padding:6px 10px;border:1px solid var(--card-border);border-radius:999px;background:var(--surface);color:var(--accent);font:750 .72rem/1 var(--mono);white-space:nowrap}.ipam-tabs{display:flex;gap:3px;border-bottom:1px solid var(--card-border)}.ipam-tabs button{margin-bottom:-1px;padding:10px 15px;border:1px solid transparent;border-bottom-color:var(--card-border);border-radius:7px 7px 0 0;background:transparent;color:var(--muted);font-size:.82rem;font-weight:800;cursor:pointer}.ipam-tabs button.active{border-color:var(--card-border);border-bottom-color:var(--surface);background:var(--surface);color:var(--accent)}.ipam-tools{display:grid;grid-template-columns:minmax(260px,1fr) 180px auto;gap:8px;margin:10px 0;padding:8px;border:1px solid var(--card-border);border-radius:8px;background:var(--surface)}.ipam-tools input,.ipam-tools select{min-width:0;padding:8px 10px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer);color:var(--text);font-size:.82rem}.ipam-tools>span{display:grid;place-items:center;min-width:58px;padding:5px 8px;border-radius:999px;background:color-mix(in srgb,var(--accent) 10%,var(--surface));color:var(--accent);font:800 .72rem/1 var(--mono)}.ipam-panel{display:none}.ipam-panel.active{display:block}.ipam-table-wrap{overflow:auto;max-height:min(67vh,760px);border:1px solid var(--card-border);border-radius:9px;background:var(--surface)}.ipam-table{width:100%;min-width:1060px;border-collapse:collapse;font-size:.82rem}.ipam-table th,.ipam-table td{padding:10px 11px;border-bottom:1px solid var(--card-border);text-align:left;vertical-align:middle}.ipam-table th{position:sticky;top:0;z-index:2;background:var(--layer);color:var(--muted);font-size:.72rem;letter-spacing:.04em}.ipam-table tbody tr{cursor:pointer;outline:none}.ipam-table tbody tr:hover,.ipam-table tbody tr:focus-visible{background:color-mix(in srgb,var(--accent) 10%,var(--surface));box-shadow:inset 4px 0 var(--accent)}.ipam-table tbody tr:last-child td{border-bottom:0}.ipam-table td b,.ipam-table td small{display:block}.ipam-table td small{margin-top:3px;color:var(--muted);font-size:.7rem}.ipam-address{color:var(--accent);font-weight:850}.ipam-duplicate{color:var(--danger,#d54d57)!important;font-weight:800}.ipam-status,.ipam-scope,.ipam-count-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border:1px solid var(--card-border);border-radius:999px;font-size:.7rem;font-weight:850;white-space:nowrap}.ipam-status.active{border-color:color-mix(in srgb,var(--run) 55%,var(--card-border));background:color-mix(in srgb,var(--run) 12%,var(--surface));color:color-mix(in srgb,var(--run) 82%,var(--text))}.ipam-status.standby,.ipam-status.stopped{border-color:color-mix(in srgb,var(--stby) 58%,var(--card-border));background:color-mix(in srgb,var(--stby) 14%,var(--surface));color:color-mix(in srgb,var(--stby) 78%,var(--text))}.ipam-status.duplicate{border-color:color-mix(in srgb,var(--danger,#d54d57) 58%,var(--card-border));background:color-mix(in srgb,var(--danger,#d54d57) 12%,var(--surface));color:color-mix(in srgb,var(--danger,#d54d57) 82%,var(--text))}.ipam-scope{border-color:color-mix(in srgb,var(--accent) 35%,var(--card-border));background:color-mix(in srgb,var(--accent) 8%,var(--surface));color:var(--text)}.ipam-count-badge{min-width:30px;border-color:transparent;background:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--accent)}.ipam-empty{padding:34px;border:1px solid var(--card-border);border-top:0;text-align:center;color:var(--muted)}.ipam-empty[hidden]{display:none!important}.ipam-back{margin-bottom:10px;padding:6px 10px;border:1px solid var(--card-border);border-radius:6px;background:var(--surface);color:var(--accent);font-weight:750;cursor:pointer}.ipam-breadcrumb{margin:0 0 10px;color:var(--muted);font-size:.76rem}.ipam-breadcrumb span{color:var(--accent);font-family:var(--mono)}.ipam-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;padding:14px 16px;border:1px solid var(--card-border);border-radius:10px 10px 0 0;background:var(--surface)}.ipam-detail-head h2{margin:4px 0 2px;font-size:1.45rem}.ipam-detail-head small{color:var(--muted)}.ipam-detail-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.ipam-action{padding:7px 10px;border:1px solid color-mix(in srgb,var(--accent) 42%,var(--card-border));border-radius:6px;background:color-mix(in srgb,var(--accent) 9%,var(--surface));color:var(--accent);font-size:.76rem;font-weight:800;cursor:pointer}.ipam-action:hover{background:var(--accent);color:#fff}.ipam-detail-tabs{display:flex;gap:4px;padding:0 12px;border:1px solid var(--card-border);border-top:0;background:var(--surface)}.ipam-detail-tabs button{padding:10px 9px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-weight:750}.ipam-detail-tabs button.active{border-bottom-color:var(--accent);color:var(--text)}.ipam-detail-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;margin-top:14px}.ipam-detail-grid>div{display:grid;align-content:start;gap:14px}.ipam-card{overflow:hidden;border:1px solid var(--card-border);border-radius:9px;background:var(--surface);box-shadow:var(--shadow-sm)}.ipam-card h3{margin:0;padding:10px 12px;border-bottom:1px solid var(--card-border);background:var(--layer);font-size:.86rem}.ipam-card dl{display:grid;grid-template-columns:minmax(150px,42%) 1fr;margin:0}.ipam-card dt,.ipam-card dd{margin:0;padding:9px 12px;border-bottom:1px dashed color-mix(in srgb,var(--card-border) 76%,transparent);font-size:.8rem}.ipam-card dt{color:var(--muted);font-weight:750}.ipam-card dd{color:var(--text);overflow-wrap:anywhere}.ipam-card p{margin:0;padding:13px;color:var(--text);font-size:.8rem;line-height:1.6}.ipam-related-row,.ipam-related-link{display:flex;align-items:center;justify-content:space-between;width:100%;padding:11px 12px;border:0;border-bottom:1px solid var(--card-border);background:transparent;color:var(--text);text-align:left}.ipam-related-link{cursor:pointer}.ipam-related-link:hover{background:color-mix(in srgb,var(--accent) 10%,var(--surface));color:var(--accent)}.ipam-related-row b,.ipam-related-link b{display:grid;place-items:center;min-width:28px;padding:4px 7px;border-radius:999px;background:color-mix(in srgb,var(--accent) 16%,var(--surface));color:var(--accent);font-size:.72rem}.ipam-related-row:last-child,.ipam-related-link:last-child{border-bottom:0}
@media(max-width:800px){.ipam-titlebar,.ipam-detail-head{display:grid}.ipam-tools{grid-template-columns:1fr}.ipam-detail-actions{justify-content:flex-start}.ipam-detail-grid{grid-template-columns:1fr}.ipam-card dl{grid-template-columns:1fr}.ipam-card dd{padding-top:0}.ipam-tabs{overflow:auto}.ipam-tabs button{white-space:nowrap}}
@media(max-width:640px){.role-catalog-tabs{display:grid;grid-template-columns:1fr 1fr}.role-catalog-tabs button{margin:0;border:1px solid var(--card-border);border-radius:6px}.role-catalog-tabs button.active{border-color:var(--accent)}.role-catalog-detail dl{grid-template-columns:1fr}.role-catalog-detail dd{margin-top:-4px}.role-catalog-table{min-width:640px}}

/* Compact navigation and labeled global search */
.portal-nav-section{gap:1px}.portal-nav-section-toggle{min-height:31px;padding:5px 9px;font-size:11px}.portal-nav-children{gap:1px;margin:0 0 3px 13px;padding-left:8px}.portal-nav-children button[data-tab]{min-height:32px;padding-block:4px;padding-left:7px;font-size:12px}.portal-nav-section:not(.open){margin-bottom:1px}.portal-nav-section-toggle i{margin-left:auto;color:#7590a4}.portal-search-result{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto auto;min-height:68px;padding:8px 72px 8px 10px;border-bottom-color:#263642}.portal-search-result-path{grid-column:1;display:flex;align-items:center;gap:5px;min-width:0;margin-bottom:3px;color:#71889a;font-size:9px}.portal-search-result-path b{overflow:hidden;max-width:130px;color:#79b9e3;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.portal-search-result-path i{font-style:normal}.portal-search-result-path em{padding:2px 5px;border:1px solid #405262;border-radius:999px;color:#aebdc9;font-style:normal;white-space:nowrap}.portal-search-result-title{grid-row:2}.portal-search-result-meta{grid-row:3}.portal-search-result-open{position:absolute;right:10px;top:50%;padding:4px 7px;border:1px solid #3a607a;border-radius:5px;color:#77c5f4;font-size:9px;font-weight:800;transform:translateY(-50%)}.portal-search-result mark{padding:0 1px;border-radius:2px;background:#7d5b15;color:#fff3bd}.portal-search-result:hover .portal-search-result-open,.portal-search-result.active .portal-search-result-open{border-color:#61b5e8;background:#2d6f99;color:#fff}:root[data-theme="light"] .portal-search-result{border-bottom-color:#d7e3eb}:root[data-theme="light"] .portal-search-result-path{color:#6b8191}:root[data-theme="light"] .portal-search-result-path b{color:#267cad}:root[data-theme="light"] .portal-search-result-path em{border-color:#bfd0db;color:#526c7d}:root[data-theme="light"] .portal-search-result-open{border-color:#9dc4dc;color:#207bad}:root[data-theme="light"] .portal-search-result mark{background:#ffe59b;color:#26333d}

/* IP scope tabs and search */
.ipam-tools{grid-template-columns:auto minmax(260px,1fr) auto}.ipam-scope-tabs{display:flex;align-items:center;gap:3px;padding:3px;border:1px solid var(--card-border);border-radius:7px;background:var(--layer)}.ipam-scope-tabs button{display:flex;align-items:center;gap:5px;min-height:29px;padding:5px 9px;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--muted);font-size:.7rem;font-weight:800;white-space:nowrap;cursor:pointer}.ipam-scope-tabs button b{display:grid;min-width:19px;height:18px;padding:0 5px;border-radius:999px;background:color-mix(in srgb,var(--muted) 13%,transparent);font:800 .62rem/18px var(--mono);place-items:center}.ipam-scope-tabs button:hover{color:var(--text)}.ipam-scope-tabs button.active{border-color:color-mix(in srgb,var(--accent) 40%,var(--card-border));background:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--accent)}.ipam-scope-tabs button.active b{background:color-mix(in srgb,var(--accent) 20%,var(--surface))}.ipam-searchbox{position:relative;min-width:0}.ipam-searchbox input{width:100%;height:100%;padding-right:34px}.ipam-searchbox button{position:absolute;top:50%;right:6px;display:grid;width:24px;height:24px;padding:0;border:0;border-radius:5px;background:color-mix(in srgb,var(--accent) 12%,var(--surface));color:var(--accent);place-items:center;transform:translateY(-50%);cursor:pointer}.ipam-searchbox button[hidden]{display:none}.ipam-scope.public-uplink{border-color:color-mix(in srgb,#a78bfa 52%,var(--card-border));background:color-mix(in srgb,#a78bfa 12%,var(--surface));color:color-mix(in srgb,#a78bfa 78%,var(--text))}.ipam-scope.global{border-color:color-mix(in srgb,#38bdf8 48%,var(--card-border));background:color-mix(in srgb,#38bdf8 11%,var(--surface));color:color-mix(in srgb,#38bdf8 76%,var(--text))}.ipam-scope.local-mgmt{border-color:color-mix(in srgb,var(--run) 48%,var(--card-border));background:color-mix(in srgb,var(--run) 10%,var(--surface));color:color-mix(in srgb,var(--run) 76%,var(--text))}
@media(max-width:1000px){.ipam-tools{grid-template-columns:1fr}.ipam-scope-tabs{width:max-content;max-width:100%;overflow:auto}.portal-search-result-path b{max-width:100px}}
@media(max-width:620px){.ipam-scope-tabs{display:grid;grid-template-columns:1fr 1fr;width:100%}.portal-search-result{min-height:72px;padding-right:58px}.portal-search-result-open{right:7px}.portal-search-result-path b{max-width:84px}}

/* Global search: table-of-contents label on the left, matching information on the right */
.portal-search-shell{max-width:820px}
.portal-search-result{
  grid-template-columns:minmax(116px,148px) minmax(0,1fr) auto;
  grid-template-rows:auto;align-items:stretch;gap:0;
  min-height:62px;padding:6px 8px;
}
.portal-search-result-source{
  grid-column:1;display:grid;align-content:center;gap:2px;min-width:0;
  padding:3px 11px 3px 5px;border-right:1px solid #344957;
}
.portal-search-result-source small{
  overflow:hidden;color:#7990a1;font-size:9px;font-weight:750;
  text-overflow:ellipsis;white-space:nowrap;
}
.portal-search-result-source b{
  overflow:hidden;color:#65c5f3;font-size:12px;font-weight:850;
  text-overflow:ellipsis;white-space:nowrap;
}
.portal-search-result-source em{
  width:max-content;max-width:100%;overflow:hidden;padding:1px 5px;
  border:1px solid #405665;border-radius:999px;color:#acbecb;
  font-size:8px;font-style:normal;text-overflow:ellipsis;white-space:nowrap;
}
.portal-search-result-match{
  grid-column:2;display:grid;align-content:center;min-width:0;padding:3px 12px;
}
.portal-search-result-title,.portal-search-result-meta{grid-column:auto;display:block;min-width:0}
.portal-search-result-title{font-size:13px}
.portal-search-result-meta{font-size:10px}
.portal-search-result-open{
  position:static;grid-column:3;align-self:center;min-width:46px;padding:4px 6px;
  transform:none;text-align:center;
}
:root[data-theme="light"] .portal-search-result-source{border-right-color:#d1dee7}
:root[data-theme="light"] .portal-search-result-source small{color:#6f8493}
:root[data-theme="light"] .portal-search-result-source b{color:#1979ae}
:root[data-theme="light"] .portal-search-result-source em{border-color:#bdd0dc;color:#526d7e}
@media(max-width:620px){
  .portal-search-result{grid-template-columns:minmax(92px,108px) minmax(0,1fr);min-height:64px;padding:5px}
  .portal-search-result-source{padding-right:7px}
  .portal-search-result-source b{font-size:11px}
  .portal-search-result-match{padding:3px 8px}
  .portal-search-result-open{display:none}
}

/* Rack summary and selected device first, physical visualization below */
#tab-rack .racklayout{
  grid-template-columns:minmax(500px,1.45fr) minmax(300px,.75fr);
  gap:14px;
}
#tab-rack .rack-face-card{
  grid-column:1/-1;grid-row:2;
  border-color:color-mix(in srgb,var(--accent) 30%,var(--card-border));
  box-shadow:0 12px 28px color-mix(in srgb,var(--accent) 8%,transparent),var(--shadow-sm);
}
#tab-rack .rack{grid-column:1;grid-row:1;min-width:0}
#tab-rack .rackside{
  position:static;grid-column:2;grid-row:1;min-width:0;
  padding:14px;border:1px solid var(--card-border);background:var(--surface);
}
@media(max-width:900px){
  #tab-rack .racklayout{grid-template-columns:1fr}
  #tab-rack .rack{grid-column:1;grid-row:1}
  #tab-rack .rackside{grid-column:1;grid-row:2}
  #tab-rack .rack-face-card{grid-column:1;grid-row:3}
  #tab-rack .rackside{position:static}
}

/* Readability scale */
html{font-size:clamp(16px,calc(14px + .3vw),18px)}
body{line-height:1.58}
header h1{font-size:clamp(1.32rem,calc(1rem + 1.45vw),2rem)}
header .meta{font-size:clamp(.78rem,calc(.73rem + .15vw),.86rem)}
h2{font-size:clamp(1.15rem,calc(.96rem + .72vw),1.5rem)}
.lead{font-size:clamp(.86rem,calc(.8rem + .16vw),.94rem)}
.portal-nav-title strong{font-size:15px}.portal-nav-title small,.portal-nav-group{font-size:11px}
nav.tabs button[data-tab]{min-height:44px;font-size:14px}
.portal-topbar input,.portal-topbar button,.data-tools button,.import-actions button,
.wrap input,.wrap select,.wrap textarea,.wrap button{font-size:max(13px,.8rem)}
.dashboard-metric span,.dashboard-host-name b,.dashboard-attention-list span b,
.workspace-card p,.guide-article ol,.guide-article ul{font-size:.82rem}
.dashboard-metric small,.dashboard-route-node small,.dashboard-route-legend,
.dashboard-host-name small,.dashboard-host-count,.dashboard-attention-list span small{font-size:.72rem}
.panel::before,.dashboard-kicker,.dashboard-card-head span,.rack-page-kicker,
.workspace-card>span,.guide-section-head>span{font-size:.68rem}
.panel dl,.rolecard dl,.rack-device-detail dl,.inventory-detail-grid dd,
.rolecard-status-row .what,.server-map-head{font-size:.8rem}
.rolecard-selectable h3{font-size:clamp(1rem,.94rem + .22vw,1.12rem)}
#rolewrap .rolegrid-compact .rolecard:not(.is-open) h3{font-size:clamp(.96rem,.9rem + .2vw,1.08rem)}
.rolecard-primary,.rolecard-vms .guest-ip,.rolecard-vms .guest-role{font-size:.78rem}
.wrap table{font-size:.82rem}
.wrap table th{font-size:.76rem}.wrap table td{font-size:.82rem}
.inventory-table,.role-catalog-table,.ops-table{font-size:.82rem}
.role-catalog-tabs button,.role-catalog-tools input{font-size:.82rem}
.role-catalog-tools b,.role-catalog-table th,.role-catalog-count{font-size:.72rem}
.role-catalog-detail h3{font-size:1rem}.role-catalog-detail dl{font-size:.82rem}
.ops-panel-head span{font-size:.7rem}.ops-panel-head p,.ops-table td{font-size:.82rem}.ops-table th{font-size:.76rem}
.ops-actions button,.ops-detail,.ops-status{font-size:.74rem}
.rack-selector button b,.rack-summary b{font-size:14px}
.rack-selector button span,.rack-summary span,.rack-list-model,.rack-source-note,
.rack-detail-title small,.rack-device-detail>p{font-size:12px}
.connection-back-button,.connection-vlan-legend span,.connection-device header b,
.connection-port,.connection-target strong,.rack-rear-study-filters button,
.rack-rear-study-legend,.rack-rear-study-detail,.rack-cable-toolbar button,
.rack-cable-toolbar span,.rack-cable-detail{font-size:11px}
.connection-device header small,.connection-path,.connection-target small{font-size:10px}
@media(max-width:720px){html{font-size:16px}.wrap{padding-top:10px}.portal-nav-title strong{font-size:14px}}

/* Device detail page */
#roleCatalogIndex[hidden],.role-device-detail-page[hidden]{display:none!important}
.role-device-name{max-width:100%;padding:0!important;border:0!important;background:transparent!important;color:var(--text)!important;font:inherit!important;font-weight:800!important;text-align:left;cursor:pointer}.role-device-name:hover{color:var(--accent)!important;text-decoration:underline;text-underline-offset:3px}
.role-device-detail-page{min-width:0}.role-device-back{margin-bottom:12px;padding:7px 11px;border:1px solid var(--card-border);border-radius:6px;background:var(--surface);color:var(--accent);font-weight:700;cursor:pointer}.role-device-back:hover{border-color:var(--accent);background:var(--accent-soft)}
.role-device-breadcrumb{margin:2px 0 10px;color:var(--muted);font:.75rem/1.4 var(--mono)}.role-device-breadcrumb span{color:var(--accent)}
.role-device-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:16px 18px;border:1px solid var(--card-border);border-top:4px solid var(--accent);border-radius:10px 10px 0 0;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 5%,var(--surface)),var(--surface) 55%);box-shadow:var(--shadow-sm)}.role-device-detail-head h2{margin:3px 0 2px;font-size:1.45rem}.role-device-detail-head h2::before{display:none}.role-device-detail-head p{margin:0;color:var(--muted);font-size:.84rem}.role-device-head-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:7px}.role-device-head-actions button{padding:7px 10px;border:1px solid color-mix(in srgb,var(--text) 20%,var(--card-border));border-radius:6px;background:var(--surface-raised);color:var(--text);font-weight:700;cursor:pointer;box-shadow:0 1px 2px color-mix(in srgb,var(--text) 8%,transparent)}.role-device-head-actions button:hover,.role-device-head-actions button:focus-visible{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.role-device-head-actions .role-detail-menu-button.edit{border-color:#d6972f;background:#fff2d8;color:#8a5000}.role-device-head-actions .role-detail-menu-button.bookmark.active{border-color:#a97905;background:#fff3c4;color:#765000}
.role-device-subtabs{display:flex;gap:5px;padding:7px 12px 0;border:1px solid var(--card-border);border-top:0;background:color-mix(in srgb,var(--layer) 88%,var(--surface))}.role-device-subtabs button{padding:10px 13px;border:1px solid transparent;border-bottom:3px solid transparent;border-radius:7px 7px 0 0;background:transparent;color:var(--muted);font-weight:700;cursor:pointer}.role-device-subtabs button.active{border-color:color-mix(in srgb,var(--accent) 45%,var(--card-border));border-bottom-color:var(--accent);background:var(--surface);color:var(--accent);box-shadow:0 -2px 8px color-mix(in srgb,var(--accent) 10%,transparent)}.role-device-subtabs button:hover{background:color-mix(in srgb,var(--accent) 9%,var(--surface));color:var(--accent)}.role-device-subtabs b,.role-device-detail-card h3 b{display:inline-flex;min-width:22px;justify-content:center;margin-left:4px;padding:3px 6px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font:.68rem/1 var(--mono)}
.role-device-detail-grid{display:grid;grid-template-columns:minmax(300px,.92fr) minmax(360px,1.08fr);align-items:start;gap:14px;margin-top:14px}.role-device-detail-side{display:grid;gap:14px}.role-device-detail-card{overflow:hidden;border:1px solid var(--card-border);border-radius:8px;background:var(--surface);box-shadow:var(--shadow-sm);scroll-margin-top:76px}.role-device-detail-card>h3{display:flex;align-items:center;justify-content:space-between;margin:0;padding:11px 13px;border-bottom:1px solid var(--card-border);background:var(--layer);font-size:.9rem}.role-device-detail-card dl{display:grid;grid-template-columns:minmax(120px,.7fr) minmax(0,1.3fr);margin:0}.role-device-detail-card dt,.role-device-detail-card dd{min-width:0;margin:0;padding:10px 12px;border-bottom:1px solid var(--line);font-size:.82rem;overflow-wrap:anywhere}.role-device-detail-card dt{color:var(--muted);font-weight:700}.role-device-detail-card dd{color:var(--text);font-weight:600}.role-device-detail-card dt:last-of-type,.role-device-detail-card dd:last-of-type{border-bottom:0}
.role-detail-tabbed{grid-template-columns:1fr}.role-detail-tabbed>.role-device-detail-side{display:contents}.role-device-detail-card[hidden]{display:none!important}
.role-device-detail-card ul{margin:0;padding:0;list-style:none}.role-device-detail-card li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line)}.role-device-detail-card li:last-child{border-bottom:0}.role-device-detail-card li div{display:grid;gap:3px;min-width:0}.role-device-detail-card li b{color:var(--text);font-size:.82rem}.role-device-detail-card li span{color:var(--muted);font-size:.75rem;overflow-wrap:anywhere}.role-device-detail-card li em{max-width:260px;color:var(--accent);font-size:.72rem;font-style:normal;text-align:right;overflow-wrap:anywhere}.role-device-detail-card li em.run{color:var(--run)}.role-device-detail-card li em.stop{color:var(--stop)}.role-device-empty{margin:0;padding:20px;color:var(--muted);text-align:center}.role-device-description p{margin:0;padding:13px;color:var(--text);font-size:.82rem;line-height:1.75}
.role-device-detail-card li.role-device-related-item{display:block;padding:0}.role-device-related-link{display:grid;grid-template-columns:minmax(0,1fr) minmax(90px,auto) 18px;align-items:center;gap:10px;width:100%;padding:11px 12px;border:0;border-left:4px solid transparent;background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.role-device-related-link:hover,.role-device-related-link:focus-visible{border-left-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--surface));outline:none}.role-device-related-link:hover b,.role-device-related-link:focus-visible b{color:var(--accent)}.role-device-related-link i{color:var(--accent);font:800 1.25rem/1 var(--mono);text-align:right}.role-device-related-static{border-left:4px solid var(--stop);background:color-mix(in srgb,var(--stop) 8%,var(--surface))}
.role-device-detail-card li em.stby{color:var(--stby)}.role-guest-detail-link em{font-weight:800}.role-guest-check{overflow-wrap:anywhere;white-space:pre-wrap}
@media(max-width:850px){.role-device-detail-head{display:grid}.role-device-head-actions{justify-content:flex-start}.role-device-detail-grid{grid-template-columns:1fr}}@media(max-width:560px){.role-device-subtabs{overflow-x:auto}.role-device-subtabs button{white-space:nowrap}.role-device-detail-card dl{grid-template-columns:1fr}.role-device-detail-card dt{padding-bottom:3px;border-bottom:0}.role-device-detail-card dd{padding-top:3px}.role-device-detail-card li{grid-template-columns:1fr}.role-device-detail-card li em{text-align:left}.role-device-related-link{grid-template-columns:1fr 18px}.role-device-related-link em{grid-column:1;text-align:left}.role-device-related-link i{grid-column:2;grid-row:1 / 3}}
.role-catalog-page-count{display:inline-flex;padding:7px 11px;border:1px solid color-mix(in srgb,var(--accent) 45%,var(--card-border));border-radius:999px;background:var(--accent-soft);color:var(--accent);font:700 .74rem/1 var(--mono)}
.role-catalog-related-list{display:grid}.role-catalog-related-device{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;padding:11px 13px;border:0;border-left:4px solid transparent;border-bottom:1px solid var(--line);background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.role-catalog-related-device:last-child{border-bottom:0}.role-catalog-related-device:hover,.role-catalog-related-device:focus-visible{border-left-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--surface));outline:none}.role-catalog-related-device span{display:grid;gap:3px;min-width:0}.role-catalog-related-device b{font-size:.84rem}.role-catalog-related-device small{overflow:hidden;color:var(--muted);font-size:.74rem;text-overflow:ellipsis;white-space:nowrap}.role-catalog-related-device em{color:var(--accent);font-size:.74rem;font-style:normal;text-align:right}
:root[data-theme="dark"] .role-device-head-actions .role-detail-menu-button.edit{border-color:#9b6b20;background:#3a2a0f;color:#f0b65b}:root[data-theme="dark"] .role-device-head-actions .role-detail-menu-button.bookmark.active{border-color:#9d7a21;background:#33290e;color:#f3c85d}

/* Semantic labels: green=normal, orange=stopped, red=fault, yellow=standby, blue=information. */
:root[data-theme="dark"]{--run:#63e6ad;--run-bg:#123c2e;--stop:#ffb454;--stop-bg:#442b0d;--stby:#f4d35e;--stby-bg:#3b320d;--stby-border:#8e7722;--danger:#ff7676;--danger-bg:#481b20;--warn:#ffb454;--warn-bg:#442b0d}
:root[data-theme="light"]{--run:#087a4d;--run-bg:#d9f3e6;--stop:#a94f00;--stop-bg:#fff0d7;--stby:#7a5a00;--stby-bg:#fff6c7;--stby-border:#c5a63a;--danger:#b4232c;--danger-bg:#fde2e4;--warn:#a94f00;--warn-bg:#fff0d7}
.tag.run,.tag.act{border-color:color-mix(in srgb,var(--run) 58%,var(--card-border));background:var(--run-bg);color:var(--run)}
.tag.stop,.tag.warn{border-color:color-mix(in srgb,var(--stop) 58%,var(--card-border));background:var(--stop-bg);color:var(--stop)}
.tag.dead{border-color:color-mix(in srgb,var(--danger) 65%,var(--card-border));background:var(--danger-bg);color:var(--danger)}
.tag.stby{border-color:var(--stby-border);background:var(--stby-bg);color:var(--stby)}
.cat.sv{border:1px solid color-mix(in srgb,#8b5cf6 62%,var(--card-border));background:color-mix(in srgb,#8b5cf6 18%,var(--surface));color:color-mix(in srgb,#8b5cf6 76%,var(--text))}
.cat.nw{border:1px solid color-mix(in srgb,#168bc1 62%,var(--card-border));background:color-mix(in srgb,#168bc1 18%,var(--surface));color:color-mix(in srgb,#168bc1 76%,var(--text))}
.cat.fw{border:1px solid color-mix(in srgb,var(--danger) 62%,var(--card-border));background:var(--danger-bg);color:var(--danger)}
.cat.storage{border-color:color-mix(in srgb,#2e9d75 62%,var(--card-border));background:color-mix(in srgb,#2e9d75 18%,var(--surface));color:color-mix(in srgb,#2e9d75 76%,var(--text))}
.dashboard-route-node.run,.dashboard-heat.run{border-color:var(--run);background:var(--run-bg);color:var(--run)}
.dashboard-route-node.stop,.dashboard-heat.stop{border-color:var(--stop);background:var(--stop-bg);color:var(--stop)}
.dashboard-route-node.stby,.dashboard-heat.stby{border-color:var(--stby);background:var(--stby-bg);color:var(--stby)}
.role-device-head-actions .tag.stop,.role-device-head-actions .tag.off{border-color:color-mix(in srgb,var(--stop) 68%,var(--card-border));background:var(--stop-bg);color:var(--stop);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--stop) 22%,transparent)}.role-device-head-actions .tag.run,.role-device-head-actions .tag.act{border-color:color-mix(in srgb,var(--run) 58%,var(--card-border));background:var(--run-bg);color:var(--run)}.role-device-head-actions .tag.stby{border-color:var(--stby-border);background:var(--stby-bg);color:var(--stby)}
@media(max-width:560px){.role-catalog-related-device{grid-template-columns:1fr}.role-catalog-related-device em{text-align:left}}

/* Drawer visibility fail-safe: keep the panel inside the viewport whenever its overlay is open. */
.inventory-detail-overlay,.history-overlay{overflow:hidden;isolation:isolate}
.inventory-detail-drawer,.history-drawer{top:0!important;right:0!important;bottom:auto!important;left:auto!important;width:min(640px,calc(100vw - 12px))!important;max-width:100vw;height:100dvh;max-height:100dvh;box-sizing:border-box;will-change:transform}
.inventory-detail-overlay.open .inventory-detail-drawer,.history-overlay.open .history-drawer{transform:translate3d(0,0,0)!important;visibility:visible!important}
@media(prefers-reduced-motion:reduce){.inventory-detail-drawer,.history-drawer{transition:none!important}}
@media(max-width:560px){.inventory-detail-drawer,.history-drawer{width:100vw!important;border-left:0}}


/* IDC_トポロジー可視化ポータル_operations.css */
.ops-session{display:flex;align-items:center;gap:.55rem}.ops-api-state{padding:.28rem .58rem;border:1px solid var(--line,#2d4051);border-radius:999px;font-size:.72rem;color:var(--muted,#91a8ba)}.ops-api-state.online{color:#52d6ae;border-color:rgba(82,214,174,.45);background:rgba(82,214,174,.08)}.ops-api-state.offline{color:#f3bc5a;border-color:rgba(243,188,90,.45);background:rgba(243,188,90,.08)}
.ops-summary-card{appearance:none;width:100%;text-align:left;color:inherit;cursor:pointer}.ops-summary-card.active{border-color:#48bfe3;box-shadow:0 0 0 1px rgba(72,191,227,.3),0 10px 30px rgba(0,0,0,.12)}.ops-summary-card:focus-visible{outline:2px solid #48bfe3;outline-offset:2px}
.ops-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) 180px auto auto auto;gap:.55rem;margin:1rem 0;padding:.7rem;border:1px solid var(--line,#293b4b);border-radius:9px;background:var(--panel,#111c26)}.ops-toolbar input,.ops-toolbar select,.ops-toolbar button,.ops-dialog input,.ops-dialog select,.ops-dialog textarea,.ops-dialog button{min-height:36px;border:1px solid var(--line,#334958);border-radius:6px;background:var(--field,#152330);color:inherit;padding:.48rem .7rem;font:inherit}.ops-toolbar button,.ops-dialog button{cursor:pointer}.ops-toolbar .primary,.ops-dialog .primary{background:#287db4;border-color:#47aee7;color:#fff;font-weight:700}
#opsRefresh[aria-busy="true"]{cursor:wait;opacity:.78}#opsRefresh.is-success{border-color:rgba(39,174,113,.7);background:rgba(39,174,113,.12);color:#249568}#opsRefresh.is-error{border-color:rgba(220,77,77,.7);background:rgba(220,77,77,.12);color:#d64c4c}
.ops-panel{display:none;border:1px solid var(--line,#293b4b);border-radius:10px;background:var(--panel,#101a23);overflow:hidden}.ops-panel.active{display:block}.ops-panel-head{display:flex;align-items:end;justify-content:space-between;gap:1rem;padding:1rem;border-bottom:1px solid var(--line,#293b4b)}.ops-panel-head span{font:700 .62rem/1.2 ui-monospace,monospace;letter-spacing:.16em;color:#55bce4}.ops-panel-head h3{margin:.2rem 0 0}.ops-panel-head p{margin:0;color:var(--muted,#91a8ba);font-size:.78rem}.ops-tablewrap{overflow:auto;max-height:min(56vh,650px)}.ops-table{width:100%;border-collapse:collapse;min-width:940px}.ops-table th{position:sticky;top:0;z-index:1;background:var(--panel-2,#142331);color:var(--muted,#a8bccb);text-align:left;font-size:.72rem;padding:.62rem;border-bottom:1px solid var(--line,#293b4b)}.ops-table td{padding:.62rem;border-bottom:1px solid var(--line,#253744);font-size:.78rem;vertical-align:top}.ops-table tr:hover td{background:rgba(70,169,215,.05)}.ops-empty{text-align:center!important;color:var(--muted,#8da4b5);padding:2.2rem!important}.ops-actions{display:flex;flex-wrap:wrap;gap:.35rem}.ops-actions button{border:1px solid var(--line,#365064);background:transparent;color:inherit;border-radius:5px;padding:.25rem .48rem;cursor:pointer;font-size:.72rem}.ops-actions button.approve{color:#52d6ae;border-color:rgba(82,214,174,.5)}.ops-actions button.reject{color:#ff8794;border-color:rgba(255,135,148,.5)}.ops-status{display:inline-flex;padding:.2rem .5rem;border-radius:999px;border:1px solid currentColor;font-size:.68rem;white-space:nowrap}.ops-status.pending,.ops-status.planned{color:#f3bc5a}.ops-status.approved,.ops-status.completed{color:#52d6ae}.ops-status.rejected,.ops-status.cancelled{color:#ff8794}.ops-status.in_progress{color:#54bdf0}.ops-diff{display:grid;gap:.12rem;max-width:410px;min-width:190px;line-height:1.25}.ops-target,.ops-detail{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ops-target{font-weight:700;color:inherit}.ops-detail{color:var(--muted,#91a8ba);font-size:.72rem}.ops-table td:nth-child(1),.ops-table td:nth-child(2),.ops-table td:nth-child(3),.ops-table td:nth-child(6){white-space:nowrap}.ops-progress{white-space:nowrap}.ops-progress strong{color:#51c9a3}
.ops-dialog-backdrop{position:fixed;inset:0;z-index:4000;display:none;place-items:center;padding:1rem;background:rgba(4,9,14,.74);backdrop-filter:blur(4px)}.ops-dialog-backdrop.open{display:grid}.ops-dialog{width:min(760px,96vw);max-height:92vh;overflow:auto;border:1px solid #3c5a6d;border-radius:12px;background:var(--panel,#101b25);color:inherit;box-shadow:0 26px 80px rgba(0,0,0,.42)}.ops-dialog header{display:flex;justify-content:space-between;align-items:start;padding:1rem 1.15rem;border-bottom:1px solid var(--line,#2d4050)}.ops-dialog header span{font:700 .62rem ui-monospace,monospace;letter-spacing:.16em;color:#55bce4}.ops-dialog header h2{margin:.25rem 0 0}.ops-dialog header button{min-width:36px;padding:.2rem;font-size:1.2rem}.ops-dialog form{padding:1rem 1.15rem}.ops-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}.ops-field{display:grid;gap:.32rem}.ops-field.full{grid-column:1/-1}.ops-field label{font-size:.74rem;color:var(--muted,#9eb2c2);font-weight:700}.ops-field textarea{min-height:86px;resize:vertical}.ops-field small{color:var(--muted,#8da4b5)}.ops-checklist-editor{display:grid;gap:.4rem}.ops-check-row{display:grid;grid-template-columns:auto 1fr auto;gap:.45rem;align-items:center}.ops-dialog footer{display:flex;justify-content:flex-end;gap:.55rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--line,#2d4050)}.ops-form-error{min-height:1.2em;color:#ff8794;font-size:.78rem}.ops-detail-list{display:grid;grid-template-columns:140px 1fr;gap:.55rem .8rem}.ops-detail-list dt{color:var(--muted,#9eb2c2);font-weight:700}.ops-detail-list dd{margin:0;white-space:pre-wrap;word-break:break-word}.ops-audit-before-after{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}.ops-audit-before-after pre{max-height:280px;overflow:auto;padding:.7rem;border:1px solid var(--line,#2d4050);border-radius:6px;background:rgba(0,0,0,.15);white-space:pre-wrap;word-break:break-word;font-size:.72rem}
:root[data-theme="light"] .ops-toolbar,:root[data-theme="light"] .ops-panel,:root[data-theme="light"] .ops-dialog{--panel:#fff;--panel-2:#f2f7fb;--field:#fff;--line:#cbd9e4;color:#17324a}:root[data-theme="light"] .ops-dialog-backdrop{background:rgba(26,47,65,.35)}
@media(max-width:900px){.ops-toolbar{grid-template-columns:1fr 1fr}.ops-toolbar input{grid-column:1/-1}.ops-panel-head{align-items:start;flex-direction:column}.ops-form-grid{grid-template-columns:1fr}.ops-field.full{grid-column:auto}.ops-audit-before-after{grid-template-columns:1fr}}
@media(max-width:560px){.ops-toolbar{grid-template-columns:1fr}.ops-toolbar input{grid-column:auto}.ops-session{align-items:flex-end;flex-direction:column}.ops-dialog{width:100%;max-height:96vh}.ops-detail-list{grid-template-columns:1fr}.ops-detail-list dd{padding-bottom:.5rem}}

/* Compact data I/O and complete IP address inventory */
.data-tools-shell{width:max-content;max-width:100%;margin-top:.6rem;border:1px solid var(--card-border);border-radius:7px;background:var(--surface);box-shadow:var(--shadow-sm)}
.data-tools-shell>summary{display:flex;align-items:center;gap:.45rem;min-height:30px;padding:.28rem .6rem;color:var(--text);font-size:.72rem;font-weight:850;list-style:none;cursor:pointer;user-select:none}
.data-tools-shell>summary::-webkit-details-marker{display:none}.data-tools-shell>summary small{color:var(--muted);font:650 .64rem/1 var(--mono)}.data-tools-shell>summary i{margin-left:auto;color:var(--accent);font-style:normal;transition:transform .16s ease}.data-tools-shell[open]>summary i{transform:rotate(180deg)}
.data-tools-shell .data-tools{margin:0;padding:.45rem .5rem .2rem;border-top:1px solid var(--card-border)}.data-tools-shell .import-note{margin:0;padding:.15rem .55rem .45rem;color:var(--muted);font-size:.63rem}
.ipam-pool-summary{display:grid;grid-template-columns:repeat(5,minmax(110px,1fr));gap:7px;margin-bottom:10px}.ipam-pool-summary button{display:grid;gap:3px;padding:9px 11px;border:1px solid var(--card-border);border-left:3px solid var(--accent);border-radius:7px;background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.ipam-pool-summary button:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface))}.ipam-pool-summary span{color:var(--muted);font-size:.68rem;font-weight:750}.ipam-pool-summary b{font:850 1rem/1.1 var(--mono)}
.ipam-pool-summary button[data-ipam-status-card="used"]{border-left-color:var(--run)}.ipam-pool-summary button[data-ipam-status-card="reserved"]{border-left-color:var(--warn)}.ipam-pool-summary button[data-ipam-status-card="empty"]{border-left-color:#7890a4}.ipam-pool-summary button[data-ipam-status-card="missing"]{border-left-color:var(--danger)}
.ipam-tools{grid-template-columns:auto 150px minmax(260px,1fr) auto}.ipam-status.empty{border-color:color-mix(in srgb,#7890a4 48%,var(--card-border));background:color-mix(in srgb,#7890a4 10%,var(--surface));color:color-mix(in srgb,#7890a4 75%,var(--text))}.ipam-status.reserved{border-color:color-mix(in srgb,var(--warn) 58%,var(--card-border));background:var(--warn-bg);color:color-mix(in srgb,var(--warn) 78%,var(--text))}.ipam-status.missing{border-color:color-mix(in srgb,var(--danger) 58%,var(--card-border));background:var(--danger-bg);color:color-mix(in srgb,var(--danger) 82%,var(--text))}
.ipam-row-empty td{color:var(--muted)}.ipam-row-missing{background:color-mix(in srgb,var(--danger) 4%,var(--surface))}.ipam-table td small{max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ipam-vlan-table{min-width:760px}
@media(max-width:1000px){.ipam-pool-summary{grid-template-columns:repeat(3,minmax(110px,1fr))}.ipam-tools{grid-template-columns:1fr}.data-tools-shell{width:100%}}
@media(max-width:620px){.ipam-pool-summary{grid-template-columns:1fr 1fr}.data-tools-shell .data-tools{display:grid;grid-template-columns:1fr 1fr}.data-tools-shell .data-tools button{width:100%}}


/* IDC_トポロジー可視化ポータル_services.css */
.service-page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:14px}.service-page-heading h2{margin:3px 0 2px}.service-page-heading .lead{margin:0}.service-add-button{flex:0 0 auto;padding:9px 14px;border:1px solid color-mix(in srgb,var(--accent) 50%,var(--card-border));border-radius:7px;background:var(--accent);color:var(--accent-ink);font-weight:800;cursor:pointer}.service-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}.service-summary-card{display:grid;gap:4px;padding:13px 15px;border:1px solid var(--card-border);border-top:3px solid var(--accent);border-radius:8px;background:var(--surface);box-shadow:0 3px 10px rgba(23,42,63,.05)}.service-summary-card span{color:var(--muted);font-size:.76rem}.service-summary-card b{color:var(--text);font:800 1.35rem/1.1 var(--mono)}.service-tools{display:grid;grid-template-columns:minmax(260px,1fr) repeat(3,minmax(130px,auto)) auto;gap:8px;align-items:center;margin-bottom:12px;padding:9px;border:1px solid var(--card-border);border-radius:8px;background:var(--surface)}.service-tools input,.service-tools select{min-width:0;padding:9px 11px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer);color:var(--text);font-size:.82rem}.service-result-count{padding:7px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font:800 .72rem/1 var(--mono);white-space:nowrap}.service-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,.85fr);gap:12px;align-items:start}.service-table-wrap{overflow:auto;max-height:62vh;border:1px solid var(--card-border);border-radius:8px;background:var(--surface)}.service-table{width:100%;border-collapse:collapse;font-size:.82rem}.service-table th,.service-table td{padding:10px 11px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}.service-table th{position:sticky;top:0;z-index:1;background:var(--layer);color:var(--muted);font-size:.72rem;letter-spacing:.04em}.service-table tbody tr{cursor:pointer}.service-table tbody tr:hover{background:color-mix(in srgb,var(--accent) 8%,var(--surface))}.service-table tbody tr.selected{background:color-mix(in srgb,var(--accent) 15%,var(--surface));box-shadow:inset 4px 0 var(--accent)}.service-name-cell{display:grid;gap:3px}.service-name-cell b{color:var(--accent)}.service-name-cell small{max-width:320px;overflow:hidden;color:var(--muted);font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap}.service-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 7px;border:1px solid var(--card-border);border-radius:999px;background:var(--layer);color:var(--muted);font-size:.7rem;font-weight:800;white-space:nowrap}.service-badge.run{border-color:color-mix(in srgb,var(--run) 38%,var(--card-border));background:var(--run-bg);color:var(--run)}.service-badge.stop{background:var(--stop-bg);color:var(--stop)}.service-row-open{padding:6px 9px;border:1px solid color-mix(in srgb,var(--accent) 42%,var(--card-border));border-radius:5px;background:var(--accent-soft);color:var(--accent);font-weight:800;cursor:pointer}.service-detail{position:sticky;top:68px;min-height:240px;border:1px solid var(--card-border);border-top:4px solid var(--accent);border-radius:8px;background:var(--surface);box-shadow:0 5px 16px rgba(23,42,63,.07)}.service-empty{display:grid;place-content:center;gap:8px;min-height:235px;padding:25px;text-align:center}.service-empty b{font-size:1rem}.service-empty span{color:var(--muted);font-size:.8rem}.service-detail-head{padding:16px;border-bottom:1px solid var(--line)}.service-detail-head>span{color:var(--accent);font:800 .66rem/1 var(--mono);letter-spacing:.13em}.service-detail-head h3{margin:6px 0 3px;font-size:1.2rem}.service-detail-head p{margin:0;color:var(--muted);font-family:var(--mono);font-size:.75rem;overflow-wrap:anywhere}.service-detail-body{padding:14px 16px}.service-detail-body dl{display:grid;grid-template-columns:92px minmax(0,1fr);gap:9px 12px;margin:0}.service-detail-body dt{color:var(--muted);font-size:.75rem;font-weight:800}.service-detail-body dd{margin:0;color:var(--text);font-size:.82rem;overflow-wrap:anywhere}.service-detail-url{display:block;margin-top:13px;padding:10px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer);color:var(--accent);font:700 .76rem/1.5 var(--mono);overflow-wrap:anywhere}.service-detail-actions{display:flex;flex-wrap:wrap;gap:7px;padding:0 16px 16px}.service-detail-actions button,.service-detail-actions a{padding:8px 11px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer);color:var(--text);font-size:.76rem;font-weight:800;text-decoration:none;cursor:pointer}.service-detail-actions a{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.service-detail-actions .danger{margin-left:auto;border-color:color-mix(in srgb,var(--danger) 45%,var(--card-border));background:var(--danger-bg);color:var(--danger)}.service-security-note{margin:12px 0 0;padding:9px 12px;border-left:3px solid var(--warn);background:var(--warn-bg);color:var(--text);font-size:.75rem}.service-dialog-backdrop{position:fixed;inset:0;z-index:1200;display:none;place-items:center;padding:18px;background:rgba(6,13,22,.72);backdrop-filter:blur(3px)}.service-dialog-backdrop.open{display:grid}.service-dialog{width:min(680px,100%);max-height:90vh;overflow:auto;border:1px solid var(--card-border);border-radius:10px;background:var(--surface);box-shadow:0 24px 70px rgba(0,0,0,.35)}.service-dialog>header{position:static;display:flex;align-items:flex-start;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line);background:var(--layer)}.service-dialog>header span{color:var(--accent);font:800 .65rem/1 var(--mono);letter-spacing:.14em}.service-dialog>header h2{margin:5px 0 0;font-size:1.1rem}.service-dialog>header button{border:0;background:transparent;color:var(--muted);font-size:1.25rem;cursor:pointer}.service-dialog form{padding:17px}.service-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.service-form-grid label{display:grid;gap:6px;color:var(--muted);font-size:.75rem;font-weight:800}.service-form-grid label.wide{grid-column:1/-1}.service-form-grid input,.service-form-grid select,.service-form-grid textarea{width:100%;box-sizing:border-box;padding:9px 10px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer);color:var(--text);font:inherit}.service-form-grid textarea{resize:vertical}.service-form-error{min-height:1.2em;margin:10px 0 0;color:var(--danger);font-size:.75rem}.service-dialog footer{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.service-dialog footer button{padding:8px 14px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer);color:var(--text);font-weight:800;cursor:pointer}.service-dialog footer button.primary{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}
.service-badge.stop{border-color:color-mix(in srgb,var(--stop) 55%,var(--card-border))}.service-badge.category-monitoring{border-color:#259a74;background:color-mix(in srgb,#259a74 17%,var(--surface));color:color-mix(in srgb,#259a74 78%,var(--text))}.service-badge.category-virtualization{border-color:#7d5ce2;background:color-mix(in srgb,#7d5ce2 17%,var(--surface));color:color-mix(in srgb,#7d5ce2 78%,var(--text))}.service-badge.category-development{border-color:#287fc1;background:color-mix(in srgb,#287fc1 17%,var(--surface));color:color-mix(in srgb,#287fc1 78%,var(--text))}.service-badge.category-security{border-color:var(--danger);background:var(--danger-bg);color:var(--danger)}.service-badge.category-operations{border-color:#bc7418;background:color-mix(in srgb,#bc7418 17%,var(--surface));color:color-mix(in srgb,#bc7418 78%,var(--text))}.service-badge.access-public{border-color:#259a74;background:color-mix(in srgb,#259a74 12%,var(--surface));color:color-mix(in srgb,#259a74 78%,var(--text))}.service-badge.access-internal{border-color:#287fc1;background:color-mix(in srgb,#287fc1 12%,var(--surface));color:color-mix(in srgb,#287fc1 78%,var(--text))}.service-badge.access-management{border-color:#7d5ce2;background:color-mix(in srgb,#7d5ce2 12%,var(--surface));color:color-mix(in srgb,#7d5ce2 78%,var(--text))}
@media(max-width:1050px){.service-tools{grid-template-columns:1fr 1fr}.service-result-count{text-align:center}.service-layout{grid-template-columns:1fr}.service-detail{position:static}.service-summary{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.service-page-heading{align-items:stretch;flex-direction:column}.service-tools,.service-summary,.service-form-grid{grid-template-columns:1fr}.service-form-grid label.wide{grid-column:auto}.service-table{min-width:760px}}

/* Admin information map */
.admin-info-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:14px}.admin-info-heading h2{margin:3px 0}.admin-info-heading .lead{margin:0}.admin-info-source{padding:7px 10px;border:1px solid var(--card-border);border-radius:999px;background:var(--layer);color:var(--muted);font:700 .68rem var(--mono)}
.admin-info-heading-actions{display:flex;align-items:center;gap:8px}.admin-info-heading-actions button,.admin-info-detail-actions button{padding:8px 11px;border:1px solid var(--accent);border-radius:6px;background:var(--accent-soft);color:var(--accent);font-weight:800;cursor:pointer}.admin-info-detail-actions{padding:0 15px 13px}
.admin-info-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}.admin-info-summary article{display:grid;gap:5px;padding:13px 15px;border:1px solid var(--card-border);border-top:3px solid var(--accent);border-radius:8px;background:var(--surface)}.admin-info-summary span{color:var(--muted);font-size:.76rem}.admin-info-summary b{font:800 1.16rem var(--mono);color:var(--text)}
.admin-info-flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;align-items:center;gap:8px;padding:16px;border:1px solid var(--card-border);border-radius:10px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 5%,var(--surface)),var(--surface));margin-bottom:12px}.admin-info-flow>i{font-style:normal;color:var(--accent);font-size:1.1rem}.admin-info-flow-node{display:grid;gap:4px;min-height:74px;padding:12px;border:1px solid var(--card-border);border-left:4px solid var(--accent);border-radius:7px;background:var(--layer)}.admin-info-flow-node b{font-size:.86rem}.admin-info-flow-node span{color:var(--muted);font-size:.72rem}.admin-info-flow-node.facility{border-left-color:#4db7d9}.admin-info-flow-node.infrastructure{border-left-color:#44c69c}.admin-info-flow-node.cloud{border-left-color:#9b78ee}.admin-info-flow-node.service{border-left-color:#edaa45}.admin-info-flow-rail{grid-column:1/-1;display:flex;justify-content:space-around;gap:8px;padding-top:10px;border-top:1px dashed var(--card-border)}.admin-info-flow-rail span{padding:5px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.71rem;font-weight:800}
.admin-info-tools{display:grid;grid-template-columns:minmax(260px,1fr) 210px auto;gap:8px;margin-bottom:12px;padding:9px;border:1px solid var(--card-border);border-radius:8px;background:var(--surface)}.admin-info-tools input,.admin-info-tools select{min-width:0;padding:9px 11px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer);color:var(--text)}.admin-info-tools span{align-self:center;padding:7px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font:800 .72rem var(--mono);white-space:nowrap}
.admin-info-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(290px,.7fr);gap:12px;align-items:start}.admin-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.admin-info-card{display:grid;gap:5px;min-height:122px;padding:13px;text-align:left;border:1px solid var(--card-border);border-left:4px solid #4db7d9;border-radius:8px;background:var(--surface);color:var(--text);cursor:pointer}.admin-info-card:hover,.admin-info-card.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface));box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 35%,transparent)}.admin-info-card>span{color:var(--accent);font:800 .66rem var(--mono)}.admin-info-card>b{font-size:.93rem}.admin-info-card>small{color:var(--muted);line-height:1.5}.admin-info-card>i{align-self:end;color:var(--accent);font-size:.7rem;font-style:normal;font-weight:800}.admin-info-card.tone-license{border-left-color:#816dd6}.admin-info-card.tone-domain{border-left-color:#e0a239}.admin-info-card.tone-infrastructure{border-left-color:#3eb68f}.admin-info-card.tone-cloud{border-left-color:#8a6be2}.admin-info-card.tone-security{border-left-color:#e36f77}.admin-info-card.tone-monitoring{border-left-color:#38a9d0}.admin-info-card.tone-service{border-left-color:#dc9c42}
.admin-info-detail{position:sticky;top:68px;min-height:255px;border:1px solid var(--card-border);border-top:4px solid var(--accent);border-radius:8px;background:var(--surface)}.admin-info-empty{display:grid;place-content:center;gap:7px;min-height:220px;padding:25px;text-align:center}.admin-info-empty span{color:var(--muted);font-size:.78rem}.admin-info-detail header{position:static;padding:15px;border-bottom:1px solid var(--line);background:var(--layer)}.admin-info-detail header span{color:var(--accent);font:800 .67rem var(--mono)}.admin-info-detail header h3{margin:5px 0 0}.admin-info-detail dl{display:grid;grid-template-columns:86px 1fr;gap:9px 12px;margin:0;padding:15px}.admin-info-detail dt{color:var(--muted);font-size:.73rem;font-weight:800}.admin-info-detail dd{margin:0;font-size:.8rem}.admin-info-detail>p{margin:0;padding:12px 15px;border-top:1px solid var(--line);color:var(--muted);font-size:.73rem}.admin-protected{color:var(--run)}.admin-info-security{margin:12px 0 0;padding:10px 12px;border-left:3px solid var(--warn);background:var(--warn-bg);font-size:.75rem}

/* Account and access management */
.account-dialog-backdrop{position:fixed;inset:0;z-index:4500;display:none;place-items:center;padding:18px;background:rgba(4,9,14,.76);backdrop-filter:blur(4px)}.account-dialog-backdrop.open{display:grid}.account-dialog{width:min(940px,96vw);max-height:92vh;overflow:auto;border:1px solid var(--card-border);border-radius:12px;background:var(--surface);color:var(--text);box-shadow:0 28px 90px rgba(0,0,0,.45)}.account-dialog>header{position:static;display:flex;justify-content:space-between;align-items:flex-start;padding:16px 18px;border-bottom:1px solid var(--line);background:var(--layer)}.account-dialog>header span{color:var(--accent);font:800 .65rem var(--mono);letter-spacing:.14em}.account-dialog>header h2{margin:5px 0 0}.account-dialog>header button{border:0;background:transparent;color:var(--muted);font-size:1.25rem;cursor:pointer}.account-session{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:16px}.account-session>div{display:grid;gap:4px;padding:12px;border:1px solid var(--card-border);border-radius:8px;background:var(--layer)}.account-session span,.account-session small{color:var(--muted);font-size:.72rem}.account-session b{font-size:.88rem}.account-admin{padding:0 16px 16px}.account-admin-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 0;border-top:1px solid var(--line)}.account-admin-head h3,.account-admin-head p{margin:0}.account-admin-head p{color:var(--muted);font-size:.74rem}.account-admin-head button,.account-form-actions button,.account-table button{padding:7px 10px;border:1px solid var(--accent);border-radius:6px;background:var(--accent-soft);color:var(--accent);font-weight:800;cursor:pointer}.account-admin form{margin-bottom:12px;padding:13px;border:1px solid var(--card-border);border-radius:8px;background:var(--layer)}.account-form-grid{display:grid;grid-template-columns:1fr 1.4fr .8fr auto;gap:10px;align-items:end}.account-form-grid label{display:grid;gap:5px;color:var(--muted);font-size:.73rem;font-weight:800}.account-form-grid input,.account-form-grid select{min-height:36px;padding:7px 9px;border:1px solid var(--card-border);border-radius:5px;background:var(--surface);color:var(--text)}.account-form-grid .account-checkbox{display:flex;align-items:center;min-height:36px}.account-admin form>p{margin:10px 0;color:var(--muted);font-size:.72rem}.account-form-actions{display:flex;justify-content:flex-end;gap:8px}.account-form-actions button[type=submit]{background:var(--accent);color:var(--accent-ink)}.account-error{min-height:1.2em;color:var(--danger);font-size:.74rem}.account-table-wrap{overflow:auto;border:1px solid var(--card-border);border-radius:8px}.account-table{width:100%;border-collapse:collapse;min-width:720px}.account-table th,.account-table td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left;font-size:.76rem}.account-table th{background:var(--layer);color:var(--muted)}.account-table td:first-child{display:grid;gap:2px}.account-table td:first-child small{color:var(--muted)}.account-role,.account-state{display:inline-flex;padding:3px 7px;border-radius:999px;border:1px solid var(--card-border);font-size:.68rem;font-weight:800}.account-role.admin{color:#b293ff}.account-state.active{color:var(--run)}.account-state.inactive{color:var(--stop)}
@media(max-width:900px){.admin-info-flow{grid-template-columns:1fr}.admin-info-flow>i{transform:rotate(90deg);justify-self:center}.admin-info-layout{grid-template-columns:1fr}.admin-info-detail{position:static}.account-session,.account-form-grid{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.admin-info-heading{align-items:flex-start;flex-direction:column}.admin-info-heading-actions{align-items:flex-start;flex-direction:column}.admin-info-summary,.admin-info-grid,.admin-info-tools,.account-session,.account-form-grid{grid-template-columns:1fr}.admin-info-flow-rail{flex-direction:column}.account-admin-head{align-items:flex-start;flex-direction:column}}


/* IDC_トポロジー可視化ポータル_alerts.css */
.alert-page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.alert-page-heading h2{margin:3px 0}.alert-primary{border-color:var(--accent)!important;background:var(--accent)!important;color:var(--accent-ink)!important;font-weight:800}.alert-heading-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.alert-heading-actions button{min-height:38px;padding:7px 12px;border:1px solid;border-radius:7px;cursor:pointer}.alert-secondary{border-color:var(--accent)!important;background:var(--surface)!important;color:var(--accent)!important;font-weight:800}
.alert-summary{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:9px;margin-bottom:10px}.alert-metric{padding:12px 14px;border:1px solid var(--card-border);border-left:4px solid var(--accent);border-radius:8px;background:var(--surface);box-shadow:var(--shadow-sm)}.alert-metric.critical{border-left-color:var(--danger)}.alert-metric.warning{border-left-color:var(--stby)}.alert-metric.normal{border-left-color:var(--run)}.alert-metric span{display:block;color:var(--muted);font-size:.72rem}.alert-metric b{display:block;margin-top:3px;color:var(--text);font:800 1.35rem/1 var(--mono)}
.alert-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) 132px 150px 150px auto auto;gap:8px;margin-bottom:10px;padding:8px;border:1px solid var(--card-border);border-radius:8px;background:var(--surface)}.alert-toolbar input,.alert-toolbar select,.alert-toolbar button{min-width:0;padding:8px 10px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer);color:var(--text);font-size:.8rem}.alert-toolbar button{cursor:pointer}.alert-toolbar>span{display:grid;place-content:center;min-width:58px;padding:5px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font:800 .72rem/1 var(--mono)}
.alert-table-wrap{overflow:auto;max-height:min(67vh,760px);border:1px solid var(--card-border);border-radius:9px;background:var(--surface)}.alert-table{width:100%;min-width:980px;border-collapse:collapse}.alert-table th,.alert-table td{padding:10px 11px;border-bottom:1px solid var(--card-border);text-align:left;vertical-align:top}.alert-table th{position:sticky;top:0;z-index:2;background:var(--layer);color:var(--muted);font-size:.72rem}.alert-table td{font-size:.8rem}.alert-table tr:last-child td{border-bottom:0}.alert-table tr:hover{background:color-mix(in srgb,var(--accent) 8%,var(--surface))}.alert-time{white-space:nowrap;color:var(--muted);font-family:var(--mono)}.alert-target b,.alert-target small,.alert-message b,.alert-message small{display:block}.alert-target b{color:var(--accent)}.alert-target small,.alert-message small{margin-top:3px;color:var(--muted);font-size:.7rem}.alert-message b{max-width:520px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.alert-badge{display:inline-flex;align-items:center;justify-content:center;min-width:68px;padding:4px 8px;border:1px solid;border-radius:999px;font-size:.7rem;font-weight:850;white-space:nowrap}.alert-badge.critical{border-color:var(--danger);background:var(--danger-bg);color:var(--danger)}.alert-badge.warning{border-color:var(--stby);background:var(--stby-bg);color:var(--stby)}.alert-badge.normal,.alert-badge.resolved{border-color:var(--run);background:var(--run-bg);color:var(--run)}.alert-badge.new{border-color:var(--danger);color:var(--danger)}.alert-badge.acknowledged{border-color:var(--accent);color:var(--accent)}.alert-badge.in_progress{border-color:var(--stby);color:var(--stby)}.alert-open{padding:5px 8px;border:1px solid var(--card-border);border-radius:5px;background:var(--layer);color:var(--accent);font-weight:800;cursor:pointer}.alert-empty{padding:34px!important;color:var(--muted);text-align:center}.alert-storage-note{margin:8px 2px;color:var(--muted);font-size:.72rem}
.alert-dialog-backdrop{position:fixed;inset:0;z-index:5200;display:none;place-items:center;padding:16px;background:rgba(4,9,14,.76);backdrop-filter:blur(4px)}.alert-dialog-backdrop.open{display:grid}.alert-dialog{width:min(860px,97vw);max-height:94vh;overflow:auto;border:1px solid var(--card-border);border-radius:12px;background:var(--surface);box-shadow:0 28px 90px rgba(0,0,0,.45)}.alert-dialog header{display:flex;align-items:start;justify-content:space-between;gap:15px;padding:14px 16px;border-bottom:1px solid var(--line)}.alert-dialog header span{color:var(--accent);font:800 .66rem/1 var(--mono);letter-spacing:.14em}.alert-dialog header h2{margin:4px 0 0}.alert-dialog header>button{width:36px;height:36px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer);color:var(--text);font-size:1.2rem;cursor:pointer}.alert-dialog form{padding:15px 16px}.alert-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.alert-form-grid label{display:grid;gap:5px;color:var(--muted);font-size:.74rem;font-weight:750}.alert-form-grid .wide{grid-column:1/-1}.alert-form-grid input,.alert-form-grid select,.alert-form-grid textarea{width:100%;box-sizing:border-box;padding:8px 10px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer);color:var(--text);font:inherit}.alert-form-grid textarea{resize:vertical}.alert-parse-row{display:flex;align-items:center;gap:10px;padding:8px;border:1px dashed color-mix(in srgb,var(--accent) 45%,var(--card-border));border-radius:7px;background:var(--accent-soft)}.alert-parse-row button{padding:7px 10px;border:1px solid var(--accent);border-radius:5px;background:var(--surface);color:var(--accent);font-weight:800;cursor:pointer}.alert-parse-row span{color:var(--muted);font-size:.72rem}.alert-form-error{min-height:1.2em;color:var(--danger);font-size:.76rem}.alert-dialog footer{display:grid;grid-template-columns:auto 1fr auto auto;gap:8px;padding-top:12px;border-top:1px solid var(--line)}.alert-dialog footer button{min-height:36px;padding:7px 12px;border:1px solid var(--card-border);border-radius:6px;background:var(--layer);color:var(--text);cursor:pointer}.alert-dialog footer .danger{border-color:var(--danger);color:var(--danger)}
.alert-sync-dialog{width:min(720px,97vw)}.alert-sync-body{padding:16px}.alert-sync-body>p:first-child{margin:0 0 13px;color:var(--muted)}.alert-sync-loading{display:none;align-items:center;gap:10px;padding:12px;border:1px solid var(--card-border);border-radius:8px;background:var(--layer);color:var(--text)}.alert-sync-loading.active{display:flex}.alert-sync-loading span{width:17px;height:17px;border:2px solid var(--card-border);border-top-color:var(--accent);border-radius:50%;animation:alert-spin .8s linear infinite}@keyframes alert-spin{to{transform:rotate(360deg)}}.alert-sync-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 11px}.alert-sync-meta>div{padding:10px 11px;border:1px solid var(--card-border);border-radius:7px;background:var(--layer)}.alert-sync-meta .wide{grid-column:1/-1}.alert-sync-meta dt{margin-bottom:4px;color:var(--muted);font-size:.7rem;font-weight:800}.alert-sync-meta dd{margin:0;color:var(--text);font-size:.82rem;overflow-wrap:anywhere}.alert-sync-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.alert-sync-summary>div{padding:12px;border:1px solid var(--card-border);border-radius:8px;background:var(--surface);text-align:center}.alert-sync-summary span{display:block;color:var(--muted);font-size:.72rem}.alert-sync-summary b{display:block;margin-top:4px;color:var(--text);font:850 1.4rem/1 var(--mono)}.alert-sync-summary .new{border-color:color-mix(in srgb,var(--run) 55%,var(--card-border));background:var(--run-bg)}.alert-sync-summary .new b{color:var(--run)}.alert-sync-note{margin:11px 0 0!important;padding:9px 10px;border-left:3px solid var(--accent);background:var(--accent-soft);color:var(--muted)!important;font-size:.74rem}.alert-sync-dialog>footer{display:grid;grid-template-columns:1fr auto auto auto;gap:8px;padding:12px 16px;border-top:1px solid var(--line)}.alert-sync-dialog>footer button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:800px){.alert-page-heading{display:grid}.alert-summary{grid-template-columns:1fr 1fr}.alert-toolbar{grid-template-columns:1fr}.alert-form-grid{grid-template-columns:1fr}.alert-form-grid .wide{grid-column:auto}.alert-parse-row{align-items:flex-start;flex-direction:column}}
@media(max-width:600px){.alert-heading-actions{justify-content:stretch}.alert-heading-actions button{flex:1}.alert-sync-meta,.alert-sync-summary{grid-template-columns:1fr}.alert-sync-meta .wide{grid-column:auto}.alert-sync-dialog>footer{grid-template-columns:1fr 1fr}.alert-sync-dialog>footer>span{display:none}}

/* Operator-side connection monitoring */
.dashboard-route-node.unknown{border-top-color:var(--muted)}
.dashboard-route-node.observed.stop{border-top-color:var(--danger)}
.dashboard-summary.monitor-live .dashboard-metric.m3::after{background:var(--danger)}
.dashboard-status.monitor-live .dashboard-donut{background:conic-gradient(var(--run) 0 var(--run-angle),var(--stby) var(--run-angle) var(--standby-angle),var(--danger) var(--standby-angle) var(--stop-angle,360deg),var(--muted) var(--stop-angle,360deg) 360deg)}
.dashboard-status.monitor-live .dashboard-status-legend i.stop,.dashboard-status.monitor-live .dashboard-heat.stop{background:var(--danger)}
.dashboard-route-legend i.unknown,.dashboard-status-legend i.unknown{background:var(--muted)}
.dashboard-heat.unknown{background:color-mix(in srgb,var(--muted) 72%,var(--surface))}
.dashboard-host-count{display:grid;justify-items:end;gap:3px}
.dashboard-host-monitor{display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-size:8px;white-space:nowrap}
.dashboard-host-monitor i,.monitor-detail i{width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:var(--muted)}
.dashboard-host-monitor.run,.monitor-detail.run{color:var(--run)}
.dashboard-host-monitor.run i,.monitor-detail.run i{background:var(--run);box-shadow:0 0 0 3px color-mix(in srgb,var(--run) 14%,transparent)}
.dashboard-host-monitor.stby,.monitor-detail.stby{color:var(--stby)}
.dashboard-host-monitor.stby i,.monitor-detail.stby i{background:var(--stby)}
.dashboard-host-monitor.stop,.monitor-detail.stop{color:var(--danger)}
.dashboard-host-monitor.stop i,.monitor-detail.stop i{background:var(--danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 14%,transparent)}
.monitor-detail{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:4px 8px;margin:10px 0;padding:9px 10px;border:1px solid var(--card-border);border-left:3px solid var(--muted);border-radius:6px;background:var(--layer)}
.monitor-detail.run{border-left-color:var(--run)}.monitor-detail.stby{border-left-color:var(--stby)}.monitor-detail.stop{border-left-color:var(--danger)}
.monitor-detail>span{display:flex;align-items:center;gap:6px;color:inherit;font-size:.68rem;font-weight:800}.monitor-detail>b{justify-self:end;color:inherit;font-size:.76rem}.monitor-detail>small{grid-column:1/-1;color:var(--muted);font:600 .64rem/1.45 var(--mono);overflow-wrap:anywhere}
.node.monitor-run:not(.failed):not(.down):not(.deg) circle.dot{fill:var(--run)}
.node.monitor-stby:not(.failed):not(.down):not(.deg) circle.dot{fill:var(--stby)}
.node.monitor-stop:not(.failed):not(.down):not(.deg) circle.dot{fill:var(--danger)}
.node.monitor-unknown:not(.failed):not(.down):not(.deg) circle.dot{fill:var(--muted)}
.node .monitor-node-label{font-size:8.5px;font-weight:800}.node .monitor-node-label.run{fill:var(--run)}.node .monitor-node-label.stby{fill:var(--stby)}.node .monitor-node-label.stop{fill:var(--danger)}.node .monitor-node-label.unknown{fill:var(--muted)}
@media(max-width:620px){.dashboard-host-monitor{font-size:7.5px}.monitor-detail{grid-template-columns:1fr}.monitor-detail>b{justify-self:start}}

/* Topology layout editor */
.controls .mode.edit.on{border-color:#7d5ce2;background:#7d5ce2;color:#fff;box-shadow:0 5px 14px color-mix(in srgb,#7d5ce2 25%,transparent)}
.controls .topo-edit-action{min-height:34px;padding:.35rem .72rem;border:1px solid color-mix(in srgb,#7d5ce2 42%,var(--card-border));border-radius:8px;background:color-mix(in srgb,#7d5ce2 8%,var(--surface));color:color-mix(in srgb,#7d5ce2 76%,var(--text));font:800 .74rem/1.2 inherit;cursor:pointer}
.controls .topo-edit-action:hover:not(:disabled),.controls .topo-edit-action:focus-visible{border-color:#7d5ce2;background:color-mix(in srgb,#7d5ce2 16%,var(--surface));outline:none}
.controls .topo-edit-action.danger{border-color:color-mix(in srgb,var(--danger) 38%,var(--card-border));background:var(--danger-bg);color:var(--danger)}
.controls .topo-edit-action:disabled{opacity:.42;cursor:not-allowed}
#topoSvg.topology-editing{background-image:radial-gradient(circle,color-mix(in srgb,var(--muted) 34%,transparent) 1px,transparent 1px);background-size:16px 16px;user-select:none}
#topoSvg.topology-editing .node{cursor:grab;touch-action:none}
#topoSvg.topology-editing .node rect.body{stroke:#7d5ce2;stroke-dasharray:5 3}
#topoSvg.topology-editing .node:hover rect.body{stroke-width:2.4;filter:drop-shadow(0 6px 14px color-mix(in srgb,#7d5ce2 30%,transparent))}
#topoSvg.topology-editing .node.dragging{cursor:grabbing}
#topoSvg.topology-editing .node.dragging rect.body{fill:color-mix(in srgb,#7d5ce2 10%,var(--surface));stroke-width:2.8;stroke-dasharray:none}
#topoSvg.topology-editing .node circle.status-toggle{pointer-events:all;cursor:pointer;stroke:var(--surface);stroke-width:3;filter:drop-shadow(0 0 3px color-mix(in srgb,currentColor 45%,transparent))}
#topoSvg.topology-editing .node circle.status-toggle:hover{stroke:#7d5ce2;stroke-width:4;filter:drop-shadow(0 0 6px color-mix(in srgb,#7d5ce2 70%,transparent))}
#topoSvg.topology-editing path.edge{transition:none}
#topoSvg path.edge-hit{fill:none;stroke:transparent;stroke-width:16;pointer-events:none}
#topoSvg.topology-editing path.edge-hit{pointer-events:stroke;cursor:pointer}
#topoSvg.topology-editing path.edge-hit:hover+path.edge{stroke-width:4;filter:drop-shadow(0 0 5px color-mix(in srgb,#7d5ce2 60%,transparent))}
#topoSvg.topology-editing text.elbl{pointer-events:all;cursor:pointer;paint-order:stroke;stroke:var(--surface);stroke-width:4px;stroke-linejoin:round}
#topoSvg.topology-editing text.elbl:hover{fill:#9f82f4;font-weight:900}
@media(max-width:620px){.controls .topo-edit-action{flex:1}.controls .hint{padding-top:3px}}
