:root{--kw-font-body: system-ui, sans-serif;--kw-font-display: var(--kw-font-body);--kw-font-card: var(--kw-font-body);--kw-body-font-weight: 400;--kw-card-font-weight: 400;--kw-page-bg-color: #1b1b1b;--kw-page-bg-image: none;--kw-page-bg-image-portrait: var(--kw-page-bg-image);--kw-page-filter: none;--kw-text-color: #fff;--kw-text-shadow: none;--kw-header-text-shadow: none;--kw-accent-color: #fc0;--kw-logo-color: #fff;--kw-logo-strong-color: var(--kw-logo-color);--kw-logo-strong-weight: 700;--kw-logo-strong-stroke: 0px;--kw-logo-letter-spacing: 2px;--kw-menu-color: #fff;--kw-menu-hover-shadow: 0 0 12px var(--kw-accent-color);--kw-menu-sep-color: var(--kw-menu-color);--kw-pop-bg-color: #ddd;--kw-pop-bg-image: none;--kw-pop-text-color: #000;--kw-pop-shadow: 0 4px 6px rgba(0, 0, 0, .5);--kw-pop-rotate: 0deg;--kw-team-red: #d33;--kw-team-blue: #08b;--kw-score-number-color: #fff;--kw-label-color: #fff;--kw-input-bg: #fff;--kw-input-color: #000;--kw-card-gap: 10px;--kw-card-radius: 2px;--kw-card-border-width: 0px;--kw-card-border-color: transparent;--kw-card-bg-color: #eee;--kw-card-bg-image: none;--kw-card-bg-blend: normal;--kw-card-scramble-chars: ΞΨΩΦΔΣΛΠЖЯЩЮФЭ∑∆∏§¶†‡¤#@$%&*+=~^;--kw-card-scramble-time: 650;--kw-logo-scramble-time: 1000;--kw-card-bg-zoom: .8;--kw-card-shadow: none;--kw-card-text-color: #111;--kw-card-letter-spacing: 1px;--kw-card-font-scale: .25;--kw-card-font-min: 11;--kw-card-jitter: 0;--kw-card-hover-border-color: var(--kw-card-border-color);--kw-card-hover-shadow: var(--kw-card-shadow);--kw-card-hover-text-color: var(--kw-card-text-color);--kw-card-hover-filter: none;--kw-card-hover-transform: scale(1);--kw-red-bg-color: #d33;--kw-red-border-color: transparent;--kw-red-shadow: none;--kw-red-text-color: #fff;--kw-red-sign: none;--kw-blue-bg-color: #08b;--kw-blue-border-color: transparent;--kw-blue-shadow: none;--kw-blue-text-color: #fff;--kw-blue-sign: none;--kw-neutral-bg-color: #ddd;--kw-neutral-border-color: transparent;--kw-neutral-shadow: none;--kw-neutral-text-color: #666;--kw-neutral-sign: none;--kw-assassin-bg-color: #222;--kw-assassin-border-color: transparent;--kw-assassin-shadow: none;--kw-assassin-text-color: #fff;--kw-assassin-sign: none;--kw-sign-size: contain;--kw-revealed-word-display: none;--kw-key-revealed-opacity: .4}*{box-sizing:border-box}html{font-size:clamp(13px,min(2.2vh,1.4vw),24px);filter:var(--kw-page-filter);-webkit-text-size-adjust:100%}@media(orientation:portrait){html{font-size:clamp(13px,3.4vw,22px)}}html:not([data-ready]) body{opacity:0}body{margin:0;min-height:100dvh;overflow:hidden;color:var(--kw-text-color);text-shadow:var(--kw-text-shadow);font-family:var(--kw-font-body);font-weight:var(--kw-body-font-weight);background-color:var(--kw-page-bg-color);background-image:var(--kw-page-bg-image);background-size:cover;background-position:center;background-repeat:no-repeat;transition:opacity .2s}@media(orientation:portrait){body{background-image:var(--kw-page-bg-image-portrait)}}#app{position:relative;display:flex;flex-direction:column;gap:.7rem;height:100dvh;padding-block:max(.4rem,env(safe-area-inset-top)) max(.4rem,env(safe-area-inset-bottom));padding-inline:max(.5rem,5vw);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}@media(orientation:portrait){#app{padding-inline:max(.4rem,2vw)}}.kw-overlay{position:fixed;inset:0;z-index:50;pointer-events:none}.kw-header{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.2rem 1.6rem;text-shadow:var(--kw-header-text-shadow)}.kw-header-group{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem 1.4rem;min-width:0}.kw-logo{margin:0;font-family:var(--kw-font-display);font-size:2.6rem;font-weight:400;line-height:1.1;letter-spacing:var(--kw-logo-letter-spacing);color:var(--kw-logo-color);white-space:nowrap}.kw-logo b{color:var(--kw-logo-strong-color);font-weight:var(--kw-logo-strong-weight);-webkit-text-stroke:var(--kw-logo-strong-stroke) currentColor}.kw-menu{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:0;list-style:none;font-family:var(--kw-font-body);font-size:1.35rem}.kw-menu>li{display:flex;align-items:center}.kw-menu>li+li:before{content:"|";margin-inline:.5rem;color:var(--kw-menu-sep-color)}.kw-link{appearance:none;background:none;border:0;margin:0;padding:.15rem .1rem;font:inherit;color:var(--kw-menu-color);text-decoration:none;text-shadow:inherit;cursor:pointer}.kw-keytoggle{font-family:var(--kw-font-body);font-size:1.35rem}.kw-link:hover,.kw-link:focus-visible,.kw-link[aria-expanded=true]{text-shadow:var(--kw-menu-hover-shadow);outline:none}.kw-link[aria-pressed=true]{text-shadow:var(--kw-menu-hover-shadow);text-decoration:underline;text-underline-offset:.25em}.kw-dropdown{position:relative}.kw-pop{position:absolute;top:calc(100% + .3rem);left:0;z-index:100;min-width:9rem;max-width:calc(100vw - 1rem);margin:0;padding:.35rem .5rem;list-style:none;border-radius:3px;color:var(--kw-pop-text-color);text-shadow:none;background-color:var(--kw-pop-bg-color);background-image:var(--kw-pop-bg-image);background-blend-mode:multiply;background-size:cover;background-position:center;box-shadow:var(--kw-pop-shadow);transform:rotate(var(--kw-pop-rotate))}.kw-pop button{display:block;width:100%;appearance:none;background:none;border:0;padding:.3rem .4rem;font:inherit;font-size:1.1rem;text-align:left;color:inherit;cursor:pointer;white-space:nowrap}.kw-pop button:hover,.kw-pop button:focus-visible,.kw-pop button[aria-current=true]{font-weight:700;outline:none;text-decoration:underline}.kw-score{display:flex;flex-wrap:wrap;gap:0 1.2rem;margin:0;padding:0;list-style:none;font-family:var(--kw-font-display);font-size:2.6rem;line-height:1.1;letter-spacing:2px;white-space:nowrap}.kw-score .is-red{color:var(--kw-team-red)}.kw-score .is-blue{color:var(--kw-team-blue)}.kw-score .n{color:var(--kw-score-number-color);margin-left:.4em}.kw-main{flex:1;display:flex;min-height:0}.kw-board{flex:1;min-width:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:repeat(5,minmax(0,1fr));gap:var(--kw-card-gap);padding:calc(var(--kw-card-gap) / 2)}.kw-board:not([data-fit]) .kw-card-text{visibility:hidden}.kw-message{margin:auto;max-width:30rem;text-align:center;font-size:1.6rem;line-height:1.4;font-family:var(--kw-font-body)}.kw-card{position:relative;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;margin:0;padding:.15rem;overflow:hidden;appearance:none;font:inherit;text-shadow:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border:var(--kw-card-border-width) solid var(--kw-card-border-color);border-radius:var(--kw-card-radius);color:var(--kw-card-text-color);background-color:var(--kw-card-bg-color);box-shadow:var(--kw-card-shadow);transform:rotate(calc(var(--r, 0) * var(--kw-card-jitter) * 1deg));transition:box-shadow .15s,border-color .15s,color .15s,filter .15s,transform .15s,opacity .2s}.kw-card:before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background-image:var(--kw-card-bg-image);background-size:cover;background-position:center;background-repeat:no-repeat;mix-blend-mode:var(--kw-card-bg-blend);--z: calc(1 + var(--tz, 0) * var(--kw-card-bg-zoom));transform:translate(calc(var(--tx, 0) * (var(--z) - 1) * 50%),calc(var(--ty, 0) * (var(--z) - 1) * 50%)) scale(calc(var(--fx, 1) * var(--z)),calc(var(--fy, 1) * var(--z)))}.kw-card-text{position:relative;z-index:1;display:block;width:100%;text-align:center;text-transform:uppercase;font-family:var(--kw-font-card);font-weight:var(--kw-card-font-weight);letter-spacing:var(--kw-card-letter-spacing);line-height:1.1;color:inherit;pointer-events:none}.kw-card-text.fit-nowrap{white-space:nowrap;-webkit-hyphens:none;hyphens:none}.kw-card-text.fit-wrap{white-space:normal;-webkit-hyphens:none;hyphens:none}.kw-card-text.fit-hyph{white-space:normal;-webkit-hyphens:manual;hyphens:manual;overflow-wrap:normal}.kw-card:after{content:"";position:absolute;inset:0;z-index:2;background-image:var(--c-sign, none);background-size:var(--kw-sign-size);background-position:center;background-repeat:no-repeat;opacity:0;pointer-events:none;transition:opacity .2s}@media(hover:hover){.kw-card:not(.is-revealed):hover,.kw-card:not(.is-revealed):focus-visible{z-index:5;outline:none;border-color:var(--kw-card-hover-border-color);box-shadow:var(--kw-card-hover-shadow);color:var(--kw-card-hover-text-color);filter:var(--kw-card-hover-filter);transform:rotate(calc(var(--r, 0) * var(--kw-card-jitter) * 1deg)) var(--kw-card-hover-transform)}}.kw-card:focus-visible{outline:2px solid var(--kw-accent-color);outline-offset:2px}.kw-card.role-red,.kw-win-badge.role-red,.kw-win.role-red{--c-bg: var(--kw-red-bg-color);--c-border: var(--kw-red-border-color);--c-shadow: var(--kw-red-shadow);--c-text: var(--kw-red-text-color);--c-sign: var(--kw-red-sign)}.kw-card.role-blue,.kw-win-badge.role-blue,.kw-win.role-blue{--c-bg: var(--kw-blue-bg-color);--c-border: var(--kw-blue-border-color);--c-shadow: var(--kw-blue-shadow);--c-text: var(--kw-blue-text-color);--c-sign: var(--kw-blue-sign)}.kw-card.role-neutral{--c-bg: var(--kw-neutral-bg-color);--c-border: var(--kw-neutral-border-color);--c-shadow: var(--kw-neutral-shadow);--c-text: var(--kw-neutral-text-color);--c-sign: var(--kw-neutral-sign)}.kw-card.role-assassin{--c-bg: var(--kw-assassin-bg-color);--c-border: var(--kw-assassin-border-color);--c-shadow: var(--kw-assassin-shadow);--c-text: var(--kw-assassin-text-color);--c-sign: var(--kw-assassin-sign)}.kw-card.show-role{background-color:var(--c-bg);border-color:var(--c-border);box-shadow:var(--c-shadow);color:var(--c-text)}.kw-card.is-revealed{cursor:default;pointer-events:none}.kw-card.is-revealed:not(.in-key-view):after{opacity:1}.kw-card.is-revealed:not(.in-key-view) .kw-card-text{display:var(--kw-revealed-word-display)}.kw-card.is-revealed.in-key-view{opacity:var(--kw-key-revealed-opacity)}.kw-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.4rem .6rem;font-family:var(--kw-font-body);font-size:1.1rem}.kw-footer label{color:var(--kw-label-color)}.kw-footer input{width:min(20rem,60vw);padding:.25rem .4rem;font:inherit;font-family:system-ui,sans-serif;color:var(--kw-input-color);background:var(--kw-input-bg);border:0;border-radius:0;text-shadow:none;user-select:text;-webkit-user-select:text}@media(max-width:700px),(max-height:520px){.kw-logo,.kw-score{font-size:2rem}.kw-menu,.kw-keytoggle{font-size:1.2rem}.kw-score{gap:0 .8rem}#app{gap:.4rem}.kw-board{gap:min(var(--kw-card-gap),5px);padding:0}.kw-card{border-width:min(var(--kw-card-border-width),2px);padding:.1rem}}@media(max-width:420px){.kw-logo,.kw-score{font-size:1.8rem}}@media(max-height:520px)and (orientation:landscape){.kw-footer{display:none}}.kw-dialog-backdrop{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:.8rem;background:#000000a6;-webkit-user-select:none;user-select:none}.kw-dialog{display:flex;flex-direction:column;align-items:center;gap:.6rem;max-width:min(94vw,40rem);max-height:96dvh;padding:1rem 1.2rem;overflow:auto;border-radius:6px;text-align:center;font-family:var(--kw-font-body);color:var(--kw-pop-text-color);text-shadow:none;background-color:var(--kw-pop-bg-color);background-image:var(--kw-pop-bg-image);background-blend-mode:multiply;background-size:cover;background-position:center;box-shadow:var(--kw-pop-shadow)}.kw-qr-title{margin:0;font-size:1.3rem;font-weight:inherit}.kw-qr-code{width:min(62vh,80vw,34rem);height:auto;aspect-ratio:1;background:#fff;border-radius:4px}.kw-qr-hint,.kw-qr-warn{margin:0;font-size:1rem;line-height:1.35}.kw-qr-warn{font-weight:700}.kw-qr-url{margin:0;max-width:100%;font:.8rem/1.3 system-ui,sans-serif;word-break:break-all;opacity:.75;user-select:text;-webkit-user-select:text}.kw-dialog-actions{display:flex;gap:.6rem}.kw-dialog-btn{appearance:none;padding:.3rem .9rem;font:inherit;font-size:1rem;color:inherit;background:transparent;border:2px solid currentColor;border-radius:4px;cursor:pointer}.kw-dialog-btn:hover,.kw-dialog-btn:focus-visible{outline:none;text-decoration:underline}.kw-link:disabled{opacity:.4;cursor:default}.kw-status{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.1rem 1rem;font-family:var(--kw-font-body);font-size:1.35rem;text-shadow:var(--kw-header-text-shadow)}.kw-turn{margin:0;font-family:var(--kw-font-display);font-size:1.8rem;line-height:1.1;letter-spacing:2px;color:var(--kw-score-number-color)}.kw-status[data-team=red] .kw-turn{color:var(--kw-team-red)}.kw-status[data-team=blue] .kw-turn{color:var(--kw-team-blue)}.kw-status-actions{display:flex;gap:1.4rem}.kw-score[data-turn] li:not(.is-active){opacity:.4}.kw-score li.is-active{text-decoration:underline;text-decoration-thickness:.12em;text-underline-offset:.2em}.kw-board{padding:calc(var(--kw-card-gap) / 2 + .5rem);border-radius:.7rem;transition:box-shadow .2s}.kw-board[data-team=red]{box-shadow:inset 0 0 0 .3rem var(--kw-team-red)}.kw-board[data-team=blue]{box-shadow:inset 0 0 0 .3rem var(--kw-team-blue)}.kw-board.is-over .kw-card{pointer-events:none;cursor:default}.kw-win{gap:.8rem}.kw-win-badge{width:min(34vh,60vw,15rem);aspect-ratio:1;border:var(--kw-card-border-width) solid var(--c-border);border-radius:var(--kw-card-radius);background-color:var(--c-bg);background-image:var(--c-sign);background-size:contain;background-position:center;background-repeat:no-repeat;box-shadow:var(--c-shadow)}.kw-win-title{margin:0;font-family:var(--kw-font-display);font-size:2rem;font-weight:inherit;line-height:1.15;letter-spacing:2px}.kw-win-reason{margin:0;font-size:1.15rem;line-height:1.35}.kw-dialog-actions{flex-wrap:wrap;justify-content:center}@media(max-width:700px),(max-height:520px){.kw-turn{font-size:1.3rem}.kw-status{font-size:1.1rem}.kw-status-actions{gap:1rem}.kw-board{padding:calc(min(var(--kw-card-gap),5px)/2 + .35rem)}.kw-board[data-team]{box-shadow:inset 0 0 0 .22rem var(--kw-team-red)}.kw-board[data-team=blue]{box-shadow:inset 0 0 0 .22rem var(--kw-team-blue)}.kw-win-title{font-size:1.5rem}}.kw-card-text.kw-scramble{position:absolute}.kw-scramble .ch{display:inline-block;text-align:center;white-space:nowrap}.kw-scramble .ch.scr{opacity:.8;color:var(--kw-card-scramble-color, inherit)}.kw-scramble{position:absolute;margin:0}.kw-logo-wrap{position:relative;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
