
:root{--ink:#19162b;--paper:#fffdf7;--yellow:#ffd43b;--blue:#3d4dff;--pink:#ff9ccb;--mint:#7ce3b5;--tomato:#ff5c39;--top:var(--paper);
--arch:polygon(100.0% 40.0%,99.2% 33.1%,97.0% 26.3%,93.3% 20.0%,88.3% 14.3%,82.1% 9.4%,75.0% 5.4%,67.1% 2.4%,58.7% 0.6%,50.0% 0.0%,41.3% 0.6%,32.9% 2.4%,25.0% 5.4%,17.9% 9.4%,11.7% 14.3%,6.7% 20.0%,3.0% 26.3%,0.8% 33.1%,0.0% 40.0%,0.0% 100.0%,100.0% 100.0%);--flower:polygon(100.0% 50.0%,99.4% 52.2%,97.8% 54.2%,95.3% 56.0%,92.3% 57.5%,89.4% 58.7%,86.8% 59.8%,84.8% 61.0%,83.8% 62.3%,83.8% 64.0%,84.5% 66.1%,85.8% 68.6%,87.2% 71.5%,88.5% 74.5%,89.3% 77.5%,89.2% 80.1%,88.3% 82.1%,86.5% 83.4%,83.9% 83.9%,80.9% 83.7%,77.6% 82.9%,74.5% 82.0%,71.8% 81.2%,69.6% 80.8%,68.0% 81.2%,66.9% 82.4%,66.1% 84.5%,65.4% 87.3%,64.7% 90.4%,63.7% 93.6%,62.4% 96.3%,60.7% 98.3%,58.7% 99.2%,56.5% 99.0%,54.2% 97.8%,52.0% 95.6%,50.0% 93.0%,48.2% 90.3%,46.7% 87.9%,45.2% 86.2%,43.7% 85.5%,42.1% 85.7%,40.2% 86.8%,37.9% 88.5%,35.3% 90.4%,32.5% 92.2%,29.7% 93.5%,27.2% 93.9%,25.0% 93.3%,23.4% 91.7%,22.5% 89.3%,22.2% 86.2%,22.4% 82.9%,22.8% 79.7%,23.1% 76.9%,23.1% 74.7%,22.4% 73.1%,21.0% 72.2%,18.8% 71.8%,16.0% 71.7%,12.8% 71.5%,9.5% 71.1%,6.5% 70.3%,4.3% 68.9%,3.0% 67.1%,2.8% 64.9%,3.7% 62.4%,5.4% 59.9%,7.7% 57.5%,10.0% 55.3%,12.1% 53.3%,13.5% 51.6%,14.0% 50.0%,13.5% 48.4%,12.1% 46.7%,10.0% 44.7%,7.7% 42.5%,5.4% 40.1%,3.7% 37.6%,2.8% 35.1%,3.0% 32.9%,4.3% 31.1%,6.5% 29.7%,9.5% 28.9%,12.8% 28.5%,16.0% 28.3%,18.8% 28.2%,21.0% 27.8%,22.4% 26.9%,23.1% 25.3%,23.1% 23.1%,22.8% 20.3%,22.4% 17.1%,22.2% 13.8%,22.5% 10.7%,23.4% 8.3%,25.0% 6.7%,27.2% 6.1%,29.7% 6.5%,32.5% 7.8%,35.3% 9.6%,37.9% 11.5%,40.2% 13.2%,42.1% 14.3%,43.7% 14.5%,45.2% 13.8%,46.7% 12.1%,48.2% 9.7%,50.0% 7.0%,52.0% 4.4%,54.2% 2.2%,56.5% 1.0%,58.7% 0.8%,60.7% 1.7%,62.4% 3.7%,63.7% 6.4%,64.7% 9.6%,65.4% 12.7%,66.1% 15.5%,66.9% 17.6%,68.0% 18.8%,69.6% 19.2%,71.8% 18.8%,74.5% 18.0%,77.6% 17.1%,80.9% 16.3%,83.9% 16.1%,86.5% 16.6%,88.3% 17.9%,89.2% 19.9%,89.3% 22.5%,88.5% 25.5%,87.2% 28.5%,85.8% 31.4%,84.5% 33.9%,83.8% 36.0%,83.8% 37.7%,84.8% 39.0%,86.8% 40.2%,89.4% 41.3%,92.3% 42.5%,95.3% 44.0%,97.8% 45.8%,99.4% 47.8%);--star:polygon(50.0% 0.0%,59.1% 10.0%,71.7% 5.0%,75.6% 17.9%,89.1% 18.8%,86.9% 32.2%,98.7% 38.9%,91.0% 50.0%,98.7% 61.1%,86.9% 67.8%,89.1% 81.2%,75.6% 82.1%,71.7% 95.0%,59.1% 90.0%,50.0% 100.0%,40.9% 90.0%,28.3% 95.0%,24.4% 82.1%,10.9% 81.2%,13.1% 67.8%,1.3% 61.1%,9.0% 50.0%,1.3% 38.9%,13.1% 32.2%,10.9% 18.8%,24.4% 17.9%,28.3% 5.0%,40.9% 10.0%);--house:polygon(50% 0,100% 20%,100% 100%,0 100%,0 20%);--lean:polygon(14% 0,100% 0,86% 100%,0 100%);--cut:polygon(0 0,84% 0,100% 16%,100% 100%,16% 100%,0 84%);--tab:polygon(0 0,60% 0,60% 9%,100% 9%,100% 100%,0 100%);
--pop:drop-shadow(3px 0 0 var(--ink)) drop-shadow(-3px 0 0 var(--ink)) drop-shadow(0 3px 0 var(--ink)) drop-shadow(0 -3px 0 var(--ink)) drop-shadow(7px 7px 0 var(--ink));
--display:'Bricolage Grotesque',Impact,'Arial Black',sans-serif;--text:'Figtree',system-ui,Arial,sans-serif}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:20px;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.6 var(--text);overflow-x:clip;-webkit-tap-highlight-color:transparent}
body[data-page=home]{--top:var(--yellow)}body[data-page=playground]{--top:var(--pink)}
button,input,select{font:inherit;color:inherit;border-radius:0}button{background:none;cursor:pointer;border:0;touch-action:manipulation}summary{cursor:pointer}
a{color:inherit;text-decoration:none}img{display:block;max-width:100%}p{margin:0 0 18px}
:focus-visible{outline:4px solid var(--blue);outline-offset:3px}::selection{background:var(--pink)}
h1,h2,h3{font-family:var(--display);line-height:1;margin:0;letter-spacing:-.035em;font-weight:800}
h2{font-size:clamp(34px,5.6vw,80px);margin-bottom:28px}h3{font-size:30px;line-height:1.08}
h1 em,h2 em{font-style:normal}
.wrap{width:min(1180px,90%);margin-inline:auto}.skip{position:fixed;top:-80px;background:var(--yellow);padding:10px;z-index:30}.skip:focus{top:10px}
[hidden]{display:none!important}
button:disabled{opacity:.35;cursor:default}

