@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/hanken-grotesk-latin-400-normal.5e6bae5f.woff2) format("woff2"),url(/_next/static/media/hanken-grotesk-latin-400-normal.df487ec0.woff) format("woff")}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/hanken-grotesk-latin-600-normal.3182e117.woff2) format("woff2"),url(/_next/static/media/hanken-grotesk-latin-600-normal.2c6b265b.woff) format("woff")}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/hanken-grotesk-latin-700-normal.cf28c809.woff2) format("woff2"),url(/_next/static/media/hanken-grotesk-latin-700-normal.c7fe3894.woff) format("woff")}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:800;src:url(/_next/static/media/hanken-grotesk-latin-800-normal.bbe85291.woff2) format("woff2"),url(/_next/static/media/hanken-grotesk-latin-800-normal.9c015345.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/jetbrains-mono-latin-400-normal.db9d659a.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-latin-400-normal.b0c7be19.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/jetbrains-mono-latin-700-normal.9545a3d1.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-latin-700-normal.c9484cde.woff) format("woff")}:root{--font-sans:"Hanken Grotesk";--font-mono:"JetBrains Mono";--text:#2e2d2a;--text-muted:#73716b;--text-soft:#3e3d39;--border:#e7e6e2;--surface:#f7f6f3;--page:#ffffff;--cover-cream:#fbf6e6;--cover-mint:#e9f4ec;--highlight:#f6e1ea;--green-bg:#e2f0e6;--green-fg:#245c38;--blue-bg:#e1ecf6;--blue-fg:#1f4a73;--peach-bg:#f8e5da;--peach-fg:#7e3a17;--grey-bg:#eeedea;--grey-fg:#4a4945;--pink-bg:#f6e1ea;--pink-fg:#7a2850;--ink:#161616;--blush:#f2a39a;--pink-marker:#f4c4d8;--pink-sticker:#f8d3e3;--pink-ink:#e284ab;--bento:#f4f3f1;--tile-blue:#cfe1f7;--tile-pink:#f7cfe0;--tile-green:#cde9cf;--tile-yellow:#f8e3a3;--tile-lilac:#e3daf7;--tile-coral:#f6c4b8;--ease-out:cubic-bezier(0.2,0.7,0.2,1);--spring:cubic-bezier(0.3,1.6,0.5,1);--gutter:clamp(20px,5vw,48px);--content:820px;--splash:0s}:root:has(.splash){--splash:2.4s}:root.entered{--splash:0s}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:72px}body{margin:0;background:var(--page);color:var(--text);font-family:var(--font-sans),system-ui,sans-serif;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}img,svg{display:block;max-width:100%}a{color:inherit;-webkit-text-decoration-color:var(--border);text-decoration-color:var(--border);text-underline-offset:3px;text-decoration-thickness:1.5px;transition:-webkit-text-decoration-color .2s;transition:text-decoration-color .2s;transition:text-decoration-color .2s,-webkit-text-decoration-color .2s}a:hover{-webkit-text-decoration-color:currentColor;text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--blue-fg);outline-offset:2px;border-radius:4px}h1,h2,h3{margin:0;line-height:1.2}hr{border:0;border-top:1px solid var(--border);margin:24px 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.nowrap,.sr-only{white-space:nowrap}.splash{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:var(--page);cursor:pointer;animation:splash-out .6s var(--ease-out) calc(var(--splash) - .6s) forwards}html.entered .splash{display:none}@keyframes splash-out{to{opacity:0;visibility:hidden}}.splash-inner{display:grid;justify-items:center;grid-gap:18px;gap:18px;animation:splash-lift .6s var(--ease-out) calc(var(--splash) - .6s) forwards}@keyframes splash-lift{to{transform:translateY(-24px) scale(.96)}}.splash-logo{width:112px;height:112px;padding:6px;background:#fff;border:3px solid var(--ink);border-radius:26px;box-shadow:5px 5px 0 var(--ink);transform:rotate(-4deg);animation:logo-pop .7s var(--spring) .1s both}.splash-logo img{width:100%;height:100%;border-radius:18px;object-fit:cover}@keyframes logo-pop{0%{opacity:0;transform:rotate(-14deg) scale(.5)}}.splash-text{margin:0;font-size:clamp(22px,4vw,28px);font-weight:800;letter-spacing:-.02em;animation:rise .6s var(--ease-out) .45s both}.splash-bar{width:140px;height:3px;border-radius:3px;background:var(--border);overflow:hidden;position:relative}.splash-bar:after{content:"";position:absolute;inset:0;background:var(--pink-ink);transform-origin:left;animation:fill-bar 1.3s ease-in-out .5s both}@keyframes fill-bar{0%{transform:scaleX(0)}}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:rgb(255 255 255/.78);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgb(231 230 226/.6)}.topbar-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px var(--gutter)}.crumb{margin:0;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crumb-muted{color:var(--text-muted);text-decoration:none}.crumb-sep{color:var(--text-muted);margin:0 8px}.topbar-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.btn-light{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border-radius:6px;border:1px solid var(--border);background:#fff;color:var(--text);font-size:14px;font-weight:600;text-decoration:none;transition:transform .2s var(--ease-out),background .2s}.btn-light:hover{background:var(--surface);transform:translateY(-1px)}.btn-dark{flex-shrink:0;display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border-radius:6px;background:var(--text);color:#fff;font-size:14px;font-weight:600;text-decoration:none;transition:transform .2s var(--ease-out),background .2s}.btn-dark:hover{background:#000;transform:translateY(-1px)}@media (max-width:420px){.crumb-sep,.crumb-sep+span{display:none}}.link-button{padding:0;border:0;background:none;font:inherit;color:inherit;text-decoration:underline;-webkit-text-decoration-color:currentColor;text-decoration-color:currentColor;text-underline-offset:3px;text-decoration-thickness:1.5px;cursor:pointer}.email-menu{position:relative}.email-pop{position:absolute;z-index:30;top:calc(100% + 6px);left:0;display:grid;min-width:220px;padding:6px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 34px -18px rgb(30 30 25/.45);animation:rise .2s var(--ease-out) both}.email-pop a,.email-pop button{display:block;padding:8px 10px;border:0;border-radius:8px;background:none;font:inherit;font-size:14px;color:var(--text);text-align:left;text-decoration:none;cursor:pointer}.email-pop a:focus-visible,.email-pop a:hover,.email-pop button:focus-visible,.email-pop button:hover{background:var(--surface)}@media (max-width:560px){.email-pop{left:auto;right:0}.link-button{padding:8px 0;margin:-8px 0}}.banner{height:clamp(230px,29vw,400px);overflow:hidden;background:#2a2724}.banner img{width:100%;height:100%;object-fit:cover;object-position:50% 25%;animation:zoom-out 1.6s var(--ease-out) var(--splash) both}@keyframes zoom-out{0%{transform:scale(1.08)}}.page{max-width:calc(var(--content) + 2 * var(--gutter));margin:0 auto;padding:0 var(--gutter) 96px}@keyframes rise{0%{opacity:0;transform:translateY(16px)}}.avatar{width:120px;height:120px;border-radius:50%;object-fit:cover;margin-top:-62px;position:relative;border:4px solid #fff;box-shadow:0 0 0 1px var(--border);background:#fff;animation:rise .8s var(--ease-out) calc(var(--splash) + .2s) both}.avatar:hover{animation:wave .7s ease-in-out}@keyframes wave{0%,to{transform:rotate(0)}20%{transform:rotate(-8deg)}40%{transform:rotate(7deg)}60%{transform:rotate(-5deg)}80%{transform:rotate(3deg)}}.case-head h1,.intro h1{font-size:clamp(36px,5vw,44px);font-weight:800;letter-spacing:-.02em;line-height:1.1;margin:22px 0 14px}.intro h1{animation:rise .8s var(--ease-out) calc(var(--splash) + .3s) both}.hl{position:relative;display:inline-block;isolation:isolate}.hl-stroke{position:absolute;z-index:-1;pointer-events:none}.hl-stroke svg{width:100%;height:100%;overflow:visible}.hl-bar .hl-text{background-image:linear-gradient(var(--highlight),var(--highlight));background-repeat:no-repeat;background-position:0 92%;background-size:100% 38%;padding:0 4px;margin:0 -4px;animation:sweep .9s var(--ease-out) calc(var(--splash) + .5s) both}@keyframes sweep{0%{background-size:0 38%}}.hl-marker .hl-stroke{inset:38% -10px -4% -8px;transform:rotate(-1.2deg);animation:wipe .8s var(--ease-out) calc(var(--splash) + .5s) both}.hl-marker path{fill:var(--pink-marker);mix-blend-mode:multiply}@keyframes wipe{0%{-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0)}to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}}.hl-squiggle .hl-stroke{left:0;right:0;bottom:-.2em;height:.32em}.hl-circle path,.hl-squiggle path{fill:none;stroke:var(--pink-ink);stroke-width:3.5;stroke-linecap:round;stroke-dasharray:1;animation:draw 1s var(--ease-out) calc(var(--splash) + .5s) both}@keyframes draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.hl-circle{padding:0 .12em}.hl-circle .hl-stroke{inset:-24% -.35em -30% -.4em}.hl-circle path{stroke-width:3;animation-duration:1.2s}.hl-sticker{padding:0 .22em}.hl-sticker:before{content:"";position:absolute;z-index:-1;inset:6% 0 0;background:var(--pink-sticker);border-radius:8px;transform:rotate(-1.5deg);transform-origin:left center;animation:stick .7s var(--spring) calc(var(--splash) + .5s) both}@keyframes stick{0%{transform:rotate(-1.5deg) scaleX(0)}}.props{position:relative;z-index:3;margin:0 0 18px;animation:rise .8s var(--ease-out) calc(var(--splash) + .42s) both}.props>div{display:grid;grid-template-columns:160px minmax(0,1fr);grid-gap:8px;gap:8px;align-items:start;padding:5px 0}.props dt{color:var(--text-muted)}.props dd,.props dt{font-size:15px;line-height:26px}.props dd{margin:0;min-width:0}.props .tag{white-space:normal}.contact{display:flex;flex-wrap:wrap;gap:6px}.contact a{-webkit-text-decoration-color:currentColor;text-decoration-color:currentColor}.callout{margin:28px 0 0;background:var(--bento);border-radius:16px;padding:18px 22px;font-size:17px;line-height:1.6;animation:rise .8s var(--ease-out) calc(var(--splash) + .55s) both}.section{margin-top:56px}.section h2{font-size:26px;font-weight:700;letter-spacing:-.01em}.subtitle{margin:4px 0 12px;color:var(--text-muted);font-size:16px}.section h2+:not(.subtitle){margin-top:16px}.tags{display:flex;flex-wrap:wrap;gap:6px}.tag{display:inline-block;font-size:14px;line-height:22px;padding:1px 8px;white-space:nowrap}.label,.tag{border-radius:4px}.label{flex:none;min-width:92px;text-align:center;font-size:12px;font-weight:600;line-height:20px;padding:1px 6px}.label-added,.tag-green{background:var(--green-bg);color:var(--green-fg)}.label-improved,.label-progress,.tag-blue{background:var(--blue-bg);color:var(--blue-fg)}.label-fixed,.tag-peach{background:var(--peach-bg);color:var(--peach-fg)}.label-removed,.label-soon,.tag-grey{background:var(--grey-bg);color:var(--grey-fg)}.label-known,.tag-pink{background:var(--pink-bg);color:var(--pink-fg)}.todo-text{color:var(--peach-fg)}.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:2px 10px;border-radius:999px;white-space:nowrap}.pill-current{background:var(--green-bg);color:var(--green-fg)}.pill-beta{background:var(--blue-bg);color:var(--blue-fg)}.pill-past{background:var(--grey-bg);color:var(--grey-fg)}.live-dot{width:7px;height:7px;border-radius:50%;background:#2e8a4f;animation:live 1.8s ease-out infinite}@keyframes live{0%{box-shadow:0 0 0 0 rgb(46 138 79/.55)}to{box-shadow:0 0 0 7px rgb(46 138 79/0)}}@keyframes pulse{0%{transform:scale(1);opacity:.8}to{transform:scale(2.8);opacity:0}}.preview-dock{position:fixed;right:16px;bottom:16px;z-index:50;display:grid;grid-gap:12px;gap:12px;max-width:min(360px,calc(100vw - 32px));padding:14px 16px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 40px -16px rgb(46 45 42/.35)}.preview-dock:empty{display:none}.preview-dock:before{content:"Design options";font-size:13px;font-weight:800}.variant-switch{display:grid;grid-gap:6px;gap:6px;font-size:12px;color:var(--text-muted)}.variant-switch div{display:flex;flex-wrap:wrap;gap:6px}.variant-switch button{font:inherit;font-size:13px;color:var(--text);background:#fff;border:1px solid var(--border);border-radius:999px;padding:3px 11px;cursor:pointer}.variant-switch button:hover{border-color:var(--pink-ink)}.variant-switch button[aria-pressed=true]{background:var(--pink-bg);color:var(--pink-fg);border-color:var(--pink-ink);font-weight:700}.release-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-bottom:10px}.release-head h3{font-size:19px;font-weight:700;letter-spacing:-.01em}.ver{font-size:13px;font-weight:700;padding:1px 8px;border-radius:6px;background:var(--text);color:#fff;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stage-beta .ver{background:#fff;color:var(--blue-fg);box-shadow:inset 0 0 0 1.5px var(--blue-fg)}.notes{list-style:none;margin:0;padding:0}.notes li{display:flex;gap:10px;align-items:baseline;padding:4px 0;font-size:16px;line-height:1.5}.struck{-webkit-text-decoration:line-through #9a9892;text-decoration:line-through #9a9892;color:var(--text-muted)}.tl{list-style:none;margin:12px 0 0;padding:0 0 0 28px;position:relative;display:grid;grid-gap:12px;gap:12px}.tl:before{content:"";position:absolute;left:6px;top:10px;bottom:10px;width:2px;border-radius:2px;background:var(--border)}.tl-item{position:relative}.tl-dot{position:absolute;left:-28px;top:20px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:inset 0 0 0 2px #c9c7c1}.stage-current .tl-dot{box-shadow:inset 0 0 0 4px #2e8a4f}.stage-beta .tl-dot{box-shadow:inset 0 0 0 2px var(--blue-fg)}.tl-card{border:1px solid var(--border);border-radius:12px;padding:14px 18px;background:#fff;transition:transform .25s var(--ease-out),box-shadow .25s}.tl-item:hover .tl-card{transform:translateX(4px);box-shadow:0 10px 24px -16px rgb(30 30 25/.3)}.stage-beta .tl-card{border-style:dashed;background:#fbfbfa}.term{background:#1d1c1a;border-radius:12px;overflow:hidden;box-shadow:0 12px 32px -16px rgb(0 0 0/.45)}.term-bar{display:flex;align-items:center;gap:6px;padding:10px 14px;background:#2a2926}.term-bar span{width:10px;height:10px;border-radius:50%;background:#4a4945}.term-bar em{margin-left:8px;font-style:normal;font-size:12px;color:#a9a7a0}.term-bar em,.term-body{font-family:var(--font-mono),monospace}.term-body{margin:0;padding:16px 18px 20px;font-size:13px;line-height:1.7;color:#e7e6e2;white-space:pre-wrap;overflow-wrap:anywhere;min-height:420px}.t-prompt{color:#9fd4ae}.t-indent{padding-left:4ch}.t-commit{color:#f2c879}.t-title{color:#fff;font-weight:700}.t-added{color:#9fd4ae}.t-improved,.t-progress{color:#9cc3e8}.t-fixed{color:#f2b48f}.t-removed{color:#a9a7a0;text-decoration:line-through}.t-known{color:#f0a7c6}.t-soon{color:#a9a7a0}.t-line{display:block;min-height:1.7em;animation:type-in .25s steps(8) both}@keyframes type-in{0%{-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0)}to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}}.cursor{display:inline-block;width:8px;height:15px;vertical-align:text-bottom;background:#e7e6e2;animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.track{--fill:0%;position:relative;display:flex;justify-content:space-between;margin:8px 12px 24px}.track:after,.track:before{content:"";position:absolute;left:0;top:11px;height:3px;border-radius:3px}.track:before{right:0;background:var(--border)}.track:after{width:var(--fill);background:var(--green-fg);transition:width .5s var(--ease-out)}.step{position:relative;z-index:1;display:grid;justify-items:center;grid-gap:6px;gap:6px;background:none;border:0;padding:0;font:inherit;cursor:pointer;color:var(--text-muted);margin:0 -12px}.step-dot{width:25px;height:25px;border-radius:50%;background:#fff;border:3px solid var(--border);transition:border-color .3s,background .3s,transform .3s var(--spring)}.step.done .step-dot{border-color:var(--green-fg)}.step.beta .step-dot{border-style:dashed}.step[aria-pressed=true]{color:var(--text);font-weight:700}.step[aria-pressed=true] .step-dot{background:var(--green-fg);transform:scale(1.15)}.step-label{font-size:14px}.step-panel,.step-panel .notes li{animation:rise .45s var(--ease-out) both}.step-panel .notes li:nth-child(2){animation-delay:.06s}.step-panel .notes li:nth-child(3){animation-delay:.12s}.step-panel .notes li:nth-child(4){animation-delay:.18s}.ed-row,.editorial{display:grid}.ed-row{grid-template-columns:150px 1fr;grid-gap:24px;gap:24px;padding:24px 0;border-top:1px solid var(--border)}.ed-row:first-child{border-top:0;padding-top:0}.ed-num{font-size:84px;font-weight:800;line-height:.9;letter-spacing:-.04em;color:var(--text)}.ed-row.stage-beta .ed-num{color:transparent;-webkit-text-stroke:1.5px var(--text)}.ed-row.stage-past .ed-num{color:#c9c7c1}.updates{display:grid;grid-gap:10px;gap:10px}.update{border:1px solid var(--border);border-radius:12px;background:#fff}.update.stage-beta{border-style:dashed;border-color:#c9c7c1}.update summary{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:14px 18px;cursor:pointer;list-style:none}.update summary::-webkit-details-marker{display:none}.update-title{font-weight:700}.update .pill-beta,.update .pill-current,.update .pill-past{margin-left:auto}.chev{width:8px;height:8px;border-right:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);transform:rotate(45deg);transition:transform .25s var(--ease-out)}.update[open] .chev{transform:rotate(225deg)}.update .notes{padding:0 18px 16px}.update[open] .notes{animation:rise .4s var(--ease-out) both}.tabbar{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--border);margin:12px 0 16px}.tabs{display:flex;gap:4px}.tab{font:inherit;font-size:14px;color:var(--text-muted);background:none;border:0;padding:7px 10px;margin-bottom:-1px;border-bottom:2px solid transparent;border-radius:6px 6px 0 0;cursor:pointer;transition:color .2s,background-color .2s}.tab:hover{background:#f4f3f0;color:var(--text)}.tab[aria-selected=true]{color:var(--text);font-weight:600;border-bottom-color:var(--text)}.view-in{animation:rise .45s var(--ease-out) both}.gallery{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));grid-gap:16px;gap:16px}.card{display:block;height:100%;color:inherit;text-decoration:none;border:1px solid var(--border);border-radius:16px;background:#fff;transition:transform .3s var(--ease-out),box-shadow .3s,border-color .3s}.card,.cover{overflow:hidden}.cover{position:relative;height:170px;border-bottom:1px solid var(--border);display:grid;place-items:center}.tile-blue{background:var(--tile-blue)}.tile-pink{background:var(--tile-pink)}.tile-green{background:var(--tile-green)}.tile-yellow{background:var(--tile-yellow)}.tile-lilac{background:var(--tile-lilac)}.tile-coral{background:var(--tile-coral)}.frame{position:absolute;overflow:hidden;background:#fff;box-shadow:0 12px 28px -14px rgb(30 30 25/.4);transition:transform .5s var(--spring)}.frame img{display:block;width:100%;object-fit:cover;object-position:top left}.frame-browser{left:12%;right:-8%;top:24px;bottom:-16px;border-radius:10px 0 0 0;transform:rotate(-2deg)}.frame-bar{display:flex;align-items:center;gap:4px;height:14px;padding:0 8px;background:var(--bento);border-bottom:1px solid var(--border)}.frame-bar span{width:5px;height:5px;border-radius:50%;background:#d6d4ce}.frame-browser img{height:calc(100% - 14px)}.frame-phone{--bezel:5px;--radius:24px;left:50%;top:16px;bottom:-48px;width:104px;margin-left:-52px;padding:var(--bezel);overflow:visible;background:#fff;border-radius:var(--radius);box-shadow:0 0 0 1px var(--border),0 12px 28px -14px rgb(30 30 25/.4);transform:rotate(-3deg)}.frame-phone img{height:100%;border-radius:calc(var(--radius) - var(--bezel));box-shadow:0 0 0 1px var(--border)}.frame-phone:before{content:"";position:absolute;z-index:1;top:calc(var(--bezel) + 5px);left:50%;width:26%;height:7px;transform:translateX(-50%);border-radius:999px;background:var(--text-soft)}.frame-phone:after{content:"";position:absolute;top:22%;right:-3px;width:2px;height:14%;border-radius:0 2px 2px 0;background:var(--border)}.cover-name{padding:0 16px;text-align:center;font-size:26px;font-weight:800;letter-spacing:-.02em;line-height:1.1;color:var(--ink);transform:rotate(-3deg);transition:transform .5s var(--spring)}.card:focus-visible .frame-browser,.card:hover .frame-browser{transform:translateY(-6px)}.card:focus-visible .frame-phone,.card:hover .frame-phone{transform:translateY(-8px)}.card:focus-visible .cover-name,.card:hover .cover-name{transform:scale(1.06)}.cover-hero{height:clamp(220px,34vw,340px);margin-bottom:4px;border:1px solid var(--border);border-radius:20px;animation:rise .8s var(--ease-out) both}.cover-hero .frame-browser{left:8%;right:-4%;top:40px;bottom:-24px;border-radius:14px 0 0 0}.cover-hero .frame-bar{height:22px;gap:6px;padding:0 12px}.cover-hero .frame-bar span{width:8px;height:8px}.cover-hero .frame-browser img{height:calc(100% - 22px)}.cover-hero .frame-phone{--bezel:8px;--radius:38px;top:30px;bottom:-80px;width:180px;margin-left:-90px}.cover-hero .frame-phone:before{top:calc(var(--bezel) + 9px);height:12px}.cover-hero .frame-phone:after{right:-4px;width:3px}.cover-hero .cover-name{font-size:clamp(36px,6vw,56px)}.card-body{padding:12px 14px 14px}.card-title{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px;font-size:16px}.open-hint{font-size:13px;color:var(--text-muted);opacity:0;transform:translateX(-6px);transition:opacity .25s,transform .25s}.card-body p{margin:0 0 10px;font-size:14px;line-height:1.45;color:var(--text-soft)}.card:focus-visible,.card:hover{transform:translateY(-5px);box-shadow:0 18px 30px -18px rgb(30 30 25/.35);border-color:#d6d4ce}.card:focus-visible .open-hint,.card:hover .open-hint{opacity:1;transform:none}.card:focus-visible{border-radius:16px}.jobs{list-style:none;margin:12px 0 0;padding:0;grid-gap:10px;gap:10px}.job,.jobs{display:grid}.job{grid-template-columns:64px minmax(0,1fr) auto;align-items:center;grid-gap:16px;gap:16px;padding:14px 18px 14px 14px;background:#fff;border:1px solid var(--border);border-radius:16px;transition:transform .25s var(--ease-out),box-shadow .25s,border-color .25s}.job:hover{transform:translateY(-2px);border-color:#d6d4ce;box-shadow:0 12px 26px -18px rgb(30 30 25/.4)}.job-current{border-color:#cfe3d5;box-shadow:0 10px 26px -20px rgb(36 92 56/.45)}.job-tile{display:grid;place-items:center;width:64px;height:64px;border-radius:14px;font-size:15px;font-weight:800;letter-spacing:-.02em;color:var(--ink);transform:rotate(-3deg);transition:transform .4s var(--spring)}.job-tile img{width:100%;height:100%;border-radius:inherit;object-fit:cover}.job-tile.has-logo{background:#fff;box-shadow:0 0 0 1px var(--border)}.job-tile .job-logo{width:82%;height:82%;object-fit:contain}.job-tile.has-photo{width:64px;height:64px;overflow:hidden;box-shadow:0 6px 14px -8px rgb(30 30 25/.4)}.job-has-photo{position:relative;grid-template-columns:64px minmax(0,1fr) auto}.job-photo{position:absolute;z-index:5;left:6px;bottom:calc(100% - 10px);width:260px;margin:0;border-radius:14px;overflow:hidden;box-shadow:0 22px 40px -18px rgb(30 30 25/.55);opacity:0;pointer-events:none;transform:translateY(8px) rotate(-2deg) scale(.96);transform-origin:bottom left;transition:opacity .2s,transform .35s var(--spring)}.job-photo img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.job-has-photo:focus-visible .job-photo,.job-has-photo:hover .job-photo{opacity:1;transform:translateY(0) rotate(-2deg) scale(1)}.job:hover .job-tile{transform:rotate(0deg) scale(1.06)}.job-main h3{font-size:17px;font-weight:700;letter-spacing:-.01em}.job-main p{margin:2px 0 0;font-size:15px;color:var(--text-soft)}.job-main .job-blurb{margin-top:4px;font-size:14px;line-height:1.45;color:var(--text-muted)}.job-tag{display:inline-block;margin-left:8px;padding:0 8px;border-radius:4px;background:var(--grey-bg);color:var(--grey-fg);font-size:13px;line-height:20px;vertical-align:1px}.job-when{font-size:14px;color:var(--text-muted);white-space:nowrap;text-align:right}@media (max-width:560px){.job{grid-template-columns:44px minmax(0,1fr);gap:4px 14px}.job-tile{width:44px;height:44px;grid-row:span 2}.job-when{grid-column:2;text-align:left}}.job-tile-sm{width:36px;height:36px;border-radius:11px;font-size:13px}.gantt{margin-top:12px;padding:18px 18px 8px;border:1px solid var(--border);border-radius:16px;--label:230px}.gantt-axis{position:relative;height:20px;margin-left:var(--label);border-bottom:1px solid var(--border);font-size:12px;color:var(--text-muted)}.gantt-axis span{position:absolute;top:0;white-space:nowrap}.gantt-axis .gantt-now{transform:translateX(-100%);font-weight:700;color:var(--green-fg)}.gantt-rows{list-style:none;margin:0;padding:0}.gantt-row{display:grid;grid-template-columns:var(--label) minmax(0,1fr);align-items:center;padding:10px 0;border-bottom:1px dashed var(--border)}.gantt-row:last-child{border-bottom:0}.gantt-label{display:grid;padding-right:16px;font-size:14px}.gantt-label span{font-size:13px;color:var(--text-muted)}.gantt-label .pill{padding:0 8px}.gantt-track{position:relative;height:22px;background:repeating-linear-gradient(90deg,transparent 0 calc(100% / 6 - 1px),var(--border) calc(100% / 6 - 1px) calc(100% / 6));background-size:100% 1px;background-repeat:no-repeat;background-position:0 50%}.gantt-bar{position:absolute;top:0;height:22px;border-radius:999px;box-shadow:inset 0 0 0 1px rgb(30 30 25/.06);transform-origin:left;animation:grow-bar .9s var(--ease-out) both}.gantt-bar-open{border-radius:999px 4px 4px 999px}.gantt-bar-fuzzy{-webkit-mask-image:linear-gradient(90deg,transparent,#000 45%);mask-image:linear-gradient(90deg,transparent,#000 45%)}.gantt-unknown{font-size:13px}@keyframes grow-bar{0%{transform:scaleX(0)}}.spotlight{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);grid-gap:12px;gap:12px;margin-top:12px}.spot-lead{display:grid;align-content:end;grid-gap:6px;gap:6px;min-height:260px;padding:22px;border-radius:20px}.spot-kicker{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft)}.spot-lead h3{font-size:28px;font-weight:800;letter-spacing:-.02em;line-height:1.1}.spot-lead p{margin:0 0 6px;font-size:17px;color:var(--text-soft)}.spot-lead .pill{justify-self:start;background:#fff}.spot-rest{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.spot-card{display:grid;align-content:start;grid-gap:4px;gap:4px;padding:14px;border:1px solid var(--border);border-radius:16px;background:#fff;transition:transform .25s var(--ease-out),box-shadow .25s}.spot-card:hover{transform:translateY(-3px);box-shadow:0 12px 26px -18px rgb(30 30 25/.4)}.spot-card .job-tile{margin-bottom:6px}.spot-card h3{font-size:15px;font-weight:700;line-height:1.3}.spot-card p{margin:0;font-size:13px;color:var(--text-soft)}.spot-when{margin-top:4px;font-size:12px;color:var(--text-muted)}.notes-grid{list-style:none;margin:16px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:18px;gap:18px}.note{display:grid;align-content:start;grid-gap:6px;gap:6px;min-height:160px;padding:16px;border-radius:6px 6px 18px 6px;box-shadow:0 10px 20px -14px rgb(30 30 25/.45);transform:rotate(var(--tilt));transition:transform .4s var(--spring),box-shadow .3s}.note:hover{transform:rotate(0deg) translateY(-4px) scale(1.03);box-shadow:0 18px 30px -18px rgb(30 30 25/.5)}.note-when{font-size:12px;font-weight:600;color:var(--text-soft)}.note-when .pill{background:#fff}.note h3{font-size:18px;font-weight:800;letter-spacing:-.01em;line-height:1.2}.note p{margin:0;font-size:14px;color:var(--text-soft)}.note .job-tag{margin:4px 0 0;background:rgb(255 255 255/.6)}.ed-jobs{list-style:none;margin:12px 0 0;padding:0}.ed-job{display:grid;grid-template-columns:190px minmax(0,1fr);grid-gap:20px;gap:20px;align-items:baseline;padding:18px 0;border-top:1px solid var(--border)}.ed-job:first-child{border-top:0}.ed-job-when{font-size:15px;font-weight:600;color:var(--text-muted)}.ed-job-current .ed-job-when{color:var(--green-fg)}.ed-job h3{font-size:24px;font-weight:800;letter-spacing:-.02em;line-height:1.2}.ed-job p{margin:4px 0 0;font-size:16px;color:var(--text-soft)}@media (max-width:640px){.gantt{--label:0px;padding:14px 12px 4px}.gantt-axis{margin-left:0}.gantt-row{gap:6px}.gantt-row,.spot-rest,.spotlight{grid-template-columns:1fr}.spot-lead{min-height:180px}.ed-job{grid-template-columns:1fr;gap:2px}}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.table{width:100%;border-collapse:collapse;font-size:15px}.table th{text-align:left;font-weight:400;color:var(--text-muted);padding:6px 12px;border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:10px 12px;border-top:1px solid var(--border);vertical-align:top;transition:background .2s}.table tbody tr:first-child td{border-top:0}.table td:first-child,.table th:first-child{padding-left:4px}.table tbody tr:hover td{background:var(--surface)}.table td:first-child{font-weight:600}.row-link{text-decoration:none}.todos{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px}.todo{display:flex;align-items:flex-start;gap:12px;padding:11px 16px;border:1px solid var(--border);border-radius:14px;background:#fff;box-shadow:0 1px 2px rgb(30 30 25/.04);font-size:16px;line-height:26px;cursor:pointer;transition:transform .2s var(--ease-out),border-color .2s,box-shadow .2s}.todo:hover{border-color:#d6d4ce;transform:translateY(-1px);box-shadow:0 8px 20px -14px rgb(30 30 25/.35)}.todo input{position:absolute;opacity:0;width:1px;height:1px}.box{flex-shrink:0;width:18px;height:18px;margin-top:4px;border:1.5px solid #9a9892;border-radius:4px;display:grid;place-items:center;transition:background-color .2s,border-color .2s}.box svg{width:12px;height:12px;fill:none;stroke:#fff;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;transform:scale(0);transition:transform .25s var(--spring)}.todo input:focus-visible+.box{outline:2px solid var(--blue-fg);outline-offset:2px}.todo input:checked+.box{background:var(--green-fg);border-color:var(--green-fg);animation:pop .3s var(--spring)}.todo input:checked+.box svg{transform:scale(1)}@keyframes pop{50%{transform:scale(1.25)}}.todo-noted{display:inline-block;margin-left:8px;padding:0 8px;border-radius:999px;background:var(--green-bg);color:var(--green-fg);font-size:12px;font-weight:600;line-height:20px;vertical-align:1px;animation:pop .3s var(--spring)}.todo:has(input:checked){border-color:#cfe3d5}.clips{position:relative}.clips-nav{position:absolute;top:-50px;right:0;display:flex;gap:6px}.clips-nav[hidden]{display:none}.clips-nav .cal-nav:disabled{opacity:.3}.clips-track{list-style:none;margin:12px calc(-1 * var(--gutter)) 0;padding:0 var(--gutter) 16px;display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding:0 var(--gutter);scrollbar-width:none}.clips-track::-webkit-scrollbar{display:none}.clip{flex:none;width:260px;scroll-snap-align:start;display:grid;align-content:start;grid-gap:2px;gap:2px;font-size:14px;line-height:1.4;color:var(--text-soft)}.clip strong{margin-top:10px;font-size:15px;color:var(--text)}.clip-media{position:relative;display:block;width:100%;aspect-ratio:3/4;padding:0;border:0;border-radius:16px;overflow:hidden;background:var(--ink);cursor:pointer;box-shadow:0 14px 30px -18px rgb(30 30 25/.45);transition:transform .3s var(--ease-out)}.clip-media:hover{transform:translateY(-3px)}.clip-media img,.clip-media video{display:block;width:100%;height:100%;object-fit:cover}.clip-sound{position:absolute;left:10px;bottom:10px;padding:3px 10px;border-radius:999px;background:rgb(0 0 0/.55);color:#fff;font-size:12px;font-weight:600;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.clip-play{position:absolute;left:50%;top:50%;width:52px;height:52px;margin:-26px 0 0 -26px;border-radius:50%;background:rgb(255 255 255/.92);box-shadow:0 6px 18px rgb(0 0 0/.3)}.clip-play:after{content:"";position:absolute;left:21px;top:16px;border-left:16px solid var(--ink);border-top:10px solid transparent;border-bottom:10px solid transparent}@media (max-width:640px){.clips-nav{display:none}.clip{width:64vw}}.player{width:min(92vw,980px);max-width:none;max-height:94vh;padding:0;border:0;border-radius:20px;overflow:hidden;background:#0d0d0d;color:#fff;animation:rise .25s var(--ease-out) both}.player::-webkit-backdrop{background:rgb(15 15 15/.72);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.player::backdrop{background:rgb(15 15 15/.72);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.player-frame{display:grid;place-items:center;background:#000}.player-frame video{display:block;max-width:100%;max-height:calc(94vh - 84px);width:auto;height:auto}.player-foot{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px}.player-foot strong{display:block;font-size:16px}.player-foot span{font-size:14px;color:#b9b7b1}.player-actions{display:flex;align-items:center;gap:8px;flex:none}.player-actions .cal-nav{background:#222;border-color:#333;color:#fff}.player-close{min-height:34px;padding:0 14px;border:0;border-radius:999px;background:#fff;color:var(--text);font:inherit;font-size:14px;font-weight:600;cursor:pointer}@media (max-width:560px){.player{width:100vw;max-height:100vh;border-radius:0}.player-frame video{max-height:calc(100vh - 120px)}.player-foot{flex-direction:column;align-items:stretch}.player-actions{justify-content:space-between}}.hobbies{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:12px;gap:12px}.hobby{display:grid;align-content:start;grid-gap:2px;gap:2px;background:var(--bento);border-radius:16px;padding:16px 18px;transition:transform .25s var(--ease-out),background-color .25s}.hobby span{font-size:15px;color:var(--text-soft)}.hobby-photos{display:grid;grid-gap:4px;gap:4px;margin-bottom:10px;aspect-ratio:4/3;border-radius:12px;overflow:hidden}.hobby-photos-2{grid-template-columns:1fr 1fr}.hobby-photos img{display:block;width:100%;height:100%;min-height:0;object-fit:cover;transition:transform .5s var(--ease-out)}.hobby:hover .hobby-photos img{transform:scale(1.04)}.hobby:hover{transform:translateY(-3px) rotate(-1deg);background:var(--highlight)}.cta{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px;margin-top:64px;padding:14px 14px 14px 20px;background:#fff;border:1px solid var(--border);border-radius:20px;box-shadow:0 14px 34px -20px rgb(30 30 25/.4)}.cta p{flex:1 1 260px;margin:0;font-size:15px;font-weight:600}.cta p span{font-weight:400;color:var(--text-muted)}.cta-face{flex:none;width:36px;height:36px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 1px var(--border)}.cta-btn{min-height:40px;padding:0 20px;border-radius:999px}.coffee{padding-top:32px}.coffee-head{margin:24px 0 20px}.coffee-head h1{font-size:clamp(36px,5vw,44px);font-weight:800;letter-spacing:-.02em;line-height:1.1;margin:0 0 10px}.coffee-intro{margin:0;max-width:580px;font-size:17px;color:var(--text-soft)}.booking{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);border:1px solid var(--border);border-radius:20px;overflow:hidden;background:#fff;box-shadow:0 14px 34px -22px rgb(30 30 25/.35)}.cal{padding:20px;border-right:1px solid var(--border)}.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;font-size:16px}.cal-nav{width:32px;height:32px;border:1px solid var(--border);border-radius:50%;background:#fff;font:inherit;font-size:18px;line-height:1;color:var(--text);cursor:pointer;transition:background-color .2s,opacity .2s}.cal-nav:hover:not(:disabled){background:var(--surface)}.cal-nav:disabled{opacity:.3;cursor:default}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:4px;gap:4px}.cal-dow{padding-bottom:6px;text-align:center;font-size:12px;color:var(--text-muted)}.cal-day{position:relative;aspect-ratio:1;border:0;border-radius:10px;background:none;font:inherit;font-size:14px;color:#b5b3ad}.cal-day.is-open{background:var(--surface);color:var(--text);font-weight:700;cursor:pointer;transition:background-color .2s,transform .2s var(--spring)}.cal-day.is-open:hover{background:var(--border);transform:scale(1.06)}.cal-day.is-selected{color:#fff}.cal-day.is-selected,.cal-day.is-selected:hover{background:var(--text)}.cal-day.is-today:after{content:"";position:absolute;left:50%;bottom:5px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:currentColor}.slots{display:grid;align-content:start;grid-gap:6px;gap:6px;padding:24px 22px;background:var(--bento)}.slots-kicker{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.slots-day{font-size:20px;letter-spacing:-.01em}.slots-times{list-style:none;margin:8px 0 0;padding:0 4px 4px 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));grid-gap:8px;gap:8px;max-height:260px;overflow-y:auto}.slots-times button{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:999px;background:#fff;font:inherit;font-size:14px;font-weight:600;color:var(--text);cursor:pointer;transition:border-color .2s,background-color .2s}.slots-times button:hover{border-color:var(--text)}.slots-times button[aria-pressed=true]{background:var(--text);border-color:var(--text);color:#fff}.slots-note{margin:6px 0 10px;font-size:13px;color:var(--text-muted)}.slots .cta-btn{justify-self:start;border:0;font:inherit;font-size:14px;font-weight:600;cursor:pointer}.coffee-link{display:inline-flex;margin-top:4px}.booking-empty{display:grid;justify-items:start;grid-gap:10px;gap:10px;padding:22px;border:1px solid var(--border);border-radius:20px;background:var(--bento)}.booking-empty p{margin:0}@media (max-width:640px){.booking{grid-template-columns:1fr}.cal{border-right:0;border-bottom:1px solid var(--border)}}.walker-track{position:relative;height:128px;margin-top:40px;border-bottom:1.5px solid var(--border)}.walker{position:absolute;bottom:0;left:0;width:45px;animation:stroll 30s linear infinite}.walker-body{animation:face 30s linear infinite}.walker-figure{width:45px;height:101px;background:url(/assets/walker-sprite.png) 0 0/360px 101px no-repeat;animation:walk-cycle .8s steps(8) infinite}.walker-bubble{position:absolute;bottom:100%;left:50%;margin-bottom:4px;padding:2px 10px;border-radius:999px;background:var(--pink-bg);color:var(--pink-fg);font-size:13px;font-weight:700;white-space:nowrap;opacity:0;transform:translate(-50%,4px);transition:opacity .2s,transform .2s var(--spring)}.walker:hover,.walker:hover *{animation-play-state:paused}.walker:hover .walker-bubble{opacity:1;transform:translate(-50%)}@keyframes stroll{0%,2%{left:0}48%,52%{left:calc(100% - 45px)}98%,to{left:0}}@keyframes face{0%,49.9%{transform:scaleX(1)}50%,to{transform:scaleX(-1)}}@keyframes walk-cycle{to{background-position:-360px 0}}.case{padding-top:32px}.back{font-size:14px;color:var(--text-muted);text-decoration:none}.back:hover{color:var(--text)}.case-head{margin-top:24px}.case-head h1{margin-bottom:8px}.case-pain{margin:0 0 14px;font-size:17px;color:var(--text-soft)}.prose h2{font-size:26px;font-weight:700;margin:40px 0 12px}.prose h2:first-child{margin-top:8px}.prose li,.prose p{font-size:16px;color:var(--text-soft)}.prose ul{padding-left:20px}.prose li+li{margin-top:6px}.todo-block{background:var(--surface);border-radius:10px;padding:12px 16px;color:var(--peach-fg)!important;font-size:15px}@supports (animation-timeline:view()){.reveal{animation:rise linear both;animation-timeline:view();animation-range:entry 0 entry 55%}}@media (max-width:560px){.props>div{grid-template-columns:100px 1fr}.notes li{gap:2px}.ed-row,.notes li{grid-template-columns:1fr}.ed-row{gap:8px}.ed-num{font-size:56px}.hint{display:none}.term-body{font-size:12px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.splash{display:none}*,:after,:before{animation:none!important;transition:none!important}}@media (max-width:560px){.table{min-width:520px}.btn-dark,.btn-light{min-height:38px}.contact{gap:4px 16px}.back,.contact a,.crumb-muted{display:inline-block;padding:8px 0;margin:-8px 0}.back{margin-bottom:0}.cal-nav{width:40px;height:40px}.notes li{flex-direction:column;gap:2px;padding:6px 0}.label{min-width:0}.tl{padding-left:22px}.tl-dot{left:-22px}.tl:before{left:5px}.tl-card{padding:14px}.tl-item:hover .tl-card{transform:none}.job,.job-has-photo{grid-template-columns:56px minmax(0,1fr);gap:2px 14px;padding:12px 14px 12px 12px}.job-tile,.job-tile.has-photo{width:56px;height:56px;grid-row:span 2;align-self:start}.job-photo{display:none}.hobbies{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.hobby{padding:10px 10px 12px}.hobby-photos{aspect-ratio:1;margin-bottom:8px}.hobby strong{font-size:14px}.hobby span{font-size:13px}}