.clinic-fly{display:inline-flex;align-items:center;justify-content:center;gap:20px;min-height:54px;padding:12px 26px;border:1px solid #edc5d25c;border-radius:32px;color:#f4dce6;background:linear-gradient(115deg,#edc5d21a,#edc5d209);font:italic 400 24px/1.2 Letter,Georgia,serif;box-shadow:0 0 35px #edc5d20a}
.clinic-fly svg{width:25px;height:16px;animation:continue-arrow 3.6s ease-in-out infinite}
.clinic-fly:hover{background:#edc5d222}
.clinic-finish .clinic-replay{margin-top:22px;padding:6px 14px;border-color:transparent;background:none;color:#bda5b4;font-size:11px}
.clinic-finish .finish-title{margin-bottom:31px}
.letter-home-back{position:absolute;top:max(16px,env(safe-area-inset-top));left:16px;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;color:#d0b8c4;z-index:4}
.letter-home-back svg{width:21px;height:15px;transform:rotate(180deg)}
#close-card{left:10px;right:auto}
#close-card svg{width:21px;height:15px;transform:rotate(180deg)}
.camp-mode{overflow:hidden;background:#070b0d}
.campfire{position:fixed;inset:0;z-index:6;height:100svh;overflow:hidden;background:#070b0d;color:#fff0d9;isolation:isolate;touch-action:pan-x pan-y}
.campfire button{font-family:inherit;-webkit-tap-highlight-color:transparent}
.campfire[data-phase="flying"]{background:transparent}
.campfire button:focus-visible{outline:1px solid #ffe5bb;outline-offset:4px}
.camp-world{position:absolute;inset:0;max-width:480px;margin:auto;overflow:hidden;opacity:0;transform:scale(1.04);transition:opacity 1.1s ease,transform 2.5s ease}
.campfire[data-phase="landed"] .camp-world{opacity:1;transform:scale(1)}
.camp-landscape{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 48%;user-select:none;pointer-events:none}
.camp-world::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(#05080b55,transparent 22%,transparent 70%,#0b0d09b5 100%)}
.camp-header{position:absolute;top:max(17px,env(safe-area-inset-top));left:16px;right:16px;z-index:8;display:flex;justify-content:space-between;align-items:center}
.camp-replay{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;padding:10px 15px;border:1px solid #ffe9cb38;border-radius:24px;background:#0a101680;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);color:#f7e4ca;font-size:12px;line-height:1.3;animation:ending-in .8s ease both}
.camp-replay svg{width:17px;height:17px;flex-shrink:0}
.camp-icon{width:44px;height:44px;display:grid;place-items:center;border:1px solid #ffe9cb25;border-radius:50%;background:#0a10166b;color:#f7e4ca;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);padding:12px}
.camp-icon svg{width:20px;height:20px}
.camp-back svg{transform:rotate(180deg);height:15px}
.camp-heading{position:absolute;z-index:3;top:11.5%;left:15%;width:70%;margin:0;text-align:center;color:#f6e5d2;font:italic 400 clamp(31px,8.5vw,39px)/1.12 Letter,Georgia,serif;letter-spacing:-.5px;text-shadow:0 2px 18px #0008;outline:none;opacity:0;transform:translateY(8px);transition:opacity 1.3s .6s ease,transform 1.3s .6s ease}
.camp-heading::before{content:"✧";display:block;margin-bottom:13px;color:#f0cbae;font:400 21px/1 Georgia,serif}
.campfire[data-phase="landed"] .camp-heading{opacity:1;transform:translateY(0)}
.camp-gathering{position:absolute;z-index:3;left:4%;top:34%;width:92%;height:35%;isolation:isolate;transform:scale(.94);transform-origin:50% 55%}
.camp-friend{position:absolute;aspect-ratio:1;--delay:0s;--tilt:3deg;--lift:-4px;filter:drop-shadow(0 7px 7px #120b0b40)}
.camp-friend::before{content:"";position:absolute;left:20%;right:20%;bottom:3%;height:9%;border-radius:50%;background:#14140f6b;filter:blur(4px);transform:scaleX(1.25)}
.camp-friend-art{display:block;position:absolute;inset:0;background-image:var(--atlas);background-repeat:no-repeat;background-size:300% auto;background-position:50% 50%;transform-origin:50% 86%;animation:camp-dance 2.264s ease-in-out var(--delay) infinite;animation-play-state:paused}
.camp-friend.star{left:0;top:28%;width:29%;--delay:-.6s;--tilt:-5deg;z-index:2}
.camp-friend.moon{left:17%;top:-1%;width:25%;--delay:-1.25s;--tilt:5deg;z-index:1}
.camp-friend.sun{left:43%;top:-3%;width:27%;--delay:-2s;--tilt:-3deg;z-index:1}
.camp-friend.comet{right:-1%;top:23%;width:31%;--delay:-.4s;--tilt:4deg;--lift:-6px;z-index:2}
.camp-friend.saturn{right:0;top:63%;width:37%;--delay:-1.4s;--tilt:-4deg;--lift:-3px;z-index:5}
.campfire[data-music="playing"] .camp-friend-art{animation-play-state:running}
.camp-flame-wrap{position:absolute;left:50%;top:44%;width:37%;aspect-ratio:1;z-index:4;transform:translateX(-50%)}
.camp-flame-wrap::before{content:"";position:absolute;inset:24% -45% -20%;border-radius:50%;background:radial-gradient(ellipse,#ffbb5266,#f2b3581c 44%,transparent 70%);filter:blur(9px);animation:camp-light 4.3s ease-in-out infinite}
.camp-logs{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;filter:drop-shadow(0 4px 5px #251e1266)}
.camp-living-flame{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;filter:drop-shadow(0 0 8px #ffba5366)}
.camp-fireflies{position:absolute;inset:23% 0 18%;z-index:3;pointer-events:none}
.camp-firefly{position:absolute;left:var(--x);top:var(--y);width:3px;height:3px;background:#ffe5a2;box-shadow:0 0 7px 2px #ffd17166;border-radius:50%;animation:camp-firefly var(--duration) ease-in-out var(--delay) infinite}
.camp-guitar-area{position:absolute;z-index:7;left:0;right:0;bottom:max(18px,env(safe-area-inset-bottom));height:26%;min-height:162px;max-height:260px;opacity:0;transform:translateY(24px);transition:opacity 1.1s .8s ease,transform 1.5s .8s ease}
.campfire[data-phase="landed"] .camp-guitar-area{opacity:1;transform:translateY(0)}
.camp-guitar{position:absolute;left:3%;top:0;width:94%;height:100%;padding:0;border:0;background:none;color:inherit;border-radius:40%;cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none;isolation:isolate}
.camp-guitar::before{content:"";position:absolute;inset:13% 8% 2%;z-index:-1;border-radius:50%;background:#0d1009a8;filter:blur(12px);transform:translateY(12px)}
.camp-guitar-art{position:absolute;inset:0;display:block;transform-origin:72% 50%;filter:drop-shadow(0 7px 9px #0008);transition:filter .25s}
.camp-guitar-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}
.camp-strings{position:absolute;inset:0;width:100%;height:100%;color:#fff0cf;opacity:0;pointer-events:none}
.campfire[data-music="playing"] .camp-strings{opacity:.55;animation:camp-string-vibrate .12s linear infinite}
.campfire[data-music="playing"] .camp-guitar-glow{opacity:.6;animation:camp-string-glow 2.264s ease-in-out infinite alternate}
.camp-guitar:focus-visible{outline-offset:-10px}
.camp-guitar:disabled{cursor:default}
.camp-guitar-glow{position:absolute;left:59%;top:32%;width:28%;height:40%;border-radius:50%;background:radial-gradient(ellipse,#ffe7bb44,transparent 70%);opacity:0;pointer-events:none}
.camp-guitar.strummed .camp-guitar-art{animation:camp-strum .48s ease-out}
.camp-guitar.strummed .camp-guitar-glow{animation:camp-string-glow .6s ease-out}
.camp-hint{position:absolute;z-index:8;left:12px;right:12px;bottom:calc(100% + 5px);margin:0;display:flex;align-items:center;justify-content:center;gap:10px;color:#ffe5bd;font-size:13px;line-height:1.5;letter-spacing:.2px;text-shadow:0 2px 10px #000;transition:opacity .8s}
.camp-hint svg{width:25px;height:13px;animation:camp-hint-swipe 3.2s ease-in-out infinite}
.campfire[data-music="playing"] .camp-hint{opacity:0;pointer-events:none}
.campfire[data-finished="true"] .camp-hint{opacity:0;pointer-events:none}
.camp-final-orb{position:absolute;left:50%;bottom:29%;z-index:9;display:grid;place-items:center;width:62px;height:62px;padding:0;transform:translateX(-50%);border:0;border-radius:50%;background:none;color:#ae8391;isolation:isolate}
.camp-final-orb.orb-launch{animation:camp-orb-pop 1.35s cubic-bezier(.2,.7,.2,1) both}
.camp-orb-core{position:absolute;inset:0;display:grid;place-items:center;border:1px solid #fff;border-radius:50%;background:#fffefa;box-shadow:0 0 22px #fff8e8a6,0 0 50px #fff0cc73,0 0 85px #ffe4ac38;animation:camp-heartbeat 2.45s 1.35s ease-in-out infinite;pointer-events:none}
.camp-orb-core::before{content:"";position:absolute;inset:-11px;border:1px solid #fff7dc5e;border-radius:50%;box-shadow:0 0 18px #fff4d733;animation:camp-heart-halo 2.45s 1.35s ease-out infinite}
.camp-final-orb svg{width:24px;height:24px;pointer-events:none}
.camp-orb-label{position:absolute;top:calc(100% + 13px);left:-10px;right:-10px;color:#fff8eb;text-align:center;text-shadow:0 2px 8px #000,0 0 15px #ffe6b377;font:400 13px/1.3 NoteSans,Arial,sans-serif;letter-spacing:.6px;pointer-events:none}
.camp-ending{position:absolute;inset:0;z-index:14;display:flex;align-items:center;justify-content:center;padding:80px 28px;perspective:1000px;background:radial-gradient(ellipse at 50% 48%,#38263166,transparent 62%),#07080de8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:ending-in 1.1s ease both}
.camp-ending::before,.camp-ending::after{content:"✧";position:absolute;color:#edc5d275;font:400 30px Georgia,serif;left:14%;top:20%;transform:rotate(12deg)}
.camp-ending::after{font-size:19px;left:auto;right:13%;top:76%;transform:rotate(-9deg)}
.ending-back{position:absolute;top:max(17px,env(safe-area-inset-top));left:max(16px,calc((100vw - 480px)/2 + 16px));z-index:2}
.ending-card{position:relative;width:min(100%,360px);padding:16px 12px 24px;text-align:center;border:1px solid #f1e5eb;border-radius:3px;background:linear-gradient(135deg,#fffdfb,#fff8fb);box-shadow:0 26px 80px #0008,0 0 70px #edc5d20b;color:#634555;transform-origin:50% 40%;animation:ending-unfold 1.3s cubic-bezier(.2,.7,.2,1) both}
.ending-card::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent calc(50% - 1px),#e5cdd72b 50%,transparent calc(50% + 1px));pointer-events:none}
.ending-heart-frame{position:relative;aspect-ratio:3/2;margin:0 -6px}
.ending-heart-art{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.ending-heart-frame h2{position:absolute;top:30%;left:0;right:0;margin:0;font:italic 400 clamp(16px,5.35vw,24px)/1.18 Letter,Georgia,serif;letter-spacing:-.4px;white-space:nowrap;outline:none}
.ending-card p{margin:10px 0 0;color:#a27188;font:400 clamp(25px,7vw,31px)/1.2 Letter,Georgia,serif;letter-spacing:-.5px}
.ending-smile{display:block;margin-top:10px;font:normal 26px/1.2 "Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;letter-spacing:0}
.ending-card .ending-teleport{display:inline-flex;align-items:center;justify-content:center;gap:17px;min-height:44px;margin-top:17px;padding:10px 23px;border:1px solid #d9b7c8;border-radius:26px;background:#f4e6ed80;color:#a27188;font:italic 400 21px/1.2 Letter,Georgia,serif}
.ending-teleport svg{width:22px;height:15px}
.ending-teleport:hover{background:#f4e6ed}
.ending-card .ending-teleport:focus-visible,.teleport-options button:focus-visible{outline:1px solid #a27188;outline-offset:4px}
.campfire[data-phase="ending"] .camp-world,.campfire[data-phase="teleport"] .camp-world{opacity:.15;transform:scale(.97);pointer-events:none}
.camp-teleport{position:absolute;inset:0;z-index:16;display:flex;align-items:center;justify-content:center;padding:80px 28px;overflow:auto;overscroll-behavior:contain;background:radial-gradient(ellipse at 50% 45%,#39273355,transparent 60%),#08090eef;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:ending-in .65s ease both}
.teleport-back{position:absolute;top:max(17px,env(safe-area-inset-top));left:max(16px,calc((100vw - 480px)/2 + 16px));z-index:2}
.teleport-card{width:min(100%,360px);padding:32px 24px 28px;border:1px solid #f1e5eb;border-radius:3px;background:linear-gradient(135deg,#fffdfb,#fff8fb);box-shadow:0 26px 80px #0008;color:#634555;text-align:center;animation:ending-unfold .85s cubic-bezier(.2,.7,.2,1) both}
.teleport-heart{width:23px;height:23px;margin:0 auto 18px;color:#b48199}
.teleport-card h2{margin:0 0 25px;font:italic 400 36px/1.1 Letter,Georgia,serif;letter-spacing:-.7px;outline:none}
.teleport-options{display:grid;gap:10px}
.teleport-options button{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:49px;padding:13px;border:1px solid #e8d2de;border-radius:10px;background:#f8edf34d;color:#805c70;font:400 14px/1.35 NoteSans,Arial,sans-serif;text-align:left}
.teleport-options button:hover{background:#f4e6ed}
.teleport-options svg{width:20px;height:14px;flex-shrink:0;color:#ac8197}
.camp-note{position:absolute;left:var(--x);top:var(--y);font-size:var(--size);line-height:1;color:#ffe4b1;text-shadow:0 0 12px #ffc77c66;pointer-events:none;z-index:10;animation:camp-note-rise 1.8s ease-out forwards}
.camp-flight{position:absolute;inset:0;z-index:10;overflow:hidden;background:#05070d;opacity:0;transition:opacity .45s ease}
.campfire[data-phase="flying"] .camp-flight{opacity:1}
.camp-flight canvas{position:absolute;inset:0;width:100%;height:100%}
.camp-planet{position:absolute;left:50%;top:43%;width:132px;aspect-ratio:1;border-radius:50%;transform:translate(-50%,-50%) scale(.1);will-change:transform;box-shadow:0 0 14px #eac69866,0 0 46px #9ec5c52b,0 0 0 2px #e5d4ac38;background:#172a26 url('/campfire/planet-clearing.png') 50% 59% / 220% auto;overflow:hidden}
.camp-planet::before{content:"";position:absolute;inset:0;border-radius:50%;box-shadow:inset -28px -15px 35px #02070bd9,inset 4px 4px 20px #fff3cf50;background:linear-gradient(130deg,#f1dec310,transparent 50%,#02091066)}
.camp-flight-label{position:absolute;left:0;right:0;top:70%;margin:0;text-align:center;color:#d4c7ba;font:italic 400 26px/1.3 Letter,Georgia,serif;letter-spacing:.2px;transition:opacity .7s}
.camp-flight-back{position:absolute;left:16px;top:max(17px,env(safe-area-inset-top));z-index:12}
.campfire[data-phase="landed"] .camp-flight{pointer-events:none}
@keyframes camp-dance{0%,100%{transform:translateY(0) rotate(calc(var(--tilt) * -.5))}50%{transform:translateY(var(--lift)) rotate(var(--tilt))}}
@keyframes camp-light{0%,100%{opacity:.68;transform:scale(1)}35%{opacity:.95;transform:scale(1.07)}70%{opacity:.8;transform:scale(.97)}}
@keyframes camp-flame{0%,100%{transform:scale(1) rotate(-1deg);filter:drop-shadow(0 0 9px #ffbc5555) brightness(1)}45%{transform:scale(.97,1.03) rotate(1deg);filter:drop-shadow(0 0 15px #ffbc5566) brightness(1.07)}70%{transform:scale(1.02,.98) rotate(0)}}
@keyframes camp-spark{0%{opacity:0;transform:translate(0,0) scale(1)}12%{opacity:.85}75%{opacity:.65}100%{opacity:0;transform:translate(var(--drift),-100px) scale(.25)}}
@keyframes camp-firefly{0%,100%{opacity:.15;transform:translate(0,0)}45%{opacity:.8;transform:translate(10px,-16px)}70%{opacity:.35;transform:translate(-5px,-7px)}}
@keyframes camp-strum{0%,100%{transform:rotate(0)}25%{transform:rotate(.9deg)}55%{transform:rotate(-.5deg)}}
@keyframes camp-string-glow{0%{opacity:.9;transform:scale(.8)}100%{opacity:0;transform:scale(1.7)}}
@keyframes camp-hint-swipe{0%,20%,85%,100%{transform:translateX(-3px);opacity:.65}55%{transform:translateX(4px);opacity:1}}
@keyframes camp-note-rise{0%{opacity:0;transform:translate(0,0) rotate(-10deg) scale(.6)}15%{opacity:1}100%{opacity:0;transform:translate(var(--drift),-110px) rotate(15deg) scale(1.1)}}
@keyframes camp-string-vibrate{0%,100%{transform:translateY(-.65px)}50%{transform:translateY(.65px)}}
@keyframes camp-orb-pop{0%{opacity:0;transform:translateX(-50%) translate(var(--orb-from-x,0px),var(--orb-from-y,-100px)) scale(.08) rotate(-20deg)}38%{opacity:1}62%{transform:translateX(-50%) translateY(-16px) scale(1.13) rotate(4deg)}79%{transform:translateX(-50%) translateY(8px) scale(.97) rotate(-2deg)}91%{transform:translateX(-50%) translateY(-3px) scale(1.02) rotate(0)}100%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}
@keyframes camp-heartbeat{0%,32%,100%{transform:scale(1);box-shadow:0 0 22px #fff8e8a6,0 0 50px #fff0cc73,0 0 85px #ffe4ac38}8%{transform:scale(1.12);box-shadow:0 0 30px #fffdf2cc,0 0 65px #fff3d29e,0 0 95px #ffe8b84d}15%{transform:scale(1.01)}23%{transform:scale(1.18);box-shadow:0 0 35px #fffdf2dd,0 0 72px #fff3d2ae,0 0 105px #ffe8b855}}
@keyframes camp-heart-halo{0%,100%{opacity:0;transform:scale(.9)}8%{opacity:.65;transform:scale(1)}32%{opacity:0;transform:scale(1.55)}}
@keyframes ending-in{from{opacity:0}to{opacity:1}}
@keyframes ending-unfold{from{opacity:0;transform:translateY(24px) rotateX(-22deg) scale(.86)}to{opacity:1;transform:translateY(0) rotateX(0) scale(1)}}
@media(min-width:600px){.camp-world{box-shadow:0 0 140px #27302544}.camp-heading{font-size:39px}}
@media(max-width:350px){.teleport-options button{font-size:13px}.teleport-card{padding-left:19px;padding-right:19px}}
@media(max-height:650px){.camp-teleport{padding:64px 24px}.teleport-card{padding-top:26px;padding-bottom:23px}.teleport-card h2{margin-bottom:21px}}
@media(max-height:650px){.camp-heading{top:10%;font-size:30px}.camp-heading::before{margin-bottom:8px;font-size:17px}.camp-gathering{top:31%;height:36%}.camp-guitar-area{height:27%;min-height:135px;bottom:10px}.camp-hint{font-size:12px;bottom:100%}.camp-final-orb{bottom:29%;width:54px;height:54px;padding:15px}}
@media(prefers-reduced-motion:reduce){.campfire *,.campfire *::before,.campfire *::after{animation:none!important;transition:none!important}.camp-note,.camp-sparks,.camp-fireflies{display:none}.clinic-fly svg{animation:none}}
