:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#08110f;--river:#102b29;--paper:#e8dfca;--paper-muted:#b8b09e}*{box-sizing:border-box}html,body{background:var(--ink);min-height:100%;margin:0}body{color:var(--paper);font-family:Noto Sans SC,Microsoft YaHei,system-ui,sans-serif}button,input,textarea{font:inherit}a{color:inherit}.placeholder-sea{background:radial-gradient(circle at 72% 18%,#bfad7e29,#0000 18rem),linear-gradient(#07110f 0%,#122925 58%,#071211 100%);min-height:100svh;position:relative;overflow:hidden}.placeholder-sea:after{content:"";background:repeating-radial-gradient(at 50% -10%,#0000 0 18px,#a4c2b01a 19px 20px);position:absolute;inset:58% -10% -20%;transform:rotate(-1deg)}.placeholder-sea__mist{filter:blur(18px);background:linear-gradient(90deg,#0000,#9fb5a612,#0000);height:44%;position:absolute;inset:18% 0 auto}.placeholder-sea__header{z-index:2;justify-content:space-between;align-items:center;padding:1.5rem clamp(1.25rem,4vw,4rem);display:flex;position:relative}.placeholder-sea__brand{letter-spacing:.36em;font-family:Noto Serif SC,SimSun,serif}.placeholder-sea__header a{font-size:.8rem;text-decoration:none}.placeholder-sea__content{text-align:center;z-index:2;max-width:48rem;margin:clamp(6rem,16vh,11rem) auto 0;padding:0 1.5rem;position:relative}.placeholder-sea__eyebrow{color:var(--paper-muted);letter-spacing:.16em;font-size:.75rem}.placeholder-sea__content h1{letter-spacing:.07em;margin:1.1rem 0;font-family:Noto Serif SC,SimSun,serif;font-size:clamp(2rem,5vw,4rem);font-weight:400;line-height:1.45}.placeholder-sea__content>p:not(.placeholder-sea__eyebrow){color:var(--paper-muted);line-height:1.8}.placeholder-sea__content button{color:var(--paper);cursor:pointer;background:#08110f8c;border:1px solid #e8dfca85;border-radius:999px;margin-top:2rem;padding:.8rem 1.5rem}.placeholder-sea__content button:focus-visible,.placeholder-sea__header a:focus-visible{outline-offset:4px;outline:2px solid #e7c987}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.sr-only{clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.sea{isolation:isolate;background:#07110f;min-height:100svh;position:relative;overflow:hidden}.river-backdrop,.river-backdrop>div,.river-canvas{position:absolute}.river-backdrop{z-index:-3;background:linear-gradient(#040c0c24 0%,#040b0a0a 55%,#02080842 100%),url(/images/hangzhou-night-river/hero-v1.png) 50%/cover no-repeat,#07110f;inset:0;overflow:hidden}.river-backdrop__veil{background:radial-gradient(at 50% 30%,#0000 0 35%,#01070642 92%),linear-gradient(#050e0d14,#0000 62%);inset:0}.river-backdrop__moon{background:#e5d3a4;border-radius:50%;width:clamp(2.5rem,5vw,4rem);height:clamp(2.5rem,5vw,4rem);top:9%;right:20%;box-shadow:0 0 5rem #e5d3a457}.river-backdrop__mountain{transform-origin:bottom;left:-10%;right:-10%}.river-backdrop__mountain--far{clip-path:polygon(0 100%,0 55%,8% 43%,15% 60%,25% 23%,33% 57%,45% 19%,56% 54%,69% 26%,78% 60%,89% 34%,100% 51%,100% 100%);opacity:.7;background:#14251f;height:38%;top:15%}.river-backdrop__mountain--near{clip-path:polygon(0 100%,0 69%,13% 37%,28% 65%,43% 29%,58% 62%,76% 34%,89% 59%,100% 48%,100% 100%);background:#0c1916;height:33%;top:29%}.river-backdrop__town{justify-content:space-around;align-items:end;gap:clamp(1rem,6vw,6rem);display:flex;bottom:37%;left:3%;right:2%}.river-backdrop__town span{background:#0a1412;border:1px solid #607b6652;width:clamp(4rem,10vw,9rem);height:clamp(2.2rem,6vw,5.2rem);display:block;position:relative}.river-backdrop__town span:before{clip-path:polygon(0 100%,11% 46%,21% 43%,29% 0,71% 0,80% 43%,91% 46%,100% 100%);content:"";background:#111e1a;height:52%;position:absolute;inset:-45% -9% auto}.river-backdrop__town span:after{content:"";opacity:.8;background:#c17e3d;border-radius:50%;width:4px;height:4px;position:absolute;top:40%;left:22%;box-shadow:2rem 0 #c17e3d}.river-backdrop__bridge{border:clamp(1.1rem,2vw,2rem) solid #223029;border-bottom:0;border-radius:50% 50% 0 0;width:clamp(13rem,34vw,29rem);height:clamp(5.5rem,15vw,10rem);bottom:34%;left:50%;transform:translate(-50%);box-shadow:inset 0 4px #6d7a6542}.river-backdrop__bridge:after{content:"";background:#26342e;border-radius:50%;height:1.1rem;position:absolute;top:-1.6rem;left:-2rem;right:-2rem}.river-backdrop__willow{width:min(27rem,38vw);height:62%;top:-5%;left:2%}.river-backdrop__willow:before{content:"";background:#15231c;border-radius:45% 50% 20% 35%;width:clamp(1rem,3vw,2.7rem);height:120%;position:absolute;left:8%;transform:rotate(8deg)}.river-backdrop__willow i{height:68%;left:calc(15% + var(--willow-index,0) * 15%);transform:rotate(calc(-14deg + var(--willow-index,0) * 7deg));border-left:2px solid #5e7c52b3;border-radius:50%;width:18%;position:absolute;top:20%}.river-backdrop__willow i:first-child{--willow-index:0}.river-backdrop__willow i:nth-child(2){--willow-index:1}.river-backdrop__willow i:nth-child(3){--willow-index:2}.river-backdrop__willow i:nth-child(4){--willow-index:3}.river-backdrop__willow i:nth-child(5){--willow-index:4}.river-backdrop__lanterns{bottom:35%;inset-inline:18% 10%}.river-backdrop__lanterns i{height:.55rem;left:calc(var(--lantern-index,0) * 28%);background:#ca8240;border-radius:50%;width:.55rem;position:absolute;box-shadow:0 0 1.8rem #d28a45aa,0 8rem 2rem #d28a4526}.river-backdrop__lanterns i:first-child{--lantern-index:0}.river-backdrop__lanterns i:nth-child(2){--lantern-index:1}.river-backdrop__lanterns i:nth-child(3){--lantern-index:2}.river-backdrop__lanterns i:nth-child(4){--lantern-index:3}.river-backdrop__water{background:repeating-radial-gradient(at 50% -10%,#0000 0 1.1rem,#9db9a717 1.18rem 1.24rem),linear-gradient(#122b28eb,#040b0b);height:43%;bottom:0;left:-10%;right:-10%;transform:rotate(-.7deg)}.river-canvas{pointer-events:none;z-index:1;width:100%;height:100%;inset:0}.airplane-hit-layer{pointer-events:none;z-index:4;position:absolute;inset:0}.airplane-hit{appearance:none;cursor:pointer;pointer-events:auto;transform-origin:50%;will-change:transform, width, height;background:0 0;border:0;margin:0;padding:0;position:absolute;top:0;left:0}.airplane-hit:after{content:"";border:1px solid #0000;border-radius:50%;transition:border-color .24s,box-shadow .24s;position:absolute;inset:12% 7%}.airplane-hit:hover:after,.airplane-hit:focus-visible:after{border-color:#ecd39b6b;box-shadow:0 0 1.8rem #e6bc6647}.airplane-hit:focus-visible{outline-offset:5px;outline:2px solid #e4c578}.airplane-hit:disabled{cursor:progress}.airplane-hit__fallback{filter:drop-shadow(0 8px 8px #0009)drop-shadow(0 0 12px #e6c27457);opacity:0;background:url(/images/paper-airplane/paper-airplane-v1.png) 50%/contain no-repeat;transition:opacity .18s,transform .52s cubic-bezier(.2,.72,.22,1);position:absolute;inset:0}.airplane-hit-layer[data-fallback=true] .airplane-hit__fallback{opacity:1}.airplane-hit[data-visual-state=unfolding] .airplane-hit__fallback,.airplane-hit[data-visual-state=loading] .airplane-hit__fallback{transform:scale(1.3,1.18)rotate(2deg)}.sea-header{z-index:5;justify-content:space-between;align-items:center;padding:1.35rem clamp(1rem,3vw,3rem);display:flex;position:relative}.sea-header__brand{letter-spacing:.38em;text-shadow:0 2px 12px #000;font-family:Noto Serif SC,SimSun,serif;font-size:clamp(.95rem,2vw,1.2rem)}.sea-header__nav{align-items:center;gap:clamp(.7rem,2vw,1.7rem);display:flex}.sea-header__nav a,.sea-header__nav button{color:#e8dfcab8;cursor:pointer;background:0 0;border:0;padding:.4rem 0;font-size:.76rem;text-decoration:none}.sea-header__divider{color:#e8dfca47;font-size:.68rem}.sea-header__nav :is(a,button):hover{color:var(--paper)}.sea-header__nav :is(a,button):focus-visible,.cast-button:focus-visible,.paper-button:focus-visible,.text-button:focus-visible,.modal__close:focus-visible{outline-offset:4px;outline:2px solid #e4c578}.sea-hero{text-align:center;text-shadow:0 2px 20px #000;z-index:2;width:100%;max-width:52rem;padding:0 1.5rem;position:absolute;top:clamp(7rem,17vh,11rem);left:50%;transform:translate(-50%)}.sea-hero__eyebrow{color:#e8dfca94;letter-spacing:.2em;font-size:.69rem}.sea-hero h1{letter-spacing:.08em;margin:.8rem 0;font-family:Noto Serif SC,SimSun,serif;font-size:clamp(1.75rem,4.6vw,3.9rem);font-weight:400;line-height:1.5}.sea-hero>p:last-child{color:#e8dfcaa8;letter-spacing:.08em;font-size:clamp(.8rem,1.4vw,.95rem)}.catch-control{color:#e8dfcaad;cursor:pointer;z-index:4;background:0 0;border:0;justify-items:center;gap:.5rem;padding:1rem;font-size:.7rem;display:grid;position:absolute;bottom:23%;left:58%}.catch-control__plane{aspect-ratio:3/2;filter:drop-shadow(0 8px 8px #000)drop-shadow(0 0 12px #e6c27459);width:clamp(7.5rem,10vw,10rem);transition:transform .3s;display:block;position:relative;transform:rotate(-4deg)}.catch-control__plane:before{clip-path:polygon(0 68%,100% 18%,65% 88%,46% 57%);content:"";opacity:1;background:#eadfca;transition:opacity .18s;position:absolute;inset:20% 8%}.catch-control__plane img{object-fit:contain;opacity:0;z-index:1;width:100%;height:100%;transition:opacity .18s;position:relative}.catch-control__plane.is-loaded:before{opacity:0}.catch-control__plane.is-loaded img{opacity:1}.catch-control:hover .catch-control__plane{transform:translateY(-5px)rotate(1deg)}.cast-button{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--paper);cursor:pointer;letter-spacing:.11em;z-index:5;background:#050d0ca8;border:1px solid #e8dfca7a;border-radius:999px;padding:.78rem 1.5rem;position:absolute;bottom:1.5rem;left:50%;transform:translate(-50%)}.cast-button:disabled{cursor:wait;opacity:.5}.sea-status{color:#e8dfca9e;text-align:center;z-index:5;width:min(90%,32rem);min-height:1rem;font-size:.72rem;position:absolute;bottom:5rem;left:50%;transform:translate(-50%)}.sea-status__demo{border:1px solid #e8dfca33;border-radius:999px;margin-left:.7rem;padding:.15rem .5rem;display:inline-block}.sea-status__error,.composer__error{color:#d9a7a1;display:block}.modal{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:20;background:#020807bd;justify-content:center;align-items:center;padding:1.25rem;display:flex;position:fixed;inset:0}.modal__panel{outline:none;width:100%;max-width:38rem;max-height:calc(100svh - 2.5rem);position:relative;overflow:auto}.modal__close{color:var(--paper);cursor:pointer;background:#111d1a;border:1px solid #e8dfca3d;border-radius:50%;justify-content:center;align-items:center;width:2.35rem;height:2.35rem;font-size:1.35rem;display:flex;position:absolute;top:.8rem;right:.8rem}.letter{color:#17211d;background:linear-gradient(90deg,#0000 49.8%,#55463112 50%,#0000 50.2%),linear-gradient(#0000 49.8%,#55463112 50%,#0000 50.2%),#e6dcc6;border-radius:.2rem;min-height:24rem;padding:clamp(2.5rem,7vw,4.5rem);position:relative;box-shadow:0 2rem 5rem #000b}.letter__kicker{color:#697067;letter-spacing:.12em;text-transform:uppercase;margin:0 0 1.5rem;font-size:.68rem}.composer textarea{color:#17211d;resize:vertical;background:0 0;border:0;outline:none;width:100%;min-height:12rem;font-family:Noto Serif SC,SimSun,serif;font-size:clamp(1.05rem,2.8vw,1.35rem);line-height:1.9}.composer textarea::placeholder{color:#7a7d70}.composer__meta{color:#6e746c;justify-content:space-between;margin-top:.75rem;font-size:.7rem;display:flex}.composer__notice{color:#555e56;align-items:flex-start;gap:.6rem;margin:1.35rem 0;font-size:.72rem;line-height:1.6;display:flex}.composer__notice input{accent-color:#233c34;margin-top:.2rem}.composer__error{min-height:1.2rem;font-size:.76rem}.paper-button{color:#eee5d2;cursor:pointer;background:#20372f;border:1px solid #20372f;border-radius:999px;padding:.75rem 1.2rem}.paper-button:disabled{cursor:wait;opacity:.65}.unfolded-letter__body{white-space:pre-wrap;min-height:11rem;font-family:Noto Serif SC,SimSun,serif;font-size:clamp(1.1rem,3vw,1.5rem);line-height:2}.unfolded-letter__actions{flex-wrap:wrap;align-items:center;gap:.8rem;margin-top:2rem;display:flex}.text-button{color:#455249;cursor:pointer;background:0 0;border:0;padding:.6rem}.text-button--danger{color:#8a554f;margin-left:auto}.report-dialog fieldset{border:0;margin:0;padding:0}.report-dialog legend{margin-bottom:1rem;font-family:Noto Serif SC,SimSun,serif}.report-dialog fieldset label{border-bottom:1px solid #20372f1f;align-items:center;gap:.7rem;padding:.7rem 0;display:flex}.report-dialog input{accent-color:#20372f}.report-dialog__details{gap:.5rem;margin-top:1.2rem;font-size:.76rem;display:grid}.report-dialog__details textarea{color:#17211d;resize:vertical;background:#fff3;border:1px solid #20372f2e;min-height:5rem}.report-dialog__help{color:#78544d;font-size:.72rem;line-height:1.6}@media (max-width:700px){.sea-header{align-items:flex-start}.sea-header__nav{gap:.65rem}.sea-header__nav a,.sea-header__nav button{font-size:.66rem}.sea-header__brand{letter-spacing:.24em;font-size:.85rem}.sea-hero{top:18%}.sea-hero h1{font-size:clamp(1.65rem,8vw,2.5rem)}.river-backdrop__willow{opacity:.78;width:65vw}.river-backdrop__bridge{width:15rem;bottom:35%;left:58%}.river-backdrop__town span:nth-child(2n){display:none}.catch-control{bottom:24%;left:50%;transform:translate(-50%)}.letter{padding:3.5rem 1.5rem 2rem}.unfolded-letter__actions{flex-direction:column;align-items:stretch}.text-button--danger{margin-left:0}}.admin-page{color:#1c2822;background:#eef0ea;min-height:100svh;padding:clamp(2rem,5vw,4rem)}.admin-page>header{justify-content:space-between;align-items:center;display:flex}.admin-page h1{font-family:Noto Serif SC,SimSun,serif;font-weight:400}.admin-page button:not(.paper-button){color:#27372f;cursor:pointer;background:0 0;border:1px solid #718078;border-radius:.35rem;padding:.55rem .8rem}.admin-login{max-width:32rem;min-height:auto;margin:8vh auto}.admin-login label{gap:.4rem;margin:1rem 0;font-size:.75rem;display:grid}.admin-login input{color:#17211d;background:#fff;border:1px solid #bdc5be;padding:.7rem}.admin-reports{gap:1rem;margin-top:2rem;display:grid}.admin-reports article{background:#fff;border:1px solid #d5dbd5;padding:1.25rem}.admin-reports article>div{align-items:center;gap:1rem;display:flex}.admin-reports code{color:#657068;font-size:.72rem}.admin-reports footer{gap:.6rem;margin-top:1rem;display:flex}@media (prefers-reduced-motion:reduce){.airplane-hit:after,.airplane-hit__fallback{transition:none}}.conversation-page,.archive-page,.prose-page{background:radial-gradient(circle at 12% 0,#4f685933,#0000 28rem),#08110f;min-height:100svh}.conversation-header,.archive-header{border-bottom:1px solid #e8dfca1f;grid-template-columns:1fr auto 1fr;align-items:center;padding:1rem clamp(1rem,4vw,3rem);display:grid}.conversation-header a,.archive-header a{color:#e8dfcaa6;font-size:.75rem;text-decoration:none}.conversation-header>div{text-align:center;gap:.25rem;display:grid}.conversation-header>div span,.archive-header>span{letter-spacing:.22em;font-family:Noto Serif SC,SimSun,serif}.conversation-header small{color:#e8dfca73;font-size:.62rem}.conversation-header button{color:#e8dfca80;cursor:pointer;background:0 0;border:0;justify-self:end;font-size:.72rem}.message-stream{flex-direction:column;gap:1.2rem;max-width:48rem;min-height:calc(100svh - 18rem);margin:0 auto;padding:3rem 1.25rem 2rem;display:flex}.message-stream__status{color:#e8dfca80;text-align:center}.message-note{color:#1d2823;background:#dfd5bf;align-self:flex-start;max-width:min(82%,32rem);padding:1.25rem 1.4rem;transform:rotate(-.45deg);box-shadow:0 1rem 2rem #0005}.message-note--mine{background:#cbd3c5;align-self:flex-end;transform:rotate(.35deg)}.message-note span,.message-note small{color:#687168;font-size:.65rem}.message-note p{white-space:pre-wrap;margin:.55rem 0 0;font-family:Noto Serif SC,SimSun,serif;line-height:1.8}.message-composer{background:#08110ff0;border-top:1px solid #e8dfca1f;max-width:52rem;margin:0 auto;padding:1rem 1.25rem 1.25rem;position:sticky;bottom:0}.message-composer label{color:#e8dfca8c;margin-bottom:.5rem;font-size:.68rem;display:block}.message-composer textarea{color:var(--paper);resize:vertical;background:#e8dfca14;border:1px solid #e8dfca2e;border-radius:.65rem;width:100%;min-height:5rem;padding:.8rem}.message-composer>div{color:#e8dfca7a;grid-template-columns:1fr auto auto;align-items:center;gap:.8rem;margin-top:.65rem;font-size:.68rem;display:grid}.archive-page{padding-bottom:5rem}.archive-intro{color:#e8dfca99;text-align:center;max-width:72rem;margin:4rem auto 2rem;padding:0 1.25rem}.archive-intro small{color:#e8dfca61}.archive-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(2rem,5vw,5rem);max-width:72rem;margin:0 auto;padding:1rem 1.25rem;display:grid}.archive-grid h1{letter-spacing:.14em;font-family:Noto Serif SC,SimSun,serif;font-size:1.15rem;font-weight:400}.archive-empty{color:#e8dfca66;text-align:center;border:1px dashed #e8dfca29;padding:2rem}.archive-card{color:#1e2924;background:#ded4be;margin-top:1rem;padding:1.2rem;text-decoration:none;display:block}.archive-card p{font-family:Noto Serif SC,SimSun,serif;line-height:1.75}.archive-card small{color:#6b746b}.prose-page{margin:0;padding:clamp(2rem,7vw,6rem) max(1.25rem,50vw - 23rem)}.prose-page>a{color:#e8dfca99;font-size:.75rem;text-decoration:none}.prose-page .letter__kicker{color:#e8dfca73;margin-top:5rem}.prose-page h1{font-family:Noto Serif SC,SimSun,serif;font-size:clamp(2rem,5vw,3.8rem);font-weight:400;line-height:1.5}.prose-page>p:not(.letter__kicker){color:#e8dfcaad;font-family:Noto Serif SC,SimSun,serif;line-height:2}@media (max-width:700px){.conversation-header,.archive-header{grid-template-columns:1fr auto}.conversation-header>div,.archive-header>span{grid-area:1/2}.conversation-header button{display:none}.archive-grid{grid-template-columns:1fr}.message-note{max-width:90%}}
