function ArchivePage(){
  const D=window.MP_DATA;
  return (<>
    <section className="k-sec k-pagehead">
      <div className="k-head"><M.Heading size="h1" font="serif" as="h1" className="k-h1">{T('archive.title')[0]}<br /><em>{T('archive.title')[1]}</em>{T('archive.title')[2]}</M.Heading></div>
      <ul className="k-exh" style={{marginTop:'var(--block-gap)'}}>
        {[
          {src:'assets/exhibitions/paris-solo-2026.jpg',alt:'Bibliothèque Polonaise de Paris, Quai d’Orléans, venue of ALTAR',date:'4–26 September 2026',title:'ALTAR',sub:'Paris Design Week — solo exhibition',venue:'Bibliothèque Polonaise de Paris',addr:'6 Quai d’Orléans, 75004 Paris'},
          {src:'assets/exhibitions/living-forms-milan-2026.jpg',alt:'Living Forms exhibition view, Gilda Contemporary Art, Milan',date:'20–26 April 2026',title:'Living Forms',sub:'Milan Design Week — TWÓR',venue:'Gilda Contemporary Art',addr:'Via San Maurilio 14, 5VIE, Milan',note:'Later shown at Concordia Design, Wrocław, until 17 May 2026'},
          {src:'assets/exhibitions/structure-of-forces-stmoritz-2026.jpg',alt:'Structure of Forces, Sirène console, NOMAD St. Moritz',date:'12–15 February 2026',title:'Structure of Forces',sub:'NOMAD St. Moritz — Craftica Gallery',venue:'Villa Beaulieu',addr:'Via Arona 34, St. Moritz · Space F1, Floor 3'}
        ].map(function(e,k){e=Object.assign({},e,T('exh')[k]);return (
          <li key={e.title} className="k-exh__item" tabIndex="0">
            <img src={e.src} alt={e.alt} loading="lazy" />
            <div className="k-exh__info">
              <span className="k-exh__date">{e.date}</span>
              <span className="k-exh__t">{e.title}</span>
              <span className="k-exh__sub">{e.sub}</span>
              <span className="k-exh__venue">{e.venue}<br />{e.addr}</span>
              {e.note?<span className="k-exh__note">{e.note}</span>:null}
            </div>
          </li>);})}
      </ul>
    </section>
    <section className="k-sec k-gap" aria-labelledby="h-exl"><div className="k-head"><M.Eyebrow as="h2" index="01" marker="step"><span id="h-exl">{T('archive.exhibitions')}</span></M.Eyebrow></div><M.ArchiveList groups={D.exhibitions} style={{marginTop:'var(--space-5)'}} /></section>
    <section className="k-sec k-gap" aria-labelledby="h-pr"><div className="k-head"><M.Eyebrow as="h2" index="02" marker="step"><span id="h-pr">{T('archive.press')}</span></M.Eyebrow></div><ul className="k-exh k-pubs" style={{marginTop:'var(--space-6)'}}>{[{src:'art-of-polish-craft-cover.png',t:'The Art of Polish Craft',d:'Point of Design · 1 July 2026'},{src:'and-living-41-cover.jpg',t:'& Living 41',d:'September — November 2026'},{src:'elle-decoration-4-2026-cover-hq.jpg',t:'ELLE Decoration 4/2026',d:'August 2026'},{src:'gq-poland-art-issue-2026-cover.jpg',t:'GQ Poland',d:'The Art Issue · May — June 2026'}].map(function(p){return (<li key={p.src} className="k-exh__item" tabIndex={0}><img src={'assets/publications/'+p.src} alt={p.t+' cover'} loading="lazy" /><div className="k-exh__info"><span className="k-exh__date">{p.d}</span><span className="k-exh__t">{p.t}</span></div></li>);})}</ul><M.ArchiveList groups={[{year:2026,entries:[
          {title:'ALTAR',subtitle:'Article by Anna Chlebus · issue 57/2026, “KOMFORT”',venue:'Design Alive · 16 September 2026',type:'Press'},
          {title:'Wystawa ALTAR Mateusza i Roberta Paluckich w Paryżu',subtitle:'Feature on the exhibition',venue:'Architectural Digest Polska · 21 September 2026',type:'Press'},
          {title:'The Art of Polish Craft',subtitle:'A Collector’s Edition',venue:'Point of Design · 1 July 2026',type:'Album'},{title:'& Living 41',subtitle:'It Starts with the Material',venue:'LABEL Magazine · September — November 2026',type:'Press'},{title:'ELLE Decoration 4/2026',subtitle:'Living Forms · Milan Design Week 2026',venue:'August 2026',type:'Press'},{title:'GQ Poland',subtitle:'The Art Issue · Sirène',venue:'May — June 2026',type:'Press'}].map(function(p,k){return Object.assign({},p,T('press')[k]);})}]} style={{marginTop:'var(--space-5)'}} /></section>
  </>);
}
function BiographyPage(props){
  const D=window.MP_DATA;
  const [act,setAct]=React.useState(1);
  React.useEffect(function(){
    const els=Array.prototype.slice.call(document.querySelectorAll('.k-bio__chapter'));if(!els.length)return;
    const io=new IntersectionObserver(function(){let best=null;els.forEach(function(el){const r=el.getBoundingClientRect();if(r.top<window.innerHeight*.4)best=el;});if(best)setAct(+best.id.replace('bio-',''));},{rootMargin:'0px 0px -55% 0px',threshold:[0,.01,1]});
    els.forEach(function(el){io.observe(el);});
    const onS=function(){let best=null;els.forEach(function(el){if(el.getBoundingClientRect().top<window.innerHeight*.4)best=el;});setAct(best?+best.id.replace('bio-',''):1);};
    window.addEventListener('scroll',onS,{passive:true});
    return function(){io.disconnect();window.removeEventListener('scroll',onS);};
  },[]);
  return (<>
    <section className="k-sec k-pagehead">
      <div className="k-head"><M.Heading size="display" font="serif" as="h1" className="k-h1">{T('about.title')[0]}<em>{T('about.title')[1]}</em>{T('about.title')[2]}</M.Heading></div>
      <div className="k-bioint">
        <div className="k-bioint__img"><M.Figure src="assets/portrait/mateusz-palucki.jpg" alt="Portrait of Mateusz Palucki in a black turtleneck" ratio="3/4" priority /></div>
        <div className="k-bioint__txt">
          <span className="k-count">{D.bio.role}</span>
          {D.bio.full.map(function(p,i){const k='Mateusz Palucki';const at=p.indexOf(k);return <p key={i} className="k-bioint__lead">{at<0?p:<>{p.slice(0,at)}<span style={{color:'var(--hx-red, var(--accent))'}}>{k}</span>{p.slice(at+k.length)}</>}</p>;})}
          <M.Prose>{D.bio.sections[0].ps.map(function(p,i){return <p key={i}>{p}</p>;})}</M.Prose>
        </div>
      </div>
    </section>
    <section className="k-sec k-gap" aria-label="Full biography">
      <div className="k-bio">
        <nav className="k-bio__toc" aria-label="Chapters">
          <p className="k-count" style={{marginBottom:12}}>{T('about.chapters')}</p>
          {D.bio.sections.slice(1).map(function(s,k){const i=k+1;return <a key={i} href={'#bio-'+i} aria-current={act===i?'true':undefined} className={'k-bio__tocitem'+(act===i?' is-active':'')} onClick={function(e){e.preventDefault();const el=document.getElementById('bio-'+i);if(el)window.scrollTo({top:el.getBoundingClientRect().top+window.scrollY-96,behavior:'smooth'});}}>{s.h}</a>;})}
        </nav>
        <div className="k-bio__body">
          {D.bio.sections.slice(1).map(function(s,k){const i=k+1;return (
            <section key={i} id={'bio-'+i} className="k-bio__chapter" aria-labelledby={'bio-h-'+i}>
              <h2 id={'bio-h-'+i} className={'k-bio__h'+(act===i?' is-active':'')}>{s.h}</h2>
              <M.Prose>{s.ps.map(function(p,j){return <p key={j}>{p}</p>;})}</M.Prose>
            </section>);})}
        </div>
      </div>
    </section>
  </>);
}
function ContactPage(){
  const mail='contact@paluckistudio.com';
  return (
    <section className="k-sec k-pagehead" style={{minHeight:'70vh'}}>
      <div className="k-head"><M.Heading size="display" font="serif" as="h1" className="k-h1">{T('contact.title')[0]}<em>{T('contact.title')[1]}</em>{T('contact.title')[2]}</M.Heading></div>
      <p style={{marginTop:'var(--block-gap)'}}><a className="mp-link mp-link--grow k-contact__mail" href={'mailto:'+mail} style={{fontSize:'clamp(24px,3vw,48px)'}}>{mail}</a></p>
      <div className="k-two" style={{marginTop:'var(--block-gap)'}}>
        <div className="k-two__a"><M.MetaList items={[{label:T('contact.based'),value:T('contact.place')},{label:'Instagram · Studio',value:<a className="mp-link" href="https://www.instagram.com/palucki.studio" target="_blank" rel="noopener">@palucki.studio</a>},{label:T('contact.studio'),value:<a className="mp-link" href="https://www.paluckistudio.com" target="_blank" rel="noopener">Palucki Studio</a>}]} /></div>
        
      </div>
    </section>
  );
}
Object.assign(window,{ArchivePage:ArchivePage,BiographyPage:BiographyPage,ContactPage:ContactPage});
