:root{color-scheme:light;--ink:#2b443d;--muted:#6f7f72;--paper:#f4f3eb;--line:#dce1d4;--green:#355d4d;--gold:#dbc699;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;color:#eee9d9;background:#30485a}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}[hidden]{display:none!important}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #c4a66b;outline-offset:4px}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.icon-defs{position:absolute;width:0;height:0;overflow:hidden}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}#world{position:absolute;inset:0;outline:none;touch-action:none}#world canvas{display:block;width:100%;height:100%;touch-action:none}.scene-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#152b3f88,transparent 20%,transparent 70%,#162c32b3)}body:not(.entered) .scene-shade{background:linear-gradient(90deg,#172e35cc,transparent 78%),linear-gradient(0deg,#162c3277,transparent 30%)}.topbar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:25px 34px;gap:20px;pointer-events:none}.topbar>*{pointer-events:auto}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:#f1ecd9;font-size:15px;letter-spacing:.04em}.brand svg{width:29px;height:29px;color:#d9c9a4}.top-right{display:flex;align-items:center;gap:12px}.local-pill{font-size:10px;color:#e9e6d4b3;padding-right:6px}.topbar select{color:#efeada;background:#243b42b8;border:1px solid #e5dfc93d;border-radius:20px;font-size:11px;padding:8px 12px}.help-button{width:30px;height:30px;background:#233b40a6;border:1px solid #e5dfc93d;border-radius:50%;color:#e9e4d3}.welcome{position:absolute;left:7%;top:27%;width:380px;max-width:84vw}.eyebrow{font-size:12px;letter-spacing:.08em;color:#e2cc9e}.welcome h1{font-family:"Songti SC",Georgia,serif;font-size:46px;line-height:1.5;font-weight:400;letter-spacing:.045em;margin:20px 0}.welcome p{max-width:300px;font-size:13px;line-height:2;color:#f1ead7d9}.primary{background:#d9ccaa;color:#263e36;border:0;padding:14px 20px;border-radius:5px;display:flex;align-items:center;justify-content:center;gap:24px;font-size:13px;font-weight:550}.welcome .primary{margin-top:30px;min-width:180px;justify-content:space-between}.welcome small{display:block;font-size:10px;line-height:1.9;margin-top:18px;max-width:310px;color:#e0e3d3aa}#loading{position:absolute;bottom:34px;left:7%;font-size:12px;color:#e4d6af}.garden-label{position:absolute;top:115px;left:34px;max-width:260px;pointer-events:none}.garden-label button{pointer-events:auto}.tiny-label{display:block;font-size:10px;letter-spacing:.08em;color:#b8c8b5}.garden-label h2{font-family:"Songti SC",Georgia,serif;font-size:27px;font-weight:400;line-height:1.5;margin:8px 0 14px;overflow-wrap:anywhere;text-shadow:0 2px 18px #18352b}.text-button{display:flex;align-items:center;gap:8px;color:inherit;border:0;background:transparent;padding:0;font-size:11px}.text-button svg{width:15px;height:15px}.tools{position:absolute;top:111px;right:26px;display:flex;flex-direction:column;gap:10px}.tools button{display:flex;align-items:center;gap:10px;position:relative;width:106px;min-height:44px;padding:11px 12px;color:#eee8d7;background:#243b3bd4;border:1px solid #d8d6b629;border-radius:7px;backdrop-filter:blur(12px);font-size:12px;box-shadow:0 6px 20px #17271b10}.tools button:hover{background:#385347}.tools .count{font-size:9px;margin-left:auto;color:#e4cf9d}.bottom-bar{position:absolute;left:34px;right:34px;bottom:28px;display:flex;align-items:center;gap:16px;pointer-events:none}.bottom-bar>*{pointer-events:auto}.view-switch{display:flex;gap:4px;padding:5px;border:1px solid #e7dfbb3b;background:#253d3ed9;border-radius:40px;backdrop-filter:blur(10px)}.view-switch button{background:none;border:0;color:#e5e1d3;padding:11px 17px;font-size:12px;border-radius:30px;display:flex;align-items:center;gap:8px}.view-switch button.active{background:#e4dbc4;color:#314c42}.view-switch svg{width:17px;height:17px}.icon-button{background:#253d3ed9;border:1px solid #e7dfbb3b;color:#e7dfcf;display:grid;place-items:center;width:42px;height:42px;border-radius:50%}.movement-help{font-size:11px;color:#e0e3d4b3;margin-left:auto}.lock-pointer{font-size:10px;color:#e4ddc8;background:#304c45;border:1px solid #c7c1a544;border-radius:4px;padding:9px 10px}.world-marker{position:absolute;left:50%;top:40%;display:flex;align-items:center;gap:6px;border:1px solid #e4d6ae9c;background:#f0e8d2ed;color:#334c40;border-radius:20px;padding:8px 12px;font-size:11px;transform:translate(-50%,-100%);box-shadow:0 3px 20px #22392744}.world-marker svg{width:14px;height:14px}.near-action{position:absolute;bottom:103px;left:50%;transform:translateX(-50%);background:#eee4c9;color:#304b40;border:1px solid #f1e9d3;border-radius:30px;padding:12px 18px;display:flex;align-items:center;gap:14px;font-size:12px;box-shadow:0 4px 20px #1e392c44}kbd{border:1px solid currentColor;border-radius:3px;padding:2px 5px;font:11px inherit;opacity:.6}#crosshair{position:absolute;left:50%;top:50%;width:5px;height:5px;border:1px solid white;border-radius:50%;pointer-events:none;box-shadow:0 0 2px #000}.touch-controls{display:none;position:absolute;inset:0;pointer-events:none}.joystick-wrap{position:absolute;left:max(18px,env(safe-area-inset-left));bottom:calc(102px + env(safe-area-inset-bottom));width:128px;text-align:center}.virtual-joystick{position:relative;width:128px;height:128px;border:1px solid #e4d4ab80;border-radius:50%;background:#223e3dcc;box-shadow:inset 0 0 28px #142d3155,0 5px 24px #142c3022;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.virtual-joystick::before{content:'';position:absolute;inset:12px;border:1px solid #d7cba333;border-radius:50%}.joystick-axis::before,.joystick-axis::after{content:'';position:absolute;left:50%;top:50%;background:#dfd5b348;transform:translate(-50%,-50%)}.joystick-axis::before{width:82px;height:1px}.joystick-axis::after{width:1px;height:82px}.joystick-knob{position:absolute;left:50%;top:50%;width:48px;height:48px;border-radius:50%;border:1px solid #f3e8c3bd;background:#dfd2afe8;box-shadow:0 3px 10px #102d3144;transform:translate(-50%,-50%);pointer-events:none}.virtual-joystick.is-active{border-color:#f0ddaf;background:#294b45e8}.virtual-joystick.is-active .joystick-knob{background:#f1dfb5}#joystick-note{display:block;color:#eee6cf;font-size:10px;line-height:1.5;margin-top:9px;text-shadow:0 1px 5px #16312c}#touch-look-hint{position:absolute;right:max(80px,env(safe-area-inset-right));bottom:calc(190px + env(safe-area-inset-bottom));max-width:160px;text-align:right;color:#e8e3d2;font-size:11px;line-height:1.6;text-shadow:0 1px 6px #17332f}.panel{position:fixed;inset:0 0 0 auto;margin:0;border:0;border-left:1px solid #dedfd1;padding:0;width:460px;max-width:95vw;height:100dvh;max-height:100dvh;background:var(--paper);color:var(--ink);box-shadow:-25px 0 80px #11251d33}.panel::backdrop{background:#10221f55;backdrop-filter:blur(2px)}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;padding:28px 28px 22px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--paper);z-index:2}.panel-head .tiny-label{color:var(--muted);font-size:10px}.panel-head h2{font-family:"Songti SC",Georgia,serif;font-size:28px;font-weight:500;margin:8px 0 0}.close-button{width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:50%}.panel #panel-body{padding:24px 28px;min-height:150px}.panel-foot{padding:16px 28px;font-size:10px;line-height:1.7;color:var(--muted);border-top:1px solid var(--line)}.panel p{font-size:12px;line-height:1.9;overflow-wrap:anywhere}.notice{background:#e9ece2;border-left:2px solid #849a78;padding:12px 14px;font-size:11px!important;color:#667361;margin:0 0 22px}.panel .primary{background:var(--green);color:#f3ecda;min-height:44px;width:100%;margin-top:16px}.secondary{display:flex;justify-content:center;align-items:center;gap:8px;background:transparent;border:1px solid #a9b7a3;color:var(--green);border-radius:5px;padding:11px 16px;min-height:42px;font-size:12px}.form-row{margin:0 0 18px}label{display:block;font-size:12px;margin-bottom:8px}input,textarea,.panel select{width:100%;background:#fffdf5;border:1px solid #d8ddce;color:var(--ink);border-radius:5px;padding:11px 12px;font-size:13px}textarea{resize:vertical;min-height:100px;line-height:1.7}.field-note{font-size:10px;color:var(--muted);line-height:1.7;margin:7px 0 0}.form-actions{display:flex;gap:10px;align-items:center}.form-actions .primary{margin:0}.item-list{display:flex;flex-direction:column;gap:14px}.item-row{display:flex;align-items:center;gap:15px;padding-bottom:17px;border-bottom:1px solid var(--line)}.item-icon{height:54px;width:54px;flex-shrink:0;display:grid;place-items:center;background:#e6e9de;border-radius:9px;font-size:25px}.item-info{flex:1}.item-info h3{font-size:14px;font-weight:500;margin:0 0 7px}.item-info small{display:block;color:var(--muted);font-size:10px;line-height:1.5}.item-row button{border:1px solid #acb8a7;border-radius:5px;color:var(--green);background:transparent;padding:9px 11px;font-size:11px;white-space:nowrap}.item-row button:hover{background:#e0e8d8}.section-heading{font-size:12px;margin:26px 0 14px;font-weight:500}.record{padding:14px 0;border-bottom:1px solid var(--line)}.record p{margin:0 0 9px;white-space:pre-wrap}.record-meta{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:10px;color:var(--muted)}.record-meta button{margin-left:auto;background:none;border:0;color:#94715f;font-size:10px;padding:4px}.empty{padding:20px 0;font-size:12px;color:var(--muted);line-height:1.9}.memorial-preview{text-align:center;padding:16px 0 24px}.memorial-symbol{font-size:29px;color:#8ca283;margin:0 0 16px}.memorial-preview h3{font-family:"Songti SC",Georgia,serif;font-size:29px;font-weight:400;margin:0 0 8px;overflow-wrap:anywhere}.memorial-preview .years{font-size:11px;letter-spacing:.08em;color:var(--muted)}.memorial-preview blockquote{font-size:13px;line-height:1.9;margin:18px 10px;white-space:pre-wrap;overflow-wrap:anywhere}.memorial-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.memorial-actions .secondary{padding:12px 7px}.help-list{padding-left:18px;font-size:12px;line-height:2.1;color:#52654f}.audio-row audio{width:100%;height:34px;margin:10px 0}.audio-name{font-size:12px;overflow-wrap:anywhere}.record-controls{display:flex;align-items:center;gap:10px;margin-bottom:18px}.record-controls .secondary{flex:1}.record-status{font-size:11px;color:#9b6551}.file-input{font-size:11px}#toast{position:fixed;left:50%;top:89px;transform:translateX(-50%);z-index:20;padding:12px 20px;max-width:min(90vw,500px);width:max-content;border:1px solid #e6d5ad88;background:#f0e9d8;color:#355040;border-radius:7px;font-size:12px;line-height:1.6;box-shadow:0 10px 35px #142d2d44}#ritual-caption{position:absolute;left:50%;top:23%;transform:translateX(-50%);background:#1e3a35d9;color:#f0ddae;padding:14px 24px;border:1px solid #dfc49366;border-radius:5px;font-family:"Songti SC",serif;font-size:20px;pointer-events:none}.warning{color:#9b5848!important}.download-link{color:var(--green);font-size:12px}.message-count{font-size:10px;color:var(--muted)}@media(max-width:900px){.movement-help{display:none}.topbar{padding:20px 24px}.garden-label{left:24px}.bottom-bar{left:24px;right:24px}.tools{right:20px}.local-pill{display:none}}@media(max-width:600px){.topbar{padding:18px 16px;gap:8px}.brand{font-size:12px;gap:7px}.brand svg{width:24px;height:24px}.top-right{gap:7px}.topbar select{max-width:100px;padding:7px;font-size:10px}.welcome{left:8%;top:24%;width:82%}.welcome h1{font-size:36px;max-width:290px}.welcome p{max-width:265px}.welcome small{max-width:260px}.garden-label{top:88px;left:18px;max-width:220px}.garden-label h2{font-size:23px;max-width:200px}.tools{top:auto;bottom:84px;right:14px;gap:7px}.tools button{width:43px;height:43px;min-height:43px;justify-content:center;padding:10px}.tools button>span:not(.count){display:none}.tools .count{position:absolute;right:-3px;top:-4px;background:#d8c89e;color:#263e36;padding:2px 4px;border-radius:6px;font-size:9px}.bottom-bar{left:14px;right:14px;bottom:20px;gap:10px;justify-content:center}.view-switch button{padding:10px 12px;font-size:11px}.icon-button{width:36px;height:36px}.lock-pointer{display:none}.touch-controls{display:block}.near-action{bottom:93px;font-size:11px;left:47%;padding:10px 13px}.near-action kbd{display:none}.panel{max-width:100vw;width:100vw}.panel-head{padding:22px 22px 18px}.panel #panel-body{padding:22px}.panel-foot{padding:14px 22px}.panel-head h2{font-size:26px}.world-marker{font-size:10px;padding:6px 8px}#ritual-caption{top:33%;font-size:17px;max-width:85vw;width:max-content}#toast{top:75px;font-size:11px}}
.park-nav{position:absolute;left:34px;top:260px;width:210px;display:grid;gap:8px}.park-nav button,.park-nav select{width:100%;min-height:40px;padding:10px 12px;border:1px solid #d8d6b64d;border-radius:6px;background:#243b3be8;color:#eee8d7;font-size:12px}.park-nav button[aria-pressed=true]{background:#e4dbc4;color:#314c42}.park-nav select{cursor:pointer}.park-nav p:empty{display:none}.photo-controls{padding:18px 0 24px;border-top:1px solid var(--line);margin-bottom:16px}.memorial-photo{display:block;width:112px;height:112px;border-radius:50%;object-fit:cover;margin:0 auto 20px;border:3px solid #c5ac74;background:#e9e7dc}.photo-actions{display:flex;gap:10px;margin-top:14px}.photo-actions:empty{display:none}.photo-controls input{max-width:100%}
@media(max-width:600px){.park-nav{left:18px;top:220px;width:165px;gap:6px}.park-nav button,.park-nav select{font-size:11px;padding:8px;min-height:36px}.garden-label h2{max-height:70px;overflow:auto}.near-action{max-width:160px}.joystick-wrap{left:max(14px,env(safe-area-inset-left))}.near-action{left:154px;right:70px;transform:none;max-width:none;justify-content:center;bottom:calc(96px + env(safe-area-inset-bottom));padding:10px 8px}.bottom-bar{bottom:calc(20px + env(safe-area-inset-bottom))}}
@media(max-height:600px){.park-nav{top:185px;width:165px}.garden-label{top:70px}.garden-label h2{font-size:20px;margin:4px 0 8px}.tools{top:75px}.park-nav button,.park-nav select{min-height:32px;padding:6px 10px}}
@media(any-pointer:coarse){.touch-controls{display:block}.movement-help,.lock-pointer{display:none}}
/* Orientation guidance never covers an open native dialog. */
.landscape-note{display:none}
.rotation-prompt{position:fixed;inset:0;z-index:3;display:grid;place-items:center;padding:90px max(28px,env(safe-area-inset-right)) max(32px,env(safe-area-inset-bottom)) max(28px,env(safe-area-inset-left));background:linear-gradient(160deg,#1b353ef5,#2d4b43ed);text-align:center}
.rotation-card{max-width:320px}.rotate-phone{width:80px;height:80px;color:#ddc89a;stroke-width:2;margin-bottom:22px}
.rotation-card h2{font-family:"Songti SC",Georgia,serif;font-size:27px;font-weight:400;line-height:1.5;margin:0 0 14px;color:#f2e7cc}
.rotation-card p{font-size:14px;line-height:1.8;color:#e3e7d6;margin:0 0 24px}.rotation-card small{display:block;font-size:12px;line-height:1.9;color:#bbc9b8}
.rotation-needed .topbar{z-index:4}.rotation-needed #hud{visibility:hidden}.rotation-needed #ritual-caption{visibility:hidden}
@media(any-pointer:coarse){
 .topbar{padding:calc(8px + env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 8px max(16px,env(safe-area-inset-left));min-height:60px}
 .topbar select,.help-button,.close-button,.icon-button{min-width:44px;min-height:44px}
 .welcome .landscape-note{display:block;color:#e2cc9e;font-size:12px;line-height:1.6;margin:14px 0 0;max-width:340px}
 .welcome .primary{min-height:44px;margin-top:18px}
 .view-switch button,.park-nav button,.park-nav select,.tools button,.world-marker,.near-action{min-height:44px}
 .panel{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
 .panel input,.panel textarea,.panel select{font-size:16px}
}
@media(max-height:500px) and (any-pointer:coarse) and (orientation:landscape){
 .welcome{left:max(28px,env(safe-area-inset-left));right:max(28px,env(safe-area-inset-right));top:calc(64px + env(safe-area-inset-top));bottom:max(12px,env(safe-area-inset-bottom));width:auto;max-width:none;overflow:auto;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(190px,1fr);grid-template-rows:auto auto 1fr;column-gap:32px;align-content:start}
 .welcome .eyebrow{font-size:10px;grid-column:1;grid-row:1}.welcome h1{grid-column:1;grid-row:2;font-size:clamp(24px,4vw,34px);line-height:1.3;margin:10px 0;max-width:410px;letter-spacing:.015em}
 .welcome>p:not(.landscape-note){grid-column:1;grid-row:3;font-size:11px;line-height:1.7;margin:0;max-width:390px}
 .welcome .landscape-note{grid-column:2;grid-row:1 / 3;align-self:end;margin:0 0 12px;max-width:none;line-height:1.6}
 .welcome .primary{grid-column:2;grid-row:3;align-self:start;margin:0;min-width:0;width:100%}
 .welcome small{grid-column:2;grid-row:3;align-self:start;margin-top:55px;max-width:none;line-height:1.6;font-size:10px}
 #loading{bottom:max(12px,env(safe-area-inset-bottom));left:max(28px,env(safe-area-inset-left))}
 .garden-label{display:none}
 .park-nav{left:max(16px,env(safe-area-inset-left));top:calc(66px + env(safe-area-inset-top));width:calc(100% - 300px - env(safe-area-inset-left) - env(safe-area-inset-right));max-width:340px;display:flex;gap:6px}
 .park-nav button,.park-nav select{min-width:0;width:50%;height:44px;font-size:11px;padding:6px 8px}
 .tools{top:calc(66px + env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));bottom:auto;flex-direction:row;gap:5px}
 .tools button{width:44px;height:44px;padding:10px;justify-content:center}.tools button>span:not(.count){display:none}.tools .count{position:absolute;right:-3px;top:-4px;background:#d8c89e;color:#263e36;padding:2px 4px;border-radius:6px;font-size:9px}
 .joystick-wrap{left:max(18px,env(safe-area-inset-left));width:104px;bottom:calc(76px + env(safe-area-inset-bottom))}.virtual-joystick{width:104px;height:104px}.joystick-knob{width:44px;height:44px}
 #joystick-note{width:144px;margin-left:-10px;margin-top:7px;font-size:9px;line-height:1.5}
 .bottom-bar{left:max(16px,env(safe-area-inset-left));right:max(16px,env(safe-area-inset-right));bottom:calc(10px + env(safe-area-inset-bottom));justify-content:center;gap:10px}
 .view-switch{padding:3px;gap:2px}.view-switch button{padding:8px 14px;font-size:11px;min-width:100px;justify-content:center}.icon-button{width:44px;height:44px}
 .near-action{left:50%;right:auto;transform:translateX(-50%);bottom:calc(72px + env(safe-area-inset-bottom));max-width:230px;font-size:11px;padding:10px 14px}.near-action kbd{display:none}
 #touch-look-hint{bottom:calc(132px + env(safe-area-inset-bottom));right:max(32px,env(safe-area-inset-right));max-width:180px;font-size:10px}
 .panel{width:460px;max-width:100vw}.panel-head{padding:12px 20px;align-items:center}.panel-head h2{font-size:23px;margin-top:4px}.panel #panel-body{padding:18px 20px}.panel-foot{padding:12px 20px}
 #toast{top:calc(116px + env(safe-area-inset-top));padding:8px 14px;font-size:11px}#ritual-caption{top:38%;font-size:17px;max-width:65vw;width:max-content}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
