@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,500;0,600;1,500&display=swap');
:root{--paper:#f4f0e6;--ink:#292d25;--accent:#c34b2e}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:5px}header{position:absolute;top:0;left:0;width:100%;z-index:15;padding:28px 4vw;display:flex;justify-content:space-between;align-items:start;color:white;text-shadow:0 1px 8px #0009}.brand{font-weight:700;font-size:18px;letter-spacing:-.7px}.brand span{display:block;font-size:9px;letter-spacing:2px;margin-top:7px}nav{display:flex;gap:25px;font-size:12px}nav button{border:0;background:transparent;color:inherit;padding:0;text-shadow:inherit}aside{position:fixed;top:80px;right:25px;z-index:30;background:var(--paper);padding:25px;max-width:350px;box-shadow:0 20px 80px #0003;font-size:13px;line-height:1.6}aside button{background:transparent;border:1px solid;padding:8px 14px}.chapter{height:250svh;position:relative}.stage{height:100svh;position:sticky;top:0;overflow:hidden}.kitchen{height:210svh}.kitchen-frame{position:absolute;inset:0;transform-origin:50% 48%;will-change:transform;border-radius:0;overflow:hidden;background:#322a21}.kitchen-frame video{width:100%;height:100%;object-fit:cover}.opening-title{position:absolute;left:6vw;top:22%;color:white;text-shadow:0 3px 35px #0007;pointer-events:none}.opening-title p{font-size:10px;letter-spacing:2px}.opening-title h1{font-family:'Playfair Display',serif;font-size:clamp(70px,10vw,160px);font-weight:500;line-height:.94;letter-spacing:-6px;margin:28px 0}.opening-title h1 span{font-family:Arial;font-size:20px;vertical-align:top;letter-spacing:0}.scene-caption{position:absolute;bottom:40px;left:4vw;color:white;font-size:10px;letter-spacing:2px}.scroll-cue{position:absolute;bottom:36px;right:4vw;color:white;font-size:10px;letter-spacing:2px}.scroll-cue span{font-size:23px;margin-left:20px}.films-title{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;opacity:0;pointer-events:none}.films-title p{font-size:10px;letter-spacing:2px}.films-title h2{font-family:'Playfair Display';font-size:clamp(100px,18vw,260px);font-weight:500;margin:0;letter-spacing:-10px}.film-heading{position:absolute;left:6vw;top:15%;width:36%;z-index:2}.film-heading>span{font-size:11px;letter-spacing:2px}.film-heading h2{font-family:'Playfair Display';font-size:clamp(42px,6vw,94px);font-weight:500;line-height:1.02;letter-spacing:-3px;margin:28px 0}.film-heading p{font-size:14px;line-height:1.7;max-width:280px}.object{position:absolute;top:50%;left:65%;transform:translate(-50%,-50%);will-change:transform;z-index:3}.book{display:flex;width:min(46vw,650px);height:min(31vw,430px);filter:drop-shadow(0 25px 25px #54391d35);perspective:900px}.book-page{width:50%;background:linear-gradient(90deg,#e6d2a7,#f6e5be 85%,#c7ae86);border:1px solid #bd9d6e;border-radius:8px 0 0 8px;padding:8%;position:relative;transform:rotate(-5deg);transform-origin:right center;color:#716046}.book-page.right{background:linear-gradient(90deg,#c7ae86,#f6e5be 15%,#ecd7ad);border-radius:0 8px 8px 0;transform:rotate(5deg);transform-origin:left center}.book-page>span{font-size:12px;letter-spacing:3px}.book-page i{display:block;font:italic clamp(14px,2.2vw,31px)/1.3 'Playfair Display';margin:10px 0}.writing{height:45%;margin-top:15px;background:repeating-linear-gradient(0deg,transparent 0 12px,#8b765947 13px 14px);transform:skew(-8deg)}.book-page small{position:absolute;bottom:20px;font-size:7px;letter-spacing:1px}.pastry{width:min(48vw,680px);text-align:center}.pastry svg{width:100%;overflow:visible}.pastry small{font-size:8px;letter-spacing:2px;opacity:.5}.object-hint{position:absolute;bottom:45px;left:50%;transform:translateX(-50%);font-size:10px;letter-spacing:2px}.film-screen{position:absolute;inset:0;background:#141810;opacity:0;clip-path:inset(28% 28% round 18px);pointer-events:none;z-index:4}.film-screen iframe,.film-screen>div:first-child{width:100%;height:100%;border:0}.film-fallback{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;background:#141810}.film-fallback img{width:100%;height:100%;object-fit:cover;opacity:.7}.start-preview{position:absolute;z-index:2;border:1px solid #fff8;background:#0007;color:white;padding:15px 25px;border-radius:30px}.film-caption{position:absolute;bottom:5vh;left:5vw;right:5vw;z-index:6;display:flex;justify-content:space-between;align-items:end;color:white;opacity:0;pointer-events:none;text-shadow:0 2px 12px #000}.film-caption small{font-size:9px;letter-spacing:2px}.film-caption h3{font-family:'Playfair Display';font-weight:500;font-size:clamp(30px,4vw,60px);margin:8px 0}.film-actions{display:flex;gap:10px;align-items:center}.film-actions a,.film-actions button{border:1px solid #ffffff80;border-radius:40px;padding:12px 20px;background:#0005;font-size:12px;color:white}.film-actions button:disabled{opacity:.4}#francois{background:#e8e9df}#people{padding:110px 0 0;overflow:hidden}.people-heading{padding:0 6vw 50px;display:flex;justify-content:space-between;align-items:end}.people-heading p{font-size:10px;letter-spacing:2px}.people-heading h2{font-family:'Playfair Display';font-size:clamp(55px,7vw,110px);font-weight:500;letter-spacing:-4px;line-height:1;margin:20px 0}.arrows{display:flex;gap:10px}.arrows button{border:1px solid #292d2540;background:transparent;border-radius:50%;width:56px;height:56px;font-size:22px}.arrows button:hover{background:var(--ink);color:var(--paper)}.portraits{display:flex;gap:35px;overflow-x:auto;padding:0 6vw 40px;scroll-snap-type:x mandatory;scrollbar-width:thin}.person{flex:0 0 27vw;min-width:260px;scroll-snap-align:center;background:transparent;border:0;text-align:left;padding:0}.portrait{height:370px;display:flex;align-items:end;justify-content:center;border-bottom:1px solid #292d2530;overflow:hidden}.portrait img{height:100%;width:100%;object-fit:contain;object-position:bottom;transition:transform .35s}.person:hover img{transform:translateY(-8px) rotate(-2deg)}.person h3{font-family:'Playfair Display';font-size:31px;font-weight:500;margin:23px 0 10px}.person p{font-size:13px;line-height:1.7;max-width:300px;margin:0}.person span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:2px;margin:20px 0}.draft-end{margin-top:70px;padding:35px 6vw;border-top:1px solid #292d2525;display:flex;align-items:center;justify-content:space-between;font-size:11px}.draft-end p{opacity:.55}dialog{width:min(850px,92vw);background:var(--paper);color:var(--ink);border:0;padding:50px}dialog::backdrop{background:#141810b3;backdrop-filter:blur(8px)}.close{position:absolute;right:18px;top:12px;border:0;background:transparent;font-size:32px}#profileContent{display:grid;grid-template-columns:1fr 1.2fr;gap:35px}#profileContent img{width:100%;height:350px;object-fit:contain}#profileContent h2{font-family:'Playfair Display';font-size:42px;font-weight:500;line-height:1.1}#profileContent p{font-size:14px;line-height:1.7}#profileContent a{display:inline-block;border-bottom:1px solid;padding-bottom:7px;margin-top:15px}
@media(max-width:700px){header{padding:20px}.brand{font-size:14px}nav{gap:14px;font-size:10px}.opening-title{top:30%;left:7vw}.opening-title h1{letter-spacing:-3px}.opening-title p{font-size:8px}.film-heading{top:10%;width:86%}.film-heading h2{font-size:45px;line-height:1;margin:20px 0}.film-heading p{font-size:12px}.object{left:50%;top:63%}.book{width:80vw;height:54vw}.book-page i{font-size:22px}.pastry{width:86vw}.film-caption{flex-direction:column;align-items:start;gap:15px;bottom:6vh}.film-actions a,.film-actions button{padding:10px 14px}.people-heading{align-items:center}.people-heading h2{font-size:54px;letter-spacing:-2px}.arrows button{width:42px;height:42px}.person{flex-basis:76vw}.portrait{height:340px}.draft-end{gap:20px;flex-wrap:wrap}.draft-end p{order:3;width:100%}#profileContent{grid-template-columns:1fr;gap:0}#profileContent img{height:230px}dialog{padding:30px}.scene-caption{font-size:8px}.films-title h2{letter-spacing:-5px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.chapter,.kitchen{height:100svh}.stage{position:relative}.opening-title{opacity:1!important}.films-title{display:none}.object{display:none}.film-heading{display:none}.film-screen{opacity:1!important;clip-path:none!important;pointer-events:auto!important}.film-caption{opacity:1!important;pointer-events:auto!important}.object-hint{display:none}.kitchen-frame{transform:none!important}.portrait img{transition:none}}

[hidden]{display:none!important}

.kitchen{height:260svh}.film-screen{pointer-events:none!important}.film-screen iframe{position:absolute;top:50%;left:50%;width:max(100vw,177.78svh);height:max(100svh,56.25vw);transform:translate(-50%,-50%)}

/* Keep the cooking scene full size; let its final screen scroll away naturally. */
.kitchen{height:210svh}.kitchen .stage{height:100%;position:relative;overflow:clip}.kitchen-frame{height:100svh;position:sticky;top:0;transform:none!important;border-radius:0!important}
.opening-title{top:30svh}.scene-caption,.scroll-cue{top:calc(100svh - 60px);bottom:auto}
.film-heading{top:10%}.editorial-caption{position:absolute;z-index:7;bottom:8vh;left:8vw;right:8vw;text-align:center;color:#fff;opacity:0;pointer-events:none;font:400 clamp(13px,1.3vw,18px)/1.55 'DM Sans',sans-serif;letter-spacing:.2px;text-shadow:-1px -1px 1px #0009,1px -1px 1px #0009,-1px 1px 1px #0009,1px 1px 1px #0009}.editorial-caption span{display:block}.editorial-caption .caption-name{font-size:11px;letter-spacing:2px;text-transform:uppercase;margin-bottom:8px}
@media(prefers-reduced-motion:reduce){.kitchen{height:100svh}.kitchen-frame{position:absolute}.editorial-caption{opacity:1}}

/* Pin the full-size video inside its viewport, then release it into Gwen. */
.kitchen .stage{height:100svh;position:sticky;top:0;overflow:hidden}.kitchen-frame{position:absolute;inset:0;height:100%;width:100%;transform:none!important;border-radius:0!important}
@media(prefers-reduced-motion:reduce){.kitchen .stage{position:relative}}

/* Consistent, centered portrait cards. */
.person{flex:0 0 320px;min-width:0;text-align:center;align-self:stretch;display:flex;flex-direction:column;align-items:center}
.portrait{width:100%;height:370px;flex:none;position:relative}
.portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 15%}
.person h3{min-height:76px;display:flex;align-items:center;justify-content:center;margin:18px 0 8px;font-size:29px}
.person p{margin:0 auto;max-width:290px;min-height:110px}
.person span{margin-top:auto;padding-top:20px}
.person[data-person="james-london"] .portrait img{width:155%;max-width:none;height:155%;position:absolute;top:-5%;left:-27.5%;object-position:50% 0}
.person[data-person="eric"] .portrait img{object-position:60% 20%}
.person[data-person="james-avery"] .portrait img{object-position:48% 0}
@media(max-width:700px){.person{flex-basis:280px}.portrait{height:340px}}
.person[data-person="eric"] .portrait img{position:absolute;width:110%;height:110%;max-width:none;left:-5%;top:-5%;object-position:60% 20%}

.person[data-person="raphael"] .portrait img{position:absolute;width:180%;height:180%;max-width:none;left:-40%;top:-34%;object-position:50% 0}

.editorial-page header{color:var(--ink);text-shadow:none;position:relative}.editorial-page .page-main{min-height:70vh;padding:85px 8vw 110px}.eyebrow{font-size:10px;letter-spacing:2px}.page-main h1,.newsletter-block h2{font-family:'Playfair Display',serif;font-weight:500;letter-spacing:-4px;font-size:clamp(60px,8vw,116px);line-height:1.04;margin:25px 0 45px}.page-copy{max-width:660px;font-size:16px;line-height:1.85}.page-copy .lead{font-size:23px;line-height:1.6}.text-link{display:inline-block;border-bottom:1px solid;padding:10px 0;margin-top:20px}.contact-email{display:inline-block;font-size:clamp(19px,3vw,31px);border-bottom:1px solid;margin-top:30px}.newsletter-block{margin:100px 6vw 0;padding:70px 0 90px;border-top:1px solid #292d2530}.newsletter-block h2{margin:20px 0;font-size:clamp(60px,8vw,105px)}.newsletter-block>p:not(.eyebrow){font-size:16px;line-height:1.7}.newsletter-form{max-width:650px;margin-top:35px}.email-row{display:flex;border-bottom:1px solid var(--ink);gap:20px}.email-row input{width:100%;min-width:0;background:transparent;border:0;padding:20px 0;color:var(--ink);font:inherit;border-radius:0}.email-row button{border:0;background:transparent;white-space:nowrap;font-size:13px;padding:15px 0}.signup-status{font-size:12px;opacity:.65;min-height:24px}.site-footer{padding:35px 6vw;display:flex;gap:30px;align-items:center;border-top:1px solid #292d2530;font-size:11px}.site-footer span{margin-right:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.editorial-caption{background:none;text-shadow:-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000}.dialogue-caption{position:absolute;z-index:8;bottom:10vh;left:12vw;right:12vw;text-align:center;color:white;background:none;font:400 clamp(14px,1.4vw,20px)/1.5 'DM Sans',sans-serif;text-shadow:-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000;pointer-events:none}
@media(max-width:700px){header{flex-wrap:wrap;gap:22px}nav{flex-wrap:wrap;gap:16px}.page-main h1{letter-spacing:-2px}.editorial-page .page-main{padding:55px 7vw 75px}.page-copy .lead{font-size:20px}.site-footer{flex-wrap:wrap;gap:20px}.site-footer span{width:100%}.newsletter-block{padding-top:50px}}

.film-screen .native-preview{width:100%;height:100%;object-fit:cover;display:block}.audio-toggle{position:absolute;right:4vw;bottom:4vh;z-index:10;background:transparent;border:1px solid #ffffff60;border-radius:30px;color:white;padding:9px 14px;font:400 11px 'DM Sans',sans-serif;text-shadow:0 1px 3px #000;opacity:0;pointer-events:none}.audio-toggle:hover{background:#ffffff15}.film:has(.native-preview) .film-screen{pointer-events:none!important}

/* Keep the requested scroll-driven kitchen animation active. */
@media(prefers-reduced-motion:reduce){.kitchen{height:210svh}.kitchen .stage{position:sticky;top:0}.kitchen-frame{position:absolute}}

.preview-controls{position:absolute;right:4vw;bottom:4vh;z-index:10;display:flex;gap:8px;opacity:0;pointer-events:none}.preview-controls .audio-toggle,.captions-toggle{position:static;opacity:1;pointer-events:auto;background:transparent;border:1px solid #ffffff60;border-radius:30px;color:white;padding:9px 14px;font:400 11px 'DM Sans',sans-serif;text-shadow:0 1px 3px #000}.preview-controls button:hover{background:#ffffff15}
header,.editorial-page header{position:fixed;top:0;left:0;right:0;z-index:50;background:rgba(28,30,26,.74);backdrop-filter:blur(14px);color:#fff;text-shadow:none;padding:18px 4vw;align-items:center}
.editorial-page .page-main{padding-top:150px}
@media(max-width:700px){header,.editorial-page header{padding:14px 5vw;gap:12px}.editorial-page .page-main{padding-top:160px}}

.page-copy .reveal-word{transition:color 100ms linear}.page-copy h2{font:500 34px/1.2 "Playfair Display",serif;letter-spacing:-.8px;margin:55px 0 25px}.page-copy h2:first-child{margin-top:0}
header,.editorial-page header{top:12px;left:3vw;right:3vw;width:auto;padding:11px 18px;background:rgba(244,240,230,.72);color:var(--ink);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.3);border-radius:12px;box-shadow:0 3px 18px #00000008;gap:20px}
header .brand{font-size:14px;letter-spacing:-.4px}header .brand span{font-size:7px;letter-spacing:1.5px;margin-top:4px}header nav{gap:22px;font-size:11px}
@media(max-width:700px){header,.editorial-page header{top:8px;left:12px;right:12px;padding:10px 13px;gap:10px}header nav{gap:13px;font-size:10px}header .brand{font-size:12px}}

#newsletter-popup{width:min(490px,calc(100vw - 36px));padding:48px 36px 30px;border:1px solid #292d2520;border-radius:16px;box-shadow:0 24px 100px #0003}#newsletter-popup::backdrop{background:#14181066;backdrop-filter:blur(4px)}#newsletter-popup h2{font:500 clamp(44px,7vw,64px)/1.1 'Playfair Display',serif;letter-spacing:-2px;margin:20px 0}#newsletter-popup>p:not(.eyebrow){font-size:14px;line-height:1.7;max-width:340px}#newsletter-popup .newsletter-form{margin-top:22px}#newsletter-popup .email-row{gap:12px}#newsletter-popup .email-row input{font-size:14px}#newsletter-popup .newsletter-skip{border:0;background:none;padding:8px 0;font-size:12px;opacity:.7}#newsletter-popup .close{font-size:26px;line-height:1;padding:8px;top:8px;right:10px}

.substack-signup{display:block;width:100%;max-width:650px;height:320px;border:0;background:white;margin-top:25px;border-radius:8px}#newsletter-popup .substack-signup{height:310px;margin-top:18px}#newsletter-popup{max-height:calc(100svh - 32px);overflow:auto}

@media(max-width:767px){.kitchen-frame video{object-position:71% 50%}}

.service-dish{width:min(49vw,720px);filter:drop-shadow(0 24px 28px #292d2520)}.service-dish img{display:block;width:100%;height:auto;border-radius:12px}.service-film .object{transform-origin:center}@media(max-width:700px){.service-dish{width:86vw}}

.service-dish img{border-radius:0;animation:service-dish-float 5s ease-in-out infinite}@keyframes service-dish-float{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-9px) rotate(1deg)}}@media(prefers-reduced-motion:reduce){.service-dish img{animation:none}}

/* A close grouping of plates expands with the same film transition. */
.service-line{width:100vw;left:50%;top:63%;display:flex;align-items:center;justify-content:center;gap:0}
.service-line .service-plate{flex:0 0 40%;min-width:0;position:relative}
.service-line .service-plate+.service-plate{margin-left:-10%}
.service-line .plate-risotto{transform:rotate(-3deg);z-index:1}
.service-line .plate-chicken{transform:translateY(18px);z-index:3}
.service-line .plate-lobster{transform:rotate(3deg);z-index:2}
.service-line img{display:block;width:100%;height:auto;animation:none}
.service-film .film-heading{width:70%;top:11%}
@media(max-width:700px){
 .service-line{width:108vw;top:64%}
 .service-line .service-plate{flex-basis:44%}
 .service-line .service-plate+.service-plate{margin-left:-16%}
 .service-line .plate-chicken{transform:translateY(12px)}
 .service-film .film-heading{width:86%}
}

/* Larger triangular composition keeps each dish legible on a phone. */
.service-line{width:min(62vw,920px);height:min(43vw,620px);left:66%;top:55%;display:block}
.service-line .service-plate{position:absolute;width:64%;margin:0!important}
.service-line .plate-risotto{left:0;top:0;transform:rotate(-3deg);z-index:1}
.service-line .plate-lobster{right:0;top:-8%;transform:rotate(3deg);z-index:2}
.service-line .plate-chicken{left:18%;top:40%;transform:none;z-index:3}
.service-film .film-heading{width:36%;top:15%}
@media(max-width:700px){
 .service-line{width:98vw;height:76vw;left:50%;top:66%}
 .service-line .service-plate{width:72%}
 .service-line .plate-risotto{left:-5%;top:0}
 .service-line .plate-lobster{right:-5%;top:-7%}
 .service-line .plate-chicken{left:14%;top:40%;transform:none}
 .service-film .film-heading{width:86%;top:10%}
}

#kitchenFrames{display:none;width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
@media(max-width:767px){.kitchen-frame video{display:none}#kitchenFrames{display:block}}

.preview-controls .audio-toggle{width:38px;height:38px;padding:8px;border:0;border-radius:50%;display:grid;place-items:center}
.audio-toggle svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 2px #0008)}

.preview-controls .captions-toggle{width:38px;height:38px;border:0;border-radius:4px;padding:7px;font-size:12px;font-weight:600;letter-spacing:-.3px;position:relative;opacity:.65}
.preview-controls .captions-toggle.is-on{opacity:1}
.captions-toggle.is-on:after{content:'';position:absolute;bottom:4px;left:10px;right:10px;height:2px;background:white;border-radius:2px}

.dialogue-caption{font-family:Georgia,'Times New Roman',serif;font-size:clamp(20px,1.7vw,27px);font-weight:400;line-height:1.4;text-shadow:0 1px 3px #0009,0 0 1px #000b;left:16vw;right:16vw;bottom:11vh;text-wrap:balance}
@media(max-width:767px){.dialogue-caption{font-size:21px;left:7vw;right:7vw;bottom:12vh}}
