:root{
  --bg:#f5f6f8;--panel:#ffffff;--fg:#1c2128;--fg-muted:#5f6b7a;--line:#e3e6ea;--grid:#e9ecef;
  --c1:#2563eb;--c2:#f59e0b;--good:#15803d;--bad:#b91c1c;--warn:#b45309;--accent:#2563eb;
  --radius:10px;--shadow:0 1px 2px rgba(16,24,40,.06);
}
:root[data-theme="dark"]{
  --bg:#0f1318;--panel:#171c23;--fg:#e6e9ee;--fg-muted:#98a2b3;--line:#2a313b;--grid:#242b35;
  --c1:#60a5fa;--c2:#fbbf24;--good:#4ade80;--bad:#f87171;--warn:#fbbf24;--accent:#60a5fa;
  --shadow:none;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0f1318;--panel:#171c23;--fg:#e6e9ee;--fg-muted:#98a2b3;--line:#2a313b;--grid:#242b35;
    --c1:#60a5fa;--c2:#fbbf24;--good:#4ade80;--bad:#f87171;--warn:#fbbf24;--accent:#60a5fa;--shadow:none;
  }
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--fg);font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Hiragino Sans","Noto Sans JP","Yu Gothic UI",sans-serif}
a{color:var(--accent);text-decoration:none}
code{font:12px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:var(--bg);padding:1px 5px;border-radius:4px;border:1px solid var(--line)}
.top{background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.top-inner,.tabs{max-width:1180px;margin:0 auto;padding:0 16px;display:flex;align-items:center;gap:12px}
.top-inner{height:72px}
.brand{display:flex;align-items:center;height:72px;margin-right:6px}
.brand .logo{height:48px;width:auto;display:block}
.brand .logo-dark{display:none}
:root[data-theme="dark"] .brand .logo-light{display:none}
:root[data-theme="dark"] .brand .logo-dark{display:block}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .brand .logo-light{display:none}
  :root:not([data-theme="light"]) .brand .logo-dark{display:block}
}
.crumb{color:var(--fg-muted);font-size:15px}
.spacer{flex:1}
.meta{color:var(--fg-muted);font-size:12px}
.theme{background:none;border:1px solid var(--line);color:var(--fg-muted);border-radius:6px;width:30px;height:30px;cursor:pointer;font-size:14px}
.tabs{height:40px;border-top:1px solid var(--line);overflow-x:auto}
.tabs a{color:var(--fg-muted);padding:0 4px;height:40px;line-height:40px;border-bottom:2px solid transparent;white-space:nowrap}
.tabs a.active{color:var(--fg);border-bottom-color:var(--accent);font-weight:600}
.tabs a.soon{opacity:.55}
.periods{display:flex;gap:2px;background:var(--bg);border:1px solid var(--line);border-radius:7px;padding:2px}
.periods a{height:24px;line-height:24px;padding:0 10px;border-radius:5px;border:0;font-size:12px}
.periods a.active{background:var(--panel);color:var(--fg);box-shadow:var(--shadow)}
.wrap{max-width:1180px;margin:0 auto;padding:20px 16px 40px}
h1{font-size:20px;margin:0 0 14px}
.page-head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.page-head h1{margin:0}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:16px}
.card-title{font-weight:600;margin-bottom:10px;display:flex;align-items:baseline;gap:10px}
.card-title .sub{color:var(--fg-muted);font-weight:400;font-size:12px}
.card-title .more{margin-left:auto;font-size:12px;font-weight:400}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}
a.card.site{color:inherit;display:block}
a.card.site:hover{border-color:var(--accent)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px}
.kpis.small{gap:8px;margin-bottom:8px}
.kpi .label{color:var(--fg-muted);font-size:12px}
.kpi .value{font-size:24px;font-weight:700;letter-spacing:-.3px;margin:2px 0}
.kpis.small .kpi .value{font-size:18px}
.kpi .value.muted{color:var(--fg-muted);font-weight:400}
.kpi .note,.kpi .delta{font-size:12px;color:var(--fg-muted)}
.delta.up{color:var(--good)}.delta.down{color:var(--bad)}
.delta .vs{color:var(--fg-muted);font-weight:400}
.chart-box{height:300px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:760px){.grid-2{grid-template-columns:1fr}}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th,.tbl td{padding:7px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.tbl th{color:var(--fg-muted);font-weight:500;font-size:12px}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums}
.tbl .err{color:var(--fg-muted);font-size:12px;max-width:420px;overflow-wrap:anywhere}
.badge{display:inline-block;font-size:11px;padding:1px 7px;border-radius:999px;border:1px solid var(--line);color:var(--fg-muted)}
.badge.success{color:var(--good);border-color:var(--good)}
.badge.partial{color:var(--warn);border-color:var(--warn)}
.badge.failed,.badge.bad{color:var(--bad);border-color:var(--bad)}
.badge.running{color:var(--accent);border-color:var(--accent)}
.empty{color:var(--fg-muted);margin:6px 0}
.foot{text-align:center;color:var(--fg-muted);font-size:11px;padding:10px 0 30px}
.rating{display:inline-block;font-size:11px;padding:0 7px;border-radius:999px;line-height:18px;border:1px solid var(--line);color:var(--fg-muted);white-space:nowrap}
.rating.good{color:var(--good);border-color:var(--good)}
.rating.ni{color:var(--warn);border-color:var(--warn)}
.rating.poor{color:var(--bad);border-color:var(--bad)}
.ratings{display:flex;gap:4px;margin:6px 0}
.score{font-weight:600;font-variant-numeric:tabular-nums}
.score.good{color:var(--good)}.score.ni{color:var(--warn)}.score.poor{color:var(--bad)}
.tag{font-size:10px;color:var(--fg-muted);border:1px solid var(--line);border-radius:4px;padding:0 4px;margin-left:4px}
.seg{display:flex;gap:2px;background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:2px}
.seg a{height:24px;line-height:24px;padding:0 10px;border-radius:5px;font-size:12px;color:var(--fg-muted)}
.seg a.active{background:var(--bg);color:var(--fg);font-weight:600}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media (max-width:900px){.grid-3{grid-template-columns:1fr}}
.chart-sm{height:220px}
.tbl .url{max-width:320px;overflow-wrap:anywhere;font-size:12px}
.tbl .opps{font-size:12px;max-width:300px}
.muted{color:var(--fg-muted)}
.card-title .filter{margin-left:auto;font:inherit;font-size:12px;padding:4px 8px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--fg);min-width:220px}
.tbl th.sort{cursor:pointer;user-select:none;white-space:nowrap}
.tbl th.sort:hover{color:var(--fg)}
.tbl th.sort.asc::after{content:" ▲";font-size:9px}
.tbl th.sort.desc::after{content:" ▼";font-size:9px}
.btn{display:inline-block;font-size:12px;padding:5px 10px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--fg)}
.btn:hover{border-color:var(--accent)}
a.card.kpi.link{color:inherit;display:block}
a.card.kpi.link:hover,a.card.kpi.link.selected{border-color:var(--accent)}
.sev-error{color:var(--bad)}.sev-warning{color:var(--warn)}.sev-notice{color:var(--fg-muted)}
.badge.sev.error{color:var(--bad);border-color:var(--bad)}
.badge.sev.warning{color:var(--warn);border-color:var(--warn)}
.badge.sev.notice{color:var(--fg-muted)}
.strong{font-weight:600}
.diff{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.diff .label{font-size:12px;color:var(--fg-muted);margin-bottom:4px}
ul.plain{list-style:none;margin:0;padding:0;font-size:12px}
ul.plain li{padding:3px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}
.tbl .detail{font-size:12px;max-width:420px;overflow-wrap:anywhere}
.page-head .spacer{flex:1}
.rule-id{font:11px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--fg-muted)}
.tbl td.bad{color:var(--bad);font-weight:600;background:color-mix(in srgb,var(--bad) 8%,transparent)}
.tbl.compact th,.tbl.compact td{padding:5px 6px;font-size:12px;white-space:nowrap}
.tbl.compact td.url{white-space:normal;min-width:220px}
.scroll-x{overflow-x:auto}
.delta.small{font-size:11px;display:inline-block;min-width:3.5em;text-align:right}
.gear{font-size:12px;color:var(--fg-muted);border:1px solid var(--line);border-radius:6px;padding:0 10px;height:30px;line-height:30px;white-space:nowrap}
.gear:hover{color:var(--fg);border-color:var(--accent)}
.user{font-size:12px;color:var(--fg-muted);white-space:nowrap}
.user:hover{color:var(--fg)}
.logout{margin:0}
.logout .btn{height:30px;cursor:pointer;font:inherit;font-size:12px}
.login-box{max-width:420px;margin:24px auto}
.tbl .inline-form{margin:0;display:flex;gap:6px;align-items:center}
.tbl .inline-form .btn{cursor:pointer;font:inherit;font-size:12px}
.tbl .user-pw input[type=password]{display:inline-block;width:auto;min-width:200px;margin:0}
.tabs a.tab-hirano{color:#fff;background:var(--hirano);border-radius:6px;height:28px;line-height:28px;padding:0 12px;margin:6px 0;font-weight:600;border-bottom:0}
.tabs a.tab-hirano.active{background:var(--hirano-strong);color:#fff}
:root{--hirano:#DC143C;--hirano-strong:#a80f2e}
:root[data-theme="dark"]{--hirano:#FF4D6A;--hirano-strong:#ff7a90}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--hirano:#FF4D6A;--hirano-strong:#ff7a90}}
.hirano-title{color:var(--hirano);font-size:24px}
.card.hirano{border-color:var(--hirano);border-width:2px}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:14px;font-size:13px}
.flash.ok{background:color-mix(in srgb,var(--good) 12%,transparent);color:var(--good);border:1px solid var(--good)}
.flash.ng{background:color-mix(in srgb,var(--bad) 10%,transparent);color:var(--bad);border:1px solid var(--bad)}
.flash pre{margin:0;white-space:pre-wrap;font:inherit}
.form label{display:block;font-size:12px;color:var(--fg-muted);margin:10px 0 4px}
.form label.inline{display:flex;align-items:center;gap:8px;color:var(--fg);margin:6px 0}
.form input[type=text],.form input[type=password],.form input[type=number],.form input:not([type]),.form textarea{display:block;width:100%;margin-top:4px;font:inherit;font-size:13px;color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:7px 9px}
.form textarea{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}
.form fieldset{border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin:12px 0}
.form legend{font-size:12px;color:var(--fg-muted);padding:0 4px}
.form .actions{margin-top:14px;display:flex;gap:10px;align-items:center}
.inline-form{margin-top:10px}
.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn.danger{color:var(--bad);border-color:var(--bad)}
.row3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.row4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
@media (max-width:760px){.row3,.row4{grid-template-columns:1fr 1fr}}
.badge.check-OK{color:var(--good);border-color:var(--good)}
.badge.check-FAIL{color:var(--bad);border-color:var(--bad)}
.badge.check-WARN{color:var(--warn);border-color:var(--warn)}
