/* OPANTHEON dashboard — 素の CSS のみ (フレームワークなし、CSP style-src 'self' と整合)。
   トーン: ダーク紺 + 紫→青グラデーション + 発光グロー (参考画像 ref_login/ref_home より)。
   webfont は追加せずシステムフォント + letter-spacing で近似する。 */

:root {
  --bg: #0a0e14;
  --bg-soft: #111725;
  --line: #1e2738;
  --text: #e6ecf5;
  --muted: #8b9ab3;
  --grad-a: #7c5cff;
  --grad-b: #3aa0ff;
  --down: #ff5c8a;
  --up: #4fd6a0;
  --warn: #ffb95c;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  min-height: 100vh;
  background: radial-gradient(1200px 600px at 50% -10%, #16203a 0%, var(--bg) 60%);
  color: var(--text);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Sans",
               "Noto Sans JP", Meiryo, sans-serif;
  font-size: 15px;
  line-height: 1.6;
}

body.centered { display: flex; align-items: center; justify-content: center; }

.wrap { max-width: 1040px; margin: 0 auto; padding: 24px 20px 64px; width: 100%; }

/* --- header ------------------------------------------------------------- */
.topbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 24px; border-bottom: 1px solid var(--line);
  background: rgba(10, 14, 20, 0.72);
}
.topbar nav { display: flex; align-items: center; gap: 18px; }
.topbar a { color: var(--muted); text-decoration: none; letter-spacing: .04em; }
.topbar a:hover { color: var(--text); }
.mark { height: 26px; display: block; }
.inline { display: inline; margin: 0; }
.link {
  background: none; border: 0; color: var(--muted); cursor: pointer;
  font: inherit; letter-spacing: .04em; padding: 0;
}
.link:hover { color: var(--text); }

/* --- brand -------------------------------------------------------------- */
.hero { text-align: center; padding: 56px 0 40px; }
.emblem { width: 84px; height: 84px; object-fit: contain; filter: drop-shadow(0 0 18px rgba(124, 92, 255, .55)); }
.wordmark {
  margin: 18px 0 4px; font-size: 40px; font-weight: 700; letter-spacing: .32em;
  background: linear-gradient(90deg, var(--grad-a), var(--grad-b));
  -webkit-background-clip: text; background-clip: text; color: transparent;
  text-shadow: 0 0 28px rgba(124, 92, 255, .35);
}
.subtitle { margin: 0; color: var(--muted); letter-spacing: .38em; font-size: 12px; }
.tagline { margin: 12px 0 0; color: var(--muted); letter-spacing: .08em; }

/* --- cards -------------------------------------------------------------- */
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; }
.card {
  background: linear-gradient(180deg, var(--bg-soft), #0d1320);
  border: 1px solid var(--line); border-radius: 12px; padding: 20px 22px;
}
.card h2 { margin: 0 0 8px; font-size: 16px; letter-spacing: .08em; }
.card.disabled { opacity: .55; }
.card.disabled p { color: var(--muted); margin: 0; }
.card.warn { border-color: rgba(255, 185, 92, .45); }
.card.auth { width: min(420px, 92vw); text-align: center; padding: 34px 32px 28px; }

/* --- form --------------------------------------------------------------- */
form { display: flex; flex-direction: column; gap: 6px; text-align: left; margin-top: 18px; }
label { color: var(--muted); font-size: 12px; letter-spacing: .1em; }
input {
  background: #070b12; border: 1px solid var(--line); border-radius: 8px;
  color: var(--text); font: inherit; padding: 10px 12px; margin-bottom: 8px;
}
input:focus { outline: none; border-color: var(--grad-a); box-shadow: 0 0 0 3px rgba(124, 92, 255, .18); }
button.grad {
  margin-top: 10px; padding: 11px 16px; border: 0; border-radius: 8px; cursor: pointer;
  color: #fff; font: inherit; font-weight: 700; letter-spacing: .22em;
  background: linear-gradient(90deg, var(--grad-a), var(--grad-b));
  box-shadow: 0 6px 22px rgba(58, 160, 255, .28);
}
button.grad:hover { filter: brightness(1.08); }
.hint { color: var(--muted); font-size: 12px; margin: 16px 0 0; }
.alert {
  color: var(--warn); background: rgba(255, 185, 92, .08);
  border: 1px solid rgba(255, 185, 92, .32); border-radius: 8px;
  padding: 8px 12px; margin: 14px 0 0; font-size: 13px; text-align: left;
}

/* --- tables ------------------------------------------------------------- */
.watch { margin-top: 34px; }
.watch h2, .page { font-size: 18px; letter-spacing: .12em; }
table { width: 100%; border-collapse: collapse; margin-top: 10px; }
th, td { border-bottom: 1px solid var(--line); padding: 9px 10px; text-align: left; font-size: 14px; }
th { color: var(--muted); font-weight: 500; font-size: 12px; letter-spacing: .1em; }
td.num { text-align: right; font-variant-numeric: tabular-nums; }
td.sym { letter-spacing: .08em; }
td.detail { color: var(--muted); font-size: 12px; }
.up { color: var(--up); }
.down { color: var(--down); }
tr.stale td { opacity: .55; }
.spark-cell { width: 130px; }
.spark { display: block; }
.note { color: var(--muted); font-size: 12px; }

.kv { display: grid; grid-template-columns: minmax(160px, auto) 1fr; gap: 4px 16px; margin: 0 0 14px; }
.kv dt { color: var(--muted); font-size: 12px; letter-spacing: .06em; }
.kv dd { margin: 0; font-size: 13px; word-break: break-all; }

section.card { margin-top: 16px; }
.u-active { color: var(--up); }
.u-failed, .u-not-found, .u-timeout, .u-permission-denied { color: var(--down); }

.foot { color: var(--muted); font-size: 11px; text-align: center; padding: 18px 0 28px; letter-spacing: .2em; }
