@font-face{font-family:SUIT;src:url('./assets/SUIT-Regular.otf');font-display:swap}
:root{--page-gutter:clamp(16px,3vw,22px);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--control-height:32px;--choice-height:32px;--section-gap:12px;--field-gap:7px;--surface:#19202ae8;--sheet:#1b2029;--text:#f5f2ed;--muted:#c6bdcb;--stroke:#ffffff24;--selected:#b79ac641;--focus:#dbc4e5;--action-height:42px}
*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;min-height:100%;background:#0b1323;color:var(--text);font:13px SUIT,system-ui}#stage{position:fixed;inset:0;touch-action:none}canvas{display:block;width:100%;height:100%}button,select,input{font:inherit;color:inherit}
/* Shared control, panel, segmented choice and sheet components. */
.camp-control{display:inline-flex;align-items:center;justify-content:center;min-height:var(--control-height);padding:6px 12px;border:0;border-radius:999px;background:transparent;font-size:11px;line-height:16px;white-space:nowrap;cursor:pointer}.camp-control[aria-pressed=true]{background:var(--selected)}.camp-control:disabled{opacity:.55;cursor:default}.camp-control:focus-visible,select:focus-visible,input:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--focus);outline-offset:3px}.camp-panel{background:var(--surface);border:1px solid var(--stroke);border-radius:24px;backdrop-filter:blur(12px);box-shadow:0 3px 20px #0001}.camp-choice-group{display:flex;gap:6px;width:max-content;max-width:100%;flex-wrap:wrap}.camp-choice-group .camp-control{flex:0 0 auto;min-height:var(--choice-height);padding:6px 14px}.settings-section{display:grid;gap:var(--field-gap);width:100%;min-width:0}
header{position:fixed;top:max(16px,env(safe-area-inset-top));left:max(var(--page-gutter),env(safe-area-inset-left));right:max(var(--page-gutter),env(safe-area-inset-right));display:grid;grid-template-columns:auto minmax(0,1fr) 44px;gap:14px;align-items:center;pointer-events:none}#orvit-download{pointer-events:auto;display:inline-flex;align-items:center;min-height:44px;border-radius:6px;text-decoration:none}header img{display:block;width:76px;height:auto;filter:drop-shadow(0 1px 4px #0005)}#clock-label{min-width:0;text-align:center;font-size:10px;line-height:1.45;overflow-wrap:anywhere;text-shadow:0 1px 5px #0009}#settings-open{pointer-events:auto;width:44px;padding:8px;font-size:20px}
#actions{position:fixed;bottom:max(var(--page-gutter),env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;flex-wrap:wrap;justify-content:center;gap:3px;padding:4px;max-width:calc(100vw - 160px);width:max-content}#zoom{position:fixed;right:max(var(--page-gutter),env(safe-area-inset-right));bottom:max(var(--page-gutter),env(safe-area-inset-bottom));display:grid;border-radius:18px;padding:3px}#zoom .camp-control{display:grid;place-items:center;width:36px;height:36px;min-height:36px;padding:0;font-size:20px;line-height:1}#zoom #sky-view,#zoom #turn-to{width:36px;font-size:10px}#fire-sound-toggle{position:fixed;left:max(var(--page-gutter),env(safe-area-inset-left));bottom:max(var(--page-gutter),env(safe-area-inset-bottom));font-size:10px}
#status{position:fixed;bottom:92px;left:50%;transform:translateX(-50%);padding:6px 12px;border-radius:16px;background:#1720298c;text-align:center;pointer-events:none;font-size:10px;line-height:15px;max-width:calc(100vw - 160px);width:max-content}#hint{position:fixed;bottom:128px;left:var(--page-gutter);right:var(--page-gutter);margin:0;text-align:center;font-size:10px;line-height:15px;color:#f0ece3;text-shadow:0 1px 4px #000;pointer-events:none;animation:hint-fade 2s 12s forwards}body[data-in-tent=true] #hint{display:none}
.camp-sheet{position:fixed;inset:0;margin:auto;width:min(320px,calc(100vw - 32px));max-height:calc(100dvh - 32px);height:max-content;background:var(--sheet);color:var(--text);border:1px solid var(--stroke);border-radius:22px;padding:18px;overflow-y:auto;overflow-x:hidden;box-shadow:0 20px 70px #0005}.camp-sheet[open]{display:flex;flex-direction:column;gap:var(--section-gap)}.camp-sheet::backdrop{background:#070b1255;backdrop-filter:blur(5px)}.camp-sheet h2{font-size:16px;font-weight:500;line-height:22px;margin:0;padding-right:32px}.camp-sheet h3{font-size:11px;font-weight:400;line-height:14px;margin:0;color:var(--muted)}#settings-close{position:absolute;right:10px;top:10px;width:40px;height:40px;min-height:40px;padding:0;font-size:20px}#clock-panel{display:grid;gap:var(--field-gap);width:100%;min-width:0}
.camp-select{display:block;box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:36px;min-height:36px;margin:0;padding:9px 34px 9px 12px;line-height:16px;font-size:11px;border:1px solid #ffffff1c;border-radius:12px;-webkit-appearance:none;appearance:none;background-color:#282c36;background-image:linear-gradient(45deg,transparent 50%,#c7bdce 50%),linear-gradient(135deg,#c7bdce 50%,transparent 50%);background-position:calc(100% - 19px) 50%,calc(100% - 14px) 50%;background-size:5px 5px;background-repeat:no-repeat}
.sound-level{display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px;align-items:center;min-height:24px}.sound-level label{font-size:11px;color:#e2dce6}#fire-volume{display:block;width:100%;min-width:0;height:24px;margin:0;accent-color:#c2a8cc}.quiet-sounds-row{display:flex;gap:8px;align-items:center;min-height:24px;margin:0;font-size:11px;line-height:16px}#quiet-sounds{width:14px;height:14px;margin:0;accent-color:#c2a8cc}#moon-info{display:grid;gap:5px;border-top:1px solid #ffffff15;padding-top:12px;margin:0;font-size:10px;line-height:14px;color:var(--muted)}#moon-details summary{cursor:pointer;line-height:16px}#moon-details p{margin:6px 0 0}#moon-details a{display:inline-block;margin-top:4px;color:inherit}#moon-details #full-moon{margin:8px 0 0;padding:5px 0;min-height:26px;border-radius:8px;justify-content:flex-start;font-size:10px}
#visitor-name{position:fixed;transform:translate(-50%,-100%);padding:3px 6px;border-radius:8px;background:#11192355;color:#f1e7f2;font-size:9px;line-height:13px;pointer-events:none;white-space:nowrap}#stage::after{content:"";position:absolute;inset:0;background:#000;opacity:0;pointer-events:none;transition:opacity .7s}#stage[data-tent-dark=true]::after{opacity:.18}#error{position:fixed;inset:30% 15%;text-align:center;background:#17191f;padding:30px;border-radius:20px}@keyframes hint-fade{to{opacity:0}}
@media(max-width:680px){header{gap:10px}header img{width:66px}#clock-label{font-size:9px}#actions{max-width:calc(100vw - var(--page-gutter)*2);bottom:max(16px,env(safe-area-inset-bottom))}#actions .camp-control{padding:6px 11px;font-size:10px}#fire-sound-toggle,#zoom{bottom:calc(var(--action-height) + 28px)}#zoom .camp-control,#zoom #sky-view,#zoom #turn-to{width:36px}#status{bottom:calc(var(--action-height) + 92px);font-size:9px;line-height:14px;max-width:calc(100vw - 140px)}#hint{bottom:calc(var(--action-height) + 132px);padding:0 25px}body[data-in-tent=true]{--action-height:78px}body[data-in-tent=true] #actions{width:calc(100vw - var(--page-gutter)*2)}body[data-in-tent=true] #actions .camp-control{flex:1 0 28%;padding:6px 8px}}
@media(max-height:700px){.camp-sheet{padding:18px}.camp-sheet[open]{--section-gap:12px}}
@media(max-height:600px){.camp-sheet{padding:16px}.camp-sheet[open]{--section-gap:10px}}
@media(prefers-reduced-motion:reduce){#stage::after{transition:none}#hint{animation:none}}
.camp-wait-sheet h2{padding:0}.camp-wait-sheet p{margin:0;font-size:12px;line-height:1.7;color:var(--muted)}.camp-wait-sheet .camp-control{background:var(--selected);white-space:normal;min-height:36px}body[data-camp-role=waiting] #actions,body[data-camp-role=offered] #actions,body[data-camp-role=connecting] #actions,body[data-camp-role=unavailable] #actions{display:none}.camp-remote-name{position:fixed;transform:translate(-50%,-100%);padding:3px 6px;border-radius:8px;background:#11192355;color:#f1e7f2;font-size:9px;pointer-events:none;white-space:nowrap}

.camp-capacity-note{font-size:10px;line-height:1.5;color:#b7afb9;margin:10px 0 0;text-align:center;}

/* In-app browsers can change their viewport after first paint. Never keep a stale inline canvas height. */
#stage>canvas{position:absolute;inset:0;width:100%!important;height:100%!important;display:block;}

.camp-remote-name{border:0;font-family:inherit;cursor:pointer;pointer-events:auto;}
.camp-dialog-close{position:absolute;right:9px;top:8px;width:38px;min-height:38px;padding:0;font-size:20px;}
.camp-chat-sheet h2{padding-right:32px}.camp-chat-sheet p{margin:0;font-size:11px;line-height:1.6;color:var(--muted)}
#camp-chat-choices{display:grid;gap:8px}.camp-chat-choice{background:#ffffff0b;border:1px solid var(--stroke);border-radius:13px;min-height:46px;padding:10px 12px;text-align:left;justify-content:flex-start;white-space:normal;}
.camp-chat-note{font-size:10px!important}#camp-warm-message{position:fixed;left:50%;top:100px;transform:translateX(-50%);max-width:min(290px,calc(100vw - 48px));padding:14px 18px;z-index:5;text-align:center;pointer-events:none;}#camp-warm-message small{font-size:9px;color:var(--muted)}#camp-warm-message p{margin:6px 0 0;font-size:12px;line-height:1.6;}
#grass-actions{position:fixed;left:50%;bottom:calc(var(--action-height) + 28px);transform:translateX(-50%);display:flex;gap:3px;padding:4px;max-width:calc(100vw - 148px);}#grass-actions .camp-control{font-size:10px;padding:6px 9px;}
body[data-camp-role=waiting] #grass-actions,body[data-camp-role=offered] #grass-actions,body[data-camp-role=connecting] #grass-actions{display:none;}

/* The Moon is a temporary close view; it does not change camp time or claim a spot. */
#wish-moon-view{position:fixed;inset:0;z-index:50;pointer-events:none;color:#f4eee5;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:calc(44px + env(safe-area-inset-top)) 24px calc(48px + env(safe-area-inset-bottom));box-sizing:border-box}
#wish-moon-view[hidden]{display:none}
#wish-moon-view .wish-heading{max-width:360px}
#wish-moon-view h1{font-size:22px;font-weight:400;letter-spacing:0;margin:0 0 12px}
#wish-moon-phase{font-size:13px;margin:0;color:#c4c8d4}
#wish-moon-view .wish-view-label{font-size:11px;color:#929bab;line-height:1.5;margin:8px 0 0}
#wish-back{pointer-events:auto;padding:13px 25px;min-height:44px}
body[data-moon-view=true] header,body[data-moon-view=true] #actions,body[data-moon-view=true] #grass-actions,body[data-moon-view=true] #status,body[data-moon-view=true] #hint,body[data-moon-view=true] #visitor-name,body[data-moon-view=true] .camp-remote-name,body[data-moon-view=true] #camp-warm-message{visibility:hidden!important;pointer-events:none!important}
body[data-moon-view=true] #fire-sound-toggle{z-index:51}
@media(max-height:540px){#wish-moon-view{padding-top:26px;padding-bottom:24px}#wish-moon-view h1{font-size:18px}}

body[data-walk-view=first-person] #zoom,body[data-walk-view=first-person] #visitor-name{display:none!important}

#ambient-choice{margin-bottom:12px}

#music-toggle{min-height:40px;margin:8px 0 12px;font-size:12px;text-align:left}

#stage canvas{filter:brightness(var(--camp-brightness,1))}

#reading-view{font-size:10px!important;white-space:normal!important;line-height:1.3;max-width:54px}body[data-reading-view=book] #visitor-name{display:none!important}

body[data-moon-view=true] #zoom{z-index:51;visibility:visible!important;pointer-events:auto!important}body[data-moon-view=true] #reading-view,body[data-moon-view=true] #turn-to,body[data-moon-view=true] #sky-view{display:none!important}
/* Korean labels stay readable inside the same compact controls. */
html[lang=ko] .camp-sheet,html[lang=ko] #status,html[lang=ko] #hint{word-break:keep-all;overflow-wrap:anywhere;letter-spacing:0}
html[lang=ko] #zoom #sky-view,html[lang=ko] #zoom #reading-view,html[lang=ko] #zoom #turn-to{white-space:normal;word-break:keep-all;line-height:1.25;font-size:10px;width:40px}

html:not([data-camp-language-ready]) #actions,html:not([data-camp-language-ready]) #zoom,html:not([data-camp-language-ready]) #status,html:not([data-camp-language-ready]) #hint,html:not([data-camp-language-ready]) #fire-sound-toggle,html:not([data-camp-language-ready]) #settings-open,html:not([data-camp-language-ready]) #clock-label{visibility:hidden}

/* At the bath entrance the preparation control sits directly below its instruction. */
#bath-entry-prompt{position:fixed;left:50%;bottom:calc(var(--action-height) + 28px);transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 12px;max-width:calc(100vw - 148px);width:max-content;z-index:4}
#bath-entry-prompt #status{position:static;transform:none;padding:0;background:none;border-radius:0;width:auto;max-width:100%;font-size:10px;line-height:1.5}
#bath-entry-prompt .camp-control{font-size:11px;min-height:36px;padding:6px 16px;background:var(--selected)}

#sleep-timer-section{border-top:1px solid var(--stroke);padding-top:12px}#sleep-timer-section .sleep-timer-row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:30px}#sleep-timer-status{font-size:12px;font-variant-numeric:tabular-nums;color:var(--muted);line-height:1.5}#sleep-timer-section[data-state=active] #sleep-timer-status{color:var(--text)}#sleep-timer-cancel{font-size:11px;background:var(--selected);padding:6px 12px}#sleep-timer-note{margin:0;color:var(--muted);font-size:10px;line-height:1.6}

#camp-update-notice{position:fixed;z-index:20;top:calc(env(safe-area-inset-top,0px) + 82px);left:50%;transform:translateX(-50%);width:min(340px,calc(100vw - 32px));padding:14px;box-sizing:border-box}#camp-update-notice p{font-size:12px;line-height:1.6;margin:0 0 8px}#camp-update-notice button{font-size:11px;margin-right:6px;padding:8px 12px}
.nickname-row{display:flex;gap:8px;align-items:center}.nickname-row input{min-width:0;flex:1;width:0;text-align:left}.nickname-row button{flex:none;font-size:11px;padding:8px 12px;background:var(--selected)}#nickname-note,#nickname-status{font-size:10px;line-height:1.6;color:var(--muted);margin:7px 0 0}#nickname-status:empty{display:none}#tent-sleep-settings{width:min(340px,calc(100vw - 32px))}#tent-sleep-close{float:right;font-size:11px;padding:6px 10px}#tent-sleep-settings #sleep-timer-section{clear:both;border-top:0;padding-top:8px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}

#camp-camera{position:absolute;right:66px;top:0;width:40px;height:36px;padding:8px;display:flex;align-items:center;justify-content:center}#camp-photo-preview{width:min(420px,calc(100vw - 32px))}#camp-photo-image{display:block;max-width:100%;max-height:52dvh;margin:12px auto;border-radius:12px;object-fit:contain}#camp-photo-image:not([src]){display:none}.camp-photo-actions{display:flex;flex-wrap:wrap;gap:8px}.camp-photo-actions .camp-control{padding:9px 12px;font-size:12px;text-decoration:none;text-align:center;background:var(--selected)}#camp-photo-note,#camp-photo-status{font-size:11px;line-height:1.6;color:var(--muted);margin:12px 0 0}#camp-sent-message{position:fixed;top:calc(env(safe-area-inset-top,0px) + 82px);left:50%;transform:translateX(-50%);width:min(310px,calc(100vw - 32px));padding:12px 16px;box-sizing:border-box;z-index:6;font-size:12px;line-height:1.5}#camp-sent-message strong{font-weight:500}#camp-sent-message p{margin:6px 0}#camp-sent-message small,#camp-chat-send-status{font-size:11px;color:var(--muted);line-height:1.6}#camp-chat-send-status:empty{display:none}

#camp-photo-modes{margin:6px 0 10px}#camp-photo-modes button{padding:7px 12px;font-size:11px}#camp-photo-shoot{background:var(--selected);width:100%;min-height:38px;margin-bottom:10px}.camp-photo-actions[hidden]{display:none!important}
/* Reserve a real header cell for the camera, including touch input on narrow phones. */
header{grid-template-columns:auto minmax(0,1fr) 36px 44px;gap:8px}#settings-open{grid-column:4;grid-row:1}#camp-camera{position:static;grid-column:3;grid-row:1;pointer-events:auto;width:36px;height:36px;padding:8px}
/* Independent, always-visible camera control. */
header{grid-template-columns:auto minmax(0,1fr) 44px 44px}
#camp-camera{width:44px;height:44px;padding:0;font-size:23px;line-height:1;background:#28313deb;border-color:#c7cbd04d;box-shadow:0 2px 8px #0003}
#camp-camera:focus-visible{outline:2px solid #e0cde7;outline-offset:3px}
/* Compact menu uses the existing myorvit.com card, text and accent colors. */
#camp-kitchen{position:fixed;inset:auto 0 0;margin:0 auto;width:min(600px,100%);height:min(50dvh,360px);max-height:50dvh;border-radius:20px 20px 0 0;padding:12px 14px max(9px,env(safe-area-inset-bottom));border:1px solid #2a2a3c;color:#fff;background:#1a1818;overflow:hidden;box-shadow:0 -6px 28px #0004}
#camp-kitchen[open]{display:flex;flex-direction:column;gap:0}
#camp-kitchen::backdrop{background:#0003;backdrop-filter:none}
#camp-kitchen h2{font-size:15px;line-height:20px;margin:0;padding-right:30px;font-weight:500}
#camp-kitchen .kitchen-close{position:absolute;right:10px;top:6px;color:#c7c7d4;background:transparent;width:36px;height:36px;min-height:36px;padding:0;font-size:22px}
#camp-kitchen .kitchen-wallet{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:4px 0 0;line-height:19px}
#camp-kitchen .kitchen-wallet span{font-size:10px;color:#a9a9b8}
#camp-kitchen .kitchen-wallet strong{font-size:15px;font-weight:500;color:#d4c8eb}
#camp-kitchen .kitchen-note{font-size:9px;line-height:14px;margin:3px 0 0;color:#a9a9b8}
#camp-kitchen #kitchen-tabs{display:flex;margin:5px 0 0;gap:5px;flex-shrink:0}
#camp-kitchen #kitchen-tabs button{padding:3px 9px;font-size:10px;min-height:26px;line-height:16px;background:#ffffff0c;color:#c7c7d4}
#camp-kitchen #kitchen-tabs [aria-pressed=true]{background:#c4b3e0;color:#1a1818}
#camp-kitchen #kitchen-feedback{font-size:10px;line-height:15px;margin:3px 0;color:#d4c8eb;flex-shrink:0}
#camp-kitchen #kitchen-menu{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px;padding:0 0 2px;overflow-y:auto;flex:1;min-height:45px;align-content:start}
#camp-kitchen .kitchen-item{display:grid;grid-template-columns:32px minmax(0,1fr);grid-template-rows:auto auto;gap:0 6px;min-height:44px;padding:3px 0;border:0;border-bottom:1px solid #ffffff0c;background:transparent;text-align:left;color:inherit;font:inherit;cursor:pointer;align-content:center}
#camp-kitchen .kitchen-item:disabled{opacity:.43;cursor:default}
#camp-kitchen .kitchen-item:focus-visible{outline:2px solid #c4b3e0;outline-offset:-1px;border-radius:5px}
#camp-kitchen .kitchen-photo{grid-row:1/3;width:32px;height:32px;aspect-ratio:1;background-image:url('./assets/kitchen/menu-ink-atlas-small-v2.png');background-size:400% 200%;border-radius:5px;align-self:center}
#camp-kitchen .kitchen-item h3{font-size:10px;line-height:13px;min-height:0;margin:0;font-weight:500;color:#f4f1f0;align-self:end}
#camp-kitchen .kitchen-price{font-size:9px;line-height:13px;color:#c4b3e0}
#camp-kitchen #kitchen-current{margin:2px 0 4px;padding:5px 7px;border:1px solid #c4b3e055;flex-shrink:0;border-radius:9px}
#camp-kitchen #kitchen-current strong{font-size:10px;font-weight:500}
#camp-kitchen #kitchen-current p{font-size:9px;line-height:14px;display:inline-block;margin:3px 0 3px 7px;color:#c7c7d4}
#camp-kitchen #kitchen-current button{font-size:9px;padding:3px 8px;min-height:24px;background:#c4b3e025;color:#d4c8eb;margin-right:6px}
#camp-kitchen #kitchen-current button:first-of-type{margin-left:8px}
#kitchen-about{flex-shrink:0;font-size:9px;color:#a9a9b8;margin:3px 0 0;max-height:64px;overflow:auto}
#kitchen-about summary{cursor:pointer}
#camp-kitchen .kitchen-grant,#camp-kitchen .kitchen-browser{font-size:9px;line-height:13px;margin:4px 0;color:#a9a9b8}
#camp-kitchen #kitchen-retry{font-size:10px;background:#c4b3e025;color:#d4c8eb;padding:3px 8px}
@media(max-width:340px){#camp-kitchen{padding-left:12px;padding-right:12px}#camp-kitchen #kitchen-menu{gap:0 8px}}
/* Prevent remote labels and restored Safari zoom from panning the whole camp. */
html,body{width:100%;height:100%;overflow:hidden;overscroll-behavior:none}body{position:fixed;inset:0}
header{left:calc(max(var(--page-gutter),env(safe-area-inset-left)) + var(--camp-viewport-left,0px));right:calc(max(var(--page-gutter),env(safe-area-inset-right)) + var(--camp-viewport-right,0px));top:calc(max(16px,env(safe-area-inset-top)) + var(--camp-viewport-top,0px))}
#actions{left:calc(var(--camp-viewport-left,0px) + var(--camp-viewport-width,100vw)/2);bottom:calc(max(16px,env(safe-area-inset-bottom)) + var(--camp-viewport-bottom,0px));max-width:calc(var(--camp-viewport-width,100vw) - var(--page-gutter)*2)}
#zoom{right:calc(max(var(--page-gutter),env(safe-area-inset-right)) + var(--camp-viewport-right,0px));bottom:calc(var(--action-height) + 28px + var(--camp-viewport-bottom,0px))}
#fire-sound-toggle{left:calc(max(var(--page-gutter),env(safe-area-inset-left)) + var(--camp-viewport-left,0px));bottom:calc(var(--action-height) + 28px + var(--camp-viewport-bottom,0px))}
#grass-actions{left:calc(var(--camp-viewport-left,0px) + var(--camp-viewport-width,100vw)/2);bottom:calc(var(--action-height) + 28px + var(--camp-viewport-bottom,0px));max-width:calc(var(--camp-viewport-width,100vw) - 148px)}
#status{left:calc(var(--camp-viewport-left,0px) + var(--camp-viewport-width,100vw)/2);bottom:calc(var(--action-height) + 92px + var(--camp-viewport-bottom,0px));max-width:calc(var(--camp-viewport-width,100vw) - 140px)}
#hint{left:calc(var(--camp-viewport-left,0px) + var(--camp-viewport-width,100vw)/2);bottom:calc(var(--action-height) + 132px + var(--camp-viewport-bottom,0px));width:var(--camp-viewport-width,100vw)}
.camp-sheet{max-height:calc(var(--camp-viewport-height,100dvh) - 32px);inset:var(--camp-viewport-top,0px) var(--camp-viewport-right,0px) var(--camp-viewport-bottom,0px) var(--camp-viewport-left,0px)}
#camp-kitchen{inset:auto var(--camp-viewport-right,0px) var(--camp-viewport-bottom,0px) var(--camp-viewport-left,0px);height:min(calc(var(--camp-viewport-height,100dvh)/2),360px);max-height:calc(var(--camp-viewport-height,100dvh)/2);width:min(600px,calc(var(--camp-viewport-width,100vw) - 32px))}
@media(max-width:680px){.camp-sheet input:not([type=range]):not([type=checkbox]),.camp-sheet select,.camp-sheet textarea{font-size:16px;line-height:22px}.nickname-row input{font-size:16px}.camp-sheet input:not([type=range]):not([type=checkbox]),.camp-sheet select{min-height:36px}body[data-in-tent=true] #actions{width:calc(var(--camp-viewport-width,100vw) - var(--page-gutter)*2)}}
#hint{left:var(--camp-viewport-left,0px);right:auto}.camp-sheet .camp-select{padding-top:6px;padding-bottom:6px}
#camp-chef-bubble{position:fixed;transform:translate(-50%,-100%);z-index:5;pointer-events:none;font-size:12px;line-height:18px;padding:9px 14px;white-space:nowrap;color:#f5f2ed;background:#1a1818e8;border-color:#c4b3e077}#camp-chef-bubble::after{content:'';position:absolute;left:50%;bottom:-5px;width:8px;height:8px;background:#1a1818;transform:translateX(-50%) rotate(45deg);border-right:1px solid #c4b3e077;border-bottom:1px solid #c4b3e077}#camp-use-food{background:#c4b3e025;color:#d4c8eb}
#bath-greetings{width:min(320px,calc(var(--camp-viewport-width,100vw) - 32px))}#bath-greetings h2{font-size:15px}.bath-greeting-note,#bath-greeting-status{font-size:11px;line-height:1.6;margin:0;color:#c6bdcb}#bath-greeting-people{display:flex;flex-wrap:wrap;gap:6px}#bath-greeting-people button{background:#c4b3e015;font-size:11px;padding:7px 11px}#bath-greeting-people [aria-pressed=true]{background:#c4b3e045}#bath-greeting-emojis{display:flex;gap:10px;justify-content:center}#bath-greeting-emojis button{font-size:30px;min-height:54px;min-width:64px;background:#ffffff08}#bath-greeting-emojis button:disabled{opacity:.35}.camp-flying-emoji{position:fixed;transform:translate(-50%,-50%);z-index:7;font-size:34px;line-height:1;pointer-events:none;filter:drop-shadow(0 2px 5px #0006)}

.camp-private-chat-bubble{position:fixed;transform:translate(-50%,-100%);z-index:7;pointer-events:none;width:max-content;max-width:190px;padding:9px 12px;border-radius:14px;background:#f5f0ffef;color:#2c2338;box-shadow:0 3px 15px #0003;font-size:12px;line-height:1.5;text-align:center}.camp-private-chat-bubble:after{content:"";position:absolute;bottom:-6px;left:calc(50% - 6px);border:6px solid transparent;border-bottom:0;border-top-color:#f5f0ffef}.camp-private-chat-bubble small{display:block;font-size:9px;color:#665776;margin-bottom:3px}.camp-private-chat-bubble span{display:block}.camp-emoji-arrived{background:#faf5ffee;padding:8px;border-radius:18px;filter:drop-shadow(0 2px 5px #0004)}

.camp-private-chat-bubble[data-offscreen=true]:after{display:none}
/* Keep social choices low and compact so the person and camp remain visible. */
.camp-chat-sheet,#bath-greetings{inset:auto;left:calc(50% + (var(--camp-viewport-left,0px) - var(--camp-viewport-right,0px))/2);bottom:calc(var(--camp-viewport-bottom,0px) + max(12px,env(safe-area-inset-bottom)));transform:translateX(-50%);margin:0;width:min(340px,calc(var(--camp-viewport-width,100vw) - 32px));max-height:min(220px,calc(var(--camp-viewport-height,100dvh) - 28px));padding:12px 14px;border-radius:17px;background:#1b2029f5;box-shadow:0 5px 24px #0004}
.camp-chat-sheet[open],#bath-greetings[open]{gap:7px}.camp-chat-sheet::backdrop,#bath-greetings::backdrop{background:#0000000a;backdrop-filter:none}
.camp-chat-sheet .camp-dialog-close,#bath-greetings .camp-dialog-close{top:4px;right:5px;min-height:30px;width:30px;font-size:18px}.camp-chat-sheet h2,.camp-chat-sheet .camp-chat-note,#bath-greetings .bath-greeting-note{display:none}.camp-chat-sheet #camp-chat-recipient{font-size:11px;line-height:18px;padding-right:26px}#camp-chat-choices{gap:4px}#camp-chat-choices .camp-chat-choice{min-height:36px;padding:7px 10px;font-size:11px;line-height:16px;border-radius:10px}#bath-greetings h2{font-size:12px;line-height:18px}#bath-greeting-people{flex-wrap:nowrap;overflow-x:auto;flex-shrink:0;padding-bottom:1px}#bath-greeting-people button{flex-shrink:0;min-height:32px;padding:5px 10px;font-size:11px}#bath-greeting-emojis{gap:8px}#bath-greeting-emojis button{min-height:44px;min-width:54px;font-size:27px;padding:5px 10px}#bath-greeting-status:empty{display:none}
.camp-private-chat-bubble{max-width:175px;padding:7px 10px;font-size:11px;line-height:1.45}.camp-private-chat-bubble small{font-size:8px;margin-bottom:2px}

#bath-greetings[data-empty=true] .bath-greeting-note{display:block;font-size:11px;line-height:17px}

#stage canvas{transition:filter var(--camp-dim-duration,.5s) ease var(--camp-dim-delay,0s)}#stage[data-tent-dark=true][data-tent-dim-managed=true]::after{opacity:0}

#camp-food-actions{position:fixed;left:calc(50% + (var(--camp-viewport-left,0px) - var(--camp-viewport-right,0px))/2);transform:translateX(-50%);bottom:calc(var(--camp-viewport-bottom,0px) + var(--action-height,42px) + 68px);display:flex;gap:8px;z-index:5;max-width:calc(var(--camp-viewport-width,100vw) - 40px)}#camp-food-actions button{min-height:40px;padding:9px 16px;font-size:12px;background:#c4b3e0;color:#211c2a;box-shadow:0 3px 15px #0003}body[data-has-camp-food=true] #status{bottom:calc(var(--camp-viewport-bottom,0px) + var(--action-height,42px) + 118px)}#camp-kitchen #kitchen-empty-money{margin:0;font-size:11px;line-height:16px;color:#d4c8eb}#camp-kitchen #kitchen-current{padding:2px 6px}#camp-kitchen .kitchen-order-row{display:flex;gap:5px;align-items:center;min-height:28px}#camp-kitchen .kitchen-order-row strong{font-size:9px;min-width:56px}#camp-kitchen .kitchen-order-status{flex:1;font-size:9px;color:#c7c7d4}#camp-kitchen .kitchen-order-row button{margin:0!important;min-height:26px;flex-shrink:0}

.camp-mini-notice{inset:auto;left:50%;bottom:calc(var(--camp-viewport-bottom,0px) + max(14px,env(safe-area-inset-bottom)));transform:translateX(-50%);margin:0;width:min(330px,calc(var(--camp-viewport-width,100vw) - 32px));padding:18px;border-radius:18px}.camp-mini-notice p{font-size:12px;line-height:1.7;margin:0;padding-right:18px}.camp-mini-notice #bath-food-okay{background:#c4b3e0;color:#211c2a;min-height:36px}.camp-mini-notice small:empty{display:none}.camp-mini-notice::backdrop{backdrop-filter:none;background:#0002}
/* The lesson remains on the held 3D paper. Only navigation lives in the HUD. */
#camp-study-controls{position:fixed;inset:0;z-index:8;pointer-events:none;padding:calc(var(--safe-top,0px) + 74px) var(--page-gutter) calc(var(--safe-bottom,0px) + 20px);display:flex;flex-direction:column;justify-content:space-between;gap:12px}#camp-study-controls .camp-panel{pointer-events:auto;background:#20202ce8;border:1px solid #d8c9e333;box-shadow:0 8px 30px #0002}.study-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-radius:17px;max-width:480px;width:100%;align-self:center}.study-top div{min-width:0;display:grid;gap:3px}.study-top span{font-size:10px;color:var(--muted)}.study-top strong{font-size:12px;font-weight:400;line-height:18px}.study-top button{flex:none;font-size:10px;padding:6px 9px}.study-bottom{display:flex;justify-content:space-between;align-items:center;gap:10px;align-self:center;padding:7px 10px;border-radius:999px;max-width:380px;width:100%}.study-bottom span{font-size:11px;white-space:nowrap;color:var(--muted)}.study-bottom button{min-height:36px;min-width:86px;font-size:11px}.study-bottom button:disabled{opacity:.35}body[data-study-focus=true] #actions,body[data-study-focus=true] #grass-actions,body[data-study-focus=true] #camp-food-actions,body[data-study-focus=true] #status,body[data-study-focus=true] #hint,body[data-study-focus=true] #visitor-name,body[data-study-focus=true] #fire-sound-toggle,body[data-study-focus=true] #zoom,body[data-study-focus=true] .camp-remote-name{visibility:hidden!important}body[data-study-focus=true] header{pointer-events:none;opacity:.65}body[data-study-focus=true] header button{visibility:hidden}@media(max-height:500px){#camp-study-controls{padding-top:50px;padding-bottom:8px}.study-top{padding:5px 10px}.study-top strong{font-size:10px}.study-bottom{padding:3px 8px}.study-bottom button{min-height:28px}}

body[data-in-tent=true] #actions .camp-control{min-width:0;flex:1 1 calc(33.333% - 4px);white-space:normal;text-align:center;overflow-wrap:anywhere;line-height:16px}body[data-in-tent=true] #actions{justify-content:flex-start}

#study-book-choice{font-size:11px;line-height:16px;padding:4px 6px;min-height:26px;max-width:100%;width:100%;background:#ffffff0a;border:1px solid #d8c9e326;border-radius:7px}#study-book-choice option{background:#23202e;color:#f5f2ed}.study-top{min-height:54px}.study-top>div{flex:1}
/* Diary and recall use the same quiet, compact controls as the camp. */
#camp-diary-editor{position:fixed;z-index:9;left:50%;transform:translateX(-50%);width:min(480px,calc(100vw - 32px));padding:12px 14px max(12px,env(safe-area-inset-bottom));border-radius:18px 18px 0 0;overflow:auto;background:#20202cf5;display:grid;gap:7px}
.diary-heading,.diary-bottom,.diary-pages{display:flex;align-items:center;justify-content:space-between;gap:10px}.diary-heading label{font-size:12px}.diary-heading input{min-width:0;width:130px;background:transparent;border:1px solid var(--stroke);border-radius:7px;padding:5px;font-size:12px;color-scheme:dark}#diary-label{font-size:11px;color:var(--muted)}#diary-text,#review-answer{width:100%;min-width:0;color:var(--text);font:16px/1.6 SUIT,system-ui;background:#ffffff09;border:1px solid var(--stroke);border-radius:10px;padding:9px 10px;resize:vertical;max-height:150px}#diary-text:focus-visible,#review-answer:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.diary-bottom{align-items:flex-start}.diary-bottom p,.diary-bottom span{font-size:10px;line-height:1.5;margin:0;color:var(--muted)}.diary-bottom span{white-space:nowrap}.diary-pages{font-size:11px}.diary-pages .camp-control:disabled{opacity:.35}
body[data-diary-focus=true] #actions,body[data-diary-focus=true] #grass-actions,body[data-diary-focus=true] #camp-food-actions,body[data-diary-focus=true] #status,body[data-diary-focus=true] #hint,body[data-diary-focus=true] #visitor-name,body[data-diary-focus=true] #fire-sound-toggle,body[data-diary-focus=true] #zoom,body[data-diary-focus=true] .camp-remote-name{visibility:hidden!important}body[data-diary-focus=true] header button{visibility:hidden}body[data-diary-focus=true] header{pointer-events:none;opacity:.65}
#study-review{pointer-events:auto;align-self:center;width:min(380px,100%);padding:11px 13px;border-radius:16px;display:grid;gap:7px;margin-top:auto}#study-review strong{font-size:11px;font-weight:400;color:var(--muted)}#review-prompt{font-size:12px;line-height:1.5}#review-feedback{font-size:11px;line-height:1.5;margin:0;color:#dfd0ed}#review-feedback:empty{display:none}.review-actions{display:flex;gap:4px;flex-wrap:wrap}.review-actions .camp-control{font-size:11px;padding:5px 10px}#study-review small{font-size:9px;color:var(--muted);line-height:1.5}body[data-study-review=true] #camp-study-controls{gap:7px}body[data-study-review=true] .study-bottom{flex-shrink:0}#reading-view{white-space:normal!important;max-width:54px}
/* Inside a tent, My view is a context action, never a zoom control. */
body[data-in-tent=true] #zoom #zoom-in,body[data-in-tent=true] #zoom #zoom-out{display:none!important}body[data-in-tent=true] #zoom{padding:4px}body[data-in-tent=true] #zoom #sky-view{min-height:38px;width:46px;font-size:10px;white-space:normal;line-height:15px}
#camp-study-languages{position:fixed;inset:auto 0 max(22px,env(safe-area-inset-bottom));margin:0 auto;width:min(340px,calc(100vw - 32px));padding:16px;border:1px solid var(--stroke);color:var(--text);background:#20202cf5;box-shadow:0 8px 30px #0003}#camp-study-languages::backdrop{background:#0003}#study-language-title{font-size:13px;font-weight:400}#study-language-options{display:flex;gap:8px;margin:14px 0 6px}#study-language-options button{flex:1;min-height:40px;background:#ffffff09}#study-language-cancel{width:100%;color:var(--muted)}
body[data-reading-view=scene] #zoom #zoom-in,body[data-reading-view=scene] #zoom #zoom-out,body[data-reading-view=book] #zoom #zoom-in,body[data-reading-view=book] #zoom #zoom-out{display:none!important}
#study-speech-controls{display:flex;align-items:center;gap:3px;flex-wrap:wrap;margin-top:4px}#study-speech-controls .camp-control{min-height:28px;padding:3px 7px;font-size:10px;line-height:15px}#study-speech-controls small{flex-basis:100%;font-size:9px;color:var(--muted);line-height:1.45;max-width:240px}#study-speech-controls small:empty{display:none}.study-top>button{align-self:flex-start;margin-top:3px}
#study-language-inline{display:flex;gap:3px;flex-wrap:wrap;margin-top:3px}#study-language-inline .camp-control{min-height:25px;padding:2px 7px;font-size:10px;line-height:15px}#study-side-languages{display:flex;flex-direction:column;gap:2px;border-top:1px solid var(--stroke);padding-top:3px}#study-side-languages .camp-control{width:46px!important;min-height:26px;font-size:9px;padding:3px 2px}#study-side-languages .camp-control[aria-pressed=true]{background:#ffffff14}body[data-in-tent=true] #zoom #sky-view{width:46px}
body[data-diary-compact=true] #camp-diary-editor{padding:8px 12px;gap:5px;border-radius:14px 14px 0 0}body[data-diary-compact=true] #diary-date,body[data-diary-compact=true] #diary-label,body[data-diary-compact=true] .diary-pages{display:none}body[data-diary-compact=true] #diary-text{height:64px;min-height:56px;max-height:90px;padding:6px 8px;resize:none}body[data-diary-compact=true] .diary-heading .camp-control{min-height:26px;padding:3px 8px}body[data-diary-compact=true] .diary-bottom p{font-size:9px;line-height:12px}body[data-diary-compact=true] .diary-bottom span{font-size:9px;line-height:12px}
#camp-mini-book{position:fixed;z-index:4;right:calc(var(--page-gutter) + var(--camp-viewport-right,0px));bottom:calc(var(--action-height,42px) + 28px + var(--camp-viewport-bottom,0px));width:min(224px,calc(var(--camp-viewport-width,100vw) - 128px));height:min(210px,27dvh);padding:10px 12px;border-radius:15px;display:flex;flex-direction:column;gap:5px;background:#20202cf2}#camp-mini-book>div{display:flex;justify-content:space-between;gap:6px;align-items:flex-start}#camp-mini-book strong{font-size:10px;font-weight:400;line-height:15px;max-width:110px}#camp-mini-book .camp-control{font-size:9px;line-height:13px;min-height:26px;padding:2px 5px;white-space:normal;flex:none;max-width:65px}#mini-book-text{overflow:auto;flex:1;min-height:0;font-size:11px;line-height:1.65;overscroll-behavior:contain}#mini-book-text p{margin:0 0 7px;white-space:pre-wrap}#mini-book-text .translation,#mini-book-text .note{font-size:10px;color:var(--muted)}#mini-book-progress{font-size:9px;color:var(--muted)}body[data-mini-book=true] #zoom{bottom:calc(var(--action-height,42px) + 38px + min(210px,27dvh) + var(--camp-viewport-bottom,0px))}
#moon-wish-form{pointer-events:auto;position:absolute;left:50%;bottom:100px;transform:translateX(-50%);width:min(340px,calc(100vw - 32px));padding:13px 15px;border-radius:18px;display:grid;gap:7px;text-align:left;background:#182030e8}#moon-wish-form label{font-size:12px;line-height:18px}#moon-wish-text{font:16px/1.5 SUIT,system-ui;color:var(--text);background:#ffffff09;border:1px solid var(--stroke);border-radius:9px;width:100%;min-height:66px;max-height:100px;resize:none;padding:8px 10px}#moon-wish-send{background:var(--selected);min-height:34px}#moon-wish-status{font-size:11px;line-height:17px;margin:0;color:#dfd2e6}#moon-wish-status:empty{display:none}#moon-wish-private{font-size:9px;line-height:14px;color:var(--muted)}#moon-wish-flight{position:fixed;z-index:55;pointer-events:none;max-width:210px;white-space:pre-wrap;overflow-wrap:anywhere;text-align:center;font:12px/1.6 SUIT,system-ui;color:#fff4d4;background:#5e4b69cc;padding:12px 16px;border:1px solid #f6dca75c;border-radius:15px;box-shadow:0 0 25px #efd3a866;transform-origin:center}#wish-moon-view[data-wish-sent=true] .wish-heading{text-shadow:0 0 22px #e0d0a9aa}@media(max-height:600px){#moon-wish-form{bottom:72px;padding:9px 12px;gap:5px}#moon-wish-text{min-height:48px;max-height:65px}#wish-moon-view{padding-top:20px;padding-bottom:18px}#wish-moon-view h1{font-size:18px}}
body[data-moon-view=true] #zoom{top:145px;bottom:auto!important}body[data-moon-view=true] #fire-sound-toggle{top:145px;bottom:auto!important}@media(max-height:600px){body[data-moon-view=true] #zoom,body[data-moon-view=true] #fire-sound-toggle{top:112px}}
body[data-mini-book=true] #status,body[data-mini-book=true] #hint{visibility:hidden!important}
