:root{--bg:#f5f6f8;--card:#fff;--ink:#1f2933;--muted:#6b7785;--line:#e3e7ec;--accent:#2457d6;--ok:#17803d;--bad:#c62828;--warn:#b26a00}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.6 -apple-system,"Hiragino Sans","Yu Gothic UI","Meiryo",sans-serif}
header{background:#fff;border-bottom:1px solid var(--line);display:flex;gap:28px;align-items:center;padding:0 24px;height:56px}
.brand{font-weight:700;color:var(--ink);text-decoration:none}
nav a{margin-right:18px;color:var(--muted);text-decoration:none}nav a:hover{color:var(--accent)}
main{max-width:1180px;margin:24px auto;padding:0 20px 60px}
h1{font-size:22px;margin:0 0 4px}h2{font-size:17px;margin:28px 0 10px}h3{margin:0 0 10px;font-size:16px}
a{color:var(--accent)}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:18px;margin-bottom:16px}
.card.empty{text-align:center;color:var(--muted);padding:48px}
.table-wrap{padding:0;overflow-x:auto}
table{width:100%;border-collapse:collapse}
th,td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}
th{font-size:12px;color:var(--muted);font-weight:600;background:#fafbfc}
tr:last-child td{border-bottom:0}
.num{font-variant-numeric:tabular-nums}.low{color:var(--bad);font-weight:700}
.muted{color:var(--muted)}.small{font-size:13px}
.row-between{margin-bottom:12px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.btn-group{display:flex;gap:8px}.btn-group form{margin:0}
.btn{display:inline-block;border:1px solid var(--line);background:#fff;color:var(--ink);padding:8px 14px;border-radius:8px;cursor:pointer;font:inherit;text-decoration:none}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{opacity:.9;color:#fff}
.btn.danger{color:var(--bad);border-color:#efc4c4}.small-btn{padding:5px 10px;font-size:13px}
.badge{display:inline-block;padding:2px 10px;border-radius:99px;font-size:12px;font-weight:600;vertical-align:middle}
.badge.ok{background:#e3f4ea;color:var(--ok)}.badge.bad{background:#fde7e7;color:var(--bad)}
.badge.warn{background:#fff1da;color:var(--warn)}.badge.off{background:#eceff3;color:var(--muted)}.badge.run{background:#e4ecfd;color:var(--accent)}
.flash{padding:12px 16px;border-radius:8px;margin-bottom:14px;border:1px solid}
.flash.ok{background:#e9f7ee;border-color:#bfe3cc}.flash.error{background:#fdecec;border-color:#f1c0c0}
.flash ul{margin:6px 0 0 18px;padding:0}
.form label{display:block;margin-bottom:14px;font-weight:600}
.form input:not([type=checkbox]):not([type=file]),.form textarea,.form select{display:block;width:100%;margin-top:6px;padding:9px 11px;border:1px solid #cfd6de;border-radius:8px;font:inherit;background:#fff}
.form input[type=file]{display:block;margin-top:6px;font-weight:400}
.hint{display:block;font-weight:400;color:var(--muted);font-size:13px;margin-top:4px}
.check{font-weight:400!important}.check input{margin-right:6px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
details{margin:6px 0 16px}summary{cursor:pointer;color:var(--accent);margin-bottom:10px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:18px}
.stat{margin:0;text-align:center}.stat .big{font-size:28px;font-weight:700}
.shots{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
figure{margin:0}figcaption{font-weight:600;font-size:13px;margin-bottom:8px}
figure img{width:100%;max-height:560px;object-fit:cover;object-position:top;border:1px solid var(--line);border-radius:6px;display:block}
.ph{background:#f0f2f5;color:var(--muted);text-align:center;padding:80px 0;border-radius:6px}
.danger-zone{margin-top:30px;text-align:right}
@media(max-width:800px){.grid2,.stats,.shots{grid-template-columns:1fr}header{flex-wrap:wrap;height:auto;padding:10px 16px}}
.diff{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;margin:0;padding:12px 14px;white-space:pre-wrap;word-break:break-all;border-radius:6px;background:#fafbfc;border:1px solid var(--line)}
.diff .add{background:#e6f6ea;display:block}.diff .del{background:#fdeaea;display:block}
.login{max-width:420px;margin:60px auto}
code{background:#eef1f5;padding:1px 6px;border-radius:4px;font-size:13px}
