@font-face{font-family:Poem;src:url('assets/poem-kai.woff2?v=85b71b28b10b263a') format('woff2')}*{box-sizing:border-box}body{margin:0;background:#080b0a;color:#e6e4d6;font-family:Poem,serif;overflow:hidden}button{font:inherit;border:1px solid #bfc3b455;background:#10191470;color:inherit;cursor:pointer;padding:12px 22px;transition:background .2s}button:hover{background:#89988940}button:disabled{opacity:.4;cursor:default}[hidden]{display:none!important}#world{display:block;width:100vw;height:100vh;outline:none}.letterbox{position:absolute;left:0;right:0;height:7vh;background:#070a09;pointer-events:none;z-index:4}.top{top:0}.bottom{bottom:0}header{position:absolute;z-index:5;left:35px;right:35px;top:19px;display:flex;align-items:center;gap:22px;letter-spacing:3px;font-size:17px}header i{font-style:normal;border:1px solid #b06240aa;padding:3px;font-size:13px;color:#b99b7d}header #place{margin-left:auto;font-size:14px;color:#b8beb1}header button{padding:5px 12px;font-size:13px}#welcome{position:absolute;inset:0;background:linear-gradient(90deg,#101813b0,#10181300);padding:20vh 0 0 13vw;z-index:3}h1{font-size:clamp(55px,7vw,95px);font-weight:normal;margin:22px 0 10px;letter-spacing:12px}.eyebrow,.micro{font-size:13px;color:#adb5a4;letter-spacing:3px}.subtitle{font-size:25px;letter-spacing:12px;color:#b9b7a6}.intro{font-size:19px;line-height:2;color:#bdc1b5;margin:35px 0}#begin{padding:13px 35px;font-size:19px}.micro{margin-top:22px;line-height:1.9}#hud{position:absolute;inset:0;pointer-events:none}.note{position:absolute;left:4vw;top:12vh;max-width:330px;text-shadow:0 2px 8px #000}.note span{font-size:22px;letter-spacing:5px}.note p{font-size:15px;line-height:1.9;color:#d0d2c6;max-width:290px}.note:after{content:'';display:block;width:35px;border-top:1px solid #c5caba44;margin-top:20px}#progress{position:absolute;right:4vw;top:12vh;writing-mode:vertical-rl;letter-spacing:6px;color:#a8b2a0;font-size:13px}footer{position:absolute;left:4vw;right:4vw;bottom:9vh;display:flex;justify-content:space-between;font-size:13px;color:#c1c9b7}footer span+span{color:#909c89}#brush,#next{position:absolute;right:4vw;bottom:16vh;pointer-events:auto}#brush small{display:block;margin-top:7px;font-size:11px;color:#b9c3b0}#next{bottom:25vh;letter-spacing:3px}#chapters{position:absolute;z-index:7;inset:7vh 0;background:#141d18f7;padding:5vh 12vw;overflow:auto}h2{font-weight:normal;font-size:37px;letter-spacing:10px;margin:0 0 18px}#chapters p{color:#a9b4a1}#chapter-list{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:30px 0}#chapter-list button{text-align:left;padding:16px}#chapter-list small{float:right;opacity:.6}#curtain{position:absolute;inset:0;background:#080c0a;z-index:9;pointer-events:none;display:flex;align-items:center;justify-content:center;flex-direction:column;opacity:0;transition:opacity .55s}#curtain span{font-size:40px;letter-spacing:14px;color:#d6d5c9}#curtain small{margin-top:22px;letter-spacing:6px;color:#7d8c77}#toast{position:absolute;left:50%;bottom:19vh;transform:translateX(-50%);font-size:17px;color:#dedfce;pointer-events:none;opacity:0;transition:opacity .4s;white-space:nowrap;text-shadow:0 1px 5px #000}#error{position:absolute;inset:25%;background:#20261e;z-index:20;padding:35px;line-height:2}.clean header,.clean #hud{visibility:hidden}@media(max-width:800px){header{left:20px;right:20px;top:10px;font-size:14px}header #place{font-size:11px;letter-spacing:1px}.note{max-width:210px}.note p{font-size:12px}footer span+span{display:none}#welcome{padding-left:8vw}#chapter-list{grid-template-columns:1fr}#curtain span{font-size:28px;letter-spacing:7px}}
:root{--frame-height:min(86vh,56.25vw);--frame-top:calc((100vh - var(--frame-height))/2)}#world{position:absolute;top:var(--frame-top);height:var(--frame-height);width:100vw}.letterbox{height:var(--frame-top)}header{top:calc(var(--frame-top) - 42px)}.note{top:calc(var(--frame-top) + 4vh)}#progress{top:calc(var(--frame-top) + 4vh)}footer{bottom:calc(var(--frame-top) + 2.5vh)}#brush{bottom:calc(var(--frame-top) + 9vh)}#next{bottom:calc(var(--frame-top) + 18vh)}#chapters{inset:var(--frame-top) 0}#toast{bottom:calc(var(--frame-top) + 13vh)}

.note{transition:opacity 2s;pointer-events:none}.note.quiet{opacity:.06}.note p{max-width:220px}.note span{font-size:17px}#interaction-count{position:absolute;right:3vw;top:calc(var(--frame-top) + 3vh);font-size:12px;letter-spacing:3px;color:#b3b9af}#brush.near{border-color:#d5d9bd6a;background:#101b1890}#begin{font-size:17px}footer{font-size:13px;text-shadow:0 1px 8px #000}footer span+span{font-size:11px;opacity:.5}.note:after{display:none}#welcome{background:linear-gradient(90deg,#060b0fe0,#060b0f10);padding-top:20vh}header{font-size:14px}#brush{min-width:120px;padding:10px 18px;font-size:15px}
:root{--frame-height:min(91vh,56.25vw)}header{top:max(8px,calc(var(--frame-top) - 35px))}.note{left:3vw;top:calc(var(--frame-top) + 3vh)}.note p{font-size:13px;line-height:1.8}.subtitle{letter-spacing:4px;font-size:22px}#progress{writing-mode:horizontal-tb;font-size:11px;letter-spacing:2px;right:3vw;top:calc(var(--frame-top) + 3vh);opacity:.2}#toast{left:3vw;transform:none;bottom:calc(var(--frame-top) + 9vh);font-size:13px;opacity:.8}#fruit-counter{position:absolute;left:5vw;top:calc(var(--frame-top) + 4vh);font:36px Georgia,serif;color:#4a2c22;letter-spacing:2px}.cinematic #story-note,.cinematic footer,.cinematic #brush{display:none}.cinematic #progress{opacity:.1}.paper #fruit-counter{color:#47301f}.paper header{color:#c2bcae}#literature{position:absolute;z-index:10;inset:0;background:#151c19fa;padding:6vh 10vw;overflow:auto}#literature button{float:right}#original{font:16px/2 Poem,serif;white-space:pre-wrap;color:#d9d6c7;max-width:800px;letter-spacing:.5px;user-select:text}#ending{position:absolute;inset:0;z-index:8;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#e8e3d1d9;color:#4a493e;backdrop-filter:blur(2px)}#ending h2{font-size:clamp(28px,4vw,55px);margin:30px 0;letter-spacing:7px}#ending p{font-size:15px;letter-spacing:5px}#ending button{color:#4b4a3e;background:transparent;border-color:#6f705055;margin-top:15px;min-width:160px}.clean #toast,.clean #fruit-counter{visibility:hidden}

.paper footer{color:#373d35;text-shadow:0 1px 7px #fff}.paper #interaction-count{color:#633d2a}.paper .note{color:#363e35;text-shadow:0 1px 8px #fff}.paper .note p{color:#51564d}.painting #world{cursor:crosshair}#world{touch-action:none}

.note.quiet{opacity:.36}footer #hint{font-size:14px}

.journey #story-note{display:none}.journey #fruit-counter{background:#ece8debf;padding:3px 10px;border-radius:2px}.journey footer span+span{display:none}

#ending{inset:auto 0 0;height:max(48px,var(--frame-top));background:#080b0a;color:#d0cbbd;backdrop-filter:none;flex-direction:row;gap:14px}#ending h2,#ending .eyebrow{display:none}#ending p{font-size:13px;letter-spacing:4px;margin:0 16px 0 0}#ending button{color:#d0cbbd;margin:0;min-width:auto;padding:7px 18px}
#gesture-guide{position:absolute;z-index:3;pointer-events:none;transform:translateX(-50%);max-width:220px;padding:7px 12px;font-size:13px;letter-spacing:1px;color:#e8e6d1;background:#25352a85;border:1px solid #c5d3b330;border-radius:2px;text-shadow:0 1px 4px #000}.clean #gesture-guide{visibility:hidden}
#gesture-guide.task-callout{transform:none;width:208px;max-width:calc(100vw - 32px);padding:8px 11px;white-space:pre-line;line-height:1.55;font-size:13px;letter-spacing:.5px;background:#17201bc9;border-color:#d7d9c44d;border-radius:2px;color:#eeeada;box-shadow:0 2px 10px #0002}#gesture-guide.task-callout::first-line{font-size:15px;color:#fff5d7}#gesture-guide.task-callout::after{content:'';position:absolute;left:var(--guide-leader-left);top:100%;width:var(--guide-leader-length);height:1px;transform:rotate(var(--guide-leader-angle));transform-origin:0 0;background:linear-gradient(90deg,#eee9cc88,#eee9ccd9);pointer-events:none}
.note p{max-width:270px;font-size:14px;line-height:1.9}.note.quiet{opacity:.55}footer{padding:8px 12px;margin-left:-12px;border-radius:3px;background:linear-gradient(90deg,#18221a6b,transparent 80%)}footer #key-hint{color:#d7decd;opacity:.80}.paper footer{background:linear-gradient(90deg,#f1eee08a,transparent 80%)}.paper footer #key-hint{color:#434a3d}.writing #world{cursor:crosshair}
/* Keep play instructions and the fruit count visible, including clean view. */
.cinematic footer{display:flex}.journey footer span+span,footer #key-hint{display:inline;opacity:1}
.clean #hud footer,.clean #fruit-counter,.clean #interaction-count,.clean #brush,.clean #gesture-guide{visibility:visible}
footer{gap:18px;align-items:center}footer #hint{max-width:64%;line-height:1.65}footer #key-hint{max-width:44%;text-align:right;line-height:1.65;font-size:12px;flex-shrink:0}
@media(max-width:800px){footer{gap:5px;flex-direction:column;align-items:flex-start;background:linear-gradient(90deg,#18221ac4,transparent 95%)}footer #hint,footer #key-hint{max-width:100%;text-align:left;font-size:12px}.paper footer{background:linear-gradient(90deg,#f1eee0d9,transparent 95%)}.journey #fruit-counter{font-size:30px}}
.lychee-finale #fruit-counter{color:#fff;background:#411c1bbb;text-shadow:0 1px 5px #250e0e}.lychee-finale footer{color:#fff;background:linear-gradient(90deg,#3b1c1baa,transparent 80%)}.lychee-finale footer #key-hint{color:#fff}
.lychee-poem #fruit-counter{color:#87372b;background:#eee9dfb3;text-shadow:none}.lychee-poem footer{color:#4a493f;background:linear-gradient(90deg,#f1eee08a,transparent 80%)}.lychee-poem footer #key-hint{color:#434a3d}
#narrative-cut{position:absolute;inset:var(--frame-top) 0;z-index:9;overflow:hidden;background:#101817;pointer-events:none;color:#f4efdd;--cut-progress:0;--passage-opacity:1}#narrative-cut img{position:absolute;width:105%;height:105%;object-fit:cover;filter:grayscale(.9) brightness(.36);transform:translateX(calc(var(--cut-progress) * -2%)) scale(calc(1 + var(--cut-progress) * .025))}#narrative-cut .cut-wash{position:absolute;inset:0;background:linear-gradient(90deg,#080e0de8,#15221f44 75%),linear-gradient(0deg,#08110eee,transparent 60%)}#narrative-cut[data-tone=dawn] img{filter:grayscale(.65) brightness(.66)}#narrative-cut[data-tone=sea] img{filter:grayscale(1) brightness(.36) blur(5px)}.cut-passage{position:absolute;left:10%;top:24%;max-width:560px;opacity:var(--passage-opacity);transform:translateY(calc((1 - var(--passage-opacity)) * 8px))}.cut-passage small{font-size:15px;letter-spacing:4px;color:#bdc8be}.cut-passage h2{font-size:clamp(27px,3.5vw,46px);letter-spacing:5px;margin:23px 0}.cut-passage p{font-size:clamp(17px,1.8vw,24px);line-height:1.9;letter-spacing:1px;white-space:pre-line;margin:0}.cut-passage em{display:block;font-size:12px;font-style:normal;color:#b7c0b8;margin-top:21px;line-height:1.8}.cut-continue{position:absolute;bottom:6%;right:5%;font-size:12px;letter-spacing:3px;color:#abb9ac}#narrative-cut[data-poem=true] .cut-passage p{font-size:clamp(24px,3vw,39px);line-height:2.1;letter-spacing:5px}@media(max-width:800px){.cut-passage{left:7%;top:15%;max-width:80%}.cut-passage h2{margin:12px 0;font-size:24px}.cut-passage p{font-size:16px}.cut-passage em{margin-top:10px;font-size:10px}}

.note .inner-voice{font-size:15px;color:#e7e1cf;border-left:1px solid #c9c2a45c;padding:5px 0 5px 12px;line-height:1.9;background:linear-gradient(90deg,#15201966,transparent);animation:voice-ink-in .8s ease both}.note .inner-voice:before{content:"心声";display:block;font-size:10px;letter-spacing:3px;opacity:.7;margin-bottom:4px}.paper .note .inner-voice{color:#333a30;background:linear-gradient(90deg,#eeeade88,transparent)}@keyframes voice-ink-in{from{opacity:0;filter:blur(3px);transform:translateY(5px)}to{opacity:1;filter:blur(0);transform:translateY(0)}}

body.brush-focused #world{cursor:crosshair}

.thanks-reading header,.thanks-reading #hud,.thanks-reading #toast{visibility:hidden}.thanks-reading #world{cursor:grab}.thanks-reading #world:active{cursor:grabbing}#thanks-reader{position:absolute;inset:var(--frame-top) 0;z-index:8;pointer-events:none;display:flex;justify-content:center;align-items:flex-end;padding:0 18px 14px;background:none}#thanks-reader .scroll-actions{display:flex;align-items:center;gap:22px;color:#e9e4d1;font-size:12px;text-shadow:0 1px 4px #090d08;background:#141a16b3;border:1px solid #cfccad22;padding:8px 12px;border-radius:2px}#thanks-reader button{pointer-events:auto;background:#e8e2cc0d;border:1px solid #d4cead55;color:#f1ebd7;font-size:14px;padding:6px 12px}#thanks-reader small{font-size:10px;opacity:.6;margin-left:10px}@media(max-width:700px){#thanks-reader .scroll-actions{gap:10px;font-size:10px}#thanks-reader button{font-size:12px}}

/* Writing help stays attached to the play instructions, never a board in the scene. */
footer #hint{white-space:pre-line;flex:1}#ink-help{pointer-events:auto;flex-shrink:0;padding:8px 15px;border-color:#d8d4bd85;background:#18261dce;font-size:14px;letter-spacing:1px;box-shadow:0 2px 10px #0002}.paper #ink-help{background:#efecdfd9;color:#303b30;border-color:#515d4380}.clean #ink-help{visibility:visible}footer:has(#ink-help:not([hidden])) #key-hint{max-width:23%}footer:has(#ink-help:not([hidden])) #hint{max-width:60%}@media(max-width:800px){footer:has(#ink-help:not([hidden])) #hint,footer:has(#ink-help:not([hidden])) #key-hint{max-width:100%;}#ink-help{padding:6px 14px;font-size:12px}}

/* The prison yields to its poem and continues through the main chapter curtain. */
#prison-outro{position:absolute;right:7vw;top:calc(var(--frame-top) + var(--frame-height)*.24);z-index:6;max-width:44vw;opacity:0;visibility:hidden;pointer-events:none;text-shadow:0 2px 16px #000;background:none;padding:0}
#prison-poem-title{font-size:14px;line-height:1.7;letter-spacing:.13em;color:#99a6b5;margin:0 0 22px}
#prison-poem-lines{font-size:clamp(22px,2.4vw,38px);line-height:1.9;letter-spacing:.12em;white-space:pre-line;color:#d6d9d3;margin:0}
#prison-fade{position:absolute;inset:0;z-index:6;background:#080c11;opacity:0;visibility:hidden;pointer-events:none}
.prison-chapter #world{cursor:grab}.prison-chapter #world.inking{cursor:grabbing}.prison-outro-active #hud,.prison-outro-active header{visibility:hidden}
@media(max-width:760px){#prison-outro{right:8vw;max-width:84vw;top:calc(var(--frame-top) + var(--frame-height)*.25)}#prison-poem-title{font-size:11px;margin-bottom:12px}#prison-poem-lines{font-size:22px;line-height:1.85}}

/* A monochrome ripple grows through a feathered water-mark judgment band. */
#bridge-ink-panel{position:absolute;pointer-events:none;z-index:3;text-align:center;color:#e8e7e2;text-shadow:0 1px 5px #101010,0 0 12px #10101090}
#bridge-ink-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
#bridge-ink-message{position:absolute;left:50%;top:26px;transform:translateX(-50%);width:max-content;max-width:min(680px,85%);font-size:15px;letter-spacing:1px;line-height:1.7;margin:0;padding:5px 18px;background:radial-gradient(ellipse,#15151570,transparent 73%)}
#bridge-ink-panel[data-phase=inking] #bridge-ink-message{color:#f2f1eb}
#bridge-ink-panel[data-overshot=true] #bridge-ink-message{color:#bdbbb6}
@media(max-width:800px){#bridge-ink-message{top:20px;font-size:12px;max-width:85%;width:85%;padding:0}}

footer #hint .writing-keyword{display:inline;font-size:1.15em;line-height:1;font-weight:normal;color:#f3ead0;text-shadow:0 0 10px #e1dacb38;letter-spacing:.06em;margin:0 .08em}
.paper footer #hint .writing-keyword{color:#28382c;text-shadow:none}
footer #hint .writing-operation{display:block;font-size:.92em;opacity:.86;margin-top:3px}

#bridge-ink-panel[data-phase=waiting] #bridge-ink-message{visibility:hidden}

#curtain.opening-title span{font-size:clamp(52px,7vw,96px);letter-spacing:12px}#curtain.opening-title small{color:#b9b7a6}@media(max-width:800px){#ending{flex-wrap:wrap;gap:8px;padding:8px}#ending p{display:none}}

/* A restrained touch pad stays separate from painting on the scene. */
:root{--touch-bottom:max(14px,calc(var(--frame-top) - 74px),env(safe-area-inset-bottom));--touch-left:max(16px,env(safe-area-inset-left));--touch-right:max(16px,env(safe-area-inset-right))}
#mobile-controls{position:fixed;inset:0;z-index:6;pointer-events:none;user-select:none;-webkit-user-select:none}
#touch-joystick{position:absolute;left:var(--touch-left);bottom:var(--touch-bottom);width:112px;height:112px;border-radius:50%;pointer-events:auto;touch-action:none;border:1px solid #ddd9cd50;background:radial-gradient(circle,#3d3c3966 0,#1c1c1c65 54%,#0a0a0a85 80%);box-shadow:inset 0 0 18px #dad6cb12,0 3px 18px #0003;color:#dfdcd1;transition:border-color .15s}
#touch-joystick.engaged{border-color:#f1ece4b3}
.joystick-directions{position:absolute;inset:0;display:grid;place-items:center;opacity:.26;font:70px/1 serif;font-weight:normal}
#joystick-thumb{position:absolute;left:34px;top:34px;width:44px;height:44px;border-radius:50%;border:1px solid #d1cec69c;background:radial-gradient(circle at 40% 35%,#c9c5ba5c,#74716d88 70%);box-shadow:0 2px 10px #0005;pointer-events:none}
.joystick-label{position:absolute;bottom:5px;left:0;right:0;text-align:center;font-size:10px;letter-spacing:3px;opacity:.6;pointer-events:none}
.touch-actions{position:absolute;right:var(--touch-right);bottom:var(--touch-bottom);display:flex;flex-direction:column;gap:8px;pointer-events:auto}
.touch-actions button,#touch-restore{padding:10px 14px;min-height:42px;font-size:14px;letter-spacing:1px;border-color:#dedacf66;background:#171717c7;color:#e8e3d8;border-radius:3px;touch-action:manipulation;text-shadow:0 1px 3px #000;box-shadow:0 2px 10px #0002}
#touch-restore{position:fixed;right:var(--touch-right);bottom:var(--touch-bottom);z-index:11;font-size:12px;opacity:.78}
.touch-controls #brush{display:none}.touch-controls footer #key-hint{display:none}.touch-controls #ink-help{font-size:12px}.touch-controls #thanks-reader small{display:none}
.touch-controls #welcome .micro{white-space:pre-line}
.clean #hud,.clean #hud footer,.clean #brush,.clean #fruit-counter,.clean #interaction-count,.clean #gesture-guide,.clean #ink-help,.clean #mobile-controls{visibility:hidden}
@media(any-pointer:coarse){button{touch-action:manipulation}}
@media(max-height:580px){#touch-joystick{width:96px;height:96px}#joystick-thumb{left:29px;top:29px;width:38px;height:38px}.touch-controls footer{left:calc(var(--touch-left) + 108px);right:calc(var(--touch-right) + 108px);bottom:calc(var(--frame-top) + 12px);margin:0;padding:5px 9px;max-height:85px;overflow:auto}.touch-controls footer #hint{font-size:11px;max-width:100%}.touch-controls .touch-actions button{min-height:38px;padding:8px 10px;font-size:12px}}
@media(max-width:600px) and (min-height:581px){#touch-joystick{width:104px;height:104px}#joystick-thumb{left:31px;top:31px;width:42px;height:42px}.touch-controls footer{left:14px;right:14px;margin:0;padding:6px 9px}.touch-controls footer #hint{font-size:11px;max-width:100%}.touch-controls .note{left:14px;max-width:42vw}.touch-controls .note span{font-size:14px}.touch-controls .note p{font-size:11px;line-height:1.6;max-width:42vw}.touch-controls header{gap:10px;left:12px;right:12px;font-size:12px;letter-spacing:1px}.touch-controls header #place{display:none}.touch-controls header button{padding:6px 8px;font-size:12px}.touch-controls header span:first-child{margin-right:auto}.touch-controls #welcome .intro{font-size:14px;margin:20px 0}.touch-controls #welcome .micro{font-size:10px;letter-spacing:1px}.touch-controls #welcome{padding-top:17vh}.touch-controls #welcome h1{font-size:48px;letter-spacing:7px}.touch-controls #welcome .subtitle{font-size:17px}}
/* Phone landscape keeps the entry action visible; smaller heights can scroll. */
@media(max-height:580px){.touch-controls #welcome{padding:48px max(18px,env(safe-area-inset-right)) 22px max(6vw,env(safe-area-inset-left));overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch}.touch-controls #welcome .eyebrow{font-size:10px;letter-spacing:2px;margin:0}.touch-controls #welcome h1{font-size:clamp(36px,5vw,54px);line-height:1.12;letter-spacing:7px;margin:10px 0 7px}.touch-controls #welcome .subtitle{font-size:17px;line-height:1.3;letter-spacing:3px;margin:0}.touch-controls #welcome .intro{font-size:13px;line-height:1.65;margin:14px 0}.touch-controls #welcome #begin{font-size:15px;line-height:1.2;padding:9px 28px}.touch-controls #welcome .micro{font-size:10px;line-height:1.6;letter-spacing:1px;margin-top:12px}}
