@font-face{font-family:MoonLi;src:local('Libian SC'),local('Libian SC Regular'),local('Libian'),local('隶变-简');font-weight:400;font-style:normal}
@font-face{font-family:MoonSong;src:local('Songti SC Regular'),local('Songti SC');font-weight:400;font-style:normal}
:root{--paper:#f5f0e5;--ink:#294649;--muted:#727769;--red:#a94f38;--gold:#b98b43;--line:#d9d0bb;--title:MoonLi,'Libian SC',serif;--verse:MoonSong,'Songti SC','Noto Serif CJK SC',serif;--sans:'PingFang SC','Microsoft YaHei',sans-serif}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 0 0,#e1e6d699,transparent 50%),radial-gradient(ellipse at 100% 80%,#ead9b655,transparent 55%),var(--paper);color:var(--ink);font-family:var(--sans);min-height:100svh}button,input{font:inherit}button{cursor:pointer;touch-action:manipulation;color:inherit}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus-visible,svg:focus-visible{outline:3px solid var(--gold);outline-offset:4px}[hidden]{display:none!important}.wrap{max-width:1440px;margin:auto;padding:22px 32px}.masthead{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:17px;border-bottom:1px solid var(--line)}.brand{font:400 23px/1.4 var(--title);letter-spacing:.1em}.season,.quiet{font:12px/1.7 var(--sans);color:var(--muted)}.quiet{background:none;border:0;padding:8px 4px}.welcome{display:grid;grid-template-columns:.85fr 1.15fr;gap:55px;align-items:center;padding:55px 0;min-height:74svh}.eyebrow,.chapter{font:12px/1.8 var(--sans);letter-spacing:.15em;color:var(--red)}.welcome h1{font:400 clamp(34px,4vw,51px)/1.6 var(--title);letter-spacing:.06em;margin:18px 0}.verse{font:400 18px/2 var(--verse);letter-spacing:.05em;color:#656956;text-wrap:pretty}.hero-art{margin:0;transform:rotate(1deg);border:7px solid #fffaf0;box-shadow:0 15px 40px #29464914}.hero-art img{display:block;width:100%;height:auto}.hero-art figcaption{font:16px/2 var(--verse);padding:12px 16px;background:#fffaf0;text-align:center}.name-label{display:block;font-size:12px;color:var(--muted);margin:25px 0 8px}input{display:block;width:100%;max-width:300px;padding:13px 14px;border:1px solid var(--line);background:#fffaf0;border-radius:5px;color:var(--ink)}.primary{border:0;background:var(--ink);color:#fff8e9;padding:14px 25px;border-radius:5px;font-size:14px;letter-spacing:.07em}.primary:hover{background:#3a5c5b}.welcome .primary{margin-top:18px}.smallprint{font-size:12px;line-height:1.9;color:var(--muted)}.game-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:25px 0 15px}.game-top h1{font:400 30px/1.5 var(--title);letter-spacing:.1em;margin:3px 0}.metrics{display:flex;gap:28px}.metric span{display:block;color:var(--muted);font-size:11px;margin-bottom:7px}.metric strong{font-size:23px;font-weight:400;font-variant-numeric:tabular-nums}.controls{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:16px 0}.progress{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted)}.petal{width:10px;height:10px;border:1px solid #9baf96;border-radius:50%}.petal.found{background:var(--red);border-color:var(--red)}.progress-label{margin-left:5px}.hint,.secondary,.level-pill{background:#fff9eb88;border:1px solid var(--line);border-radius:5px;padding:10px 14px;font-size:12px}.boards{display:grid;grid-template-columns:1fr 1fr;gap:20px}.board{margin:0;min-width:0}.board figcaption{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-bottom:8px}.board figcaption b{font-weight:400;color:var(--ink)}.frame{padding:4px;background:#fffaf0;border:1px solid #cec6b2;border-radius:7px;overflow:hidden;box-shadow:0 8px 24px #2946490a}.frame svg{width:100%;height:auto;display:block;border-radius:3px;cursor:crosshair;touch-action:manipulation;user-select:none;-webkit-user-select:none}.mark{fill:#a94f3810;stroke:#a94f38;stroke-width:3;pointer-events:none}.miss{fill:none;stroke:#a94f38;stroke-width:2;pointer-events:none;animation:fade .6s forwards}.game-bottom{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-top:18px}.instruction{font-size:12px;line-height:1.8;color:var(--muted);margin:0}.round-actions{display:flex;gap:8px}.levels{display:flex;gap:7px;overflow:auto;padding:16px 2px 5px;margin:5px 0 15px}.level-pill{min-width:43px;flex-shrink:0}.level-pill.active{background:var(--ink);border-color:var(--ink);color:var(--paper)}.level-pill.completed:not(.active){border-color:#a8b397}.footer{margin-top:30px;padding-top:18px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;font-size:11px;line-height:1.8;color:#7f826f}.overlay{position:fixed;inset:0;background:#20343588;backdrop-filter:blur(4px);z-index:20;display:grid;place-items:center;padding:20px}.dialog{position:relative;background:var(--paper);max-width:510px;width:100%;max-height:90svh;overflow:auto;padding:32px;border:1px solid #cbc1a9;border-radius:10px;text-align:center;box-shadow:0 20px 75px #14262533;animation:reveal .25s ease}.dialog h2{font:400 30px/1.6 var(--title);letter-spacing:.1em;margin:12px 0}.dialog p{font-size:13px;line-height:1.9;color:var(--muted)}.dialog p.verse{font:400 19px/2 var(--verse);letter-spacing:.06em;margin:18px auto 24px;max-width:325px}.dialog .primary,.dialog>.secondary{display:block;width:100%;margin-top:12px}.intro-art{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:4px;margin:12px 0 4px}.moon-medal{width:57px;height:57px;border-radius:50%;margin:0 auto 15px;background:#ead29a;color:var(--ink);display:grid;place-items:center;font:26px var(--title)}.result-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:15px 0;margin:18px 0}.result-stats b{display:block;font-size:23px;font-weight:400;margin-bottom:7px}.result-stats span{font-size:11px;color:var(--muted)}.rank-title{font:14px/1.8 var(--sans);font-weight:500;text-align:left;margin:22px 0 8px}.rank-list{padding:0;margin:0;list-style:none}.rank-list li{display:grid;grid-template-columns:25px 1fr auto;gap:10px;align-items:center;text-align:left;border-bottom:1px solid #d9d0bb88;padding:10px 0;font-size:13px}.rank-list .who{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-list .self{color:var(--red)}.rank-time{font-variant-numeric:tabular-nums}.rank-note{font-size:11px!important;text-align:left}.toast{position:fixed;z-index:30;left:50%;bottom:24px;transform:translateX(-50%);max-width:90%;width:max-content;border-radius:24px;padding:12px 20px;background:#294649f5;color:#fff9eb;font-size:13px;text-align:center}.card-preview{display:block;width:100%;height:auto;border-radius:5px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@keyframes reveal{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes fade{to{opacity:0}}@media(max-width:760px){.wrap{padding:16px}.brand{font-size:20px}.season{font-size:10px}.welcome{display:flex;flex-direction:column;gap:28px;min-height:auto;align-items:stretch;padding:30px 0}.welcome h1{font-size:37px;margin:12px 0}.welcome .verse{font-size:16px}.hero-art{max-width:540px}.game-top{margin-top:20px}.game-top h1{font-size:25px}.chapter{font-size:10px}.metrics{gap:14px}.metric strong{font-size:20px}.metric span{font-size:10px}.boards{grid-template-columns:1fr;gap:14px}.board figcaption{font-size:11px}.frame{padding:3px}.controls{margin:12px 0}.hint{font-size:11px;padding:9px 10px}.progress-label{font-size:11px}.dialog{padding:25px 20px}.dialog h2{font-size:27px}.dialog p.verse{font-size:17px}.footer{font-size:10px}.game-bottom{align-items:start;flex-direction:column}.intro-art{max-height:28svh}.round-actions{width:100%;justify-content:space-between}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important}}

/* Only the newest hint pulses; previously found ellipses remain unchanged. */
.mark.mark-hint{fill:#e1ae3226;stroke:#b97b09;stroke-width:5;filter:drop-shadow(0 0 2px #fff8dc);animation:moonHintPulse .9s ease-in-out infinite alternate}
@keyframes moonHintPulse{from{stroke-opacity:1;fill-opacity:.45}to{stroke-opacity:.65;fill-opacity:1}}
@media(prefers-reduced-motion:reduce){.mark.mark-hint{animation:none;stroke:#b97b09;stroke-width:5}}
