/* TSUCHI FEST — shared site styles, built to match the live design tokens */
@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@500;700;800;900&family=Manrope:wght@400;500;700&display=swap');

:root{
  --radius:.25rem;
  --ink:oklch(19% .012 130);
  --paper:oklch(96.8% .014 95);
  --leaf:oklch(63% .135 158);
  --leaf-deep:oklch(36% .075 158);
  --citrus:oklch(90% .166 105);
  --clay:oklch(55% .06 65);
  --mist:oklch(92% .012 150);
  --border:oklch(87% .016 120);
  --font-sans:"Manrope",ui-sans-serif,system-ui,sans-serif;
  --font-display:"Archivo",ui-sans-serif,system-ui,sans-serif;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;scroll-padding-top:6rem;}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;line-height:1.6;}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.03em;font-weight:800;line-height:1.02;margin:0;}
.wrap{max-width:1200px;margin:0 auto;padding:0 24px;}
.wrap-narrow{max-width:860px;margin:0 auto;padding:0 24px;}

/* nav */
.site-nav{position:sticky;top:0;z-index:50;background:oklch(96.8% .014 95/.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);}
.site-nav .row{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;max-width:1200px;margin:0 auto;gap:16px;}
.brand{display:flex;align-items:center;gap:12px;font-family:var(--font-display);font-weight:900;}
.brand img{width:40px;height:40px;object-fit:contain;}
.brand .t{font-size:.8rem;line-height:1.1;}
.brand .t small{display:block;font-weight:500;font-size:.62rem;letter-spacing:.08em;color:var(--clay);text-transform:uppercase;}
.nav-links{display:flex;gap:26px;flex-wrap:wrap;font-size:.85rem;font-weight:600;}
.nav-links a{opacity:.75;transition:opacity .15s;}
.nav-links a:hover,.nav-links a.active{opacity:1;color:var(--leaf-deep);}
.nav-actions{display:flex;align-items:center;gap:14px;}
.lang-toggle{display:flex;border:1px solid var(--border);border-radius:999px;overflow:hidden;font-size:.72rem;font-weight:700;}
.lang-toggle button{padding:5px 12px;border:0;background:transparent;cursor:pointer;color:var(--ink);opacity:.5;font-family:var(--font-sans);}
.lang-toggle button.active{background:var(--ink);color:var(--paper);opacity:1;}
@media (max-width:860px){.nav-links{display:none;}}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:999px;padding:.9rem 1.7rem;font-weight:700;font-size:.92rem;letter-spacing:-.01em;transition:transform .2s,background-color .2s,filter .2s;cursor:pointer;border:1px solid transparent;}
.btn-primary{background:var(--ink);color:var(--paper);}
.btn-primary:hover{background:var(--leaf-deep);transform:translateY(-2px);}
.btn-citrus{background:var(--citrus);color:var(--ink);}
.btn-citrus:hover{filter:brightness(1.06);transform:translateY(-2px);}
.btn-outline{border-color:oklch(19% .012 130/.25);background:transparent;color:var(--ink);}
.btn-outline:hover{background:oklch(19% .012 130/.06);transform:translateY(-2px);}
.btn-ghost-light{color:#fcfcfc;border:1px solid #ffffff8c;backdrop-filter:blur(6px);}
.btn-ghost-light:hover{background:#ffffff26;transform:translateY(-2px);}

/* hero */
.hero{position:relative;min-height:92vh;display:flex;align-items:center;overflow:hidden;}
.hero img.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;}
.hero .scrim{position:absolute;inset:0;background:linear-gradient(180deg,oklch(19% .012 130/.15) 0%,oklch(19% .012 130/.05) 35%,oklch(19% .012 130/.65) 100%);z-index:1;}
.hero .content{position:relative;z-index:2;padding:8rem 0 5rem;text-align:left;}
.hero .eyebrow{color:var(--citrus);text-transform:uppercase;letter-spacing:.22em;font-size:.78rem;font-weight:700;margin-bottom:1.2rem;}
.hero h1{color:#fff;font-size:clamp(3rem,8vw,6.2rem);max-width:16ch;text-align:left;line-height:.98;}
.hero p.lead{color:#fff;opacity:.92;max-width:46ch;font-size:1.2rem;margin-top:1.4rem;text-align:left;}
.hero .meta{color:#fff;opacity:.85;font-size:.85rem;margin-top:.6rem;letter-spacing:.02em;}
.hero .cta-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:2.2rem;}

.hero.light{min-height:auto;padding:0;}
.hero.light .content{padding:5.5rem 0 3.5rem;}

/* sections */
section{padding:5rem 0;}
.section-tight{padding:3rem 0;}
.eyebrow-dark{color:var(--leaf-deep);text-transform:uppercase;letter-spacing:.2em;font-size:.7rem;font-weight:700;margin-bottom:.8rem;}
h2.section-title{font-size:clamp(1.8rem,3.6vw,2.6rem);max-width:18ch;}
.lede{max-width:62ch;font-size:1.02rem;color:oklch(19% .012 130/.85);}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:start;}
@media (max-width:840px){.two-col{grid-template-columns:1fr;}}
.copy p{margin:0 0 1.1rem;font-size:.98rem;color:oklch(19% .012 130/.85);}
.photo-cluster{position:relative;}
.photo-cluster img{border-radius:14px;box-shadow:0 18px 40px -24px oklch(19% .012 130/.4);}
.photo-cluster .a{width:100%;}
.photo-cluster .b{width:70%;margin-top:-2.5rem;margin-left:auto;border:6px solid var(--paper);}

.bg-band{background:var(--mist);}
.bg-ink{background:var(--ink);color:var(--paper);}
.bg-ink h2,.bg-ink h3{color:var(--paper);}
.bg-ink .lede{color:oklch(96.8% .014 95/.75);}

/* guest / chef cards */
.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1.6rem;margin-top:2.2rem;}
.chef-card{text-align:left;position:relative;}
.chef-card img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:12px;margin-bottom:.7rem;}
.chef-card .name{font-weight:700;font-size:.92rem;}
.chef-card .name-ja{font-size:.75rem;color:oklch(19% .012 130/.55);}
.chef-card .country{display:inline-block;font-size:.62rem;letter-spacing:.05em;border:1px solid var(--leaf-deep);color:var(--leaf-deep);border-radius:999px;padding:1px 9px;margin-top:4px;}
.chef-card .role{font-size:.78rem;margin-top:.4rem;color:oklch(19% .012 130/.75);}

