:root{--blue:#1E6FA8;--blue2:#E8F0F6;--ink:#14212B;--sub:#6B7A86;--line:#E3DFD6;--bg:#F6F4EF;--card:#fff;--red:#E2483D;--green:#2FBF71;
  --safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%;background:var(--bg)}
body{font-family:'Noto Sans KR',system-ui,sans-serif;color:var(--ink);overscroll-behavior:none;-webkit-user-select:none;user-select:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
svg{display:block}
#app{max-width:520px;margin:0 auto;height:100%;position:relative;overflow:hidden}
.screen{position:absolute;inset:0;padding:calc(18px + var(--safe-t)) 20px calc(16px + var(--safe-b));overflow-y:auto;display:none;flex-direction:column}
.screen.on{display:flex}

/* 머리 */
.hd{display:flex;align-items:center;gap:10px;margin-bottom:18px}
.sym svg{width:44px;height:44px}
.wm{font:800 25px/1 Inter;letter-spacing:-.8px;white-space:nowrap}.wm span{font-weight:500;letter-spacing:-.5px}
.ib{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;color:var(--ink)}
.ib svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ib:active{background:rgba(0,0,0,.05)}
.hd .ib{margin-left:auto}
.me{width:38px;height:38px;border-radius:50%;background:#D5E4EF;color:var(--blue);font-weight:700;font-size:14px;overflow:hidden}
.me.in{background:var(--blue);color:#fff}

/* 친구 방 */
.room{background:var(--blue);border-radius:20px;padding:18px 20px;color:#fff;display:flex;align-items:center;gap:12px}
.room b{font-size:18px;display:block}.room span{font-size:12.5px;opacity:.85}
.room .soon{margin-left:auto;font-style:normal;font-size:12px;background:rgba(255,255,255,.18);border-radius:999px;padding:6px 11px;white-space:nowrap}

.row-h{display:flex;align-items:baseline;gap:8px;margin:24px 0 10px}
h3{font-size:14px;font-weight:700}
.row-h .sub{font-size:12px;color:var(--sub);margin-left:auto}
.chips{display:flex;gap:6px;overflow-x:auto;margin:0 -20px 12px;padding:0 20px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;font-size:13px;padding:7px 13px;border-radius:999px;background:var(--card);color:var(--sub);box-shadow:inset 0 0 0 1px var(--line)}
.chip.on{background:var(--ink);color:#fff;box-shadow:none}

/* 게임 카드 */
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.g{background:var(--card);border-radius:16px;min-height:108px;padding:10px 10px 11px;display:flex;flex-direction:column;justify-content:flex-end;position:relative;overflow:hidden;text-align:left;box-shadow:0 1px 2px rgba(0,0,0,.05)}
.g b{font-size:14px;position:relative}
.g i{font-style:normal;font-size:11px;color:var(--sub);position:relative;margin-top:1px}
.g .tag{position:absolute;top:8px;right:8px;font-size:10px;background:var(--blue2);color:var(--blue);padding:2px 7px;border-radius:999px}
.g .q{position:absolute;top:5px;left:5px;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;color:var(--sub);font:600 12px Inter;z-index:2}
.g .q span{width:18px;height:18px;border-radius:50%;box-shadow:inset 0 0 0 1.4px currentColor;display:grid;place-items:center;font-size:11px}
.g.live{background:#E9D3B6 url(../img/wood.jpg) center/220%}
.g.live::before{content:'';position:absolute;inset:0;background:linear-gradient(transparent 30%,rgba(255,255,255,.9))}
.g.live .q{color:#5a4428}
.g .ms{position:absolute;right:12px;top:32px;display:flex}
.g .ms img{width:24px;height:24px;margin-left:-7px}
.g.next{box-shadow:inset 0 0 0 1.5px var(--blue)}
.g.next i{color:var(--blue)}
.g.soon{opacity:.72}
.g:active{transform:scale(.98)}
.foot{font-size:12px;color:var(--sub);text-align:center;margin:20px 0 4px}

/* 오목 화면 */
.gh{display:flex;align-items:center;gap:4px;margin:-6px -8px 10px}
.gh b{font-size:17px;margin-right:auto;margin-left:2px}
.pl{display:flex;align-items:center;gap:10px;background:var(--card);border-radius:16px;padding:10px 12px;transition:box-shadow .2s}
.pl.turn{box-shadow:inset 0 0 0 2.5px var(--blue)}
.pl .av{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-weight:700;color:#fff;font-size:15px;flex:none}
.pl .av.cpu{background:#55636F}
.pl .av.me{background:var(--blue)}
.pl b{font-size:15px;display:block}.pl i{font-style:normal;font-size:12px;color:var(--sub)}
.pl img{width:24px;height:24px;margin-left:auto}
.pl .think{font-size:12px;color:var(--blue);margin-left:auto;display:none}
.pl.thinking .think{display:block}
.pl.thinking img{margin-left:6px}
.bd-wrap{flex:1;display:flex;align-items:center;justify-content:center;min-height:0;padding:12px 0}
.bd{position:relative;width:100%;max-width:min(100%,calc(100dvh - 300px));aspect-ratio:1;border-radius:8px;background:#E9D3B6 url(../img/wood.jpg) center/cover;box-shadow:0 10px 26px rgba(70,45,10,.28),inset 0 0 0 1px rgba(90,60,20,.25);touch-action:manipulation}
.bd svg.grid-l{position:absolute;inset:0;width:100%;height:100%}
.st{position:absolute;width:6.3%;aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none}
.st.new{animation:drop .16s ease-out}
@keyframes drop{from{transform:translate(-50%,-62%) scale(1.12);opacity:.6}to{transform:translate(-50%,-50%) scale(1);opacity:1}}
.st.ghost{opacity:.5}
.st.win{filter:drop-shadow(0 0 5px rgba(226,72,61,.95))}
.last{position:absolute;width:2.1%;aspect-ratio:1;border-radius:50%;background:var(--red);transform:translate(-50%,-50%);pointer-events:none}
.ban{position:absolute;width:4.4%;aspect-ratio:1;transform:translate(-50%,-50%);color:var(--red);font:700 15px/1 Inter;display:grid;place-items:center;pointer-events:none}
.bar{display:flex;gap:10px;margin-top:12px}
.bar button{flex:1;text-align:center;padding:13px;border-radius:14px;background:var(--card);font-size:14px;font-weight:500;box-shadow:0 1px 2px rgba(0,0,0,.05)}
.bar button:disabled{opacity:.4}
.toast{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);background:rgba(20,33,43,.9);color:#fff;border-radius:12px;padding:10px 16px;font-size:14px;opacity:0;pointer-events:none;transition:opacity .2s;white-space:nowrap}
.toast.on{opacity:1}

/* 창 */
.scrim{position:absolute;inset:0;background:rgba(10,18,26,.4);opacity:0;pointer-events:none;transition:opacity .2s;z-index:10}
.scrim.on{opacity:1;pointer-events:auto}
.sheet{position:absolute;left:0;right:0;bottom:0;max-height:88%;background:var(--bg);border-radius:22px 22px 0 0;padding:10px 20px calc(20px + var(--safe-b));transform:translateY(105%);transition:transform .25s cubic-bezier(.2,.8,.2,1);z-index:11;display:flex;flex-direction:column}
.sheet.on{transform:none}
.sheet .grab{width:38px;height:4px;border-radius:2px;background:#cfcac0;margin:0 auto 12px;flex:none}
.sheet h2{font-size:19px;margin-bottom:12px}
.sheet .body{overflow-y:auto;margin:0 -20px;padding:0 20px;flex:1;min-height:0}
.sheet .x{position:absolute;right:12px;top:12px}
.btn{display:block;width:100%;padding:15px;border-radius:15px;background:var(--blue);color:#fff;font-weight:700;font-size:16px;text-align:center;margin-top:14px}
.btn.ghost{background:var(--card);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line);font-weight:500}
.seg{display:flex;background:#ECE8E0;border-radius:12px;padding:3px;gap:3px}
.seg button{flex:1;padding:10px 4px;border-radius:9px;font-size:14px;color:var(--sub)}
.seg button.on{background:#fff;color:var(--ink);font-weight:700;box-shadow:0 1px 3px rgba(0,0,0,.1)}
.fld{margin-bottom:16px}.fld>label{display:block;font-size:13px;color:var(--sub);margin-bottom:7px}
.seg img{width:18px;height:18px;display:inline-block;vertical-align:-4px;margin-right:4px}

/* 룰 3줄 */
.three{list-style:none;counter-reset:n}
.three li{counter-increment:n;background:var(--card);border-radius:14px;padding:13px 14px 13px 46px;position:relative;font-size:15px;line-height:1.5;margin-bottom:8px}
.three li::before{content:counter(n);position:absolute;left:14px;top:13px;width:22px;height:22px;border-radius:50%;background:var(--blue);color:#fff;font:700 12px/22px Inter;text-align:center}
.more{font-size:13px;color:var(--sub);line-height:1.65;margin-top:10px}
.more b{color:var(--ink)}

/* 결과 */
.res{text-align:center;padding:6px 0 0}
.res .big{font-size:28px;font-weight:800;margin:6px 0 4px}
.res .rs{font-size:14px;color:var(--sub)}

/* 설정 4탭 */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin:0 -20px 14px;padding:0 14px;flex:none}
.tabs button{flex:1;padding:11px 2px 10px;font-size:14px;color:var(--sub);border-bottom:2.5px solid transparent;margin-bottom:-1px}
.tabs button.on{color:var(--ink);font-weight:700;border-color:var(--ink)}
.tabs button[data-t=more]{font:600 13px Inter;letter-spacing:.3px}
.opt{display:flex;align-items:center;gap:12px;background:var(--card);padding:14px;border-radius:14px;margin-bottom:8px}
.opt div{flex:1}.opt b{font-size:15px;font-weight:500;display:block}.opt i{font-style:normal;font-size:12px;color:var(--sub)}
.sw{width:48px;height:28px;border-radius:14px;background:#D3CEC4;position:relative;flex:none;transition:background .2s}
.sw::after{content:'';position:absolute;left:3px;top:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .2s}
.sw.on{background:var(--green)}.sw.on::after{transform:translateX(20px)}
.gl{background:var(--card);border-radius:14px;margin-bottom:8px;overflow:hidden}
.gl summary{list-style:none;padding:14px;font-size:15px;font-weight:500;display:flex;align-items:center;gap:8px;cursor:pointer}
.gl summary::-webkit-details-marker{display:none}
.gl summary em{font-style:normal;font-size:11px;color:var(--sub);margin-left:auto}
.gl[open] summary{border-bottom:1px solid var(--line)}
.gl .in{padding:12px 14px 14px}
.gl .three li{background:var(--bg)}
.ab{text-align:center;padding:10px 0}
.ab .sym svg{width:64px;height:64px;margin:0 auto 6px}
.ab .wm{font-size:24px;display:inline-block}
.ab p{font-size:13px;color:var(--sub);margin-top:4px}
.ab-list{margin-top:16px}
.ab-list a,.ab-list button{display:flex;justify-content:space-between;align-items:center;width:100%;background:var(--card);padding:14px;border-radius:14px;margin-bottom:8px;font-size:15px;color:var(--ink);text-decoration:none}
.ab-list span{color:var(--sub);font-size:13px}
.copy{font:500 12px Inter;color:var(--sub);text-align:center;margin-top:12px}

/* 연습 판 */
.pr-msg{font-size:15px;line-height:1.5;background:var(--card);border-radius:14px;padding:12px 14px;margin-bottom:10px;min-height:48px}
.pr-bd{width:100%;max-width:340px;margin:0 auto}
.hint{position:absolute;width:5.4%;aspect-ratio:1;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 2.5px var(--blue);animation:pulse 1.1s ease-in-out infinite;pointer-events:none}
@keyframes pulse{50%{box-shadow:0 0 0 5px rgba(30,111,168,.35)}}

@media (min-width:700px){#app{box-shadow:0 0 0 1px var(--line)}}
#home>*{flex-shrink:0}
.opt{width:100%;text-align:left}
#plTop{cursor:pointer}
