:root{--paper:#fbf9f4;--paper-low:#f5f3ee;--paper-container:#f0eee9;--paper-high:#eae8e3;--paper-highest:#e4e2dd;--paper-white:#fff;--ink:#1b1c19;--ink-soft:#30312e;--ink-variant:#444748;--muted:#747878;--faint:#a3a6a5;--hairline:#e4e2dd;--hairline-strong:#c4c7c7;--accent:#9a4523;--accent-hover:#b85c38;--accent-soft:#ffdbcf;--accent-ink:#772b0a;--font-serif:"Newsreader", "Iowan Old Style", "Palatino Linotype", Palatino, "Songti SC", "Source Han Serif SC", "Noto Serif CJK SC", "Noto Serif SC", Georgia, serif;--font-display:Georgia, "Times New Roman", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;--font-sans:"Be Vietnam Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;--font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--text-display:clamp(2.375rem, 1.6rem + 2.6vw, 3.5rem);--text-h1:clamp(2rem, 1.55rem + 1.7vw, 2.75rem);--text-h2:clamp(1.5rem, 1.3rem + .7vw, 1.75rem);--text-h3:1.25rem;--text-body-lg:1.125rem;--text-body:.9375rem;--text-sm:.8125rem;--text-label:.75rem;--text-micro:.6875rem;--container:1160px;--gutter:4rem;--gutter-tablet:2.5rem;--gutter-mobile:1.25rem;--header-h:4.5rem;--space-xs:.375rem;--space-sm:.75rem;--space-md:1.5rem;--space-lg:2.5rem;--space-xl:4.5rem;--space-2xl:6.5rem;--radius-sm:2px;--radius:4px;--radius-lg:8px;--radius-xl:12px;--ease:cubic-bezier(.2, .7, .2, 1)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 1.5rem)}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;line-height:1.65}img,svg{max-width:100%;display:block}img{height:auto}a{color:inherit;text-decoration:none}button,input{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin:0}ul,ol{margin:0;padding:0;list-style:none}::selection{background:var(--paper-highest);color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.container{width:100%;max-width:var(--container);padding-inline:var(--gutter);margin-inline:auto}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{top:-100px;left:var(--gutter-mobile);z-index:100;background:var(--ink);color:var(--paper);border-radius:var(--radius);transition:top .2s var(--ease);padding:.65rem 1rem;position:fixed}.skip-link:focus{top:.75rem}.mono{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.serif{font-family:var(--font-serif)}.muted{color:var(--ink-variant)}.accent{color:var(--accent)}.rule{background:var(--hairline);border:0;height:1px;margin:0}.eyebrow{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-variant);align-items:center;gap:.45rem;font-weight:500;display:inline-flex}.eyebrow:before{content:"";background:var(--accent);border-radius:50%;flex:none;width:6px;height:6px}.eyebrow--plain:before{display:none}.site-header{z-index:50;background:color-mix(in srgb, var(--paper) 92%, transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--hairline);position:sticky;top:0}.header-inner{height:var(--header-h);justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.brand{transition:opacity .2s var(--ease);flex:none;align-items:center;gap:.7rem;display:inline-flex}.brand:hover{opacity:.82}.brand-mark{object-fit:contain;mix-blend-mode:multiply;width:auto;height:1.75rem}.brand-type{flex-direction:column;gap:.1rem;line-height:1;display:flex}.brand-name{font-family:var(--font-sans);letter-spacing:.01em;color:var(--ink);font-size:1.2rem;font-weight:700}.brand-tagline{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);white-space:nowrap;font-size:.5625rem}.site-nav{align-items:center;gap:clamp(1rem,2.2vw,1.75rem);display:flex}.nav-link{min-height:44px;font-size:var(--text-label);letter-spacing:.08em;color:var(--ink-variant);transition:color .18s var(--ease);align-items:center;font-weight:500;display:inline-flex;position:relative}.nav-link:after{content:"";background:var(--accent);transform-origin:0;height:1px;transition:transform .22s var(--ease);position:absolute;bottom:.45rem;left:0;right:0;transform:scaleX(0)}.nav-link:hover{color:var(--accent)}.nav-link:hover:after,.nav-link[aria-current=page]:after{transform:scaleX(1)}.nav-link[aria-current=page]{color:var(--ink)}.nav-contact{border:1px solid var(--ink);min-height:34px;font-size:var(--text-micro);letter-spacing:.08em;transition:color .18s var(--ease), border-color .18s var(--ease), background .18s var(--ease);border-radius:999px;justify-content:center;align-items:center;padding:.3rem .9rem;font-weight:500;display:inline-flex}.nav-contact:hover{color:var(--accent);border-color:var(--accent);background:var(--paper-low)}.nav-toggle{width:44px;height:44px;color:var(--ink);justify-content:center;align-items:center;margin-right:-.5rem;display:none}.nav-toggle span,.nav-toggle span:before,.nav-toggle span:after{width:20px;height:1.5px;transition:transform .22s var(--ease), opacity .18s var(--ease);background:currentColor;display:block}.nav-toggle span{position:relative}.nav-toggle span:before,.nav-toggle span:after{content:"";position:absolute;left:0}.nav-toggle span:before{top:-6px}.nav-toggle span:after{top:6px}.nav-toggle[aria-expanded=true] span{background:0 0}.nav-toggle[aria-expanded=true] span:before{transform:translateY(6px)rotate(45deg)}.nav-toggle[aria-expanded=true] span:after{transform:translateY(-6px)rotate(-45deg)}.mobile-nav{border-top:1px solid var(--hairline);background:var(--paper);display:none}.mobile-nav.is-open{display:block}.mobile-nav ul{padding:.5rem var(--gutter-mobile) 1.25rem}.mobile-nav a{border-bottom:1px solid var(--hairline);min-height:48px;font-size:var(--text-body);color:var(--ink-variant);justify-content:space-between;align-items:center;display:flex}.mobile-nav a:hover{color:var(--accent)}.mobile-nav a[aria-current=page]{color:var(--ink)}.mobile-nav .nav-contact{border-radius:var(--radius);border-color:var(--ink);justify-content:center;margin-top:.9rem}.btn{border-radius:var(--radius-lg);min-height:44px;font-size:var(--text-label);letter-spacing:.04em;transition:background .18s var(--ease), color .18s var(--ease), border-color .18s var(--ease);border:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:.62rem 1.25rem;font-weight:500;display:inline-flex}.btn svg{flex:none;width:15px;height:15px}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-dark{background:var(--ink);color:var(--paper)}.btn-dark:hover{background:var(--accent)}.btn-outline{border-color:var(--ink);color:var(--ink);background:0 0}.btn-outline:hover{background:var(--paper-container)}.btn-soft{background:var(--paper-container);color:var(--ink)}.btn-soft:hover{background:var(--paper-high)}.link-arrow{min-height:44px;font-size:var(--text-label);letter-spacing:.04em;color:var(--ink);transition:color .18s var(--ease), border-color .18s var(--ease);border-bottom:1px solid #0000;align-items:center;gap:.35rem;font-weight:500;display:inline-flex}.link-arrow:after{content:"→";transition:transform .18s var(--ease)}.link-arrow:hover{color:var(--accent);border-color:var(--accent)}.link-arrow:hover:after{transform:translate(3px)}.status{background:var(--paper-high);color:var(--ink-variant);font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.06em;white-space:nowrap;border-radius:999px;align-items:center;gap:.4rem;padding:.2rem .6rem;display:inline-flex}.status:before{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px}.status--building:before{background:var(--accent);animation:breathe 2.4s var(--ease) infinite}.status--archived:before{background:var(--faint)}.status--live:before{background:var(--accent)}@keyframes breathe{0%,to{opacity:1}50%{opacity:.35}}.section{padding-block:var(--space-xl)}.section+.section{border-top:1px solid var(--hairline)}.section-head{justify-content:space-between;align-items:baseline;gap:var(--space-sm);border-bottom:1px solid var(--hairline);margin-bottom:var(--space-md);padding-bottom:.75rem;display:flex}.section-head h2{font-family:var(--font-display);font-size:var(--text-h2);letter-spacing:-.01em;font-weight:600;line-height:1.2}.section-head .index{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.08em;color:var(--muted)}.section-head .aside-note{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);text-align:right}.hero{flex-direction:column;align-items:flex-start;max-width:820px;padding-block:clamp(3rem,6vw,5.5rem) clamp(2.5rem,5vw,4.5rem);display:flex}.hero-badge{margin-bottom:1.6rem}.hero h1{font-family:var(--font-display);font-size:var(--text-display);letter-spacing:-.02em;text-wrap:balance;font-weight:600;line-height:1.14}.hero h1 em{font-family:var(--font-serif);color:var(--accent);font-style:italic;font-weight:600}.hero-lead{max-width:34rem;font-size:var(--text-body-lg);color:var(--ink-variant);margin-top:1.5rem;line-height:1.72}.hero-actions{flex-wrap:wrap;align-items:center;gap:.9rem 1.75rem;margin-top:2rem;display:flex}.hero-meta{border-top:1px solid var(--hairline);flex-wrap:wrap;gap:.5rem 1.75rem;width:100%;max-width:40rem;margin-top:2.5rem;padding-top:1rem;display:flex}.hero-meta span{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.07em;color:var(--muted)}.hero-meta strong{color:var(--ink);font-weight:500}.work-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.work-card{background:var(--paper-low);border:1px solid var(--hairline);border-radius:var(--radius-lg);transition:background .2s var(--ease), border-color .2s var(--ease);flex-direction:column;justify-content:space-between;gap:1.5rem;padding:1.5rem;display:flex;position:relative}.work-card:hover{background:var(--paper-container);border-color:var(--hairline-strong)}.work-card-top{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.work-kicker{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.work-card h3{font-family:var(--font-display);font-size:var(--text-h3);letter-spacing:-.01em;transition:color .18s var(--ease);margin-top:.55rem;font-weight:600;line-height:1.3}.work-card:hover h3{color:var(--accent)}.work-card p{max-width:32rem;color:var(--ink-variant);font-size:var(--text-body);margin-top:.55rem;line-height:1.65}.work-card-foot{border-top:1px solid var(--hairline);justify-content:space-between;align-items:center;gap:.75rem;padding-top:.9rem;display:flex}.work-card-tech{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.05em;color:var(--muted)}.card-link{min-height:44px;font-size:var(--text-label);color:var(--ink);white-space:nowrap;transition:color .18s var(--ease);align-items:center;gap:.3rem;font-weight:500;display:inline-flex}.card-link:after{content:"↗";transition:transform .18s var(--ease);font-size:.85em}.work-card:hover .card-link,.card-link:hover{color:var(--accent)}.work-card:hover .card-link:after{transform:translate(2px,-2px)}.note-list{flex-direction:column;display:flex}.note-row{border-bottom:1px solid var(--hairline);border-radius:var(--radius);transition:background .18s var(--ease);align-items:baseline;gap:1.25rem;margin-inline:-.5rem;padding:1.15rem .5rem;display:flex}.note-row:first-child{border-top:1px solid var(--hairline)}.note-row:hover{background:var(--paper-low)}.note-date{width:5.25rem;font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.05em;color:var(--muted);flex:none}.note-body{flex:1;min-width:0}.note-body h3{font-family:var(--font-display);transition:color .18s var(--ease);justify-content:space-between;align-items:center;gap:1rem;font-size:1.125rem;font-weight:600;line-height:1.45;display:flex}.note-body h3:after{content:"→";font-family:var(--font-mono);color:var(--muted);transition:color .18s var(--ease), transform .18s var(--ease);flex:none;font-size:.85rem}.note-row:hover .note-body h3{color:var(--accent)}.note-row:hover .note-body h3:after{color:var(--accent);transform:translate(3px)}.note-body p{color:var(--ink-variant);font-size:var(--text-sm);margin-top:.3rem;line-height:1.6}.note-minutes{font-family:var(--font-mono);font-size:var(--text-micro);color:var(--muted);text-align:right;flex:none}.list-more{margin-top:1.1rem}.about-strip{gap:var(--space-lg);grid-template-columns:minmax(0,8fr) minmax(0,4fr);align-items:start;display:grid}.about-copy{font-size:var(--text-body-lg);color:var(--ink);flex-direction:column;gap:1.1rem;line-height:1.8;display:flex}.about-copy p+p{color:var(--ink-variant)}.about-aside{background:var(--paper-low);border:1px solid var(--hairline);border-radius:var(--radius-lg);padding:1.35rem}.about-aside h3{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:.9rem;font-weight:500}.about-aside li{font-size:var(--text-sm);color:var(--ink-variant);align-items:baseline;gap:.55rem;padding-block:.35rem;display:flex}.about-aside li:before{content:"";background:var(--accent);border-radius:50%;flex:none;width:5px;height:5px}.contact-band{background:var(--paper-low);border:1px solid var(--hairline);border-radius:var(--radius-lg);flex-direction:column;gap:1.25rem;padding:clamp(1.5rem,3.5vw,2.5rem);display:flex}.contact-band .eyebrow{color:var(--accent)}.contact-band h2{max-width:40rem;font-family:var(--font-display);font-size:var(--text-h2);letter-spacing:-.01em;font-weight:600;line-height:1.35}.contact-band p{max-width:40rem;color:var(--ink-variant);font-size:var(--text-sm)}.contact-actions{flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;margin-top:.25rem;display:flex}.copy-email{align-items:center;gap:.45rem;display:inline-flex}.copy-email svg{width:15px;height:15px}.copy-email[data-copied=true]{color:var(--accent)}.site-footer{margin-top:var(--space-xl);border-top:1px solid var(--hairline);background:var(--paper-low)}.footer-inner{justify-content:space-between;align-items:center;gap:1.5rem;padding-block:2.25rem;display:flex}.footer-brand{align-items:center;gap:.7rem;display:flex}.footer-brand img{mix-blend-mode:multiply;width:auto;height:1.6rem}.footer-brand .brand-name{font-size:1rem}.footer-brand .brand-tagline{font-size:.5rem}.footer-meta{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.05em;color:var(--muted);flex-wrap:wrap;align-items:center;gap:.45rem 1rem;display:flex}.footer-meta a{transition:color .18s var(--ease)}.footer-meta a:hover{color:var(--accent)}.footer-meta .dot{color:var(--hairline-strong)}.page-hero{padding-block:clamp(2.5rem, 5vw, 4rem) var(--space-lg)}.page-hero .eyebrow{margin-bottom:1.1rem}.page-hero-row{justify-content:space-between;align-items:flex-end;gap:1.5rem;display:flex}.page-hero h1{font-family:var(--font-display);font-size:var(--text-display);letter-spacing:-.02em;font-weight:600;line-height:1.15}.page-hero .lede{max-width:36rem;color:var(--ink-variant);font-size:var(--text-body-lg);margin-top:.65rem;line-height:1.7}.provenance{background:var(--paper-container);border-radius:var(--radius-lg);flex:none;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.provenance svg{width:20px;height:20px;color:var(--accent)}.provenance .label{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.06em;color:var(--muted);display:block}.provenance strong{font-size:var(--text-sm);color:var(--ink);font-weight:500;display:block}.gauge{border-top:1px solid var(--hairline-strong);justify-content:space-between;align-items:center;height:1px;margin-block:1.25rem .25rem;display:flex;position:relative}.gauge span{background:var(--paper);font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.06em;color:var(--muted);padding-inline:.5rem;position:relative;top:-.6rem}.filter-bar{scrollbar-width:none;align-items:center;gap:1.5rem;padding-block:.5rem 1.25rem;display:flex;overflow-x:auto}.filter-bar::-webkit-scrollbar{display:none}.filter-btn{min-height:44px;font-size:var(--text-label);color:var(--ink-variant);white-space:nowrap;transition:color .18s var(--ease), border-color .18s var(--ease);border-bottom:2px solid #0000;align-items:center;gap:.4rem;padding:0 .1rem;display:inline-flex}.filter-btn span{font-family:var(--font-mono);font-size:var(--text-micro);opacity:.55}.filter-btn:hover{color:var(--ink)}.filter-btn[aria-pressed=true]{color:var(--ink);border-color:var(--accent);font-weight:500}.works-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding-block:.5rem 2rem;display:grid}.works-grid .work-card[hidden]{display:none}.works-grid .work-card{min-height:13.5rem}.empty-state{text-align:center;color:var(--muted);font-size:var(--text-sm);padding:3rem 1rem}.breadcrumb{padding-block:1.5rem .25rem}.breadcrumb a{min-height:44px;font-size:var(--text-label);color:var(--ink-variant);transition:color .18s var(--ease);align-items:center;gap:.4rem;display:inline-flex}.breadcrumb a:hover{color:var(--accent)}.breadcrumb svg{width:15px;height:15px}.project-header{padding-block:.75rem var(--space-lg);border-bottom:1px solid var(--hairline)}.project-meta-line{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);flex-wrap:wrap;align-items:center;gap:.4rem .7rem;display:flex}.project-meta-line .accent{color:var(--accent);font-weight:500}.project-meta-line .sep{color:var(--hairline-strong)}.project-title-row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem;margin-top:.65rem;display:flex}.project-title-row h1{font-family:var(--font-display);font-size:var(--text-display);letter-spacing:-.02em;font-weight:600;line-height:1.1}.project-lede{max-width:42rem;font-size:var(--text-body-lg);color:var(--ink-variant);margin-top:.65rem;line-height:1.72}.project-actions{flex-wrap:wrap;gap:.65rem;margin-top:1.35rem;display:flex}.project-layout{gap:var(--space-lg);padding-block:var(--space-lg);grid-template-columns:minmax(0,8fr) minmax(0,4fr);align-items:start;display:grid}.project-main{gap:var(--space-xl);flex-direction:column;display:flex}.product-figure{background:var(--paper-container);border-radius:var(--radius-lg);padding:.75rem}.product-figure img{border-radius:var(--radius);background:var(--paper-high);width:100%}.product-figure figcaption{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.04em;color:var(--muted);justify-content:space-between;gap:.75rem;padding:.6rem .35rem .1rem;display:flex}.product-figure figcaption span:last-child{text-align:right;white-space:nowrap}.product-figure--phone{background:radial-gradient(circle at 50% 20%, var(--paper-high), var(--paper-container) 62%);flex-direction:column;align-items:center;display:flex}.product-figure--phone figcaption{width:100%}.product-figure--phone img{border:1px solid var(--hairline-strong);border-radius:1.75rem;width:auto;max-width:100%;max-height:44rem;box-shadow:0 20px 48px -30px #1b1c1973}.project-section h2{font-family:var(--font-display);font-size:var(--text-h2);letter-spacing:-.01em;align-items:baseline;gap:.7rem;margin-bottom:.9rem;font-weight:600;line-height:1.3;display:flex}.project-section h2 .num{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.08em;color:var(--accent)}.project-section p{font-size:var(--text-body-lg);color:var(--ink-variant);line-height:1.85}.project-section p+p{margin-top:.9rem}.feature-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin-top:1.1rem;display:grid}.feature{background:var(--paper-low);border-radius:var(--radius);padding:1.1rem 1.15rem}.feature .icon{background:var(--paper-high);width:30px;height:30px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;margin-bottom:.6rem;display:inline-flex}.feature .icon svg{width:16px;height:16px}.feature h3{font-size:var(--text-sm);color:var(--ink);margin-bottom:.3rem;font-weight:600}.feature p{font-size:var(--text-sm);line-height:1.65}.timeline{flex-direction:column;gap:.75rem;margin-top:1.1rem;display:flex}.timeline-item{background:var(--paper-low);border-radius:var(--radius);gap:1.25rem;padding:1rem 1.15rem;display:flex}.timeline-date{flex:none;width:5.5rem}.timeline-date strong{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.05em;color:var(--accent);display:block}.timeline-date span{font-family:var(--font-mono);font-size:var(--text-micro);color:var(--muted);margin-top:.15rem;display:block}.timeline-body h3{font-size:var(--text-sm);color:var(--ink);font-weight:600}.timeline-body p{font-size:var(--text-sm);color:var(--ink-variant);margin-top:.25rem;line-height:1.65}.prevnext{border-top:1px solid var(--hairline);grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;padding-top:1rem;display:grid}.prevnext a{background:var(--paper-low);border-radius:var(--radius);transition:background .18s var(--ease);flex-direction:column;gap:.25rem;padding:1rem 1.15rem;display:flex}.prevnext a:hover{background:var(--paper-container)}.prevnext .dir{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.06em;color:var(--muted)}.prevnext .name{font-family:var(--font-display);color:var(--ink);transition:color .18s var(--ease);font-size:1.05rem;font-weight:600}.prevnext a:hover .name{color:var(--accent)}.prevnext .desc{font-size:var(--text-micro);color:var(--muted)}.prevnext a:last-child{text-align:right;align-items:flex-end}.project-rail{top:calc(var(--header-h) + 1rem);flex-direction:column;gap:.75rem;display:flex;position:sticky}.rail-card{background:var(--paper-low);border-radius:var(--radius);padding:1.15rem}.rail-card-head{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.rail-card h3{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-variant);font-weight:500}.rail-card-head svg{width:17px;height:17px;color:var(--muted)}.tag-cloud{flex-wrap:wrap;gap:.35rem;display:flex}.tag{background:var(--paper-container);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.03em;color:var(--ink);padding:.22rem .55rem;display:inline-block}.meta-list{flex-direction:column;gap:.5rem;display:flex}.meta-list>div{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.meta-list dt{font-size:var(--text-micro);color:var(--muted)}.meta-list dd{font-family:var(--font-mono);font-size:var(--text-micro);color:var(--ink);text-align:right}.meta-list dd.accent{color:var(--accent)}.link-list{flex-direction:column;display:flex}.link-list a{border-bottom:1px solid var(--hairline);min-height:38px;font-size:var(--text-sm);color:var(--ink);transition:color .18s var(--ease);justify-content:space-between;align-items:center;gap:.75rem;padding-block:.3rem;display:flex}.link-list a:last-child{border-bottom:0}.link-list a:hover{color:var(--accent)}.link-list svg{width:14px;height:14px;color:var(--muted);transition:color .18s var(--ease), transform .18s var(--ease);flex:none}.link-list a:hover svg{color:var(--accent);transform:translate(1px,-1px)}.rail-note{background:var(--paper-high);border-radius:var(--radius);padding:1.15rem}.rail-note h3{font-size:var(--text-sm);margin-bottom:.35rem;font-weight:600}.rail-note p{font-size:var(--text-micro);color:var(--ink-variant);line-height:1.6}.rail-note a{font-size:var(--text-micro);color:var(--accent);align-items:center;gap:.35rem;margin-top:.6rem;display:inline-flex}.rail-note a:hover{text-underline-offset:3px;text-decoration:underline}.download-list{flex-direction:column;gap:.4rem;display:flex}.download-list a{border:1px solid var(--hairline);border-radius:var(--radius-sm);background:var(--paper);font-size:var(--text-micro);color:var(--ink);transition:border-color .18s var(--ease), color .18s var(--ease);justify-content:space-between;align-items:center;gap:.75rem;padding:.55rem .7rem;display:flex}.download-list a:hover{border-color:var(--accent);color:var(--accent)}.download-list span{color:var(--muted);font-family:var(--font-mono);font-size:.625rem}.reading-progress{top:var(--header-h);z-index:40;background:var(--accent);width:0;height:2px;transition:width .12s linear;position:fixed;left:0}.note-wrap{max-width:780px;padding-inline:var(--gutter);margin-inline:auto}.note-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding-block:1.5rem .5rem;display:flex}.note-category{background:var(--paper-container);font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.05em;color:var(--ink-variant);border-radius:999px;align-items:center;gap:.45rem;padding:.25rem .65rem;display:inline-flex}.note-category:before{content:"";background:var(--accent);border-radius:50%;width:5px;height:5px}.article-header{padding-block:.75rem var(--space-lg);border-bottom:1px solid var(--hairline)}.article-header h1{max-width:44rem;font-family:var(--font-display);letter-spacing:-.015em;text-wrap:balance;font-size:clamp(2rem,1.55rem + 1.6vw,2.75rem);font-weight:600;line-height:1.25}.article-meta{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.04em;color:var(--muted);flex-wrap:wrap;align-items:center;gap:.4rem .9rem;margin-top:1rem;display:flex}.article-meta .sep{color:var(--hairline-strong)}.article-meta .tags{flex-wrap:wrap;gap:.55rem;display:flex}.article-meta .tags a,.article-meta .tags span{color:var(--muted);transition:color .18s var(--ease)}.article-meta .tags a:hover{color:var(--accent)}.prose{max-width:680px;padding-block:var(--space-lg);color:var(--ink-variant);counter-reset:section;margin-inline:auto}.prose>*+*{margin-top:1rem}.prose>p:first-child,.prose .lead{font-family:var(--font-serif);color:var(--ink);text-wrap:balance;font-size:1.3125rem;font-style:italic;line-height:1.7}.prose p{font-size:var(--text-body-lg);text-align:justify;text-justify:inter-ideograph;line-height:1.9}.prose h2{font-family:var(--font-display);font-size:var(--text-h2);letter-spacing:-.01em;color:var(--ink);counter-increment:section;align-items:baseline;gap:.65rem;margin-top:2.5rem;font-weight:600;line-height:1.35;display:flex}.prose h2:before{content:counter(section, decimal-leading-zero);font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.08em;color:var(--accent);flex:none;font-weight:400}.prose h2 .num{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.08em;color:var(--accent)}.prose h3{font-size:var(--text-body-lg);color:var(--ink);margin-top:1.75rem;font-weight:600}.prose blockquote{background:var(--paper-low);border-radius:var(--radius);margin-block:2rem;padding:1.1rem 1.25rem 1.1rem 1.5rem;position:relative}.prose blockquote:before{content:"";background:var(--accent);border-radius:3px 0 0 3px;width:3px;position:absolute;top:0;bottom:0;left:0}.prose blockquote p{font-family:var(--font-serif);color:var(--ink);font-size:1.15rem;font-style:italic;line-height:1.7}.prose blockquote cite{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-top:.5rem;font-style:normal;display:block}.prose ul,.prose ol{font-size:var(--text-body-lg);padding-left:1.25rem;line-height:1.85}.prose ul{list-style:outside}.prose ol{list-style:decimal}.prose li+li{margin-top:.35rem}.prose a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:4px;transition:color .18s var(--ease)}.prose a:hover{color:var(--accent)}.prose code{background:var(--paper-container);border-radius:var(--radius-sm);font-family:var(--font-mono);color:var(--ink);padding:.1em .35em;font-size:.86em}.prose pre{border-radius:var(--radius-lg);color:#e4e4e7;font-family:var(--font-mono);background:#18181b;margin-block:2rem;padding:1.15rem 1.25rem;font-size:.8125rem;line-height:1.7;position:relative;overflow-x:auto}.prose pre code{color:inherit;font-size:inherit;white-space:pre;background:0 0;border-radius:0;padding:0}.code-copy--floating{z-index:1;color:#d4d4d8;font-family:var(--font-mono);letter-spacing:.03em;opacity:0;transition:opacity .18s var(--ease), background .18s var(--ease);background:#27272a;border-radius:3px;padding:.2rem .5rem;font-size:.625rem;position:absolute;top:.5rem;right:.5rem}.prose pre:hover .code-copy--floating,.code-copy--floating:focus-visible,.code-copy--floating[data-copied=true]{opacity:1}.code-copy--floating:hover{color:#fff;background:#3f3f46}.prose pre::-webkit-scrollbar{height:6px}.prose pre::-webkit-scrollbar-thumb{background:#3f3f46;border-radius:3px}.code-block{border-radius:var(--radius-lg);color:#e4e4e7;font-family:var(--font-mono);background:#18181b;margin-block:2rem;font-size:.8125rem;line-height:1.7;overflow:hidden}.code-head{color:#a1a1aa;letter-spacing:.04em;background:#202024;justify-content:space-between;align-items:center;gap:.75rem;padding:.55rem .85rem;font-size:.6875rem;display:flex}.code-head .dots{gap:.3rem;display:inline-flex}.code-head .dots i{background:#3f3f46;border-radius:50%;width:8px;height:8px}.code-head .dots i:first-child{background:#ef4444cc}.code-head .dots i:nth-child(2){background:#f59e0bcc}.code-head .dots i:nth-child(3){background:#10b981cc}.code-head .file{color:#d4d4d8;margin-left:.35rem}.code-copy{color:#d4d4d8;transition:color .18s var(--ease), background .18s var(--ease);background:#27272a;border-radius:3px;align-items:center;gap:.3rem;padding:.2rem .5rem;font-size:.6875rem;display:inline-flex}.code-copy:hover{color:#fff;background:#3f3f46}.code-block pre{margin:0;padding:1rem 1.1rem;overflow-x:auto}.code-block code{color:inherit;font-size:inherit;background:0 0;padding:0}.code-block .c{color:#71717a;font-style:italic}.code-block .k{color:#f472b6}.code-block .s{color:#a3e635}.code-block .f{color:#fbbf24}.code-block .n{color:#38bdf8}.prose .callout{background:var(--paper-container);border-radius:var(--radius);font-size:var(--text-body);padding:1.1rem 1.25rem;line-height:1.7}.prose .callout strong{color:var(--ink)}.article-actions{border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:center;gap:1rem;padding-block:.75rem;display:flex}.text-action{min-height:44px;font-size:var(--text-sm);color:var(--ink-variant);transition:color .18s var(--ease);align-items:center;gap:.4rem;display:inline-flex}.text-action:hover{color:var(--accent)}.text-action svg{width:16px;height:16px}.author-card{margin-block:var(--space-lg) 1rem;background:var(--paper-container);border-radius:var(--radius-lg);align-items:flex-start;gap:1rem;padding:1.25rem;display:flex}.author-avatar{background:var(--ink);width:3.25rem;height:3.25rem;color:var(--paper);font-family:var(--font-serif);letter-spacing:.04em;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:1rem;display:flex}.author-card h3{font-family:var(--font-serif);align-items:center;gap:.5rem;font-size:1.05rem;font-weight:600;display:flex}.author-card .role{background:var(--paper-high);border-radius:var(--radius-sm);font-family:var(--font-mono);color:var(--muted);padding:.1rem .45rem;font-size:.625rem;font-weight:400}.author-card p{font-size:var(--text-sm);color:var(--ink-variant);margin-top:.35rem;line-height:1.6}.subscribe{background:var(--paper-high);border-radius:var(--radius-lg);margin-bottom:var(--space-lg);padding:1.5rem}.subscribe h3{font-family:var(--font-display);font-size:1.15rem;font-weight:600}.subscribe p{font-size:var(--text-sm);color:var(--ink-variant);margin-top:.35rem}.subscribe form{gap:.6rem;margin-top:1rem;display:flex}.subscribe input{border:1px solid var(--hairline-strong);border-radius:var(--radius);background:var(--paper);min-width:0;min-height:44px;font-size:var(--text-sm);flex:1;padding:.6rem .85rem}.subscribe input:focus{border-color:var(--ink);outline:none}.subscribe .fineprint{font-family:var(--font-mono);letter-spacing:.04em;color:var(--muted);justify-content:space-between;align-items:center;gap:.75rem;margin-top:.65rem;font-size:.625rem;display:flex}.next-note{padding-block:.5rem var(--space-lg)}.next-note .dir{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.next-note a{font-family:var(--font-display);color:var(--ink);border-bottom:1px solid var(--hairline);transition:color .18s var(--ease);justify-content:space-between;align-items:center;gap:1rem;margin-top:.5rem;padding-block:.5rem;font-size:1.15rem;font-weight:600;line-height:1.5;display:flex}.next-note a:hover{color:var(--accent)}.next-note a span:last-child{font-family:var(--font-mono);color:var(--muted);flex:none;font-size:.9rem}.note-missing{text-align:center;padding:4rem 0}.note-missing h1{font-family:var(--font-display);font-size:var(--text-h1);font-weight:600}.note-missing p{color:var(--ink-variant);margin-top:.75rem}.archive{padding-block:var(--space-lg) var(--space-xl)}.archive-year+.archive-year{margin-top:var(--space-xl)}.year-head{border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:baseline;gap:1rem;padding-bottom:.6rem;display:flex}.year-head h2{font-family:var(--font-display);font-size:var(--text-h2);font-weight:600}.year-head .count{font-family:var(--font-mono);font-size:var(--text-micro);color:var(--muted);margin-left:.45rem}.year-head .en{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.archive-item{border-bottom:1px solid var(--hairline);border-radius:var(--radius);transition:background .18s var(--ease);align-items:flex-start;gap:1.5rem;margin-inline:-.5rem;padding:1.35rem .5rem;display:flex}.archive-item:hover{background:var(--paper-low)}.archive-date{width:4rem;font-family:var(--font-mono);font-size:var(--text-micro);color:var(--muted);font-variant-numeric:tabular-nums;flex:none;padding-top:.2rem}.archive-body{flex:1;min-width:0;max-width:46rem}.archive-body h3{font-family:var(--font-display);transition:color .18s var(--ease);font-size:1.125rem;font-weight:600;line-height:1.45}.archive-item:hover .archive-body h3{color:var(--accent)}.archive-body p{font-size:var(--text-sm);color:var(--ink-variant);margin-top:.3rem;line-height:1.6}.archive-time{font-family:var(--font-mono);font-size:var(--text-micro);color:var(--muted);flex:none;padding-top:.2rem}.archive-foot{margin-top:var(--space-lg);border-top:1px solid var(--hairline);font-size:var(--text-sm);color:var(--ink-variant);justify-content:space-between;align-items:center;gap:1rem;padding-top:1.25rem;display:flex}.archive-foot a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:4px}.archive-foot a:hover{color:var(--accent)}.archive-foot .mono{flex:none}.about-hero{padding-block:clamp(2.5rem, 5vw, 4rem) var(--space-lg);border-bottom:1px solid var(--hairline)}.about-hero-row{justify-content:space-between;align-items:flex-end;gap:2rem;display:flex}.about-hero h1{font-family:var(--font-display);font-size:var(--text-display);letter-spacing:-.02em;font-weight:600;line-height:1.12}.about-hero .sub{font-family:var(--font-display);font-size:var(--text-h3);color:var(--accent);margin-top:.65rem;font-weight:600}.about-hero .intro{max-width:28rem;color:var(--ink-variant);font-size:var(--text-body);line-height:1.7}.about-layout{gap:var(--space-lg);padding-block:var(--space-lg) var(--space-xl);grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:start;display:grid}.about-main{gap:var(--space-lg);flex-direction:column;display:flex}.about-section{flex-direction:column;gap:.75rem;display:flex}.about-section-head{border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:baseline;gap:1rem;padding-bottom:.5rem;display:flex}.about-section-head .num{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.08em;color:var(--accent)}.about-section-head h2{font-family:var(--font-display);font-size:var(--text-h2);font-weight:600;line-height:1.3}.about-section p{font-size:var(--text-body);color:var(--ink-variant);line-height:1.8}.about-section p strong{color:var(--ink);font-weight:500}.about-quote{border-left:2px solid var(--accent);font-family:var(--font-serif);color:var(--ink);padding-left:1rem;font-size:1.125rem;font-style:italic;line-height:1.65}.stack-groups{flex-direction:column;gap:1rem;margin-top:.25rem;display:flex}.stack-row{align-items:baseline;gap:1rem;display:flex}.stack-row .group-label{width:6.5rem;font-size:var(--text-micro);color:var(--ink);flex:none;font-weight:600}.stack-row .tags{flex-wrap:wrap;gap:.35rem;display:flex}.about-rail{top:calc(var(--header-h) + 1rem);flex-direction:column;gap:.75rem;display:flex;position:sticky}.stamp-card{background:var(--paper-low);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:.75rem;padding:1.1rem;display:flex}.stamp-card img{mix-blend-mode:multiply;width:3rem;height:auto}.stamp-card .stamp-name{font-family:var(--font-display);font-size:1.05rem;font-weight:700}.stamp-card .stamp-role{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.625rem}.stamp-since{border:1px solid var(--hairline);border-radius:var(--radius-sm);font-family:var(--font-mono);color:var(--muted);white-space:nowrap;padding:.15rem .45rem;font-size:.625rem}.contact-card{background:var(--paper-low);border-radius:var(--radius);padding:1.15rem}.contact-card h3{border-bottom:1px solid var(--hairline);font-family:var(--font-display);justify-content:space-between;align-items:center;padding-bottom:.5rem;font-size:1.05rem;font-weight:600;display:flex}.contact-card h3 svg{width:15px;height:15px;color:var(--accent)}.contact-card>p{font-size:var(--text-sm);color:var(--ink-variant);margin-block:.6rem;line-height:1.6}.contact-row{border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:center;gap:.75rem;padding-block:.65rem;display:flex}.contact-row:last-child{border-bottom:0}.contact-row .k{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.625rem;display:block}.contact-row .v{font-size:var(--text-sm);color:var(--ink);display:block}.contact-row .hint{color:var(--accent);font-size:.625rem;display:block}.contact-row .icon-btn{width:44px;height:44px;color:var(--ink);transition:color .18s var(--ease);flex:none;justify-content:center;align-items:center;display:inline-flex}.contact-row .icon-btn:hover{color:var(--accent)}.contact-row .icon-btn svg{width:18px;height:18px}.contact-row a.v:hover{color:var(--accent)}.colophon{background:var(--paper-container);border-radius:var(--radius);padding:1.15rem}.colophon h3{border-bottom:1px solid var(--hairline);font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);justify-content:space-between;align-items:center;padding-bottom:.5rem;font-weight:500;display:flex}.colophon h3 svg{width:16px;height:16px;color:var(--muted)}.colophon ul{font-size:var(--text-micro);color:var(--ink-variant);flex-direction:column;gap:.45rem;margin-top:.65rem;line-height:1.6;display:flex}.colophon li{gap:.45rem;display:flex}.colophon li:before{content:"▪";color:var(--accent);flex:none}.colophon strong{color:var(--ink);font-weight:600}.now-card{margin-top:var(--space-lg);background:var(--paper-low);border:1px solid var(--hairline);border-radius:var(--radius-lg);padding:1.25rem 1.5rem}.now-head{border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:center;gap:1rem;padding-bottom:.65rem;display:flex}.now-head h2{font-family:var(--font-display);align-items:center;gap:.5rem;font-size:1.1rem;font-weight:600;display:flex}.live-dot{flex:none;width:8px;height:8px;display:inline-flex;position:relative}.live-dot:before,.live-dot:after{content:"";background:var(--accent);border-radius:50%;position:absolute;inset:0}.live-dot:before{animation:ping 2s var(--ease) infinite}.now-head .date{font-family:var(--font-mono);font-size:var(--text-micro);color:var(--muted)}.now-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding-top:1rem;display:grid}.now-item{font-size:var(--text-sm);color:var(--ink-variant);gap:.75rem;line-height:1.65;display:flex}.now-item .n{font-family:var(--font-serif);color:var(--accent);flex:none;font-size:1rem}.now-item strong{color:var(--ink);font-weight:500}.now-item a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}@keyframes ping{0%{opacity:.55;transform:scale(1)}80%,to{opacity:0;transform:scale(2.2)}}.reveal{opacity:1;transform:none}.js .reveal{opacity:0;transition:opacity .55s var(--ease), transform .55s var(--ease);transform:translateY(14px)}.js .reveal.is-visible{opacity:1;transform:none}@media (width<=1024px){.container,.note-wrap{padding-inline:var(--gutter-tablet)}.project-layout{grid-template-columns:minmax(0,1fr)}.project-rail{grid-template-columns:repeat(2,minmax(0,1fr));display:grid;position:static}.about-layout{grid-template-columns:minmax(0,1fr)}.about-rail{grid-template-columns:repeat(2,minmax(0,1fr));display:grid;position:static}.stamp-card{grid-column:1/-1}}@media (width<=820px){.site-nav{display:none}.nav-toggle{display:inline-flex}.page-hero-row,.about-hero-row{flex-direction:column;align-items:flex-start}.provenance{align-self:stretch}.about-strip,.works-grid,.work-grid,.now-grid{grid-template-columns:minmax(0,1fr)}.footer-inner{flex-direction:column;align-items:flex-start;gap:1rem}.section-head{flex-wrap:wrap}.section-head .aside-note{text-align:left}}@media (width<=640px){:root{--header-h:4rem}.container,.note-wrap{padding-inline:var(--gutter-mobile)}.brand-tagline{display:none}.brand-mark{height:1.5rem}.hero{padding-top:2.75rem}.hero-actions{gap:.6rem 1.25rem}.note-row,.archive-item{flex-wrap:wrap;gap:.35rem .75rem}.note-date{width:4rem}.note-body h3{font-size:1.05rem}.note-minutes{display:none}.archive-date{width:3.25rem}.archive-time{display:none}.feature-grid{grid-template-columns:minmax(0,1fr)}.timeline-item{flex-direction:column;gap:.35rem}.timeline-date{width:auto}.prevnext{grid-template-columns:minmax(0,1fr)}.prevnext a:last-child{text-align:left;align-items:flex-start}.project-rail,.about-rail{grid-template-columns:minmax(0,1fr)}.stamp-card{grid-column:auto}.product-figure--phone img{max-height:34rem}.subscribe form{flex-direction:column}.article-meta{gap:.35rem .6rem}.author-card{flex-direction:column}.now-head{flex-direction:column;align-items:flex-start;gap:.35rem}.archive-foot{flex-direction:column;align-items:flex-start}.stack-row{flex-direction:column;gap:.35rem}.stack-row .group-label{width:auto}}@media (hover:none){.code-copy--floating{opacity:1}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.reveal,.js .reveal{opacity:1;transform:none}}@media print{.site-header,.site-footer,.reading-progress,.article-actions,.subscribe,.next-note{display:none!important}body{background:#fff}.prose{max-width:none}}