/* ---------- header: brand, nav and Say hello ---------- */
.site-header{background:var(--top);padding:18px 5%;padding-top:max(18px,env(safe-area-inset-top));display:flex;align-items:center;justify-content:space-between;gap:16px}
.brand{font:800 32px var(--display);letter-spacing:-.05em;display:flex;align-items:center;gap:8px;line-height:1}.brand i{width:16px;height:16px;background:var(--blue);display:block;transform:rotate(12deg);border:3px solid var(--ink)}
.nav-row{display:flex;align-items:center;gap:30px}
nav{display:flex;gap:26px}nav a{font-weight:700;padding:8px 0;border-bottom:4px solid transparent;line-height:1.2}nav a:hover,nav a[aria-current]{border-color:var(--ink)}
.say-hi{background:var(--ink);color:var(--paper);padding:0 22px;min-height:44px;display:inline-flex;align-items:center;font-weight:700;clip-path:var(--cut);white-space:nowrap}.say-hi:hover{background:var(--blue)}
@media(min-width:901px){.site-header{position:sticky;top:0;z-index:20;border-bottom:3px solid var(--ink)}}

/* ---------- buttons ---------- */
.button{display:inline-flex;align-items:center;justify-content:center;text-align:center;min-height:48px;padding:12px 24px;border:3px solid var(--ink);font-weight:700;font-size:16px;line-height:1.2;box-shadow:5px 5px 0 var(--ink);transition:transform .12s,box-shadow .12s;background:var(--paper)}
.button:hover{transform:translate(4px,4px);box-shadow:1px 1px 0 var(--ink)}.button.ink{background:var(--ink);color:var(--paper)}
.text-link{font-weight:700;text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:5px;padding:10px 0}
.eyebrow{display:inline-block;background:var(--ink);color:var(--paper);font-weight:700;font-size:14px;padding:3px 12px}

