:root{--ink: #f4efdf;--muted: #b9bfd6;--cream: #f6f2e7;--on-cream: #24392e;--night: #0d142a;--surface: #1c2542;--surface-raised: #28324f;--field: #121b32;--line: #667394;--divider: #35415e;--warm: #f1c68d;--warm-hover: #ffdaaa;--on-warm: #32271f;--moon: #d8ddff;--glass: #151e36f0;--notice-surface: #302b38;--error-surface: #382532;--error: #ffb5a8;--radius-control: 12px;--radius-panel: 18px;--shadow-panel: 0 24px 80px #05091966, inset 0 1px 0 #d8ddff0a;color-scheme:dark;font-family:-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Noto Sans KR,sans-serif;color:var(--ink);background:var(--night);font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:radial-gradient(ellipse at 85% 5%,#41456938,transparent 55%),radial-gradient(ellipse at 50% 100%,#e49a500b,transparent 55%),var(--night);background-attachment:fixed}::selection{background:var(--moon);color:var(--night)}button,input{font:inherit}button{cursor:pointer;touch-action:manipulation;transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease}button:disabled{cursor:default;opacity:.5}button:focus-visible,input:focus-visible{outline:3px solid var(--warm);outline-offset:4px}button{color:inherit}input{min-width:0}h1,h2{letter-spacing:-.055em}h1{font-weight:800}p{line-height:1.7}.hidden{display:none}.home-header{min-height:74px;display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center;padding:10px max(24px,7%)}.brand-group{display:flex;align-items:center;flex:0 0 auto;gap:12px}.donation-button{min-height:44px;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.donation-button img{object-fit:contain;flex:none}.home-header>.header-actions{margin-left:auto}.header-actions{display:flex;align-items:center;gap:10px}.glass-button.sound-toggle{flex:0 0 44px;width:44px;height:44px;padding:0;display:grid;place-items:center}.sound-toggle svg{display:block;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.sound-toggle[aria-pressed=true]{color:var(--warm)}.queue-sound{position:absolute;right:max(24px,env(safe-area-inset-right));top:max(20px,env(safe-area-inset-top))}.brand{border:0;background:transparent;padding:0;font-weight:900;font-size:29px;letter-spacing:-1.5px;color:var(--ink)}.home-landscape{width:100%;height:clamp(400px,60vh,640px);margin-top:16px;overflow:hidden;background:var(--night)}.home-landscape canvas{width:100%;height:100%;display:block;object-fit:cover;image-rendering:auto}.home-welcome{text-align:center;width:min(100%,560px);margin:auto;padding:clamp(28px,5vh,52px) 22px 56px}.home-welcome h1{font-size:clamp(32px,4vw,50px);line-height:1.35;margin:0 0 26px;color:var(--ink);font-weight:650}.home-welcome h1 em{font-style:normal;color:var(--warm)}.entry-actions{max-width:360px;margin:auto;display:grid;gap:10px}.button{min-height:54px;border:1px solid transparent;border-radius:var(--radius-control);padding:15px 18px;display:flex;justify-content:space-between;align-items:center;gap:12px;font-weight:750;text-align:left}.primary{background:var(--warm);color:var(--on-warm);box-shadow:0 4px 24px #e49a5014,inset 0 1px #fff5}.primary:hover:not(:disabled){background:var(--warm-hover);box-shadow:0 6px 28px #e49a5026}.secondary{background:var(--surface);border-color:var(--line);color:var(--ink)}.secondary:hover:not(:disabled){background:var(--surface-raised);border-color:var(--moon)}.full{width:100%;justify-content:center;margin-top:18px}.text-link{border:0;background:transparent;font-size:13px;text-decoration:underline;text-underline-offset:4px;color:var(--muted);padding:8px;min-height:36px}.text-link:hover{color:var(--ink)}.home-account{display:flex;align-items:center;justify-content:center;gap:3px;font-size:12px;color:var(--muted);margin-top:25px}.auth-shell{width:min(440px,calc(100% - 32px));padding:32px;margin:40px auto 64px;border:1px solid var(--divider);border-radius:var(--radius-panel);background:var(--surface);box-shadow:var(--shadow-panel);animation:settle-in .26s ease-out both}.auth-shell h1{font-size:36px;margin:0 0 30px}.auth-shell h1:after{content:"";display:block;width:32px;height:2px;margin-top:18px;background:var(--warm)}.field{display:block;font-size:14px;font-weight:650;margin:22px 0 10px}.field input,.invite-url input{display:block;width:100%;border:1px solid var(--line);border-radius:var(--radius-control);padding:15px;background:var(--field);color:var(--ink);margin-top:9px;min-height:52px;font-size:16px;transition:border-color .18s ease,box-shadow .18s ease}.field input:hover,.invite-url input:hover{border-color:var(--muted)}.field input:focus,.invite-url input:focus{border-color:var(--warm);box-shadow:0 0 0 4px #f1c68d0d}.field input:autofill{box-shadow:0 0 0 1000px var(--field) inset;-webkit-text-fill-color:var(--ink)}.terms{margin-top:26px;border-top:1px solid var(--divider);padding-top:12px}.check{display:flex;align-items:center;gap:9px;font-size:13px;line-height:1.5;margin:18px 0}.check input{width:18px;height:18px;accent-color:var(--warm);flex:none}.check .text-link{margin-left:auto;flex:none;font-size:12px}.auth-foot{display:flex;justify-content:center;gap:16px;margin-top:24px}.dialog{border:1px solid var(--line);border-radius:var(--radius-panel);background:var(--surface);color:var(--ink);width:min(480px,calc(100% - 32px));padding:0;box-shadow:var(--shadow-panel);max-height:min(85dvh,calc(100% - 32px))}.dialog[open]{animation:settle-in .26s ease-out both}.dialog::backdrop{background:#080f2eb3;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.dialog-inner{padding:26px}.dialog header{display:flex;justify-content:space-between;align-items:center;gap:16px}.dialog h2{font-size:24px;margin:0}.dialog p{font-size:14px;color:var(--muted)}.donation-content{text-align:center}.donation-price{display:block;margin:18px 0;font-size:20px}.donation-qr{display:block;width:min(100%,320px);height:auto;margin:0 auto;border-radius:var(--radius-control)}.donation-media{width:min(100%,320px);aspect-ratio:1125 / 1386;display:grid;place-items:center;margin:0 auto 18px}.donation-firewood{display:block;width:100%;height:auto}.donation-transfer{justify-content:center;gap:8px}.donation-content a{text-decoration:none}.close{width:38px;height:38px;border:0;border-radius:50%;background:var(--surface-raised);font-size:24px;flex:none}.notice{background:var(--notice-surface);padding:14px;border-radius:var(--radius-control);border-left:2px solid var(--warm);color:var(--warm)!important}.error{color:var(--error)}.error-banner{position:fixed;z-index:100;bottom:18px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;width:max-content;max-width:calc(100% - 32px);padding:14px 16px;background:var(--error-surface);color:var(--error);border:1px solid var(--error);border-radius:var(--radius-control);font-size:13px;box-shadow:var(--shadow-panel)}.error-banner button{border:0;background:transparent;color:inherit;min-width:30px;min-height:30px;font-size:22px}.error-banner.in-game{bottom:auto;top:85px}.campsite{position:fixed;inset:0;background:var(--night);overflow:hidden;height:100dvh}.world-canvas{display:block;width:100%;height:100%;image-rendering:auto}.campsite-layer{position:absolute;inset:0}.camper-nameplates{position:absolute;inset:0;pointer-events:none;overflow:hidden}.camper-nameplate{position:absolute;left:0;top:0;padding:3px 8px;border-radius:6px;color:var(--cream);background:var(--glass);font-size:14px;font-weight:600;line-height:1.4;white-space:nowrap}.scene-header{position:absolute;top:max(20px,env(safe-area-inset-top));left:24px;right:24px;display:flex;align-items:flex-start;justify-content:space-between;z-index:3;gap:12px}.camp-logo{font-size:27px;line-height:1.3;letter-spacing:-1px;font-weight:900;color:var(--ink);text-shadow:0 2px 8px var(--night)}.site-buttons{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;min-width:0;gap:8px}.scene-header>.camp-logo{flex-shrink:0}.dialog .error{color:var(--error)}.profile-withdraw{border-top:1px solid var(--divider);padding-top:12px;text-align:right}.danger-link,.danger-link:hover{color:var(--error)}.danger{background:var(--error-surface);border-color:var(--error);color:var(--error)}.danger:hover:not(:disabled){background:var(--notice-surface)}.profile-confirm-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:24px}.profile-confirm-actions .button{justify-content:center}.glass-button{min-height:44px;background:var(--glass);border:1px solid var(--line);border-radius:var(--radius-control);padding:10px 13px;font-weight:700;font-size:13px;color:var(--ink);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 16px #05091924}.participant-count{padding:7px 10px;background:var(--glass);color:var(--ink);border-radius:20px;font-size:12px;white-space:nowrap}.game-controls{position:absolute;inset:auto 24px max(24px,env(safe-area-inset-bottom));display:flex;align-items:flex-end;justify-content:space-between;z-index:3;pointer-events:none}.game-controls>*{pointer-events:auto}.joystick{position:relative;width:124px;height:124px;border:1px solid #ffffff99;border-radius:50%;background:#151e3670;box-shadow:inset 0 1px 8px #fff2,0 4px 18px #05091930;touch-action:none;user-select:none;-webkit-user-select:none}.joystick.disabled{opacity:.4;pointer-events:none}.joystick-ring{position:absolute;inset:14px;border:1px solid #ffffff55;border-radius:50%;pointer-events:none}.joystick-knob{position:absolute;width:50px;height:50px;left:50%;top:50%;margin:-25px 0 0 -25px;background:#fffdf685;border:1px solid #ffffffe0;border-radius:50%;box-shadow:0 3px 12px #0509193d;pointer-events:none}.game-actions{display:flex;gap:10px;align-items:flex-end}.interaction-stack{display:flex;flex-direction:column;align-items:flex-end;gap:10px}.first-person-controls{position:absolute;right:max(24px,env(safe-area-inset-right));bottom:max(24px,env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:flex-end;gap:10px;z-index:5}.first-person-controls .scene-status{position:static;transform:none;max-width:260px;margin:0;text-align:right}.interact{min-height:54px;min-width:112px;border:1px solid var(--warm);border-radius:var(--radius-control);background:var(--warm);color:var(--on-warm);font-weight:800;padding:12px 17px}.wave-button{width:52px;height:52px;border:1px solid var(--line);background:var(--cream);color:var(--on-cream);border-radius:50%;padding:8px}.wave-button svg{width:100%;height:100%}.guest-account{position:absolute;left:50%;bottom:24px;transform:translate(-50%);border-radius:20px;background:var(--glass);display:flex;align-items:center;color:var(--ink);padding:2px 9px;font-size:12px}.guest-account button{color:var(--ink);background:none;border:0;font-size:12px;min-height:36px;padding:6px}.connection-status,.render-error{position:absolute;top:95px;left:50%;transform:translate(-50%);background:var(--glass);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-control);padding:12px 18px;font-size:13px;max-width:90%;text-align:center}.invite-code{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;background:var(--field);border:1px solid var(--divider);border-radius:var(--radius-control);padding:12px 14px;margin-top:24px}.invite-code strong{flex:1 0 auto;white-space:nowrap;font-size:24px;letter-spacing:.12em;color:var(--warm);font-variant-numeric:tabular-nums}.invite-code .button{flex-grow:1;justify-content:center;white-space:nowrap;font-size:13px;min-height:44px}.kakao{background:#fee500;color:#191600}.invite-url{display:block;font-size:12px;color:var(--muted);margin-top:20px}.invite-url input{font-size:12px;min-height:42px;padding:10px}.feedback{min-height:22px;font-size:13px!important}.queue-screen{position:fixed;inset:0;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 35%,#41456960,transparent 65%),var(--night);color:var(--ink);padding:24px}.queue-screen>.queue-brand{position:absolute;left:24px;top:24px}.queue-screen section{width:min(340px,100%);text-align:center}.queue-screen h1{font-size:32px;margin:16px 0}.queue-screen p{font-size:14px;color:var(--muted)}.queue-screen .queue-number{font-size:46px;font-weight:800;color:var(--warm);font-variant-numeric:tabular-nums;margin:20px 0 32px}.first-person{position:fixed;inset:0;background:var(--night);z-index:10;overflow:hidden}.first-person canvas{position:absolute;inset:0;width:100%;height:100%;display:block;image-rendering:auto}.scene-controls{display:flex;gap:10px}.action-icon{width:64px;height:64px;padding:9px;display:grid;place-items:center;background:var(--cream);color:var(--on-cream);border:1px solid var(--warm);border-radius:var(--radius-control);box-shadow:0 6px 28px #05091955}.action-icon svg{width:42px;height:42px}.food-overlays{position:absolute;inset:0;pointer-events:none}.food-bubble{position:absolute;z-index:4;width:45px;height:45px;padding:9px;display:grid;place-items:center;transform:translate(-50%,-110%);border:2px solid var(--warm);border-radius:50%;background:var(--cream);color:var(--on-cream);box-shadow:0 4px 14px #0007;pointer-events:auto}.food-bubble svg{width:100%;height:100%}.food-bubble:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:7px solid transparent;border-top-color:var(--warm)}.marsh-bubble{left:52.2%;top:calc(77% - 30px)}.scene-status{position:absolute;bottom:104px;left:50%;transform:translate(-50%);padding:8px 14px;background:var(--glass);color:var(--ink);border-radius:30px;font-size:12px;white-space:nowrap;margin:0}.action-icon:hover:not(:disabled){background:var(--warm-hover)}.interact:hover:not(:disabled){background:var(--warm-hover)}.glass-button:hover:not(:disabled),.close:hover:not(:disabled){background:var(--surface-raised);border-color:var(--moon)}.kakao:hover:not(:disabled){background:#ffed4a}.button:active:not(:disabled),.glass-button:active:not(:disabled),.action-icon:active:not(:disabled){box-shadow:inset 0 2px 6px #05091930}@keyframes settle-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media(max-width:600px){.home-header{min-height:64px;padding:10px 22px}.home-landscape{height:clamp(360px,56vh,480px);margin-top:12px}.home-landscape canvas{object-position:30% 50%}.home-welcome{padding:30px 22px 42px}.home-welcome h1{font-size:35px;margin-bottom:24px}.auth-shell{margin-top:26px;padding:24px 20px}.auth-shell h1{font-size:30px}.scene-header{left:14px;right:14px;top:max(16px,env(safe-area-inset-top));flex-wrap:wrap}.scene-header>.brand-group{flex-basis:100%}.scene-header>.site-buttons,.scene-header>.header-actions{margin-left:auto}.camp-logo{font-size:23px}.site-buttons{gap:5px}.connection-status,.render-error,.error-banner.in-game{top:126px}.glass-button{padding:9px 10px;font-size:12px}.participant-count{font-size:11px;padding:7px}.game-controls{inset:auto 15px max(20px,env(safe-area-inset-bottom))}.first-person-controls{right:max(15px,env(safe-area-inset-right));bottom:max(20px,env(safe-area-inset-bottom))}.joystick{width:112px;height:112px}.game-actions{flex-direction:column;gap:8px;align-items:flex-end}.interact{font-size:12px;min-width:108px;padding:12px}.wave-button{width:46px;height:46px}.guest-account{bottom:145px}.action-icon{width:60px;height:60px}.dialog-inner{padding:23px}.dialog h2{font-size:22px}.invite-code strong{font-size:20px}.food-bubble{width:42px;height:42px;padding:8px}.scene-status{max-width:90%;white-space:normal;text-align:center;width:max-content}}@media(max-width:360px){.invite-code{flex-direction:column;align-items:stretch}.invite-code strong{text-align:center}.invite-code .button{justify-content:center}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
