:root{
  --bg:#ffffff; --surface:#f3f3f3; --ink:#0a0a0a; --muted:#6b6b6b;
  --accent:#2436ff; --accent-ink:#ffffff;
  --blue:#2436ff; --red:#ff3b1f; --black:#0a0a0a; --navy:#050a5c;
  --skin:#f5cd30;
  --pad:20px; --max:1240px;
  --disp:'Black Han Sans','Noto Sans KR',sans-serif;
  --text:'Noto Sans KR',system-ui,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--text);font-size:18px;line-height:1.6;word-break:keep-all;overflow-wrap:break-word}
img,svg{display:block;max-width:100%}
button,input,a{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none;padding:0}
a{color:inherit}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.on-dark :focus-visible,.card :focus-visible{outline-color:#fff}
.sr{position:absolute;width:2px;height:2px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
.d{font-family:var(--disp);font-weight:400;letter-spacing:0}

/* one button shape: square, filled, 56px */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:56px;padding:0 24px;font-weight:700;font-size:18px;background:var(--ink);color:#fff;text-decoration:none;transition:transform .15s ease-out,background-color .2s ease-out}
.btn:hover{background:var(--accent)}
.btn:active{transform:translateY(2px)}
.btn.alt{background:var(--surface);color:var(--ink)}
.btn.alt:hover{background:#e6e6e6}
.btn.full{width:100%}

/* top bar */
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px var(--pad);max-width:var(--max);margin:0 auto}
.brand{font-family:var(--disp);font-size:22px;text-decoration:none;min-height:44px;display:flex;align-items:center}
.nav{display:flex;gap:4px}
.nav a{min-height:44px;display:flex;align-items:center;padding:0 10px;font-size:14px;font-weight:700;text-decoration:none;background:var(--surface)}
.nav a:hover{background:var(--ink);color:#fff}

/* views */
[hidden]{display:none!important}
.view{animation:enter .28s cubic-bezier(.2,.8,.2,1)}
@keyframes enter{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* START — name across the middle */
.start{padding-top:clamp(72px,14svh,150px)}
.name{margin:0;line-height:.85;white-space:nowrap;overflow:hidden;font-family:var(--disp);font-weight:400;text-transform:uppercase}
.name span{display:inline-block;font-size:17.5vw}
.start-grid{display:grid;gap:28px;margin-top:22px}
.name .h1-sub{display:block;font-family:var(--text);font-weight:700;font-size:20px;line-height:1.3;white-space:normal;text-transform:none;margin:14px 0 0;color:var(--accent)}
.friend{margin:0 0 14px;padding:12px 14px;background:var(--skin);font-weight:700;font-size:17px}
.kicker{font-weight:900;font-size:20px;margin:0 0 6px;color:#000}
.g-ko{font-size:14px;font-weight:400;color:var(--muted);margin-left:6px}
.glist details[open] summary .g-ko{color:#ddd}
.faq{display:grid;gap:6px;max-width:820px}
.faq details{background:var(--surface)}
.faq summary{min-height:56px;display:flex;align-items:center;padding:12px 16px;cursor:pointer;list-style:none;font-weight:700;font-size:18px}
.faq summary::-webkit-details-marker{display:none}
.faq details[open] summary{background:var(--ink);color:#fff}
.faq p{margin:0;padding:14px 16px 16px}
.faq a{text-decoration:underline}
.lead{font-size:20px;font-weight:700;margin:0 0 18px;max-width:30ch}
.meta{margin:14px 0 0;color:var(--muted);font-size:14px}
.fields{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:4px}
.fields li{min-height:72px;padding:12px 14px;color:#fff;font-weight:700;font-size:16px;display:flex;flex-direction:column;justify-content:space-between}
.fields b{font-family:var(--disp);font-weight:400;font-size:30px;line-height:1}
@media (min-width:760px){.fields{grid-template-columns:repeat(4,1fr)}.fields li{min-height:140px}}
.poster{position:relative;margin:0;aspect-ratio:4/5;background:var(--blue);overflow:hidden}
.poster .av-big{position:absolute;left:50%;bottom:-4%;width:74%;transform:translateX(-50%) rotate(-4deg)}
.poster .tag{position:absolute;z-index:2;font-family:var(--disp);font-size:22px;line-height:1;padding:8px 12px;background:#fff;color:var(--ink)}
.poster .tag.t1{left:6%;top:7%;transform:rotate(-5deg)}
.poster .tag.t2{right:6%;top:24%;background:var(--red);transform:rotate(4deg)}
.blk{position:absolute;width:9%;aspect-ratio:1;animation:bob 3.2s cubic-bezier(.45,0,.55,1) infinite alternate}
.blk.r{background:var(--red)}.blk.w{background:#fff}.blk.k{background:var(--ink)}.blk.y{background:var(--skin)}
@keyframes bob{from{transform:translateY(0) rotate(0)}to{transform:translateY(-14px) rotate(12deg)}}
.marq{margin-top:28px;background:var(--red);color:var(--ink);overflow:hidden;white-space:nowrap}
.marq-in{display:inline-flex;gap:28px;padding:12px 16px;animation:marq 38s linear infinite;font-family:var(--disp);font-size:22px}
@keyframes marq{to{transform:translateX(-50%)}}

/* QUIZ */
.quiz{padding-top:16px;padding-bottom:40px;min-height:calc(100svh - 60px);display:flex;flex-direction:column}
.qtop{display:flex;justify-content:space-between;align-items:center;gap:12px}
.qcount{font-family:var(--disp);font-size:22px;margin:0}
.prog{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;margin:14px 0 0}
.prog i{display:block;height:12px;background:var(--surface);transition:background-color .2s ease-out}
.prog i.on{background:var(--accent)}
.qtext{font-family:var(--disp);font-weight:400;font-size:clamp(30px,7.6vw,56px);line-height:1.18;margin:clamp(28px,7svh,64px) 0 28px;max-width:18ch}
.qtext:focus{outline:none}
.opts{display:grid;gap:8px;margin-top:auto}
.opt{display:flex;align-items:center;gap:16px;text-align:left;min-height:104px;padding:18px 20px;font-size:18px;font-weight:700;line-height:1.45;transition:transform .15s ease-out}
.opt b{font-family:var(--disp);font-weight:400;font-size:34px;flex:none;width:44px;height:44px;display:grid;place-items:center;background:#fff;color:var(--ink)}
.opt-a{background:var(--blue);color:#fff}
.opt-b{background:var(--red);color:var(--ink)}
.opt:hover{transform:translateX(4px)}
.opt:active{transform:scale(.98)}

/* LOADING */
.load{min-height:calc(100svh - 60px);display:grid;place-content:center;text-align:center;gap:20px}
.load-code{display:flex;gap:6px;justify-content:center}
.load-code span{width:64px;height:76px;display:grid;place-items:center;font-family:var(--disp);font-size:44px;color:#fff;animation:flip .5s steps(2) infinite}
.load-code span:nth-child(1){background:var(--blue)}
.load-code span:nth-child(2){background:var(--red);color:var(--ink);animation-delay:.12s}
.load-code span:nth-child(3){background:var(--ink);animation-delay:.24s}
.load-code span:nth-child(4){background:var(--navy);animation-delay:.36s}
@keyframes flip{50%{transform:translateY(-8px)}}
.load p{font-family:var(--disp);font-size:28px;margin:0}

/* RESULT — the player card */
.result{padding-top:16px;padding-bottom:56px}
.res-grid{display:grid;gap:28px}
.card{position:relative;padding:22px 22px 20px;color:#fff;background:var(--blue);overflow:hidden}
.card[data-g=NF]{background:var(--red);color:var(--ink)}
.card[data-g=SJ]{background:var(--navy)}
.card[data-g=SP]{background:var(--black)}
.card-top{margin:0;font-weight:700;font-size:16px}
.code{margin:4px 0 0;font-family:var(--disp);font-weight:400;font-size:clamp(104px,30vw,180px);line-height:.85}
.title{margin:10px 0 0;font-family:var(--disp);font-size:clamp(34px,9vw,52px);line-height:1.05}
.card-av{width:56%;margin:10px 0 0 auto;transform:rotate(4deg)}
.card-av svg{animation:bob 2.6s cubic-bezier(.45,0,.55,1) infinite alternate}
.tags{list-style:none;margin:-8px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px;position:relative}
.tags li{background:#fff;color:var(--ink);font-weight:700;font-size:14px;padding:6px 10px}
.card-foot{display:flex;justify-content:space-between;margin:16px 0 0;font-size:14px;font-weight:700}
.desc{font-size:18px;margin:0}
.h3{font-family:var(--disp);font-weight:400;font-size:30px;line-height:1.1;margin:0 0 12px}
.bars{display:grid;gap:12px}
.bar-top{display:flex;justify-content:space-between;font-size:14px;font-weight:700}
.bar{display:flex;height:22px;background:var(--surface)}
.bar i{display:block;height:100%;background:var(--ink);transition:width .5s cubic-bezier(.2,.8,.2,1)}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.duo button{text-align:left;padding:14px;min-height:96px;background:var(--surface);transition:background-color .2s ease-out}
.duo button:hover{background:#e6e6e6}
.duo small{display:block;font-size:14px;font-weight:700;color:var(--muted)}
.duo strong{display:block;font-family:var(--disp);font-weight:400;font-size:32px;line-height:1.1}
.duo span{font-size:14px}
.share{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.share .btn:first-child{grid-column:1/-1;background:var(--accent)}
.share .btn:first-child:hover{background:var(--ink)}

/* BOARD rows (dex + result games) */
.board{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.row-btn{width:100%;min-height:68px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:0 16px;text-align:left;background:var(--surface);transition:background-color .2s ease-out}
.row-btn:hover{background:#e6e6e6}
.row-code{font-family:var(--disp);font-size:30px;line-height:1;min-width:84px}
.row-name{font-weight:700;font-size:18px}
.row-g{font-size:14px;font-weight:700;padding:4px 8px;color:#fff}
.g-NT{background:var(--blue)}.g-NF{background:var(--red);color:var(--ink)!important}.g-SJ{background:var(--navy)}.g-SP{background:var(--black)}
.row-panel{background:var(--accent);color:#fff;padding:18px 16px 18px;min-height:140px}
.row.open .row-btn{background:var(--accent);color:#fff}
.row.open .row-btn .row-g{background:#fff;color:var(--ink)!important}
.row.open{min-height:208px}
.row-panel p{margin:0 0 12px;font-size:18px}
.row-panel .btn{background:#fff;color:var(--ink);min-height:48px;font-size:16px}
.row-panel .btn:hover{background:var(--ink);color:#fff}
.pc{display:grid;gap:4px;margin:0 0 14px;font-size:16px}
.pc b{display:inline-block;min-width:46px}

/* MORE sections */
.more{padding:72px 0 0}
.sec{padding-bottom:80px}
.sec-h{font-family:var(--disp);font-weight:400;font-size:clamp(44px,11vw,120px);line-height:.95;margin:0 0 16px}
.sec-p{margin:0 0 20px;font-size:18px;max-width:44ch}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 16px}
.chip{min-height:44px;padding:0 14px;font-weight:700;font-size:14px;background:var(--surface);transition:background-color .2s ease-out}
.chip[aria-pressed=true]{background:var(--ink);color:#fff}
.giant{font-family:var(--disp);font-weight:400;font-size:clamp(120px,40vw,420px);line-height:.8;margin:0 0 20px;color:var(--red)}
.search{width:100%;min-height:56px;padding:0 16px;font-size:18px;background:var(--surface);border:3px solid var(--surface);margin:0 0 12px}
.search:focus{border-color:var(--accent);outline:none}
.glist{display:grid;gap:6px}
.glist details{background:var(--surface)}
.glist summary{min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px;cursor:pointer;list-style:none;font-weight:700;font-size:18px}
.glist summary::-webkit-details-marker{display:none}
.glist summary em{font-style:normal;font-size:14px;color:var(--muted);flex:none}
.glist details[open] summary{background:var(--ink);color:#fff}
.glist details[open] summary em{color:#fff}
.glist .gbody{padding:14px 16px 16px}
.glist .gfit{font-size:14px;color:var(--muted);margin:0 0 12px}
.empty{color:var(--muted);font-size:16px}

/* AD + FOOTER */
.ad{max-width:var(--max);margin:0 auto;padding:0 var(--pad) 28px}
.ad small{display:block;font-size:14px;color:var(--muted);margin:0 0 6px}
.ad a{display:flex;align-items:center;justify-content:space-between;min-height:56px;padding:0 18px;background:var(--surface);font-weight:700;font-size:16px;text-decoration:none}
.ad a:hover{background:#e6e6e6}
footer{background:var(--ink);color:#fff;padding:40px 0 calc(40px + env(safe-area-inset-bottom))}
.mark{display:grid;gap:14px;margin:0 0 32px;transform-origin:left bottom}
.mark>div{display:grid;grid-template-columns:repeat(23,1fr);gap:3px}
@media (min-width:760px){.mark{grid-template-columns:1fr 1fr;gap:4px}.mark>div{gap:4px}.mark>div+div{padding-left:calc((100% - 88px)/23)}}
.mark i{aspect-ratio:1;display:block}
.foot-note{font-size:14px;line-height:1.7;color:#d7d7d7;margin:0 0 10px;max-width:60ch}
.foot-note a{color:#fff;font-weight:700}
.copy{font-size:14px;color:#a8a8a8;margin:18px 0 0}

.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);opacity:0;background:var(--ink);color:#fff;padding:14px 20px;font-weight:700;font-size:16px;pointer-events:none;transition:opacity .2s ease-out,transform .2s ease-out;z-index:9}
.toast.show{opacity:1;transform:translate(-50%,0)}

body[data-view=quiz] .more,body[data-view=quiz] .ad,body[data-view=load] .more,body[data-view=load] .ad{display:none}

@media (min-width:760px){
  :root{--pad:28px}
  .start{padding-top:56px}
  .start-grid{grid-template-columns:1.1fr .9fr;align-items:start;gap:40px}
  .lead{font-size:22px}
  .poster{max-height:none}
  .res-grid{grid-template-columns:minmax(0,440px) 1fr;align-items:start;gap:40px}
  .card{position:sticky;top:16px}
  .opts{grid-template-columns:1fr 1fr;margin-top:0}
  .opt{min-height:160px;align-items:flex-start}
  .quiz{min-height:0}
  .glist{grid-template-columns:1fr 1fr;align-items:start}
}
@media (min-width:1100px){
  .start-grid{grid-template-columns:1fr 1fr 360px}
  .poster{grid-column:3;grid-row:1/span 2}
  .start-copy{grid-column:1/span 2}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}

/* v4: site directory footer + subpages */
.fdir{display:grid;gap:22px;margin:0 0 28px}
.fdir-h{font-family:var(--disp);font-size:20px;margin:0 0 8px;color:#fff}
.fdir ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.fdir a{display:inline-flex;align-items:center;min-height:40px;color:#fff;font-size:15px;font-weight:700;text-decoration:none}
.fdir a:hover{text-decoration:underline}
.fdir-codes{grid-template-columns:1fr 1fr}
.fdir-codes span{font-weight:400;color:#cfcfcf;margin-left:6px;font-size:13px}
@media (min-width:760px){.fdir{grid-template-columns:1fr 1fr 2fr}.fdir-codes{grid-template-columns:1fr 1fr 1fr}}
.glinks{display:flex;flex-wrap:wrap;gap:6px;margin:18px 0 0}
.glinks a{min-height:44px;display:inline-flex;align-items:center;padding:0 14px;font-weight:700;font-size:15px;background:var(--ink);color:#fff;text-decoration:none}
.glinks a:hover{background:var(--accent)}
.row-panel .more-link{display:inline-flex;align-items:center;min-height:44px;margin-top:2px;color:#fff;font-weight:700;font-size:16px;text-decoration:underline}

.sub .page{padding-top:12px;padding-bottom:72px}
.crumbs ol{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-wrap:wrap;gap:4px 8px;font-size:14px;color:var(--muted)}
.crumbs li+li::before{content:"›";margin-right:8px}
.crumbs a{text-decoration:none;font-weight:700;color:var(--ink);display:inline-flex;min-height:32px;align-items:center}
.ph{font-family:var(--disp);font-weight:400;font-size:clamp(40px,10vw,96px);line-height:1;margin:0 0 18px}
.page .lead{max-width:40ch}
.page p{max-width:66ch}
.page a:not(.btn){text-decoration:underline;text-underline-offset:3px}
.blk-sec{margin-top:56px}
.h2{font-family:var(--disp);font-weight:400;font-size:clamp(30px,7vw,52px);line-height:1.1;margin:0 0 14px}
.h2 a{text-decoration:none!important}
.tp-hero{display:grid;gap:28px}
.tp .card .code{font-size:clamp(96px,28vw,170px)}
.tp .card .code .title{display:block;font-size:clamp(34px,9vw,52px);line-height:1.05;margin-top:12px}
.tp-intro .btn{margin-top:18px}
.axes{display:grid;gap:8px}
.axis{background:var(--surface);padding:18px 16px}
.axis h3{margin:0 0 8px;font-size:20px;display:flex;align-items:center;gap:10px}
.axl{font-family:var(--disp);font-weight:400;font-size:30px;width:44px;height:44px;display:grid;place-items:center;background:var(--ink);color:#fff}
.axis p{margin:0 0 10px;font-size:17px}
.axq-h{font-weight:700;font-size:15px!important;color:var(--muted)}
.axq{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.axq li{background:#fff;padding:10px 12px;font-size:16px}
.axq .q{color:var(--muted)}
.gcards{display:grid;gap:8px}
.gcard{background:var(--surface);padding:18px 16px}
.gcard-h{margin:0;font-size:22px}
.gcard-genre{margin:2px 0 12px;font-size:14px;font-weight:700}
.gcard .gfit{font-size:15px;color:var(--ink);margin:0 0 12px}
.gcard .btn{font-size:16px;min-height:48px}
.duo2{display:grid;gap:6px}
.duo2 a{display:block;text-decoration:none!important;background:var(--surface);padding:16px;transition:background-color .2s ease-out}
.duo2 a:hover{background:#e6e6e6}
.duo2 small{display:block;font-size:14px;font-weight:700;color:var(--muted)}
.duo2 strong{display:block;font-family:var(--disp);font-weight:400;font-size:36px;line-height:1.1}
.duo2 .duo-t{display:block;font-weight:700;margin:0 0 6px}
.duo2 span{font-size:16px}
.mates,.plain{margin:0;padding:0;list-style:none;display:grid;gap:6px}
.mates a{display:flex;align-items:center;gap:10px;min-height:56px;padding:0 16px;background:var(--surface);text-decoration:none!important;font-weight:700}
.mates a:hover{background:#e6e6e6}
.plain li{background:var(--surface);padding:12px 14px;font-size:17px}
.tlist{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.tlist a{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center;padding:14px 16px;background:var(--surface);text-decoration:none!important}
.tlist a:hover{background:#e6e6e6}
.tl-d{display:block;font-size:15px;color:var(--muted);font-weight:400}
.glist2{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:4px}
.glist2 li{background:var(--surface);padding:12px 14px}
.glist2 a{font-size:18px}
@media (min-width:760px){
 .tp-hero{grid-template-columns:minmax(0,420px) 1fr;align-items:start;gap:40px}
 .tp .card{position:static}
 .axes,.gcards,.duo2,.tlist,.glist2{grid-template-columns:1fr 1fr}
 .gcards{grid-template-columns:repeat(3,1fr)}
}

.ad-slot{display:none}
.ad-slot.is-filled{display:block;max-width:var(--max);margin:40px auto;padding:0 var(--pad);overflow:hidden;text-align:center}
.ad-slot.is-filled::before{content:"광고";display:block;font-size:12px;color:var(--muted);text-align:left;margin:0 0 4px}
.page .ad-slot.is-filled{padding:0}
.ads-debug .ad-slot{display:block;min-height:90px;margin:32px auto;max-width:var(--max);outline:3px dashed #e00;outline-offset:-3px;background:rgba(255,0,0,.07);position:relative}
.ads-debug .ad-slot::after{content:"AD SLOT · " attr(data-slot);position:absolute;left:10px;top:8px;font:700 14px/1.2 monospace;color:#c00}
body[data-view=quiz] .ad-slot,body[data-view=load] .ad-slot{display:none!important}

.giant{-webkit-text-stroke:.022em #0a0a0a;paint-order:stroke fill;text-shadow:.012em .012em 0 #c21a00,.024em .024em 0 #a81600,.036em .036em 0 #8f1200,.048em .048em 0 #760e00,.06em .06em 0 #5c0b00,.07em .07em 0 #0a0a0a,.09em .1em .03em rgba(0,0,0,.28);margin-top:.12em;margin-bottom:calc(20px + .08em)}
