:root{--paper:#f7f5f0;--card:#fffdf8;--ink:#1d1d1b;--ink-2:#55534e;--ink-3:#8a877f;--line:#e2ded4;--accent:#9a6a2f;--serif:"Songti SC", "STSong", "Noto Serif SC", "Source Han Serif SC", serif;--sans:-apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;overflow-x:clip;scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.75 var(--sans)}a{color:inherit;text-decoration-color:var(--line);text-underline-offset:3px}a:hover{text-decoration-color:var(--ink)}img{max-width:100%;height:auto;display:block}h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.3;margin:0}p{margin:.4em 0}.wrap{max-width:1040px;margin:0 auto;padding:0 24px}.muted{color:var(--ink-3)}.small{font-size:14px;color:var(--ink-2)}.nav{position:sticky;top:0;z-index:10;background:rgba(247,245,240,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.nav-in{display:flex;align-items:center;justify-content:space-between;height:56px;gap:16px}.brand{font-family:var(--serif);font-size:20px;font-weight:600;text-decoration:none;letter-spacing:.02em}.nav nav{min-width:0;display:flex;gap:20px;font-size:15px;white-space:nowrap;overflow-x:auto}.nav nav a{text-decoration:none;color:var(--ink-2)}.nav nav a:hover{color:var(--ink)}.hero{position:relative;padding:72px 0 0;overflow:hidden}.hero .wrap{position:relative;z-index:1}.eyebrow{font-size:14px;letter-spacing:.12em;color:var(--accent);margin:0 0 12px}.hero h1{font-size:clamp(32px,6vw,52px)}.lead{font-size:18px;color:var(--ink-2);max-width:36em;margin-top:16px}.actions{display:flex;flex-wrap:wrap;gap:12px;margin:28px 0 12px}.btn{display:inline-block;padding:12px 22px;border-radius:10px;background:var(--ink);color:var(--paper);text-decoration:none;font-weight:500}.btn:hover{background:#3a3935}.block{padding:56px 24px;border-top:1px solid var(--line)}.block>h2{font-size:28px;margin-bottom:24px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(280px,100%),1fr));gap:20px}.card{display:block;padding:24px;background:var(--card);border:1px solid var(--line);border-radius:14px;text-decoration:none;transition:border-color .15s}.card:hover{border-color:var(--ink-3)}.card h3{font-size:22px;margin:8px 0}.card p{color:var(--ink-2)}.card .more{display:inline-block;margin-top:12px;font-size:15px}.tag{font-size:12px;letter-spacing:.06em;color:var(--accent);border:1px solid;border-radius:99px;padding:1px 10px}.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:28px}.features h3{font-size:19px;margin-bottom:6px}.features p{color:var(--ink-2)}.apps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:14px}.apps li{display:flex;gap:14px;align-items:flex-start;padding:16px;background:var(--card);border:1px solid var(--line);border-radius:12px}.apps img{flex:none;width:40px;height:40px;object-fit:contain}.apps h3{font-family:var(--sans);font-size:16px}.apps p{font-size:14px;color:var(--ink-2);margin:2px 0 0}.steps{list-style:none;counter-reset:s;padding:0;margin:0;display:grid;gap:24px}.steps li{counter-increment:s;position:relative;padding-left:56px}.steps li::before{content:counter(s);position:absolute;left:0;top:0;width:38px;height:38px;border-radius:50%;border:1.5px solid var(--ink);display:grid;place-items:center;font-family:var(--serif);font-size:18px}.steps h3{font-size:19px;margin-bottom:4px}.steps p{color:var(--ink-2)}details{border-bottom:1px solid var(--line);padding:14px 0}details:first-of-type{border-top:1px solid var(--line)}summary{cursor:pointer;font-weight:500;list-style:none;position:relative;padding-right:28px}summary::-webkit-details-marker{display:none}summary::after{content:"+";position:absolute;right:4px;top:-2px;font-size:22px;color:var(--ink-3)}details[open] summary::after{content:"−"}details p{color:var(--ink-2);margin-top:10px}.post-list{list-style:none;padding:0}.post-list li{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--line)}.post-list time{color:var(--ink-3);font-size:14px;white-space:nowrap}.prose{padding-top:48px;padding-bottom:56px;max-width:760px}.prose h1{font-size:34px;margin-bottom:24px}.foot{border-top:1px solid var(--line);padding:36px 0 28px;font-size:14px;color:var(--ink-2)}.foot-in{display:flex;flex-wrap:wrap;justify-content:space-between;gap:24px;align-items:flex-end}.foot-qr{display:flex;gap:14px;align-items:center}.foot-qr img{border-radius:8px;border:1px solid var(--line)}.foot-qr b{color:var(--ink)}.foot-meta{text-align:right}.foot-meta a{color:var(--ink-2)}@media(max-width:640px){.wrap{padding:0 16px}.block{padding:44px 16px}.hero{padding-top:48px}.nav nav{gap:14px;font-size:14px}.foot-in{flex-direction:column;align-items:flex-start}.foot-meta{text-align:left}}.hero-banner{padding:72px 0 64px;min-height:calc(min(100vw,1600px) * .35)}.hero-banner::before{content:"";position:absolute;inset:0;background:url(/images/landscape-bg.webp)50% 100%/min(100%,1600px)no-repeat;opacity:.35;pointer-events:none}.hero-banner+.block{border-top:0}@media(max-width:640px){.hero-banner{padding:48px 0 40px}.hero-banner::before{background-size:auto 80%}}.post-head{margin-bottom:32px}.post-head .eyebrow a{text-decoration:none}.post-meta{color:var(--ink-3);font-size:14px}.prose{font-size:17px;line-height:1.9}.prose h2{font-size:24px;margin:48px 0 16px}.prose h3{font-size:19px;margin:32px 0 12px}.prose p,.prose ul,.prose ol{margin:0 0 1em}.prose li{margin:.3em 0}.prose a{text-decoration-color:var(--ink-3)}.prose blockquote{margin:0 0 1.5em;padding:12px 18px;border-left:3px solid var(--accent);background:var(--card);color:var(--ink-2);font-size:15px;border-radius:0 8px 8px 0}.prose blockquote p{margin:0}.prose figure{margin:28px 0}.prose figure img{margin:0 auto;max-height:640px;width:auto;border-radius:8px;border:1px solid var(--line);background:#fff}.prose figcaption{margin-top:10px;font-size:13px;line-height:1.7;color:var(--ink-3);text-align:center}.prose figcaption a{color:inherit}.prose table{width:100%;border-collapse:collapse;margin:0 0 1.5em;font-size:14px;line-height:1.6;display:block;overflow-x:auto}.prose th,.prose td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.prose th{white-space:nowrap;color:var(--ink-2);font-weight:600}.prose td:first-child{white-space:nowrap}.prose hr{border:0;border-top:1px solid var(--line);margin:40px 0 24px}.prose code{font-size:.9em;background:var(--card);padding:1px 5px;border-radius:4px}