@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/geist-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/geist-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/geist-mono-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/geist-mono-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--bg: #fbfaf8;--bg-soft: #f2f0ec;--fg: #1a1a18;--fg-soft: #5c5a54;--fg-faint: #8a877f;--line: #e6e3dd;--accent: #0d7470;--accent-soft: #e3f2f0;--river: #4db6ae;--contour: #e2d6c3;--contour-major: #d3bf9f;--map-bg: #f7f4ee;--duck: #f5c400;--font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "Geist Mono", ui-monospace, "SF Mono", "JetBrains Mono", "Menlo", monospace;--maxw: 44rem;--maxw-wide: 60rem;--step: clamp(1rem, .9rem + .5vw, 1.125rem)}@media(prefers-color-scheme:dark){:root{--bg: #131211;--bg-soft: #1d1b19;--fg: #ecebe8;--fg-soft: #aba89f;--fg-faint: #76736b;--line: #2c2a27;--accent: #4fd1c5;--accent-soft: #0f2a28;--river: #2b8f88;--contour: #2f2a24;--contour-major: #40372c;--map-bg: #171513;--duck: #e0b400}}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}img,svg{display:block;max-width:100%}a{color:inherit}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);font-size:var(--step);line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;display:flex;flex-direction:column;min-height:100vh}.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:1.5rem}.wrap--wide{max-width:var(--maxw-wide)}main{flex:1}section{padding-block:clamp(2.5rem,6vw,4rem)}section+section{position:relative}section+section:before{content:"";position:absolute;top:-3px;left:1.5rem;right:1.5rem;height:6px;background:var(--line);--wave: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='6'%3E%3Cpath d='M0 3q6-4 12 0t12 0' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E");-webkit-mask:var(--wave) repeat-x 0 0 / 24px 6px;mask:var(--wave) repeat-x 0 0 / 24px 6px}h1,h2,h3{line-height:1.15;font-weight:650;letter-spacing:-.025em}h1{font-size:clamp(2.2rem,1.6rem + 3vw,3.4rem)}h2{font-size:clamp(1.5rem,1.2rem + 1.2vw,2rem)}h3{font-size:1.15rem;letter-spacing:-.01em}p{color:var(--fg-soft)}.lead{font-size:clamp(1.15rem,1rem + .8vw,1.4rem);color:var(--fg);line-height:1.5}.eyebrow{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:1rem}.muted{color:var(--fg-faint)}.link{color:var(--fg);text-decoration:none;border-bottom:1px solid var(--line);transition:border-color .15s ease,color .15s ease}.link:hover{color:var(--accent);border-color:var(--accent)}.site-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-block:1.4rem;border-bottom:1px solid var(--line)}.brand{font-weight:650;letter-spacing:-.02em;text-decoration:none;font-size:1.05rem;display:inline-flex;align-items:center;gap:.55rem}.nav-right{display:flex;align-items:center;gap:1.4rem}.nav{display:flex;gap:1.4rem;font-size:.95rem}.nav a{text-decoration:none;color:var(--fg-soft);transition:color .15s ease}.nav a:hover,.nav a[aria-current=page]{color:var(--fg)}.lang-switch{display:flex;gap:.5rem;font-family:var(--font-mono);font-size:.78rem;padding-left:1.1rem;border-left:1px solid var(--line)}.lang-switch a{text-decoration:none;color:var(--fg-faint);transition:color .15s ease}.lang-switch a:hover{color:var(--fg-soft)}.lang-switch a[aria-current=true]{color:var(--accent)}@media(max-width:26rem){.nav{gap:1rem;font-size:.9rem}.nav-right{gap:1rem}.lang-switch{padding-left:.85rem}}.hero{padding-top:clamp(1.25rem,3vw,2rem)}.hero-text{max-width:40rem}.hero .lead{margin-top:1.25rem}.hero h1{text-wrap:balance}@media(min-width:40rem){.h1-name{white-space:nowrap}}@media(min-width:60rem){.has-map .hero h1{font-size:clamp(2.2rem,3.6vw,3.4rem)}}.aare-temp{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;margin-top:.85rem;min-height:1.65em;font-family:var(--font-mono);font-size:.78rem;letter-spacing:.04em}.aare-reading{color:var(--accent);text-decoration:none;text-transform:uppercase;letter-spacing:.08em}.aare-reading:hover{text-decoration:underline}.aare-quip{color:var(--fg-faint)}@media(max-width:40rem){.aare-temp{min-height:3.3em}}.aare-temp.is-live .aare-quip{animation:surface .6s ease-out both}@keyframes surface{0%{opacity:0;transform:translateY(4px)}}.has-map{--top-w: 200vw;--top-x: -1vw;--river-w: 26;--label-size: 24px;--pin-scale: 1.6;--float-scale: 1.8;position:relative;background:var(--map-bg)}@media(min-width:40rem){.has-map{--top-w: 140vw;--top-x: -3vw;--river-w: 22;--label-size: 19px;--pin-scale: 1.25;--float-scale: 1.5}}@media(min-width:60rem){.has-map{--top-w: 100vw;--top-x: 0vw;--river-w: 18;--label-size: 15px;--pin-scale: 1;--float-scale: 1.3}}.has-map :is(main,.site-head,.site-foot){text-shadow:0 0 2px var(--map-bg),0 0 8px var(--map-bg),0 0 16px var(--map-bg)}.has-map :is(.cards,.cta,.chip,.map-key){text-shadow:none}.has-map .chip{background:var(--bg)}.has-map .site-head{border-bottom-color:transparent}.has-map .hero{padding-top:calc(var(--top-w) * var(--map-ratio) * .97 - 4.6rem)}@media(min-width:60rem){.has-map .hero{display:flex;align-items:center;min-height:calc(var(--top-w) * var(--map-ratio) - 4.6rem);padding-top:1rem}.has-map .hero-text{margin-left:50%}}.map-canvas,.map-hotspots{position:absolute;inset:0;overflow:hidden;pointer-events:none}.map-canvas{z-index:-1}.map-hotspots{z-index:1}@media(min-width:60rem)and (prefers-reduced-motion:no-preference){.map-canvas,.map-hotspots{position:fixed}}@media(max-width:59.99rem){.map-world{--fade: calc(var(--top-w) * var(--loop-units) / var(--map-units));-webkit-mask-image:linear-gradient(#000 var(--fade),transparent calc(var(--fade) + 14rem));mask-image:linear-gradient(#000 var(--fade),transparent calc(var(--fade) + 14rem))}.map-world .work-spot,.labels .south{display:none}}@media(min-width:60rem){.has-map main>section:not(.hero){background:color-mix(in srgb,var(--map-bg) 80%,transparent);box-shadow:0 0 48px 32px color-mix(in srgb,var(--map-bg) 80%,transparent)}}.map-world{position:absolute;top:0;left:0;width:var(--top-w);margin-left:var(--top-x);aspect-ratio:var(--map-units) / var(--map-height);will-change:transform}.map-world>svg{display:block;width:100%;height:100%;overflow:visible}.contours path{fill:none;stroke:var(--contour);stroke-width:1;vector-effect:non-scaling-stroke}.contours--major path{stroke:var(--contour-major);stroke-width:1.4}.river{fill:none;stroke:var(--river);stroke-width:calc(var(--river-w) * 1px);stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;animation:draw-river 2.4s cubic-bezier(.6,0,.3,1) both}@keyframes draw-river{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.river-label{font-family:var(--font-mono);font-size:calc(var(--label-size) * .72);font-style:italic;letter-spacing:.2em;fill:var(--map-bg);animation:fade-in .6s 2s both}@keyframes fade-in{0%{opacity:0}}.bridges rect{fill:var(--map-bg);stroke:var(--fg-faint);stroke-width:1}.labels text{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:.14em;text-transform:uppercase;fill:var(--fg-faint);text-anchor:middle}.labels .aside{text-transform:none;letter-spacing:.02em;font-size:calc(var(--label-size) * .9)}.labels .bear{font-size:calc(var(--label-size) * 1.35)}.floaters{animation:fade-in .8s 1.6s both}.floater{transform:scale(var(--float-scale));animation:bob 3.2s ease-in-out var(--bob-delay, 0s) infinite alternate}.floater image{filter:drop-shadow(0 1px 1.5px rgb(0 0 0 / .25))}.wake{fill:none;stroke:var(--map-bg);stroke-width:1.2;opacity:0;transform-box:fill-box;transform-origin:center;animation:wake 2.6s ease-out var(--bob-delay, 0s) infinite}@keyframes bob{0%{transform:scale(var(--float-scale)) translateY(1px) rotate(-6deg)}to{transform:scale(var(--float-scale)) translateY(-2px) rotate(5deg)}}@keyframes wake{0%{opacity:.7;transform:scale(.5)}to{opacity:0;transform:scale(1.3)}}.duck-body{fill:var(--duck)}.duck-beak{fill:#f08a24}.duck-eye{fill:#1a1a18}.duck-wing{fill:none;stroke:#0000002e;stroke-width:1.4;stroke-linecap:round}.hotspot{opacity:0;transition:opacity .15s ease}.hotspot:is(:hover,:focus-within,.is-open){opacity:1}.hotspot :is(.pin-photo,.awl-logo),a.hotspot{pointer-events:auto}.hotspot.is-covered:not(.is-open),.hotspot.is-covered *{pointer-events:none}.pin{--pin-d: calc(var(--top-w) * 52 / var(--map-units) * var(--pin-scale));--card-w: min(14rem, 52vw);position:absolute;left:calc(var(--x) * 100%);top:calc(var(--y) * 100%)}.map-canvas .pin{animation:drop-pin .7s cubic-bezier(.3,1.5,.5,1) 1.2s both}@keyframes drop-pin{0%{opacity:0;transform:translateY(-40px)}}.pin-shape{position:absolute;left:calc(var(--pin-d) / -2);top:calc(var(--pin-d) * -1.207);width:var(--pin-d);height:var(--pin-d);border-radius:50% 50% 0;background:var(--fg);box-shadow:0 2px 4px #00000040;transform:rotate(45deg);transition:opacity .2s ease,transform .3s ease}.pin-photo{position:absolute;left:0;top:calc(var(--pin-d) * -.707);width:calc(var(--pin-d) * .8);height:calc(var(--pin-d) * .8);padding:0;border:0;border-radius:50%;overflow:hidden;background:var(--fg);cursor:zoom-in;transform:translate(-50%,-50%);transition:width .45s cubic-bezier(.3,1.25,.5,1),height .45s cubic-bezier(.3,1.25,.5,1),border-radius .45s ease,transform .25s cubic-bezier(.3,1.6,.5,1),box-shadow .45s ease}.pin-photo:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.pin.hotspot:not(.is-open) .pin-photo:hover{transform:translate(-50%,-50%) scale(1.1)}.pin-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .3s ease}.pin-full{object-position:30% 40%;opacity:0}.pin-caption{position:absolute;inset:auto 0 0;padding:1.6rem .75rem .6rem;font-family:var(--font-mono);font-size:.66rem;text-align:left;color:#fff;background:linear-gradient(transparent,#0000008c);opacity:0;transition:opacity .3s ease}.pin.is-open .pin-photo{width:var(--card-w);height:calc(var(--card-w) * 1.3);border-radius:14px;cursor:zoom-out;box-shadow:0 14px 40px #0000004d}.pin.is-open .pin-shape{opacity:0;transform:rotate(45deg) scale(.6)}.pin.is-open .pin-full,.pin.is-open .pin-caption{opacity:1;transition-delay:.1s}.pin.is-open .pin-face{opacity:0}.work-spot{position:absolute;left:calc(var(--x) * 100%);top:calc(var(--y) * 100%);display:flex;flex-direction:column;align-items:center;gap:.35rem;font-family:var(--font-mono);font-size:.62rem;letter-spacing:.04em;white-space:nowrap;color:var(--fg-faint);text-decoration:none;text-shadow:0 0 2px var(--map-bg),0 0 8px var(--map-bg);transform:translate(-50%,-50%)}.awl-logo{width:28px;height:28px;background:var(--fg);-webkit-mask:url(/icons/appswithlove.svg) center / contain no-repeat;mask:url(/icons/appswithlove.svg) center / contain no-repeat;transition:background .2s ease,transform .25s cubic-bezier(.3,1.6,.5,1)}a.work-spot:hover{color:var(--fg-soft)}a.work-spot:hover .awl-logo{background:var(--accent);transform:scale(1.12)}a.work-spot:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:6px}.map-key{width:fit-content;max-width:100%;margin:clamp(2.5rem,6vw,4rem) 0 2rem auto;padding:.75rem .9rem;font-family:var(--font-mono);font-size:.68rem;color:var(--fg-soft);background:color-mix(in srgb,var(--bg) 88%,transparent);border:1px solid var(--line);border-radius:10px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.legend{list-style:none;padding:0;display:grid;grid-template-columns:repeat(2,auto);gap:.3rem 1.5rem}@media(max-width:30rem){.legend{grid-template-columns:1fr}}.legend li{display:flex;align-items:center;gap:.5rem}.credits{margin-top:.7rem;font-size:inherit;color:var(--fg-faint)}.credits a{color:inherit}.credits a:hover{color:var(--fg-soft)}.key{width:18px;height:10px;flex-shrink:0;display:inline-block}.key--river{height:5px;border-radius:3px;background:var(--river)}.key--bridge{width:5px;margin-inline:6.5px;height:12px;border:1px solid var(--fg-faint);border-radius:1px}.key--app{width:11px;height:11px;margin-inline:3.5px;border-radius:3px;background:linear-gradient(135deg,#ff8a3d,#e5484d 55%,#7c5cff)}.key--duck{width:11px;height:9px;margin-inline:3.5px;border-radius:50% 50% 45% 45%;background:var(--duck)}.key--me{width:10px;height:10px;margin-inline:4px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--fg)}.key--scale{width:calc(var(--top-w) * var(--scale-frac));height:5px;border:1.2px solid var(--fg-faint);border-top:0}.card{scroll-margin-top:2rem}.card:target{animation:splash 1.4s ease-out}@keyframes splash{0%{box-shadow:inset 0 0 0 2px var(--accent);background:var(--accent-soft)}to{box-shadow:inset 0 0 0 2px transparent;background:var(--bg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}html{scroll-behavior:auto}}.socials{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:2rem}.chip{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .85rem;border:1px solid var(--line);border-radius:999px;text-decoration:none;color:var(--fg-soft);font-size:.9rem;transition:border-color .15s ease,color .15s ease,background .15s ease}.chip:hover{color:var(--fg);border-color:var(--fg-faint);background:var(--bg-soft)}.cards{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}.card{background:var(--bg);padding:1.5rem;display:flex;flex-direction:column;gap:.6rem}.card-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}.card-title{display:flex;align-items:center;gap:.75rem}.app-icon{width:48px;height:48px;border-radius:11px;border:1px solid var(--line);flex-shrink:0}.stat{flex-shrink:0;font-family:var(--font-mono);font-size:.72rem;font-weight:500;letter-spacing:.02em;color:var(--accent);background:var(--accent-soft);padding:.25rem .55rem;border-radius:999px;white-space:nowrap}.card h3{margin:0}.card p{margin:0;font-size:.98rem}.tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:auto;padding-top:.4rem}.tag{font-family:var(--font-mono);font-size:.72rem;color:var(--fg-faint);background:var(--bg-soft);padding:.2rem .5rem;border-radius:6px}.card-links{display:flex;flex-wrap:wrap;gap:1rem;font-size:.9rem}.card-links a{color:var(--accent);text-decoration:none}.card-links a:hover{text-decoration:underline}.services{display:grid;gap:1.5rem;margin-top:2rem}.service{border-left:2px solid var(--accent);padding-left:1.25rem}.service h3{margin-bottom:.4rem}.service p{margin:0}.cta{display:inline-block;margin-top:1.5rem;padding:.75rem 1.4rem;background:var(--fg);color:var(--bg);border-radius:10px;text-decoration:none;font-weight:550;transition:opacity .15s ease}.cta:hover{opacity:.85}.site-foot{border-top:1px solid var(--line);padding-block:2rem;font-size:.88rem;color:var(--fg-faint);display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;align-items:center;justify-content:space-between}.site-foot a{color:var(--fg-soft);text-decoration:none}.site-foot a:hover{color:var(--fg)}.stack>*+*{margin-top:1rem}.flow>*+*{margin-top:1.5rem}@media(min-width:36rem){.cards--2{grid-template-columns:1fr 1fr}}
