:root{
  --bg:#0f1115; --card:#171a21; --line:#262b36; --fg:#e6e9ef; --dim:#98a0b0;
  --accent:#e5484d; --ok:#3dd68c; --warn:#f5a524; --blue:#4c8dff;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);
  font:15px/1.6 -apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Pretendard",sans-serif}
header{display:flex;align-items:center;gap:1rem;padding:.9rem 1.2rem;
  border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--bg);z-index:9}
header h1{font-size:1.05rem;margin:0;font-weight:500;letter-spacing:.02em}
header h1 b{color:var(--accent)}
.steps{display:flex;gap:.35rem;flex:1;flex-wrap:wrap}
.step{font-size:.8rem;color:var(--dim);padding:.2rem .55rem;border:1px solid var(--line);border-radius:99px}
.step.on{color:var(--fg);border-color:var(--blue);background:#4c8dff18}
.step.done{color:var(--ok);border-color:#3dd68c55}
.badge{font-size:.72rem;padding:.2rem .5rem;border-radius:4px}
.badge.warn{background:#f5a52422;color:var(--warn);border:1px solid #f5a52455}
main{max-width:1180px;margin:0 auto;padding:1.2rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;
  padding:1.1rem 1.2rem;margin-bottom:1rem}
.card h2{font-size:.98rem;margin:0 0 .8rem;font-weight:600}
.card h2 small{font-weight:400;color:var(--dim);font-size:.8rem;margin-left:.4rem}
.hidden{display:none}
.row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-bottom:.6rem}
input[type=text],input[type=number],select{background:#0f1218;border:1px solid var(--line);
  color:var(--fg);border-radius:6px;padding:.5rem .6rem;font:inherit}
input[type=text]{flex:1;min-width:18rem}
button{background:#222735;border:1px solid var(--line);color:var(--fg);border-radius:6px;
  padding:.5rem .9rem;font:inherit;cursor:pointer}
button:hover{border-color:#3a4152}
button.primary{background:var(--accent);border-color:var(--accent);color:#fff}
button:disabled{opacity:.5;cursor:not-allowed}
.hint{color:var(--dim);font-size:.82rem;margin:.3rem 0 0}
.meta{color:var(--dim);font-size:.82rem}

.cands{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:.7rem}
.cand{border:1px solid var(--line);border-radius:8px;padding:.75rem .85rem;background:#12151c;cursor:pointer}
.cand:hover{border-color:#3a4152}
.cand.sel{border-color:var(--accent);background:#e5484d10}
.cand .no{color:var(--dim);font-size:.75rem}
.cand h3{font-size:.9rem;margin:.15rem 0 .45rem}
.cand dl{margin:0;display:grid;grid-template-columns:4.2rem 1fr;gap:.15rem .4rem;font-size:.8rem}
.cand dt{color:var(--dim)}
.cand dd{margin:0}

.opts{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.6rem;margin-bottom:.6rem}
.opt label{display:block;font-size:.78rem;color:var(--dim);margin-bottom:.2rem}
.opt select{width:100%}
details{border-top:1px solid var(--line);padding-top:.6rem;margin-top:.4rem}
summary{cursor:pointer;font-size:.84rem;color:var(--dim)}
.anchor{font-size:.8rem;line-height:1.7;margin-top:.6rem}
.anchor .blk{margin-bottom:.7rem}
.anchor .lbl{color:var(--blue);font-size:.75rem;display:block;margin-bottom:.15rem}
.anchor del{color:#8b6b6b}
.anchor .why{color:var(--warn);font-size:.75rem}

.script{white-space:pre-wrap;background:#0f1218;border:1px solid var(--line);
  border-radius:8px;padding:.9rem;font-size:.88rem;margin:.6rem 0}

table{width:100%;border-collapse:collapse;font-size:.8rem;margin-top:.6rem}
th,td{border:1px solid var(--line);padding:.45rem .55rem;vertical-align:top;text-align:left}
th{background:#12151c;color:var(--dim);font-weight:500;position:sticky;top:0}
td.num{text-align:right;color:var(--dim);white-space:nowrap}
td.line{min-width:14rem}
td.pr{font-size:.72rem;color:#b9c0cd;max-width:24rem}
.tag{display:inline-block;font-size:.7rem;padding:.1rem .4rem;border-radius:4px;
  background:#4c8dff1a;color:var(--blue);margin:0 .2rem .2rem 0}
.tag.red{background:#e5484d1a;color:var(--accent)}
.viol{color:var(--accent);font-size:.8rem;margin-top:.5rem}
.pass{color:var(--ok);font-size:.8rem;margin-top:.5rem}

.toast{position:fixed;left:50%;bottom:1.4rem;transform:translateX(-50%);
  background:#222735;border:1px solid var(--line);border-radius:8px;padding:.6rem 1rem;
  font-size:.85rem;z-index:99}
.toast.err{border-color:var(--accent);color:#ffb4b6}
.spin{display:inline-block;width:.8rem;height:.8rem;border:2px solid #ffffff40;
  border-top-color:#fff;border-radius:50%;animation:sp .7s linear infinite;vertical-align:-1px}
@keyframes sp{to{transform:rotate(360deg)}}
