@font-face{font-family:FlightSerif;src:url('assets/fonts/flight-serif-400.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:FlightSerif;src:url('assets/fonts/flight-serif-600.ttf') format('truetype');font-style:normal;font-weight:500 900;font-display:swap}
:root{--ink:#174b5d;--muted:#567b85;--paper:#fffaf0;--line:rgba(28,75,87,.2);--gold:#b3864d;--red:#a85f54;--serif:FlightSerif,"Noto Serif SC","Songti SC",SimSun,serif;--sans:"Microsoft YaHei","PingFang SC",system-ui,sans-serif}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{background:#f1f0e7;color:var(--ink);font-family:var(--sans);font-size:14px;-webkit-font-smoothing:antialiased}button,input{font:inherit}button{border:0;color:inherit;cursor:pointer;background:none;-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible{outline:2px solid #2b7181;outline-offset:6px}button:disabled{cursor:default;opacity:.45}button,canvas{touch-action:none}button svg{pointer-events:none}svg{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}button:focus:not(:focus-visible),canvas:focus{outline:none}[hidden]{display:none!important}
.game{position:relative;margin:14px;width:calc(100% - 28px);height:calc(100% - 28px);overflow:hidden;background:#b7e2ef;isolation:isolate;box-shadow:0 0 0 1px rgba(90,124,133,.06)}.scenery{position:absolute;inset:0;background-position:center;background-size:cover;pointer-events:none;transition:opacity 1.2s ease,transform 2.5s ease}.scenery-coast{background-image:url('assets/coast.png')}.scenery-sky{background-image:url('assets/sky.png');opacity:0}.game[data-mode=flight] .scenery-coast{opacity:0;transform:scale(1.055) translateY(4%)}.game[data-mode=flight] .scenery-sky{opacity:1}.weather-wash{position:absolute;inset:0;pointer-events:none;background:#465e81;opacity:var(--storm,0);transition:opacity 3s}.game::after{content:"";position:absolute;inset:0;z-index:10;pointer-events:none;box-shadow:inset 0 0 30px rgba(255,252,229,.2)}#sky{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:crosshair}.game[data-mode=title] #sky{cursor:default}
.masthead{position:absolute;inset:24px 28px auto;z-index:4;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.masthead button{pointer-events:auto}.brand{display:flex;align-items:center;gap:12px;padding:0}.brand>svg:first-child{width:37px;height:29px}.brand span{font-family:var(--serif);font-size:10px;letter-spacing:4px}.brand .post-waves{width:31px;opacity:.25;margin-left:-7px}.utilities{display:flex;align-items:center;gap:10px}.icon-button{display:grid;place-items:center;width:34px;height:34px;padding:5px;opacity:.87;transition:opacity .2s,transform .2s}.icon-button:hover{opacity:1;transform:translateY(-2px)}.icon-button svg{width:22px;height:22px;stroke-width:1.8}.utility-rule{height:19px;width:1px;background:var(--line);margin:0 2px}.sound-slash{display:none}.muted .sound-waves{display:none}.muted .sound-slash{display:block}.game[data-mode=title] .only-flight{display:none}
.title-screen{position:absolute;left:10.5%;top:19.5%;z-index:2;width:470px;max-width:45%;animation:arrive 1.1s ease both}.title-screen h1{font-family:var(--serif);font-size:clamp(96px,11.1vw,182px);font-weight:600;line-height:1.18;letter-spacing:.025em;margin:0 0 7px -9px;text-shadow:0 1px rgba(246,251,245,.25)}.title-screen h1 span{margin-left:.17em}.english-title{font-family:var(--serif);font-weight:600;font-size:clamp(11px,1.13vw,18px);letter-spacing:.53em;margin:8px 0 0 1px;white-space:nowrap}.title-poem{font-family:var(--serif);font-size:clamp(16px,1.65vw,27px);font-weight:500;letter-spacing:.21em;margin:27px 0 41px 4px}.paper-button{display:inline-flex;align-items:center;justify-content:center;gap:20px;position:relative;background:#fff9e9;color:var(--ink);min-height:57px;padding:14px 27px;font-family:var(--serif);font-weight:600;font-size:18px;letter-spacing:3px;border:1px solid rgba(147,135,107,.22);box-shadow:1px 5px 9px rgba(34,70,70,.13),inset 0 0 0 3px rgba(255,255,255,.4);transition:transform .2s,box-shadow .2s,background .2s}.paper-button:after{content:"";position:absolute;inset:3px;border:1px solid rgba(178,167,138,.09);pointer-events:none}.paper-button:hover{transform:translateY(-3px) rotate(-.4deg);background:#fffdf4;box-shadow:1px 9px 12px rgba(34,70,70,.15)}.paper-button:active{transform:translateY(1px)}.paper-button svg{width:36px;height:28px}.start-button{min-width:264px;min-height:67px;padding:13px 25px}.button-arrow{font-size:25px;font-family:var(--serif);font-weight:400;line-height:1;margin-left:1px;transition:transform .2s}.paper-button:hover .button-arrow{transform:translateX(5px)}.title-links{display:flex;align-items:center;gap:27px;padding:26px 10px 0;font-family:var(--serif);font-size:16px;letter-spacing:2px}.title-links button{padding:2px 0;border-bottom:1px solid transparent}.title-links button:hover{border-color:var(--ink)}.title-links>span{height:15px;width:1px;background:var(--ink);opacity:.6}
.footer{position:absolute;bottom:25px;left:28px;right:28px;z-index:3;display:flex;align-items:center;justify-content:space-between;pointer-events:none;font-family:var(--serif);font-size:11px;letter-spacing:2.5px;font-weight:600}.edition{display:flex;align-items:center;gap:12px}.edition i{font-style:normal;opacity:.7;margin:0 1px}.footer-bird{font-size:30px;line-height:0;display:inline-block;transform:rotate(-15deg);margin-right:4px}.flight-tip{font-family:var(--sans);font-size:11px;font-weight:400;letter-spacing:1.5px;text-shadow:0 1px 5px white}.flight-tip i{font-style:normal;font-size:9px;border:1px solid #91b2b6;padding:2px 3px;margin-left:12px}.footer-time{min-width:64px;font-variant-numeric:tabular-nums;text-align:right}
.hud{position:absolute;top:87px;left:36px;right:36px;display:grid;grid-template-columns:1fr 1fr 1fr;align-items:start;pointer-events:none;z-index:3}.small-label{display:block;font-size:9px;letter-spacing:2px;font-family:var(--sans);font-weight:500;opacity:.85}.score-block{position:relative}.score-block strong{display:inline-block;font-size:32px;letter-spacing:1px;font-family:var(--serif);font-weight:500;line-height:1.5;font-variant-numeric:tabular-nums}.score-block.pulse strong{animation:scorePunch .28s ease}.combo{font-size:12px;margin-left:14px;color:#886c3d;font-weight:600;letter-spacing:1px}.chapter-block{text-align:center;margin-top:-5px}.chapter-block>span:nth-child(2){display:block;font-family:var(--serif);font-size:24px;font-weight:500;letter-spacing:7px;margin:5px 0 10px}.route-progress{display:flex;justify-content:center;gap:8px}.route-progress span{width:19px;height:2px;background:rgba(30,80,95,.16)}.route-progress span.passed{background:#527d87}.resource-block{justify-self:end;padding-right:3px;font-family:var(--serif);font-size:12px;min-width:120px}.resource-line{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:8px;letter-spacing:2px}.paper-lives,.fold-charges{display:flex;gap:7px;width:77px;align-items:center}.paper-lives svg{width:20px;height:16px}.paper-lives .lost{opacity:.19}.fold-charges b{display:block;width:24px;height:13px;border:1px solid #42727f;background:rgba(255,250,232,.82);clip-path:polygon(0 0,100% 0,100% 70%,80% 100%,0 100%)}.fold-charges b.empty{background:transparent;opacity:.3}.debt{color:var(--red);font-size:11px;letter-spacing:1px;font-variant-numeric:tabular-nums}.chapter-banner{position:absolute;top:26%;left:0;right:0;text-align:center;pointer-events:none;z-index:5;opacity:0;transition:opacity .55s,transform .65s;transform:translateY(8px);text-shadow:0 1px 25px #fff,0 2px 10px #fff}.chapter-banner.visible{opacity:1;transform:translateY(0)}.chapter-banner span{font-family:var(--serif);font-size:clamp(30px,3.5vw,48px);letter-spacing:10px}.chapter-banner p{font-family:var(--serif);font-size:15px;letter-spacing:2px;margin:14px 0}.toast{position:absolute;bottom:78px;left:50%;transform:translate(-50%,8px);max-width:90%;width:max-content;text-align:center;z-index:9;font-size:12px;letter-spacing:1.5px;padding:10px 20px;color:var(--ink);background:rgba(255,251,237,.95);box-shadow:0 3px 16px rgba(36,71,76,.07);opacity:0;pointer-events:none;transition:opacity .25s,transform .25s}.toast.visible{opacity:1;transform:translate(-50%,0)}
.modal-layer{position:absolute;inset:0;z-index:7;background:rgba(89,128,139,.23);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;padding:25px;overflow-y:auto}.letter{position:relative;background:var(--paper);padding:42px 44px;color:var(--ink);width:min(560px,100%);box-shadow:0 15px 80px rgba(24,55,66,.16);border:1px solid rgba(163,153,132,.25);animation:letterIn .4s ease both;text-align:center}.letter::before{content:"";pointer-events:none;position:absolute;inset:8px;border:1px solid rgba(145,152,131,.17)}.letter::after{content:"";position:absolute;right:0;top:0;width:22px;height:22px;background:linear-gradient(225deg,#d4dcd3 0 49%,#f9f1de 50%);box-shadow:-2px 2px 3px rgba(0,0,0,.04)}.letter h2{font-family:var(--serif);font-size:32px;font-weight:500;letter-spacing:3px;line-height:1.55;margin:6px 0 13px}.letter .letter-en{font-size:9px;letter-spacing:3.5px;color:var(--muted);margin:0 0 10px}.letter .intro{color:var(--muted);font-family:var(--serif);font-size:14px;line-height:1.95;letter-spacing:1px;margin:0 0 25px}.close-button{position:absolute;top:19px;right:20px;width:29px;height:29px;font-size:23px;font-weight:300;z-index:1}.letter-actions{display:flex;justify-content:center;align-items:center;gap:18px;margin-top:25px;flex-wrap:wrap}.text-button{padding:7px 1px;font-family:var(--serif);font-size:13px;letter-spacing:1px;border-bottom:1px solid var(--line)}.text-button:hover{border-color:var(--ink)}.pause-letter{max-width:455px;padding:50px 42px}.pause-letter h2{font-size:35px}.pause-letter .paper-button{width:100%;margin:15px 0 8px}.pause-choices{display:flex;justify-content:center;gap:23px}.tiny-note{font-size:11px;line-height:1.9;letter-spacing:1px;color:var(--muted);margin-top:22px}.settings-row{display:flex;justify-content:space-between;align-items:center;text-align:left;border-top:1px solid var(--line);padding:17px 0;font-family:var(--serif);font-size:15px;letter-spacing:1px}.settings-row small{display:block;font-family:var(--sans);font-size:11px;color:var(--muted);margin-top:6px;letter-spacing:0}.settings-row input[type=range]{width:130px;accent-color:var(--ink)}.settings-row input[type=checkbox]{width:19px;height:19px;accent-color:var(--ink)}
.manual-letter{width:min(780px,100%)}.manual-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin:27px 0}.manual-step{min-width:0;font-family:var(--serif)}.manual-step svg{width:100%;height:98px;background:#eaf2ee;stroke-width:1.5}.manual-step b{display:block;font-size:17px;font-weight:500;letter-spacing:2px;margin:15px 0 9px}.manual-step p{font-size:12px;line-height:1.9;letter-spacing:.7px;color:var(--muted);margin:0}.manual-meta{border-top:1px solid var(--line);padding-top:18px;display:flex;justify-content:center;gap:20px;font-size:11px;letter-spacing:1px;color:var(--muted)}.manual-meta kbd{font-family:var(--sans);border:1px solid var(--line);padding:2px 5px;margin-right:4px;font-size:10px}.upgrade-letter{width:min(905px,100%);background:rgba(255,250,240,.96);padding:32px 33px 37px}.upgrade-letter h2{font-size:30px}.upgrade-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px;margin-top:26px}.upgrade-card{position:relative;display:flex;flex-direction:column;text-align:left;border:1px solid #d6d9c7;padding:23px 20px 18px;min-height:266px;background:linear-gradient(160deg,#fffcf3,#f4f1e2);transition:transform .2s,border-color .2s,box-shadow .2s}.upgrade-card:hover,.upgrade-card:focus-visible{transform:translateY(-7px) rotate(-.5deg);border-color:#6b9495;box-shadow:0 8px 14px rgba(31,68,73,.08)}.upgrade-card .upgrade-icon{width:51px;height:51px;margin-bottom:17px;stroke-width:1.2;color:#547a7d}.upgrade-card h3{font-family:var(--serif);font-weight:500;font-size:24px;letter-spacing:2px;margin:0 0 8px}.upgrade-card>p{font-size:12px;color:var(--muted);line-height:1.9;margin:0 0 16px}.upgrade-card .family{margin-top:auto;display:flex;justify-content:space-between;gap:8px;font-size:11px;font-family:var(--serif);color:#927549;padding-top:12px;border-top:1px solid var(--line);letter-spacing:1px}.synergy{font-size:10px;color:#497c70;line-height:1.7;display:block;padding-top:8px}.rare-seal{position:absolute;right:13px;top:16px;border:1px solid #ab7c57;color:#ab7c57;transform:rotate(8deg);padding:4px;font-family:var(--serif);font-size:11px}.event-letter{width:495px}.event-emblem{display:grid;place-items:center;border:1px solid #ba8e66;width:62px;height:62px;color:#a16b4a;margin:0 auto 20px;transform:rotate(-6deg);font-family:var(--serif);font-size:26px}.event-description{text-align:left;line-height:2.1;font-size:14px;margin:24px 8px;color:var(--muted)}
.result-letter{width:min(680px,100%);padding:33px 42px 29px;text-align:left}.result-top{display:flex;justify-content:space-between;align-items:center;padding-bottom:18px;border-bottom:1px solid var(--line)}.result-top h2{font-size:28px;letter-spacing:2px;margin:0}.rank-stamp{width:69px;height:69px;flex-shrink:0;margin-left:20px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid #a16852;border-radius:50%;outline:1px solid #a16852;outline-offset:-6px;color:#a16852;transform:rotate(-12deg);font-family:var(--serif)}.rank-stamp span{font-size:26px;font-weight:600;line-height:1.1}.rank-stamp small{font-size:7px;letter-spacing:1.5px;margin-top:2px}.result-score{font-family:var(--serif);font-size:64px;font-weight:500;letter-spacing:2px;line-height:1.2;margin:20px 0 9px}.record-note{display:inline-block;font-size:10px;color:var(--gold);letter-spacing:1.5px;margin-left:15px;font-family:var(--sans);vertical-align:middle}.result-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:22px 0 20px}.result-metrics span{font-size:10px;color:var(--muted);letter-spacing:1px}.result-metrics strong{display:block;font-family:var(--serif);font-size:22px;font-weight:500;letter-spacing:1px;margin-top:5px}.result-cause{font-family:var(--serif);font-size:13px;line-height:1.9;color:var(--muted);margin:15px 0 0}.result-bottom{display:flex;align-items:center;justify-content:space-between;gap:15px;padding-top:21px;border-top:1px solid var(--line)}.result-bottom .paper-button{font-size:16px;min-height:52px;gap:10px;padding:12px 24px}.result-stamps{display:flex;gap:9px;margin:20px 0}.mini-stamp{display:flex;align-items:center;gap:7px;font-family:var(--serif);font-size:10px;color:#936d45}.mini-stamp b{font-size:15px;border:1px solid #b5906c;padding:4px 7px;transform:rotate(-4deg);font-weight:400}.result-secondary{display:flex;gap:16px;align-items:center;justify-content:center;margin-top:18px}.result-route{font-size:9px;letter-spacing:2px;color:var(--muted);text-align:center;margin-top:20px}.record-list{list-style:none;padding:0;margin:28px 0;text-align:left}.record-list li{display:grid;grid-template-columns:26px 1fr auto;gap:14px;align-items:center;padding:13px 0;border-bottom:1px solid var(--line)}.record-list li>span{color:var(--gold);font-size:13px;font-family:var(--serif)}.record-list strong{display:block;font-family:var(--serif);font-weight:500;font-size:21px}.record-list small{font-size:10px;letter-spacing:1px;color:var(--muted)}.record-list b{font-family:var(--serif);font-size:20px;color:#936d45}.stamp-collection{display:flex;justify-content:center;gap:15px;margin:23px 0 8px}.collection-stamp{width:39px;height:43px;border:1px solid #b39b7c;display:grid;place-items:center;font-family:var(--serif);font-size:23px;transform:rotate(-5deg);color:#987048}.collection-stamp.locked{opacity:.22;filter:grayscale(1)}.empty-records{font-family:var(--serif);font-size:16px;line-height:2.1;padding:28px 0;color:var(--muted)}.orientation-tip{display:none}
.game{overflow:clip}
@keyframes arrive{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@keyframes letterIn{from{opacity:0;transform:translateY(15px) rotate(-.7deg)}to{opacity:1;transform:translateY(0) rotate(0)}}@keyframes scorePunch{50%{transform:scale(1.1)}}
@media(min-width:1500px){.title-poem{margin-top:34px;margin-bottom:54px}.start-button{min-width:308px;min-height:76px;font-size:23px}.title-links{gap:35px;padding-top:32px;font-size:18px}.title-links>span{height:19px}.masthead{inset:26px 30px auto}.footer{bottom:30px}.title-screen{top:18.5%}}
@media(max-height:670px) and (min-width:700px){.title-screen{top:17%}.title-screen h1{font-size:clamp(78px,10vw,127px)}.title-poem{margin-top:18px;margin-bottom:26px}.start-button{min-height:55px;min-width:235px}.title-links{padding-top:17px;font-size:14px}.footer{bottom:17px}.masthead{top:17px}.hud{top:65px}.resource-block{font-size:11px}.chapter-block>span:nth-child(2){font-size:20px}.small-label{font-size:8px}.score-block strong{font-size:27px}.letter{padding-top:23px;padding-bottom:23px}.upgrade-card{min-height:227px;padding:17px}.upgrade-card .upgrade-icon{width:40px;height:40px;margin-bottom:12px}.result-score{font-size:48px;margin-top:13px}.result-metrics{margin:16px 0}.result-stamps{margin:14px 0}.result-top{padding-bottom:12px}}
@media(max-width:720px){.game{margin:8px;width:calc(100% - 16px);height:calc(100% - 16px)}.masthead{inset:18px 16px auto}.brand{gap:8px}.brand>svg:first-child{width:30px}.brand span{font-size:8px;letter-spacing:2px}.brand .post-waves{display:none}.utilities{gap:3px}.icon-button{width:30px;height:30px}.title-screen{left:9%;top:21%;max-width:88%;width:360px}.title-screen h1{font-size:112px}.english-title{font-size:12px;letter-spacing:.4em}.title-poem{font-size:18px;margin-top:27px;margin-bottom:34px}.start-button{min-width:236px;min-height:63px}.title-links{padding-top:25px;gap:22px;font-size:15px}.footer{left:18px;right:18px;bottom:24px;font-size:9px;letter-spacing:1px}.footer-bird{font-size:22px;margin:0}.edition{gap:8px}.flight-tip{font-size:9px;letter-spacing:0}.flight-tip i{display:none}.hud{top:72px;left:20px;right:20px;grid-template-columns:1fr 1fr}.score-block strong{font-size:27px}.small-label{font-size:8px;letter-spacing:1px}.chapter-block{position:absolute;top:72px;left:50%;transform:translateX(-50%);width:190px}.chapter-block>span:nth-child(2){font-size:21px}.resource-block{font-size:11px;min-width:104px}.resource-line{gap:9px}.paper-lives,.fold-charges{width:65px;gap:5px}.paper-lives svg{width:17px}.combo{font-size:10px;margin-left:7px}.game[data-mode=flight] .edition{display:none}.game[data-mode=flight] .orientation-tip{display:block;position:absolute;top:48%;width:100%;text-align:center;pointer-events:none;font-size:10px;letter-spacing:1px;color:#467181;transform:translateY(-120px);opacity:.7}.modal-layer{padding:16px}.letter{padding:31px 22px}.letter h2{font-size:25px}.letter .intro{font-size:12px}.manual-grid{gap:12px}.manual-step svg{height:75px}.manual-step b{font-size:14px;letter-spacing:0}.manual-step p{font-size:11px}.manual-meta{gap:10px;flex-wrap:wrap}.upgrade-grid{grid-template-columns:1fr;gap:10px;margin-top:18px}.upgrade-card{min-height:0;padding:15px 17px 13px 74px}.upgrade-card .upgrade-icon{position:absolute;left:15px;top:23px;width:39px;height:39px}.upgrade-card h3{font-size:21px;margin-bottom:5px}.upgrade-card>p{font-size:11px;line-height:1.75;margin-bottom:8px}.upgrade-card .family{padding-top:8px;font-size:10px}.synergy{font-size:9px}.rare-seal{top:14px;font-size:9px;padding:3px}.result-letter{padding:27px 24px}.result-top h2{font-size:23px}.rank-stamp{width:57px;height:57px;margin-left:10px}.rank-stamp span{font-size:22px}.result-score{font-size:48px}.result-metrics{gap:8px}.result-metrics strong{font-size:21px}.result-bottom .paper-button{padding:12px 18px;font-size:15px}.result-stamps{flex-wrap:wrap}.record-note{font-size:9px;margin-left:6px}.result-cause{font-size:12px}.toast{font-size:11px;line-height:1.7;width:85%;bottom:68px}.scenery-coast{background-position:42% center}}
@media(max-width:940px) and (max-height:520px){.game{margin:7px;width:calc(100% - 14px);height:calc(100% - 14px)}.title-screen{top:15%;left:10%;width:310px}.title-screen h1{font-size:78px}.title-poem{font-size:15px;margin:17px 0 18px}.english-title{font-size:9px}.start-button{min-width:208px;min-height:48px;font-size:16px}.start-button svg{width:27px}.title-links{font-size:12px;gap:20px;padding-top:17px}.masthead{top:10px}.footer{bottom:15px}.brand span{font-size:8px}.hud{top:54px;left:24px;right:24px;grid-template-columns:1fr 1fr 1fr}.chapter-block{position:static;transform:none;width:auto}.chapter-block>span:nth-child(2){font-size:18px;margin:3px 0 6px}.score-block strong{font-size:25px}.resource-line{margin-bottom:5px}.modal-layer{padding:12px}.letter{max-height:100%;overflow:auto}.upgrade-grid{grid-template-columns:repeat(3,1fr)}.upgrade-card{padding:15px;min-height:193px}.upgrade-card .upgrade-icon{position:static;width:31px;height:31px;margin-bottom:9px}.upgrade-card h3{font-size:18px}.upgrade-card>p{font-size:10px}.upgrade-letter h2{font-size:22px}.upgrade-letter .intro{margin-bottom:10px}.upgrade-grid{margin-top:15px}.upgrade-letter{padding:20px 25px}.result-letter{max-width:580px}.result-score{font-size:38px}.result-top h2{font-size:21px}.result-metrics{margin:13px 0}.result-metrics strong{font-size:18px}.result-stamps{margin:12px 0}.result-secondary{margin-top:11px}.result-route{margin-top:13px}.orientation-tip{display:none!important}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.reduced-motion *,.reduced-motion *::before,.reduced-motion *::after{animation:none!important;transition:none!important}
