:root{--ink: #0a1116;--ink-2: #0f1c24;--ink-3: #16262e;--paper: #f3e9d2;--paper-dim: rgba(243, 233, 210, .62);--paper-faint: rgba(243, 233, 210, .34);--brass: #c9a227;--brass-lite: #e4c65a;--red: #c8443a;--mint: #7ff0d0;--line: rgba(201, 162, 39, .28);--radius: 14px;--safe-b: env(safe-area-inset-bottom, 0px);font-family:Songti SC,"Noto Serif SC","Source Han Serif SC",SimSun,serif;color:var(--paper);background:var(--ink);-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%}body{background:radial-gradient(120% 90% at 50% -10%,#1b3038,#0d1a21 45%,#070d11);overflow-x:hidden}#app{position:relative;min-height:100dvh;max-width:1040px;margin:0 auto;padding:0 18px calc(24px + var(--safe-b));display:flex;flex-direction:column}#app:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.05;background-image:repeating-linear-gradient(0deg,rgba(255,255,255,.6) 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,rgba(255,255,255,.35) 0 1px,transparent 1px 4px);mix-blend-mode:overlay}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;touch-action:manipulation}button:focus-visible{outline:2px solid var(--brass-lite);outline-offset:3px}.topbar{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 2px 10px}.brand{display:flex;align-items:baseline;gap:10px}.brand b{font-size:17px;letter-spacing:.1em;font-weight:700;white-space:nowrap}.brand span{font-size:10px;letter-spacing:.2em;color:var(--paper-faint);text-transform:uppercase}@media(max-width:430px){.brand span{display:none}}.tools{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--paper-dim)}.tools .chip{border:1px solid var(--line);border-radius:999px;padding:5px 11px;white-space:nowrap;font-variant-numeric:tabular-nums}.tools .chip b{color:var(--brass-lite);font-weight:600}.tools .icon{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);color:var(--paper-dim);display:grid;place-items:center;font-size:13px}main{position:relative;z-index:1;flex:1;display:flex;flex-direction:column}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 20px;border-radius:999px;background:linear-gradient(180deg,var(--brass-lite),var(--brass));color:#231b06;font-weight:700;letter-spacing:.08em;border:1px solid rgba(255,240,190,.5);box-shadow:0 6px 20px #c9a2272e;transition:transform .12s ease,box-shadow .2s ease,filter .2s ease}.btn:active{transform:translateY(1px) scale(.99)}.btn.ghost{background:transparent;color:var(--paper);border:1px solid var(--line);box-shadow:none}.btn.small{min-height:36px;padding:0 14px;font-size:13px}.btn:disabled{filter:grayscale(.7) brightness(.7);cursor:default}.card{background:linear-gradient(180deg,#16262eeb,#0c161cf0);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:0 18px 40px #00000047}.eyebrow{font-size:11px;letter-spacing:.28em;color:var(--paper-faint);text-transform:uppercase}.muted{color:var(--paper-dim)}.tnum{font-variant-numeric:tabular-nums}.title-screen{position:relative;flex:1;min-height:74dvh;display:flex;flex-direction:column;justify-content:flex-end;gap:22px;padding:26px 8px 10px}.title-art{position:absolute;inset:-18px;border-radius:20px;overflow:hidden;z-index:-1;background:center / cover no-repeat url(/images/shop.jpg),var(--ink-2);filter:saturate(.92) brightness(.72)}.title-art:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#070d1133,#070d118c 48%,#070d11f5)}.title-copy h1{margin:0;font-size:clamp(38px,11vw,64px);font-weight:800;letter-spacing:.12em;line-height:1.1;text-shadow:0 4px 30px rgba(0,0,0,.6)}.title-copy .sub{margin:10px 0 0;color:var(--paper-dim);font-size:14px;line-height:1.9;letter-spacing:.04em;max-width:34em}.title-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.title-note{font-size:11px;color:var(--paper-faint);line-height:1.7}.shop{display:grid;gap:16px;padding-bottom:8px}@media(min-width:820px){.shop{grid-template-columns:1.15fr .85fr;align-items:start}.shop .span2{grid-column:1 / -1}}.town{display:flex;align-items:center;gap:18px;padding:18px}.town-clock{width:96px;height:96px;flex:none}.town-meta{display:grid;gap:4px}.town-meta .big{font-size:28px;letter-spacing:.06em;font-variant-numeric:tabular-nums}.town-meta .small{font-size:12px;color:var(--paper-dim);line-height:1.6}.order{display:grid;gap:12px}.order .row{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.order .name{font-size:20px;letter-spacing:.04em}.order .owner{font-size:12px;color:var(--paper-dim)}.order .time{font-size:26px;color:var(--brass-lite);letter-spacing:.08em;font-variant-numeric:tabular-nums}.order .pay{font-size:12px;color:var(--mint)}.order .why{font-size:12.5px;line-height:1.8;color:var(--paper-dim)}.badge{display:inline-block;font-size:10.5px;letter-spacing:.18em;color:var(--red);border:1px solid rgba(200,68,58,.45);border-radius:999px;padding:2px 8px}.shelf{display:flex;flex-wrap:wrap;gap:10px}.shelf .enter{flex:1 1 140px;min-height:54px;border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;justify-content:center;gap:2px;padding:10px 14px;text-align:left;background:#16262e66}.shelf .enter b{font-size:14px;letter-spacing:.06em}.shelf .enter span{font-size:11px;color:var(--paper-faint)}.upgrades{display:grid;gap:10px}.upgrade{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#16262e66}.upgrade .up-txt{flex:1;display:grid;gap:2px}.upgrade .up-txt b{font-size:14px}.upgrade .up-txt span{font-size:11.5px;color:var(--paper-faint)}.upgrade .owned{color:var(--mint);font-size:12px}.bench{display:flex;flex-direction:column;align-items:center;gap:14px;flex:1}.bench-head{width:100%;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding-top:4px}.bench-head .who{display:grid;gap:2px}.bench-head .who b{font-size:17px;letter-spacing:.05em}.bench-head .who span{font-size:11.5px;color:var(--paper-dim)}.bench-head .count{text-align:right;font-size:12px;color:var(--paper-dim)}.bench-head .count b{color:var(--brass-lite);font-size:20px;font-variant-numeric:tabular-nums}.board-wrap{position:relative;width:min(100%,520px);aspect-ratio:1;display:grid;place-items:center;margin:2px 0}.board-wrap canvas{display:block;touch-action:manipulation}.bench-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%;max-width:420px}.bench-hint{font-size:12px;color:var(--paper-dim);min-height:1.4em;text-align:center}.solved{position:absolute;inset:0;display:grid;place-items:center;background:#070d119e;border-radius:24px;backdrop-filter:blur(2px);animation:fadein .35s ease both}.solved .inner{display:grid;gap:10px;justify-items:center;text-align:center;padding:20px}.solved .grade{font-size:54px;line-height:1;color:var(--mint);font-weight:800}.solved .grade.A{color:var(--brass-lite)}.solved .grade.B{color:var(--paper-dim)}.solved .grade.C{color:var(--red)}.solved p{margin:0;color:var(--paper-dim);font-size:13px}@keyframes fadein{0%{opacity:0}to{opacity:1}}.memory{display:grid;gap:16px;padding-bottom:10px}.memory .art{width:100%;aspect-ratio:3 / 2;border-radius:var(--radius);background:center / cover no-repeat var(--ink-2);border:1px solid var(--line)}.memory .cap{font-size:10.5px;color:var(--paper-faint);margin-top:-8px}.memory h2{margin:0;font-size:24px;letter-spacing:.05em}.memory .meta{display:flex;flex-wrap:wrap;gap:10px;font-size:12px;color:var(--paper-dim)}.memory .prose{font-size:16px;line-height:2;letter-spacing:.03em}.memory .result{display:flex;align-items:center;justify-content:space-between;gap:12px}.memory .grade-big{font-size:40px;color:var(--mint);font-weight:800}.collection{display:grid;gap:16px;padding-bottom:10px}.grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.tile{position:relative;aspect-ratio:1 / 1.18;border:1px solid var(--line);border-radius:12px;display:grid;align-content:end;gap:2px;padding:10px;text-align:left;background:#16262e73;overflow:hidden}.tile.locked{opacity:.42}.tile .no{position:absolute;top:8px;left:10px;font-size:11px;color:var(--paper-faint);font-variant-numeric:tabular-nums}.tile .rate{position:absolute;top:6px;right:8px;font-size:13px;color:var(--mint)}.tile .rate.A{color:var(--brass-lite)}.tile .rate.B{color:var(--paper-dim)}.tile .rate.C{color:var(--red)}.tile b{font-size:12.5px;font-weight:600;line-height:1.35}.tile span{font-size:10.5px;color:var(--paper-faint)}.tile.special{border-color:#c8443a80}.detail{border-top:1px solid var(--line);padding-top:14px;display:grid;gap:6px}.detail h3{margin:0;font-size:17px}.detail p{margin:0;font-size:14px;line-height:1.9;color:var(--paper-dim)}.ending{display:grid;gap:16px;padding-bottom:10px}.ending .art{width:100%;aspect-ratio:3 / 2;border-radius:var(--radius);background:center/cover no-repeat var(--ink-2);border:1px solid var(--line)}.ending h2{margin:0;font-size:26px;letter-spacing:.08em}.ending .lines{display:grid;gap:10px;font-size:15px;line-height:2;color:var(--paper-dim)}.choice{display:grid;gap:12px}.choice button{text-align:left;border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#16262e80;display:grid;gap:4px}.choice button b{font-size:15px}.choice button span{font-size:12px;color:var(--paper-faint);line-height:1.6}.toast{position:fixed;left:50%;bottom:calc(26px + var(--safe-b));transform:translate(-50%);background:#0a1116f0;border:1px solid var(--line);color:var(--paper);padding:9px 16px;border-radius:999px;font-size:13px;z-index:40;animation:fadein .2s ease both}.footnote{font-size:10.5px;color:var(--paper-faint);line-height:1.7;text-align:center;padding-top:8px}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
