:root{--green:#168447;--dark:#0c1711;--soft:#f3f6f4;--line:#dce5df;--danger:#b42318}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font:16px/1.55 system-ui,-apple-system,Segoe UI,sans-serif;color:var(--dark);background:var(--soft)}a{color:var(--green)}.container{width:min(1120px,calc(100% - 32px));margin:auto}.header{position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid var(--line)}.header-in{min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{display:flex;align-items:center;gap:10px;color:var(--dark);font-weight:850;text-decoration:none}.logo{width:40px;height:40px;border-radius:12px;background:var(--green);color:#fff;display:grid;place-items:center;font-weight:900}.btn{display:inline-flex;justify-content:center;align-items:center;border:0;border-radius:9px;padding:11px 17px;background:var(--green);color:#fff;text-decoration:none;font-weight:700;cursor:pointer}.btn.secondary{background:#fff;color:var(--green);border:1px solid var(--green)}.btn.danger{background:var(--danger)}button:disabled{opacity:.45;cursor:not-allowed}.nav{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.nav a{text-decoration:none;color:var(--dark);font-size:14px}.menu{display:none}.main{padding:36px 0 60px}h1{font-size:clamp(28px,5vw,44px);margin:0 0 24px}h2{margin-top:34px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:0 5px 20px #0c171108}.ranking{width:100%;border-collapse:collapse}.ranking td,.ranking th{padding:11px 8px;text-align:left;border-bottom:1px solid var(--line)}.clickable{cursor:pointer}.empty{padding:26px;text-align:center;color:#607066}.form{max-width:650px;margin:auto;background:#fff;padding:28px;border-radius:16px;border:1px solid var(--line)}label{display:block;font-weight:700;margin:15px 0 6px}input,select,textarea{width:100%;padding:12px;border:1px solid #bfcac3;border-radius:8px;font:inherit}textarea{min-height:180px}.inline{display:flex;gap:9px;align-items:center}.inline input[type=checkbox]{width:auto}.alert{padding:12px;border-radius:8px;margin-bottom:16px;background:#ffe8e7;color:var(--danger)}.success{background:#e4f7ea;color:#116b39}.footer{background:var(--dark);color:#fff;padding:40px 0 22px}.footer-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}.footer a{display:block;color:#dbe7df;text-decoration:none;margin:8px 0}.copyright{border-top:1px solid #ffffff22;margin-top:25px;padding-top:20px}.auth-logo{justify-content:center;margin:28px auto}.avatar{width:110px;height:110px;border-radius:50%;object-fit:cover;background:#dfe9e2}.stat{font-size:28px;font-weight:800}.muted{color:#617067}.game-status{color:var(--green);font-weight:700}.admin-bar{background:#14261b;color:#fff;padding:12px}.duel{display:grid;grid-template-columns:1fr auto 1fr auto;gap:12px;align-items:center}.danger-zone{border-color:#f2b8b5}.policy{max-width:850px}.policy h2{margin-top:30px}@media(max-width:820px){.grid{grid-template-columns:1fr}.menu{display:block}.nav{display:none;position:absolute;left:0;right:0;top:68px;padding:18px;background:#fff;border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch}.nav.open{display:flex}.footer-grid{grid-template-columns:1fr}.duel{grid-template-columns:1fr;text-align:center}.form{padding:20px}}
.brand-logo{width:46px;height:46px;object-fit:contain}.logo{background:#fff url('/assets/logo.png') center/contain no-repeat!important;color:transparent!important}.challenge-form{max-width:760px}.player-ranking-card{margin:14px 0 4px;padding:15px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}.player-ranking-card[hidden]{display:none}.player-ranking-card h3{margin:0 0 10px}.player-overall{display:flex;flex-wrap:wrap;gap:8px 18px;margin-bottom:12px}.player-overall strong{width:100%}.player-games{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 14px}.player-game-stat{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-top:1px solid var(--line)}.challenge-datetime{margin-bottom:16px}@media(max-width:620px){.player-games{grid-template-columns:1fr}.player-overall{display:grid;gap:4px}}
.nzango-game{max-width:1050px;margin:auto}.nzango-title{text-align:center}.nzango-title h1{margin-bottom:6px}.nzango-board{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:18px;align-items:center}.nzango-play{display:grid;gap:14px;text-align:center}.nzango-side h2{margin:0 0 10px}.nzango-feet{display:flex;justify-content:center;gap:18px}.foot-card{width:min(180px,42vw);min-height:190px;padding:10px;border:2px solid transparent;border-radius:14px;background:#fff;color:var(--dark);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;font-weight:800;transition:.18s ease}.foot-card img{width:100%;height:170px;object-fit:contain;border-radius:9px}.player-side .foot-card:not(:disabled){cursor:pointer;border-color:var(--line)}.player-side .foot-card:not(:disabled):hover,.foot-card.selected{border-color:var(--green);box-shadow:0 0 0 4px #16844720;transform:translateY(-2px)}.foot-card.muted{opacity:.25;filter:grayscale(.7)}.mokonzi-side .foot-card{transform:none}.mokonzi-side .foot-card.selected{transform:translateY(-2px)}.mokonzi-side .foot-card img{transform:rotate(180deg)}.hidden-foot{filter:grayscale(1);opacity:.25}.hidden-foot img{visibility:visible}.nzango-timer{padding:10px}.nzango-timer p{margin:5px}.nzango-timer strong{display:block;color:var(--green);font-size:clamp(52px,9vw,86px);line-height:1}.nzango-score{text-align:center;order:2}.nzango-score h2{margin-top:0}.nzango-score div{display:grid;gap:2px}.nzango-score div strong{font-size:48px;color:var(--green)}.nzango-score>b{display:block;margin:8px}.nzango-score+*{order:1}@media(max-width:820px){.nzango-board{grid-template-columns:1fr}.nzango-score{order:0;display:flex;align-items:center;justify-content:space-around}.nzango-score h2{margin:0}.nzango-score div strong{font-size:34px}.nzango-score>b{margin:0}.foot-card{min-height:150px}.foot-card img{height:135px}.nzango-feet{gap:8px}}@media(max-width:440px){.nzango-game .container{width:100%}.foot-card{width:46%;padding:6px}.foot-card img{height:120px}.nzango-score{padding:12px}}
.hidden-foot img{visibility:visible!important}
[data-network-message][hidden]{display:none!important}

/* Nzango Solo: compact mobile board. Desktop rules above remain unchanged. */
@media(max-width:820px){
 .nzango-game{min-height:calc(100dvh - 68px);margin-top:-24px;overflow-x:hidden}
 .nzango-title{padding-top:4px}
 .nzango-title>p{margin:2px 0;font-size:13px;line-height:1.25}
 .nzango-title h1{margin:1px 0 3px;font-size:clamp(24px,7vw,32px);line-height:1.05}
 .nzango-board{grid-template-columns:minmax(0,1fr);gap:6px;align-items:start}
 .nzango-score{order:0;min-width:0;padding:6px 10px;border-radius:10px;display:flex;align-items:center;justify-content:center;gap:9px;box-shadow:none}
 .nzango-score h2{margin:0;font-size:11px;letter-spacing:.08em}
 .nzango-score div{display:flex;align-items:center;gap:5px;min-width:0;font-size:13px;line-height:1.1}
 .nzango-score div span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:28vw}
 .nzango-score div strong{font-size:24px;line-height:1}
 .nzango-score>b{margin:0;font-size:0}
 .nzango-score>b::after{content:'—';font-size:18px}
 .nzango-play{order:1;display:grid;grid-template-columns:minmax(0,1fr);grid-auto-rows:auto;gap:5px;padding:8px 10px;text-align:center}
 .nzango-side h2{margin:0 0 3px;font-size:16px;line-height:1.15;text-transform:uppercase}
 .mokonzi-side{grid-row:1}
 .nzango-timer{display:contents}
 .nzango-timer [data-timer-label]{grid-row:2;grid-column:1;margin:0;font-size:17px;font-weight:800;line-height:1.1}
 .nzango-timer [data-countdown]{grid-row:3;grid-column:1;align-self:center;font-size:48px;line-height:.9}
 .nzango-timer [data-timer-unit]{grid-row:3;grid-column:1;align-self:end;justify-self:center;margin-left:56px;font-size:12px;line-height:1.2}
 .nzango-timer [data-game-message]{grid-row:4;grid-column:1;margin:0 auto;max-width:100%;font-size:13px;line-height:1.25;overflow-wrap:anywhere}
 .player-side{grid-row:5}
 .nzango-timer [data-game-start]{grid-row:6;grid-column:1;justify-self:center;margin-top:1px;padding:9px 18px;min-height:40px}
 .nzango-feet{flex-wrap:nowrap;gap:8px}
 .foot-card{width:44%;max-width:160px;min-height:130px;padding:5px;gap:3px;border-radius:11px}
 .foot-card img{height:108px;border-radius:7px}
 .foot-card span{font-size:12px;line-height:1.1}
}

.player-ranking-identity{display:flex;align-items:center;gap:14px;margin-bottom:10px}
.player-ranking-identity h3{margin:0}
.player-ranking-avatar{width:80px;height:80px;flex:0 0 80px;border-radius:50%;object-fit:cover;background:#dfe9e2}
@media(max-width:620px){
 .player-ranking-identity{gap:11px}
 .player-ranking-avatar{width:68px;height:68px;flex-basis:68px}
}

.scheduled-page{max-width:900px;margin:auto}.scheduled-page>section{margin-top:28px}.scheduled-list{display:grid;gap:16px}.scheduled-duel-card{display:grid;gap:12px;text-align:center}.scheduled-duel-card.is-mine{border-color:var(--green)}.scheduled-card-head{display:flex;align-items:center;justify-content:center;gap:10px}.scheduled-card-head h3{margin:0;font-size:22px}.duel-badge{padding:3px 8px;border-radius:999px;background:#e4f7ea;color:#116b39;font-size:12px;font-weight:800}.scheduled-players{display:flex;align-items:center;justify-content:center;gap:28px}.scheduled-player{width:150px;padding:6px;border:0;background:transparent;color:var(--dark);cursor:pointer;display:grid;justify-items:center;gap:6px;font:inherit}.scheduled-player img{width:86px;height:86px;border-radius:50%;object-fit:cover;background:#dfe9e2}.scheduled-player strong{overflow-wrap:anywhere}.scheduled-player:hover strong,.scheduled-player:focus-visible strong{color:var(--green);text-decoration:underline}.scheduled-vs{font-weight:900;color:var(--green)}.scheduled-date,.scheduled-status{margin:0}.scheduled-date{font-size:17px}.scheduled-countdown{display:grid;gap:2px;justify-items:center}.scheduled-countdown strong{font-size:24px;color:var(--green)}.scheduled-actions{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:9px}.scheduled-actions small{flex-basis:100%;color:#617067}.scheduled-detail{padding-top:8px}.scheduled-detail-card{margin-top:18px;text-align:center}.scheduled-detail-card h1{margin-bottom:10px}.scheduled-detail-card .scheduled-countdown{margin:18px 0}.player-profile-dialog{width:min(620px,calc(100% - 28px));max-height:calc(100dvh - 28px);padding:24px;border:1px solid var(--line);border-radius:14px;color:var(--dark);background:#fff;box-shadow:0 18px 60px #0c171133}.player-profile-dialog::backdrop{background:#0c171188}.player-dialog-close{position:absolute;top:8px;right:10px;border:0;background:transparent;font-size:30px;cursor:pointer}.player-dialog-identity{display:flex;align-items:center;gap:14px;margin-bottom:14px;padding-right:30px}.player-dialog-identity img{width:82px;height:82px;border-radius:50%;object-fit:cover;background:#dfe9e2}.player-dialog-identity h2{margin:0}.player-profile-dialog .alert[hidden]{display:none}
@media(max-width:620px){.scheduled-page h1{font-size:28px}.scheduled-page>section{margin-top:20px}.scheduled-duel-card{gap:9px;padding:14px}.scheduled-card-head{flex-wrap:wrap}.scheduled-card-head h3{font-size:19px}.scheduled-players{gap:8px}.scheduled-player{width:min(40%,135px);padding:3px}.scheduled-player img{width:68px;height:68px}.scheduled-vs{font-size:13px}.scheduled-date{font-size:15px}.scheduled-countdown strong{font-size:20px}.scheduled-actions{display:grid}.scheduled-actions .btn{width:100%}.player-profile-dialog{padding:18px}.player-dialog-identity img{width:68px;height:68px}.player-game-stat{font-size:13px;align-items:flex-start}.player-game-stat span{text-align:right}}
.duel-waiting-room{max-width:760px;margin:auto}.duel-presence-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}.duel-presence-grid>div{display:grid;gap:4px;padding:12px;border-radius:10px;background:var(--soft)}.duel-presence-grid span{color:var(--green);font-weight:800}@media(max-width:620px){.duel-waiting-room .scheduled-detail-card{padding:14px}.duel-presence-grid{grid-template-columns:1fr;gap:8px}.duel-waiting-room .scheduled-players{gap:6px}}
.duel-ready-control{min-height:44px;display:grid;place-items:center;margin-top:6px}.duel-ready-control>strong{color:var(--green);font-size:18px}.duel-ready-control .btn{width:100%;max-width:260px;white-space:normal}@media(max-width:620px){.duel-ready-control .btn{max-width:100%;padding:10px 12px}}
@media(max-width:440px){
 .nzango-game{margin-top:-27px}
 .nzango-title>p{font-size:11px}
 .nzango-title h1{font-size:23px}
 .nzango-board{gap:4px}
 .nzango-score{padding:5px 7px;gap:6px}
 .nzango-score h2{font-size:9px}
 .nzango-score div{gap:3px;font-size:12px}
 .nzango-score div span{max-width:27vw}
 .nzango-score div strong{font-size:21px}
 .nzango-play{gap:4px;padding:7px 8px}
 .nzango-side h2{margin-bottom:2px;font-size:14px}
 .foot-card{width:45%;min-height:118px;padding:4px}
 .foot-card img{height:96px}
 .nzango-timer [data-timer-label]{font-size:15px}
 .nzango-timer [data-countdown]{font-size:42px}
 .nzango-timer [data-game-message]{font-size:12px;line-height:1.2}
 .nzango-timer [data-game-start]{padding:8px 16px;min-height:38px}
}
.duel-game{margin-top:1rem;text-align:center}.duel-score{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem}.duel-score div{display:grid}.duel-score strong{font-size:2.5rem}.duel-attempt{max-width:680px;margin:1rem auto}.duel-opponent-feet{display:flex;justify-content:center;gap:2rem;font-size:3rem;opacity:.75}.duel-clock{display:block;font-variant-numeric:tabular-nums;font-size:2.4rem;margin:1rem}.duel-choice{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.duel-choice button{border:2px solid var(--border,#ddd);border-radius:14px;background:#fff;padding:.75rem;cursor:pointer}.duel-choice button:disabled{opacity:.55;cursor:not-allowed}.duel-choice img{width:min(150px,100%);height:170px;object-fit:contain;display:block;margin:auto}.duel-choice span{display:block;font-weight:700}.duel-post{padding:2rem}.duel-post .btn{margin:.4rem}@media(max-width:600px){.duel-game{padding:.75rem}.duel-choice{gap:.5rem}.duel-choice img{height:120px}.duel-score strong{font-size:2rem}.duel-clock{font-size:2rem}}
.duel-game.is-spectator{max-width:760px;margin-inline:auto}.duel-game.is-spectator>h1{margin:.1rem 0 .7rem}.duel-game.is-spectator .duel-attempt{margin:.6rem auto}.duel-game.is-spectator .duel-post{padding:1rem}.duel-terminal{max-width:620px;margin:2rem auto;text-align:center}.duel-terminal .btn{margin-top:.75rem}@media(max-width:600px){.duel-game.is-spectator{margin-top:.25rem}.duel-game.is-spectator>h1{font-size:1.3rem}.duel-game.is-spectator .duel-opponent-feet{font-size:2rem;gap:1rem}.duel-game.is-spectator .duel-clock{margin:.5rem;font-size:1.7rem}.duel-terminal{margin:.75rem auto;padding:1rem}.duel-terminal .btn{width:100%}}
.duel-history,.duel-history-card{max-width:850px;margin-inline:auto}.duel-history>.card,.duel-history-card{margin-block:1rem}.duel-history-match{display:grid;gap:.35rem}.duel-history-match p{margin:.15rem 0}@media(max-width:600px){.duel-history .scheduled-players{gap:.5rem}.duel-history-match{padding:1rem}.duel-history-card{overflow-wrap:anywhere}}
.kisolo-history-games{display:grid;gap:.25rem;border-top:1px solid var(--border);padding-top:.6rem;margin-top:.35rem}.kisolo-history-games p{overflow-wrap:anywhere}@media(max-width:600px){.duel-history{width:100%}.duel-history>.card{overflow:hidden}.kisolo-history-games{font-size:.88rem}}
.kisolo-game{max-width:850px;margin:auto;text-align:center}.kisolo-game header p,.kisolo-game header h1{margin:.2rem}.kisolo-score{display:grid;grid-template-columns:1fr auto 1fr;gap:1rem;align-items:center;margin:.35rem auto}.kisolo-table{background:linear-gradient(135deg,#9b622d,#6e3f1b);border:5px solid #4a2a12;border-radius:22px;padding:clamp(.6rem,2vw,1.25rem);color:#fff;box-shadow:inset 0 0 18px #0005}.kisolo-board{display:grid;gap:clamp(.25rem,1vw,.6rem);margin:.5rem auto}.kisolo-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:clamp(.25rem,1vw,.65rem)}.kisolo-row.inner{padding-block:.15rem}.kisolo-row button{aspect-ratio:1;border-radius:50%;border:2px solid #3e230f;background:radial-gradient(circle at 40% 35%,#6b421f,#281307);color:#fff;box-shadow:inset 0 4px 9px #0009;min-width:0;font-weight:800;font-size:clamp(.9rem,3vw,1.35rem)}.kisolo-row button small{display:block;font-size:.48em;opacity:.65}.kisolo-row button.legal{outline:3px solid #a8e063;cursor:pointer;transform:scale(1.03)}.kisolo-row button:disabled{opacity:.82}.kisolo-status{min-height:2.8rem;display:grid;place-items:center;font-weight:800}.kisolo-status .btn{width:auto}.kisolo-table>strong{display:block}@media(max-width:600px){body:has(.kisolo-game) .main{padding-block:.25rem}.kisolo-game{height:calc(100dvh - 78px);display:grid;grid-template-rows:auto 1fr;overflow:hidden}.kisolo-game header{font-size:.82rem}.kisolo-game header h1{font-size:1.25rem}.kisolo-score{margin:.15rem auto}.kisolo-table{align-self:start;padding:.35rem .45rem;border-width:3px;border-radius:15px}.kisolo-board{gap:.18rem;margin:.2rem auto}.kisolo-row{gap:clamp(.15rem,1.4vw,.35rem)}.kisolo-row button{font-size:clamp(.76rem,4vw,1rem);border-width:1px}.kisolo-status{min-height:2.25rem;font-size:.9rem}.kisolo-table>strong{font-size:.78rem}}
.kisolo-duel-game{max-width:850px;margin:auto;text-align:center}.kisolo-duel-game header p,.kisolo-duel-game header h1{margin:.2rem}.kisolo-duel-decisions{display:flex;justify-content:center;gap:.5rem;margin-top:.4rem}.kisolo-duel-decisions .btn{margin:0}@media(max-width:600px){body:has(.kisolo-duel-game) .main{padding-block:.2rem}.duel-waiting-room:has(.scheduled-detail-card[hidden]){height:calc(100dvh - 76px);overflow:hidden}.kisolo-duel-game{height:100%;display:grid;grid-template-rows:auto 1fr;overflow:hidden}.kisolo-duel-game header{font-size:.8rem}.kisolo-duel-game header h1{font-size:1.2rem}.kisolo-duel-game .kisolo-score{margin:.1rem auto}.kisolo-duel-game .kisolo-table{align-self:start;padding:.3rem .4rem;border-width:3px;border-radius:14px}.kisolo-duel-game .kisolo-board{gap:.15rem;margin:.15rem auto}.kisolo-duel-game .kisolo-row{gap:clamp(.12rem,1.25vw,.32rem)}.kisolo-duel-game .kisolo-row button{font-size:clamp(.72rem,3.8vw,.98rem);border-width:1px}.kisolo-duel-game .kisolo-status{min-height:2.1rem;font-size:.84rem}.kisolo-duel-game .kisolo-table>strong{font-size:.75rem}.kisolo-duel-decisions{gap:.35rem}.kisolo-duel-decisions .btn{padding:.45rem .65rem}}
.live-directory{max-width:1050px;margin:auto}.live-directory>h1{text-align:center}.live-directory>[data-live-directory-status]{text-align:center;min-height:1.4em}.live-directory>[data-live-empty]{max-width:620px;margin:24px auto;text-align:center}.live-duel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:16px}.live-duel-card{display:grid;min-width:0;gap:9px;text-align:center;align-content:start}.live-duel-card.is-participant{border-color:var(--green)}.live-duel-card h2{margin:0;color:var(--green)}.live-players{display:grid;min-width:0;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px}.live-player{min-width:0;max-width:100%;border:0;background:transparent;color:var(--dark);display:grid;justify-items:center;gap:5px;cursor:pointer;font:inherit}.live-player img{width:70px;height:70px;border-radius:50%;object-fit:cover;background:#dfe9e2}.live-player strong{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.live-player:hover strong,.live-player:focus-visible strong{color:var(--green);text-decoration:underline}.live-score{font-size:1.55rem;color:var(--dark)}.live-detail,.live-status{margin:0}.live-status{font-weight:800;color:var(--green)}.live-duel-card>.btn{justify-self:center;min-width:150px}@media(max-width:600px){.live-directory>h1{font-size:1.7rem}.live-duel-grid{grid-template-columns:minmax(0,1fr);gap:12px}.live-duel-card{padding:13px;gap:7px}.live-player img{width:54px;height:54px}.live-score{font-size:1.35rem}.live-duel-card>.btn{width:100%}}