/* ---------- fancy square photo frames ---------- */
.frame{position:relative;display:block;aspect-ratio:1/1;padding:0;isolation:isolate}
.frame .plate{position:absolute;inset:0;background:var(--back,var(--pink));border:3px solid var(--ink);border-radius:26%;transform:translate(-6%,6%) rotate(-8deg);z-index:-1}
.frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border:4px solid var(--ink);border-radius:24%;box-shadow:8px 8px 0 var(--ink);background:var(--blue)}
.frame::after{content:'';position:absolute;right:-5%;top:-5%;width:17%;aspect-ratio:1;background:var(--tomato);clip-path:var(--star);z-index:2}
.hero{background:var(--yellow);padding:30px 0 80px}
.hero-layout{display:grid;grid-template-columns:1.15fr .85fr;gap:50px;align-items:center}
.hello{font-weight:700;font-size:20px;margin-bottom:14px}.hero h1{font-size:clamp(46px,9vw,128px);line-height:.92;letter-spacing:-.05em}
.hero-description{font-size:clamp(18px,2.2vw,21px);max-width:480px;margin:26px 0}.hero-actions{display:flex;gap:10px 28px;align-items:center;flex-wrap:wrap}
.status{display:inline-flex;align-items:center;gap:10px;margin-top:30px;font-weight:600;font-size:15px}.status:before{content:'';flex:none;width:12px;height:12px;background:var(--tomato);border:3px solid var(--ink);animation:blink 1.6s steps(2) infinite}
@keyframes blink{50%{opacity:.2}}
.photo-scene{justify-self:center;width:min(430px,100%);min-width:0;padding:0 4% 0 6%}.hero-copy{min-width:0}
.hero-photo{width:100%;transition:transform .2s}.hero-photo:hover{transform:rotate(-1deg) scale(1.015)}.hero-photo.pop{animation:wiggle .35s}
@keyframes wiggle{30%{transform:scale(.97)}70%{transform:scale(1.02)}}
.photo-caption{font-weight:700;margin:30px 0 12px}
.thumbs{min-width:0;max-width:100%;display:flex;flex-wrap:nowrap;gap:10px;overflow-x:auto;overflow-y:hidden;padding:4px 10px 12px 2px;scroll-snap-type:x proximity;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--ink) transparent}
.thumb{flex:none;width:56px;height:56px;scroll-snap-align:start;padding:0;border:3px solid var(--ink);border-radius:14px;overflow:hidden;opacity:.88;background:var(--paper);box-shadow:2px 2px 0 var(--ink);transition:transform .12s,opacity .12s}
.thumb img{width:100%;height:100%;object-fit:cover}.thumb[aria-pressed=true]{opacity:1;transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--ink)}

/* ---------- ticker & note ---------- */
.ticker{background:var(--ink);color:var(--paper);overflow:hidden;white-space:nowrap;font:700 26px var(--display);padding:18px 0}
.ticker>div{display:inline-flex;animation:slide 28s linear infinite}.ticker span{display:inline-flex;align-items:center;gap:30px;padding-right:30px}
.ticker span:after{content:'';width:16px;height:16px;background:var(--pink);clip-path:polygon(50% 0,100% 100%,0 100%)}.ticker span:nth-child(2):after{background:var(--mint);clip-path:none}.ticker span:nth-child(3):after{background:var(--yellow);border-radius:50%}.ticker span:nth-child(4):after{background:var(--blue);clip-path:var(--cut)}
@keyframes slide{to{transform:translateX(-50%)}}
.note-band{background:var(--mint);padding:50px 5%;display:flex;justify-content:center;align-items:center;gap:20px 40px;flex-wrap:wrap;text-align:center;border-bottom:4px solid var(--ink)}
.note-band p{font:700 clamp(22px,3vw,34px)/1.2 var(--display);margin:0;letter-spacing:-.02em;max-width:640px}.note-band .hand-note{font:700 18px var(--text)}
.section-label{display:flex;justify-content:space-between;gap:8px 20px;align-items:center;flex-wrap:wrap;margin-bottom:34px;font-weight:700}.section-label a{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:3px}

