.janggi-overlay[hidden],.janggi-waiting[hidden]{display:none}.janggi-overlay{position:fixed;inset:0;z-index:110;background:#263b31;color:#fff5df;font-family:'Gowun Batang','Batang',serif}.janggi-canvas{position:absolute;inset:0}.janggi-canvas canvas{display:block;width:100%;height:100%;touch-action:manipulation}.janggi-top{position:absolute;top:0;left:0;right:0;display:grid;grid-template-columns:1fr minmax(200px,420px) 1fr;align-items:start;padding:18px;background:linear-gradient(#14241dcc,transparent);pointer-events:none}.janggi-top small{color:#dfc188;letter-spacing:.15em;font-size:10px}.janggi-top h2{font-size:18px;margin:3px 0}.janggi-top button{pointer-events:auto;justify-self:end;width:42px;height:42px;border:1px solid #fff8;border-radius:50%;color:#fff;background:#1a3028;font-size:25px}.janggi-score{display:flex;align-items:center;justify-content:space-around;gap:8px;padding:8px;border:2px solid #a98653;border-radius:12px;background:#f3e7d0;color:#473a2c;font-weight:bold}.janggi-score span{padding:6px;border-radius:8px}.janggi-score .active{background:#e9d5ad}.janggi-tools{position:absolute;top:100px;left:18px;display:flex;gap:8px;align-items:center}.janggi-tools span,.janggi-tools button,.janggi-waiting button,.janggi-actions button{border:1px solid #d8bc80;border-radius:12px;padding:8px 12px;background:#21392e;color:#fff5df;font:inherit}.janggi-emotes{position:absolute;top:42px;left:0;display:grid;grid-template-columns:repeat(4,40px);gap:4px;padding:7px;border-radius:12px;background:#e9ddc3}.janggi-emotes[hidden]{display:none}.janggi-emotes button{padding:4px;font-size:21px;border:0;background:#f8f0df}.janggi-emote,.janggi-impact{position:absolute;left:50%;top:35%;transform:translate(-50%,-50%);font-size:72px;text-shadow:0 4px 15px #000}.janggi-impact{font-weight:bold;color:#ffe6a2;font-size:clamp(45px,10vw,90px)}.janggi-impact.show{animation:janggi-pop .8s ease both}@keyframes janggi-pop{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}20%,60%{opacity:1;transform:translate(-50%,-50%) scale(1.1)}100%{opacity:0;transform:translate(-50%,-65%) scale(1)}}.janggi-footer{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);width:min(420px,calc(100% - 24px));padding:12px 15px;text-align:center;border:1px solid #cfb47b88;border-radius:14px;background:#1c3029ed;box-shadow:0 8px 24px #0008}.janggi-status{font-size:19px;font-weight:bold}.janggi-hint{display:block;color:#cfdbca;margin:5px;font-size:12px}.janggi-actions button:disabled{opacity:.45}.janggi-waiting{position:fixed;z-index:55;top:82px;left:50%;transform:translateX(-50%);width:min(340px,calc(100% - 24px));padding:18px;border:2px solid #ad8c5f;border-radius:15px;color:#44382b;background:#f1e5cb;text-align:center;box-shadow:0 8px 24px #0008}.janggi-waiting p{font-size:13px}.janggi-waiting button{margin:3px}@media(max-width:650px){.janggi-top{padding:9px;grid-template-columns:1fr 2fr 40px}.janggi-top h2{font-size:12px}.janggi-top small{font-size:8px}.janggi-score{font-size:12px;padding:4px}.janggi-top button{width:36px;height:36px}.janggi-tools{top:65px;left:10px;font-size:11px}.janggi-tools span,.janggi-tools button{padding:6px}.janggi-footer{bottom:10px}.janggi-status{font-size:15px}}
.janggi-final[hidden]{display:none}.janggi-final{position:absolute;inset:0;z-index:15;display:grid;place-items:center;background:#0b1a14bd}.janggi-final-card{width:min(390px,calc(100% - 32px));padding:32px;text-align:center;border:2px solid #dfc085;border-radius:18px;background:linear-gradient(145deg,#344b3b,#192d25);box-shadow:0 0 70px #f1bb4960,0 14px 45px #0009;animation:final-entrance .65s ease both}.janggi-final-card small{letter-spacing:.14em;color:#dfc68e}.janggi-final-card h2{font-size:clamp(42px,12vw,76px);margin:15px 0;color:#ffe2a0;text-shadow:0 3px #80502a,0 0 26px #e4b550}.janggi-final-card p{line-height:1.5}.janggi-final-card button{border:1px solid #eed398;border-radius:24px;padding:10px 24px;background:#e3be77;color:#26382d;font:inherit;font-weight:bold}

/* Keep all board intersections clear of the score and controls. */
.janggi-canvas{inset:84px 0 130px}@media(max-width:650px){.janggi-canvas{inset:108px 0 132px}}

.janggi-captured{position:absolute;top:28%;width:112px;color:#f6ead0;text-align:center;z-index:4;pointer-events:none;text-shadow:0 1px 4px #21170f}.janggi-captured-blue{left:12px}.janggi-captured-red{right:12px}.janggi-captured small{display:block;margin-bottom:8px;font-size:12px}.janggi-captured div{display:flex;justify-content:center;flex-wrap:wrap;gap:4px;font-size:18px}.janggi-captured span{display:inline-grid;place-items:center;width:30px;height:30px;background:#eee4d0;border:2px solid #b8a181;clip-path:polygon(28% 0,72% 0,100% 28%,100% 72%,72% 100%,28% 100%,0 72%,0 28%);text-shadow:none;font-family:Gungsuh,Batang,serif;font-weight:bold}.janggi-captured-blue span{color:#244b99}.janggi-captured-red span{color:#b53029}@media(max-width:700px){.janggi-captured{top:19%;width:54px}.janggi-captured-blue{left:3px}.janggi-captured-red{right:3px}.janggi-captured small{font-size:10px}.janggi-captured span{width:22px;height:22px;font-size:14px}}

/* Captured pieces have their own row on phones, clear of the board. */
@media(max-width:700px){.janggi-canvas{inset:162px 0 132px}.janggi-captured{top:104px;width:calc(50% - 14px);height:50px;text-align:left;pointer-events:auto;text-shadow:none}.janggi-captured-blue{left:10px}.janggi-captured-red{right:10px}.janggi-captured small{display:block;font-size:10px;margin:0 0 3px}.janggi-captured div{justify-content:flex-start;flex-wrap:nowrap;overflow-x:auto;gap:3px;min-height:23px;font-size:12px}.janggi-captured span{flex:0 0 22px}}
@media(max-height:520px){.janggi-canvas{inset:115px 0 88px}.janggi-captured{top:76px;height:33px}.janggi-captured small{display:inline;margin-right:4px}.janggi-captured div{display:inline-flex;max-width:75%;vertical-align:middle}.janggi-footer{bottom:5px;padding:5px}.janggi-hint{margin:2px}}

/* Emotes stay outside the central board and never intercept a move. */
.janggi-emote{left:auto;right:18px;top:128px;transform:none;pointer-events:none;font-size:56px;z-index:5}.janggi-tools,.ak-tools{z-index:6}@media(max-width:650px){.janggi-emote{right:10px;top:118px;font-size:42px}}

/* Give both games the same full-viewport board framing, with safe room for controls. */
.janggi-canvas{inset:68px 0 125px}
@media(max-width:700px){.janggi-canvas{inset:112px 0 138px}}
@media(max-height:520px){.janggi-canvas{inset:55px 0 78px}}

/* The private preview clock should not cover the board during a match. */
body:has(.janggi-overlay:not([hidden])) #skyPreviewBadge{display:none!important}

/* Keep the full result readable without splitting its last Korean syllable. */
.janggi-final-card{box-sizing:border-box;max-width:calc(100vw - 24px)}
.janggi-final-card h2.janggi-final-result{font-size:clamp(25px,6.5vw,58px);white-space:nowrap;letter-spacing:-.035em}
.janggi-final-card h2.janggi-final-name{font-size:clamp(25px,6vw,48px);overflow-wrap:anywhere}
.janggi-impact{z-index:12;pointer-events:none;top:45%;white-space:nowrap;filter:drop-shadow(0 3px 8px #2b110c)}
.janggi-waiting{box-sizing:border-box;width:min(280px,calc(100vw - 36px));padding:10px 14px;border:1px solid #d7bf8580;border-radius:14px;background:rgba(26,48,39,.78);color:#fff4da;box-shadow:0 5px 18px #0005}.janggi-waiting b{font-size:15px}.janggi-waiting p{margin:6px 0;font-size:12px}.janggi-waiting button{padding:6px 12px;margin:2px;font-size:13px;background:#e9d09bd9;color:#2a382d;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}

/* Desktop board uses the same viewport framing as alkkagi; phone retains safe rows. */
@media (min-width:701px) and (min-height:521px){.janggi-canvas{inset:0}.janggi-footer{bottom:12px;width:min(330px,calc(100% - 24px));padding:7px 10px}.janggi-status{font-size:16px}.janggi-hint{margin:3px}}
.janggi-emote{display:grid;justify-items:center;gap:2px;line-height:1.1}.janggi-emote[hidden]{display:none}.janggi-emote small{max-width:180px;padding:4px 8px;border-radius:10px;background:#172a22dc;color:#fff3d8;font:14px Gowun Batang,serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:none}

.ak-result-entrance{animation:ak-result-burst .85s cubic-bezier(.15,.8,.2,1) both}@keyframes ak-result-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.3);filter:brightness(2)}35%{opacity:1;transform:translate(-50%,-50%) scale(1.2);filter:brightness(1.5)}65%{transform:translate(-50%,-50%) scale(.96)}100%{opacity:1;transform:translate(-50%,-50%) scale(1);filter:brightness(1)}}
