:root{--paper:#f4eddd;--ink:#1f211d;--muted:#6f6a5e;--red:#9e382b;--ochre:#b47f32;--line:rgba(31,33,29,.2);--display: "Songti SC", "STSong", serif;--sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper)}body{margin:0;color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.75;background:radial-gradient(circle at 10% 0%,rgba(255,255,255,.7),transparent 30%),var(--paper)}a{color:inherit;text-decoration:none}button{font:inherit}img{display:block;max-width:100%;height:auto}.skip-link{position:absolute;top:-100px;left:1rem;background:var(--ink);color:var(--paper);padding:.5rem 1rem;z-index:5}.skip-link:focus{top:1rem}.masthead{min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:1rem;max-width:1440px;margin:auto;padding:1rem 4vw;border-bottom:1px solid var(--line)}.wordmark{font-family:var(--display);font-size:1.4rem;letter-spacing:.05em}.wordmark span{color:var(--red);margin-left:.25rem}.masthead nav{display:flex;gap:1rem;font-size:.8rem;color:var(--muted)}.masthead nav a:hover,.text-link:hover,.download-link:hover{color:var(--red)}.hero{max-width:1440px;margin:auto;min-height:calc(100vh - 64px);padding:6vw 8vw 4vw;display:grid;grid-template-columns:minmax(280px,.9fr) minmax(320px,1.1fr);gap:5vw;align-items:center}.eyebrow{font-size:.68rem;letter-spacing:.16em;font-weight:700;color:var(--red);margin:0 0 .8rem}.hero h1,.section-heading h2,.method h2,.skill-section h2{font-family:var(--display);font-weight:600;line-height:1.1;letter-spacing:-.04em;margin:0;text-wrap:balance}.hero h1{font-size:clamp(3.6rem,8vw,8.5rem)}.lede{max-width:32rem;margin:2rem 0;color:#4b4b43;font-size:1.05rem}.text-link,.download-link{color:var(--red);font-weight:700;border-bottom:1px solid currentColor;padding-bottom:.2rem}.hero-figure{margin:0;position:relative;align-self:stretch;display:flex;flex-direction:column;justify-content:end}.hero-figure img{max-height:78vh;width:auto;margin:auto;box-shadow:12px 18px #9e382b1f;outline:1px solid rgba(31,33,29,.12)}.hero-figure figcaption{font-size:.75rem;color:var(--muted);margin-top:.8rem;text-align:right}.atlas,.prompt-section{max-width:1440px;margin:auto;padding:10rem 8vw}.section-heading{max-width:50rem;margin-bottom:4rem}.section-heading h2,.method h2,.skill-section h2{font-size:clamp(2.5rem,5vw,5.4rem)}.section-heading>p:last-child{color:var(--muted)}.gallery{display:grid;grid-template-columns:repeat(12,1fr);gap:4vw 2vw;align-items:end}.building{grid-column:span 4}.building-2,.building-5,.building-8{margin-top:8vw}.building-4,.building-7,.building-10{grid-column:span 6}.building button{padding:0;border:0;background:transparent;width:100%;position:relative;cursor:zoom-in;box-shadow:0 6px 15px #2e251121;outline:1px solid rgba(31,33,29,.12);transition-property:transform,box-shadow;transition-duration:.18s}.building button:hover{transform:translateY(-5px);box-shadow:0 14px 24px #2e25112e}.building button:active{transform:scale(.98)}.building .number{position:absolute;top:.75rem;left:.75rem;background:var(--paper);padding:.1rem .4rem;font-size:.72rem;font-weight:700}.building div{padding-top:.8rem}.building p{margin:0;color:var(--muted);font-size:.8rem}.building h3{font-family:var(--display);font-size:1.55rem;margin:.12rem 0;font-weight:600}.method{background:#24251f;color:#eee6d7;padding:10rem 8vw;display:grid;grid-template-columns:1fr 1fr;gap:10vw}.method .eyebrow{color:#e2ad54}.method h2{color:#fff8eb}.method ol{list-style:none;padding:0;margin:0;border-top:1px solid rgba(255,255,255,.22)}.method li{display:grid;grid-template-columns:4rem 1fr;gap:1rem;padding:1.2rem 0;border-bottom:1px solid rgba(255,255,255,.22)}.method li>span{color:#e2ad54;font-size:.8rem}.method h3,.method p{margin:0}.method h3{font-family:var(--display);font-size:1.45rem}.method p{color:#ffffffab;font-size:.9rem}.code-panel{background:#272820;color:#eee6d7;padding:1.4rem;position:relative;box-shadow:8px 8px #b47f3273}.code-panel pre{white-space:pre-wrap;margin:2.7rem 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;line-height:1.8}.copy-button{position:absolute;right:1rem;top:1rem;background:#e5d5b7;color:#272820;border:0;padding:.45rem .7rem;cursor:pointer;font-size:.75rem}.copy-button:active{transform:scale(.96)}.skill-section{background:var(--red);color:#fff5df;padding:10rem 8vw}.skill-section .eyebrow{color:#f2cb84}.skill-section h2{max-width:70rem}.skill-section>p:not(.eyebrow){max-width:42rem;font-size:1.05rem}.skill-section code{background:#0000002b;padding:.15rem .35rem}.download-link{display:inline-block;margin-top:1rem;color:#fff5df}dialog{max-width:min(1100px,92vw);width:auto;max-height:92vh;padding:0;border:0;background:var(--paper);box-shadow:0 20px 60px #00000073;grid-template-columns:minmax(0,1fr) minmax(220px,.35fr)}.close-button{position:absolute;right:0;top:0;width:44px;height:44px;border:0;background:var(--ink);color:var(--paper);cursor:pointer;font-size:1.6rem}.close-button:active{transform:scale(.96)}dialog[open]{display:grid}dialog::backdrop{background:#12110dc2}dialog img{max-height:90vh;width:auto}dialog div{padding:4rem 2rem 2rem;align-self:end}dialog h2{font-family:var(--display);font-size:2.2rem;line-height:1.15;margin:.2rem 0 1rem}dialog p{color:var(--muted)}footer{display:flex;justify-content:space-between;gap:2rem;padding:2rem 4vw;border-top:1px solid var(--line);color:var(--muted);font-size:.72rem}footer p{margin:0}@media(max-width:720px){.masthead{padding-inline:5vw}.masthead nav{display:none}.hero{min-height:auto;grid-template-columns:1fr;padding:15vw 7vw 18vw}.hero-figure{margin-top:1rem}.hero-figure img{max-height:none;width:85%}.atlas,.prompt-section{padding:20vw 7vw}.gallery{grid-template-columns:1fr 1fr;gap:14vw 5vw}.building,.building-4,.building-7,.building-10{grid-column:span 1}.building-2,.building-5,.building-8{margin-top:12vw}.building h3{font-size:1.2rem}.building p:last-child{display:none}.method{padding:20vw 7vw;display:block}.method ol{margin-top:4rem}.skill-section{padding:20vw 7vw}dialog[open]{display:block;overflow:auto}dialog img{width:100%;max-height:none}dialog div{padding:1.5rem}footer{display:block;padding:1.5rem 7vw}footer p+p{margin-top:.5rem}}@media(prefers-reduced-motion:reduce){*,html{scroll-behavior:auto;transition-duration:0ms!important}}