/* chef bio popover (hover on desktop, tap on touch) */
.chef-card{cursor:pointer;}
.chef-popover{position:absolute;top:0;left:calc(100% + 14px);width:300px;background:var(--paper);border:1px solid var(--border);border-radius:14px;padding:1.2rem;box-shadow:0 24px 50px -20px oklch(19% .012 130/.5);z-index:30;opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity .18s,transform .18s,visibility .18s;}
.chef-card:hover .chef-popover,.chef-card:focus-within .chef-popover,.chef-card.open .chef-popover{opacity:1;visibility:visible;transform:translateY(0);}
.chef-popover .name{font-weight:800;font-size:1rem;}
.chef-popover .title-line{font-size:.82rem;font-weight:700;color:var(--leaf-deep);margin:.3rem 0 .5rem;}
.chef-popover .bio{font-size:.85rem;line-height:1.55;color:oklch(19% .012 130/.85);margin:0 0 .6rem;}
.chef-popover .specialties{font-size:.76rem;color:var(--clay);}
.chef-popover .close-hint{display:none;}
@media (max-width:1100px){
  .chef-popover{left:0;top:calc(100% + 8px);width:100%;}
}

/* venue */
.venue-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:3rem;align-items:center;}
@media (max-width:840px){.venue-grid{grid-template-columns:1fr;}}
.venue-grid img{border-radius:14px;}

/* programme cards */
.prog-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.6rem;margin-top:2.4rem;}
@media (max-width:760px){.prog-grid{grid-template-columns:1fr;}}
.prog-card{background:oklch(100% 0 0/.04);border:1px solid oklch(100% 0 0/.14);border-radius:16px;padding:2rem;}
.prog-card .tag{font-size:.68rem;letter-spacing:.1em;color:var(--citrus);font-weight:700;text-transform:uppercase;}
.prog-card h3{color:var(--paper);font-size:1.6rem;margin-top:.3rem;}
.prog-card p{color:oklch(96.8% .014 95/.78);font-size:.9rem;margin:.8rem 0 1.2rem;}
.prog-card ul{list-style:none;padding:0;margin:0 0 1.4rem;font-size:.85rem;color:oklch(96.8% .014 95/.85);}
.prog-card li{padding:.4rem 0;border-bottom:1px solid oklch(100% 0 0/.1);}
.prog-card .price-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;}
.prog-card .price{font-family:var(--font-display);font-size:1.9rem;font-weight:900;color:var(--citrus);}

/* footer */
footer{background:var(--ink);color:oklch(96.8% .014 95/.75);padding:3.5rem 0 2rem;font-size:.85rem;}
footer .cols{display:flex;justify-content:space-between;flex-wrap:wrap;gap:2rem;}
footer a{opacity:.85;}
footer a:hover{opacity:1;}

