@import"https://fonts.googleapis.com/css2?family=Klee+One:wght@400;600&family=Yomogi&family=Zen+Kurenaido&display=swap";:root{--hand-font: "Zen Kurenaido", "Yomogi", "Klee One", "Hiragino Maru Gothic ProN", cursive;color:#fff7ef;background:#070817;font-family:Hiragino Sans,Yu Gothic,Meiryo,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#root{width:100%;height:100%}body{margin:0;min-width:320px;min-height:100vh;overflow:hidden;-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit}button{-webkit-tap-highlight-color:transparent}.festival-app{--loop-width: 300svh ;position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;background:radial-gradient(circle at 50% 0%,rgba(132,92,190,.24),transparent 36%),#070817}.panorama{position:absolute;top:0;right:0;bottom:0;left:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:none;touch-action:pan-x;cursor:grab;-webkit-user-select:none;user-select:none}.panorama.is-dragging{cursor:grabbing}.panorama::-webkit-scrollbar{display:none}.panorama-track{position:relative;display:flex;width:max-content;height:100%}.sky-loop{position:relative;flex:0 0 var(--loop-width);width:var(--loop-width);height:100%;overflow:hidden}.sky-loop__image,.sky-loop:before,.sky-loop:after{position:absolute;top:0;right:0;bottom:0;left:0;content:"";pointer-events:none}.sky-loop__image{background-position:center center;background-repeat:no-repeat;background-size:100% auto}.sky-loop:before{background:linear-gradient(180deg,#06081a57,#06081a29 42%,#06081a8f),radial-gradient(circle at 50% 28%,rgba(255,229,181,.08),transparent 32%);z-index:1}.sky-loop:after{background:linear-gradient(90deg,rgba(7,8,23,.3),transparent 12%,transparent 82%,rgba(7,8,23,.32)),linear-gradient(0deg,rgba(8,6,21,.24),transparent 24%);z-index:1}.lantern-field{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none}.wish-lantern{--lantern-width: clamp(104px, 27.5vw, 138px);--text-left: 49%;--text-top: 43%;--text-width: 33%;--text-height: 40%;--copy-size: clamp(12px, 3.15vw, 15px);position:absolute;left:calc(var(--x) * 1%);top:calc(var(--y) * 1%);width:calc(var(--lantern-width) * var(--size));aspect-ratio:.88;padding:0;border:0;background:transparent;color:var(--ink);cursor:pointer;pointer-events:auto;transform:translate(-50%,-50%) rotate(var(--rotate));transform-origin:50% 66%;animation:lantern-float 7s ease-in-out infinite;animation-delay:calc(var(--x) * -90ms)}.wish-lantern:focus-visible{outline:2px solid var(--accent);outline-offset:6px;border-radius:50%}.wish-lantern:hover{z-index:4}.wish-lantern__image{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;filter:var(--lantern-filter) drop-shadow(0 0 18px color-mix(in srgb,var(--accent),transparent 20%));mix-blend-mode:screen;opacity:.98;pointer-events:none}.wish-lantern__copy{position:absolute;left:var(--text-left);top:var(--text-top);display:grid;width:var(--text-width);height:var(--text-height);overflow:visible;transform:translate(-50%,-50%) rotate(var(--copy-tilt, 0deg));place-items:center;text-align:center;mix-blend-mode:multiply;text-shadow:.35px .2px 0 color-mix(in srgb,var(--ink),transparent 70%),-.25px .35px 0 rgba(255,246,220,.46),0 0 4px rgba(255,239,198,.38);pointer-events:none}.wish-lantern__text{display:flex;width:auto;max-width:none;height:auto;max-height:none;align-items:center;justify-content:center;flex-direction:row-reverse;gap:var(--column-gap, .26em);overflow:visible;font-family:var(--hand-font);font-size:calc(var(--copy-size) * var(--font-scale));font-weight:400;letter-spacing:0;line-height:1.08;line-break:anywhere;overflow-wrap:anywhere;word-break:normal;opacity:.88}.wish-lantern__column{display:inline-block;line-height:1.1;text-orientation:upright;white-space:nowrap;writing-mode:vertical-rl}.shape-tall{--text-top: 40%;--text-width: 30%;--text-height: 46%;aspect-ratio:.72}.shape-round{--text-left: 48%;--text-top: 44%;--text-width: 34%;--text-height: 38%;aspect-ratio:.9}.shape-faceted{--text-left: 48%;--text-top: 46%;--text-width: 35%;--text-height: 36%;aspect-ratio:.86}.wish-lantern.is-compact{position:relative;left:auto;top:auto;width:118px;flex:0 0 118px;transform:none;animation:none;pointer-events:none}.wish-lantern.is-compact .wish-lantern__text{font-size:10px}.wish-lantern.is-expanded{--lantern-width: min(78vw, 430px);--copy-size: clamp(21px, 5.2vw, 30px);--text-left: 49%;--text-top: 45%;--text-width: 35%;--text-height: 48%;position:relative;left:auto;top:auto;width:var(--lantern-width);transform:rotate(var(--rotate));animation:none;cursor:default;pointer-events:none}.wish-lantern.is-expanded .wish-lantern__copy{transform:translate(-50%,-50%) rotate(var(--copy-tilt, 0deg))}.wish-lantern.is-expanded .wish-lantern__text{gap:.3em;line-height:1.08}.wish-lantern.is-expanded.shape-tall{--text-left: 50%;--text-top: 44%;--text-width: 31%;--text-height: 52%}.wish-lantern.is-expanded.shape-round{--text-left: 48%;--text-top: 46%;--text-width: 35%;--text-height: 44%}.wish-lantern.is-expanded.shape-faceted{--text-left: 48%;--text-top: 47%;--text-width: 36%;--text-height: 42%}.scene-controls{position:fixed;right:12px;bottom:max(86px,env(safe-area-inset-bottom) + 86px);z-index:6;display:grid;gap:8px;justify-items:center}.round-button,.icon-button{display:grid;width:42px;height:42px;place-items:center;border:1px solid rgba(255,238,217,.32);border-radius:50%;background:#fff8eed6;color:#442037;box-shadow:0 10px 28px #00000042;cursor:pointer}.round-button svg,.icon-button svg{width:19px;height:19px}.scene-dots{display:grid;gap:5px}.scene-dots span{width:6px;height:6px;border-radius:50%;background:#fff5e57a}.scene-dots span.is-active{background:#ffd98d;box-shadow:0 0 14px #ffd98d}.action-dock{position:fixed;right:50%;bottom:max(14px,env(safe-area-inset-bottom));z-index:8;display:grid;grid-template-columns:1fr 1fr;width:min(calc(100vw - 28px),430px);gap:8px;padding:8px;border:1px solid rgba(255,230,209,.24);border-radius:18px;background:#100e24bd;box-shadow:0 18px 48px #0000005c;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);transform:translate(50%)}.dock-button,.submit-button{display:inline-flex;min-height:46px;align-items:center;justify-content:center;gap:8px;border:0;border-radius:12px;cursor:pointer;font-weight:800;letter-spacing:0}.dock-button{background:#fff9ef1f;color:#fff6ebd1}.dock-button.is-active,.dock-button:hover{background:linear-gradient(135deg,#ff8babf0,#ffc66ee6);color:#321329;box-shadow:0 10px 28px #ff84a957}.dock-button svg,.submit-button svg{width:19px;height:19px;flex:0 0 auto}.bottom-sheet{position:fixed;right:0;bottom:0;left:0;z-index:7;max-height:min(74svh,620px);padding:10px 14px calc(86px + env(safe-area-inset-bottom));border:1px solid rgba(92,48,72,.12);border-radius:20px 20px 0 0;background:linear-gradient(180deg,#fffaf4f7,#f6f0fff0),#fff7ef;box-shadow:0 -20px 64px #00000057;color:#43233d;overflow-y:auto;transform:translateY(calc(100% + 56px));transition:transform .24s ease}.bottom-sheet.is-open{transform:translateY(0)}.festival-app:has(.bottom-sheet.is-open) .action-dock{opacity:0;pointer-events:none;transform:translate(50%) translateY(16px)}.festival-app:has(.lantern-modal) .action-dock{opacity:0;pointer-events:none}.lantern-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:24px}.lantern-modal__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;border:0;background:radial-gradient(circle at 50% 38%,rgba(255,199,121,.16),transparent 36%),#050511bd;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.lantern-modal__content{position:relative;display:grid;width:min(92vw,520px);min-height:min(78svh,620px);place-items:center;padding:30px 20px 22px}.lantern-modal__close{position:absolute;top:12px;right:12px;z-index:2}.sheet-grip{width:46px;height:4px;margin:0 auto 10px;border-radius:999px;background:#5b375447}.sheet-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}.sheet-heading p,.sheet-heading h2{margin:0}.sheet-heading p{color:#b57c5f;font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.sheet-heading h2{font-family:Hiragino Mincho ProN,Yu Mincho,YuMincho,serif;font-size:22px;letter-spacing:0}.wish-form{display:grid;max-width:560px;margin:0 auto;gap:14px}.form-preview{display:flex;min-height:128px;align-items:center;gap:14px;padding:10px 14px;border:1px solid rgba(90,55,85,.14);border-radius:12px;background:radial-gradient(circle at 26% 45%,rgba(255,205,117,.26),transparent 35%),linear-gradient(135deg,#18173af0,#322653d6);color:#fff7ec}.form-preview p,.form-preview strong,.form-preview span{display:block;margin:0}.form-preview p{color:#fff6e6b8;font-size:12px;font-weight:800}.form-preview strong{margin-top:3px;font-family:Hiragino Mincho ProN,Yu Mincho,YuMincho,serif;font-size:22px}.form-preview>div>span{margin-top:4px;font-size:13px;font-weight:900}.field{display:grid;gap:7px}.field span,.choice-group legend{color:#5d3151;font-size:13px;font-weight:900}.field input,.field textarea{width:100%;border:1px solid rgba(92,48,72,.2);border-radius:12px;background:#ffffffbd;color:#392033;outline:none;box-shadow:inset 0 1px #ffffffb3}.field input{min-height:46px;padding:0 14px}.field textarea{min-height:78px;resize:vertical;padding:12px 14px;line-height:1.55}.field input:focus,.field textarea:focus{border-color:#de7d9e;box-shadow:0 0 0 4px #de7d9e29}.field small{justify-self:end;color:#43233d94;font-size:11px;font-weight:800}.choice-group{min-width:0;margin:0;padding:0;border:0}.choice-group legend{margin-bottom:8px}.shape-options,.color-options{display:grid;gap:8px}.shape-options{grid-template-columns:repeat(4,minmax(0,1fr))}.shape-options button{display:grid;min-width:0;min-height:82px;place-items:center;gap:2px;padding:6px 4px;border:1px solid rgba(92,48,72,.14);border-radius:12px;background:#ffffff94;color:#4a2a43;cursor:pointer}.shape-options button.is-selected{border-color:#de7d9e;background:#fff7fb;box-shadow:0 0 0 3px #de7d9e29}.shape-options img{width:54px;height:50px;object-fit:contain;filter:var(--lantern-filter, none);mix-blend-mode:multiply}.shape-options span{font-size:11px;font-weight:900;line-height:1}.color-options{grid-template-columns:repeat(4,minmax(0,1fr))}.color-options button{display:grid;min-width:0;min-height:54px;place-items:center;gap:4px;border:1px solid rgba(92,48,72,.14);border-radius:12px;background:#fff9;color:#4a2a43;cursor:pointer}.color-options button.is-selected{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent),transparent 74%)}.color-options span{width:22px;height:22px;border:2px solid rgba(255,255,255,.76);border-radius:50%;background:var(--accent);box-shadow:0 0 18px color-mix(in srgb,var(--accent),transparent 40%)}.color-options b{overflow:hidden;font-size:10px;line-height:1;text-overflow:ellipsis;white-space:nowrap}.submit-button{min-height:50px;background:linear-gradient(135deg,#ef7f9f,#f6b05d);color:#35172d;box-shadow:0 14px 30px #de7d9e47}.wish-list{display:grid;max-width:660px;margin:0 auto;gap:12px}.featured-wish{display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:10px;width:100%;padding:12px;border:1px solid rgba(222,125,158,.2);border-radius:12px;background:linear-gradient(135deg,#ffefe2eb,#fff7fceb);color:#4b2441;cursor:pointer;text-align:left}.featured-wish svg{width:22px;height:22px;color:#de7d9e}.featured-wish span{font-family:Hiragino Mincho ProN,Yu Mincho,YuMincho,serif;font-size:16px;font-weight:800;line-height:1.45}.featured-wish strong{max-width:76px;overflow:hidden;color:#9a674d;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.wish-list__items{display:grid;gap:8px}.wish-list__items button{display:grid;grid-template-columns:56px 1fr;align-items:center;gap:10px;width:100%;min-height:68px;padding:8px 10px;border:1px solid rgba(92,48,72,.12);border-radius:12px;background:#ffffff9e;color:#43233d;cursor:pointer;text-align:left}.wish-list__items button.is-selected{border-color:#de7d9e;background:#fff7fb;box-shadow:0 0 0 3px #de7d9e29}.wish-list__items img{width:54px;height:52px;object-fit:contain;filter:var(--lantern-filter) drop-shadow(0 0 8px rgba(255,177,95,.32));mix-blend-mode:multiply}.wish-list__items span{display:grid;min-width:0;gap:2px}.wish-list__items strong{overflow:hidden;font-size:14px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.wish-list__items small{color:#966552;font-size:12px;font-weight:800}@keyframes lantern-float{0%,to{translate:0 0}50%{translate:0 -10px}}@media(min-width:720px){.wish-lantern:not(.is-expanded){--lantern-width: clamp(100px, 8.8vw, 145px);--copy-size: clamp(5px, .56vw, 9px)}.bottom-sheet{right:24px;bottom:24px;left:auto;width:min(438px,calc(100vw - 48px));max-height:calc(100svh - 48px);padding:14px 18px 18px;border-radius:18px}.action-dock{right:28px;bottom:28px;width:360px;transform:none}.scene-controls{right:28px;bottom:118px}.festival-app:has(.bottom-sheet.is-open) .action-dock{transform:translateY(16px)}.wish-lantern.is-expanded{--lantern-width: min(42vw, 460px);--copy-size: clamp(24px, 2.6vw, 34px)}}@media(max-width:380px){.dock-button span{font-size:12px}.shape-options span,.color-options b{font-size:9px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
