@font-face{font-family:DM Sans;src:url('../assets/dm-sans.ttf') format('truetype');font-style:normal;font-weight:400 700;font-display:swap}
@font-face{font-family:Instrument Serif;src:url('../assets/instrument-serif.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:Instrument Serif;src:url('../assets/instrument-serif-italic.ttf') format('truetype');font-style:italic;font-weight:400;font-display:swap}
:root{--ink:#2e3d2a;--ink-soft:#58624f;--paper:#f3f2e8;--line:rgba(54,70,45,.19);--accent:#455d36;--serif:'Instrument Serif',Georgia,serif;--sans:'DM Sans',sans-serif;--gutter:clamp(24px,4.5vw,72px)}
*{box-sizing:border-box}body{margin:0;font-family:var(--sans);font-size:14px;color:var(--ink);background:#ccd4b7;overflow:hidden}button{font:inherit;color:inherit;border:0;cursor:pointer}button:disabled{cursor:wait;opacity:.6}button,canvas{-webkit-tap-highlight-color:transparent}button:focus-visible,canvas:focus-visible{outline:2px solid var(--accent);outline-offset:6px}button{touch-action:manipulation}svg{width:24px;height:24px;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;fill:none;flex-shrink:0}.svg-library{position:absolute;width:0;height:0;overflow:hidden}[hidden]{display:none!important}#garden-app,#scene,.scene-wash,.vignette{position:fixed;inset:0}#scene canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}#scene canvas:active{cursor:grabbing}.scene-wash{pointer-events:none;background:linear-gradient(90deg,rgba(240,239,221,.96) 0%,rgba(240,239,221,.86) 21%,rgba(240,239,221,.5) 35%,rgba(240,239,221,0) 60%);transition:opacity 1.2s}.vignette{pointer-events:none;background:linear-gradient(180deg,rgba(234,236,218,.65),transparent 19%,transparent 77%,rgba(234,236,218,.72));transition:opacity .8s}.header{position:absolute;top:0;left:0;width:100%;padding:32px var(--gutter);display:flex;align-items:center;justify-content:space-between;z-index:5}.brand{display:flex;align-items:center;gap:12px;background:none;padding:0;text-align:left}.brand-leaf{width:34px;height:44px;stroke-width:1.5}.brand-name{font-family:var(--serif);display:block;font-size:40px;line-height:1}.brand-caption{font-size:8px;letter-spacing:2.6px;display:block;margin-top:7px}.header-actions{display:flex;align-items:center;gap:16px}.time-button{display:flex;align-items:center;gap:9px;background:none;font-size:12px;padding:10px 0}.time-button svg{width:20px;height:20px}.header-divider{height:20px;width:1px;background:var(--line);margin:0 3px}.icon-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:rgba(244,244,230,.25);transition:background .2s,transform .2s}.icon-button:hover{background:rgba(244,244,230,.8);transform:translateY(-1px)}.icon-button svg{width:18px;height:18px}.help-button{font-family:var(--serif);font-size:22px}.intro{position:absolute;left:var(--gutter);top:50%;transform:translateY(-45%);z-index:2;transition:opacity .65s,transform .8s;max-width:490px;pointer-events:none}.intro button{pointer-events:auto}.eyebrow{font-size:9px;letter-spacing:2.3px;line-height:1.6;margin:0 0 24px;display:flex;gap:10px;align-items:center}.eyebrow>span{display:inline-block;width:20px;height:1px;background:var(--ink)}h1{font-family:var(--serif);font-size:clamp(78px,7.7vw,118px);font-weight:400;letter-spacing:-3.5px;line-height:.93;margin:0 0 26px}h1 em{font-weight:400;color:#53623e}.intro-description{font-size:14px;line-height:1.85;color:var(--ink-soft);margin:0 0 30px}.primary-button{min-height:54px;padding:16px 23px;background:var(--ink);color:#f6f4e9;display:inline-flex;gap:28px;align-items:center;justify-content:space-between;border-radius:3px;font-size:12px;transition:background .25s,transform .25s}.primary-button:hover{background:#435737;transform:translateY(-2px)}.primary-button svg{width:19px;height:19px}.intro-note{font-size:10px;color:var(--ink-soft);display:flex;align-items:center;gap:8px;margin:20px 0 0}.tiny-dot{background:#78865a;width:4px;height:4px;border-radius:50%}.footer{position:absolute;bottom:30px;left:var(--gutter);right:var(--gutter);display:flex;align-items:center;gap:30px;z-index:3;pointer-events:none}.footer-label{display:flex;gap:12px;align-items:center;font-size:8px;letter-spacing:1.9px}.footer-number{font-size:10px;letter-spacing:0}.footer-rule{height:1px;width:32px;background:var(--ink-soft)}.controls-hint{position:absolute;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:9px;white-space:nowrap;font-size:10px;color:var(--ink-soft)}.controls-hint svg{width:15px;height:20px}.mini-map-wrap{position:absolute;right:var(--gutter);bottom:29px;z-index:4}.mini-map{position:relative;background:rgba(241,242,226,.7);border:1px solid rgba(246,249,235,.7);border-radius:5px;backdrop-filter:blur(12px);padding:9px 10px 0;width:162px;text-align:left;box-shadow:0 4px 32px rgba(48,61,29,.04);transition:background .3s}.mini-map:hover{background:rgba(246,247,233,.94)}.map-art{width:140px;height:102px;stroke-width:1}.map-tree{fill:#a6b78e;stroke:#849771;opacity:.55}.map-path{stroke:#f9f5dc;stroke-width:7}.map-pond{fill:#9abbbc;stroke:#879e96}.map-fountain{fill:#dde3cd;stroke:#879875;stroke-width:3}.map-pergola{stroke:#899278;stroke-width:1.5}.map-caption{border-top:1px solid var(--line);display:flex;align-items:center;gap:7px;height:32px;font-size:8px}.map-caption svg{width:11px;height:11px}.map-caption>span{margin-left:auto;font-size:12px}.map-north{position:absolute;top:11px;right:12px;font-size:8px;display:flex;flex-direction:column;gap:2px;align-items:center}.map-north span{font-size:15px}#map-player circle{fill:#4c6436;stroke:#f5f6e8;stroke-width:2}#map-player path{fill:#4c6436;stroke:none}.place-marker{position:absolute;left:65%;top:49%;display:flex;flex-direction:column;align-items:center;gap:10px;font-size:8px;letter-spacing:2px;pointer-events:none;text-shadow:0 1px 10px #f5f3df;opacity:.9}.marker-dot{width:5px;height:5px;border:1px solid #ffffe9;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px rgba(241,242,215,.32)}.marker-line{width:1px;height:29px;background:linear-gradient(var(--ink-soft),transparent)}[data-mode=walk] .intro,[data-mode=rest] .intro{opacity:0;transform:translateY(-40%);visibility:hidden}[data-mode=walk] .scene-wash,[data-mode=rest] .scene-wash{opacity:0}[data-mode=walk] .vignette,[data-mode=rest] .vignette{opacity:.65}[data-mode=walk] .place-marker,[data-mode=rest] .place-marker{display:none}#reticle{position:absolute;left:50%;top:50%;width:4px;height:4px;border-radius:50%;background:#f5f5e6;box-shadow:0 0 0 1px rgba(50,61,33,.45);pointer-events:none;display:none}[data-mode=walk] #reticle{display:block}.interaction{position:absolute;left:50%;bottom:110px;transform:translateX(-50%);display:flex;align-items:center;gap:16px;padding:13px 18px;background:rgba(247,247,234,.9);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.55);border-radius:4px;z-index:4;font-size:12px;white-space:nowrap}.interaction svg{width:17px;height:17px}kbd{font-family:var(--sans);border:1px solid var(--line);border-bottom-width:2px;display:inline-flex;min-width:23px;height:25px;padding:0 5px;justify-content:center;align-items:center;border-radius:3px;font-size:10px;font-weight:400;background:rgba(247,247,234,.55)}.walk-hint{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);display:flex;gap:22px;white-space:nowrap}.walk-hint>span{display:flex;align-items:center;gap:4px;font-size:9px}.walk-hint>span kbd:last-of-type{margin-right:4px}.walk-hint svg{width:16px;height:18px}.toast{position:absolute;top:112px;left:50%;transform:translate(-50%,-10px);padding:12px 20px;max-width:min(460px,85vw);text-align:center;border-radius:3px;background:rgba(247,247,234,.95);font-size:12px;line-height:1.6;opacity:0;transition:opacity .3s,transform .3s;pointer-events:none;z-index:9}.toast.visible{opacity:1;transform:translate(-50%,0)}.panel-dialog{width:min(440px,calc(100vw - 32px));max-height:calc(100dvh - 48px);border:1px solid rgba(255,255,255,.6);border-radius:7px;background:var(--paper);color:var(--ink);padding:40px;box-shadow:0 18px 80px #1b2c3340}.panel-dialog::backdrop{background:rgba(25,38,26,.28);backdrop-filter:blur(7px)}.dialog-close{position:absolute;right:16px;top:16px;width:30px;height:30px}.panel-dialog h2{font-family:var(--serif);font-size:49px;font-weight:400;line-height:1;margin:12px 0 19px;letter-spacing:-1px}.panel-dialog>.eyebrow{font-size:8px;letter-spacing:1.8px;margin:9px 20px 25px 0}.panel-dialog>p:not(.eyebrow){font-size:12px;color:var(--ink-soft);line-height:1.9}.help-rows{margin:24px 0}.help-rows>div{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line);font-size:10px;gap:16px}.help-rows kbd{margin-right:3px}.help-rows svg{width:22px}.dialog-note{font-size:10px!important;line-height:1.8!important;margin:24px 0}.panel-dialog>.primary-button{width:100%;margin-top:12px}.places-list{margin-top:25px}.place-item{display:flex;align-items:center;gap:16px;width:100%;text-align:left;padding:19px 0;background:none;border-top:1px solid var(--line)}.place-item:hover .place-name{color:#718451}.place-index{font-size:9px;color:#7b846f}.place-name{font-family:var(--serif);font-size:28px;display:block;line-height:1.1}.place-subtitle{font-size:9px;color:var(--ink-soft);display:block;margin-top:6px}.place-item svg{margin-left:auto;width:19px}.botanical-note{padding:15px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-style:italic}.load-error{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);max-width:460px;width:calc(100% - 40px);background:var(--paper);padding:32px;z-index:20;border-radius:5px}.load-error h2{font-family:var(--serif);font-size:38px;font-weight:400}.load-error p{line-height:1.8}.touch-controls{position:absolute;left:22px;bottom:75px;display:grid;grid-template-columns:repeat(3,42px);grid-template-rows:repeat(2,42px);gap:5px;z-index:5}.touch-controls button{border:1px solid #eceddb99;background:#eef0dfbb;backdrop-filter:blur(5px);border-radius:50%;font-size:20px;user-select:none;touch-action:none}.touch-controls button:first-child{grid-column:2;grid-row:1}.touch-controls button:nth-child(2){grid-column:1;grid-row:2}.touch-controls button:nth-child(3){grid-column:2;grid-row:2}.touch-controls button:nth-child(4){grid-column:3;grid-row:2}.touch-controls button:active{background:#cad4b7}
@media(min-width:1600px){.intro{top:48%}.intro-description{font-size:16px}.primary-button{font-size:13px;min-height:58px}}
@media(max-height:720px) and (min-width:769px){.header{padding-top:24px}.intro{transform:translateY(-40%)}h1{font-size:82px;margin-bottom:19px}.eyebrow{margin-bottom:18px}.intro-description{margin-bottom:24px}.intro-note{margin-top:14px}}
@media(max-width:1024px){.walk-hint{left:0;transform:none;bottom:32px;gap:16px}.footer{bottom:24px}.mini-map-wrap{bottom:24px}.intro{max-width:410px}h1{font-size:93px}.controls-hint{left:46%;font-size:9px}}
@media(max-width:768px){:root{--gutter:28px}.header{padding-top:24px}.brand-name{font-size:34px}.brand-leaf{width:29px;height:39px}.brand-caption{font-size:7px;letter-spacing:2px}.header-actions{gap:9px}.header-divider{display:none}.time-button span{display:none}.time-button{width:34px;justify-content:center}.icon-button{width:35px;height:35px}.intro{top:40%;transform:translateY(-36%)}h1{font-size:88px}.intro-description{font-size:12px}.eyebrow{font-size:8px}.scene-wash{background:linear-gradient(90deg,rgba(240,239,221,.92),rgba(240,239,221,.65) 35%,rgba(240,239,221,0) 90%)}.mini-map{width:136px;padding:4px 8px 0}.map-art{width:118px;height:89px}.map-caption{font-size:7px;height:28px;gap:5px}.mini-map-wrap{bottom:23px}.controls-hint{display:none}.footer-label{font-size:7px;gap:8px;max-width:160px;line-height:1.5}.footer-rule{width:20px}.place-marker{display:none}.walk-hint{display:none}.interaction{bottom:200px;font-size:11px}.intro-note{font-size:8px}.primary-button{min-height:51px}.panel-dialog{padding:32px}.panel-dialog h2{font-size:44px}}
@media(max-width:480px){:root{--gutter:22px}.header{padding-top:22px}.header-actions{gap:7px}.brand{gap:8px}.brand-caption{letter-spacing:1.6px}.brand-name{font-size:32px}.brand-leaf{width:26px}.help-button{display:none}.intro{top:39%;transform:translateY(-28%)}h1{font-size:82px;margin-bottom:22px;letter-spacing:-2px}.intro-description{line-height:1.8;max-width:235px}.intro .eyebrow{font-size:7px;letter-spacing:1.8px;margin-bottom:22px}.intro-note{max-width:180px;line-height:1.8;margin-top:15px}.mini-map-wrap{right:20px;bottom:22px}.footer{bottom:28px}.footer-label{max-width:155px;font-size:6px;letter-spacing:1.2px}.footer-number{font-size:8px}.footer-rule{width:14px}.scene-wash{background:linear-gradient(90deg,rgba(240,239,221,.89),rgba(240,239,221,.60) 43%,rgba(240,239,221,.03))}.map-art{height:78px}.mini-map{width:124px}.map-art{width:106px}.header .icon-button{width:32px;height:32px}.interaction{max-width:calc(100% - 32px);white-space:normal;bottom:186px}}
@media(max-height:580px){.intro{top:49%;transform:translateY(-40%)}h1{font-size:62px;margin-bottom:16px}.intro .eyebrow{margin-bottom:14px}.intro-description{margin-bottom:18px}.intro-note{display:none}.mini-map{width:125px}.map-art{width:105px;height:80px}.footer{bottom:20px}.header{padding-top:20px}.brand-caption{display:none}.touch-controls{bottom:58px}.interaction{bottom:82px}.intro-description{line-height:1.6}}
@media(max-width:380px){h1{font-size:64px}.intro{top:41%}.mini-map .map-art,.mini-map .map-north{display:none}.mini-map{padding-top:0}.map-caption{border-top:0;height:34px}.footer-label{max-width:135px}}
.avatar-controls{position:absolute;top:36px;left:50%;transform:translateX(-50%);display:flex;align-items:center;padding:4px 8px;gap:4px;z-index:6;border:1px solid rgba(246,249,235,.75);border-radius:5px;background:rgba(243,244,231,.82);backdrop-filter:blur(10px)}
.avatar-controls button{min-height:36px;display:flex;align-items:center;justify-content:center;gap:8px;background:transparent;padding:0 10px;font-size:10px;border-radius:3px;white-space:nowrap}
.avatar-controls button:hover{background:#dfe5d3}.avatar-controls svg{height:16px;width:16px}.avatar-controls kbd{min-width:18px;height:20px;font-size:8px;margin-left:3px}.avatar-control-divider{height:20px;background:var(--line);width:1px}
[data-view=third] #reticle{display:none}[data-view=third] .interaction{left:var(--gutter);transform:none;bottom:108px;max-width:320px}
@media(max-width:1100px){.avatar-controls{top:100px}.toast{top:158px}}
@media(max-width:768px){.avatar-controls{top:93px;padding:3px 5px}.avatar-controls button{min-height:34px;font-size:9px;padding:0 8px;gap:6px}.avatar-controls kbd{display:none}[data-view=third] .interaction{left:var(--gutter);bottom:191px;max-width:calc(100vw - 44px);padding:10px 12px;font-size:10px}}
@media(max-height:580px) and (min-width:600px){.avatar-controls{top:24px}.toast{top:89px}[data-view=third] .interaction{bottom:98px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}
