:root{--ink:#0f0d0c;--ink-2:#1a1714;--paper:#f3ebdc;--paper-2:#e6dac2;--cinnabar:#d4412a;--cinnabar-2:#b8311d;--gold:#cfa15b;--jade:#3e9e88;--mist:#9a958c;--serif:"Noto Serif SC", "Songti SC", "STSong", "SimSun", "Source Han Serif SC", serif;--brush:"Zhi Mang Xing", "Xingkai SC", "STXingkai", "Kaiti SC", "STKaiti", "KaiTi", serif;--mono:"JetBrains Mono", "SF Mono", ui-monospace, Menlo, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--ink);height:100%;color:var(--paper);font-family:var(--serif);-webkit-font-smoothing:antialiased;margin:0}body[data-view]:not([data-view=hub]){overflow:hidden}a{color:inherit}button{font:inherit;color:inherit}code{font-family:var(--mono);white-space:nowrap;background:#7f7f7f24;border-radius:4px;padding:0 .25em;font-size:.86em}.brush{font-family:var(--brush);font-weight:400}#app,.view{min-height:100%}.seal{background:var(--cinnabar);color:#fff4ea;width:2.1em;height:2.1em;font-family:var(--serif);-webkit-user-select:none;user-select:none;border-radius:.22em;grid-template-rows:1fr 1fr;grid-auto-flow:column;place-items:center;padding:.12em;font-size:15px;font-weight:900;line-height:1;display:inline-grid;transform:rotate(-3deg);box-shadow:inset 0 0 0 2px #fff0e68c,0 2px 10px #78140a40}.seal i{font-style:normal}.seal.small{font-size:11px}.seal.big{font-size:24px}.hall{position:fixed;inset:0;overflow:hidden}.hall .stage{position:absolute;inset:0}.hall canvas.gl{touch-action:none;width:100%;height:100%;display:block}.hall.theme-light{color:var(--ink);background:#efe6d4}.hall.theme-dark{color:var(--paper);background:#07070b}.chrome-top{left:clamp(14px,3vw,36px);top:calc(clamp(12px, 2.4vw, 28px) + env(safe-area-inset-top,0px));pointer-events:none;z-index:3;max-width:min(560px,70vw);position:absolute}.chrome-top>*{pointer-events:auto}.back{letter-spacing:.08em;opacity:.72;align-items:center;gap:.4em;padding:4px 0;font-size:13px;text-decoration:none;display:inline-flex}.back:hover{opacity:1}.back .arrow{font-family:var(--mono)}.htitle .row{align-items:center;gap:14px;margin-top:2px;display:flex}.htitle h1{letter-spacing:.02em;margin:0;font-size:clamp(40px,5.6vw,76px);line-height:1.05}.htitle .sub{opacity:.78;max-width:470px;margin:6px 0 0;font-size:clamp(12.5px,1.05vw,15px);line-height:1.65}.theme-light .htitle h1{color:#1c1714;text-shadow:0 1px #fff6}.theme-dark .htitle h1{color:#f6eee0;text-shadow:0 2px 24px #0009}.pill{cursor:pointer;letter-spacing:.04em;white-space:nowrap;background:0 0;border:1px solid;border-radius:999px;justify-content:center;align-items:center;gap:6px;height:34px;padding:0 15px;font-size:13.5px;text-decoration:none;transition:background .2s,color .2s,transform .12s,border-color .2s;display:inline-flex}.theme-light .pill{background:#faf4e8b8;border-color:#1e181459}.theme-dark .pill{background:#0c0c128c;border-color:#f6eee047}.pill:hover{border-color:var(--cinnabar)}.pill:active{transform:scale(.97)}.pill.on,.pill.primary{color:#fff6ef;background:var(--cinnabar)!important;border-color:var(--cinnabar)!important}.pill:disabled{opacity:.4;pointer-events:none}.info-btn{top:calc(clamp(12px, 2.4vw, 28px) + env(safe-area-inset-top,0px));z-index:6;-webkit-backdrop-filter:blur(8px);position:absolute;right:clamp(14px,3vw,36px)}.drawer{z-index:5;-webkit-backdrop-filter:blur(18px)saturate(1.1);width:min(430px,94vw);padding:70px 26px 40px;transition:transform .45s cubic-bezier(.2,.8,.2,1);position:absolute;top:0;bottom:0;right:0;overflow-y:auto;transform:translate(104%)}.theme-light .drawer{background:#f7f0e2e6;box-shadow:-18px 0 60px #3c28142e}.theme-dark .drawer{background:#0e0d14db;box-shadow:-18px 0 60px #00000080}.drawer.open{transform:none}.drawer-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.drawer-head .brush{font-size:40px}.drawer .x{cursor:pointer;opacity:.6;background:0 0;border:0;font-size:28px;display:none}.card{border-top:1px solid #7f7f7f38;padding:16px 0 18px}.card .k{font-family:var(--mono);letter-spacing:.12em;color:var(--cinnabar);font-size:11px}.card h3{margin:4px 0 8px;font-size:18px;font-weight:900}.card .b{opacity:.9;font-size:14px;line-height:1.85}.card .b b{color:var(--cinnabar);font-weight:600}.theme-dark .card .b b{color:#ff9f7a}.credit{opacity:.6;margin-top:20px;font-size:12px;line-height:1.8}.caption{z-index:2;text-align:left;letter-spacing:.02em;border-left:2px solid var(--cinnabar);opacity:0;pointer-events:none;width:min(360px,27vw);padding-left:16px;font-size:clamp(14.5px,1.25vw,18.5px);line-height:1.85;transition:opacity .8s,transform .8s;position:absolute;top:max(250px,34vh);left:clamp(14px,3vw,36px);transform:translateY(8px)}.caption.on{opacity:1;transform:none}.theme-light .caption{text-shadow:0 0 14px #f5eede,0 0 3px #f5eede}.theme-dark .caption{text-shadow:0 0 20px #000000e6,0 0 4px #000000e6}.caption b{color:var(--cinnabar-2)}.theme-dark .caption b{color:#ffab83}.hall.midautumn-display .htitle{opacity:0;pointer-events:none;transition:opacity .7s}.hall.midautumn-display .caption{width:min(165px,30vw);font-size:15px;top:44%}.stats,.stats-wrap{z-index:3;pointer-events:none;position:absolute;right:clamp(14px,3vw,36px)}.stats{font-family:var(--mono);opacity:.85;text-align:right;grid-template-columns:auto auto;gap:3px 12px;font-size:11.5px;display:grid;top:calc(clamp(12px,2.4vw,28px) + 48px)}.stats .stat{display:contents}.stats .sk{opacity:.55}.stats .sv{text-align:left}.stats-wrap{top:calc(clamp(12px,2.4vw,28px) + 166px)}.spark{border-radius:6px;width:180px;height:40px;display:block}.dock{left:50%;bottom:calc(clamp(12px, 2.2vw, 26px) + env(safe-area-inset-bottom,0px));z-index:4;flex-direction:column;align-items:center;gap:10px;width:max-content;max-width:calc(100vw - 24px);display:flex;position:absolute;transform:translate(-50%)}.dock-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;display:flex}.chips{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.chip{cursor:pointer;border:1px solid;border-radius:10px;justify-content:center;align-items:center;min-width:42px;height:42px;padding:0 10px;font-size:15px;transition:all .2s;display:inline-flex}.brush-chip{font-family:var(--brush);padding:0;font-size:27px}.theme-light .chip{background:#faf4e8cc;border-color:#1e181440}.theme-dark .chip{background:#0c0c1299;border-color:#f6eee038}.chip.learned{box-shadow:inset 0 -3px 0 var(--gold)}.chip.on{color:#fff7ee;background:var(--cinnabar)!important;border-color:var(--cinnabar)!important}.chip:hover{border-color:var(--cinnabar)}.slider{white-space:nowrap;border-radius:999px;align-items:center;gap:8px;height:34px;padding:0 12px;font-size:12.5px;display:inline-flex}.theme-light .slider{background:#faf4e8b8;border:1px solid #1e18142e}.theme-dark .slider{background:#0c0c128c;border:1px solid #f6eee029}.slider input{width:110px;accent-color:var(--cinnabar)}.slider output{font-family:var(--mono);min-width:32px;font-size:11.5px}.seg{border:1px solid #7f7f7f59;border-radius:999px;display:inline-flex;overflow:hidden}.seg button{cursor:pointer;background:0 0;border:0;height:32px;padding:0 13px;font-size:13px}.theme-light .seg{background:#faf4e8b8}.theme-dark .seg{background:#0c0c128c}.seg button.on{background:var(--cinnabar);color:#fff6ef}.pad{z-index:20;-webkit-backdrop-filter:blur(6px);background:#0a080673;place-items:center;display:none;position:fixed;inset:0}.pad.open{display:grid}.pad-card{color:var(--ink);background:#f6efe2;border-radius:18px;width:min(420px,92vw);padding:18px;box-shadow:0 30px 80px #0006}.pad-head{justify-content:space-between;align-items:baseline;margin-bottom:10px;display:flex}.pad-head .brush{font-size:32px}.pad-head .hint{opacity:.6;font-size:12px}.pad canvas{aspect-ratio:1;touch-action:none;cursor:crosshair;background:#000;border-radius:12px;width:100%;display:block}.pad-actions{justify-content:flex-end;gap:8px;margin-top:12px;display:flex}.pad-actions .pill{background:#fff8ec;border-color:#1e18144d}.loading{opacity:.7;place-items:center;font-size:40px;animation:1.6s ease-in-out infinite breathe;display:grid;position:fixed;inset:0}@keyframes breathe{50%{opacity:.3}}.fail{text-align:center;place-content:center;gap:10px;padding:24px;display:grid;position:fixed;inset:0}.fail h2{font-family:var(--brush);margin:0;font-size:42px;font-weight:400}.fail p{opacity:.7;max-width:520px;line-height:1.7}.hub{min-height:100vh;padding:clamp(24px,5vw,64px) clamp(18px,5vw,72px) 40px;position:relative;overflow:hidden}.hub-bg{z-index:0;pointer-events:none;background:radial-gradient(1100px 700px at 80% 0%, #d4412a24, transparent 60%), radial-gradient(900px 600px at 5% 105%, #3e9e881a, transparent 60%), var(--ink);position:absolute;inset:0}.hub>:not(.hub-bg){z-index:1;position:relative}.hero{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:center;gap:clamp(12px,3vw,48px);max-width:1400px;margin:0 auto;display:grid}.hero-text{padding-top:clamp(0px,2vw,24px)}.kicker{font-family:var(--mono);letter-spacing:.18em;opacity:.6;font-size:12px}.hub-title{align-items:center;gap:22px;margin:12px 0 10px;font-size:clamp(64px,10vw,148px);font-weight:400;line-height:1;display:flex}.lead{opacity:.86;max-width:620px;margin:10px 0 0;font-size:clamp(15px,1.3vw,19px);line-height:1.95}.lead b{color:#ffab83;font-weight:600}.enter{background:var(--cinnabar);color:#fff6ef;letter-spacing:.08em;border-radius:999px;margin-top:26px;padding:12px 22px;font-size:15px;text-decoration:none;transition:transform .2s,box-shadow .2s;display:inline-flex;box-shadow:0 10px 30px #d4412a59}.enter:hover{transform:translateY(-2px);box-shadow:0 14px 40px #d4412a80}.hero-art{justify-self:center;width:min(58vh,40vw,620px);margin:0}.hero-flower{aspect-ratio:1;width:100%;display:block;-webkit-mask-image:radial-gradient(circle,#000 58%,#0000 71%);mask-image:radial-gradient(circle,#000 58%,#0000 71%)}.hero-art figcaption{text-align:center;opacity:.55;margin-top:4px;font-size:12.5px;line-height:1.7}.doors{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(12px,1.5vw,20px);max-width:1400px;margin:clamp(26px,4vw,52px) auto 0;display:grid}@media (width<=1100px){.doors{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=860px){.hero{grid-template-columns:1fr}.hero-art{order:-1;width:min(78vw,46vh)}.hero-text{text-align:left}}@media (width<=620px){.doors{grid-template-columns:1fr}}.door{background:linear-gradient(#f3ebdc0f,#f3ebdc05);border:1px solid #f3ebdc1f;border-radius:18px;flex-direction:column;gap:8px;padding:14px 14px 18px;text-decoration:none;transition:transform .35s cubic-bezier(.2,.8,.2,1),border-color .3s,background .3s;display:flex;position:relative;overflow:hidden}.door:hover{background:linear-gradient(#f3ebdc1a,#f3ebdc08);border-color:#d4412a99;transform:translateY(-6px)}.door-art{aspect-ratio:4/3;background:#00000059;border-radius:12px;overflow:hidden}.door-art img{object-fit:cover;width:100%;height:100%;transition:transform .6s cubic-bezier(.2,.8,.2,1);display:block}.door:hover .door-art img{transform:scale(1.05)}.door-n{font-family:var(--serif);letter-spacing:.3em;color:var(--gold);margin-top:4px;font-size:13px;font-weight:900}.door-title{justify-content:space-between;align-items:center;display:flex}.door-title .brush{font-size:clamp(34px,3vw,46px);line-height:1.1}.door-tag{color:var(--gold);letter-spacing:.06em;font-size:13px;font-weight:600}.door-hook{opacity:.78;flex:1;margin:0;font-size:13.5px;line-height:1.8}.door-go{letter-spacing:.1em;opacity:.6;font-size:13px;transition:opacity .3s,transform .3s}.door:hover .door-go{opacity:1;color:#ff9f7a;transform:translate(4px)}.hub-foot{opacity:.45;text-align:center;max-width:900px;margin:40px auto 0;font-size:12px;line-height:1.8}.hub-foot p{margin:2px 0}@media (width<=900px){.caption{text-align:center;border-left:0;width:min(560px,92vw);padding-left:0;top:auto;bottom:150px;left:50%;transform:translate(-50%,8px)}.caption.on{transform:translate(-50%)}.hall.midautumn-display .caption{width:min(420px,80vw);font-size:14px;top:clamp(120px,17vh,170px);bottom:auto}}@media (width<=720px){.htitle .sub{display:none}.slider input{width:84px}.stats,.stats-wrap{display:none}.drawer .x{display:block}.dock{width:calc(100vw - 16px)}}.hall canvas.overlay{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.dock-label{letter-spacing:.12em;opacity:.6;margin-right:2px;font-size:12px}[hidden]{display:none!important}.layer-labels{pointer-events:none;z-index:2;position:absolute;inset:0}.layer-labels span{letter-spacing:.1em;opacity:.6;white-space:nowrap;font-size:11px;font-family:var(--mono);position:absolute;transform:translate(-100%,-50%)}
