:root{--paper:#f4f2ed;--paper-2:#ebe8e1;--surface:#faf9f6;--ink:#131314;--ink-strong:#000;--ink-2:#45464a;--ink-3:#6a6b6f;--line:#dcd8cf;--rule:#bfbab0;--line-strong:#8f8a80;--red:#b03c1c;--red-soft:#d4613f;--night:#111113;--night-2:#19191c;--night-line:#2e2e33;--night-text:#d9d7d1;--night-muted:#918f8a;--on-night:#f4f2ed;--photo-bg:#d8d3d1;--photo-filter:saturate(.82) contrast(1.02) sepia(.06);--frame-line:1px solid var(--rule);--frame-gap:var(--sp-3);--code-text:#ecebe6;--code-accent:#e08a6a;--serif:var(--font-serif), Georgia, serif;--sans:var(--font-sans), system-ui, sans-serif;--mono:var(--font-mono), ui-monospace, monospace;--label:var(--sans);--fs-xs:13px;--fs-sm:15px;--fs-md:17px;--fs-lg:clamp(18px, 1.4vw, 20px);--fs-xl:24px;--fs-2xl:clamp(26px, 2.4vw, 32px);--fs-3xl:clamp(36px, 4.2vw, 54px);--fs-display:clamp(40px, 6vw, 84px);--lh-tight:1.04;--lh-snug:1.18;--lh-small:1.45;--lh-body:1.6;--tr-display:-.022em;--tr-heading:-.012em;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--sp-8:64px;--sp-9:96px;--sp-10:128px;--sp-section:clamp(72px, 9vw, 128px);--card-pad:clamp(24px, 2.6vw, 32px);--gutter:clamp(20px, 4vw, 56px);--max:1240px;--nav-h:68px;--ease:cubic-bezier(.2, .7, .2, 1);--t-fast:.2s;--t-med:.35s}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:var(--nav-h)}body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:var(--fs-md);line-height:var(--lh-body);font-feature-settings:"ss01";-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}h1,h2,h3,h4{font-optical-sizing:auto;text-wrap:balance}p{text-wrap:pretty}a{color:inherit;text-decoration-line:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-underline-offset:.24em;transition:color var(--t-fast), text-decoration-color var(--t-fast)}a:hover{text-decoration-color:currentColor}::selection{background:var(--ink);color:var(--paper)}:focus-visible{outline:2px solid var(--red);outline-offset:3px}[role=tab]:focus-visible,[aria-pressed]:focus-visible{outline-offset:-2px}.wrap{max-width:var(--max);padding:0 var(--gutter);margin:0 auto}.onNight a{-webkit-text-decoration-color:var(--night-muted);text-decoration-color:var(--night-muted)}.onNight a:hover{text-decoration-color:currentColor}.onNight :focus-visible{outline-color:var(--red-soft)}.tag{font-family:var(--label);font-size:var(--fs-sm);color:var(--ink-3)}.sec{padding:var(--sp-section) 0;position:relative}.btn{justify-content:center;align-items:center;gap:var(--sp-3);min-height:48px;padding:var(--sp-3) var(--sp-5);border:1px solid var(--ink);background:var(--ink);color:var(--paper);font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:0;cursor:pointer;transition:background var(--t-fast) var(--ease), color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);font-weight:500;text-decoration:none;display:inline-flex}.btn:hover{background:var(--ink-strong);border-color:var(--ink-strong)}.btn:active{transform:translateY(1px)}.btnGhost{border-color:var(--line-strong);color:var(--ink);background:0 0}.btnGhost:hover{border-color:var(--ink);color:var(--ink);background:0 0}.btnSmall{min-height:40px;padding:var(--sp-2) var(--sp-4)}.link{padding-block:var(--sp-1);font-weight:500;display:inline-block}.link:active{color:var(--ink-2)}.card{padding:var(--card-pad);border:1px solid var(--line);background:var(--surface);transition:border-color var(--t-med) var(--ease)}a.card{text-decoration:none}a.card:hover{border-color:var(--line-strong)}a.card:active{border-color:var(--ink)}.reveal{opacity:0;animation:rise .9s var(--ease) forwards;transform:translateY(12px)}@keyframes rise{to{opacity:1;transform:none}}@keyframes fadein{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}html{scroll-behavior:auto}}
