:root{--ui-text: #183d36;--ui-muted: #385d54;--ui-accent: #8a3159;--ui-on-dark: #fff8e7;--ui-on-dark-muted: #d5e4dd;--ui-surface: rgba(246, 243, 229, .9);--ui-surface-strong: rgba(250, 247, 235, .96);--ui-dark-surface: rgba(23, 59, 53, .92);--ui-border: rgba(35, 77, 65, .36);--ui-dark-border: rgba(255, 248, 231, .32);--ui-shadow: 0 10px 30px rgba(13, 42, 35, .28);--lotus-paper-surface: radial-gradient(ellipse 110px 46px at -8% 108%, rgba(67, 119, 87, .22), transparent 70%), radial-gradient(ellipse 86px 38px at 108% -8%, rgba(200, 96, 139, .18), transparent 68%), linear-gradient(145deg, rgba(252, 249, 237, .97), rgba(233, 241, 224, .92));--lotus-dark-surface: radial-gradient(ellipse 180px 90px at 112% 2%, rgba(232, 143, 179, .17), transparent 68%), radial-gradient(ellipse 210px 100px at -12% 102%, rgba(126, 174, 146, .18), transparent 70%), linear-gradient(155deg, rgba(20, 65, 55, .97), rgba(20, 50, 45, .97));--ink: var(--ui-text);--ink-soft: var(--ui-muted);--paper: #f3efe6;--paper-trans: rgba(243, 239, 230, .72);--jade: #5a7d6f;--jade-deep: #2f4a40;--lotus: #e58aac;--lotus-soft: #f3b9d0;--gold: #d8b56a;--glass: var(--ui-surface);--glass-strong: var(--ui-surface-strong);--stroke: var(--ui-border);--shadow: var(--ui-shadow);--serif: "Songti SC", "SimSun", "STSong", "Noto Serif SC", serif;--kai: "Kaiti SC", "STKaiti", "KaiTi", var(--serif);--sans: "PingFang SC", "Microsoft YaHei", -apple-system, "Helvetica Neue", sans-serif}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:var(--sans);color:var(--ink);background:#0d1a1c;-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;touch-action:manipulation;overscroll-behavior:none}canvas{display:block}.scene-canvas{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;height:100dvh;z-index:0;touch-action:none}.glass{position:relative;overflow:hidden;background:var(--lotus-paper-surface);backdrop-filter:blur(14px) saturate(1.1);-webkit-backdrop-filter:blur(14px) saturate(1.1);border:1px solid var(--stroke);color:var(--ui-text);border-radius:24px 24px 26px 10px;box-shadow:inset 0 1px #ffffffd1,var(--shadow)}.glass-dark{position:relative;overflow:hidden;background:var(--lotus-dark-surface);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--ui-dark-border);color:var(--ui-on-dark);border-radius:24px 24px 26px 10px;box-shadow:inset 0 1px #fff8e71c,var(--ui-shadow)}.glass:after,.glass-dark:after,.intro .scroll:after{content:"";position:absolute;left:18px;right:18px;bottom:7px;height:1px;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(65,112,91,.38),rgba(200,96,139,.28),transparent)}.glass-dark:after{background:linear-gradient(90deg,transparent,rgba(209,231,216,.2),rgba(232,143,179,.3),transparent)}.loading{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(90% 70% at 50% 108%,#8fb4ab80,#8fb4ab00 60%),radial-gradient(130% 100% at 50% -10%,#ffffff80,#fff0 55%),radial-gradient(120% 120% at 50% 30%,#e9f1ec,#c8ddd6 48%,#9dbfb5)}.loading.done{animation:loadingOut .55s ease forwards;pointer-events:none}@keyframes loadingOut{to{opacity:0;transform:scale(1.015)}}.loading:before,.loading:after{content:"";position:absolute;width:64vmax;height:64vmax;border-radius:50%;will-change:transform,opacity;pointer-events:none}.loading:before{left:-22vmax;top:-20vmax;background:radial-gradient(closest-side,#6f93854d,#6f938500 70%);animation:inkDrift1 17s ease-in-out infinite}.loading:after{right:-24vmax;bottom:-26vmax;background:radial-gradient(closest-side,#e076a629,#e076a600 70%);animation:inkDrift2 21s ease-in-out infinite}@keyframes inkDrift1{0%,to{transform:translateZ(0) scale(1);opacity:.75}50%{transform:translate3d(6vmax,4vmax,0) scale(1.12);opacity:1}}@keyframes inkDrift2{0%,to{transform:translateZ(0) scale(1.08);opacity:.65}50%{transform:translate3d(-5vmax,-5vmax,0) scale(1);opacity:.95}}.loading .brand{display:flex;align-items:center;gap:14px;margin-bottom:8px;animation:brandIn 1.5s cubic-bezier(.16,1,.3,1) both}.loading .brand-name{font-family:var(--kai);font-size:30px;font-weight:500;letter-spacing:12px;text-indent:12px;color:var(--jade-deep)}.loading .seal{writing-mode:vertical-rl;font-family:var(--kai);font-size:12px;letter-spacing:2px;color:#fdf6ee;background:#bf3f2b;padding:5px 4px;border-radius:3px;transform:rotate(-4deg);box-shadow:0 2px 8px #8c28184d;-webkit-user-select:none;user-select:none}@keyframes brandIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}.loading .lotus{margin-bottom:22px;filter:drop-shadow(0 14px 26px rgba(47,74,64,.22));animation:lotusFloat 6.5s ease-in-out infinite}.loading .lotus-svg{display:block;width:244px;height:252px;transform-origin:50% 60%;animation:lotusBreathe 4.8s ease-in-out infinite}.loading .petal{stroke:#d278a052;stroke-width:.7}.loading .leaf{fill:url(#leafGrad);opacity:.92}.loading .leaf-notch{fill:#dcebe6;opacity:.9}.loading .leaf-eye{fill:#14282447}.loading .vein{stroke:#ffffff57;stroke-width:.7}.loading .stamen{stroke:#e6c05f;stroke-width:1.1;stroke-linecap:round}.loading .anther{fill:#f4de93}.loading .pod{fill:#cfe0a6}.loading .seed{fill:#8fae68}.loading .halo{animation:haloPulse 5s ease-in-out infinite;transform-origin:100px 116px}@keyframes lotusFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes lotusBreathe{0%,to{transform:scale(1) rotate(-1deg)}50%{transform:scale(1.03) rotate(1deg)}}@keyframes haloPulse{0%,to{opacity:.5}50%{opacity:.9}}.loading .petal-fall{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.loading .petal-fall svg{position:absolute;top:-6vh;fill:#e076a657;will-change:transform,opacity;animation:petalFall var(--dur, 13s) linear var(--delay, 0s) infinite}.loading .petal-fall svg:nth-child(1){left:16%;width:15px;--dur: 14s;--delay: 0s}.loading .petal-fall svg:nth-child(2){left:55%;width:11px;--dur: 17s;--delay: 5s;fill:#ffffff80}.loading .petal-fall svg:nth-child(3){left:80%;width:13px;--dur: 15.5s;--delay: 9s}@keyframes petalFall{0%{transform:translateZ(0) rotate(0);opacity:0}8%{opacity:1}50%{transform:translate3d(-5vw,55vh,0) rotate(150deg)}88%{opacity:.85}to{transform:translate3d(3vw,112vh,0) rotate(300deg);opacity:0}}.loading h2{display:flex;align-items:center;gap:16px;font-family:var(--kai);font-size:25px;letter-spacing:8px;text-indent:8px;color:var(--jade-deep);font-weight:500;animation:poemIn .9s cubic-bezier(.16,1,.3,1) both}.loading h2:before,.loading h2:after{content:"";width:34px;height:1px;background:linear-gradient(90deg,#2f4a4000,#2f4a4066)}.loading h2:after{transform:scaleX(-1)}@keyframes poemIn{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}.loading .ink-track{position:relative;width:min(320px,64vw);height:2px;margin-top:26px;background:#2f4a4029;border-radius:1px}.loading .ink-fill{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:1px;background:linear-gradient(90deg,var(--jade),var(--lotus));transform-origin:left center;transition:transform .35s cubic-bezier(.25,1,.4,1)}.loading .ink-tip-rail{position:absolute;top:0;right:0;bottom:0;left:0;transition:transform .35s cubic-bezier(.25,1,.4,1)}.loading .ink-tip{position:absolute;right:-3px;top:50%;width:7px;height:7px;transform:translateY(-50%);border-radius:50%;background:var(--lotus);box-shadow:0 0 10px #e076a6bf}.loading .pct{margin-top:12px;font-family:var(--serif);color:var(--ink-soft);font-size:13px;letter-spacing:3px}.loading .pct b{font-size:17px;font-weight:500;color:var(--jade-deep)}@media (max-width: 480px){.loading .lotus-svg{width:196px;height:202px}.loading .brand-name{font-size:24px;letter-spacing:8px;text-indent:8px}.loading h2{font-size:20px;letter-spacing:5px;text-indent:5px}}@media (prefers-reduced-motion: reduce){.loading:before,.loading:after,.loading .petal-fall svg,.loading .lotus,.loading .lotus-svg,.loading .halo{animation:none}}.intro{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;padding:calc(12px + env(safe-area-inset-top,0px)) calc(12px + env(safe-area-inset-right,0px)) calc(12px + env(safe-area-inset-bottom,0px)) calc(12px + env(safe-area-inset-left,0px));text-align:center;background:linear-gradient(180deg,#1428240d,#14282452);animation:fadeIn 1.6s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.intro .scroll{box-sizing:border-box;width:min(680px,92vw);max-height:calc(100vh - 24px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));max-height:calc(100dvh - 24px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));padding:48px 60px;max-width:92vw;position:relative;overflow-x:hidden;overflow-y:auto;scrollbar-width:none;color:var(--ui-text);background:var(--lotus-paper-surface);border:1px solid var(--ui-border);border-radius:30px 30px 34px 14px;box-shadow:inset 0 1px #ffffffd9,0 18px 54px #0d2a234d;backdrop-filter:blur(18px) saturate(.95);-webkit-backdrop-filter:blur(18px) saturate(.95);animation:scrollOpen 2s cubic-bezier(.16,1,.3,1)}.intro .scroll::-webkit-scrollbar{display:none}@keyframes scrollOpen{0%{opacity:0;transform:translateY(24px) scale(.96);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}.intro h1{font-family:var(--kai);font-size:clamp(46px,9vw,96px);font-weight:500;letter-spacing:14px;color:var(--ui-text);text-shadow:0 1px 0 rgba(255,255,255,.75),0 6px 24px rgba(13,42,35,.16)}.intro .sub{margin-top:18px;font-family:var(--serif);font-size:clamp(15px,2.4vw,21px);letter-spacing:8px;color:var(--ui-text)}.intro .performance-notice{width:min(560px,100%);box-sizing:border-box;margin:28px auto 0;padding:12px 16px;display:flex;align-items:flex-start;gap:10px;text-align:left;border:1px solid rgba(93,114,91,.2);border-radius:14px;background:linear-gradient(135deg,#ffffff57,#dae5cf38);color:var(--ui-muted);font-size:12px;line-height:1.75;letter-spacing:1px}.intro .performance-notice-title{flex:0 0 auto;font-family:var(--kai);font-weight:600;letter-spacing:2px;color:var(--ui-text)}.intro .actions{margin-top:28px;display:flex;gap:18px;flex-wrap:wrap;justify-content:center}.intro .hint{margin-top:28px;font-size:12px;letter-spacing:4px;color:var(--ui-muted)}.touch-only,.is-touch .desktop-only{display:none}.is-touch .touch-only{display:inline}.btn{font-family:var(--serif);font-size:16px;letter-spacing:4px;padding:13px 30px;border-radius:30px;cursor:pointer;color:var(--ui-text);border:1px solid var(--stroke);background:var(--lotus-paper-surface);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 5px 18px #0d2a2324;transition:all .3s ease}.btn:hover{transform:translateY(-2px);background:var(--glass-strong);box-shadow:0 10px 30px #14282447}.btn.primary{background:linear-gradient(135deg,#8a3159f5,#315f52f5);border-color:var(--ui-dark-border);color:var(--ui-on-dark)}.btn.primary:hover{box-shadow:0 12px 36px #e58aac66}.hud{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;pointer-events:none}.hud>*{pointer-events:auto}.hud-tl{position:fixed;top:20px;left:22px;padding:15px 20px 17px;border-top:2px solid rgba(200,96,139,.42)}.hud-tl .name{font-family:var(--kai);font-size:20px;letter-spacing:4px;color:var(--ui-text);text-shadow:0 1px 0 rgba(255,255,255,.65)}.hud-tl .meta{margin-top:6px;font-size:12px;letter-spacing:2px;color:var(--ui-muted)}.hud-tl .fps{margin-top:4px;font-size:10px;letter-spacing:1px;color:var(--ui-muted)}.frog-stats{margin-top:10px;padding:9px 10px;border:1px solid rgba(35,77,65,.18);border-radius:14px 14px 14px 5px;background:linear-gradient(135deg,#ffffff57,#cee1c73d);color:var(--ui-text)}.frog-stats-head{display:flex;align-items:baseline;gap:5px;font-size:11px;letter-spacing:2px}.frog-stats-head strong{font-family:var(--serif);font-size:17px;line-height:1;color:#704913;font-variant-numeric:tabular-nums}.frog-stats-head small{font-size:10px;color:var(--ui-muted)}.frog-stats-times{display:flex;gap:10px;margin-top:6px;font-size:10px;letter-spacing:1px;color:var(--ui-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.frog-stats-total{display:grid;gap:2px;margin-top:4px;max-width:220px;font-size:9px;letter-spacing:.7px;color:var(--ui-muted);white-space:nowrap}.frog-stats-empty{margin-top:6px;font-size:10px;letter-spacing:1.5px;color:var(--ui-muted)}.hud-tr{position:fixed;top:calc(20px + env(safe-area-inset-top,0px));right:calc(22px + env(safe-area-inset-right,0px));display:flex;gap:10px}.icon-btn{width:46px;height:46px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:19px;background:var(--lotus-paper-surface);border:1px solid var(--stroke);color:var(--ui-text);border-radius:52% 48% 45% 55%/55% 48% 52% 45%;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:inset 0 1px #ffffffd1,0 6px 20px #0d2a232e;transition:all .25s ease}.icon-btn:hover{background:var(--glass-strong);transform:translateY(-2px)}.icon-btn.active{background:linear-gradient(135deg,#8a3159f5,#315f52f5);color:var(--ui-on-dark);border-color:var(--ui-dark-border)}.icon-btn.text{font-size:12px;letter-spacing:1px;font-family:var(--serif)}.hud-clear-toggle{letter-spacing:.5px}.hud-bl{position:fixed;bottom:22px;left:22px;width:354px;max-width:calc(100vw - 44px);padding:15px 18px 17px;border-left:3px solid rgba(68,119,89,.48)}.hud-bl .card-title{display:flex;align-items:center;gap:8px;padding-bottom:9px;margin-bottom:2px;border-bottom:1px solid rgba(35,77,65,.17);font-family:var(--kai);font-size:14px;letter-spacing:3px;color:var(--ui-text)}.hud-bl .lotus-seal{display:inline-grid;place-items:center;width:22px;height:22px;flex:0 0 22px;border-radius:50% 50% 46% 54%/58% 50% 50% 42%;background:linear-gradient(145deg,#b54f79,#774459);color:var(--ui-on-dark);box-shadow:0 3px 9px #5c273e38;font-family:var(--kai);font-size:11px;letter-spacing:0}.hud-bl .control-list{display:grid}.hud-bl .row{display:grid;grid-template-columns:64px minmax(0,1fr);align-items:center;gap:10px;min-height:30px;margin:0;padding:5px 0;border-bottom:1px solid rgba(35,77,65,.11);font-size:12px;letter-spacing:1px;color:var(--ui-text)}.hud-bl .row:last-child{border-bottom:0}.hud-bl .k{width:100%;min-width:0;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;font-family:var(--serif);background:#315f5221;border:1px solid rgba(35,77,65,.26);color:var(--ui-text);padding:2px 6px;border-radius:999px;font-size:10px;line-height:18px;letter-spacing:.8px}.hud-bl .desc{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.45}.hud-bl .row.featured .k{background:linear-gradient(135deg,#8a3159f0,#315f52f0);border-color:#8a315957;color:var(--ui-on-dark)}.hud-bl .row.featured .desc{color:#6f2948;font-weight:600}.hud-bl .row.note .k{background:#b88d3a24;border-color:#70491347;color:#704913}.hud-bl .row.note .desc{color:var(--ui-muted);font-size:11px}.poem-card{position:fixed;bottom:26px;right:24px;padding:16px 22px;width:max-content;max-width:none;cursor:pointer;text-align:right;white-space:nowrap;border-right:3px solid rgba(200,96,139,.42)}.poem-card .verse{font-family:var(--kai);font-size:clamp(15px,1.9vw,20px);letter-spacing:3px;line-height:1.5;white-space:nowrap;color:var(--ui-text);text-shadow:0 1px 0 rgba(255,255,255,.7)}.poem-card .seal{margin-top:12px;font-size:10px;letter-spacing:3px;color:var(--ui-accent)}.whisper{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:25;padding:26px 40px;text-align:center;pointer-events:none;max-width:min(88vw,760px);background:var(--lotus-dark-surface);border:1px solid var(--ui-dark-border);border-radius:18px;box-shadow:var(--ui-shadow);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);animation:whisperIn .6s ease,whisperOut .6s ease var(--whisper-fade-delay, 3.4s) forwards}.whisper .verse{font-family:var(--kai);font-size:clamp(20px,4vw,32px);letter-spacing:8px;color:var(--ui-on-dark);text-shadow:0 3px 16px rgba(0,0,0,.45)}.whisper.fishing{top:clamp(70px,8vh,96px);transform:translate(-50%);padding:14px 26px 15px;max-width:min(calc(100vw - 360px),680px);border-radius:999px;animation:fishingWhisperIn .42s cubic-bezier(.16,1,.3,1) both,fishingWhisperOut .5s ease var(--whisper-fade-delay, 3.4s) forwards}.whisper.fishing .verse{font-size:clamp(15px,1.8vw,22px);line-height:1.45;letter-spacing:4px}.whisper.urgent{background:#4b341cf0;border-color:#ffd28a6b}.whisper.urgent .verse{color:#ffd28a;text-shadow:0 3px 18px rgba(35,20,8,.72),0 0 24px rgba(216,181,106,.26)}@keyframes whisperIn{0%{opacity:0;transform:translate(-50%,-40%);filter:blur(8px)}to{opacity:1;transform:translate(-50%,-50%);filter:none}}@keyframes whisperOut{to{opacity:0;transform:translate(-50%,-58%);filter:blur(6px)}}@keyframes fishingWhisperIn{0%{opacity:0;transform:translate(-50%,-12px);filter:blur(6px)}to{opacity:1;transform:translate(-50%);filter:none}}@keyframes fishingWhisperOut{to{opacity:0;transform:translate(-50%,-16px);filter:blur(5px)}}.panel{position:fixed;top:0;right:0;height:100%;width:320px;max-width:86vw;z-index:30;padding:calc(26px + env(safe-area-inset-top,0px)) calc(24px + env(safe-area-inset-right,0px)) calc(26px + env(safe-area-inset-bottom,0px)) 24px;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;touch-action:pan-y;background:var(--lotus-dark-surface);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-left:1px solid var(--ui-dark-border);border-radius:34px 0 0 34px;color:var(--ui-on-dark);box-shadow:-14px 0 38px #0d2a2347;transform:translate(100%);transition:transform .5s cubic-bezier(.16,1,.3,1)}.panel.open{transform:none}.panel h3{font-family:var(--kai);font-size:22px;letter-spacing:5px;margin-bottom:4px}.panel .desc{font-size:11px;letter-spacing:2px;color:var(--ui-on-dark-muted);margin-bottom:22px}.panel .group{margin-bottom:14px;padding:12px 13px;border:1px solid rgba(255,248,231,.12);border-radius:18px 18px 18px 7px;background:linear-gradient(145deg,#fff8e712,#7eae920d)}.panel .group>label{display:block;font-family:var(--serif);font-size:14px;letter-spacing:3px;margin-bottom:10px;color:var(--lotus-soft)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:8px 14px;border-radius:20px;cursor:pointer;font-size:13px;letter-spacing:2px;border:1px solid var(--ui-dark-border);background:linear-gradient(145deg,#fff8e721,#7eae9214);color:var(--ui-on-dark);transition:all .25s ease}.chip:hover{background:#fff8e72e}.chip.active{background:linear-gradient(135deg,#8a3159f5,#315f52f5);border-color:var(--ui-dark-border);color:var(--ui-on-dark)}.panel .close{position:absolute;top:calc(18px + env(safe-area-inset-top,0px));right:calc(18px + env(safe-area-inset-right,0px));cursor:pointer;font-size:20px;opacity:.7}.panel .close:hover{opacity:1}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:35;background:#0c181673;display:flex;align-items:center;justify-content:center;animation:fadeIn .3s ease}.modal{width:440px;max-width:90vw;padding:32px 34px 35px;color:var(--ui-on-dark)}.modal h3{font-family:var(--kai);font-size:24px;letter-spacing:6px;margin-bottom:20px;text-align:center}.modal .kv{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px dashed rgba(255,255,255,.14);font-size:14px;letter-spacing:2px}.modal .kv .k{font-family:var(--serif);background:#ffffff24;padding:2px 10px;border-radius:6px;font-size:12px}.modal .ok{margin-top:26px;text-align:center}.photo-ui{position:fixed;top:0;right:0;bottom:0;left:0;z-index:28;pointer-events:none}.photo-frame{position:fixed;top:0;right:0;bottom:0;left:0;margin:auto;pointer-events:none;border:2px solid rgba(255,255,255,.5);box-shadow:0 0 0 100vmax #08100f8c}.photo-frame.landscape{width:80vw;height:56.25vw;max-height:80vh;max-width:142vh}.photo-frame.portrait{width:50vh;height:88.8vh;max-width:80vw}.photo-frame .verse{position:absolute;bottom:18px;right:22px;padding:12px 9px;font-family:var(--kai);font-size:22px;letter-spacing:5px;color:var(--ui-on-dark);background:#173b35db;border:1px solid var(--ui-dark-border);border-radius:10px;text-shadow:0 2px 16px rgba(0,0,0,.6);writing-mode:vertical-rl}.photo-frame.landscape .verse{writing-mode:horizontal-tb}.photo-bar{position:fixed;bottom:calc(28px + env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%);z-index:29;display:flex;gap:12px;align-items:center;padding:14px 22px;pointer-events:auto}.photo-bar .sld{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:11px;letter-spacing:2px;color:var(--ui-on-dark-muted)}.photo-bar input[type=range]{width:110px;accent-color:var(--lotus)}.shutter{width:56px;height:56px;border-radius:50%;cursor:pointer;background:linear-gradient(135deg,var(--lotus),var(--jade));border:3px solid #fff;transition:transform .2s ease}.shutter:active{transform:scale(.9)}.touch-controls{--touch-control-size: clamp(116px, 30vw, 132px);--touch-control-edge: 22px;position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;height:100dvh;z-index:22;display:none;pointer-events:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.is-touch .touch-controls{display:block}.touch-controls[aria-hidden=true],.touch-controls[data-disabled=true],.touch-controls.is-disabled{visibility:hidden;opacity:0;pointer-events:none}.joystick{position:fixed;bottom:calc(var(--touch-control-edge, 22px) + env(safe-area-inset-bottom,0px));left:calc(var(--touch-control-edge, 22px) + env(safe-area-inset-left,0px));width:var(--touch-control-size, 120px);height:var(--touch-control-size, 120px);z-index:22;display:none;border-radius:50%;touch-action:none;pointer-events:auto;contain:layout paint;filter:drop-shadow(0 8px 22px rgba(8,28,25,.28))}.is-touch .joystick,.is-touch .touch-controls .joystick{display:block}.joystick-base,.joystick .base{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid rgba(255,255,255,.42);border-radius:50%;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.03) 0 34%,transparent 35%),radial-gradient(circle at 34% 28%,#ffffff29,#1c4b3f38 70%);box-shadow:inset 0 1px #ffffff3d,inset 0 0 24px #12362e2e,0 5px 18px #081c192e;backdrop-filter:blur(9px) saturate(1.08);-webkit-backdrop-filter:blur(9px) saturate(1.08);pointer-events:none}.joystick-knob,.joystick .knob{position:absolute;left:calc(50% - 25px);top:calc(50% - 25px);width:50px;height:50px;border:1px solid rgba(255,255,255,.82);border-radius:50%;background:linear-gradient(145deg,#faf7ebbd,#73a68f9e);box-shadow:inset 0 1px #ffffffb8,0 5px 15px #081c194d;will-change:transform;pointer-events:none}.joystick-dir-up,.joystick-dir-down,.joystick-dir-left,.joystick-dir-right{position:absolute;z-index:1;display:grid;place-items:center;width:22px;height:22px;color:#ffffffbf;font-size:0;line-height:1;text-shadow:0 1px 5px rgba(8,28,25,.55);pointer-events:none}.joystick-dir-up{top:8px;left:calc(50% - 11px)}.joystick-dir-down{bottom:8px;left:calc(50% - 11px)}.joystick-dir-left{top:calc(50% - 11px);left:8px}.joystick-dir-right{top:calc(50% - 11px);right:8px}.joystick-dir-up:before{content:"▲";font-size:10px}.joystick-dir-down:before{content:"▼";font-size:10px}.joystick-dir-left:before{content:"◀";font-size:10px}.joystick-dir-right:before{content:"▶";font-size:10px}.touch-altitude{position:fixed;right:calc(var(--touch-control-edge, 22px) + env(safe-area-inset-right,0px));bottom:calc(var(--touch-control-edge, 22px) + env(safe-area-inset-bottom,0px));z-index:23;display:none;flex-direction:column;gap:10px;pointer-events:auto;touch-action:none}.is-touch .touch-altitude,.is-touch .touch-controls .touch-altitude{display:flex}.touch-altitude-btn{display:inline-grid;place-items:center;width:50px;height:50px;min-width:48px;min-height:48px;padding:0;border:1px solid rgba(255,255,255,.48);border-radius:18px;color:#fffffff0;background:linear-gradient(145deg,#f9f7eb40,#2153456b);box-shadow:inset 0 1px #ffffff47,0 5px 16px #081c193d;backdrop-filter:blur(9px) saturate(1.08);-webkit-backdrop-filter:blur(9px) saturate(1.08);font-family:var(--kai);font-size:14px;line-height:1;touch-action:none;pointer-events:auto;cursor:pointer;-webkit-tap-highlight-color:transparent}.touch-altitude-btn:active,.touch-altitude-btn.active,.touch-altitude-btn[aria-pressed=true]{transform:scale(.93);border-color:#fff8e7d6;background:linear-gradient(145deg,#b54f79c2,#2f5f52c7)}.touch-altitude-btn:focus-visible{outline:2px solid rgba(255,248,231,.94);outline-offset:3px}.touch-look-hint{position:fixed;right:calc(var(--touch-control-edge, 22px) + env(safe-area-inset-right,0px));bottom:calc(138px + env(safe-area-inset-bottom,0px));z-index:21;display:none;width:max-content;max-width:min(42vw,180px);padding:7px 11px;border:1px solid rgba(255,255,255,.22);border-radius:999px;color:#ffffffc2;background:#143a3147;box-shadow:0 4px 14px #081c1924;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);font-size:10px;line-height:1.3;letter-spacing:1.2px;text-align:center;white-space:nowrap;pointer-events:none}.is-touch .touch-look-hint,.is-touch .touch-controls .touch-look-hint{display:block}.is-touch .hud-bl,.is-touch .poem-card{display:none}.toast{position:fixed;bottom:calc(96px + env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%);z-index:36;padding:12px 22px;font-size:13px;letter-spacing:3px;color:var(--ui-on-dark);animation:fadeIn .3s ease}@media (max-width: 720px){.intro .scroll{width:min(620px,92vw);padding:34px 24px}.intro h1{font-size:clamp(38px,14vw,64px);letter-spacing:8px;text-indent:8px}.intro .sub{margin-top:14px;font-size:14px;letter-spacing:5px;text-indent:5px}.intro .performance-notice{margin-top:22px;padding:10px 12px;font-size:11px;line-height:1.65}.intro .actions{margin-top:24px;gap:12px}.intro .hint{margin-top:22px;letter-spacing:2px}.poem-card{bottom:calc(18px + env(safe-area-inset-bottom,0px));right:calc(16px + env(safe-area-inset-right,0px));padding:12px 16px}body:not(.is-touch) .poem-card{bottom:302px}.poem-card .verse{font-size:clamp(12px,3.2vw,17px);letter-spacing:2px}.hud-tl{padding:10px 14px;top:calc(64px + env(safe-area-inset-top,0px));left:calc(14px + env(safe-area-inset-left,0px))}.hud-bl{left:calc(14px + env(safe-area-inset-left,0px));bottom:calc(14px + env(safe-area-inset-bottom,0px));max-width:calc(100vw - 28px)}.frog-stats-times{gap:8px}.frog-stats-total{max-width:200px;overflow:hidden;text-overflow:ellipsis}.hud-tr{top:calc(14px + env(safe-area-inset-top,0px));right:calc(14px + env(safe-area-inset-right,0px));gap:6px}.icon-btn{width:40px;height:40px;font-size:17px}.hud-clear-toggle{font-size:10px;letter-spacing:0}.whisper.fishing{top:calc(env(safe-area-inset-top,0px) + 62px);width:max-content;max-width:calc(100vw - 28px);padding:11px 17px 12px}.whisper.fishing .verse{font-size:clamp(14px,4vw,18px);letter-spacing:2px}}@media (max-width: 720px) and (orientation: portrait){.touch-controls,.joystick{--touch-control-size: clamp(116px, 31vw, 128px)}.touch-controls,.joystick,.touch-altitude,.touch-look-hint{--touch-control-edge: 18px}.touch-look-hint{bottom:calc(140px + env(safe-area-inset-bottom,0px))}}@media (max-height: 560px) and (orientation: landscape){.intro .scroll{padding:20px 32px}.intro h1{font-size:clamp(34px,9vh,48px);letter-spacing:8px;text-indent:8px}.intro .sub{margin-top:8px;font-size:13px}.intro .performance-notice{margin-top:14px;padding:8px 12px;line-height:1.45}.intro .actions{margin-top:14px}.intro .hint{margin-top:12px}.touch-controls,.joystick{--touch-control-size: clamp(96px, 25vh, 108px)}.touch-controls,.joystick,.touch-altitude,.touch-look-hint{--touch-control-edge: 14px}.joystick-knob,.joystick .knob{left:calc(50% - 22px);top:calc(50% - 22px);width:44px;height:44px}.joystick-dir-up{top:5px}.joystick-dir-down{bottom:5px}.joystick-dir-left{left:5px}.joystick-dir-right{right:5px}.touch-altitude{flex-direction:row;gap:8px}.touch-altitude-btn{width:46px;height:46px;min-width:46px;min-height:46px;border-radius:16px;font-size:13px}.touch-look-hint{right:calc(14px + env(safe-area-inset-right,0px));bottom:calc(72px + env(safe-area-inset-bottom,0px));max-width:min(30vw,170px);padding:6px 10px;font-size:9px}}@media (max-width: 360px) and (orientation: portrait){.hud-tr{gap:5px}.icon-btn{width:36px;height:36px;font-size:16px}.hud-clear-toggle{font-size:10px}.touch-controls,.joystick{--touch-control-size: 108px}.touch-controls,.joystick,.touch-altitude,.touch-look-hint{--touch-control-edge: 14px}.joystick-knob,.joystick .knob{left:calc(50% - 23px);top:calc(50% - 23px);width:46px;height:46px}.touch-altitude-btn{width:48px;height:48px}.touch-look-hint{bottom:calc(132px + env(safe-area-inset-bottom,0px))}}@media (max-width: 720px) and (max-height: 680px){body:not(.is-touch) .poem-card{display:none}}@media (max-height: 500px) and (orientation: landscape){.whisper.fishing{top:clamp(126px,34vh,148px);width:max-content;max-width:min(calc(100vw - 40px),620px);padding:9px 18px 10px}.whisper.fishing .verse{font-size:clamp(13px,2.2vw,17px);letter-spacing:2px}}@media (max-height: 430px) and (orientation: landscape){.hud-tl{top:calc(58px + env(safe-area-inset-top,0px));padding:8px 12px}.hud-tl .name{font-size:17px}.frog-stats{margin-top:6px;padding-top:6px}.frog-stats-times{margin-top:4px}.frog-stats-total{display:none}.hud-bl{bottom:calc(12px + env(safe-area-inset-bottom,0px));padding-top:11px;padding-bottom:13px}.hud-bl .card-title{padding-bottom:6px}.hud-bl .row{min-height:26px;padding:3px 0}}
