@font-face{font-family:system;src:local('Dotum'),local('돋움')}
:root{--text-primary:#212355;--text-muted:#626580;font-family:Dotum,돋움,sans-serif;color:var(--text-primary);font-synthesis:none;background:#f2ede4;font-size:15px;--paper:#f2ede4;--button-primary:#212355;--button-sky:rgb(77 130 182 / 80%);--button-sky-hover:rgb(65 112 162 / 88%);--button-border:#a8cbe5;--button-ink:#f3f9ff;--ui-accent:#212355;--ui-selected:rgb(77 130 182 / 80%);--ui-border:#cdd0e0;--bottom:238px}
*{box-sizing:border-box}body{margin:0;overflow:hidden;height:100dvh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #212355;outline-offset:4px}button:disabled{opacity:.5;cursor:wait}[hidden]{display:none!important}
#stage-wrap{position:fixed;left:40%;right:3%;top:80px;bottom:34px;border-radius:40px;overflow:hidden}#stage{display:block;width:100%;height:100%;touch-action:none;outline:none}#poster{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:var(--paper);pointer-events:none;user-select:none}body.playing #poster{display:none}body:not(.playing) #stage{visibility:hidden}
.topbar{position:fixed;z-index:2;top:max(26px,env(safe-area-inset-top));left:clamp(20px,4vw,58px);right:clamp(20px,4vw,58px);display:flex;justify-content:space-between;align-items:center;pointer-events:none}.brand{font-weight:850;letter-spacing:-.7px;font-size:24px}.brand span{display:block;font-size:9px;letter-spacing:3px;font-weight:650;margin-top:5px;color:var(--text-muted)}.leaf{display:inline-block;width:15px;height:22px;border-radius:20px 0 20px 0;background:var(--ui-accent);transform:rotate(20deg);vertical-align:-2px;margin-right:8px}.top-actions{display:flex;gap:7px;pointer-events:auto}.pill{border:1px solid var(--button-border);background:var(--button-sky);color:var(--text-primary);border-radius:24px;padding:11px 16px;font-size:12px;min-height:44px}.pill:hover{background:var(--button-sky-hover)}.pill[aria-pressed=true]{background:var(--ui-selected);border-color:var(--button-border)}
.intro{position:fixed;left:6%;top:50%;transform:translateY(-42%);text-align:left;width:32%;max-width:400px;z-index:2}.eyebrow{font-size:10px;letter-spacing:2.7px;color:var(--text-muted);font-weight:750}.intro h1{font-size:clamp(32px,3.4vw,48px);font-weight:800;letter-spacing:-2px;line-height:1.24;margin:16px 0}.intro p{font-size:14px;color:var(--text-muted);margin:0 0 25px;line-height:1.9;word-break:keep-all}.primary{border:0;border-radius:27px;background:var(--button-primary);color:var(--button-ink);padding:17px 30px;min-height:54px;font-size:15px;font-weight:700;box-shadow:0 4px 0 #17183c,0 10px 24px #21235512}.primary:hover{background:#303374}.primary:active{transform:translateY(2px);box-shadow:0 2px 0 #17183c}.primary span{margin-left:24px}.intro .primary{min-width:222px}.load-status{position:fixed;z-index:4;top:44%;left:70%;transform:translate(-50%,-50%);background:#fffcf4ef;border:1px solid #dddacf;border-radius:22px;padding:18px 23px;box-shadow:0 6px 35px #21235512;font-size:13px;text-align:center;width:max-content;max-width:85%}.load-status small{display:block;margin-top:10px;max-width:260px;line-height:1.7}.failure-link{display:inline-block;color:var(--text-primary);margin-top:12px}
body.playing #stage-wrap{inset:0;border-radius:0}.counter{text-align:center;position:fixed;z-index:3;right:24px;top:104px;border-radius:22px;padding:13px 20px;background:#fffbedef;box-shadow:0 5px 15px #21235510}.counter b{font-size:22px;letter-spacing:2px}.counter small{display:block;color:var(--text-muted);font-size:10px;margin-bottom:4px}.controls{position:fixed;z-index:3;bottom:max(26px,env(safe-area-inset-bottom));left:24px;right:24px;display:flex;justify-content:space-between;align-items:flex-end;pointer-events:none}#joystick{pointer-events:auto;width:112px;height:112px;border-radius:50%;border:1px solid #a8cbe5cc;background:#b8ddf580;box-shadow:inset 0 0 0 14px #e0f2ff40;touch-action:none;position:relative}#stick{position:absolute;left:32px;top:32px;width:48px;height:48px;background:var(--button-sky);border-radius:50%;box-shadow:0 5px 12px #21235520;pointer-events:none}.jump{pointer-events:auto;background:var(--button-sky);color:var(--text-primary);border:2px solid var(--button-border);border-radius:50%;width:76px;height:76px;box-shadow:0 4px 0 #62658044;touch-action:none;font-weight:750}.keyboard{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);font-size:11px;color:var(--text-muted);background:#fff9;padding:8px 14px;border-radius:20px;pointer-events:none}.pickup-toast{position:fixed;z-index:4;left:50%;top:25%;transform:translateX(-50%);background:#fff9e9ef;padding:10px 18px;border-radius:25px;box-shadow:0 4px 14px #21235512;font-size:13px;color:var(--text-primary);pointer-events:none;opacity:0;transition:opacity .2s}.pickup-toast.visible{opacity:1}
dialog{border:1px solid var(--ui-border);border-radius:28px;background:#faf8ee;color:var(--text-primary);width:min(760px,92vw);max-height:88dvh;overflow:auto;padding:26px;box-shadow:0 30px 100px #17183c33}dialog::backdrop{background:#17183c5c;backdrop-filter:blur(6px)}.note{font-size:12px;line-height:1.8;color:var(--text-muted)}.victory{text-align:center;padding:35px;width:min(410px,92vw)}.victory h2{font-size:25px;line-height:1.5}.victory p{line-height:1.8;font-size:14px}.victory .primary{margin:15px 0}.victory-emblem{font-size:40px;margin-bottom:15px;color:var(--text-muted)}
@media(max-width:700px){#stage-wrap{left:0;right:0;top:86px;bottom:calc(var(--bottom) + env(safe-area-inset-bottom));border-radius:0}.topbar{top:max(20px,env(safe-area-inset-top))}.brand{font-size:21px}.brand span{font-size:8px;letter-spacing:2.6px}.top-actions .pill{font-size:11px;padding:9px 12px}.intro{top:auto;left:20px;right:20px;bottom:max(19px,env(safe-area-inset-bottom));transform:none;width:auto;max-width:none;text-align:center}.intro h1{font-size:27px;letter-spacing:-1px;margin:8px 0 6px;line-height:1.25}.intro p{font-size:12px;margin:0 0 13px;line-height:1.5}.intro .eyebrow{font-size:9px;letter-spacing:2px}.intro .primary{padding:14px 28px;min-height:48px;min-width:222px}.load-status{left:50%;top:36%}.keyboard{display:none}.counter{top:94px;right:18px;padding:10px 16px}.controls{left:20px;right:20px}.topbar .top-actions{gap:5px}}
@media(max-width:700px) and (max-height:620px){:root{--bottom:200px}#stage-wrap{top:72px}.intro{bottom:12px}.intro h1{font-size:23px;margin:5px 0}.intro p{font-size:11px;margin-bottom:9px}.intro .eyebrow{display:none}.intro .primary{padding:12px 25px}.topbar{top:15px}.brand{font-size:19px}}
@media(min-width:701px) and (max-height:540px){#stage-wrap{top:68px;bottom:15px;left:43%;right:1%}.intro{top:53%;left:5%;width:36%}.intro h1{font-size:29px;margin:10px 0}.intro p{font-size:12px;margin-bottom:12px}.intro .primary{padding:13px 24px}.topbar{top:16px}.counter{top:75px}.controls{bottom:18px}#joystick{transform:scale(.8);transform-origin:left bottom}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}.primary:active{transform:none}}


.envelope-art{position:relative;width:160px;height:105px;margin:12px auto 28px;border:1px solid #ccb998;border-radius:8px;background:linear-gradient(150deg,transparent 49%,#d8c5a5 50%,transparent 51%),linear-gradient(210deg,#ede0c4 49%,#d8c5a5 50%,#f3e7d0 51%);box-shadow:0 12px 25px #2123551a;display:grid;place-items:center}.envelope-art span{display:grid;place-items:center;background:#a56c52;color:#fff2d9;border-radius:50%;width:34px;height:34px;margin-top:20px;font:italic 20px Georgia,serif}.letter-paper{text-align:left;background:#fffdf4;border:1px solid #e8ddc6;padding:22px;border-radius:8px;line-height:2;white-space:pre-wrap;overflow-wrap:anywhere}.ending-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:20px}.ending-note{color:var(--text-muted);font-size:12px!important}.victory{width:min(460px,92vw)}
@media(max-width:420px){body.playing .brand{font-size:14px}body.playing .brand span,body.playing .brand .leaf{display:none}.top-actions .pill{padding-inline:8px}.victory{padding:24px}}.map-caption{position:fixed;z-index:2;bottom:36px;left:36px;border:1px solid #ffffee90;border-radius:24px;background:#fffbedeb;padding:22px 28px;box-shadow:0 10px 40px #21235512;pointer-events:none}.map-caption>span{display:block;font-size:10px;letter-spacing:2px;color:var(--text-muted);margin-bottom:8px}.map-caption strong{font-size:19px;letter-spacing:-.5px}.map-caption p{font-size:12px;margin:10px 0;color:var(--text-muted)}.map-caption small{font-size:10px;color:var(--text-muted)}.counter{min-width:110px}.top-actions #map-toggle[aria-pressed=true]{background:#212355;color:var(--button-ink);border-color:#212355}
@media(max-width:700px){body.playing .topbar{left:18px;right:18px}.top-actions{gap:4px}.top-actions .pill{padding-inline:9px;font-size:10px}.map-caption{left:20px;right:20px;bottom:112px;padding:16px 20px;border-radius:19px}.map-caption strong{font-size:17px}.map-caption p{margin:7px 0}.map-caption small{font-size:9px}body.map-open .brand span{display:none}}
@media(max-width:420px){body.playing .brand{font-size:13px}body.playing .top-actions .pill{padding-inline:7px;font-size:10px}body.playing .topbar{left:14px;right:14px}}
@media(max-height:540px){.keyboard{display:none}.map-caption{bottom:20px;padding:16px 20px}.map-caption small{display:none}.counter{top:75px}}
@media(max-width:700px){body.map-open .map-caption{display:none}}

#start{width:max-content;min-width:0;white-space:nowrap;border:0;box-shadow:none}

/* Native dialogs start on an unfocused-looking container, leaving titles and controls untouched. */
#vote-form:focus,#letter-content:focus,#hidden-wish-form:focus,#hidden-wish-done-content:focus,#water-wish-content:focus{outline:none}

.envelope-art span{font-family:Dotum,돋움,sans-serif}

/* Independent ballot hunt and summit interaction. */
.new-walk{display:block;margin-top:15px}.ballot-status{position:fixed;z-index:3;top:104px;left:24px;max-width:calc(100vw - 185px);padding:12px 16px;border:1px solid var(--ui-border);border-radius:18px;background:#fffbedef;font-size:12px;line-height:1.5;word-break:keep-all;pointer-events:none}.vote-notice{position:fixed;z-index:4;top:184px;left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 36px);padding:12px 20px;border-radius:18px;background:#eef0faf5;color:var(--text-primary);box-shadow:0 4px 18px #21235518;font-size:14px;font-weight:700;text-align:center;word-break:keep-all;pointer-events:none}.cast-vote{position:fixed;z-index:4;bottom:max(95px,calc(env(safe-area-inset-bottom) + 80px));left:50%;transform:translateX(-50%);white-space:nowrap}.cast-vote:active{transform:translate(-50%,2px)}.cast-vote small{margin-left:8px;opacity:.7}.pickup-toast{max-width:calc(100vw - 36px);width:max-content;text-align:center;word-break:keep-all;top:76px}
@media(max-width:700px){.new-walk{display:inline-block;margin:12px 0 0 8px;min-height:42px}.ballot-status{top:94px;left:18px;font-size:11px;padding:10px 12px;max-width:calc(100vw - 158px)}.vote-notice{top:178px;font-size:13px}.cast-vote{bottom:max(155px,calc(env(safe-area-inset-bottom) + 140px));padding:14px 24px}.cast-vote small{display:none}.pickup-toast{font-size:11px;top:56px;padding:8px 12px;max-width:calc(100vw - 24px)}.intro p{font-size:11px}.intro .new-walk{padding:9px 12px;font-size:11px}}
@media(max-height:540px){.ballot-status{top:75px}.vote-notice{top:144px}.pickup-toast{top:130px}.cast-vote{bottom:34px}.intro .new-walk{margin-top:8px}.intro p{line-height:1.5}}
body:not(.playing) .pickup-toast{display:none}
@media(max-width:700px){:root{--bottom:268px}}
@media(max-width:700px) and (max-height:620px){:root{--bottom:230px}}
@media(min-width:701px) and (max-height:540px){.vote-notice{left:24px;top:133px;transform:none;max-width:240px;font-size:12px}.pickup-toast{left:auto;right:24px;top:130px;transform:none;max-width:230px;font-size:11px}}

.vote-dialog{width:min(450px,92vw);padding:30px;text-align:center}.vote-dialog fieldset{border:0;padding:0;margin:16px 0 0;min-width:0}.vote-dialog legend{font-size:23px;font-weight:800;letter-spacing:-.7px;line-height:1.45;width:100%;padding:0;word-break:keep-all}.vote-dialog #vote-help{font-size:13px;color:var(--text-muted);margin:12px 0 20px}.vote-options{display:grid;gap:10px;text-align:left}.vote-options label{display:flex;align-items:center;gap:13px;min-height:60px;padding:15px 18px;border:1px solid var(--ui-border);border-radius:16px;background:#edf7ff;cursor:pointer;font-size:16px;font-weight:700}.vote-options label:has(input:checked){background:var(--ui-selected);border-color:var(--ui-accent)}.vote-options label:has(input:focus-visible){outline:3px solid var(--ui-accent);outline-offset:2px}.vote-options input{accent-color:var(--ui-accent);width:20px;height:20px;margin:0;flex-shrink:0}.vote-actions{display:grid;gap:12px;margin-top:24px}.vote-actions .pill{justify-self:stretch;width:100%}.vote-actions .primary:disabled{cursor:default;box-shadow:none}.letter-choice{display:inline-block;padding:7px 15px;border-radius:20px;background:var(--ui-selected);color:var(--text-primary);font-size:12px!important;margin:16px 0 0}.letter-paper p{margin:0;white-space:pre-line;line-height:1.9}.victory h2{word-break:keep-all}.vote-dialog::backdrop{background:#17183c7a}
@media(max-width:420px){.vote-dialog{padding:24px}.vote-dialog legend{font-size:21px}.vote-options label{min-height:56px}.vote-actions .primary{font-size:14px;padding-inline:20px}}
@media(max-height:540px){.vote-dialog{padding:20px 24px}.vote-dialog .eyebrow{display:none}.vote-dialog fieldset{margin:0}.vote-dialog legend{font-size:20px}.vote-dialog #vote-help{margin:8px 0 12px}.vote-options{gap:7px}.vote-options label{min-height:44px;padding:10px 15px;font-size:14px}.vote-actions{display:grid;grid-template-columns:1fr 1fr;align-items:center;margin-top:16px;gap:12px}.vote-actions .primary{min-height:46px;padding:12px 19px;font-size:13px}.vote-actions .pill{min-height:44px}.victory{padding:22px}}

/* Keep the return action available while a long letter scrolls. */
.victory[open]{display:flex;flex-direction:column}.victory #letter-content{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:3px 4px}.victory .ending-actions{flex-shrink:0}.letter-paper p{word-break:keep-all;overflow-wrap:anywhere}
@media(max-width:420px){.victory h2{font-size:22px}.victory .letter-paper{padding:18px}.victory .ending-actions{gap:6px;margin-top:16px}.victory .ending-actions .pill{padding-inline:12px}}

.sit-bench{background:var(--ui-accent);color:var(--button-ink);bottom:max(62px,calc(env(safe-area-inset-bottom) + 48px))}.sit-bench span{margin-left:0}.sit-bench:hover{background:#303374}.sit-bench:disabled{opacity:.7}.jump:disabled{opacity:.45}

.intro .new-walk{min-height:54px;padding:17px 30px;font-size:15px;font-weight:700}

/* Keep both vote-dialog actions at the same height. */
.vote-actions .primary,.vote-actions .pill{height:46px;min-height:46px;padding:12px 19px}
.vote-actions .primary{box-shadow:none}
.mobile-actions{display:flex;flex-direction:column;align-items:center;gap:10px;pointer-events:auto}.run-button{display:none}
@media(max-width:700px){.mobile-actions{gap:9px}.run-button{display:block;width:76px;height:76px;border:2px solid var(--button-border);border-radius:50%;background:var(--button-sky);color:var(--text-primary);box-shadow:0 4px 0 #62658044;touch-action:none;font-weight:750}.run-button[aria-pressed=true]{background:#212355;color:var(--button-ink);border-color:#212355}.run-button:disabled{opacity:.45}}
@media(max-width:700px){.intro .primary,.intro .new-walk{height:48px;min-height:48px}.intro .new-walk{padding:9px 12px}.intro .primary,.intro .primary:active{box-shadow:none}}

.vote-options label span{min-width:0;overflow-wrap:anywhere}.vote-options input{flex-shrink:0}
/* Keep the brand readable over the moonlit forest; the poster home stays warm. */
body.playing .brand{color:#eef3ff;text-shadow:0 2px 8px #071329b3}
body.playing .brand span{color:#c2d1e9}
body.playing .leaf{background:#c2d1e9}

/* Stack wish guidance above its action, including when the text wraps. */
.wish-interaction{position:fixed;z-index:4;left:50%;bottom:max(95px,calc(env(safe-area-inset-bottom) + 80px));transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:12px;width:max-content;max-width:calc(100vw - 40px);pointer-events:none}
.wish-interaction .vote-notice,.wish-interaction .cast-vote{position:static;inset:auto;transform:none;max-width:100%}
.wish-interaction .cast-vote{pointer-events:auto}
.wish-interaction .cast-vote:active{transform:translateY(2px)}
@media(max-width:700px){.wish-interaction{bottom:max(155px,calc(env(safe-area-inset-bottom) + 140px))}}
@media(max-height:540px){.wish-interaction{bottom:max(34px,env(safe-area-inset-bottom))}}

/* Prevent iOS text selection and long-press callouts on game controls. */
#stage-wrap,.topbar,.topbar *,#controls,#controls *,.counter,.counter *,.ballot-status,.vote-notice,.pickup-toast,.keyboard,.map-caption,.wish-interaction,.wish-interaction *,.load-status,#map-location{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}

/* A fixed-size arrow ends exactly at the player's projected map position. */
#map-location{position:fixed;z-index:4;width:40px;height:48px;transform:translate(-50%,-100%);pointer-events:none;filter:drop-shadow(0 2px 4px #071329b3)}
#map-location svg{display:block;width:100%;height:100%;overflow:visible}
#map-location path{fill:#ffe17b;stroke:#fff;stroke-width:3.5;stroke-linejoin:round}
.load-status{width:300px;max-width:calc(100vw - 40px)}
.loading-heading{display:flex;align-items:center;justify-content:space-between;gap:14px}
#loading-percent{font-variant-numeric:tabular-nums}
#startup-progress{display:block;width:100%;height:9px;margin-top:15px;border:0;border-radius:8px;overflow:hidden;appearance:none;-webkit-appearance:none;background:#dce5ed;color:#5369b4}
#startup-progress::-webkit-progress-bar{background:#dce5ed;border-radius:8px}
#startup-progress::-webkit-progress-value{background:#5369b4;border-radius:8px}
#startup-progress::-moz-progress-bar{background:#5369b4;border-radius:8px}
body.starting .load-status{left:50%;top:50%;z-index:8}
body.starting::after{content:'';position:fixed;inset:0;background:#f2ede4a6;backdrop-filter:blur(5px);z-index:7}

/* Size the mobile home around its actual actions, including Safari toolbar changes. */
@media(max-width:700px){
  body:not(.playing){display:flex;flex-direction:column;padding-top:max(60px,calc(env(safe-area-inset-top) + 40px));padding-bottom:max(19px,env(safe-area-inset-bottom));height:100svh;height:100dvh}
  body:not(.playing) #stage-wrap{position:relative;inset:auto;flex:1;min-height:0;width:100%;border-radius:0}
  body:not(.playing) #poster{object-position:center bottom}
  body:not(.playing) .intro{position:relative;inset:auto;transform:none;flex:none;width:auto;margin:0 20px}
}

/* Cool blue feedback for secondary and touch controls. */
.pill:active,.jump:active{background:var(--button-sky-hover)}

/* Passive game information is translucent and flatter than actionable controls. */
.counter,.ballot-status,.vote-notice,.pickup-toast,.keyboard,.map-caption{
  background:rgb(16 29 56 / 72%);
  color:#eef3ff;
  border:0;
  border-radius:6px;
  box-shadow:none;
  pointer-events:none;
}
.counter small,.map-caption>span,.map-caption p,.map-caption small{color:#c2d1e9}
.top-actions .pill{min-height:36px;padding-block:6px;line-height:1.4}

/* Navy dialogs pair the moon illustration with quiet, readable letter surfaces. */
dialog{
  --text-primary:#eef3ff;
  --text-muted:#bdcce3;
  --ui-border:#354b6b;
  --ui-selected:#2e4d70;
  --ui-accent:#b9ddff;
  --button-border:#587393;
  --button-sky:#203756;
  --button-sky-hover:#2e4d70;
  --button-primary:#c8e4ff;
  --button-ink:#101d38;
  background:#203452;
  border-color:var(--ui-border);
  color:var(--text-primary);
  box-shadow:0 24px 80px #050c1c66;
  color-scheme:dark;
}
dialog::backdrop,.vote-dialog::backdrop{background:rgb(5 12 28 / 66%)}
dialog .primary{box-shadow:none}
dialog .primary:hover,dialog .primary:active{background:#e0f2ff;box-shadow:none}
dialog button:focus-visible,dialog a:focus-visible{outline-color:var(--ui-accent)}
.vote-options label{background:#172b47}
.letter-paper{background:#162640;border-color:var(--ui-border)}
.letter-choice{border-radius:6px}
.letter-image{display:block;width:100%;height:auto;border-radius:10px;margin:0 0 22px}
.victory #letter-content{scrollbar-color:#587393 #203452}
.letter-collection{text-align:left;margin-bottom:18px}.letter-collection strong{display:block;font-size:13px;margin-bottom:10px}.letter-choices{display:flex;flex-wrap:wrap;gap:6px}.letter-choices .pill{min-height:36px;padding:7px 10px;font-size:11px}.letter-choices .pill:disabled{opacity:.55;cursor:default}.letter-choices .pill[aria-pressed=true]{background:var(--ui-selected);border-color:var(--ui-accent)}
.victory .letter-collection{margin-bottom:10px}
.victory .letter-image{margin-bottom:8px}
.victory .letter-choice{margin-top:0}
.victory #letter-title{margin:10px 0 10px}
@media(max-width:700px){body.playing .topbar{display:block;top:max(12px,env(safe-area-inset-top))}body.playing .brand{line-height:36px}body.playing .top-actions{justify-content:center;flex-wrap:wrap;margin-top:6px}body.playing .top-actions #map-toggle{position:absolute;right:0;top:0}body.playing .top-actions .pill{min-height:34px;padding:5px 7px;font-size:10px}body.playing .counter,body.playing .ballot-status{top:112px}}

/* Clean wish/paired-seat screenshots on every screen size. Dialogs remain usable. */
body.playing:is(.paired-photo,.wish-photo) :is(.topbar,.counter,.ballot-status,.wish-interaction,.pickup-toast,.controls,.keyboard,#sit-bench,#read-water-wish){display:none}
body.playing.wish-photo #companion-cinematic{background:none}
body.playing.wish-photo #companion-cinematic p{visibility:hidden}

/* Hidden wishes keep native text editing available inside the locked game UI. */
#hidden-wish-dialog{max-height:calc(100dvh - 32px);overflow:auto}
#hidden-wish-dialog label{display:block;margin:16px 0 8px;font-weight:bold}
#hidden-wish-dialog #hidden-wish-help{display:block;margin:0;font-size:15px;line-height:1.7;text-align:center}
#hidden-wish-dialog #submit-hidden-wish,#hidden-wish-dialog #cancel-hidden-wish{font-size:15px;font-weight:700}
#vote-dialog #cancel-vote{font-size:15px}
#hidden-wish-done #close-hidden-wish-done{font-size:15px}
#hidden-wish-text{box-sizing:border-box;width:100%;margin-top:16px;min-height:150px;max-height:35dvh;resize:vertical;padding:14px;border:1px solid #b8baca;border-radius:12px;background:#fffdf6;color:#212355;font:16px/1.7 Dotum,돋움,sans-serif;user-select:text;-webkit-user-select:text;-webkit-touch-callout:default;touch-action:auto}
#hidden-wish-length{text-align:right;font-size:12px}#hidden-wish-error{color:#8c4436;overflow-wrap:anywhere}
#hidden-wish-error:empty{display:none}
#hidden-wish-error.is-info{color:#fff}
#companion-cinematic{position:fixed;inset:0;z-index:40;pointer-events:all;display:flex;align-items:flex-end;justify-content:center;background:linear-gradient(transparent 70%,#15152d77);padding:0 20px max(40px,env(safe-area-inset-bottom));box-sizing:border-box}
#companion-cinematic p{color:#fff9e8;background:#222447c9;border-radius:30px;padding:14px 24px;text-align:center}
#companion-fade{position:fixed;inset:0;background:#17192b;pointer-events:none;z-index:41;opacity:0}
body.companion-scene .topbar,body.companion-scene .controls,body.companion-scene .keyboard,body.companion-scene .ballot-status,body.companion-scene .wish-interaction,body.companion-scene .sit-bench{visibility:hidden}

/* Keep the mobile progress chips grouped with the map control. */
@media(max-width:700px){
  body.playing .topbar{display:flex;align-items:flex-start;gap:10px}
  body.playing .brand{flex:0 0 auto;white-space:nowrap}
  body.playing .ballot-status,body.playing .counter{top:calc(max(12px,env(safe-area-inset-top)) + 42px)}
  body.playing .top-actions{flex:1;min-width:0;max-width:calc(100% - 130px);justify-content:flex-end;flex-wrap:wrap;gap:4px;margin-top:0}
  body.playing .top-actions #map-toggle{position:static;right:auto;top:auto}
  body.playing .top-actions .pill{padding-inline:6px;font-size:10px;letter-spacing:-.2px}
}
/* Use the same translucent blue for the HUD actions in every button state. */
:root{--hud-action-bg:rgb(28 79 128 / 70%)}
.top-actions{--hud-action-bg:rgb(28 79 128 / 55%)}
.top-actions .pill,.top-actions .pill:hover,.top-actions .pill:active,
.top-actions #map-toggle,.top-actions #map-toggle:hover,.top-actions #map-toggle[aria-pressed=true],
.jump,.jump:active,.run-button,.run-button[aria-pressed=true]{background:var(--hud-action-bg);border-color:rgb(20 56 90 / 80%);color:#fff;text-shadow:none}
#stick{background:rgb(255 255 255 / 60%)}
.intro .new-walk{background:#fff;color:var(--text-primary);border-color:#fff}
.intro .new-walk:hover{background:#f2f8ff;border-color:#f2f8ff}

/* Shared wishes keep the existing paper and blue-button language. */
.wish-consent{display:flex!important;align-items:flex-start;gap:10px;margin:12px 0 6px;line-height:1.55;cursor:pointer;font-size:14px}
.wish-consent input{width:20px!important;height:20px!important;flex:0 0 20px;margin:2px 0 0;accent-color:#557697}
.water-wish-action{position:fixed;left:50%;bottom:180px;transform:translateX(-50%);z-index:12;white-space:nowrap;background:var(--hud-action-bg);color:#fff;border-color:rgb(20 56 90 / 80%)}
.water-wish-action small{margin-left:6px;opacity:.65}
.water-wish-paper{text-align:left;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.85;background:#162640;color:var(--text-primary);border:1px solid var(--ui-border);border-radius:16px;padding:20px;max-height:45dvh;overflow-y:auto;user-select:text;-webkit-user-select:text}
.water-wish-dialog{max-height:calc(100dvh - 28px);overflow-y:auto}
@media(max-height:500px){.water-wish-action{bottom:100px}.water-wish-paper{max-height:30dvh;padding:12px}.water-wish-dialog h2{margin:8px 0}.water-wish-dialog .vote-actions{margin-top:12px}}
