/* Distinct destination layouts, sharing the original portfolio styling. */
.visiting .destination-caret,.visiting .enter-cue{display:none}
.visiting .travel{grid-template-columns:minmax(0,.3fr) minmax(0,.7fr);gap:40px;padding:35px 5vw 60px;max-width:1440px}.visiting .board-stage{align-self:start;position:sticky;top:70px}.visiting .travel #key-scene{height:340px;margin-top:105px}.visiting .spell-nav{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:8px 20px;left:0;right:0;top:24px;height:auto}.visiting .spell-nav button{position:relative;left:auto!important;top:auto!important;transform:none!important;opacity:1!important;font-size:14px;color:#69746e}.visiting .spell-nav button[aria-current]{color:#173f3c;text-decoration:underline;text-underline-offset:7px}.visiting .word-idle{animation:none}.visiting .story{align-self:start;padding:20px 0;max-height:none;overflow:visible;width:100%;max-width:850px}.story .back{display:inline-block;margin-bottom:40px;font-size:12px;color:#69746e}.story h1{font-size:clamp(40px,4.4vw,64px);margin-bottom:20px;font-weight:500}.story .lead{font-size:17px;max-width:44ch;color:#58665f;margin-bottom:36px}.story h2{font-weight:500;font-size:25px;letter-spacing:-.025em;margin:0 0 16px}.story p{font-size:14px;line-height:1.85}.career article{display:grid;grid-template-columns:1fr 1.45fr;gap:30px;border-top:1px solid #dce1d9;padding:32px 0}.career .field{font-size:12px;color:#58665f;margin-bottom:10px}.story .stack{font-size:11px;color:#58665f;margin-bottom:0}.project-art{min-height:255px;padding:32px 38px;background:#e4eeea;color:#234940;display:flex;flex-direction:column;align-items:flex-start;justify-content:center}.project-art>span{font-size:clamp(29px,3.5vw,46px);line-height:1.13;letter-spacing:-.035em}.project-art>span:nth-child(2){margin-left:36px;color:#527b70}.project-art>span:nth-child(3){margin-left:72px}.project-art small{font-size:11px;margin-top:28px}.project-description{padding:28px 0;max-width:62ch}.project-description .text-link{display:inline-block;margin-top:22px;font-size:13px}.personal{display:grid;grid-template-columns:1.5fr 1fr;gap:34px}.personal-photo{margin:0;padding-top:8px;transform:rotate(3deg)}.personal-photo img{width:100%;height:260px;object-fit:cover}.personal-photo figcaption{font-family:Newsreader,serif;font-style:italic;font-size:18px;margin-top:12px;color:#58665f}.off-clock{margin-top:28px;padding-top:27px;border-top:1px solid #dce1d9;display:grid;grid-template-columns:1fr 1.25fr;gap:30px}.off-clock h2{font-size:22px}.contact{display:flex;gap:25px;margin-top:22px;font-size:13px}.collection-hero{margin:0}.collection-hero img{width:100%;height:290px;object-fit:cover}.collection-hero figcaption{font-size:12px;color:#58665f;margin:14px 0 26px}.collection{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.collection img{width:100%;height:135px;object-fit:cover}::selection{background:#cee5dd;color:#173f3c}a:focus-visible,button:focus-visible{outline-color:#367c70}a:hover{color:#367c70}
@media(max-width:800px){.visiting .travel{display:flex;flex-direction:column;padding:10px 24px 45px;gap:0}.visiting .board-stage{position:relative;top:auto;height:110px}.visiting .travel #key-scene{display:none}.visiting .spell-nav{top:10px;gap:8px 22px}.visiting .story{padding:0}.story .back{margin-bottom:26px}.story h1{font-size:42px}.personal{gap:22px;grid-template-columns:1.4fr 1fr}.personal-photo img{height:210px}.career article{gap:20px;grid-template-columns:1fr 1.4fr}.collection-hero img{height:235px}.collection img{height:100px}}
@media(max-width:480px){header{padding-left:16px;padding-right:16px}.personal{display:flex;flex-direction:column}.personal-photo{width:180px;align-self:flex-end;margin:0 8px 25px}.off-clock{display:block}.career article{display:block}.career h2{margin-bottom:12px}.collection{grid-template-columns:1fr 1fr}.collection img{height:125px}.collection img:last-child{grid-column:1/-1;height:200px}}

/* Quiet editorial typography; the keyboard remains the visual centerpiece. */
.story h1 {
  font-size: clamp(1.5rem, 2.2vw, 1.875rem);
  font-weight: 500;
  letter-spacing: -.02em;
  line-height: 1.3;
  text-wrap: balance;
  margin-bottom: 16px;
}
.story h2 { font-size: 1.125rem; letter-spacing: -.02em; line-height: 1.3; }
.story p { font-size: 1rem; line-height: 1.75; max-width: 62ch; color: #4e5c55; }
.story .lead { font-size: 1rem; line-height: 1.75; max-width: 48ch; margin-bottom: 48px; }
.story .personal-intro h1 {
  font-family: Newsreader, Georgia, serif;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(2.5rem, 3.5vw, 3rem);
  letter-spacing: -.025em;
}
.story .field, .story .stack { font-size: .8125rem; line-height: 1.6; color: #58665f; }
.story .field { margin-bottom: 12px; }
.story .stack { margin-top: 18px; }
.story .back, .story .contact, .story .text-link { font-size: .875rem; }
.story .contact a, .story .text-link {
  border-bottom: 0;
  text-decoration: underline;
  text-decoration-color: #a1afa6;
  text-decoration-thickness: 1px;
  text-underline-offset: 5px;
}
.story .contact a:hover, .story .text-link:hover { text-decoration-color: currentColor; }
.story .personal-photo figcaption { font-size: 1.0625rem; line-height: 1.4; }
.story .collection-hero figcaption { font-size: .875rem; line-height: 1.6; }

/* One hierarchy across destinations: title, item name, prose, supporting detail. */
.story h1, .story h2 { color: #23362e; }
.story h2 { margin-bottom: 12px; }
.story .career article { padding: 34px 0; }
.story .career article:first-child { border-top: 0; padding-top: 0; }
.story .career .field { margin-bottom: 10px; }
.story .career .stack { margin-top: 14px; }
.story .project-art { min-height: 210px; padding: 30px; }
.story .project-art > span { font-size: clamp(1.5rem, 2.6vw, 2rem); line-height: 1.25; letter-spacing: -.02em; }
.story .project-art small { font-size: .8125rem; line-height: 1.6; }
.story .project-description { padding-top: 0; }
.story .off-clock { margin-top: 40px; padding-top: 32px; }
.story .collection-hero figcaption { margin-top: 16px; margin-bottom: 32px; }
@media (max-width:480px) {
  .story .lead { margin-bottom: 36px; }
  .story .career article { padding: 28px 0; }
  .story .off-clock { margin-top: 24px; }
}

/* Featured project: the real product leads, with a short story underneath. */
.story .featured-project { margin-top: 40px; }
.story .project-intro h2 { font-size: 1.375rem; margin-bottom: 8px; }
.story .project-intro .lead { margin-bottom: 28px; }
.story .app-preview { margin: 0 0 32px; }
.story .app-preview a { display: block; }
.story .app-preview img { display: block; width: 100%; height: auto; border: 1px solid #dce1d9; border-radius: 6px; }
.story .app-preview figcaption { margin-top: 12px; font-size: .8125rem; line-height: 1.6; color: #58665f; }
.story .project-notes { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; margin-bottom: 24px; }
.story .project-notes h3 { font-size: 1rem; font-weight: 500; letter-spacing: -.01em; color: #23362e; margin: 0 0 12px; }
.story .project-notes p { margin-bottom: 0; }
.story .project-notes .stack { margin-top: 16px; }
@media (max-width:600px) { .story .project-notes { grid-template-columns: 1fr; gap: 24px; } .story .featured-project { margin-top: 32px; } }

/* Sticky positioning isolates blending; provide the same paper behind the iframe. */
.visiting .board-stage { background: #f5f4ef; }

/* Me: one personal note, with the portrait supporting the introduction. */
.story .personal-note { max-width: 520px; }
.story .me-portrait {
  display: block;
  width: 64px;
  height: 64px;
  object-fit: cover;
  object-position: center 35%;
  border-radius: 4px;
  margin: 0 0 26px;
}
.story .personal-note h1 { margin: 0 0 10px; }
.story .personal-note p { margin: 0 0 24px; max-width: none; font-weight: 500; }
.story .personal-note .lead { margin-bottom: 32px; font-weight: 600; color: #23362e; }
.story .personal-note .me-location { display: block; font-weight: 500; color: #68736c; }
.story .personal-note p:last-child { margin-bottom: 0; }
.story .personal-note .contact { margin-top: 30px; gap: 24px; flex-wrap: wrap; }
.story .personal-note .contact a { color: #367c70; }
@media (max-width:480px) {
  .story .me-portrait { width: 56px; height: 56px; margin-bottom: 22px; }
}

/* The keyboard and destination words keep their positions through a layout change. */
.travel, .travel #key-scene { transition: none; }
.travel #key-scene { transform-origin: 0 0; }
.spell-nav button { transition: color 150ms ease, opacity 150ms ease; }
.section-key { display: inline-flex; align-items: center; justify-content: center; min-width: 19px; height: 21px; padding: 0 4px; border: 1px solid #c6cec7; border-radius: 4px; background: #f5f4ef; color: #58665f; font-family: inherit; font-size: 11px; font-weight: 400; line-height: 1; box-shadow: 0 1px 1px #23362e12; }
.spell-nav .section-key { margin-left: 7px; vertical-align: 1px; }
.story .back { display: inline-flex; align-items: center; gap: 8px; min-height: 32px; text-decoration: none; }
.story .back .section-key { width: auto; flex-shrink: 0; padding-inline: 6px; margin-left: 4px; }
.story .back:hover .section-key, .spell-nav button:hover .section-key, .spell-nav button[aria-current] .section-key { border-color: #7b9385; color: #23362e; }
.story .back:active .section-key, .spell-nav button:active .section-key { transform: translateY(1px); box-shadow: none; }

.spell-nav button > span { display: inline-flex; align-items: center; justify-content: center; }
.visiting .spell-nav button { width: auto !important; }
.travel #key-scene { background: #f5f4ef; }
/* Magnetic motion belongs to the label; the pointer target stays still. */
.spell-nav button:hover { transform: none; }

/* A brief light sweep through the bio links, with a soft expansion. */
.story .bio-link { display: inline-block; position: relative; max-width: 100%; color: var(--bio-ink); font-weight: 600; text-decoration: none; transform-origin: center; transition: transform 320ms cubic-bezier(.2,.8,.25,1.25); }
.story .bio-link-code { --bio-ink: #35b900; }
.story .bio-link-design { --bio-ink: #a020f0; }
.story .bio-link-keyboards { --bio-ink: #006bff; }
@keyframes bio-light-pass {
 from { background-position: 100% 0; }
 to { background-position: 0% 0; }
}
@media (hover: hover) and (pointer: fine) {
 .story .bio-link:hover {
  transform: scale(1.035);
  background-image: linear-gradient(105deg,var(--bio-ink) 35%,#4d9490 43%,#b99562 49%,#9c718f 55%,var(--bio-ink) 64%);
  background-size: 300% 100%;
  background-repeat: no-repeat;
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: bio-light-pass 720ms cubic-bezier(.25,.1,.25,1) both;
 }
}
.story .bio-link:focus-visible { text-decoration: underline; text-underline-offset: 4px; }
.story .bio-link:active { transform: scale(.98); transition-duration: 90ms; }
@media (prefers-reduced-motion: reduce) {
 .story .bio-link { transition: none; }
 .story .bio-link:hover, .story .bio-link:active { transform: none; animation: none; background-image: none; -webkit-text-fill-color: currentColor; }
 .story .bio-link:hover { text-decoration: underline; text-underline-offset: 4px; }
}

/* Shared Lucide icons: one weight and scale across links and controls. */
.ui-icon{display:inline-block;width:1em;height:1em;flex-shrink:0;vertical-align:-.125em;}
.story .back .ui-icon{width:14px;height:14px;}
.set-close{display:grid;place-items:center;}
.enter-cue .ui-icon{display:block;}

/* Compact work entries with a single, brief gesture from each company mark. */
.story .career{margin-top:26px}
.story .career article{grid-template-columns:minmax(155px,.85fr) minmax(0,1.5fr);gap:24px;padding:20px 0;align-items:baseline}
.story .career article:first-child{padding-top:0}
.story .career h2{font-size:16px;line-height:1.6;margin:0}
.story .career .field{font-size:12px;line-height:1.5;margin:4px 0 0 20px}
.story .career p:not(.field){font-size:14px;line-height:1.6;margin:0}
.company-link{display:inline-flex;align-items:center;gap:8px;color:inherit;transition:color .18s;text-decoration:none}
.company-icon{display:block;flex:none;width:12px;height:12px;object-fit:contain;border-radius:1px}
.experience-crowdvolt{--company-color:#8c12da}
.experience-biproxi{--company-color:#665336}
.experience-officespace{--company-color:#007c91}
.company-link:hover,.company-link:focus-visible{color:var(--company-color)}
@keyframes company-bolt{0%,100%{transform:rotate(0)}30%{transform:rotate(-13deg) translateY(-2px)}65%{transform:rotate(7deg)}}
@keyframes company-rise{0%,100%{transform:translateY(0)}45%{transform:translateY(-4px)}}
@keyframes company-tilt{0%,100%{transform:rotate(0)}40%{transform:rotate(-9deg)}70%{transform:rotate(3deg)}}
@media(hover:hover) and (prefers-reduced-motion:no-preference){
 .experience-crowdvolt:hover .company-icon{animation:company-bolt 420ms ease-out}
 .experience-biproxi:hover .company-icon{animation:company-rise 420ms ease-out}
 .experience-officespace:hover .company-icon{animation:company-tilt 420ms ease-out}
}
@media(prefers-reduced-motion:no-preference){
 .experience-crowdvolt .company-link:focus-visible .company-icon{animation:company-bolt 420ms ease-out}
 .experience-biproxi .company-link:focus-visible .company-icon{animation:company-rise 420ms ease-out}
 .experience-officespace .company-link:focus-visible .company-icon{animation:company-tilt 420ms ease-out}
}
@media(max-width:480px){
 .story .career article{display:grid;grid-template-columns:1fr;gap:8px;padding:18px 0}
 .story .career article>p{padding-left:20px}
}

.story .career .company-heading .experience-dates{font-size:12px;line-height:1.5;color:#58665f;margin:4px 0 0 20px;font-variant-numeric:tabular-nums}

/* Work leads with the experience list; other sections keep their composition. */
@media(min-width:801px){
 .viewing-work .travel{grid-template-columns:minmax(0,.68fr) minmax(0,.32fr);gap:40px}
 .viewing-work .story{grid-column:1;grid-row:1}
 .viewing-work .board-stage{grid-column:2;grid-row:1}
 .viewing-work .travel #key-scene{height:280px;margin-top:80px}
 .viewing-work .spell-nav{gap:4px 10px}
 .viewing-work .spell-nav button{font-size:13px}
}

/* Projects uses a wide showcase; Keyboards opens into a full-width gallery. */
@media(min-width:801px){
 .viewing-projects .travel{grid-template-columns:minmax(0,.7fr) minmax(0,.3fr);gap:40px}
 .viewing-projects .story{grid-column:1;grid-row:1}
 .viewing-projects .board-stage{grid-column:2;grid-row:1}
 .viewing-projects .travel #key-scene{height:260px;margin-top:90px}
 .viewing-projects .spell-nav{gap:4px 8px}
 .viewing-projects .spell-nav button{font-size:13px}
 .viewing-projects .story .featured-project{margin-top:28px}
 .viewing-keyboards .travel{grid-template-columns:minmax(0,.6fr) minmax(0,.4fr);gap:32px}
 .viewing-keyboards .story{grid-column:1/-1;grid-row:1;max-width:none;min-width:0}
 .viewing-keyboards .board-stage{grid-column:2;grid-row:1;position:relative;top:auto;z-index:2;align-self:start}
 .viewing-keyboards .travel #key-scene{height:180px;margin-top:64px}
 .viewing-keyboards .spell-nav{gap:4px 10px}
 .viewing-keyboards .spell-nav button{font-size:13px}
 .viewing-keyboards .story>h1,.viewing-keyboards .story>.lead{max-width:56%}
 .viewing-keyboards .story>.lead{min-height:100px;margin-bottom:28px}
 .viewing-keyboards .collection-hero img{height:clamp(300px,36vw,460px);object-position:center}
 .viewing-keyboards .collection img{height:clamp(160px,20vw,250px)}
}

/* Roomier, stationary hit targets; only the inner label responds to the mouse. */
.visiting .spell-nav{gap:0 2px}
.visiting .spell-nav button{min-height:48px;min-width:48px;padding:12px 10px;font-size:14px}
.spell-nav button .word-idle{pointer-events:none}

/* Photo-first collection: navigation occupies its own compact row. */
.viewing-keyboards .travel{display:flex;flex-direction:column;gap:0;width:100%;max-width:1120px;padding:24px 5vw 72px}
.viewing-keyboards .board-stage{position:relative;inset:auto;order:0;align-self:stretch;height:48px;margin-bottom:12px;background:transparent}
.viewing-keyboards .travel #key-scene{display:none}
.viewing-keyboards .spell-nav{position:static;justify-content:flex-end;height:auto}
.viewing-keyboards .story{order:1;max-width:none;padding:0;width:100%}
.viewing-keyboards .story>.back{margin-bottom:22px}
.viewing-keyboards .story>h1{font-size:28px;max-width:none;margin-bottom:32px}
.keyboard-gallery{display:grid;grid-template-columns:1fr 1fr;gap:40px 32px;align-items:start}
.keyboard-gallery .keyboard-photo{margin:0;min-width:0}
.keyboard-gallery .keyboard-photo:nth-child(even){padding-top:72px}
.keyboard-gallery a{display:block;overflow:hidden;aspect-ratio:4/5;cursor:zoom-in;background:#eeede7}
.keyboard-gallery .keyboard-photo:nth-child(3) a{aspect-ratio:1/1}
.keyboard-gallery .keyboard-photo:nth-child(4) a{aspect-ratio:5/4}
.keyboard-gallery img{--photo-zoom:1.08;display:block;width:100%;height:100%;object-fit:cover;transform:scale(var(--photo-zoom));transition:transform 250ms ease}
/* These two originals include white framing; crop it outside the rounded tile. */
.keyboard-gallery img[src$="keyboard-black-watermelon.jpg"],
.keyboard-gallery img[src$="keyboard-red-anime.jpg"]{--photo-zoom:1.3}
.keyboard-gallery a:hover img{transform:scale(calc(var(--photo-zoom) + .03))}
.keyboard-gallery figcaption{font-size:12px;color:#58665f;margin-top:12px}
.keyboard-lightbox{border:0;padding:56px 20px 20px;background:#f5f4ef;color:#23362e;max-width:94vw;max-height:94svh;overflow:auto}
.keyboard-lightbox::backdrop{background:rgba(22,30,27,.72)}
.keyboard-lightbox img{display:block;max-width:85vw;max-height:75svh;width:auto;height:auto;object-fit:contain;margin:auto}
.keyboard-lightbox p{font-size:12px;margin:12px 0 0;text-align:center}
.photo-close{position:absolute;right:12px;top:8px;min-height:40px;padding:8px 12px;background:none;border:0;cursor:pointer;font:inherit;font-size:13px}
.photo-close span{margin-left:10px;font-size:20px}
/* Clip the fractional-pixel bright edge of the embedded WebGL surface. */
.travel .keyboard-render{clip-path:inset(1px)}
@media(max-width:600px){
 .viewing-keyboards .travel{padding:12px 24px 48px}
 .viewing-keyboards .spell-nav{justify-content:flex-start}
 .keyboard-gallery{grid-template-columns:1fr;gap:28px}
 .keyboard-gallery .keyboard-photo:nth-child(even){padding-top:0}
}
@media(prefers-reduced-motion:reduce){.keyboard-gallery img{transition:none}.keyboard-gallery a:hover img{transform:scale(var(--photo-zoom))}}

/* Let the project story lead; the app preview is supporting evidence. */
.viewing-projects .story .featured-project{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(0,1fr);gap:32px;align-items:start}
.viewing-projects .project-copy{min-width:0}
.viewing-projects .story .project-intro .lead{margin-bottom:16px}
.viewing-projects .story .project-intro>.text-link{display:inline-block;margin:0 0 32px}
.viewing-projects .story .project-notes{display:grid;grid-template-columns:1fr;gap:24px;margin:0}
.viewing-projects .story .project-notes h3{margin-bottom:8px}
.viewing-projects .story .project-copy>.stack{font-size:12px;line-height:1.7;color:#58665f;margin:24px 0 0}
.viewing-projects .story .app-preview{margin:0;padding-top:4px}
.viewing-projects .app-preview a{cursor:zoom-in}
@media(max-width:1100px) and (min-width:801px),(max-width:600px){
 .viewing-projects .story .featured-project{grid-template-columns:1fr;gap:28px}
 .viewing-projects .story .app-preview{max-width:360px;padding:0}
}

/* Desktop study: a phone-sized reading column with compact navigation. */
@media(min-width:801px){
 .visiting .travel{display:flex;flex-direction:column;width:430px;max-width:100%;margin-inline:auto;padding:12px 24px 48px;gap:0}
 .visiting .board-stage{position:relative;inset:auto;width:100%;height:56px;flex:none;order:0}
 .visiting .travel #key-scene{display:none}
 .visiting .spell-nav{position:static;justify-content:space-between;gap:0;height:auto}
 .visiting .spell-nav button{font-size:12px;padding:10px 6px}
 .visiting .story{order:1;padding:0;max-width:none}
 .visiting .story>.back{margin:8px 0 24px}
 .visiting .story>h1{font-size:24px;margin-bottom:24px}
 .visiting .story .featured-project{grid-template-columns:1fr;gap:24px;margin-top:0}
 .visiting .story .project-intro h2{font-size:20px;margin-bottom:8px}
 .visiting .story .project-intro .lead{font-size:14px;line-height:1.65;margin-bottom:12px}
 .visiting .story .project-intro>.text-link{font-size:13px;margin-bottom:24px}
 .visiting .story .project-notes{gap:20px}
 .visiting .story .project-notes h3{font-size:13px;margin-bottom:6px}
 .visiting .story .project-notes p{font-size:13px;line-height:1.75}
 .visiting .story .project-copy>.stack{font-size:11px;margin-top:20px}
 .visiting .story .app-preview{max-width:280px;width:100%;padding:0}
}

/* Adapt each destination to the shared compact desktop column. */
@media(min-width:801px){
 .visiting .story p{font-size:13px;line-height:1.75}
 .visiting .story>.lead{font-size:14px;margin-bottom:28px}
 .visiting .story h2{font-size:18px}
 .visiting .story .career article{display:block;padding:24px 0}
 .visiting .story .career article:first-child{padding-top:0}
 .visiting .story .career article>p{margin:12px 0 0 20px}
 .visiting .story .career .company-heading .experience-dates{font-size:11px}
 .visiting .story .career .field{font-size:12px}
 .visiting .story .personal-note{max-width:none}
 .visiting .story .personal-note h1{font-size:32px;margin-bottom:12px}
 .visiting .story .personal-note .lead{font-size:14px;margin-bottom:24px}
 .visiting .story .personal-note p{margin-bottom:20px}
 .visiting .story .personal-note .contact{font-size:12px;gap:20px;margin-top:24px}
 .visiting .story .personal-note .portrait-ink{width:48px;height:48px}
 .visiting .story .personal-note .personal-intro>h1,
 .visiting .story .personal-note .personal-intro>.lead{padding-right:68px}
 .viewing-keyboards .board-stage{margin-bottom:0}
 .viewing-keyboards .story>h1{max-width:none}
 .viewing-keyboards .keyboard-gallery{grid-template-columns:1fr;gap:28px}
 .viewing-keyboards .keyboard-gallery .keyboard-photo:nth-child(even){padding-top:0}
 .viewing-keyboards .keyboard-gallery figcaption{font-size:11px;margin-top:10px}
}

/* Sheet on the desk: a section rises over the keyboard, which stays behind it, pushed back and softened. */
@media(min-width:801px){
 .visiting .travel{display:block;position:relative;flex:1;width:100%;max-width:none;margin:0;padding:0;min-height:0;overflow:hidden}
 .visiting .board-stage{position:absolute;inset:0;width:auto;height:auto;background:transparent;z-index:auto}
 /* Match the home canvas size: navigation must not resize the iframe and reproject its camera. */
 .visiting .travel #key-scene{display:block;position:absolute;left:0;right:0;top:-24px;width:calc(min(1440px,100vw) - 64px);height:max(520px,calc(100svh - 260px));margin:0 auto;opacity:.55;filter:blur(1.6px);pointer-events:none;transition:none}
 .visiting .board-stage::after{content:"";position:absolute;inset:0;background:radial-gradient(70% 60% at 50% 30%,rgba(245,244,239,0) 0,rgba(245,244,239,.6) 70%,#f5f4ef 100%);pointer-events:none}
 .visiting .story{position:absolute;left:50%;top:150px;bottom:0;width:560px;translate:-50% 0;margin:0;padding:64px 32px 40px;max-width:none;overflow:auto;overscroll-behavior:contain;background:#fbfaf6;border:1px solid #e3e4dc;border-bottom:0;border-radius:14px 14px 0 0;box-shadow:0 22px 56px rgba(23,33,41,.12),0 2px 6px rgba(23,33,41,.05);z-index:1}
 .visiting .spell-nav{position:absolute;left:50%;top:151px;translate:-50% 0;width:558px;height:auto;display:flex;justify-content:flex-start;gap:0 2px;padding:12px 22px 6px;background:#fbfaf6;border-radius:14px 14px 0 0;z-index:3}
 .visiting .spell-nav button{font-size:14px;padding:8px 10px;min-height:40px;min-width:0}
 .visiting .story>.back{position:sticky;top:0;float:right;z-index:4;margin:-52px -8px 0 12px;padding:6px 8px;background:#fbfaf6;font-size:11px;font-weight:400}
 .visiting .story>h1{font-size:30px;letter-spacing:-.03em;margin-bottom:8px}
 .visiting .story>.lead{font-size:17px;line-height:1.55;margin-bottom:20px}
 .visiting .story p{font-size:15.5px;line-height:1.65}
 .visiting .story h2{font-size:19px}
 .visiting .story .career{margin-top:22px}
 .visiting .story .career article{padding:18px 0;border-top:1px solid #dce1d9}
 .visiting .story .career article:first-child{border-top:0;padding-top:0}
 .visiting .story .career article:last-child{border-bottom:1px solid #dce1d9}
 .visiting .story .career h2{font-size:19px}
 .visiting .story .career article>p{margin:8px 0 0 0;font-size:15.5px}
 .visiting .story .career .company-heading .experience-dates,.visiting .story .career .field{font-size:13.5px;margin-left:0}
 .visiting .story .career .company-heading{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;align-items:baseline}
 .visiting .story .career .company-heading h2{grid-column:1/-1}
 .visiting .story .career .company-heading .experience-dates{margin:0}
 .visiting .story .career .company-heading .field{margin:0}
 .company-icon{width:16px;height:16px;border-radius:3px}
 .visiting .story .project-intro h2{font-size:22px}
 .visiting .story .project-intro .lead{font-size:17px;line-height:1.55;margin-bottom:12px}
 .visiting .story .project-intro>.text-link{font-size:14px;margin-bottom:22px}
 .visiting .story .project-notes h3{font-size:14px;font-weight:700;margin-bottom:4px}
 .visiting .story .project-notes p{font-size:15.5px;line-height:1.65}
 .visiting .story .project-copy>.stack{font-size:13.5px;margin-top:18px}
 .visiting .story .app-preview{max-width:none;margin-top:20px}
 .visiting .story .app-preview a{display:block;max-height:180px;overflow:hidden;border:1px solid #dce1d9;border-radius:6px;box-shadow:0 8px 24px rgba(23,33,41,.06);cursor:zoom-in}
 .visiting .story .app-preview img{border:0;border-radius:0}
 .visiting .story .personal-note h1{font-size:30px}
 .visiting .story .personal-note .lead{font-size:17px}
 .visiting .story .personal-note p{font-size:15.5px}
 .visiting .story .personal-note .contact{font-size:14px}
 /* Clear the sticky Back control, which shares the portrait's right-hand column. */
 .visiting .story .personal-note .portrait-ink{top:44px;width:32px;height:32px}
 .visiting .story .personal-note .personal-intro>h1,
 .visiting .story .personal-note .personal-intro>.lead{padding-right:88px}
 .viewing-keyboards .story>.lead,.visiting .story>.lead{min-height:0;max-width:none}
 .visiting .keyboard-gallery{grid-template-columns:1fr 1fr;gap:18px 16px;margin-top:4px}
 .visiting .keyboard-gallery .keyboard-photo a{aspect-ratio:4/3;border-radius:6px}
 .visiting .keyboard-gallery figcaption{font-size:13px;margin-top:7px}
}
@media(min-width:801px) and (prefers-reduced-motion:reduce){.visiting .travel #key-scene{filter:none}}

/* A conversational contact line, with emphasis reserved for its destinations. */
.story .personal-note .contact-note,.visiting .story .personal-note .contact-note{position:relative;margin:40px 0 0;padding-top:22px;border:0;font-size:13px;line-height:1.7;font-weight:400;color:#68736c}
.story .personal-note .contact-note a{font-weight:700;color:#234940;text-decoration:none;border:0}
.story .personal-note .contact-note a:hover{color:#367c70}
.story .personal-note .contact-note a:focus-visible{outline:2px solid #367c70;outline-offset:3px;border-radius:2px}

/* Keep the profile picture deliberately small at every viewport. */
.story .personal-note .portrait-ink{width:32px;height:32px}

/* Portrait signature sits in normal flow below the contact sentence. */
.story .personal-note .portrait-ink,
.visiting .story .personal-note .portrait-ink{position:relative;top:auto;right:auto;width:32px;height:32px;margin:18px 0 0 auto}
.story .personal-note .personal-intro>h1,
.story .personal-note .personal-intro>.lead,
.visiting .story .personal-note .personal-intro>h1,
.visiting .story .personal-note .personal-intro>.lead{padding-right:0}

/* Keep route headings for assistive navigation without repeating the visible tabs. */
.story>h1.section-title,.visiting .story>h1.section-title{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.story .personal-note .personal-intro{padding-top:18px}
.story .personal-note .personal-intro>p:not(.lead){font-weight:400}
.greeting-note{position:relative;width:fit-content;max-width:100%;margin-bottom:36px}
.story .personal-note .greeting-note h1,.visiting .story .personal-note .greeting-note h1{margin:0}
.greeting-trigger{position:relative;font:inherit;letter-spacing:inherit;color:inherit;background:none;border:0;padding:0;cursor:default;text-decoration:none}
.greeting-trigger::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:1px;background:radial-gradient(circle,#a8ada8 .7px,transparent .9px) left center/7px 1px repeat-x;pointer-events:none}
.greeting-period{display:inline-block;transform-origin:50% 75%;color:#89968d}
.greeting-trigger:hover .greeting-period,.greeting-trigger:focus-visible .greeting-period{animation:greeting-coin 650ms cubic-bezier(.16,1,.3,1)}
@keyframes greeting-coin{0%{transform:rotateY(0)}100%{transform:rotateY(360deg)}}
.greeting-popover{position:absolute;left:0;top:100%;z-index:6;width:218px;max-width:calc(100vw - 64px);padding:15px 17px;background:#fafaf6;border-radius:8px;box-shadow:0 5px 18px rgba(40,47,41,.1);opacity:0;visibility:hidden;transform:translateY(-5px) scale(.98);transform-origin:top left;transition:opacity 120ms ease,transform 120ms ease,visibility 0s 120ms;pointer-events:none}
.greeting-note:has(.greeting-trigger[aria-expanded="true"]) .greeting-popover{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition:opacity 180ms ease,transform 220ms cubic-bezier(.16,1,.3,1),visibility 0s}
.story .personal-note .greeting-popover p,.visiting .story .personal-note .greeting-popover p{font-size:13px;line-height:1.5;font-weight:500;margin:0 0 5px;color:#23362e}
.story .greeting-popover a{font-size:12px;line-height:1.6;color:#58665f;text-decoration:underline;text-underline-offset:3px}
@media(prefers-reduced-motion:reduce){.greeting-popover,.greeting-note:has(.greeting-trigger[aria-expanded="true"]) .greeting-popover{transition:none;transform:none}}
@media(prefers-reduced-motion:reduce){.greeting-trigger{transition:none}.greeting-trigger .greeting-period{animation:none}}
@media(min-width:801px){
 /* One content starting line beneath the shared navigation row. */
 .visiting .story{padding-top:82px}
 .visiting .story .personal-intro{padding-top:0}
 .visiting .story .featured-project,
 .visiting .story .keyboard-gallery,
 .visiting .story>.lead{margin-top:0}
 .viewing-work .story>.lead{padding-right:0}
 .visiting .story>.back{position:absolute;top:16px;right:24px;float:none;margin:0}
 .visiting .spell-nav{background:transparent;padding-right:120px;pointer-events:none}
 .visiting .spell-nav button{pointer-events:auto}
}
