/* User-supplied mahjong image: preserve its original orientation and color. */
@font-face { font-family:'SAN MAHJ Inscription'; src:url('fonts/noto-serif-tc-inscription.ttf') format('truetype'); font-style:normal; font-weight:400; font-display:swap; }
.site-footer { --footer-ink:var(--ink); color:var(--footer-ink); background:radial-gradient(ellipse at 9% 100%,#85d9e32b,transparent 55%),#e5eeea; }
.footer-table { position:relative; isolation:isolate; overflow:hidden; color:var(--paper); background:var(--ink-teal); padding:35px 6.3%; }
.sculpture-camera { position:absolute; inset:0; z-index:-2; pointer-events:none; }
.sculpture-drift { position:absolute; inset:-1.5%; transform:translate3d(var(--sculpture-x,0px),var(--sculpture-y,0px),0) scale(1.02); transition:transform .7s cubic-bezier(.22,1,.36,1); }
.footer-sculpture-image { width:100%; height:100%; max-width:none; object-fit:cover; object-position:center 55%; }
.footer-table::after { content:''; position:absolute; z-index:-1; pointer-events:none; inset:0; background:linear-gradient(90deg,#032e364d,transparent 53%); }
.footer-composition { max-width:1220px; min-height:540px; margin:auto; display:flex; align-items:center; }
.footer-invitation { width:45%; padding:25px 0; }
.footer-eyebrow { font-size:11px; letter-spacing:.025em; color:#c1e1e2; margin-bottom:29px; }
.site-footer h2 { margin:0; font:400 clamp(54px,5.4vw,80px)/1.04 var(--display); letter-spacing:-.045em; }
.footer-invitation-copy { max-width:365px; margin-top:28px; }
.footer-invitation-copy p { font-size:13px; line-height:1.85; color:#d2e6e7; }
.footer-inscription { position:relative; width:25px; color:var(--paper); margin-top:28px; }
.inscription-text { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.inscription-art { display:block; width:100%; height:auto; overflow:visible; }
.painted-stroke { fill:currentColor; stroke:none; }
.brush-reveal { stroke-dasharray:1; stroke-dashoffset:0; }
.inscription-pending .painted-stroke,.inscription-painting .painted-stroke { mask:var(--stroke-mask); }
.inscription-pending .brush-reveal { stroke-dashoffset:1; }
.inscription-painting .brush-reveal { animation:inscription-brush var(--stroke-duration) cubic-bezier(.33,.05,.5,1) var(--stroke-delay) both; }
@keyframes inscription-brush { from { stroke-dashoffset:1; } to { stroke-dashoffset:0; } }
.footer-join { display:flex; align-items:center; justify-content:space-between; gap:25px; margin-top:23px; padding:12px 0; min-height:50px; color:var(--paper); border-bottom:1px solid #b6d9da8c; text-decoration:none; font-size:14px; }
.footer-join svg { width:23px; height:23px; fill:none; stroke:currentColor; stroke-width:1.3; transition:transform .2s; }
.footer-join:hover { color:var(--glacier); }
.footer-join:hover svg { transform:translateX(4px); }
.footer-inner { max-width: 1480px; margin: auto; padding: 0 6.3%; }
.footer-directory { display:grid; grid-template-columns:1.45fr .8fr .8fr 1.3fr; gap:5%; padding:74px 0 62px; }
.footer-brand .logo-horizontal { width:180px; margin-bottom:23px; }
.footer-brand p { font-size:14px; line-height:1.85; margin-bottom:22px; color:#446269; }
.footer-brand>span { font-size:12px; color:#446269; }
.site-footer h3 { font:500 11px/1.5 var(--sans); letter-spacing:.12em; text-transform:uppercase; margin:0 0 24px; color:#446269; }
.footer-links { display:flex; align-items:flex-start; flex-direction:column; gap:18px; }
.footer-links h3 { margin-bottom: 7px; }
.footer-links a { position:relative; text-decoration:none; font-size:15px; }
.footer-links a::after { content:''; position:absolute; left:0; right:0; bottom:-3px; height:1px; background:currentColor; transform:scaleX(0); transform-origin:left; transition:transform .3s cubic-bezier(.22,1,.36,1); }
.footer-links a:hover::after,.footer-links a:focus-visible::after { transform:scaleX(1); }
.footer-links a:hover,.footer-bottom a:hover { text-decoration: underline; text-underline-offset: 5px; }
.footer-email { display:inline-block; font:400 clamp(23px,2vw,30px)/1.3 var(--display); letter-spacing:-.025em; text-decoration:none; white-space:nowrap; }
.footer-email:hover { text-decoration: underline; }
.footer-contact p { color:#446269; font-size:13px; line-height:1.85; margin-top:20px; }
.footer-imprint { padding:28px 0 38px; border-top:1px solid #032e3626; }
.footer-imprint-caption { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:29px; font-size:11px; color:#446269; }
.footer-imprint-art { display:block; width:100%; height:auto; opacity:.87; }
.imprint-pending .imprint-letter { opacity:0; }
.imprint-revealing .imprint-letter { animation:footer-imprint-ink 1800ms cubic-bezier(.22,1,.36,1) calc(var(--letter-order) * 160ms) both; }
@keyframes footer-imprint-ink { from { opacity:0; } to { opacity:1; } }
.footer-ink-sheen { opacity:0; animation:footer-ink-sheen 14s cubic-bezier(.4,0,.25,1) 3s infinite both paused; }
.imprint-sheen-running .footer-ink-sheen { animation-play-state:running; }
@keyframes footer-ink-sheen {
  0%,4% { opacity:0; transform:translateX(0); }
  7% { opacity:.85; }
  30% { opacity:.85; }
  34%,100% { opacity:0; transform:translateX(1300px); }
}
@media(prefers-reduced-motion:reduce) { .footer-ink-sheen { animation:none; opacity:0; } }
.footer-bottom { display:flex; align-items:center; gap:30px; border-top:1px solid #032e3626; padding:27px 0 31px; color:#446269; font-size:11px; }
.footer-bottom nav { display: flex; gap: 23px; margin-left: auto; }
.footer-bottom a { text-decoration: none; }
.footer-top { display: flex; align-items: center; gap: 15px; margin-left: 18px; color: var(--footer-ink); }
@media (max-width:1000px) {
  .footer-table { padding-block:25px; }
  .footer-composition { min-height:440px; }
  .footer-invitation { width:48%; }
  .site-footer h2 { font-size:64px; }
  .footer-directory { grid-template-columns:1.4fr 1fr 1fr; gap:38px; padding-block:56px; }
  .footer-contact { grid-column:2 / 4; }
  .footer-brand { grid-row:span 2; }
  .footer-contact h3 { margin-bottom:10px; }
  .footer-contact p br { display:none; }
  .footer-artist-credit { display:none; }
}
@media (max-width:700px) {
  .footer-table { padding:38px 7% clamp(225px,73vw,370px); }
  .footer-composition { display:block; min-height:0; }
  .footer-invitation { width:100%; padding:0; }
  .footer-eyebrow { font-size:10px; margin-bottom:22px; }
  .site-footer h2 { font-size:clamp(51px,13vw,70px); }
  .footer-invitation-copy { margin-top:23px; max-width:none; }
  .footer-invitation-copy p { font-size:12px; max-width:310px; }
  .footer-invitation-copy p br { display:none; }
  .footer-join { margin-top:18px; font-size:13px; min-height:50px; }
  .footer-inscription { width:23px; margin-top:24px; }
  .sculpture-camera { top:auto; height:clamp(260px,84vw,420px); mask-image:linear-gradient(to bottom,transparent,#000 24%); }
  .footer-sculpture-image { object-position:85% center; }
  .footer-inner { padding:0 7%; }
  .footer-directory { grid-template-columns:1fr 1fr; gap:36px 24px; padding:44px 0 38px; }
  .footer-brand { grid-column:1 / -1; grid-row:auto; display:block; }
  .footer-brand .logo-horizontal { width:165px; margin-bottom:20px; }
  .footer-brand p { font-size:13px; margin-bottom:14px; }
  .footer-brand>span { font-size:11px; }
  .footer-links { gap:16px; }
  .footer-links a { font-size:14px; }
  .footer-contact { grid-column:1 / -1; padding-top:0; }
  .footer-email { font-size:27px; }
  .footer-contact p { margin-top:13px; font-size:12px; }
  .footer-imprint { padding:24px 0 28px; }
  .footer-ink-sheen { animation-duration:11s; animation-delay:-1s; }
  .footer-imprint-caption { margin-bottom:22px; font-size:10px; }
  .footer-imprint-caption span:last-child { display:none; }
  .footer-bottom { display:grid; grid-template-columns:1fr auto; gap:17px; padding:22px 0; font-size:9px; }
  .footer-bottom nav { grid-column:1; grid-row:2; margin:0; gap:21px; }
  .footer-top { grid-column:2; grid-row:1 / 3; margin:0; gap:9px; }
}
@media (prefers-reduced-motion:reduce) { .sculpture-drift,.footer-join svg { transition:none; } .sculpture-drift { transform:scale(1.02); } }
@media (prefers-reduced-motion:reduce) { .inscription-pending .painted-stroke,.inscription-painting .painted-stroke { mask:none; } .brush-reveal { animation:none !important; } }
@media (prefers-reduced-motion:reduce) { .imprint-pending .imprint-letter,.imprint-revealing .imprint-letter { animation:none; opacity:1; } }
