*{box-sizing:border-box}body{margin:0;background:#0b1020;color:#e8ecf7;font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Arial}a{color:#9cc8ff;text-decoration:none}.shell{display:flex;min-height:100vh}aside{width:245px;background:#070b16;border-right:1px solid #1d2942;padding:22px;position:sticky;top:0;height:100vh}.brand{font-size:28px;font-weight:800;letter-spacing:.3px;margin-bottom:26px}.brand span{font-size:15px;color:#91a0bb}nav{display:grid;gap:8px}nav a,.tabs a{padding:11px 13px;border:1px solid #1d2942;border-radius:12px;background:#111a2e;color:#e8ecf7}nav a:hover,.tabs a:hover,button:hover{filter:brightness(1.15)}.user{position:absolute;bottom:20px;color:#91a0bb}main{padding:28px;flex:1;overflow:auto}h1{margin:0 0 22px;font-size:30px}h2{margin-top:28px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:18px}.card,.panel{background:#111a2e;border:1px solid #1d2942;border-radius:18px;padding:18px}.card b{display:block;font-size:30px}.card span,.muted{color:#91a0bb}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}label{display:grid;gap:6px;color:#b7c3d9}input,select{width:100%;border:1px solid #293957;border-radius:12px;padding:11px;background:#090f1d;color:#e8ecf7}button{border:0;border-radius:12px;background:#3b82f6;color:white;padding:10px 14px;font-weight:700;cursor:pointer;margin-top:10px}.danger{background:#d94444}table{width:100%;border-collapse:collapse;background:#111a2e;border:1px solid #1d2942;border-radius:18px;overflow:hidden;margin-top:14px}th,td{text-align:left;padding:12px;border-bottom:1px solid #1d2942;vertical-align:top}th{color:#91a0bb;font-weight:700}.pill{display:inline-block;padding:4px 9px;border-radius:999px;background:#172540;border:1px solid #2a3b5e}.flash,.error{padding:12px 14px;border-radius:14px;margin-bottom:16px}.flash{background:#11391f;border:1px solid #266d3a}.error{background:#4b1616;border:1px solid #8c2d2d}.actions{display:flex;gap:6px;flex-wrap:wrap}.actions form{display:inline}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}pre{background:#050811;border:1px solid #1d2942;border-radius:18px;padding:16px;overflow:auto;min-height:360px;color:#d8e2f2}.login{display:grid;place-items:center;min-height:100vh}.login-card{width:min(420px,92vw);background:#111a2e;border:1px solid #1d2942;border-radius:24px;padding:28px}.login-card h1{margin-bottom:8px}@media(max-width:760px){.shell{display:block}aside{position:relative;width:auto;height:auto}.user{position:static;margin-top:18px}main{padding:18px}table{display:block;overflow:auto}h1{font-size:25px}}

a.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 38px;
  padding: 0 14px;
  border-radius: 10px;
  background: #2f7df6;
  color: #fff;
  text-decoration: none;
  font-weight: 700;
  border: 0;
}
a.button.secondary {
  background: #263653;
}

.lead {
  color: #b8c2d6;
  max-width: 980px;
  line-height: 1.55;
}

.version {
  margin-left: 8px;
  color: #8fa3c7;
  font-size: 13px;
}

.hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  background: #111c31;
  border: 1px solid #223351;
  border-radius: 18px;
  padding: 22px;
  margin: 16px 0;
}

.hero h2 {
  margin-top: 0;
}

.hero-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.cards {
  display: grid;
  grid-template-columns: repeat(4, minmax(180px, 1fr));
  gap: 14px;
  margin: 16px 0;
}

.card {
  background: #111c31;
  border: 1px solid #223351;
  border-radius: 16px;
  padding: 16px;
}

.card h3 {
  margin-top: 0;
}

.card p {
  color: #b8c2d6;
}

.note {
  background: #0c1b2f;
  border: 1px solid #27476f;
  border-radius: 14px;
  padding: 14px;
  margin: 14px 0;
  color: #d7e4fb;
}

.empty {
  background: #111827;
  border: 1px dashed #334155;
  border-radius: 14px;
  padding: 18px;
  color: #b8c2d6;
  margin: 16px 0;
}

.footer {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  padding: 18px 24px;
  color: #8fa3c7;
  border-top: 1px solid #1e2c45;
  margin-top: 30px;
}