/* lang visibility */
[data-lang]{display:none;}
[data-lang].lang-active{display:block;}
span[data-lang].lang-active{display:inline;}

/* pending / coming-soon banner */
.pending-box{border:1px dashed oklch(19% .012 130/.3);border-radius:14px;padding:2rem;text-align:center;background:oklch(100% 0 0/.5);}
.pending-box .big{font-family:var(--font-display);font-size:1.6rem;font-weight:800;}

.small-note{font-size:.78rem;color:oklch(19% .012 130/.55);margin-top:.6rem;}

/* pre-event date/venue pill */
.event-pill{display:inline-block;margin-top:1rem;background:oklch(90% .166 105/.35);border-radius:999px;padding:.5rem 1.1rem;font-weight:700;font-size:.85rem;color:var(--ink);}

/* photo filmstrip gallery */
.filmstrip{display:flex;gap:1rem;overflow-x:auto;padding-bottom:.5rem;scrollbar-width:thin;}
.filmstrip img{flex:0 0 auto;height:280px;width:auto;border-radius:12px;object-fit:cover;box-shadow:0 14px 30px -18px oklch(19% .012 130/.4);}
.filmstrip img:nth-child(2n){height:220px;align-self:flex-end;}
.filmstrip img:nth-child(3n){height:320px;}
@media (max-width:640px){.filmstrip img{height:200px;}}

.photo-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;}
.photo-grid-2 img{border-radius:14px;width:100%;height:280px;object-fit:cover;}
@media (max-width:640px){.photo-grid-2{grid-template-columns:1fr;}}

/* guest section headline — no awkward wrap, left aligned */
.guests-head h2.section-title{max-width:none;white-space:normal;}
.guests-head{text-align:left;}
.guests-head .lede{max-width:70ch;}

/* next edition — big date/place */
.next-edition-meta{margin-top:1.4rem;}
.next-edition-meta .big-date{font-family:var(--font-display);font-weight:900;font-size:clamp(1.5rem,3vw,2.1rem);color:var(--ink);}
.next-edition-meta .big-place{font-family:var(--font-display);font-weight:900;font-size:clamp(1.9rem,4.4vw,3.2rem);letter-spacing:.02em;color:var(--leaf-deep);margin-top:.2rem;}

/* featured + secondary guest tiles, click-to-open modal */
.guest-featured{display:grid;grid-template-columns:repeat(3,1fr);gap:1.6rem;margin-top:2.2rem;}
.guest-featured .chef-card img{aspect-ratio:4/5;}
.guest-featured .chef-card .name{font-size:1.05rem;}
@media (max-width:840px){.guest-featured{grid-template-columns:1fr 1fr;}}
@media (max-width:520px){.guest-featured{grid-template-columns:1fr;}}

.guest-secondary{display:grid;grid-template-columns:repeat(5,1fr);gap:1.2rem;margin-top:1.6rem;}
.guest-secondary .chef-card img{aspect-ratio:1/1;}
.guest-secondary .chef-card .name{font-size:.82rem;}
@media (max-width:900px){.guest-secondary{grid-template-columns:repeat(3,1fr);}}
@media (max-width:520px){.guest-secondary{grid-template-columns:repeat(2,1fr);}}

.chef-card .view-profile{display:inline-block;margin-top:.5rem;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--leaf-deep);border-bottom:1px solid var(--leaf-deep);}
.chef-card .noimg-placeholder{width:100%;aspect-ratio:1/1;border-radius:12px;margin-bottom:.7rem;background:var(--mist);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:2rem;font-weight:800;color:var(--leaf-deep);}

