@import url('https://fonts.googleapis.com/css2?family=Bodoni+Moda:wght@400;500;600;700&family=Jost:wght@300;400;500;600;700&display=swap');

:root{
  --ink:#111114;
  --cream:#F4EFE6;
  --gold:#9A7B4F;
  --line:rgba(154,123,79,.3);
  --max:1200px;
  --serif:'Bodoni Moda','Songti SC','Noto Serif SC',Georgia,'Times New Roman',serif;
  --sans:'Jost','PingFang SC','Hiragino Sans GB','Microsoft YaHei',system-ui,sans-serif;
}

*,*::before,*::after{box-sizing:border-box}

html{
  scroll-behavior:smooth;
  scroll-padding-top:28px;
  -webkit-text-size-adjust:100%;
}

body{
  margin:0;
  background:var(--ink);
  color:var(--cream);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.7;
  padding-bottom:120px;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}

body::before{
  content:'';
  position:fixed;
  inset:0;
  z-index:0;
  pointer-events:none;
  background:
    radial-gradient(circle at 12% -5%,rgba(154,123,79,.22),transparent 46%),
    radial-gradient(circle at 92% 8%,rgba(244,239,230,.07),transparent 42%);
}

main,.foot{position:relative;z-index:1}

img{max-width:100%;height:auto;display:block}

a{color:inherit}

.sr{
  position:absolute;
  width:1px;height:1px;
  padding:0;margin:-1px;
  overflow:hidden;
  clip:rect(0 0 0 0);
  white-space:nowrap;
  border:0;
}

.skip{
  position:absolute;
  left:12px;
  top:-60px;
  z-index:60;
  padding:10px 16px;
  background:var(--gold);
  color:#12121a;
  text-decoration:none;
  font-size:16px;
  transition:top .25s ease;
}
.skip:focus{top:12px}

/* ---------- bottom bar ---------- */
.topbar{
  position:fixed;
  left:0;right:0;bottom:0;
  z-index:40;
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:14px;
  padding:10px clamp(14px,3.2vw,40px);
  background:rgba(17,17,20,.94);
  border-top:1px solid var(--line);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
}

.nav p{
  margin:0;
  display:flex;
  flex-wrap:wrap;
  gap:2px;
}
.nav-l{justify-self:end}
.nav-l p{justify-content:flex-end}

.nav a{
  position:relative;
  display:inline-block;
  padding:12px 10px;
  font-size:16px;
  line-height:1.4;
  letter-spacing:.03em;
  color:rgba(244,239,230,.78);
  text-decoration:none;
  transition:color .25s ease;
}
.nav a::after{
  content:'';
  position:absolute;
  left:10px;right:10px;bottom:7px;
  height:1px;
  background:var(--gold);
  transform:scaleX(0);
  transform-origin:left center;
  transition:transform .35s ease;
}
.nav a:hover,.nav a:focus-visible{color:var(--cream)}
.nav a:hover::after,.nav a:focus-visible::after{transform:scaleX(1)}

.brand{
  justify-self:center;
  display:inline-flex;
  align-items:center;
  gap:9px;
  padding:8px 4px;
  text-decoration:none;
  color:var(--cream);
}
.brand-logo{
  width:34px;height:34px;
  border:1px solid var(--line);
  border-radius:0;
  object-fit:cover;
}
.brand-name{
  font-family:var(--serif);
  font-size:clamp(16px,1.7vw,20px);
  font-weight:500;
  letter-spacing:.14em;
  white-space:nowrap;
}

.right{
  justify-self:start;
  display:flex;
  align-items:center;
  gap:8px;
}
.contact{
  display:inline-flex;
  align-items:center;
  min-height:44px;
  padding:8px 14px;
  font-size:16px;
  color:var(--gold);
  text-decoration:none;
  border:1px solid var(--line);
  transition:background .25s ease,color .25s ease;
}
.contact:hover,.contact:focus-visible{background:var(--gold);color:#12121a}

/* ---------- hero ---------- */
.hero{
  min-height:70vh;
  display:flex;
  align-items:center;
  padding:clamp(56px,11vh,132px) clamp(18px,5vw,64px) clamp(32px,6vh,64px);
}

.hero-in{
  width:100%;
  max-width:var(--max);
  margin:0 auto;
  position:relative;
}

.badge{
  display:inline-block;
  margin-bottom:22px;
  padding:7px 14px;
  font-size:16px;
  letter-spacing:.16em;
  color:var(--gold);
  border:1px solid var(--line);
  animation:floaty 6s ease-in-out infinite;
}

@keyframes floaty{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-9px)}
}

