:root{
  --paper:#f3efe7;
  --ink:#1d1b18;
  --soft:#716b62;
  --line:#cbc3b6;
  --accent:#5b3827;
  --card:#f8f5ef;
  --max:1120px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:"Noto Serif TC","PingFang TC","Microsoft JhengHei",serif;
  line-height:1.8;
}
a{color:inherit}
.site-header{
  width:min(calc(100% - 40px),var(--max));
  margin:0 auto;
  padding:28px 0;
  display:flex;
  justify-content:space-between;
  align-items:center;
  border-bottom:1px solid var(--line);
}
.brand{
  font-family:Georgia,"Times New Roman",serif;
  font-weight:700;
  letter-spacing:.16em;
  text-decoration:none;
  font-size:1.15rem;
}
nav{display:flex;gap:22px;flex-wrap:wrap}
nav a{
  color:var(--soft);
  text-decoration:none;
  font-size:.9rem;
}
nav a:hover,nav a[aria-current="page"]{color:var(--ink)}
main{
  width:min(calc(100% - 40px),var(--max));
  margin:0 auto;
}
.hero,.page-intro{
  padding:110px 0 92px;
  max-width:880px;
}
.eyebrow,.kicker{
  font-family:Georgia,"Times New Roman",serif;
  text-transform:uppercase;
  letter-spacing:.16em;
  font-size:.78rem;
  color:var(--accent);
}
h1,h2,h3{font-weight:500;line-height:1.25;margin-top:0}
h1{font-size:clamp(3rem,8vw,6.8rem);letter-spacing:-.04em;margin-bottom:28px}
.page-intro h1{font-size:clamp(2.8rem,7vw,5.6rem)}
.lede{
  max-width:760px;
  font-size:clamp(1.05rem,2vw,1.35rem);
  color:#3b3732;
}
.hero-actions{margin-top:38px}
.button{
  display:inline-block;
  padding:12px 20px;
  border:1px solid var(--ink);
  text-decoration:none;
  transition:.2s ease;
}
.button:hover{background:var(--ink);color:var(--paper)}
.manifesto{
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding:54px 0;
  display:grid;
  grid-template-columns:1fr 1.4fr;
  gap:60px;
  align-items:start;
}
.section-no{font-family:Georgia,serif;color:var(--soft);font-size:.78rem}
.manifesto h2{font-size:2rem;margin:.5rem 0 0}
.manifesto p{margin:0;color:#49443e}
.feature-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:18px;
  padding:64px 0 100px;
}
.feature{
  background:var(--card);
  border:1px solid var(--line);
  padding:30px;
  min-height:260px;
}
.feature h3{font-size:1.6rem}
.feature p{color:var(--soft)}
.feature a{text-decoration:none;border-bottom:1px solid currentColor}
.feature.muted{opacity:.68}
.journal-note{
  border-left:3px solid var(--accent);
  padding:4px 0 4px 22px;
  max-width:860px;
  margin-bottom:54px;
  color:#49443e;
}
.visit-list{border-top:1px solid var(--line)}
.visit-card{
  padding:46px 0;
  border-bottom:1px solid var(--line);
}
.visit-meta,.visit-details{
  display:flex;
  gap:18px;
  flex-wrap:wrap;
  color:var(--soft);
  font-size:.82rem;
  letter-spacing:.04em;
}
.visit-card h2{
  max-width:850px;
  font-size:clamp(1.8rem,4vw,3rem);
  margin:15px 0 14px;
}
.visit-card>p{max-width:760px;color:#45403a}
.visit-details{margin-top:22px}
.article-template{padding:90px 0}
.article-template h2{font-size:2.4rem;max-width:700px}
.template-grid{
  margin-top:34px;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1px;
  background:var(--line);
  border:1px solid var(--line);
}
.template-grid>div{
  background:var(--paper);
  padding:24px;
  display:flex;
  flex-direction:column;
  gap:8px;
}
.template-grid span{color:var(--soft);font-size:.92rem}
footer{
  width:min(calc(100% - 40px),var(--max));
  margin:0 auto;
  border-top:1px solid var(--line);
  padding:28px 0 45px;
  display:flex;
  justify-content:space-between;
  color:var(--soft);
  font-size:.8rem;
  letter-spacing:.08em;
}
@media(max-width:760px){
  .site-header{align-items:flex-start;gap:18px;flex-direction:column}
  nav{gap:14px}
  .hero,.page-intro{padding:72px 0 58px}
  .manifesto{grid-template-columns:1fr;gap:22px}
  .feature-grid,.template-grid{grid-template-columns:1fr}
  footer{gap:10px;flex-direction:column}
}
/* Longform café stories */
.featured-visit h2 a{text-decoration:none}
.read-more{display:inline-block;margin-top:20px;text-decoration:none;border-bottom:1px solid currentColor}
.article-main{max-width:var(--max)}
.longform{padding-bottom:80px}
.article-hero{padding:90px 0 54px;max-width:900px}
.article-hero h1{font-size:clamp(3rem,8vw,6rem);margin:8px 0 26px}
.article-deck{font-size:clamp(1.1rem,2.4vw,1.5rem);max-width:780px;color:#3d3832}
.article-meta{display:flex;gap:18px;flex-wrap:wrap;color:var(--soft);font-size:.82rem;margin-top:28px}
.article-photo{margin:42px 0}
.article-photo img{width:100%;display:block;border:1px solid var(--line);background:#ddd8cf}
.hero-photo{max-width:820px}
.coffee-photo{max-width:620px;margin-left:auto;margin-right:auto}
.article-photo figcaption{font-size:.82rem;color:var(--soft);margin-top:10px}
.article-body{max-width:760px;margin:0 auto;padding:40px 0}
.article-body p{font-size:1.08rem;margin:0 0 1.6em}
.article-body .dropcap:first-letter{float:left;font-size:4.5rem;line-height:.78;padding:.12em .12em 0 0;font-family:Georgia,serif;color:var(--accent)}
.article-body h2{font-size:clamp(2rem,4vw,3rem);margin:2.3em 0 .7em}
.article-body blockquote{margin:56px 0;padding:24px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.article-body blockquote p{font-size:clamp(1.5rem,4vw,2.4rem);line-height:1.45;margin:0;color:var(--accent)}
.closing{margin-top:58px!important;padding-top:34px;border-top:1px solid var(--line);font-size:1.18rem!important}
.place-note{max-width:900px;margin:50px auto 0;padding:34px;border:1px solid var(--line);background:var(--card)}
.place-note-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:20px}
.place-note-grid>div{background:var(--card);padding:18px;display:flex;flex-direction:column;gap:5px}
.place-note-grid span,.source-note{color:var(--soft);font-size:.88rem}
.article-nav{max-width:900px;margin:42px auto 0}
.article-nav a{text-decoration:none;border-bottom:1px solid currentColor}
@media(max-width:760px){
 .article-hero{padding:64px 0 38px}
 .article-body{padding-top:18px}
 .place-note{padding:22px}
 .place-note-grid{grid-template-columns:1fr}
}

/* Paris 2026 travel archive */
.paris-hero{padding:118px 0 90px;max-width:960px}
.paris-hero h1{font-size:clamp(3.6rem,10vw,8rem);line-height:.98;letter-spacing:-.055em;margin:10px 0 34px}
.journey-grid{display:grid;grid-template-columns:1.45fr 1fr 1fr;gap:18px;padding:72px 0}
.journey-card{display:block;min-height:330px;padding:30px;border:1px solid var(--line);background:var(--card);text-decoration:none}
.journey-card.featured{background:var(--ink);color:var(--paper)}
.journey-card.pending{opacity:.72}
.journey-no,.journey-type{display:block;font-size:.76rem;letter-spacing:.12em;text-transform:uppercase}
.journey-type{margin-top:8px;color:var(--soft)}
.journey-card.featured .journey-type{color:#cfc6b9}
.journey-card h3{font-size:clamp(1.7rem,3vw,2.65rem);margin:42px 0 18px}
.journey-card p{color:var(--soft)}
.journey-card.featured p{color:#d9d1c6}
.journey-link{display:inline-block;margin-top:22px;border-bottom:1px solid currentColor}
.paris-index-preview{padding:76px 0 110px;border-top:1px solid var(--line)}
.preview-row{display:grid;grid-template-columns:220px 1fr;gap:30px;padding:22px 0;border-bottom:1px solid var(--line)}
.preview-row span{color:var(--soft)}
.trip-note{display:grid;grid-template-columns:180px 1fr;gap:36px;padding:34px 0 58px;border-top:1px solid var(--line)}
.trip-year{font:700 3rem/1 Georgia,serif;color:var(--accent)}
.trip-note p{margin:0;max-width:700px;color:#49443e}
.paris-stops{border-top:1px solid var(--line)}
.stop-card{padding:52px 0;border-bottom:1px solid var(--line)}
.stop-card.waiting{opacity:.62}
.stop-topline,.stop-tags{display:flex;gap:16px;flex-wrap:wrap;color:var(--soft);font-size:.78rem;letter-spacing:.08em}
.stop-card h2{font-size:clamp(2rem,5vw,4rem);margin:18px 0}
.stop-card h2 a{text-decoration:none}
.stop-card p{max-width:760px;color:#49443e}
.stop-tags{margin-top:22px}
.archive-axis{padding:90px 0}
.axis-grid{margin-top:30px;display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.axis-grid>div{background:var(--paper);padding:26px;display:flex;flex-direction:column;gap:9px}
.axis-grid span{color:var(--soft);font-size:.92rem}
.article-nav{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
@media(max-width:760px){
 .paris-hero{padding:76px 0 58px}
 .journey-grid{grid-template-columns:1fr}
 .journey-card{min-height:auto}
 .preview-row,.trip-note{grid-template-columns:1fr;gap:8px}
 .axis-grid{grid-template-columns:1fr}
}

/* Les Deux Magots — editorial photo essay */
.story-hero{margin:18px 0 74px}
.story-hero img,.story-photo img,.story-pair img{
  width:100%;
  display:block;
  border:1px solid var(--line);
  background:#ddd8cf;
}
.story-hero img{aspect-ratio:16/9;object-fit:cover}
.story-hero figcaption,.story-photo figcaption,.story-pair figcaption{
  margin-top:10px;
  color:var(--soft);
  font-size:.82rem;
  line-height:1.65;
}
.story-photo{margin:58px -70px}
.story-photo.centered{max-width:800px;margin:58px auto}
.story-photo.portrait{max-width:590px;margin:58px auto}
.story-pair{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:20px;
  margin:62px -110px;
}
.story-pair figure{margin:0}
.story-pair img{height:100%;max-height:620px;object-fit:cover}
@media(max-width:980px){
  .story-photo,.story-pair{margin-left:0;margin-right:0}
}
@media(max-width:760px){
  .story-hero{margin:8px 0 48px}
  .story-hero img{aspect-ratio:auto}
  .story-photo,.story-photo.centered,.story-photo.portrait{margin:42px 0;max-width:none}
  .story-pair{grid-template-columns:1fr;gap:34px;margin:46px 0}
  .story-pair img{height:auto;max-height:none}
}
