*{box-sizing:border-box}
:root{color-scheme:dark}
body{margin:0;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:#0d1117;color:#e6edf3}
a{color:inherit;text-decoration:none}
button,input,select{font:inherit}
button{border:0;border-radius:8px;background:#238636;color:#fff;padding:10px 14px;cursor:pointer}
button:hover:not(:disabled){filter:brightness(1.12)}
button:disabled{opacity:.45;cursor:not-allowed}
button.secondary{background:#30363d}
button.danger{background:#da3633}
.layout{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:100vh}
aside{background:#161b22;border-right:1px solid #30363d;padding:24px;display:flex;flex-direction:column;gap:8px}
aside h2{margin:0 0 18px}
aside a,.link-button{display:block;width:100%;text-align:left;padding:10px 12px;border-radius:8px;color:#b7c0ca;background:transparent}
aside a:hover,aside a.active,.link-button:hover{background:#21262d;color:#fff}
.logout-form{margin-top:auto}
.content{padding:28px;max-width:1480px;width:100%;min-width:0}
.card{background:#161b22;border:1px solid #30363d;border-radius:12px;padding:20px;margin-bottom:18px;box-shadow:0 8px 28px rgba(0,0,0,.12)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}
.stat strong{font-size:34px;display:block}
.muted,.stat span{color:#8b949e}
.two{display:grid;grid-template-columns:minmax(300px,430px) minmax(0,1fr);gap:18px}
.formgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
label{display:block;margin-bottom:13px;color:#c9d1d9}
input,select{display:block;width:100%;margin-top:6px;padding:10px;border:1px solid #30363d;border-radius:8px;background:#0d1117;color:#fff}
input:focus,select:focus{outline:2px solid #2f81f7;outline-offset:1px}
.node header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.node h3{margin:0}
.node p{color:#8b949e}
.disabled-node{opacity:.72}
.meta{display:flex;gap:18px;flex-wrap:wrap;border-block:1px solid #30363d;padding:12px 0}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;align-items:center}
.actions form{margin:0}
.dateform{display:flex;gap:8px}
.dateform input{margin:0;width:auto}
.badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.badge{font-size:12px;border:1px solid #30363d;border-radius:999px;padding:5px 9px;text-transform:capitalize;background:#21262d}
.badge.online,.state-active{background:#12351f;border-color:#238636}
.state-grace{background:#3a2d0d;border-color:#9e6a03}
.state-overdue,.state-suspended{background:#3d1515;border-color:#da3633}
.install{margin-top:14px;padding:14px;background:#0d1117;border:1px solid #30363d;border-radius:9px}
.install code{display:block;overflow-wrap:anywhere;margin-top:8px}
.warning{color:#f2cc60}
.alert{padding:12px;border-radius:8px;margin-bottom:15px}
.alert.good{background:#12351f;border:1px solid #238636}
.alert.bad{background:#3d1515;border:1px solid #da3633}
.login{min-height:100vh;display:grid;place-items:center;padding:20px}
.login-card{width:min(420px,100%)}
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:10px;border-bottom:1px solid #30363d;vertical-align:top}
td code{overflow-wrap:anywhere;word-break:break-word}
pre{white-space:pre-wrap;word-break:break-word;background:#0d1117;border:1px solid #30363d;border-radius:8px;padding:12px;max-height:360px;overflow:auto}
details{margin-top:14px}
summary{cursor:pointer;color:#b7c0ca}
code{font-family:"SFMono-Regular",Consolas,"Liberation Mono",monospace}
@media(max-width:850px){
  .layout{grid-template-columns:1fr}
  aside{position:static;flex-direction:row;flex-wrap:wrap;align-items:center}
  aside h2{width:100%;margin-bottom:6px}
  aside a,.link-button{width:auto}
  .logout-form{margin:0 0 0 auto}
  .content{padding:18px}
  .two{grid-template-columns:1fr}
  .node header{flex-direction:column}
  .badges{justify-content:flex-start}
}
.state-terminated{background:#4b1113;border-color:#f85149}
.terminate-form{display:flex;gap:8px;align-items:center}
.terminate-form input{margin:0;width:145px}
