:root{--night:#080f1d;--ink:#eee9df;--muted:#8793a4;--line:rgba(163,181,204,.17);--amber:#e4b262;--amber-soft:#f2d497;--serif:'Noto Serif TC','PMingLiU',serif;--sans:'Noto Sans TC',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--night);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.7;min-height:100vh}button,input,textarea,select{font:inherit}button{color:inherit}.scene{position:fixed;inset:0;z-index:-2;background-image:linear-gradient(180deg,rgba(3,8,16,.07),rgba(3,8,16,.43) 54%,#080f1d 96%),linear-gradient(90deg,rgba(5,10,18,.03),rgba(6,12,22,.24) 32%,rgba(6,12,22,.66) 64%,rgba(5,10,19,.8)),url('night-lamp-background.png');background-size:cover;background-position:left center}.lamp-glow{position:absolute;left:4%;top:3%;width:23vw;height:45vh;background:radial-gradient(circle,rgba(255,200,104,.17),transparent 64%);filter:blur(22px);animation:breathe 7s ease-in-out infinite}.hero{height:48vh;min-height:430px;max-height:610px;width:min(1180px,calc(100% - 48px));margin:auto;position:relative;display:flex;align-items:center}.top-nav{position:absolute;right:0;top:31px;display:flex;gap:7px;align-items:center}.top-nav button{border:0;background:none;padding:5px;color:#9aa5b3;font-size:.78rem;cursor:pointer}.top-nav span{color:#39475a;font-size:.7rem}.top-nav button:hover,.top-nav button.active{color:var(--amber-soft)}.hero-copy{margin-left:30%;padding-top:1rem}.moon{color:var(--amber);font-size:1.25rem;margin:0 0 .5rem}.hero h1{font:600 clamp(2.8rem,6vw,5.7rem)/1.12 var(--serif);letter-spacing:.18em;margin:0;color:#fff5df;text-shadow:0 0 40px rgba(235,179,86,.2)}.english{color:#6e7d90;letter-spacing:.38em;font:500 .7rem Georgia,serif;margin:.75rem 0 1.4rem}.tagline{font:400 clamp(.9rem,1.5vw,1.06rem) var(--serif);letter-spacing:.13em;color:#bdc2c8}.scroll-hint{position:absolute;right:0;bottom:18px;font-size:.72rem;letter-spacing:.15em;color:#647287}.scroll-hint span{color:var(--amber)}main{width:min(980px,calc(100% - 48px));margin:auto}.board-nav{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;gap:12px;overflow-x:auto;padding:14px 0 12px;border-top:1px solid rgba(229,188,113,.2);border-bottom:1px solid var(--line);background:rgba(8,15,29,.86);backdrop-filter:blur(14px);scrollbar-width:none}.board-nav::-webkit-scrollbar{display:none}.board-nav button{flex:0 0 auto;border:0;background:none;padding:4px 6px;color:#a8b1bc;font:500 .78rem var(--serif);letter-spacing:.05em;cursor:pointer;position:relative}.board-nav button:after{content:'';position:absolute;height:1px;left:50%;right:50%;bottom:-9px;background:var(--amber);box-shadow:0 0 8px var(--amber);transition:.25s}.board-nav button:hover,.board-nav button.active{color:var(--amber-soft)}.board-nav button.active:after{left:12%;right:12%}.boards{padding:58px 0 56px}.board-row{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:22px;align-items:center;border-top:1px solid var(--line);padding:28px 3px;cursor:pointer;transition:.25s}.board-row:last-child{border-bottom:1px solid var(--line)}.board-row:hover{padding-left:12px;background:linear-gradient(90deg,rgba(224,174,92,.055),transparent 75%)}.board-number{font:400 .72rem Georgia,serif;letter-spacing:.12em;color:#566579}.board-copy h2{font:500 1.35rem var(--serif);letter-spacing:.08em;margin:0 0 5px}.board-copy p{color:#9aa6b5;font-size:.87rem;margin:0}.board-copy q{display:block;color:#b99964;font:400 .78rem var(--serif);margin-top:3px}.board-copy q:before,.board-copy q:after{content:''}.board-state{text-align:right;color:#778598;font-size:.7rem}.board-state i{display:inline-block;width:7px;height:7px;border:1px solid #647387;border-radius:50%;margin-left:11px}.board-state.live i{border:0;background:var(--amber);box-shadow:0 0 12px rgba(235,179,84,.72)}.forum{scroll-margin-top:55px}.forum-head{display:flex;justify-content:space-between;gap:24px;align-items:end;padding:15px 0 20px;border-bottom:1px solid var(--line)}.section-no{font:400 .62rem Georgia,serif;letter-spacing:.26em;color:#9b7b48;margin:0 0 6px}.forum-head h2,dialog h2{font:500 1.65rem var(--serif);letter-spacing:.08em;margin:0}.forum-head p:last-child{font-size:.78rem;color:#718095;margin:4px 0 0}.feed-actions{display:flex;align-items:center;gap:4px}.feed-actions button{border:0;background:none;padding:7px 10px;color:#718095;font-size:.74rem;cursor:pointer}.feed-actions button.active{color:var(--amber-soft)}.feed-actions .compose{margin-left:9px;border:1px solid rgba(226,176,94,.28);color:#dfb66f;padding:7px 13px}.search{display:none;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:13px 0}.search.open{display:flex}.search label{font-size:.75rem;color:#9a7c4d}.search input{flex:1;background:transparent;border:0;outline:0;color:var(--ink);min-width:0}.search button{border:0;background:none;color:#778598;font-size:.75rem;cursor:pointer}.post{display:grid;grid-template-columns:28px minmax(0,1fr) 95px;gap:20px;padding:26px 3px;border-bottom:1px solid var(--line);cursor:pointer;transition:.25s}.post:hover{padding-left:12px;background:linear-gradient(90deg,rgba(227,178,96,.055),transparent)}.post-index{font:400 .68rem Georgia,serif;color:#526174;padding-top:4px}.post-tags{display:flex;gap:8px;align-items:center}.post-tag,.post-hot,.post-timer{font-size:.63rem;letter-spacing:.09em;color:#8090a3}.post-hot{color:#d2a65d}.post-timer{color:#d38f74}.post h3{font-size:1rem;font-weight:500;line-height:1.5;margin:6px 0 4px;color:#e7e9ea}.post:hover h3{color:#f4d694}.post p{font-size:.8rem;color:#7d8a9b;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.post-meta{display:flex;gap:14px;margin-top:8px;color:#657488;font-size:.68rem}.post-stats{text-align:right;border-left:1px solid rgba(163,181,204,.1);padding-left:15px}.post-stats strong{display:block;font:400 1rem Georgia,serif;color:#b99a69}.post-stats span{display:block;color:#58677a;font-size:.63rem}.post-stats small{display:block;color:#526174;font-size:.62rem;margin-top:10px}.empty{padding:60px 0;text-align:center;color:#6b788a;font:400 .9rem var(--serif)}.load-more{width:100%;margin:18px 0 70px;padding:13px;border:1px solid rgba(163,181,204,.13);background:rgba(8,16,28,.35);color:#788699;font-size:.72rem;cursor:pointer}.load-more:hover{color:var(--amber-soft);border-color:rgba(228,178,98,.26)}.night-status{position:relative;text-align:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:53px 0 48px;margin-bottom:70px}.night-status p{font:400 1.1rem var(--serif);letter-spacing:.08em;margin:0 0 13px}.night-status strong{color:var(--amber-soft);font:400 1.4rem Georgia,serif}.night-status div{display:flex;justify-content:center;gap:27px;color:#68778a;font-size:.7rem}.night-status div b{color:#ae9163;font-weight:400;margin-left:5px}.night-status time{position:absolute;right:0;bottom:16px;color:#526174;font:400 .75rem Georgia,serif;letter-spacing:.12em}footer{width:min(980px,calc(100% - 48px));margin:auto;border-top:1px solid var(--line);display:flex;align-items:center;gap:24px;padding:24px 0 38px;color:#59687a;font-size:.68rem}footer p{margin:auto}footer button{border:0;background:none;color:#718095;font-size:.68rem;cursor:pointer}dialog{width:min(760px,calc(100% - 32px));max-height:84vh;overflow:auto;border:1px solid rgba(224,177,98,.25);background:linear-gradient(145deg,#111d30,#080f1d);color:var(--ink);padding:45px;box-shadow:0 35px 110px #02050a}dialog::backdrop{background:rgba(2,6,12,.82);backdrop-filter:blur(7px)}.dialog-close{position:absolute;right:18px;top:13px;border:0;background:none;color:#7b8899;font-size:1.5rem;cursor:pointer}.detail-tag{color:#c09a5d;font-size:.7rem;letter-spacing:.1em}.detail-title{font:500 1.7rem/1.5 var(--serif);margin:8px 0}.detail-meta{color:#68778a;font-size:.75rem;border-bottom:1px solid var(--line);padding-bottom:18px}.detail-body{padding:20px 0;font-size:.95rem;line-height:2}.detail-body p{margin:0 0 1.1em}.detail-actions{display:flex;gap:8px;border-bottom:1px solid var(--line);padding-bottom:22px}.detail-actions button{border:1px solid var(--line);background:transparent;padding:7px 12px;color:#8290a1;font-size:.72rem;cursor:pointer}.replies-title{font:500 1rem var(--serif);margin:27px 0 5px}.reply{position:relative;padding:18px 0;border-bottom:1px solid rgba(163,181,204,.1)}.reply b{font-size:.72rem;color:#b99a69}.reply p{font-size:.83rem;margin:5px 0}.reply small{color:#526174;font-size:.63rem}form label{display:block;color:#9eabb9;font-size:.75rem;margin:17px 0}form input,form textarea,form select{width:100%;margin-top:7px;padding:12px;background:#091322;border:1px solid #2b3a50;color:var(--ink);outline:0}form textarea{height:150px;resize:vertical}.form-foot{display:flex;justify-content:space-between;align-items:center}.form-foot small{color:#677588}.form-foot button{border:1px solid rgba(229,179,95,.35);background:#d6a554;color:#101826;padding:10px 15px;cursor:pointer}.toast{position:fixed;z-index:20;bottom:28px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#e2b468;color:#101827;padding:9px 16px;font-size:.75rem;transition:.25s}.toast.show{opacity:1;transform:translate(-50%,0)}@keyframes breathe{0%,100%{opacity:.72;transform:scale(.98)}50%{opacity:1;transform:scale(1.03)}}
@media(max-width:720px){.scene{background-position:17% center;background-image:linear-gradient(180deg,rgba(3,8,16,.12),rgba(3,8,16,.3) 43%,#080f1d 94%),linear-gradient(90deg,rgba(4,9,17,.06),rgba(5,11,20,.58) 74%,rgba(5,10,18,.75)),url('night-lamp-background.png')}.lamp-glow{width:60vw;height:42vh;left:-7%}.hero{height:58vh;min-height:510px;width:calc(100% - 32px);align-items:flex-start}.top-nav{top:15px;right:0}.top-nav button{font-size:.68rem;padding:4px 2px}.hero-copy{margin:0 auto;text-align:center;padding-top:100px}.hero h1{font-size:2.65rem}.tagline{font-size:.82rem;max-width:250px}.scroll-hint{right:50%;transform:translateX(50%)}main,footer{width:calc(100% - 32px)}.board-nav{justify-content:flex-start;margin:0 -16px;padding-left:16px;padding-right:16px}.board-nav button{font-size:.73rem}.boards{padding:37px 0}.board-row{grid-template-columns:32px minmax(0,1fr);gap:10px;padding:22px 1px}.board-state{grid-column:2;text-align:left;margin-top:-4px}.board-copy h2{font-size:1.1rem}.board-copy p{font-size:.76rem}.board-copy q{font-size:.7rem}.forum-head{align-items:flex-start}.feed-actions{flex-wrap:wrap;justify-content:flex-end}.feed-actions .compose{width:100%;margin-top:5px}.post{grid-template-columns:23px minmax(0,1fr);gap:8px;padding:21px 1px}.post-stats{display:none}.post h3{font-size:.92rem}.post p{font-size:.74rem}.post-meta{gap:10px}.night-status{margin-bottom:40px}.night-status time{position:static;display:block;margin-top:18px}footer{display:block;text-align:center}footer p{margin:7px 0}dialog{padding:35px 22px}.detail-title{font-size:1.35rem}.form-foot{gap:15px;align-items:end}.form-foot small{max-width:130px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.lamp-glow{animation:none}}

/* The living night: one lamp, seven quietly changing corners. */
.opening{position:fixed;inset:0;z-index:100;background:#030812;pointer-events:none;animation:opening-fade 2.25s ease forwards}.opening span{position:absolute;left:12%;top:18%;color:#d9b16c;font:400 .7rem var(--serif);letter-spacing:.18em;opacity:0;animation:click-word 1.25s ease .42s forwards}.quick-opening{animation-duration:.75s}.quick-opening span{display:none}.lamp-switch{position:fixed;z-index:4;left:3.8vw;top:5vh;width:13vw;height:38vh;min-width:95px;max-width:235px;border:0;background:transparent;cursor:pointer}.lamp-switch:focus-visible{outline:1px solid rgba(242,212,151,.55);outline-offset:5px}.lamp-message{position:fixed;z-index:6;left:18%;top:18%;margin:0;color:#dcc18e;font:400 .78rem var(--serif);letter-spacing:.13em;opacity:0;transform:translateY(5px);transition:.6s;pointer-events:none}.lamp-message.show{opacity:.82;transform:none}body.lamp-off .scene{filter:brightness(.26) saturate(.55);transition:filter .45s ease}body.lamp-off .lamp-glow{opacity:0!important}body:not(.lamp-off) .scene{filter:brightness(1);transition:filter .65s ease}.board-atmosphere{position:absolute;inset:0;overflow:hidden;opacity:0;transition:opacity .38s}.board-atmosphere.active{opacity:1}.particle{position:absolute;display:block;pointer-events:auto}.leaf{width:9px;height:5px;border:1px solid rgba(201,171,112,.28);border-radius:100% 0 100% 0;animation:leaf-drift 12s linear infinite}.windline{width:160px;height:28px;border-top:1px solid rgba(145,173,204,.12);border-radius:50%;animation:wind-pass 7s ease-in-out infinite}.star-dot{width:3px;height:3px;border-radius:50%;background:rgba(226,218,188,.66);box-shadow:0 0 8px rgba(240,215,157,.6);animation:star-wake 5s ease-in-out infinite}.steam{width:19px;height:85px;border-left:1px solid rgba(225,213,187,.13);border-radius:50%;filter:blur(.3px);animation:steam-rise 7s ease-in-out infinite}.waiting-dot{width:7px;height:7px;border-radius:50%;background:rgba(222,180,102,.55);box-shadow:0 0 15px rgba(222,180,102,.4);animation:wait-here 6s ease-in-out infinite}.corner-arc{width:270px;height:170px;border-top:1px solid rgba(224,179,96,.12);border-radius:50%;transform:rotate(13deg)}.pair-dot{width:7px;height:7px;border-radius:50%;background:rgba(236,202,139,.65);box-shadow:0 0 13px rgba(227,180,96,.55);transition:transform 1.2s ease}.pair:hover .pair-dot:first-child{transform:translateX(9px)}.pair:hover .pair-dot:last-child{transform:translateX(-9px)}.fleeting-dot{width:5px;height:5px;border-radius:50%;background:rgba(193,200,202,.38);box-shadow:0 0 9px rgba(195,205,209,.22);animation:flicker-away var(--life,8s) ease-in-out infinite}.station-sign{width:105px;height:58px;border:1px solid rgba(149,169,190,.1);border-left-width:2px}.station-sign:after{content:'';display:block;width:1px;height:110px;background:rgba(149,169,190,.1);margin:58px 0 0 16px}.board-transition .forum,.board-transition .boards{opacity:.2;transform:translateY(6px)}.forum,.boards{transition:opacity .22s ease,transform .22s ease}body[data-board="late"] .lamp-glow{opacity:1.15;filter:blur(26px)}body[data-board="fleeting"] .scene{background-color:#030814}.new-star{animation:star-birth 1.8s ease forwards!important}
@keyframes opening-fade{0%,34%{opacity:1}58%{opacity:.98}100%{opacity:0;visibility:hidden}}@keyframes click-word{0%,32%{opacity:0}42%,62%{opacity:.65}100%{opacity:0}}@keyframes leaf-drift{0%{transform:translate(-10vw,-4vh) rotate(0);opacity:0}12%{opacity:.5}100%{transform:translate(75vw,45vh) rotate(480deg);opacity:0}}@keyframes wind-pass{0%,100%{transform:translateX(-30vw);opacity:0}40%{opacity:1}75%{transform:translateX(90vw);opacity:0}}@keyframes star-wake{0%,100%{opacity:.18}50%{opacity:1}}@keyframes star-birth{0%{opacity:0;transform:scale(.1)}70%{opacity:1;transform:scale(2)}100%{opacity:.7;transform:scale(1)}}@keyframes steam-rise{0%{transform:translateY(60px) scaleX(.7);opacity:0}30%{opacity:.7}100%{transform:translateY(-80px) translateX(14px) scaleX(1.3);opacity:0}}@keyframes wait-here{0%,100%{opacity:0}35%,65%{opacity:.85}}@keyframes flicker-away{0%,55%{opacity:.7}85%,100%{opacity:.05;transform:scale(.2)}}
@media(max-width:720px){.lamp-switch{left:0;top:8vh;width:34vw;height:37vh}.lamp-message{left:36%;top:29%}.opening span{left:18%;top:20%}.corner-arc{width:160px}.station-sign{display:none}}
@media(prefers-reduced-motion:reduce){.opening{animation-duration:.01s}.particle{animation:none!important}.board-atmosphere{transition:none}}

body.board-page .hero{height:25vh;min-height:245px;max-height:300px}body.board-page .hero-copy{margin-left:24%;transform:scale(.72);transform-origin:left center}body.board-page .scroll-hint{display:none}body.board-page .boards{display:none}body.board-page .forum{padding-top:48px}body.board-page .top-nav button[data-home]:before{content:'← ';color:var(--amber)}body.board-page .night-status{margin-top:20px}
@media(max-width:720px){body.board-page .hero{height:31vh;min-height:290px}body.board-page .hero-copy{margin:0 auto;padding-top:77px;transform:scale(.78);transform-origin:center top}body.board-page .forum{padding-top:32px}}

/* Opening ritual */
body.intro-running{overflow:hidden}body.intro-running>.hero,body.intro-running>main,body.intro-running>footer,body.intro-running>.lamp-switch{opacity:0}body>.hero,body>main,body>footer,body>.lamp-switch{transition:opacity .65s ease}body.intro-dark .scene{filter:brightness(.16) saturate(.45)}body.intro-dark .lamp-glow{opacity:0!important}.opening{display:grid;place-items:center;background:rgba(4,10,20,.16);animation:none;transition:opacity .55s ease,visibility .55s}.opening.done{opacity:0;visibility:hidden}.opening-brand{text-align:center;transform:translateY(-2vh)}.opening-brand h2{margin:0;color:#f2eee5;font:500 clamp(2rem,4.5vw,3.8rem)/1.25 var(--serif);letter-spacing:.2em;opacity:0;transform:translateY(6px)}.opening-en{margin:.65rem 0 0;color:#7d899a;font:400 .67rem Georgia,serif;letter-spacing:.42em;opacity:0}.opening-line{margin:1.6rem 0 0;color:#abb2bc;font:400 .88rem var(--serif);letter-spacing:.12em;opacity:0}.opening-click{display:block;margin-top:2.4rem;color:#d8ae68;font:400 .72rem var(--serif);letter-spacing:.2em;opacity:0}.opening-skip{position:absolute;right:32px;bottom:25px;border:0;background:transparent;color:#647286;font-size:.7rem;letter-spacing:.08em;cursor:pointer;opacity:0}.opening.full .opening-brand h2{animation:intro-rise .55s ease .25s forwards}.opening.full .opening-en{animation:intro-rise .5s ease .58s forwards}.opening.full .opening-line{animation:intro-rise .55s ease .88s forwards}.opening.full .opening-click{animation:intro-click .55s ease 1.43s forwards}.opening.full .opening-skip{animation:intro-rise .4s ease .7s forwards}.opening.quick .opening-brand h2{font-size:1.35rem;animation:intro-rise .18s ease forwards}.opening.quick .opening-en{display:none}.opening.quick .opening-line{margin-top:.45rem;font-size:.7rem;animation:intro-rise .18s ease .06s forwards}.opening.quick .opening-click{margin-top:.65rem;animation:intro-click .16s ease .2s forwards}.opening.quick .opening-skip{display:none}.opening.light-sweep .opening-brand h2{text-shadow:-25px 0 35px transparent,0 0 22px rgba(232,181,94,.5);color:#fff4dd}.opening.light-sweep .scene{filter:none}@keyframes intro-rise{to{opacity:1;transform:none}}@keyframes intro-click{0%{opacity:0}35%,75%{opacity:.75}100%{opacity:0}}
@media(max-width:720px){.opening-brand{padding:0 25px}.opening-brand h2{font-size:2.25rem}.opening-line{font-size:.78rem}.opening-skip{right:19px;bottom:18px}}
.opening-brand .opening-click{position:static;left:auto;top:auto}

/* Hold the entire title sequence until the street-lamp photograph is ready. */
body.intro-waiting .opening-brand,body.intro-waiting .opening-skip{visibility:hidden}
body.intro-waiting .scene,body.intro-waiting .opening *{animation-play-state:paused!important}

/* The opening and homepage are the same scene: light first, UI second. */
body.intro-dark .scene{animation:night-awakes 1s ease .2s both}.opening.full .opening-brand h2{animation:intro-rise .42s ease .5s forwards}.opening.full .opening-en{animation:intro-rise .38s ease .7s forwards}.opening.full .opening-line{animation:intro-rise .45s ease .9s forwards}.opening.full .opening-click{animation:intro-click .38s ease .28s forwards}.opening.full .opening-brand{animation:brand-to-home 2.42s cubic-bezier(.55,.05,.22,1) both}.opening.full .opening-line{transition:opacity .25s}.opening.full.light-sweep .opening-line{opacity:0!important}body.intro-running>.hero,body.intro-running>main,body.intro-running>footer,body.intro-running>.lamp-switch{animation:site-awake .34s ease 2.06s forwards}body.intro-running .hero-copy{opacity:0;animation:home-brand-arrives .12s linear 2.4s forwards}
@keyframes night-awakes{0%{filter:brightness(.16) saturate(.45)}18%{filter:brightness(.22) saturate(.55)}55%{filter:brightness(.56) saturate(.78)}100%{filter:brightness(1) saturate(1)}}@keyframes brand-to-home{0%,78%{transform:translateY(-2vh) scale(1)}100%{transform:translate(-15vw,-26vh) scale(.48)}}@keyframes site-awake{to{opacity:1}}@keyframes home-brand-arrives{to{opacity:1}}
@media(max-width:720px){@keyframes brand-to-home{0%,78%{transform:translateY(-2vh) scale(1)}100%{transform:translate(0,-28vh) scale(.65)}}}
body.intro-running .hero-copy{animation:none!important}

/* Lamp first, words second; denser homepage directory. */
.opening.full .opening-brand h2{animation:intro-rise .38s ease .82s forwards}.opening.full .opening-en{animation:intro-rise .34s ease 1.02s forwards}.opening.full .opening-line{animation:intro-rise .4s ease 1.2s forwards}.opening.full .opening-click{animation:intro-click .34s ease .28s forwards}body.intro-dark .scene{animation:night-awakes .78s ease .14s both}.boards{padding:34px 0 38px}.board-row{grid-template-columns:38px minmax(0,1fr) auto;gap:16px;padding:17px 3px}.board-row:hover{padding-left:9px}.board-copy h2{font-size:1.06rem;margin-bottom:2px}.board-copy p{font-size:.78rem;line-height:1.5}.board-copy q{font-size:.7rem;margin-top:1px}.board-state{font-size:.64rem}.board-number{font-size:.65rem}
@media(max-width:720px){.boards{padding:25px 0 30px}.board-row{grid-template-columns:27px minmax(0,1fr);gap:8px;padding:15px 1px}.board-copy h2{font-size:.98rem}.board-copy p{font-size:.72rem}.board-copy q{font-size:.66rem}}

/* Clear staging: the lamp finishes waking before any lettering appears. */
.opening.full .opening-brand h2{animation:intro-rise .34s ease 1.35s forwards}.opening.full .opening-en{animation:intro-rise .3s ease 1.57s forwards}.opening.full .opening-line{animation:intro-rise .36s ease 1.79s forwards}.opening.quick .opening-brand h2{animation:intro-rise .22s ease .62s forwards}.opening.quick .opening-line{animation:intro-rise .22s ease .78s forwards}.opening.quick .opening-click{animation:intro-click .18s ease .22s forwards}body.intro-dark .scene{animation:none}.boards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px;padding:24px 0 30px}.board-row{grid-template-columns:27px minmax(0,1fr);gap:9px;padding:11px 2px}.board-row:nth-last-child(-n+2){border-bottom:1px solid var(--line)}.board-row:hover{padding-left:6px}.board-copy h2{font-size:.91rem;margin:0}.board-copy p{font-size:.69rem;line-height:1.42;margin-top:2px}.board-copy q{font-size:.62rem;line-height:1.4;margin-top:0}.board-state{display:none}.board-number{font-size:.59rem}
@media(max-width:720px){.boards{grid-template-columns:1fr;padding:18px 0 24px}.board-row{padding:10px 1px}.board-row:nth-last-child(2){border-bottom:0}.board-copy h2{font-size:.89rem}.board-copy p{font-size:.68rem}.board-copy q{font-size:.61rem}}

/* Board marks stay quiet until their corner of the night is entered. */
.board-nav button{display:inline-flex;align-items:center;gap:0}
.board-nav .board-mark{display:inline-block;width:0;overflow:hidden;opacity:0;color:var(--amber);transform:scale(.55);transform-origin:center;transition:width .18s ease,opacity .18s ease,transform .18s ease,margin-right .18s ease;text-shadow:0 0 9px rgba(232,181,94,.4)}
body.board-page .board-nav button.active .board-mark{width:1.15em;margin-right:.38em;animation:board-mark-wake .16s ease both}
body.board-page .board-nav button.active>span:last-child{animation:board-name-wake .2s ease .1s both}
body.board-page .board-nav button.active:after{animation:board-line-wake .22s ease .18s both}
@keyframes board-mark-wake{0%{opacity:0;transform:scale(.45)}70%{opacity:1;transform:scale(1.16)}100%{opacity:1;transform:scale(1)}}
@keyframes board-name-wake{from{opacity:.35;color:#a8b1bc}to{opacity:1;color:var(--amber-soft)}}
@keyframes board-line-wake{from{left:50%;right:50%;opacity:0}to{left:12%;right:12%;opacity:1}}
body[data-board="wind"] .board-nav button.active .board-mark{animation-name:board-mark-wake,wind-mark}
body[data-board="star"] .board-nav button.active .board-mark{animation-name:board-mark-wake,star-mark}
body[data-board="fleeting"] .board-nav button.active .board-mark{animation-name:board-mark-wake,time-mark}
@keyframes wind-mark{0%{translate:-4px 0}100%{translate:0 0}}
@keyframes star-mark{0%{filter:brightness(.7)}65%{filter:brightness(1.7)}100%{filter:brightness(1)}}
@keyframes time-mark{0%{rotate:-24deg}100%{rotate:0deg}}
@media(prefers-reduced-motion:reduce){body.board-page .board-nav button.active .board-mark,body.board-page .board-nav button.active>span:last-child,body.board-page .board-nav button.active:after{animation:none}}

/* Make each board's living-night layer readable without turning it into decoration. */
.board-atmosphere{position:fixed;inset:0;z-index:2;overflow:hidden;pointer-events:none;opacity:0;transition:opacity .5s ease}
.board-atmosphere.active{opacity:1}
body.lamp-off .board-atmosphere{opacity:.12}
.board-atmosphere .leaf{border-color:rgba(220,188,126,.48);filter:drop-shadow(0 0 4px rgba(222,180,102,.22))}
.board-atmosphere .windline{border-color:rgba(156,187,220,.22)}
.board-atmosphere .star-dot{width:4px;height:4px;background:rgba(239,226,194,.8);box-shadow:0 0 11px rgba(240,215,157,.75)}
.board-atmosphere .steam{border-color:rgba(231,220,197,.25)}
.board-atmosphere .waiting-dot{background:rgba(234,190,108,.72);box-shadow:0 0 18px rgba(231,184,99,.55)}
.board-atmosphere .corner-arc{border-color:rgba(224,179,96,.22)}
.board-atmosphere .fleeting-dot{background:rgba(205,214,217,.5);box-shadow:0 0 11px rgba(205,214,217,.34)}
.board-atmosphere .station-sign{border-color:rgba(160,183,207,.18)}
.pair{display:flex;align-items:center;gap:34px;pointer-events:none}
.pair-dot{position:relative;display:block;width:9px;height:9px;border-radius:50%;background:rgba(244,211,148,.88);box-shadow:0 0 7px rgba(239,194,112,.9),0 0 20px rgba(227,180,96,.62);pointer-events:auto;cursor:default;transition:transform 1.05s cubic-bezier(.2,.75,.2,1),box-shadow .7s ease}
.pair-dot:after{content:'';position:absolute;inset:-16px;border-radius:50%}
.pair-dot:first-child:hover{transform:translateX(15px);box-shadow:0 0 9px rgba(255,226,170,1),0 0 28px rgba(227,180,96,.8)}
.pair-dot:last-child:hover{transform:translateX(-15px);box-shadow:0 0 9px rgba(255,226,170,1),0 0 28px rgba(227,180,96,.8)}
.pair:has(.pair-dot:first-child:hover) .pair-dot:last-child{transform:translateX(-3px)}
.pair:has(.pair-dot:last-child:hover) .pair-dot:first-child{transform:translateX(3px)}
@media(max-width:720px){.pair{left:68%!important;top:24%!important;gap:27px}.pair-dot{width:8px;height:8px}.pair-dot:first-child:hover{transform:translateX(11px)}.pair-dot:last-child:hover{transform:translateX(-11px)}}

/* Native links keep every board reachable even when scripts are delayed. */
.board-nav a{flex:0 0 auto;display:inline-flex;align-items:center;gap:0;padding:4px 6px;color:#a8b1bc;font:500 .78rem var(--serif);letter-spacing:.05em;cursor:pointer;position:relative;text-decoration:none}
.board-nav a:after{content:'';position:absolute;height:1px;left:50%;right:50%;bottom:-9px;background:var(--amber);box-shadow:0 0 8px var(--amber);transition:.25s}
.board-nav a:hover,.board-nav a.active{color:var(--amber-soft)}
.board-nav a.active:after{left:12%;right:12%}
.board-nav a.active .board-mark{width:1.15em;margin-right:.38em;animation:board-mark-wake .16s ease both}
.board-nav a.active>span:last-child{animation:board-name-wake .2s ease .1s both}
.board-nav a.active:after{animation:board-line-wake .22s ease .18s both}
@media(max-width:720px){.board-nav a{font-size:.73rem}}

/* One continuous night: dim lamp, lettering, then the forum grows into place. */
body.intro-waiting>.hero,body.intro-waiting>main,body.intro-waiting>footer,body.intro-waiting>.lamp-switch{animation-play-state:paused!important}
.opening.full .opening-brand{animation:brand-to-home 2.44s cubic-bezier(.55,.05,.22,1) both}
.opening.full .opening-brand h2{animation:intro-rise .34s ease .5s forwards}
.opening.full .opening-en{animation:intro-rise .3s ease .7s forwards}
.opening.full .opening-line{animation:intro-rise .36s ease .9s forwards,tagline-away 2.35s linear both}
.opening.full.light-sweep .opening-line{opacity:1!important}
@keyframes brand-to-home{0%,86%{transform:translateY(-2vh) scale(1)}100%{transform:translate(-15vw,-26vh) scale(.48)}}
@keyframes tagline-away{0%,88%{filter:opacity(1)}100%{filter:opacity(0)}}
@media(prefers-reduced-motion:reduce){.opening.full .opening-brand{animation-duration:.01s}}
