:root{--bg:#f6f7f9;--card:#fff;--line:#e3e6ea;--ink:#1c2430;--muted:#8a94a2;--accent:#2b6cb0;--accent2:#eaf2fb}
*{box-sizing:border-box}
body{margin:0;font:15px/1.5 system-ui,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink)}
header{display:flex;align-items:center;gap:24px;padding:12px 24px;background:var(--card);border-bottom:1px solid var(--line)}
.brand{font-weight:700;color:var(--ink);text-decoration:none;font-size:16px}
nav a{margin-right:16px;color:var(--accent);text-decoration:none}
nav a:hover{text-decoration:underline}
main{max-width:1100px;margin:24px auto;padding:0 24px}
h1{font-size:22px;margin:0 0 16px}
h2{font-size:17px;margin:22px 0 10px}
a{color:var(--accent)}
.muted{color:var(--muted);font-weight:400;font-size:.9em}
.user{margin-left:auto;font-size:13px;color:var(--muted)}
.user a{margin-left:8px}
.page-head{display:flex;align-items:center;justify-content:space-between}
.notice{background:#fff8e6;border:1px solid #f0e0a8;color:#7a5c00;padding:12px 14px;border-radius:8px;margin-bottom:16px}
.btn-link{background:var(--accent);color:#fff;padding:8px 14px;border-radius:8px;text-decoration:none;font-size:14px}
.btn-link:hover{background:#245a94}
button{padding:8px 14px;border:0;border-radius:8px;background:var(--accent);color:#fff;font-size:14px;cursor:pointer}
button:hover{background:#245a94}
button.del{background:#f4e6e6;color:#b03a3a;padding:2px 9px;font-size:15px;line-height:1}
button.del:hover{background:#e9caca}
table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden}
th,td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--line);font-size:14px}
th{background:#fafbfc;font-weight:600;color:#55606e}
tr:last-child td{border-bottom:0}
.num{text-align:right;font-variant-numeric:tabular-nums}
.mono{font-family:ui-monospace,Consolas,monospace;font-size:13px;color:#55606e}
.badge{padding:2px 8px;border-radius:20px;font-size:12px;background:#eef1f4;color:#55606e}
.badge.s-active{background:#e6f6ec;color:#1a7f42}
.badge.s-planned{background:var(--accent2);color:var(--accent)}
.meta{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:14px;font-size:14px;color:#55606e}
.search{width:100%;max-width:520px;padding:9px 12px;border:1px solid var(--line);border-radius:8px;margin-bottom:16px;font-size:15px}
.row-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:16px;background:var(--card);padding:12px;border:1px solid var(--line);border-radius:10px}
.row-form input,.row-form select{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:14px}
.row-form input[type=number]{width:120px}
.stack-form{display:flex;flex-direction:column;gap:14px;max-width:560px;background:var(--card);padding:18px;border:1px solid var(--line);border-radius:10px}
.stack-form>label,.two-col label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:#55606e}
.stack-form input,.stack-form select{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-size:14px;font-weight:400}
.stack-form button{align-self:flex-start}
.two-col{display:flex;gap:12px}
.two-col label{flex:1}
.net-list{max-height:220px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:6px}
.net-item{display:flex;align-items:center;gap:8px;font-weight:400;padding:3px 4px;font-size:13px;cursor:pointer}
.net-item input{width:auto}
.login-box{max-width:360px;margin:8vh auto 0}
.login-box .stack-form{max-width:none}
.ac{position:relative}
.ac-input{width:100%}
.row-form .ac{min-width:280px}
.ac-list{position:absolute;left:0;right:0;top:calc(100% + 2px);z-index:30;background:#fff;border:1px solid var(--line);border-radius:8px;max-height:300px;overflow:auto;box-shadow:0 8px 24px rgba(0,0,0,.10)}
.ac-list:empty{display:none}
.ac-item{padding:8px 11px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f2f4}
.ac-item:last-child{border-bottom:0}
.ac-item:hover{background:var(--accent2)}
.head-actions{display:flex;align-items:center;gap:12px}
.del-btn{background:#f4e6e6;color:#b03a3a}
.del-btn:hover{background:#e9caca}
tr.overridden td{opacity:.5}
.badge.over{background:#f0e6e6;color:#9a5a5a}
