:root{--bg: #2f4a3a;--bg2: #223829;--paper: #f4ead2;--ink: #2b2118;--accent: #e0a526;--wood: #e8c079;--line: #8a6a35;--cell: min(calc((100vw - 16px) / 9), calc((100vh - 285px) / 9))}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;background:var(--bg);color:var(--paper);font-family:Hiragino Maru Gothic ProN,Hiragino Sans,sans-serif;touch-action:manipulation;overscroll-behavior:none;-webkit-user-select:none;user-select:none}#ui{position:fixed;inset:0;overflow-y:auto;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.screen{min-height:100%;display:flex;flex-direction:column;align-items:center;gap:14px;padding:16px}.screen.center{justify-content:center;text-align:center}.title{font-size:28px;font-weight:700;margin-top:8px;text-align:center}.logo{font-size:44px;font-weight:700;text-align:center;letter-spacing:.1em}.logo-piece{display:inline-block;background:var(--wood);color:var(--ink);font-size:64px;padding:6px 20px 14px;clip-path:polygon(50% 0,92% 18%,100% 100%,0 100%,8% 18%);margin-bottom:10px}.btn{min-width:64px;min-height:64px;padding:12px 28px;font-size:22px;font-weight:700;font-family:inherit;border:0;border-radius:16px;background:var(--paper);color:var(--ink)}.btn.big{font-size:28px;padding:16px 44px;background:var(--accent)}.btn.small{min-height:64px;padding:8px 18px;font-size:18px}.btn.on{background:var(--accent)}.btn:active{transform:scale(.97)}.cards{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;max-width:720px}.card{width:200px;min-height:140px;border:0;border-radius:20px;background:var(--paper);color:var(--ink);font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px}.card .emoji,.row .emoji{font-size:48px;line-height:1.1}.card .pname{font-size:24px;font-weight:700}.card .last{font-size:14px;opacity:.7}.adult-btn{position:relative;margin-top:auto;min-width:96px;min-height:64px;border:2px dashed var(--paper);border-radius:16px;background:transparent;color:var(--paper);font-family:inherit;font-size:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;opacity:.8}.adult-btn small{font-size:11px;opacity:.7}.adult-btn .ring{position:absolute;left:0;bottom:0;height:4px;width:0;background:var(--accent)}.adult-btn.holding .ring{width:100%;transition:width 2s linear}.adult section{width:min(560px,100%);background:var(--bg2);border-radius:16px;padding:14px;display:flex;flex-direction:column;gap:10px}.row{display:flex;align-items:center;gap:10px}.grow{flex:1;font-size:20px}.row input[type=text]{flex:1;min-height:64px;font-size:20px;padding:0 14px;border-radius:12px;border:0;font-family:inherit}.row input[type=range]{flex:2;height:64px}.icons{display:flex;gap:8px;flex-wrap:wrap}.icon{width:64px;height:64px;font-size:36px;border:3px solid transparent;border-radius:14px;background:var(--paper)}.icon.on{border-color:var(--accent)}.note{opacity:.8;margin:0}.topbar{width:100%;display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:18px}.signs{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;max-width:760px}.sign{width:140px;height:120px;border:0;border-radius:14px;background:var(--wood);color:var(--ink);font-family:inherit;font-size:20px;font-weight:700;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}.sign .emoji{font-size:40px}.sign.off{opacity:.45}.lessons{width:min(520px,100%);display:flex;flex-direction:column;gap:10px}.lessons.hidden{display:none}.lesson{min-height:64px;display:flex;justify-content:space-between;align-items:center;padding:8px 20px;font-size:22px;font-weight:700;font-family:inherit;border:0;border-radius:14px;background:var(--paper);color:var(--ink)}.stars{color:#d79a00;letter-spacing:.1em}.message.good{background:#2d7a46;font-weight:700;animation:pop .3s ease-out}.message.solved{background:#e0a526;color:#2b2118;font-size:28px;font-weight:700;min-height:84px;animation:pop .5s ease-out}.board.solved{animation:flash .9s ease-out}@keyframes pop{0%{transform:scale(.85)}60%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes flash{0%,to{box-shadow:0 0 #ffd65a00}30%{box-shadow:0 0 0 10px #ffd65ae6}}@media(prefers-reduced-motion:reduce){.message.good,.message.solved,.board.solved{animation:none}}.message{width:min(calc(var(--cell) * 9),100%);min-height:64px;display:flex;align-items:center;justify-content:center;text-align:center;background:var(--bg2);border-radius:12px;padding:8px 12px;font-size:18px;line-height:1.4}.board{display:grid;grid-template-columns:repeat(9,var(--cell));grid-auto-rows:var(--cell);background:var(--wood);border:3px solid var(--line);border-radius:4px}.cell{position:relative;padding:0;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:transparent;display:flex;align-items:center;justify-content:center}.cell:nth-child(9n){border-right:0}.cell:nth-child(n+73){border-bottom:0}.cell.sel{background:#e08c14bf}.cell.sel .piece{background:#ffe08a;transform:translateY(-4px);filter:drop-shadow(0 3px 2px rgba(0,0,0,.4))}.cell.target:after{content:"";width:34%;height:34%;border-radius:50%;background:#286ee6d9;box-shadow:0 0 0 3px #ffffffb3;position:absolute}.piece{display:flex;align-items:center;justify-content:center;width:86%;height:90%;background:#f7e3b0;color:var(--ink);font-size:calc(var(--cell) * .55);font-weight:700;clip-path:polygon(50% 0,92% 16%,100% 100%,0 100%,8% 16%);padding-top:12%}.piece.gote{transform:rotate(180deg)}.piece.dim{opacity:.55}.actions{display:flex;gap:12px;min-height:64px;align-items:center;justify-content:center}.big-stars{font-size:56px;color:#f2c230;letter-spacing:.1em}.levelup{font-size:24px;color:var(--accent);font-weight:700}#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%);background:#000c;color:#fff;padding:12px 22px;border-radius:14px;font-size:18px;opacity:0;pointer-events:none;transition:opacity .2s}#toast.show{opacity:1}.piece.promoted{color:#b3261e}.lesson .lk{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin-right:12px;background:#f7e3b0;border-radius:6px;font-size:28px}.lesson .lt{flex:1;text-align:left}.lessons{max-height:55vh;overflow-y:auto}.cell.mark:after{content:"";position:absolute;inset:14%;border:4px solid rgba(40,110,230,.9);border-radius:50%}.cell.ans:after{content:"";width:38%;height:38%;border-radius:50%;background:#1ea050e6;position:absolute;box-shadow:0 0 0 3px #ffffffb3}.cell.ans-ring:after{content:"";position:absolute;inset:6%;border:5px solid rgba(30,160,80,.95);border-radius:8px}.cell.bad{background:#dc3c328c}.piece.dim0{opacity:1}.lesson .lk.drill{background:transparent;font-size:32px}.lesson .sub{font-size:14px;opacity:.65;margin-right:10px}.sign.on{outline:4px solid var(--accent)}.tsume-screen{--cell: min(calc((100vw - 16px) / 9), calc((100vh - 400px) / 9))}.actions.wrap{flex-wrap:wrap}.hand{width:min(calc(var(--cell) * 9),100%);min-height:56px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:4px 8px;background:var(--bg2);border-radius:12px;font-size:16px}.hand .hl{opacity:.8;margin-right:4px}.hand .none{opacity:.5}.hp{min-width:64px;min-height:48px;display:inline-flex;align-items:baseline;justify-content:center;gap:2px;padding:4px 12px;border:3px solid transparent;border-radius:10px;background:#f7e3b0;color:var(--ink);font-family:inherit}.hp .k{font-size:28px;font-weight:700}.hp .n{font-size:16px}.hp.on{border-color:var(--accent);background:#ffe08a}.hp.hint{box-shadow:0 0 0 4px #1ea050e6}.hp:disabled{opacity:.85}.hand.opp .hp{min-height:40px}.cell.hintcell{box-shadow:inset 0 0 0 4px #1ea050e6}.tsume-set{width:100%;display:flex;flex-direction:column;gap:10px;background:var(--bg2);border-radius:14px;padding:12px}.tsume-head{display:flex;align-items:center;gap:10px;font-size:22px;font-weight:700}.tsume-head .lt{flex:1}.tsume-head .sub{font-size:14px;opacity:.75}.nums{display:flex;flex-wrap:wrap;gap:8px}.num{min-width:64px;min-height:64px;border:0;border-radius:12px;background:var(--paper);color:var(--ink);font-family:inherit;font-size:22px;font-weight:700}.num.done{background:#b9e0b0}.num.done:after{content:" ✓";font-size:16px}.cell.last{background:#e0a52659}.btn:disabled{opacity:.4}.tsume-set .note{margin:0;line-height:1.5}.legend{margin:0;font-size:14px;opacity:.75;text-align:center}.opt-title{font-size:16px;opacity:.85;margin-top:4px}.opts{display:flex;flex-wrap:wrap;gap:8px}.opts.hidden,.opt-title.hidden,.note.hidden{display:none}.opts .btn.on{background:var(--accent)}.btn.danger{background:#e8a198}.note.warn{color:#ffd98a;font-weight:700}.adult .note{margin:0;line-height:1.5}@media(max-width:430px){.screen{gap:8px;padding:10px 8px}.topbar{font-size:15px;gap:6px;flex-wrap:nowrap}.topbar>span{white-space:nowrap}.topbar .btn.small{min-height:48px;padding:4px 12px;font-size:16px}.message{min-height:48px;font-size:15px;padding:6px 10px}.actions{min-height:48px;gap:8px}.actions .btn{min-width:64px;min-height:52px;padding:6px 14px;font-size:17px}.actions .btn.big{font-size:19px;padding:8px 18px}.hand{min-height:44px;padding:2px 6px;gap:6px}.hp{min-height:40px;padding:2px 10px}.hand.opp .hp{min-height:34px}.tsume-screen{--cell: min(calc((100vw - 16px) / 9), calc((100vh - 330px) / 9))}.sign{width:104px;height:96px;font-size:16px}.sign .emoji{font-size:32px}.signs{gap:10px}.title{font-size:24px;margin-top:0}}@supports (height: 100dvh){:root{--cell: min(calc((100vw - 16px) / 9), calc((100dvh - 285px) / 9))}.tsume-screen{--cell: min(calc((100vw - 16px) / 9), calc((100dvh - 400px) / 9))}@media(max-width:430px){.tsume-screen{--cell: min(calc((100vw - 16px) / 9), calc((100dvh - 330px) / 9))}}}.back-games{position:absolute;top:calc(10px + env(safe-area-inset-top));left:10px}.pick-list{display:flex;flex-direction:column;gap:14px;width:min(420px,100%)}.pick-list.hidden,.pick-vs.hidden{display:none}.pick-vs{display:flex;flex-direction:column;align-items:center;gap:14px;width:min(420px,100%)}.pick{min-height:84px;display:flex;align-items:center;justify-content:center;gap:14px;border:0;border-radius:18px;background:var(--wood);color:var(--ink);font-family:inherit;font-size:28px;font-weight:700}.pick .emoji{font-size:36px}.pick:active{transform:scale(.97)}.boardgame{--bs: min( calc(100vw - 16px) , 560px, calc(100vh - 290px) )}@supports (height: 100dvh){.boardgame{--bs: min( calc(100vw - 16px) , 560px, calc(100dvh - 290px) )}}.ginfo{width:var(--bs);display:flex;justify-content:space-between;font-size:20px;font-weight:700}.gmsg{width:var(--bs);min-height:40px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;font-size:18px}.gmsg.pass{background:var(--accent);color:var(--ink);border-radius:12px;font-weight:700}.gmsg.result{background:var(--bg2);border-radius:14px;padding:10px}.big-result{font-size:36px;font-weight:700;color:var(--accent)}.gwrap{display:flex;justify-content:center}.gboard{display:grid;grid-template-columns:repeat(var(--n),1fr);width:var(--bs);height:var(--bs);border:3px solid var(--line);border-radius:4px;background:#2e8b57;touch-action:manipulation}.gboard.gomoku{background:var(--wood)}.gcell{position:relative;padding:0;margin:0;border:0;border-right:1px solid rgba(0,0,0,.45);border-bottom:1px solid rgba(0,0,0,.45);background:transparent;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0}.gcell.r{border-right:0}.gcell.b{border-bottom:0}.gboard.gomoku .gcell{border:0}.gboard.gomoku .gcell:before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:var(--line)}.gboard.gomoku .gcell:after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;background:var(--line)}.gboard.gomoku .gcell.l:before{left:50%}.gboard.gomoku .gcell.r:before{right:50%}.gboard.gomoku .gcell.t:after{top:50%}.gboard.gomoku .gcell.b:after{bottom:50%}.gcell:disabled{opacity:1}.stone{position:relative;z-index:1;width:84%;height:84%;border-radius:50%;box-shadow:0 1px 2px #00000080}.gboard.gomoku .stone{width:90%;height:90%}.stone.s1{background:radial-gradient(circle at 35% 30%,#555,#111 70%)}.stone.s2{background:radial-gradient(circle at 35% 30%,#fff,#cfcfcf 80%)}.stone.last:after{content:"";position:absolute;left:50%;top:50%;width:28%;height:28%;transform:translate(-50%,-50%);border-radius:50%;background:#e53935}.hint{position:relative;z-index:1;width:26%;height:26%;border-radius:50%;background:#ffffffb3;box-shadow:0 0 0 2px #00000040}.pick.hidden,.btn.hidden{display:none}.lesson-msg{min-height:64px;background:var(--bg2);border-radius:12px;padding:8px 12px;line-height:1.5}.lesson-msg.ok{background:#2d7a46;font-weight:700}.lesson-msg.pass{background:var(--accent);color:var(--ink);font-weight:700}.golesson .lessons{max-height:none}.pick.level{font-size:22px;min-height:64px;justify-content:space-between;padding:0 22px}.pick.level.locked{opacity:.5}.pick-level{display:flex;flex-direction:column;align-items:center;gap:14px;width:min(420px,100%)}.pick-level.hidden{display:none}.level-note{font-size:18px;font-weight:700;color:var(--accent)}.pick small{font-size:13px;font-weight:400;opacity:.75;margin-left:4px}.pick-head{font-size:15px;opacity:.75;text-align:left;margin:6px 4px -4px}.pick{min-height:72px}.cardgame{--cw: min(56px, calc((100vw - 40px) / 6));gap:10px}.cg-body{width:min(720px,100%);display:flex;flex-direction:column;align-items:center;gap:10px}.cg-msg{min-height:44px;display:flex;align-items:center;justify-content:center;text-align:center;background:var(--bg2);border-radius:12px;padding:6px 12px;width:100%;font-size:16px;line-height:1.4}.cpus{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;font-size:16px}.cpu{padding:6px 12px;border-radius:10px;background:var(--bg2)}.cpu.now{background:var(--accent);color:var(--ink);font-weight:700}.hand-cards{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.pcard{position:relative;width:var(--cw);height:calc(var(--cw) * 1.4);padding:0;border:2px solid #999;border-radius:8px;background:#fff;font-family:inherit;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-weight:700}.pcard.red{color:#c62828}.pcard.black{color:#222}.pcard .rk,.pcard .st{font-size:calc(var(--cw) * .42);line-height:1}.pcard.back{background:repeating-linear-gradient(45deg,#2f6fb0,#2f6fb0 6px,#2a5f98 6px 12px);border-color:#fff}.pcard.on{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent);transform:translateY(-4px)}.pcard.sel{background:#ffe08a}.hand-cards:not(.small) .pcard:not(.on):not(.back){opacity:.55}.hand-cards.small{gap:4px}.hand-cards.small .pcard{width:34px;height:48px}.cardgame .actions{min-height:56px}.cg-result{width:100%;background:var(--bg2);border-radius:14px;padding:12px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}.tableau{width:100%;display:flex;flex-direction:column;gap:4px}.srow{display:flex;gap:2px;align-items:center}.ssuit{width:22px;font-size:20px;text-align:center;background:#fff;border-radius:4px}.srow.red .ssuit,.srow.red .scell.on{color:#c62828}.srow.black .ssuit,.srow.black .scell.on{color:#222}.scell{flex:1;min-width:0;height:34px;display:flex;align-items:center;justify-content:center;border:1px dashed rgba(255,255,255,.3);border-radius:4px;font-size:13px;color:#ffffff59}.scell.on{background:#fff;border:1px solid #999;font-weight:700}.sp-opp,.sp-me{width:100%;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:16px}.sp-center{display:flex;gap:24px;justify-content:center;margin:6px 0}.pile{padding:6px;border:3px solid transparent;border-radius:14px;background:#0003}.pile .pcard{--cw: min(84px, calc((100vw - 120px)/2) );pointer-events:none}.uno-center{display:flex;gap:16px;align-items:center;justify-content:center}.ucard,.deck{--uw: min(64px, calc((100vw - 48px) / 6));width:var(--uw);height:calc(var(--uw) * 1.5);border:3px solid #fff;border-radius:10px;font-family:inherit;font-weight:700;font-size:calc(var(--uw) * .45);color:#fff;display:inline-flex;align-items:center;justify-content:center;padding:0}.ucard.c-R,.curcolor.c-R{background:#d32f2f}.ucard.c-Y,.curcolor.c-Y{background:#f2b500;color:#222}.ucard.c-G,.curcolor.c-G{background:#2e9e4f}.ucard.c-B,.curcolor.c-B{background:#1e63c9}.ucard.c-W{background:linear-gradient(135deg,#d32f2f 25%,#f2b500 25% 50%,#2e9e4f 50% 75%,#1e63c9 75%)}.uno-hand .ucard{margin:2px}.uno-hand .ucard:not(.on){opacity:.5}.ucard.on{box-shadow:0 0 0 3px var(--accent);transform:translateY(-4px)}.deck{background:#222;font-size:15px}.deck.on{box-shadow:0 0 0 3px var(--accent)}.curcolor{padding:8px 14px;border-radius:12px;font-size:18px;font-weight:700;display:flex;flex-direction:column;align-items:center}.curcolor small{font-size:11px;opacity:.85;font-weight:400}.colorpick{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.colorpick .ucard{width:84px;height:64px;font-size:18px}.cg-status{min-height:22px;font-size:16px;font-weight:700}.rules-overlay[hidden]{display:none}.rules-overlay{position:fixed;inset:0;z-index:20;background:#000000b3;display:flex;align-items:center;justify-content:center;padding:16px;overflow-y:auto}.rules-box{width:min(560px,100%);max-height:100%;overflow-y:auto;background:var(--paper);color:var(--ink);border-radius:18px;padding:18px;display:flex;flex-direction:column;gap:6px}.rules-box .title{color:var(--ink);font-size:24px;margin:0 0 4px}.rules-box p{margin:0;font-size:17px;line-height:1.55}.rules-box .btn.big{align-self:center;margin-top:8px}.wolfgame .cg-body{gap:8px}.wchips{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;font-size:15px}.wchip{padding:4px 10px;border-radius:10px;background:var(--bg2)}.wchip.now{background:var(--accent);color:var(--ink);font-weight:700}.wchip.dead{opacity:.45;text-decoration:line-through}.wrole{line-height:1.5}.wrole small{opacity:.85;font-size:14px}.wlog{width:100%;height:min(34vh,300px);overflow-y:auto;background:var(--bg2);border-radius:12px;padding:8px 12px;font-size:16px;line-height:1.5;text-align:left;-webkit-overflow-scrolling:touch}.wl-day{font-weight:700;margin-top:6px;opacity:.8}.wl-line{padding:2px 0}.wl-line.ev{font-weight:700}.wl-line.priv{color:var(--accent);font-weight:700}.wl-line.mine{text-decoration:underline}.wl-line.small{font-size:13px;opacity:.75}.chess{--cs: min( calc(100vw - 16px) , 560px, calc(100vh - 290px) )}@supports (height: 100dvh){.chess{--cs: min( calc(100vw - 16px) , 560px, calc(100dvh - 290px) )}}.chess .ginfo,.chess .gmsg{width:var(--cs)}.cboard{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);width:var(--cs);height:var(--cs);border:3px solid var(--line);border-radius:4px;touch-action:manipulation}.ccell{position:relative;padding:0;margin:0;border:0;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;font-family:inherit}.ccell.lt{background:#f0d9b5}.ccell.dk{background:#b58863}.ccell.last{background:#cdd26a}.ccell.dk.last{background:#aaa23a}.ccell.sel{background:#7fc4e8}.ccell.dk.sel{background:#5aa8d4}.ccell.chk{background:#f08a80}.ccell.dk.chk{background:#d9604f}.ccell:disabled{opacity:1}.ccell i{position:absolute;width:28%;height:28%;border-radius:50%;background:#285a328c;pointer-events:none}.ccell.cap:after{content:"";position:absolute;inset:4%;border:4px solid rgba(40,90,50,.6);border-radius:50%;pointer-events:none}.cp{font-size:calc(var(--cs) / 8 * .82);line-height:1;pointer-events:none;font-family:Apple Symbols,Segoe UI Symbol,"Noto Sans Symbols 2",DejaVu Sans,sans-serif}.cp.w{color:#fff;text-shadow:1px 0 #222,-1px 0 #222,0 1px #222,0 -1px #222,1px 1px #222,-1px -1px #222,1px -1px #222,-1px 1px #222}.cp.b{color:#1c1c1c;text-shadow:0 0 1px #fff}.cp.pp{font-size:34px;vertical-align:middle}.chess-rules{width:min(100%,560px);display:grid;gap:4px;text-align:left;font-size:17px;line-height:1.5;overflow-y:auto;max-height:calc(100vh - 220px)}.cr-h{font-weight:700;color:var(--accent);margin-top:8px}.cr-p{font-size:26px;font-family:Apple Symbols,sans-serif;margin:0 2px 0 0}.c-about{font-size:12px;opacity:.6;max-width:420px;text-align:center;margin-top:8px}
