:root{color-scheme:light;--paper:#f7f5ee;--ink:#252d27;--muted:#626b61;--line:#dedfd4;--green:#244a3c;--accent:#b7c7a5;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;font-size:16px}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);line-height:1.7}a{color:inherit;text-underline-offset:5px}a:focus-visible{outline:3px solid var(--green);outline-offset:6px}.shell{width:min(100% - 64px,920px);margin:auto}.header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:35px 0;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:1.05rem;font-weight:650}.mark{display:grid;place-items:center;width:38px;height:38px;border-radius:8px;background:var(--green);color:var(--paper);font-family:Georgia,serif;font-size:1.4rem}.brand-note{font-weight:400;color:var(--muted);margin-left:8px}.header nav{display:flex;gap:28px;font-size:.9rem}.header nav a{text-decoration:none;color:var(--muted)}.header nav a[aria-current]{color:var(--green);text-decoration:underline}.intro{padding:76px 0 67px;position:relative}.eyebrow{font-size:.8rem;letter-spacing:.13em;color:var(--green);display:flex;align-items:center;gap:9px;margin:0 0 21px}.dot{width:7px;height:7px;background:var(--green);border-radius:50%}h1{font-size:clamp(2rem,5vw,3rem);line-height:1.4;letter-spacing:.025em;margin:0;font-weight:600}.intro-text{font-size:1.05rem;margin:19px 0 0;color:var(--muted)}.section-heading{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:16px;gap:16px}.section-heading h2{font-size:.95rem;font-weight:600;margin:0}.section-heading>span{font-size:.875rem;color:var(--muted)}.post-row{padding:30px 0 33px;border-bottom:1px solid var(--line)}.post-meta{display:flex;gap:16px;flex-wrap:wrap;color:var(--muted);font-size:.875rem}.post-meta time{font-variant-numeric:tabular-nums}.post-meta>span{color:var(--green)}.post-row h3{font-size:1.4rem;margin:11px 0 8px;font-weight:600}.post-row h3 a{display:flex;align-items:baseline;justify-content:space-between;gap:20px;text-decoration:none}.post-row h3 a span{font-size:1.2rem;font-weight:400;color:var(--green)}.post-row h3 a:hover{color:var(--green)}.post-row>p{margin:0;color:var(--muted)}.footer{margin-top:94px;border-top:1px solid var(--line);padding:22px 0 30px;display:flex;justify-content:space-between;gap:16px;color:var(--muted);font-size:.875rem}.article{max-width:720px;margin:48px auto 0;min-height:380px}.back{font-size:.9rem;text-decoration:none;color:var(--muted)}.article-header{margin:36px 0}.article-header h1{font-size:clamp(1.8rem,4vw,2.5rem);margin-top:12px}.lead{font-size:1.08rem;color:var(--muted);margin-top:16px}.prose{font-size:1.05rem;overflow-wrap:anywhere}.prose p{margin:0 0 1.5em}.prose h2{font-size:1.5rem;margin:2em 0 .8em}.prose h3{font-size:1.2rem;margin:1.8em 0 .7em}.prose a{color:var(--green)}.prose pre{padding:20px;overflow:auto;background:#eaece3;border-radius:6px;font-size:.9rem}.prose code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.prose :not(pre)>code{background:#eaece3;padding:2px 5px;border-radius:3px}.prose img{max-width:100%;height:auto;border-radius:6px}.prose blockquote{border-left:3px solid var(--accent);margin:24px 0;padding:0 20px;color:var(--muted)}.prose table{display:block;overflow:auto;border-collapse:collapse}.prose th,.prose td{border:1px solid var(--line);padding:8px 14px}.skip{position:absolute;left:16px;top:-100px;background:var(--paper);padding:8px;z-index:2}.skip:focus{top:8px}
@media(max-width:600px){.shell{width:calc(100% - 40px)}.header{padding:24px 0;gap:12px;flex-wrap:wrap}.header nav{gap:22px}.brand-note{display:none}.intro{padding:52px 0 45px}.post-row{padding:25px 0}.post-row h3{font-size:1.2rem}.footer{margin-top:64px;flex-wrap:wrap}.article{margin-top:30px}.article-header{margin:28px 0}}
@media(prefers-reduced-motion:no-preference){a{transition:color .15s}}
/* Treasure collection */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.vault-intro{padding:60px 0 38px}.vault-title{display:flex;justify-content:space-between;align-items:center;gap:20px}.vault-title h1{display:flex;align-items:center;gap:20px}.vault-seal{display:grid;place-items:center;width:36px;height:36px;border:1px solid #a47049;border-radius:4px;transform:rotate(-7deg);font-size:1.1rem;color:#93613e;font-family:serif}.vault-count{color:var(--muted);font-size:.9rem;white-space:nowrap}.treasure-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.treasure-card{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fbfaf5;min-width:0}.treasure-art{height:232px;display:flex;align-items:center;justify-content:center;position:relative;background:#e9ede2;border-bottom:1px solid var(--line);overflow:hidden}.treasure-game .treasure-art{background:#efeadf}.art-caption{position:absolute;bottom:14px;left:20px;font-size:.75rem;letter-spacing:.055em;color:#65705d}.art-notebook{width:185px;padding:19px 22px 23px;background:#faf9f1;border:1px solid #c9cebc;border-radius:3px 8px 8px 3px;border-left:9px solid #345341;box-shadow:7px 9px 0 #d7dfcc;transform:rotate(-5deg)}.notebook-kicker{font-size:.65rem;letter-spacing:.06em;color:var(--muted)}.art-notebook strong{display:block;font-size:1.65rem;line-height:1.5;margin:11px 0;color:var(--green);font-weight:600}.notebook-lines{display:block;width:60%;height:9px;border-top:1px solid #bec7b2;border-bottom:1px solid #bec7b2}.art-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;transform:rotate(5deg);margin-top:-15px}.art-tiles span{display:grid;place-items:center;width:64px;height:68px;border-radius:7px;border:1px solid #cfd5c5;background:#faf9f1;color:var(--green);font-size:1.9rem;box-shadow:0 4px 0 #dad9cb}.art-tiles .tile-back{background:var(--green);color:#e1e8d7;font:1.35rem Georgia,serif;border-color:var(--green)}.treasure-body{padding:23px 24px 25px}.treasure-meta{display:flex;gap:10px;align-items:center;font-size:.8rem;color:var(--green)}.demo-tag{padding:1px 8px;border:1px solid #d7cfbd;border-radius:20px;color:#816b50;font-size:.75rem}.treasure-body h2{font-size:1.4rem;line-height:1.4;margin:13px 0 10px;font-weight:600}.treasure-body>p{color:var(--muted);font-size:1rem;min-height:3.4em;margin:0 0 23px}.treasure-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.product-open{display:flex;align-items:center;gap:17px;padding:9px 15px;border-radius:6px;background:var(--green);color:#faf9f1;text-decoration:none;font-size:.9rem}.product-open:hover{background:#193c2f}.product-note{font-size:.875rem;color:var(--muted);text-decoration:none}.product-note:hover{color:var(--green);text-decoration:underline}.article-products{margin-top:45px;padding-top:24px;border-top:1px solid var(--line)}.article-products>h2{font-size:1.1rem;font-weight:600;margin:0 0 20px}.article-products .treasure-grid{grid-template-columns:1fr}.article-products .treasure-body>p{min-height:0}.vault-empty{grid-column:1/-1;color:var(--muted);padding:32px 0;border-top:1px solid var(--line)}
/* Client-side memory game */
.game-page{max-width:740px;margin:36px auto 0}.game-heading{margin:30px 0}.game-heading .eyebrow{margin-bottom:12px}.game-heading h1{font-size:2.4rem}.game-surface{background:#edeedf;border:1px solid #d3d9c6;border-radius:14px;padding:28px}.game-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px}.game-stats{display:flex;gap:30px}.game-stats>div{display:flex;flex-direction:column}.game-stats span{font-size:.875rem;color:var(--muted)}.game-stats strong{font-size:1.35rem;color:var(--green);font-weight:600;font-variant-numeric:tabular-nums}.game-reset{background:#f9f8f0;border:1px solid #bdc8b3;border-radius:6px;padding:9px 13px;color:var(--green);font:inherit;font-size:.875rem;cursor:pointer}.game-reset:hover{background:#fff}.game-status{font-size:.95rem;color:var(--green);margin:20px 0}.memory-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.memory-card{display:grid;place-items:center;aspect-ratio:1.15;background:var(--green);border:1px solid #244a3c;border-radius:8px;color:#d2dfc5;font:1.5rem Georgia,serif;cursor:pointer;box-shadow:0 3px 0 #c3cab4;touch-action:manipulation}.memory-card:hover{background:#315b48}.memory-card.revealed{background:#fffdf5;color:var(--green);font-size:2.25rem;border-color:#bdc8b3}.memory-card.matched{background:#dbe5cc;border-color:#b5c6a1;color:#365d39;box-shadow:none;cursor:default}.memory-card:focus-visible,.game-reset:focus-visible{outline:3px solid #9a623c;outline-offset:3px}.game-footnote{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font-size:.875rem;color:var(--muted);margin:20px 0}.game-footnote a{text-decoration:none}.game-footnote a:hover{text-decoration:underline}
@media(max-width:600px){.header nav{width:100%;gap:25px;margin-top:8px}.vault-intro{padding:40px 0 28px}.vault-title h1{gap:14px}.vault-seal{width:30px;height:30px;font-size:.9rem}.treasure-grid{grid-template-columns:1fr;gap:22px}.treasure-art{height:210px}.treasure-body{padding:21px}.treasure-body>p{min-height:0}.game-page{margin-top:26px}.game-heading h1{font-size:2rem}.game-surface{padding:18px}.game-toolbar{align-items:flex-start;gap:14px;flex-wrap:wrap}.game-stats{gap:25px}.game-stats strong{font-size:1.2rem}.memory-board{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.memory-card{aspect-ratio:1.05}.game-status{min-height:3.4em;margin:18px 0 12px}}
@media(prefers-reduced-motion:no-preference){.memory-card{transition:background .18s,color .18s}.treasure-card{transition:border-color .18s}.treasure-card:hover{border-color:#b1bfa6}}
.art-notebook{transform:rotate(-5deg) scale(.9);margin-top:-20px}
