:root{--bg:#0b0f16;--panel:#151a24;--soft:#1d2432;--line:#30394d;--text:#f7f9fc;--muted:#aab3c5;--purple:#7c5cff;--blue:#4da3ff;--red:#ff6b78;--green:#43d395;--yellow:#ffcf62}
*{box-sizing:border-box}html{font-size:18px}body{margin:0;min-width:320px;background:radial-gradient(circle at 10% 0,rgba(124,92,255,.18),transparent 30%),var(--bg);color:var(--text);font-family:Pretendard,"Noto Sans KR",system-ui,sans-serif;line-height:1.65}.wrap{width:min(1180px,calc(100% - 28px));margin:28px auto 60px}.hero,.head,.actions,.discord,.team header,.memoFoot{display:flex;justify-content:space-between;align-items:center;gap:18px}.hero{align-items:flex-start}.eyebrow,.head>div>span{color:#a897ff;font-weight:900;letter-spacing:.14em;font-size:.8rem}h1{font-size:clamp(2.4rem,5vw,4rem);margin:.1rem 0 .3rem;line-height:1}h2{font-size:1.8rem;margin:.2rem 0}h3{margin:.2rem 0}.hero p,.head p,.muted,.small p{color:var(--muted)}.discord{margin:20px 0;padding:18px 20px;border:1px solid rgba(88,101,242,.5);border-radius:18px;background:rgba(88,101,242,.12)}.discord small{display:block;color:#c8cdff;font-weight:900}.discord strong{font-size:1.08rem;overflow-wrap:anywhere}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}.step{min-height:62px;border:1px solid var(--line);border-radius:15px;background:rgba(21,26,36,.9);color:var(--muted);font-size:1rem;font-weight:900;cursor:pointer}.step.active{border-color:var(--purple);color:white;background:rgba(124,92,255,.16)}.panel{display:none;padding:30px;border:1px solid rgba(255,255,255,.07);border-radius:22px;background:rgba(21,26,36,.95);box-shadow:0 18px 60px rgba(0,0,0,.35)}.panel.active{display:block}.pairs{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.pair{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--soft)}.pair label{grid-column:1/-1;color:var(--muted);font-weight:900;font-size:.85rem}input,select,textarea{width:100%;border:1px solid transparent;border-radius:12px;background:#10151e;color:var(--text);padding:13px 14px;font:inherit;outline:none}input{text-align:center;font-weight:900}input:focus,select:focus,textarea:focus{border-color:var(--purple);box-shadow:0 0 0 3px rgba(124,92,255,.15)}.box{margin-top:24px;padding:20px;border:1px solid var(--line);border-radius:18px;background:rgba(8,11,17,.32)}.chips{display:flex;flex-wrap:wrap;gap:10px}.chip{padding:8px 13px;border-radius:11px;background:#222a39;font-weight:900}.actions{margin-top:26px}.actions.end{justify-content:flex-end}.btn{min-height:52px;padding:0 22px;border:0;border-radius:13px;color:white;font:inherit;font-weight:900;cursor:pointer}.primary{background:linear-gradient(135deg,var(--purple),#6042e6)}.ghost{background:#202736;border:1px solid var(--line)}.danger{color:#ffc1c8}.discordBtn{background:#5865f2}.captains,.ladderGrid,.teamGrid{display:grid;grid-template-columns:1fr auto 1fr;gap:18px;align-items:stretch}.teamGrid{grid-template-columns:1fr 1fr}.card,.ladderCard,.team{padding:24px;border:1px solid var(--line);border-radius:20px;background:var(--soft)}.a{border-color:rgba(77,163,255,.42)!important;background:linear-gradient(145deg,rgba(77,163,255,.13),var(--soft) 70%)}.b{border-color:rgba(255,107,120,.42)!important;background:linear-gradient(145deg,rgba(255,107,120,.13),var(--soft) 70%)}.vs{display:grid;place-items:center;color:var(--muted);font-weight:1000}.info,.pick,.winner{margin-top:20px;padding:17px;border:1px solid var(--line);border-radius:15px;background:#10151e;text-align:center}.ladderGame{padding:24px;border:1px solid var(--line);border-radius:20px;background:rgba(8,11,17,.32)}.ladderGrid{grid-template-columns:1fr 170px 1fr}.ladderCard{text-align:center;min-height:210px}.ladderCard h3{font-size:1.65rem}.pill{display:inline-flex;min-width:100px;min-height:44px;align-items:center;justify-content:center;border-radius:999px;font-weight:1000}.wait{background:#283143;color:var(--muted)}.win{background:rgba(67,211,149,.15);color:#aaf0cf;border:1px solid rgba(67,211,149,.35)}.lose{background:rgba(255,107,120,.14);color:#ffc2c8;border:1px solid rgba(255,107,120,.3)}.ladder{position:relative;min-height:210px;border-radius:16px;background:rgba(255,255,255,.02);overflow:hidden}.v,.h{position:absolute;background:#69748c;border-radius:99px}.v{top:10px;bottom:10px;width:5px}.v.l{left:38px}.v.r{right:38px}.h{left:38px;right:38px;height:5px}.h1{top:45px}.h2{top:105px;transform:rotate(-10deg)}.h3{bottom:42px}.runner{position:absolute;z-index:3;top:2px;left:27px;color:var(--yellow);font-size:1.4rem;filter:drop-shadow(0 0 8px rgba(255,207,98,.95));opacity:0}.ladder.running .runner{opacity:1;animation:run 2.8s ease-in-out forwards}.ladder.running.reverse .runner{animation-name:runRev}@keyframes run{0%{top:2px;left:27px}18%{top:42px;left:27px}32%{top:42px;left:calc(100% - 52px)}50%{top:103px;left:calc(100% - 52px)}64%{top:103px;left:27px}82%{top:calc(100% - 48px);left:27px}100%{top:calc(100% - 28px);left:calc(100% - 52px)}}@keyframes runRev{0%{top:2px;left:calc(100% - 52px)}18%{top:42px;left:calc(100% - 52px)}32%{top:42px;left:27px}50%{top:103px;left:27px}64%{top:103px;left:calc(100% - 52px)}82%{top:calc(100% - 48px);left:calc(100% - 52px)}100%{top:calc(100% - 28px);left:27px}}.center{display:flex;justify-content:center;gap:10px;margin-top:22px}.hidden{display:none!important}.pick>div{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:520px;margin:12px auto 0}.choice{min-height:50px;border:1px solid var(--line);border-radius:12px;background:#232b3b;color:white;font:inherit;font-weight:900}.choice.selected{border-color:var(--purple);background:rgba(124,92,255,.2)}.team{padding:0;overflow:hidden}.team header{padding:18px 20px;border-bottom:1px solid var(--line)}.teamList{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:16px}.member{display:flex;align-items:center;justify-content:center;min-height:58px;border:1px solid var(--line);border-radius:13px;background:#1d2534;font-weight:900;text-align:center}.member.cap:before{content:"👑";margin-right:7px}.draftPairs{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.draftPair{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:14px;overflow:hidden}.draftPair button{min-height:60px;border:0;background:var(--soft);color:white;font:inherit;font-weight:900;cursor:pointer}.draftPair button+button{border-left:1px solid var(--line)}.draftPair.used{opacity:.38}.memo textarea{min-height:170px;resize:vertical}.memoFoot{margin-top:12px;color:var(--muted)}.toast{position:fixed;right:22px;bottom:22px;padding:14px 18px;border:1px solid var(--line);border-radius:13px;background:#222a39;opacity:0;transform:translateY(12px);transition:.2s;pointer-events:none}.toast.show{opacity:1;transform:none}
@media(max-width:850px){.pairs,.draftPairs{grid-template-columns:repeat(2,1fr)}}@media(max-width:680px){html{font-size:17px}.hero,.discord,.head,.memoFoot{align-items:stretch;flex-direction:column}.steps{grid-template-columns:1fr 1fr}.pairs,.captains,.ladderGrid,.teamGrid,.draftPairs{grid-template-columns:1fr}.vs{min-height:32px}.ladder{min-height:150px}.teamList{grid-template-columns:1fr 1fr}.discordBtn{width:100%}}

/* v2.0: extra-large readable UI */
html{font-size:19.5px}
body{line-height:1.72}
.wrap{width:min(1280px,calc(100% - 24px))}
.panel{padding:38px}
.hero p,.head p,.small p,.muted{font-size:1rem}
.step{min-height:70px;font-size:1.02rem}
.btn{min-height:58px;padding:0 25px;font-size:1.02rem}
input,select,textarea{font-size:1.05rem;padding:14px 15px}
.pair{padding:18px}
.playerInput{display:grid;grid-template-columns:54px 1fr;gap:10px;align-items:center}
.sCheck{display:block;grid-column:auto!important}
.sCheck input{position:absolute;opacity:0;pointer-events:none}
.sCheck span{display:grid;place-items:center;width:54px;height:54px;border:2px solid var(--line);border-radius:14px;background:#111722;color:var(--muted);font-size:1.3rem;font-weight:1000;cursor:pointer;transition:.18s}
.sCheck input:checked+span{border-color:var(--green);background:rgba(67,211,149,.18);color:#c2f7df;box-shadow:0 0 0 4px rgba(67,211,149,.1)}
.sBadge{display:inline-grid;place-items:center;min-width:32px;height:32px;margin-right:5px;padding:0 7px;border-radius:9px;background:rgba(67,211,149,.18);border:1px solid rgba(67,211,149,.5);color:#bff5dc;font-size:.82em;vertical-align:middle}
.chip{font-size:1.02rem;padding:10px 14px}
.card h3,.ladderCard h3{font-size:1.82rem}
.ladderGrid{grid-template-columns:1fr 260px 1fr}
.randomStage{min-height:250px;display:grid;place-items:center;align-content:center;gap:12px;padding:22px;border:1px solid var(--line);border-radius:20px;background:radial-gradient(circle,rgba(124,92,255,.18),transparent 66%),rgba(255,255,255,.025);text-align:center}
.randomLabel{font-size:.85rem;font-weight:1000;letter-spacing:.18em;color:#b9adff}
#randomFocus{display:block;min-height:80px;font-size:clamp(2rem,5vw,3.6rem);line-height:1.1;word-break:keep-all}
#randomHint{font-size:.95rem;color:var(--muted)}
.randomStage.spinning{animation:stagePulse .42s ease-in-out infinite alternate}
@keyframes stagePulse{from{box-shadow:0 0 0 rgba(124,92,255,0)}to{box-shadow:0 0 42px rgba(124,92,255,.28)}}
.ladderCard{transition:.14s;min-height:250px}
.ladderCard.activePick{transform:scale(1.045);filter:brightness(1.35);box-shadow:0 0 38px rgba(255,255,255,.13)}
.ladderCard.winnerPick{transform:scale(1.06);border-color:var(--green)!important;box-shadow:0 0 40px rgba(67,211,149,.32)}
.ladderCard.loserPick{opacity:.52;filter:grayscale(.35)}
.pill{min-width:120px;min-height:50px;font-size:1.08rem}
.winner strong{font-size:1.48rem}
.teamList{grid-template-columns:1fr;gap:12px}
.member{min-height:66px;font-size:1.16rem}
.draftPair button{min-height:74px;font-size:1.14rem}
.memo textarea{min-height:235px;font-size:1.02rem;line-height:1.72}
.memo .head{align-items:flex-start}
.memoFoot{font-size:.95rem}
@media(max-width:850px){html{font-size:18px}.ladderGrid{grid-template-columns:1fr}.randomStage{order:-1;min-height:190px}.pairs,.draftPairs{grid-template-columns:1fr 1fr}}
@media(max-width:680px){html{font-size:17px}.panel{padding:22px}.pairs,.draftPairs{grid-template-columns:1fr}.playerInput{grid-template-columns:54px 1fr}.sCheck span{width:54px;height:54px}.teamList{grid-template-columns:1fr}}