.shout{
  margin:.18em 0 .28em;
  font-family:var(--serif);
  font-weight:600;
  font-size:clamp(2.5rem,9.4vw,7rem);
  line-height:1.05;
  letter-spacing:-.012em;
  background:linear-gradient(96deg,#F4EFE6 6%,#F4EFE6 40%,#CBA76F 62%,#F4EFE6 90%);
  background-size:230% 100%;
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
  animation:sheen 10s ease-in-out infinite;
}

@keyframes sheen{
  0%,100%{background-position:0% 50%}
  50%{background-position:100% 50%}
}

.shout .ch{
  display:inline-block;
  opacity:0;
  transform:translateY(.38em) rotate(3deg);
  animation:chIn .72s cubic-bezier(.2,.8,.2,1) forwards;
  animation-delay:calc(var(--i) * 45ms);
}

@keyframes chIn{
  to{opacity:1;transform:translateY(0) rotate(0)}
}

.lede{
  max-width:56ch;
  margin:0;
  font-size:clamp(16px,1.5vw,19px);
  line-height:1.75;
  color:rgba(244,239,230,.76);
}

.hair{
  display:block;
  width:96px;
  height:2px;
  margin-top:34px;
  background:linear-gradient(90deg,var(--gold),transparent);
  transform-origin:left center;
  animation:grow 1.1s .5s cubic-bezier(.2,.8,.2,1) both;
}

@keyframes grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* ---------- reading area ---------- */
.read{
  max-width:var(--max);
  margin:0 auto;
  padding:0 clamp(18px,5vw,64px) 64px;
  display:grid;
  grid-template-columns:minmax(0,1fr) 296px;
  gap:clamp(22px,4vw,54px);
  align-items:start;
}

.body{
  background:var(--cream);
  color:#1b1b1f;
  padding:clamp(24px,4vw,54px);
  border:1px solid rgba(154,123,79,.5);
  border-radius:0;
  box-shadow:0 34px 70px -34px rgba(0,0,0,.9);
  overflow-wrap:break-word;
}

.body div{scroll-margin-top:90px}
.body div + div{
  margin-top:clamp(34px,5vw,54px);
  padding-top:clamp(26px,4vw,42px);
  border-top:1px solid rgba(17,17,20,.14);
}

.body h2{
  margin:0 0 .45em;
  font-family:var(--serif);
  font-weight:600;
  font-size:clamp(1.5rem,3.4vw,2.15rem);
  line-height:1.22;
  letter-spacing:-.008em;
  color:#111114;
}

.body h3{
  margin:1.6em 0 .55em;
  font-size:1.14rem;
  line-height:1.4;
  font-weight:600;
  color:#111114;
}

.body p{
  margin:0 0 1em;
  font-size:17px;
  line-height:1.82;
  color:#26262c;
}

.body .subtitle,
.body p.subtitle{
  margin:-.1em 0 1.2em;
  font-size:16px;
  color:#6d5836;
  letter-spacing:.02em;
}

.body a{
  color:#7a5f36;
  text-decoration:underline;
  text-underline-offset:3px;
  text-decoration-thickness:1px;
}
.body a:hover{color:#111114;background:rgba(154,123,79,.22)}

.body ul,.body ol{margin:0 0 1.1em;padding-left:1.35em}
.body li{margin:.4em 0;font-size:17px;line-height:1.75}

.body strong{font-weight:600;color:#111114}

.body blockquote{
  margin:1.4em 0;
  padding:4px 0 4px 18px;
  border-left:3px solid var(--gold);
  color:#3a3a42;
  font-size:17px;
}

.body figure{margin:1.5em 0}
.body figcaption{font-size:16px;color:#6d5836;margin-top:.5em}
.body img{border:1px solid rgba(17,17,20,.14)}

/* ---------- rail ---------- */
.rail{
  position:sticky;
  top:26px;
  align-self:start;
  border:1px solid var(--line);
  background:linear-gradient(180deg,rgba(154,123,79,.14),rgba(154,123,79,.02));
  padding:22px 20px 26px;
}

.rail-h{
  margin:0;
  font-family:var(--serif);
  font-size:1.05rem;
  font-weight:500;
  letter-spacing:.1em;
  color:#E9DFCE;
}

.rail .subtitle{
  margin:.4em 0 1.1em;
  font-size:16px;
  line-height:1.5;
  color:var(--gold);
}

.rail-nav p{margin:0;display:flex;flex-direction:column}
.rail-nav a{
  display:block;
  min-height:42px;
  padding:11px 2px;
  font-size:16px;
  color:rgba(244,239,230,.82);
  text-decoration:none;
  border-bottom:1px dashed rgba(154,123,79,.26);
  transition:color .25s ease,padding-left .25s ease;
}
.rail-nav a:last-child{border-bottom:0}
.rail-nav a:hover,.rail-nav a:focus-visible{color:#fff;padding-left:8px}

/* ---------- footer ---------- */
.foot{
  border-top:1px solid var(--line);
  background:#0b0b0e;
  padding:clamp(36px,6vw,68px) clamp(18px,5vw,64px) 26px;
}

.foot-top{
  max-width:var(--max);
  margin:0 auto;
  display:grid;
  grid-template-columns:1.1fr 1.7fr;
  gap:clamp(24px,5vw,64px);
}

.fb-name{
  margin:0 0 .5em;
  font-family:var(--serif);
  font-size:1.25rem;
  letter-spacing:.1em;
  color:var(--cream);
}

.fb-desc{
  margin:0;
  max-width:34ch;
  font-size:16px;
  line-height:1.7;
  color:rgba(244,239,230,.66);
}

.sub-form{
  display:flex;
  margin-top:22px;
  max-width:340px;
}
.sub-form input{
  flex:1;
  min-width:0;
  padding:12px 14px;
  min-height:48px;
  font:inherit;
  font-size:16px;
  color:var(--cream);
  background:transparent;
  border:1px solid var(--line);
  border-right:0;
  border-radius:0;
}
.sub-form input::placeholder{color:rgba(244,239,230,.42)}
.sub-form input:focus{outline:1px solid var(--gold);outline-offset:-1px}
.sub-form button{
  min-height:48px;
  padding:12px 20px;
  font:inherit;
  font-size:16px;
  font-weight:500;
  color:#12121a;
  background:var(--gold);
  border:1px solid var(--gold);
  border-radius:0;
  cursor:pointer;
  transition:background .25s ease,color .25s ease;
}
.sub-form button:hover{background:var(--cream);border-color:var(--cream)}

.foot-links{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:20px;
}

.foot-links dl{margin:0}
.foot-links dt{
  margin-bottom:.7em;
  font-size:16px;
  letter-spacing:.14em;
  color:var(--gold);
  border-bottom:1px solid rgba(154,123,79,.2);
  padding-bottom:.5em;
}
.foot-links dd{margin:0 0 4px}
.foot-links dd a{
  display:inline-block;
  min-height:40px;
  padding:7px 0;
  font-size:16px;
  line-height:1.6;
  color:rgba(244,239,230,.78);
  text-decoration:none;
}
.foot-links dd a:hover,.foot-links dd a:focus-visible{color:#fff;text-decoration:underline;text-underline-offset:4px}

.copy{
  max-width:var(--max);
  margin:30px auto 0;
  padding-top:18px;
  text-align:center;
  font-size:16px;
  color:rgba(244,239,230,.5);
  border-top:1px solid rgba(154,123,79,.18);
}

/* ---------- reveal ---------- */
.js .reveal{
  opacity:0;
  transform:translateY(26px);
  transition:opacity .7s ease,transform .72s cubic-bezier(.2,.8,.2,1);
}
.js .reveal.in{opacity:1;transform:none}

/* ---------- responsive ---------- */
@media (max-width:900px){
  body{padding-bottom:172px}
  .read{grid-template-columns:minmax(0,1fr)}
  .rail{position:static;order:2;margin-top:6px}
  .foot-top{grid-template-columns:1fr}
  .foot-links{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
  .topbar{
    grid-template-columns:minmax(0,1fr);
    gap:2px;
    padding:8px 10px 10px;
  }
  .brand{justify-self:center;order:-1;padding:4px}
  .nav-l,.right{justify-self:center}
  .nav-l p,.nav-r p{justify-content:center;gap:0 2px}
  .nav a{padding:10px 7px}
  .right{gap:6px}
  .contact{min-height:42px;padding:6px 12px}
  .hero{min-height:62vh;padding-top:clamp(40px,8vh,72px)}
  .hair{margin-top:24px}
}

@media (max-width:420px){
  .foot-links{grid-template-columns:1fr 1fr}
  .body{padding:22px 18px}
  .shout{font-size:clamp(2.1rem,10.5vw,3rem)}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  .js .reveal{opacity:1;transform:none}
  .shout .ch{opacity:1;transform:none}
  .hair{transform:none}
}

button[aria-expanded]{min-width:44px;min-height:44px}
