
@font-face{font-family:"Source Serif 4";src:url("/fonts/source-serif-4-italic.woff2") format("woff2");font-style:italic;font-weight:400;font-display:swap}
:root{color-scheme:light;--canvas:#f4f3f1;--ink:#333;--body:#aaa;--muted:#aaa;--line:#aaa;font-family:sans-serif;font-size:16px}
*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--ink);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}a:focus-visible{outline:2px solid var(--ink);outline-offset:6px}a:hover{text-decoration:underline;text-underline-offset:4px}.shell{min-height:100svh;padding:0 40px;display:flex;flex-direction:column}header{min-height:100px;display:flex;align-items:center;justify-content:space-between;gap:24px}.logo{display:inline-flex;align-items:center;gap:10px;min-height:44px;color:var(--muted)}.logo-mark{width:24px;height:24px;flex-shrink:0}.logo-name{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:26px;line-height:1;font-weight:400;letter-spacing:-1px}.logo:hover{text-decoration:none}.top-nav{display:flex;align-items:center;gap:25px;font-size:15px;line-height:1.5;color:var(--muted)}.top-nav a{padding:12px 0}.top-nav a[aria-current]{color:var(--ink)}main{flex:1;padding-bottom:100px}.intro{max-width:620px;margin:106px auto 122px;text-align:center}.intro p{font-size:20px;font-weight:400;line-height:1.4;color:var(--body);margin:0}.project-section h2{font-family:"Source Serif 4",Georgia,serif;font-size:13px;font-weight:400;font-style:italic;letter-spacing:-.038em;line-height:1.5;color:var(--muted);margin:0 0 22px}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:65px;row-gap:40px}.project{min-width:0;background:#eeedea;border-radius:5px;overflow:hidden}.project-content{padding:0 22px 16px}.artwork{aspect-ratio:1.12;display:flex;align-items:center;justify-content:center;border-radius:5px;background:#eeedea;overflow:hidden}.artwork img{display:block;width:76%;height:auto;border-radius:5px;box-shadow:0 5px 15px rgba(90,50,40,.15),0 4px 8px rgba(80,40,30,.1)}.sudoku-preview{display:block;width:76%;aspect-ratio:1280/688;overflow:hidden;background:#40545c;border-radius:5px;box-shadow:0 5px 15px rgba(90,50,40,.15),0 4px 8px rgba(80,40,30,.1)}.sudoku-preview img{width:100%;border-radius:0;box-shadow:none;transform:translateY(2.222%)}.artwork>img,.sudoku-preview{transition:transform .4s,box-shadow .4s}@media(hover:hover) and (min-width:769px){.project:hover .artwork>img,.project:hover .sudoku-preview{transform:translateY(-10px);box-shadow:0 5px 10px rgba(100,60,50,.1),0 15px 25px rgba(100,60,50,.4)}}.project:focus-within .artwork>img,.project:focus-within .sudoku-preview{transform:translateY(-10px);box-shadow:0 5px 10px rgba(100,60,50,.1),0 15px 25px rgba(100,60,50,.4)}.project-caption{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding-top:0;font-size:15px;line-height:1.5;color:var(--muted)}.project-caption h3{font-size:15px;font-weight:400;margin:0}.project-caption>span{color:var(--muted);opacity:.5;text-align:right}.project-links{display:inline-flex;align-items:center;gap:10px;flex-shrink:0}.project-title{position:relative;display:inline-flex;align-items:center;gap:6px}.project-title:hover{text-decoration:none}.project-title:hover::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor}.project-links svg{display:block;width:15px;height:15px;flex-shrink:0}.browser-link{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:24px;margin:-4px;color:var(--muted)}.browser-link:hover,.project-title:hover{color:var(--ink)}.browser-link:hover{text-decoration:none}.browser-link:hover::after{content:"";position:absolute;left:50%;bottom:1px;width:15px;height:1px;transform:translateX(-50%);background:currentColor}.destinations{margin-top:14px}.destination{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:8px 0}.destination+.destination{border-top:1px solid #ddd;margin-top:8px;padding-top:14px}.destination-details{min-width:0;display:grid;gap:4px}.address{color:var(--muted);font-size:14px;line-height:1.5;overflow-wrap:anywhere}.access-label{color:var(--muted);font-size:14px;line-height:1.5}.open{font-size:14px;font-weight:400;white-space:nowrap;padding:10px 0;min-height:40px;display:inline-flex;align-items:center;text-decoration:underline;text-underline-offset:4px;text-decoration-color:#aaa}.open:hover{text-decoration-color:var(--ink)}footer{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:25px 0 30px;font-size:14px;color:var(--muted)}footer nav{display:flex;gap:25px}footer a{padding:10px 0}.back-to-top{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px}.back-to-top:hover{text-decoration:none;color:var(--ink)}footer a[aria-current]{color:var(--ink)}.preview-note{font-size:14px;color:var(--muted);text-align:center;padding:12px 0;line-height:1.5}.message h1{font-size:20px;line-height:1.5;font-weight:400;margin:0 0 20px}.message .open{margin-top:25px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:absolute;top:12px;left:12px;padding:12px;background:var(--ink);color:var(--canvas);transform:translateY(-160%);z-index:2}.skip:focus{transform:none}
/* A short pixel burst, then a quiet hold in the original five-square mark. */
.logo-mark{overflow:visible}
.logo-pixels{transform-origin:11.5px 11.5px}
.logo-pixel{transform-box:fill-box;transform-origin:center;--pixel-x:0px;--pixel-y:0px}
.logo-pixel:nth-child(1){--pixel-x:-3px;--pixel-y:-3px}
.logo-pixel:nth-child(2){--pixel-x:3px;--pixel-y:-3px}
.logo-pixel:nth-child(4){--pixel-x:-3px;--pixel-y:3px}
.logo-pixel:nth-child(5){--pixel-x:3px;--pixel-y:3px}
/* Match the background: Pause motion is the explicit control, including with reduced motion enabled. */
.animated-background .logo-pixels{animation:logo-orbit 6s cubic-bezier(.22,.68,.25,1) infinite}
.animated-background .logo-pixel{animation:logo-burst 6s cubic-bezier(.22,.68,.25,1) infinite}
.animated-background .logo-core{animation-name:logo-heartbeat}
.animated-background .logo:focus-visible .logo-pixels{animation:logo-play 1.6s cubic-bezier(.22,.68,.25,1) infinite}
.animated-background .logo:focus-visible .logo-pixel{animation:logo-scatter 1.6s cubic-bezier(.22,.68,.25,1) infinite}
.animated-background .logo:focus-visible .logo-core{animation-name:logo-pop}
@media(hover:hover){
  .animated-background .logo:hover .logo-pixels{animation:logo-play 1.6s cubic-bezier(.22,.68,.25,1) infinite}
  .animated-background .logo:hover .logo-pixel{animation:logo-scatter 1.6s cubic-bezier(.22,.68,.25,1) infinite}
  .animated-background .logo:hover .logo-core{animation-name:logo-pop}
}
.background-paused .logo-pixels,.background-paused .logo-pixel{animation-play-state:paused!important}
@keyframes logo-orbit{0%{transform:rotate(0)}6%{transform:rotate(-15deg)}18%{transform:rotate(100deg)}26%,100%{transform:rotate(90deg)}}
@keyframes logo-burst{0%,26%,100%{transform:translate(0) scale(1) rotate(0)}6%{transform:translate(0) scale(.86) rotate(-12deg)}14%{transform:translate(var(--pixel-x),var(--pixel-y)) scale(.8) rotate(45deg)}21%{transform:translate(0) scale(1.1) rotate(0)}}
@keyframes logo-heartbeat{0%,26%,100%{transform:scale(1)}6%{transform:scale(.72)}14%{transform:scale(1.3) rotate(90deg)}21%{transform:scale(.92) rotate(90deg)}}
@keyframes logo-play{0%{transform:rotate(0)}20%{transform:rotate(-18deg)}70%{transform:rotate(103deg)}100%{transform:rotate(90deg)}}
@keyframes logo-scatter{0%,100%{transform:translate(0) scale(1) rotate(0)}20%{transform:translate(0) scale(.8) rotate(-12deg)}50%{transform:translate(var(--pixel-x),var(--pixel-y)) scale(.75) rotate(90deg)}78%{transform:translate(0) scale(1.12) rotate(0)}}
@keyframes logo-pop{0%,100%{transform:scale(1)}20%{transform:scale(.7)}50%{transform:scale(1.4) rotate(90deg)}78%{transform:scale(.9) rotate(90deg)}}
@media(max-width:1200px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px}.shell{padding:0 30px}}
@media(max-width:700px){.shell{padding:0 20px}header{min-height:82px}.logo{gap:8px}.logo-mark{width:22px;height:22px}.logo-name{font-size:24px}.intro{margin:90px auto 108px;max-width:490px}.intro p{font-size:18px;line-height:1.5}.project-grid{grid-template-columns:1fr;gap:40px}.project-content{padding:0 20px 16px}.artwork{aspect-ratio:1.12}main{padding-bottom:65px}.destination{gap:14px}footer{padding-bottom:22px}}
@media(max-width:360px){header{gap:16px}.top-nav{gap:14px;white-space:nowrap}.logo-name{font-size:22px}.logo-mark{width:20px;height:20px}.intro p{font-size:17px}.sudoku-preview{display:block;width:76%;aspect-ratio:1280/688;overflow:hidden;background:#40545c;border-radius:5px;box-shadow:0 5px 15px rgba(90,50,40,.15),0 4px 8px rgba(80,40,30,.1)}.sudoku-preview img{width:100%;border-radius:0;box-shadow:none;transform:translateY(2.222%)}.artwork>img,.sudoku-preview{transition:transform .4s,box-shadow .4s}@media(hover:hover) and (min-width:769px){.project:hover .artwork>img,.project:hover .sudoku-preview{transform:translateY(-10px);box-shadow:0 5px 10px rgba(100,60,50,.1),0 15px 25px rgba(100,60,50,.4)}}.project:focus-within .artwork>img,.project:focus-within .sudoku-preview{transform:translateY(-10px);box-shadow:0 5px 10px rgba(100,60,50,.1),0 15px 25px rgba(100,60,50,.4)}.project-caption{flex-wrap:wrap}.project-caption>span{text-align:left}.destination{flex-wrap:wrap;gap:4px}.address{font-size:14px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