/* ---------- about ---------- */
.meet,.about-life,.qa{padding-block:100px}.intro-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px}
.lead{font-size:clamp(20px,2.4vw,24px);line-height:1.4;font-weight:600}.tiny-tags{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}.tiny-tags span{border:3px solid var(--ink);padding:4px 14px;font-weight:700;font-size:14px;background:var(--yellow)}.tiny-tags span:nth-child(2){background:var(--pink)}.tiny-tags span:nth-child(3){background:var(--mint)}
.capability-list{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin-top:80px}
.card{filter:var(--pop)}.card>div{padding:34px 30px 38px;height:100%;background:var(--c);clip-path:var(--s)}.card:nth-child(1){--c:var(--yellow);--s:var(--cut)}.card:nth-child(2){--c:var(--pink);--s:var(--tab)}.card:nth-child(3){--c:var(--mint);--s:polygon(0 0,100% 0,100% 84%,84% 100%,0 100%)}
.card:nth-child(2)>div{padding-top:50px}.card svg{width:54px;height:54px;margin-bottom:20px}.card h3{margin-bottom:14px}.card p{margin:0;font-size:16px}

/* ---------- work stories ---------- */
.work-stories{background:var(--blue);color:#fff;padding:90px 0;border-block:4px solid var(--ink)}.work-stories .section-label{color:#fff}
.story{display:grid;grid-template-columns:.8fr 1.2fr;gap:60px;align-items:center;margin:80px 0 100px}.story.reverse{grid-template-columns:1.2fr .8fr}.story.reverse .story-copy{order:2}
.story-copy,.mini-gallery{min-width:0}
.story-copy h3{font-size:clamp(32px,4vw,50px);margin:16px 0 22px}.story-copy p{color:#fff}.story-copy .button{margin-top:8px;color:var(--ink)}
.badge{display:grid;place-items:center;width:76px;height:76px;background:var(--c);color:var(--ink);font:800 36px var(--display);clip-path:var(--s);margin-bottom:18px}
.b-pink{--c:var(--pink);--s:var(--flower)}.b-mint{--c:var(--mint);--s:var(--star)}.b-yellow{--c:var(--yellow);--s:var(--house)}
.work-stories .eyebrow{background:var(--paper);color:var(--ink)}
.mini-gallery[data-project=dearly]{--w:var(--pink)}.mini-gallery[data-project=syncra]{--w:var(--mint)}.mini-gallery[data-project=playyard]{--w:var(--yellow)}
.playground-invite{background:var(--yellow);color:var(--ink);border:3px solid var(--ink);box-shadow:8px 8px 0 var(--ink);padding:30px;display:flex;gap:26px;align-items:center;flex-wrap:wrap}.playground-invite h3{margin-bottom:8px}.playground-invite p{margin:0;color:var(--ink)}.playground-invite .button{margin-left:auto}

/* ---------- project carousels: every screen fills its card ---------- */
.carousel{--card-h:420px;--wide-w:88%;min-width:0}
.mini-gallery .carousel{--wide-w:94%}
.carousel-track{position:relative;display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;padding:4px 14px 16px 4px;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.carousel-track::-webkit-scrollbar{display:none}
.slide{position:relative;flex:none;margin:0;scroll-snap-align:start;aspect-ratio:var(--ar);background:var(--w,var(--yellow));color:var(--ink);border:3px solid var(--ink);border-radius:22px;box-shadow:6px 6px 0 var(--ink);overflow:hidden;min-width:0}
.slide.phone{height:var(--card-h)}.slide.wide{width:var(--wide-w)}
.image-button{position:absolute;inset:0;display:block;width:100%;height:100%;padding:0;text-align:left;overflow:hidden}
.slide img{width:100%;height:100%;object-fit:cover;object-position:top center;transition:transform .35s ease}
.slide.wide img{object-position:top left}
@media(hover:hover){.slide:hover img{transform:scale(1.03)}}
.zoom{position:absolute;right:10px;bottom:10px;width:38px;height:38px;border-radius:12px;background:var(--ink);color:var(--paper);display:none;place-items:center;border:2px solid var(--paper);opacity:0;transition:opacity .2s}
@media(hover:hover){.zoom{display:grid}.slide:hover .zoom,.image-button:focus-visible .zoom{opacity:1}}
.carousel-controls{display:flex;align-items:center;gap:10px;margin-top:8px}
.carousel-controls .position{margin-right:auto;font-size:15px;font-weight:700;letter-spacing:.04em}
.carousel-controls button{width:46px;height:46px;display:grid;place-items:center;background:var(--paper);color:var(--ink);border:3px solid var(--ink);border-radius:14px;box-shadow:3px 3px 0 var(--ink)}.carousel-controls button:active:not(:disabled){transform:translate(3px,3px);box-shadow:none}
.carousel.single .carousel-controls button{display:none}

/* ---------- life, experience, Q&A ---------- */
.life-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}.life-photos{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:start;padding:0 4% 0 5%}.life-photos figure{margin:0}.life-photos figure:last-child{margin-top:70px}
.life-photos figcaption{margin-top:26px;font-weight:700;font-size:15px}
.experience{display:grid;grid-template-columns:.8fr 1.2fr;gap:60px;margin-top:90px}.experience p{display:grid;grid-template-columns:1fr 1.2fr .9fr;gap:16px;align-items:center;border:3px solid var(--ink);padding:16px 20px;margin:0 0 -3px;background:var(--paper);color:var(--ink)}.experience p:nth-child(odd){background:var(--yellow)}.experience b{font-size:18px}.experience small{text-align:right;font-weight:600;font-size:13px}
.qa details{border:3px solid var(--ink);margin-bottom:16px;background:var(--paper);box-shadow:6px 6px 0 var(--ink)}.qa details[open]{background:var(--pink)}
summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px 26px;font:700 22px/1.2 var(--display);letter-spacing:-.02em}summary::-webkit-details-marker{display:none}summary>span{display:grid;place-items:center;width:34px;height:34px;background:var(--ink);color:var(--paper);flex:none;transition:transform .2s}details[open] summary>span{transform:rotate(45deg)}.qa details p{padding:0 26px 24px;margin:0;max-width:720px}

/* ---------- contact cards ---------- */
.contact-band{background:var(--pink);padding:90px 5%;border-block:4px solid var(--ink)}.contact-band>*{max-width:1000px;margin-inline:auto}.contact-band h2{font-size:clamp(38px,7vw,100px);margin:20px auto 40px}
.contact-band>p{font-weight:600;margin-top:34px}
.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.tile{display:flex;align-items:center;gap:16px;min-height:104px;padding:18px 20px;background:var(--paper);border:3px solid var(--ink);border-radius:22px;box-shadow:7px 7px 0 var(--ink);text-align:left;transition:transform .12s,box-shadow .12s}
.tile:hover{transform:translate(4px,4px);box-shadow:3px 3px 0 var(--ink)}
.tile .ic{flex:none;display:grid;place-items:center;width:56px;height:56px;border:3px solid var(--ink);border-radius:16px;background:var(--c,var(--yellow));color:var(--ink)}
.tile .ic svg{width:26px;height:26px}.tile .ic b{font:800 22px/1 var(--display)}
.tile .tx{display:flex;flex-direction:column;justify-content:center;gap:4px;min-width:0}
.tile strong{display:block;font:800 22px/1.1 var(--display);letter-spacing:-.02em}
.tile em{display:block;font-style:normal;font-size:15px;line-height:1.3;font-weight:600;overflow-wrap:anywhere}
.t-wa{--c:var(--mint)}.t-em{--c:var(--yellow)}.t-in{--c:#aab3ff}.t-x{--c:var(--paper)}

/* ---------- game ---------- */
.game-section{padding-block:100px;display:grid;grid-template-columns:.9fr 1.1fr;gap:70px;align-items:center}.game-intro p{max-width:380px}
.game-tiles{display:flex;gap:10px;margin-top:30px}.game-tiles b{display:grid;place-items:center;width:64px;height:76px;background:var(--yellow);border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);font:800 34px var(--display);transform:rotate(-6deg)}.game-tiles b:nth-child(2){background:var(--pink);transform:rotate(4deg) translateY(8px)}.game-tiles b:nth-child(3){background:var(--mint);transform:rotate(-3deg)}
.game-intro,.game-card{min-width:0}
.game-card{background:var(--blue);color:#fff;border:3px solid var(--ink);padding:32px;box-shadow:10px 10px 0 var(--ink)}.game-card.success{background:#14a874}
.game-top{display:flex;justify-content:space-between;gap:10px;font-weight:700;padding-bottom:16px;border-bottom:3px solid #fff5;margin-bottom:20px}.game-top strong{background:var(--yellow);color:var(--ink);padding:2px 12px;white-space:nowrap}
.game-card select,#answer{width:100%;border:3px solid var(--ink);background:var(--paper);color:var(--ink);padding:10px 12px;font-size:16px;min-height:48px}.category-label,#answer-form label{display:block;font-weight:700;font-size:14px;margin-bottom:6px}
.question-meta{display:flex;justify-content:space-between;margin-top:24px;font-weight:600;font-size:14px}.game-card h3{font-size:clamp(21px,3vw,26px);line-height:1.2;min-height:80px;margin:12px 0 20px}
#letter-bank{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}#letter-bank button{background:var(--yellow);color:var(--ink);border:3px solid var(--ink);border-bottom-width:6px;width:44px;height:50px;font:800 20px var(--display)}#letter-bank button:disabled{opacity:.25}
#answer{font:800 22px var(--display);text-transform:uppercase;letter-spacing:4px}.game-actions{display:flex;gap:10px 18px;align-items:center;margin-top:16px;flex-wrap:wrap}.game-card .button{color:var(--ink);background:var(--yellow)}
.game-actions>button:not(.button),.game-bottom button{color:#fff;font-weight:600;text-decoration:underline;text-underline-offset:4px;min-height:44px;padding:0 4px}#feedback{min-height:56px;margin:20px 0}.game-bottom{display:flex;justify-content:space-between;gap:6px 14px;flex-wrap:wrap;border-top:3px solid #fff5;padding-top:10px}

/* ---------- footer ---------- */
footer{background:var(--ink);color:var(--paper);padding:50px 5% max(36px,env(safe-area-inset-bottom));display:flex;justify-content:space-between;gap:26px;align-items:center;flex-wrap:wrap}footer .brand i{border-color:var(--paper)}footer a:not(.brand){font-weight:600;text-decoration:underline;text-underline-offset:4px;padding:6px 0}footer small{flex-basis:100%;opacity:.7}.foot-links{display:flex;gap:6px 22px;flex-wrap:wrap}

/* ---------- playground ---------- */
.playground-hero{background:var(--pink);box-shadow:0 0 0 100vmax var(--pink);clip-path:inset(0 -100vmax);padding:40px 0 80px}.playground-hero h1{font-size:clamp(46px,9vw,130px);line-height:.92;letter-spacing:-.05em;margin:0 0 34px}.play-intro{display:flex;gap:20px 50px;flex-wrap:wrap}.play-intro p{max-width:430px;margin:0;font-weight:600}
.gallery-area{padding-block:50px 90px}.filter-panel{display:flex;justify-content:space-between;gap:24px;align-items:end;flex-wrap:wrap}.filters{display:flex;gap:12px;flex-wrap:wrap}
.filters button{border:3px solid var(--ink);padding:8px 16px;min-height:44px;font-weight:700;background:var(--paper);box-shadow:3px 3px 0 var(--ink);white-space:nowrap}.filters button[aria-pressed=true]{background:var(--ink);color:var(--paper);box-shadow:none;transform:translate(3px,3px)}
.search-label{display:flex;flex-direction:column;gap:4px;font-weight:700;font-size:14px;min-width:240px}.search-label input{border:3px solid var(--ink);padding:9px 12px;min-height:48px;background:var(--paper);width:100%;font-size:16px}
.gallery-meta{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 20px;margin:30px 0 10px;font-weight:600;font-size:14px}
.gallery-project{padding:50px 0 50px}.project-heading{display:grid;grid-template-columns:1fr 1.1fr;gap:60px;margin-bottom:30px}.project-heading>div{min-width:0}.project-heading h2{font-size:clamp(36px,5vw,64px);margin:14px 0 8px}.project-role{font-weight:600}.project-heading a{font-weight:700;text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:5px}
.gallery-project:nth-child(4n+1){--w:var(--yellow)}.gallery-project:nth-child(4n+2){--w:var(--pink)}.gallery-project:nth-child(4n+3){--w:var(--mint)}.gallery-project:nth-child(4n+4){--w:#aab3ff}
.gallery-project .carousel{--card-h:480px;--wide-w:46%}
#empty-state{padding:50px 0;text-align:center;font-weight:700}

/* ---------- full-size viewer ---------- */
dialog{padding:0;border:3px solid var(--ink);box-shadow:10px 10px 0 var(--ink);background:var(--paper);color:var(--ink);width:min(1120px,96vw);height:min(94dvh,960px);max-height:94dvh;overflow:hidden;margin:auto}dialog[open]{display:flex;flex-direction:column}dialog::backdrop{background:#19162bd9}
.viewer-toolbar,.viewer-controls{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--yellow);flex:none}.viewer-toolbar{border-bottom:3px solid var(--ink)}.viewer-controls{justify-content:space-between;border-top:3px solid var(--ink)}.viewer-toolbar strong{margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.viewer-toolbar button,.viewer-controls button{border:3px solid var(--ink);background:var(--paper);padding:5px 14px;min-height:44px;font-weight:700;white-space:nowrap}
.viewer-body{flex:1 1 auto;min-height:0;overflow:auto;background:#e8e6f5;-webkit-overflow-scrolling:touch}.viewer-body img{width:100%;height:auto;max-width:none;margin-inline:auto}.viewer-body.fit img{height:100%;width:auto;max-width:100%;object-fit:contain}

/* ---------- tablet ---------- */
@media(max-width:900px){
 .hero-layout,.intro-grid,.story,.story.reverse,.life-grid,.experience,.game-section,.project-heading{grid-template-columns:1fr;gap:40px}
 .story.reverse .story-copy{order:0}.capability-list{grid-template-columns:1fr;gap:34px;margin-top:60px}
 .story{margin:60px 0 70px}.work-stories{padding:70px 0}
 .carousel{--card-h:460px}.gallery-project .carousel{--card-h:460px;--wide-w:80%}
 .photo-scene{width:min(380px,100%)}
}
/* ---------- phones ---------- */
@media(max-width:700px){
 body{font-size:16px}
 .site-header{flex-direction:column;align-items:stretch;gap:10px;padding:14px 5% 12px;padding-top:max(14px,env(safe-area-inset-top))}
 .brand{font-size:28px}
 .nav-row{justify-content:space-between;gap:10px;border-top:3px solid var(--ink);padding-top:8px}
 nav{gap:16px}nav a{font-size:15px;padding:10px 0}
 .say-hi{padding:0 18px;min-height:42px;font-size:15px}
 .hero{padding:22px 0 56px}.hero-layout{gap:0}.hero-copy{display:contents}.hello{order:1;font-size:18px;margin-bottom:12px}.hero h1{order:2}.photo-scene{order:3;margin:30px auto 8px}.hero-description{order:4;margin:26px 0 20px}.hero-actions{order:5}.status{order:6}
 .hero-actions{flex-direction:column;align-items:stretch;gap:6px}.hero-actions .button{width:100%}.hero-actions .text-link{text-align:center}
 .status{margin-top:20px}
 .photo-scene{width:min(300px,86%);padding:0 3% 0 5%}
 .photo-caption{margin:26px 0 10px}.thumbs{gap:9px}.thumb{width:50px;height:50px;border-radius:12px}
 .ticker{font-size:20px;padding:14px 0}.ticker span{gap:20px;padding-right:20px}
 .note-band{padding:40px 6%}
 .section-label{margin-bottom:24px;font-size:15px}
 .meet,.about-life,.qa,.game-section{padding-block:56px}
 h2{margin-bottom:22px}
 .lead{font-size:20px}
 .card>div,.card:nth-child(2)>div{padding:28px 24px 32px}.card:nth-child(2)>div{padding-top:42px}
 .work-stories{padding:56px 0}.story{margin:44px 0 56px;gap:28px}.badge{width:64px;height:64px;font-size:30px}
 .carousel{--card-h:min(430px,112vw)}.gallery-project .carousel{--card-h:min(430px,112vw);--wide-w:90%}
 .carousel-track{gap:14px}.slide{border-radius:18px;box-shadow:5px 5px 0 var(--ink)}
 .playground-invite{padding:22px;box-shadow:6px 6px 0 var(--ink)}.playground-invite .button{margin-left:0;width:100%}
 .life-grid{gap:34px}.life-photos{gap:26px;padding:0 3% 0 4%}.life-photos figure:last-child{margin-top:36px}.life-photos figcaption{margin-top:20px;font-size:14px}
 .experience{gap:24px;margin-top:56px}.experience p{grid-template-columns:1fr;gap:2px;padding:14px 16px}.experience small{text-align:left}
 summary{padding:16px 18px;font-size:18px;gap:14px}.qa details p{padding:0 18px 20px}.qa details{box-shadow:4px 4px 0 var(--ink)}
 .contact-band{padding:60px 6%}.contact-band h2{margin:16px auto 28px}.contact-band>p{margin-top:28px}
 .tiles{grid-template-columns:minmax(0,1fr);gap:18px}.tile{min-height:92px;padding:16px;gap:14px;box-shadow:5px 5px 0 var(--ink)}.tile .ic{width:52px;height:52px}.tile strong{font-size:20px}.tile em{font-size:14px}
 .game-card{padding:20px;box-shadow:6px 6px 0 var(--ink)}.game-section{gap:36px}.game-tiles b{width:54px;height:64px;font-size:28px}
 .game-actions .button{flex:1 1 100%}
 #letter-bank button{width:42px;height:48px}
 footer{padding-top:40px;flex-direction:column;align-items:flex-start;gap:20px}.foot-links{gap:4px 20px}
 .playground-hero{padding:28px 0 56px}.playground-hero h1{margin-bottom:24px}.play-intro{gap:14px}
 .gallery-area{padding-block:36px 60px}
 .filter-panel{flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:18px}.filter-panel>*{min-width:0;max-width:100%}
 .filters{flex-wrap:nowrap;overflow-x:auto;margin-inline:-5%;padding:2px 5% 8px;scrollbar-width:none;scroll-snap-type:x proximity}.filters::-webkit-scrollbar{display:none}.filters button{flex:none;scroll-snap-align:start}
 .search-label{min-width:0}
 .gallery-meta{margin-top:22px}.gallery-project{padding:34px 0 30px}.project-heading{gap:14px;margin-bottom:22px}
 dialog{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:0;box-shadow:none}
 .viewer-toolbar,.viewer-controls{padding:8px 10px;gap:8px}.viewer-toolbar button,.viewer-controls button{padding:4px 10px;font-size:14px}
 #viewer-count{font-size:14px;font-weight:700}
}
@media(max-width:380px){
 nav{gap:12px}nav a{font-size:14px}.say-hi{padding:0 14px;font-size:14px}
 .brand{font-size:26px}
 .hero h1{font-size:44px}
 .photo-scene{width:min(280px,88%)}
}
.welcome{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px;background:#19162bd9}
.welcome-card{position:relative;max-height:calc(100dvh - 40px);overflow:auto;width:min(440px,100%);background:var(--yellow);color:var(--ink);border:3px solid var(--ink);border-radius:26px;box-shadow:8px 8px 0 var(--ink);padding:36px 28px 28px;text-align:center;animation:rise .35s ease-out}
.welcome-card .frame{width:min(170px,46%);margin:0 auto 26px}.frame.tall{aspect-ratio:4/5}.frame.tall img{object-position:50% 12%;border-radius:22%;box-shadow:6px 6px 0 var(--ink)}.welcome-card .eyebrow{margin-bottom:14px}
.welcome-card .eyebrow{margin-bottom:16px}.welcome-card h2{font-size:clamp(26px,6.4vw,34px);line-height:1.12;margin:0 0 24px;letter-spacing:-.03em}
.welcome-card .button{width:100%}
@keyframes rise{from{transform:translateY(24px);opacity:0}}
.qr-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:32px 6%;background:var(--yellow);text-align:center}
.qr-page h1{font-size:clamp(38px,9vw,64px)}.qr-card{display:block;background:#fff;padding:14px;border:3px solid var(--ink);border-radius:24px;box-shadow:8px 8px 0 var(--ink);-webkit-touch-callout:default}.qr-card img{width:min(300px,72vw);height:auto;border-radius:10px}
.qr-card,.qr-card img{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.link-sheet{position:fixed;inset:0;z-index:100;display:flex;align-items:flex-end;justify-content:center;padding:16px;background:#19162bd9}.link-sheet[hidden]{display:none}
.link-sheet-card{width:min(460px,100%);display:flex;flex-direction:column;gap:12px;align-items:stretch;text-align:center;background:var(--paper);border:3px solid var(--ink);border-radius:24px;box-shadow:8px 8px 0 var(--ink);padding:26px 22px 18px;margin-bottom:max(0px,env(safe-area-inset-bottom));animation:rise .3s ease-out}
.link-sheet-card .eyebrow{align-self:center}.link-sheet-card h2{font-size:28px;margin:0}
.ls-url{display:block;padding:14px;background:var(--yellow);border:3px solid var(--ink);border-radius:14px;font-weight:800;font-size:16px;line-height:1.3;overflow-wrap:anywhere;text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:3px}
.ls-close{min-height:44px;font-weight:700;text-decoration:underline;text-underline-offset:4px}
.qr-hint{max-width:340px;margin:0;font-weight:600}
@media(max-width:340px){.nav-row{gap:8px}nav{gap:9px}nav a{font-size:13px}.say-hi{padding:0 11px;font-size:13px;min-height:40px}.brand{font-size:24px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
