@font-face{font-family:'LXGW WenKai TC';src:url('vendor/fonts/LXGWWenKaiTC-Regular.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:'LXGW WenKai TC';src:url('vendor/fonts/LXGWWenKaiTC-Medium.woff2') format('woff2');font-style:normal;font-weight:500;font-display:swap}
:root{--font-handwritten:'LXGW WenKai TC',Island,'Microsoft JhengHei',serif;font-synthesis:none}h1,h2,h3,h4,h5,h6,strong,b{font-weight:500}input,textarea,select{font-family:var(--font-handwritten)}
#sheet{max-height:calc(100dvh - 28px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
/* Keep controls above the world and soften only the paper's outer edge. */
#game #sheet,#game #placement,#game #lifePanel:not([data-kind=spirit]){background:radial-gradient(ellipse at 50% 42%,#fffaf0fc 12%,#fffaf0f2 66%,#fffaf0a6 100%);border-color:#fffbea99;box-shadow:0 12px 38px #284e552b;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
#game .life-close,#game .sheet-head button{width:44px;height:44px;min-width:44px;min-height:44px}
#game .life-link,#game .mood-choice,#game .mood-picker-tab{min-height:44px;touch-action:manipulation}
#game #lifePanel,#game #sheet{touch-action:pan-y;-webkit-overflow-scrolling:touch}
@font-face{font-family:Island;src:url('vendor/NotoSansTC.ttf') format('truetype');font-display:swap;font-weight:100 900}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#b5e2e7;color:#315954;font-family:var(--font-handwritten);font-weight:400}button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible{outline:3px solid #62a39d;outline-offset:5px}button:disabled{opacity:.45;cursor:default}button:active{transform:translateY(2px)}[hidden]{display:none!important}#game{position:relative;width:100%;height:100%;isolation:isolate}#world{width:100%;height:100%;display:block;touch-action:none;outline:none}#loading{position:absolute;inset:0;z-index:30;display:grid;place-content:center;text-align:center;background:#dceeed;color:#568e89;transition:opacity .6s}.spark{font-size:56px;animation:breathe 2s ease-in-out infinite}#loading p{font-size:15px;letter-spacing:.22em}#top{position:absolute;top:max(20px,env(safe-area-inset-top));left:24px;right:24px;display:flex;align-items:center;justify-content:space-between;pointer-events:none;transition:opacity .3s}#top>div{text-shadow:0 1px 5px #f3f4dd}.island-label{font-size:17px;font-weight:500;letter-spacing:.04em}#saved{display:block;font-size:11px;margin-top:5px;color:#53827c}#settings{pointer-events:auto}.round{width:69px;height:75px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px solid #fff8dc;background:linear-gradient(155deg,#fff9e7,#f3e2b9);box-shadow:0 3px 0 #c7b58b55,0 5px 16px #567b7130;border-radius:28px;color:#477e75;transition:transform .15s,background .2s}.round svg{width:29px;height:29px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linejoin:round;stroke-linecap:round}.round span{font-size:11px;letter-spacing:.08em}.round.small{width:46px;height:46px;border-radius:50%}.round.small svg{width:23px;height:23px}.primary{border:1px solid #fffae9;background:linear-gradient(160deg,#fff8df,#efdaad);color:#5f6947;border-radius:30px;padding:15px 28px;box-shadow:0 4px 0 #b9a37055;font-weight:500;letter-spacing:.08em}.primary span{margin-left:18px}#welcome{position:absolute;inset:0;text-align:center;pointer-events:none;padding-top:max(44px,7vh);background:linear-gradient(#d2eeeb55,transparent 27%,transparent 68%,#b5d9d452)}#welcome .eyebrow{font-size:12px;letter-spacing:.22em;margin:0 0 7px}h1{font-weight:500;letter-spacing:.22em;font-size:clamp(35px,6.4vw,61px);margin:0;color:#2d6b64;text-shadow:0 2px 0 #ffffdc80}.welcome-bottom{position:absolute;bottom:max(42px,6vh);left:0;right:0}.welcome-bottom p{font-size:14px;line-height:1.9;text-shadow:0 1px 4px #fff}.welcome-bottom button{pointer-events:auto;min-width:244px}#dock{position:absolute;bottom:max(22px,env(safe-area-inset-bottom));left:50%;display:flex;gap:17px;transform:translateX(-50%)}#toast{position:absolute;top:94px;left:50%;transform:translateX(-50%) translateY(-6px);width:max-content;max-width:88vw;background:#fff9e6eF;border:1px solid #fff7e6;box-shadow:0 6px 22px #4b78651c;border-radius:22px;padding:10px 17px;font-size:12px;line-height:1.7;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;text-align:center}#toast.show{opacity:1;transform:translateX(-50%)}#tapHint{position:absolute;bottom:123px;left:50%;transform:translateX(-50%);font-size:12px;background:#edf5eabd;border-radius:20px;padding:8px 16px;pointer-events:none;white-space:nowrap}#sheet{position:absolute;left:50%;bottom:max(20px,env(safe-area-inset-bottom));transform:translateX(-50%);width:min(390px,calc(100% - 28px));background:#fff9eaf7;border:1px solid #ffffed;border-radius:26px;box-shadow:0 10px 40px #335b5140;padding:19px 20px 22px;backdrop-filter:blur(15px);z-index:10}.sheet-head{display:flex;align-items:center;justify-content:space-between}.sheet-head h2{font-size:17px;font-weight:500;margin:0}.sheet-head button{border:0;background:none;color:#507b74;font-size:27px;width:35px;height:35px}#sheetNote{font-size:12px;line-height:1.7;color:#718b78;margin:5px 0 14px}#sheetOptions{display:grid;grid-template-columns:1fr 1fr;gap:9px}#sheetOptions button{border:1px solid #e4dfc6;background:#f3efde;border-radius:14px;min-height:50px;font-size:13px;color:#496d5d;padding:10px}#sheetOptions button.wide{grid-column:1/-1}.pill{border:1px solid #fff7e6;border-radius:18px;padding:8px 14px;background:#f6f0dbe0;color:#5d7e69;font-size:11px}#undo{position:absolute;left:22px;bottom:125px}#placement{position:absolute;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);text-align:center;width:min(390px,94%);background:#fff8e5ed;border-radius:24px;padding:12px 14px 16px;box-shadow:0 6px 26px #375d5629}#placement p{font-size:12px;margin:3px 0 12px}#placement>div{display:flex;gap:8px;justify-content:center}#placement button{border:1px solid #e5dfc6;background:#f4efda;color:#557363;border-radius:22px;padding:11px 15px;font-size:12px}#placement .primary{background:#e0ebcf;color:#406858}#eventBar{position:absolute;left:50%;bottom:max(36px,env(safe-area-inset-bottom));transform:translateX(-50%);text-align:center;width:90%;pointer-events:none}#eventCaption{font-size:15px;text-shadow:0 2px 6px #edf1dc,0 0 12px #edf1dc;margin:0 0 16px}#backHome{pointer-events:auto;border:1px solid #fef8e1;border-radius:23px;background:#fff6dfd9;color:#5a796d;padding:12px 22px;font-size:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes breathe{50%{opacity:.5;transform:scale(.94)}}@media(min-width:850px){#dock{left:auto;right:35px;transform:none;bottom:35px;flex-direction:column}#top{left:35px;right:35px;top:30px}#sheet{left:auto;right:25px;transform:none;bottom:30px}#undo{left:35px;bottom:35px}#tapHint{bottom:35px}#placement{bottom:35px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.welcome-home-choice{display:block;margin:12px auto 0;padding:12px 22px;border:1px solid #e3d9b7;border-radius:24px;background:#fff8e7e8;color:#365f57;font:inherit;cursor:pointer}
/* The travel overlay belongs to the moving three-dimensional rail scene. */
.rail-controls{position:fixed;z-index:65;left:50%;bottom:max(24px,env(safe-area-inset-bottom));transform:translateX(-50%);width:min(520px,calc(100% - 32px));display:grid;gap:8px;padding:18px 22px;border-radius:24px;background:rgba(255,251,232,.94);color:#3b6259;box-shadow:0 8px 32px #254a5624;text-align:center;box-sizing:border-box}
.rail-controls strong{font-size:21px}.rail-controls span{font-size:15px}.rail-controls div{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.rail-controls button{font:inherit;border:1px solid #b5c9aa;border-radius:18px;background:#f8f9e9;color:#3b6259;padding:10px 15px;cursor:pointer}

/* Gentle handoff between prepared scenes. */
.scene-transition{position:fixed;inset:0;z-index:80;isolation:isolate;display:grid;place-items:center;pointer-events:auto;font-family:var(--font-handwritten,'LXGW WenKai TC',serif)}
.scene-transition[hidden]{display:none}
.scene-transition[data-phase=revealing]{pointer-events:none}
.scene-transition-veil{position:absolute;inset:0;background:#eaf2e5;opacity:0;pointer-events:none}
.scene-transition-notice{position:relative;align-self:end;margin:0 16px max(30px,env(safe-area-inset-bottom));max-width:calc(100vw - 32px);padding:13px 22px;text-align:center;color:#426254;background:#fffaf0ed;border:1px solid #fffef3;border-radius:22px;box-shadow:0 5px 25px #3659441c}
.scene-transition-notice p{margin:0;font-size:16px;line-height:1.7}
.scene-transition-notice button{margin-top:7px;padding:7px 17px;min-height:44px;border:1px solid #abc5af;border-radius:20px;background:#edf4e4;color:#456450;font:inherit;cursor:pointer}
.scene-transition[data-phase=covering] .scene-transition-notice,.scene-transition[data-phase=changing] .scene-transition-notice,.scene-transition[data-phase=revealing] .scene-transition-notice{visibility:hidden}/* A quiet travel strip on narrow or shallow screens; climbing controls stay unchanged. */
@media(max-width:600px),(max-height:480px){
 #railControls{bottom:max(12px,env(safe-area-inset-bottom));width:min(420px,calc(100% - 24px));gap:7px;padding:10px 12px;border-radius:18px}
 #railControls strong{font-size:16px;line-height:1.4}
 #railControls>span{display:none}
 #railControls>div{flex-wrap:nowrap;gap:8px}
 #railControls button{flex:1;min-width:0;min-height:44px;padding:8px;font-size:14px;line-height:1.4}
}