.footer a {
  color: #93c5fd;
  margin-left: 12px;
  text-decoration: none;
}

.footer a:hover {
  text-decoration: underline;
}

.support {
  border-color: #2f7df6;
}

@media (max-width: 900px) {
  .hero {
    display: block;
  }

  .cards {
    grid-template-columns: 1fr;
  }

  .footer a {
    display: inline-block;
    margin: 8px 10px 0 0;
  }
}

/* UI polish v0.1.2-menu-fix */
* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: #070d1c;
}

.topbar {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(8, 15, 31, .96);
  border-bottom: 1px solid #1d2a42;
  backdrop-filter: blur(10px);
}

.topbar-inner {
  max-width: 1520px;
  margin: 0 auto;
  padding: 12px 22px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}

.brand {
  display: inline-flex;
  align-items: baseline;
  gap: 10px;
  text-decoration: none;
  white-space: nowrap;
}

.brand-main {
  color: #a9d3ff;
  font-size: 25px;
  line-height: 1;
  font-weight: 900;
  letter-spacing: .2px;
}

.version {
  color: #8ca0c3;
  font-size: 12px;
  font-weight: 700;
}

.main-nav {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  flex-wrap: wrap;
}

.main-nav a {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  padding: 8px 12px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: transparent !important;
  color: #dbe7ff;
  text-decoration: none;
  font-size: 14px;
  font-weight: 700;
  line-height: 1;
  width: auto !important;
  margin: 0 !important;
}

.main-nav a:hover {
  background: #15223b !important;
  border-color: #2b426a;
  color: #ffffff;
}

.main-nav .logout-link {
  color: #ffd4d4;
}

.page {
  max-width: 1520px;
  margin: 0 auto;
  padding: 24px 22px 48px;
}

h1 {
  margin-top: 0;
}

.hero {
  margin-top: 18px;
}

.footer {
  max-width: 1520px;
  margin: 24px auto 0;
  padding: 18px 22px;
}

.footer-links {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
}

.footer a {
  margin-left: 0 !important;
}

.actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}

.actions form {
  margin: 0;
}

button,
.button,
a.button {
  white-space: nowrap;
}

@media (max-width: 980px) {
  .topbar-inner {
    align-items: flex-start;
    flex-direction: column;
  }

  .main-nav {
    justify-content: flex-start;
  }

  .brand-main {
    font-size: 22px;
  }
}

@media (max-width: 560px) {
  .topbar-inner,
  .page,
  .footer {
    padding-left: 14px;
    padding-right: 14px;
  }

  .main-nav {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
  }

  .main-nav a {
    width: 100% !important;
  }
}

/* buttons/layout stable fix */
table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
}

td.actions,
.actions {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  gap: 8px !important;
  flex-wrap: nowrap !important;
  white-space: nowrap !important;
}

.actions form {
  display: inline-flex !important;
  margin: 0 !important;
  padding: 0 !important;
}

.actions button,
.actions .button,
.actions a.button,
button,
.button,
a.button {
  height: 38px !important;
  min-height: 38px !important;
  line-height: 38px !important;
  padding: 0 14px !important;
  border-radius: 10px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  vertical-align: middle !important;
  font-size: 14px !important;
  font-weight: 800 !important;
  text-decoration: none !important;
  box-sizing: border-box !important;
  border: 0 !important;
  cursor: pointer;
}

.actions a.button {
  min-width: 132px !important;
}

.actions form button {
  min-width: 92px !important;
}

.actions form[action*="/ssl/"] button {
  min-width: 58px !important;
}

.actions form[action*="/delete/"] button,
button.danger,
.danger {
  min-width: 82px !important;
  background: #ef4444 !important;
  color: #fff !important;
}

.actions form[action*="/toggle/"] button {
  min-width: 112px !important;
}

@media (max-width: 900px) {
  td.actions,
  .actions {
    justify-content: flex-start !important;
    flex-wrap: wrap !important;
  }
}

.inline-form {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.inline-form button {
  min-width: 110px;
}

button.secondary,
.secondary {
  background: #263653 !important;
  color: #dbe7ff !important;
}

.pill.ok {
  background: #143d2a;
  border-color: #236c48;
  color: #a7f3d0;
}

table code {
  word-break: break-all;
}
