html,body{margin:0;min-height:100%;background:#2f1b31}
#kp-stage{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;background:#2f1b31;overflow:auto}
#kp-stage[hidden]{display:none}
.kp-screen{position:relative;width:min(100vw,calc(100vh * .45));aspect-ratio:1080/2400;overflow:hidden;background:#64caff;font-family:"Source Sans 3",Arial,sans-serif}
.kp-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:10;pointer-events:none}
.kp-photo-mask{position:absolute;z-index:5;overflow:hidden;pointer-events:none}.kp-photo-mask.ellipse{border-radius:50%}.kp-photo-mask canvas{position:absolute;inset:0;width:100%;height:100%}
.kp-end-mask{transform:scale(1.08);transform-origin:center}
.kp-layer{position:absolute;z-index:20;box-sizing:border-box;display:flex;align-items:center;white-space:pre-wrap;overflow:hidden;font-family:"Source Sans 3",Arial,sans-serif;font-weight:700}
.kp-layer.center{justify-content:center;text-align:center}.kp-layer.left{justify-content:flex-start;text-align:left}
.kp-layer:has(textarea){overflow:visible}.kp-control{border:0;background:transparent;outline:none;font:inherit;color:inherit;width:100%;height:100%;padding:0;box-sizing:border-box}
textarea.kp-control{resize:none;overflow:hidden;padding-right:18%;padding-bottom:1.15em}
.kp-message-counter{position:absolute;right:3%;bottom:10%;z-index:2;font-size:.58em;line-height:1;color:#71371f;white-space:nowrap;pointer-events:none}.kp-message-counter.max{color:#c9273f}
select.kp-control{appearance:none;cursor:pointer}
button.kp-layer,button.kp-layer:hover,button.kp-layer:active{min-width:0;margin:0;border:0;border-radius:0;padding-top:0;padding-bottom:0;background:transparent;background-image:none;box-shadow:none;text-shadow:none;cursor:pointer;appearance:none}
.kp-slider-host{position:absolute;z-index:250;height:2.9166667%;display:flex;align-items:center;padding:0 1.2962963%;box-sizing:border-box}.kp-slider{width:100%;accent-color:#ed4b86;cursor:pointer;margin:0;padding:0;box-shadow:none}.kp-slider::-webkit-slider-thumb{width:var(--thumb-size);height:var(--thumb-size)}.kp-slider::-moz-range-thumb{width:var(--thumb-size);height:var(--thumb-size)}
.kp-file{display:none}.kp-dragging{cursor:grabbing}
.kp-tap{all:unset;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:82%;height:19%;display:block;box-sizing:border-box;cursor:pointer;z-index:100}.kp-tap img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.kp-notice-shade{position:absolute;inset:0;z-index:500;display:grid;place-items:center;padding:8%;box-sizing:border-box;background:#2f1b318c}.kp-notice{width:82%;box-sizing:border-box;padding:7% 6%;border:3px solid #fff5de;border-radius:5%;background:#fff4dd;color:#71371f;text-align:center}.kp-notice p{margin:0 0 6%;font-size:clamp(16px,4.2vw,38px);line-height:1.25;font-weight:700}.kp-notice button{min-width:35%;padding:3% 6%;border:0;border-radius:999px;background:#ef5682;color:white;font-weight:700}
.kp-notice-shade.kp-howto .kp-notice p{font-size:clamp(12px,3vw,25px);line-height:1.22}
#kp-skip{position:absolute;z-index:45;left:17.86%;top:94.7%;transform:translate(-50%,-50%);border:0;background:transparent;color:#fff;font:900 clamp(8px,1.9vw,13px)/1 Arial,sans-serif;text-shadow:0 2px 3px #000;cursor:pointer;padding:.8%;display:block;white-space:nowrap}.kp-recipient #kp-skip{display:none}
#kp-back{position:absolute;z-index:45;left:23.9%;top:12.3%;transform:translate(-50%,-50%);width:9%;border:0;background:transparent;box-shadow:none;cursor:pointer;padding:0;display:block}.kp-recipient #kp-back{display:none}#kp-back img{display:block;width:100%;height:auto;object-fit:contain;filter:drop-shadow(0 2px 2px #0007)}
body.kp-photo-game .rider-face-window img{object-fit:cover!important}
.heap{z-index:9;-webkit-clip-path:none;clip-path:none}.heap.descending{animation-name:kp-heap-rummage!important}@keyframes kp-heap-rummage{0%{transform:translateY(1px)}to{transform:translateY(-1px)}}
.mission-message{box-sizing:border-box!important;left:29%!important;top:.8%!important;width:42%!important;height:9.5%!important;transform:none!important;display:flex!important;align-items:center!important;justify-content:center!important;overflow:hidden!important;padding:0 1.5%!important;white-space:normal!important;font-size:clamp(15px,4.1vw,25px)!important;line-height:.98!important}
body:not(.kp-local-playing)>.game-viewport{visibility:hidden;pointer-events:none}
body.kp-local-playing #gift-grab-root{visibility:visible!important}
@media(max-aspect-ratio:9/20){.kp-screen{width:100vw;height:auto}}

/* Shared viewport and text containment rules. JSON remains the layout authority. */
html,body{width:100%;height:100%;overflow:hidden;overscroll-behavior:none}
#kp-stage{overflow:hidden}
.kp-screen{background:#2f1b31;width:min(100vw,calc(100dvh * .45));height:auto}
.kp-layer.right{justify-content:flex-end;text-align:right}
.kp-control{border-radius:0;min-width:0}
textarea.kp-control{padding:0;white-space:pre-wrap;overflow-wrap:anywhere;scrollbar-width:none}
.kp-message-counter{right:auto;bottom:auto;font-size:inherit;line-height:inherit;color:inherit}
body.kp-zoom-locked .game-stage{touch-action:none}
#gift-grab-root{visibility:hidden}
@media(max-aspect-ratio:9/20){.kp-screen{width:min(100vw,calc(100dvh * .45))}}

body.kp-photo-game .rider-face-window img,.gift-paid-face img{object-fit:fill!important}
.kp-end-mask{transform:none}

/* Clip containers cannot be scrolled by keyboard focus. TAB still moves focus. */
html,body,#kp-stage,.kp-screen,.game-viewport,.game-stage{overflow:clip!important}
#gift-grab-root{position:fixed;inset:0;overflow:clip}
.mission-message{font-size:clamp(10px,3vw,18px)!important;line-height:1.08!important;overflow-wrap:anywhere!important}

.kp-tap{touch-action:manipulation}.kp-loading-status{position:absolute;top:100%;left:0;right:0;text-align:center;color:white;font:700 16px/1.4 Arial,sans-serif;pointer-events:none}
/* Keep the native text menu in editable fields, while disabling image save on controls. */
#kp-stage button img,.game-stage button img,.kp-art,.kp-tap img{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}