/* modal */
.profile-modal-backdrop{position:fixed;inset:0;background:oklch(19% .012 130/.72);z-index:100;display:none;align-items:center;justify-content:center;padding:24px;}
.profile-modal-backdrop.open{display:flex;}
.profile-modal{background:var(--paper);border-radius:18px;max-width:920px;width:100%;max-height:88vh;overflow-y:auto;position:relative;box-shadow:0 40px 80px -20px oklch(19% .012 130/.6);display:flex;flex-direction:row;}
.profile-modal .close-btn{position:absolute;top:16px;right:16px;width:38px;height:38px;border-radius:999px;background:var(--ink);color:var(--paper);border:0;font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2;}
.profile-modal .modal-photo{flex:0 0 38%;width:38%;max-width:340px;height:auto;min-height:100%;object-fit:cover;object-position:top center;border-radius:18px 0 0 18px;}
.profile-modal .modal-body{padding:2.2rem;flex:1;min-width:0;}
@media (max-width:720px){
  .profile-modal{flex-direction:column;max-height:92vh;}
  .profile-modal .modal-photo{width:100%;max-width:none;flex:0 0 auto;height:280px;border-radius:18px 18px 0 0;}
}
.profile-modal .modal-country{display:inline-block;font-size:.68rem;letter-spacing:.08em;border:1px solid var(--leaf-deep);color:var(--leaf-deep);border-radius:999px;padding:2px 12px;margin-bottom:.6rem;}
.profile-modal .modal-name{font-family:var(--font-display);font-size:1.7rem;font-weight:900;}
.profile-modal .modal-name-ja{font-size:.9rem;color:oklch(19% .012 130/.55);margin-bottom:.6rem;}
.profile-modal .modal-title{font-weight:700;color:var(--leaf-deep);font-size:.95rem;margin:.4rem 0 1rem;}
.profile-modal .modal-bio{font-size:.98rem;line-height:1.7;margin:0 0 1.2rem;white-space:pre-line;}
.profile-modal .modal-specialties{font-size:.85rem;color:var(--clay);border-top:1px solid var(--border);padding-top:1rem;}

/* 2025 archive strip */
.archive-strip{display:flex;gap:1rem;overflow-x:auto;padding-bottom:.6rem;margin-top:1.6rem;}
.archive-chip{flex:0 0 auto;width:170px;background:oklch(100% 0 0/.6);border:1px solid var(--border);border-radius:12px;padding:.9rem 1.1rem;}
.archive-chip img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:8px;margin-bottom:.6rem;}
.archive-chip .name{font-weight:700;font-size:.85rem;}
.archive-chip .country{display:block;font-size:.68rem;letter-spacing:.05em;color:var(--leaf-deep);margin-top:2px;}
.archive-chip .role{font-size:.72rem;color:oklch(19% .012 130/.6);margin-top:4px;}

/* 2025 photo gallery — horizontal scroll filmstrip */
.gallery-filmstrip{display:flex;gap:1rem;overflow-x:auto;padding-bottom:.6rem;margin-top:1.8rem;scrollbar-width:thin;}
.gallery-filmstrip button.gallery-item{flex:0 0 auto;padding:0;border:0;background:none;cursor:pointer;display:block;border-radius:12px;overflow:hidden;box-shadow:0 14px 30px -18px oklch(19% .012 130/.4);}
.gallery-filmstrip img{height:260px;width:auto;max-width:340px;object-fit:cover;display:block;transition:transform .3s;}
.gallery-filmstrip button.gallery-item:hover img{transform:scale(1.05);}
.gallery-filmstrip button.gallery-item:nth-child(3n){box-shadow:0 14px 30px -18px oklch(19% .012 130/.4);}
.gallery-filmstrip img:nth-child(2n){}
@media (max-width:640px){.gallery-filmstrip img{height:190px;}}

.img-lightbox-backdrop{position:fixed;inset:0;background:oklch(19% .012 130/.85);z-index:110;display:none;align-items:center;justify-content:center;padding:24px;}
.img-lightbox-backdrop.open{display:flex;}
.img-lightbox-backdrop img{max-width:min(1100px,92vw);max-height:88vh;border-radius:10px;object-fit:contain;}
.img-lightbox-backdrop .close-btn{position:fixed;top:22px;right:26px;width:42px;height:42px;border-radius:999px;background:var(--paper);color:var(--ink);border:0;font-size:1.3rem;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2;}

/* day programme — layout with map aside */
.programme-layout{display:grid;grid-template-columns:1.6fr 1fr;gap:3rem;align-items:start;}
.programme-map{position:sticky;top:6.5rem;}
.programme-map img{width:100%;border-radius:14px;border:1px solid var(--border);box-shadow:0 18px 40px -24px oklch(19% .012 130/.4);}
@media (max-width:960px){.programme-layout{grid-template-columns:1fr;}.programme-map{position:static;}}

/* day programme — time cards */
.time-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem;margin-top:2.2rem;}
.time-card{border:1px solid var(--border);border-radius:14px;padding:1.6rem 1.5rem;background:oklch(100% 0 0/.55);}
.time-card .time{font-family:var(--font-display);font-weight:900;font-size:1.7rem;color:var(--leaf-deep);}
.time-card .title{font-weight:700;font-size:1.02rem;margin-top:.5rem;}
@media (max-width:840px){.time-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:560px){.time-grid{grid-template-columns:1fr;}}

/* fee-section photo collage — simple, robust 2x2 grid */
.fee-collage{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;}
.fee-collage img{width:100%;height:200px;object-fit:cover;border-radius:14px;display:block;}
@media (max-width:640px){.fee-collage img{height:150px;}}
