/* ==========================================================================
   澳门新京葡萄城 · 共享样式表 /assets/site.css
   夜色葡萄园 × 数字档案：深紫暗区、纸白阅读区、暖金细线
   ========================================================================== */

/* ---------- 1. Reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}
body,h1,h2,h3,h4,h5,h6,p,ul,ol,li,figure,figcaption,blockquote,dl,dd,pre{margin:0}
ul,ol{padding:0;list-style:none}
img,svg,video,picture,canvas{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer}
input,textarea{background:none;border:0}
table{border-collapse:collapse;width:100%}
[hidden]{display:none !important}

/* ---------- 2. Design tokens ---------- */
:root{
  --c-night:#1B0F26;
  --c-cellar:#3A1C4E;
  --c-wine:#6E1B33;
  --c-jewel:#10403C;
  --c-gold:#C9A24A;
  --c-gold-soft:#E7D3A0;
  --c-mist:#B7B1C0;
  --c-paper:#F7F4F0;
  --c-lilac:#E4DEE8;
  --c-ink:#241A2B;

  --line-gold:rgba(201,162,74,.42);
  --line-gold-soft:rgba(201,162,74,.22);
  --line-dark:rgba(183,177,192,.2);
  --shadow-card:0 18px 40px -30px rgba(0,0,0,.9);

  --font-display:"Noto Serif SC","Source Han Serif SC","Songti SC",STSong,SimSun,serif;
  --font-body:"Noto Sans SC","Source Han Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  --fs-12:.75rem;
  --fs-14:.875rem;
  --fs-17:1.0625rem;
  --fs-22:1.375rem;
  --fs-30:1.875rem;
  --fs-44:2.75rem;
  --fs-68:4.25rem;

  --ease:cubic-bezier(.22,.61,.36,1);
  --wrap:1180px;
  --gutter:clamp(18px,4vw,40px);
}
html[data-font-scale="sm"]{font-size:93.75%}
html[data-font-scale="lg"]{font-size:112.5%}

/* ---------- 3. Base typography ---------- */
body{
  font-family:var(--font-body);
  font-size:var(--fs-17);
  line-height:1.85;
  color:var(--c-ink);
  background:var(--c-paper);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
h1,h2,h3,h4{
  font-family:var(--font-display);
  font-weight:900;
  line-height:1.18;
  letter-spacing:-.02em;
  color:var(--c-night);
}
h1{font-size:clamp(2.4rem,6vw,4.6rem)}
h2{font-size:clamp(1.75rem,3.4vw,2.75rem)}
h3{font-size:clamp(1.25rem,2vw,1.75rem);letter-spacing:-.01em}
h4{font-size:var(--fs-22);letter-spacing:0}
p{max-width:74ch}
small{font-size:var(--fs-12)}
strong{font-weight:500}
a{color:inherit}

:focus-visible{outline:2px solid var(--c-gold);outline-offset:3px;border-radius:1px}

/* ---------- 4. Layout helpers ---------- */
.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter)}
.section{padding-block:clamp(48px,7vw,96px)}
.section--dark{background:var(--c-night);color:var(--c-mist)}
.section--cellar{background:var(--c-cellar);color:var(--c-mist)}
.section--jewel{background:var(--c-jewel);color:var(--c-mist)}
.section--paper{background:var(--c-paper);color:var(--c-ink)}
.section--dark h1,.section--dark h2,.section--dark h3,.section--dark h4,
.section--cellar h1,.section--cellar h2,.section--cellar h3,.section--cellar h4,
.section--jewel h1,.section--jewel h2,.section--jewel h3,.section--jewel h4{color:var(--c-paper)}
.rule{border:0;border-top:1px solid var(--line-gold);margin:0}

.eyebrow{
  display:flex;align-items:center;gap:10px;
  font-family:var(--font-mono);
  font-size:var(--fs-12);
  letter-spacing:.3em;
  text-transform:uppercase;
  color:var(--c-gold);
  margin-bottom:14px;
}
.eyebrow::before{content:"";width:26px;height:1px;background:var(--c-gold);flex:none}

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

/* ---------- 5. Skip link ---------- */
.skip-link{
  position:absolute;left:14px;top:-70px;z-index:200;
  background:var(--c-gold);color:var(--c-night);
  padding:10px 18px;font-size:var(--fs-14);letter-spacing:.08em;text-decoration:none;
  transition:top .2s var(--ease);
}
.skip-link:focus{top:14px}

/* ---------- 6. Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:8px;
  padding:12px 24px;
  border:1px solid var(--line-gold);
  background:transparent;
  color:var(--c-gold-soft);
  font-size:var(--fs-14);
  letter-spacing:.1em;
  text-decoration:none;
  transition:transform .24s var(--ease),background-color .24s var(--ease),
             border-color .24s var(--ease),color .24s var(--ease);
}
.btn:hover{transform:translateY(-2px);background:rgba(201,162,74,.12);border-color:var(--c-gold)}
.btn--primary{background:var(--c-wine);border-color:var(--c-wine);color:var(--c-paper)}
.btn--primary:hover{background:#7E2140;border-color:var(--c-gold);color:#fff}
.btn--ink{border-color:rgba(36,26,43,.28);color:var(--c-ink)}
.btn--ink:hover{border-color:var(--c-wine);color:var(--c-wine);background:rgba(110,27,51,.06)}

/* ---------- 7. Breadcrumb ---------- */
.breadcrumb{font-size:var(--fs-12);letter-spacing:.06em;color:var(--c-mist)}
.breadcrumb ol{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.breadcrumb li+li::before{content:"/";margin-right:8px;color:var(--c-gold);opacity:.65}
.breadcrumb a{text-decoration:none;border-bottom:1px solid transparent;transition:border-color .2s var(--ease),color .2s var(--ease)}
.breadcrumb a:hover{color:var(--c-gold-soft);border-bottom-color:var(--c-gold)}
.breadcrumb--ink{color:#6B6172}

/* ---------- 8. Prose ---------- */
.prose{max-width:720px}
.prose p{margin-bottom:1.1em;max-width:none}
.prose h2{margin:1.8em 0 .6em}
.prose h3{margin:1.5em 0 .5em}
.prose ul{margin-bottom:1.2em}
.prose ul li{position:relative;padding-left:22px;margin-bottom:.5em}
.prose ul li::before{content:"";position:absolute;left:0;top:.78em;width:10px;height:1px;background:var(--c-gold)}
.prose a{text-decoration:none;border-bottom:1px solid var(--c-gold)}
.prose a:hover{color:var(--c-wine)}
.section--dark .prose a:hover,.section--cellar .prose a:hover,.section--jewel .prose a:hover{color:var(--c-gold-soft)}

/* ---------- 9. Grid & cards ---------- */
.grid{display:grid;gap:clamp(20px,3vw,34px)}
.grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid--asym{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
.grid--rail{grid-template-columns:minmax(0,3fr) minmax(0,9fr)}

.card{
  position:relative;
  border:1px solid var(--line-dark);
  background:rgba(58,28,78,.38);
  padding:clamp(20px,2.4vw,30px);
  box-shadow:var(--shadow-card);
  transition:transform .3s var(--ease),border-color .3s var(--ease),background-color .3s var(--ease);
}
.card:hover{transform:translateY(-2px);border-color:var(--line-gold);background:rgba(58,28,78,.6)}
.card__tag{
  display:block;
  font-family:var(--font-mono);
  font-size:var(--fs-12);
  letter-spacing:.2em;
  color:var(--c-gold);
  margin-bottom:10px;
}
.card__title{font-size:var(--fs-22);letter-spacing:0;margin-bottom:8px;color:var(--c-paper)}
.card__meta{font-size:var(--fs-12);letter-spacing:.06em;color:var(--c-mist)}
.card--paper{background:#fff;border-color:var(--c-lilac);box-shadow:0 16px 34px -32px rgba(36,26,43,.6)}
.card--paper:hover{background:#fff;border-color:var(--c-gold)}
.card--paper .card__title{color:var(--c-night)}
.card--paper .card__meta{color:#6B6172}

/* ---------- 10. Stats ---------- */
.stat{display:flex;flex-direction:column;gap:6px}
.stat__value{
  font-family:var(--font-mono);
  font-weight:500;
  font-size:clamp(1.75rem,3.2vw,2.6rem);
  line-height:1;
  color:var(--c-gold-soft);
}
.stat__label{font-size:var(--fs-12);letter-spacing:.16em;color:var(--c-mist)}

/* ---------- 11. Media placeholders ---------- */
.media{
  position:relative;
  overflow:hidden;
  margin:0;
  background:linear-gradient(150deg,#241333 0%,#3A1C4E 58%,#10403C 100%);
  border:1px solid var(--line-gold-soft);
}
.media::after{
  content:"";
  position:absolute;inset:0;
  background-image:repeating-linear-gradient(115deg,rgba(201,162,74,.1) 0 1px,transparent 1px 17px);
  pointer-events:none;
}
.media img,.media picture,.media svg{width:100%;height:100%;object-fit:cover;position:relative;z-index:1}
.media--wide{aspect-ratio:16/9}
.media--tall{aspect-ratio:3/4}
.media--square{aspect-ratio:1/1}
.media--band{aspect-ratio:21/9}
.media__caption{font-size:var(--fs-12);color:var(--c-mist);margin-top:10px;letter-spacing:.04em}

/* ---------- 12. Site header ---------- */
.site-header{position:relative;z-index:60;background:var(--c-night);color:var(--c-mist)}

.header-utility{border-bottom:1px solid var(--line-gold-soft);background:rgba(27,15,38,.9)}
.header-utility__inner{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:46px;padding-block:6px}
.header-utility__line{
  margin:0;max-width:none;
  font-size:var(--fs-12);letter-spacing:.16em;color:var(--c-gold-soft);opacity:.85;
}
.header-utility__tools{display:flex;align-items:center;gap:14px}

.search-mini{
  display:flex;align-items:center;gap:8px;
  border:1px solid var(--line-gold);
  background:rgba(58,28,78,.45);
  padding:4px 10px;
  transition:border-color .2s var(--ease);
}
.search-mini:focus-within{border-color:var(--c-gold)}
.search-mini__icon{position:relative;width:11px;height:11px;border:1px solid var(--c-gold);border-radius:50%;flex:none}
.search-mini__icon::after{
  content:"";position:absolute;left:8px;top:8px;width:7px;height:1px;
  background:var(--c-gold);transform:rotate(45deg);transform-origin:0 0;
}
.search-mini__input{
  width:150px;font-size:var(--fs-14);color:var(--c-paper);padding:2px 0;
}
.search-mini__input::placeholder{color:rgba(183,177,192,.75)}

.tool-link{
  font-size:var(--fs-12);letter-spacing:.1em;color:var(--c-mist);text-decoration:none;
  padding-bottom:2px;border-bottom:1px solid transparent;
  transition:color .2s var(--ease),border-color .2s var(--ease);
}
.tool-link:hover{color:var(--c-gold-soft);border-bottom-color:var(--c-gold)}

.font-scale{display:flex;border:1px solid var(--line-gold)}
.font-scale__btn{
  font-size:var(--fs-12);letter-spacing:.04em;color:var(--c-mist);
  padding:3px 9px;transition:color .2s var(--ease),background-color .2s var(--ease);
}
.font-scale__btn:hover,.font-scale__btn:focus-visible{color:var(--c-night);background:var(--c-gold)}

.masthead-block{
  padding-block:26px 20px;
  text-align:center;
  border-bottom:1px solid var(--line-gold);
}
.masthead__brand{
  display:inline-block;
  font-family:var(--font-display);
  font-weight:900;
  font-size:clamp(1.9rem,4.6vw,3.3rem);
  line-height:1.12;
  letter-spacing:-.02em;
  color:var(--c-paper);
  text-decoration:none;
  transition:color .24s var(--ease);
}
.masthead__brand:hover{color:var(--c-gold-soft)}
.masthead__mark{
  display:block;margin-top:10px;
  font-family:var(--font-mono);
  font-size:var(--fs-12);
  letter-spacing:.42em;
  text-transform:uppercase;
  color:var(--c-gold);
}

.nav-band{
  position:relative;
  background:var(--c-night);
  border-bottom:1px solid var(--line-gold);
  z-index:70;
}
.nav-band.is-fixed{
  position:fixed;top:0;left:0;right:0;
  background:rgba(27,15,38,.985);
  box-shadow:0 16px 34px -22px rgba(0,0,0,.95);
}
.nav-band__inner{display:flex;flex-direction:column;align-items:center}

.nav-toggle{display:none}

.site-nav{width:100%}
.nav-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center}
.nav-row--primary{min-height:58px}
.nav-row--secondary{
  width:100%;gap:12px;padding:0 0 14px;
  border-top:1px solid var(--line-dark);
  padding-top:12px;
}
.nav-link{
  position:relative;display:inline-block;
  padding:10px 16px;
  font-size:var(--fs-14);
  letter-spacing:.08em;
  color:var(--c-mist);
  text-decoration:none;
  transition:color .2s var(--ease);
}
.nav-link::after{
  content:"";position:absolute;left:16px;right:16px;bottom:6px;height:1px;
  background:var(--c-gold);transform:scaleX(0);transform-origin:left;
  transition:transform .28s var(--ease);
}
.nav-link:hover{color:var(--c-gold-soft)}
.nav-link:hover::after{transform:scaleX(1)}
.nav-link[aria-current="page"]{color:var(--c-gold-soft)}
.nav-link[aria-current="page"]::after{transform:scaleX(1)}

.nav-link--cta{
  font-family:var(--font-mono);
  font-size:var(--fs-12);
  letter-spacing:.14em;
  color:var(--c-gold-soft);
  padding:6px 18px;
  border:1px solid var(--line-gold);
  background:rgba(110,27,51,.4);
  transition:background-color .24s var(--ease),border-color .24s var(--ease),color .24s var(--ease);
}
.nav-link--cta::after{display:none}
.nav-link--cta:hover{background:var(--c-wine);border-color:var(--c-gold);color:#fff}

/* ---------- 13. Site footer ---------- */
.site-footer{
  background:var(--c-night);
  color:var(--c-mist);
  border-top:1px solid var(--line-gold);
  margin-top:0;
}
.footer-top{
  display:grid;
  grid-template-columns:minmax(0,4fr) minmax(0,8fr);
  gap:clamp(28px,4vw,56px);
  padding-block:clamp(40px,5vw,68px) clamp(28px,4vw,44px);
  border-bottom:1px solid var(--line-dark);
}
.footer-brand__name{
  font-family:var(--font-display);
  font-weight:900;
  font-size:clamp(1.5rem,2.6vw,2.1rem);
  letter-spacing:-.01em;
  color:var(--c-paper);
}
.footer-brand__line{margin-top:12px;font-size:var(--fs-14);color:var(--c-mist);max-width:34ch}
.footer-brand__meta{margin-top:10px;font-family:var(--font-mono);font-size:var(--fs-12);letter-spacing:.04em;color:rgba(183,177,192,.78)}

.footer-cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(18px,2.4vw,30px)}
.footer-col__title{
  font-family:var(--font-mono);
  font-weight:500;
  font-size:var(--fs-12);
  letter-spacing:.24em;
  color:var(--c-gold);
  margin-bottom:14px;
  line-height:1.4;
}
.footer-col__list li{margin-bottom:9px}
.footer-col__list a{
  font-size:var(--fs-14);
  color:var(--c-mist);
  text-decoration:none;
  padding-bottom:1px;
  border-bottom:1px solid transparent;
  transition:color .2s var(--ease),border-color .2s var(--ease);
}
.footer-col__list a:hover{color:var(--c-gold-soft);border-bottom-color:var(--c-gold)}

.footer-contact{
  display:flex;flex-wrap:wrap;align-items:center;gap:14px 32px;
  padding-block:clamp(22px,3vw,32px);
  border-bottom:1px solid var(--line-dark);
}
.footer-contact__item{
  display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin:0;max-width:none;
  font-size:var(--fs-14);color:var(--c-mist);
}
.footer-contact__value{color:var(--c-gold-soft);font-family:var(--font-mono);letter-spacing:.02em}

.copy-btn{
  border:1px solid var(--line-gold-soft);
  color:var(--c-gold);
  font-size:var(--fs-12);
  letter-spacing:.1em;
  padding:3px 10px;
  transition:border-color .2s var(--ease),color .2s var(--ease),background-color .2s var(--ease);
}
.copy-btn:hover{border-color:var(--c-gold);background:rgba(201,162,74,.12)}
.copy-btn.is-copied{background:var(--c-gold);border-color:var(--c-gold);color:var(--c-night)}

.footer-bottom{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 26px;
  padding-block:20px 30px;
  font-size:var(--fs-12);
  color:rgba(183,177,192,.82);
}
.footer-legal,.footer-note,.footer-since{margin:0;max-width:none}
.footer-legal{font-family:var(--font-mono);letter-spacing:.06em}

/* ---------- 14. Global widgets ---------- */
.scroll-meter{
  position:fixed;left:0;top:0;height:2px;width:100%;
  transform:scaleX(0);transform-origin:0 50%;
  background:linear-gradient(90deg,var(--c-wine),var(--c-gold));
  z-index:130;pointer-events:none;
}
.to-top{
  position:fixed;right:clamp(16px,3vw,32px);bottom:clamp(16px,3vw,32px);z-index:120;
  display:inline-flex;align-items:center;gap:8px;
  padding:10px 16px;
  border:1px solid var(--line-gold);
  background:rgba(27,15,38,.94);
  color:var(--c-gold-soft);
  font-size:var(--fs-12);
  letter-spacing:.16em;
  opacity:0;visibility:hidden;transform:translateY(12px);
  transition:opacity .3s var(--ease),transform .3s var(--ease),visibility .3s var(--ease),
             border-color .24s var(--ease),background-color .24s var(--ease);
}
.to-top.is-visible{opacity:1;visibility:visible;transform:none}
.to-top:hover{border-color:var(--c-gold);background:var(--c-wine)}

html.js .reveal{
  opacity:0;transform:translateY(12px);
  transition:opacity .32s var(--ease),transform .32s var(--ease);
}
html.js .reveal.is-visible{opacity:1;transform:none}

/* ---------- 15. Responsive ---------- */
@media (max-width:1024px){
  .grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (max-width:960px){
  .footer-top{grid-template-columns:minmax(0,1fr)}
  .footer-cols{grid-template-columns:repeat(2,minmax(0,1fr))}
  .header-utility__line{display:none}
}

@media (max-width:900px){
  .grid--2,.grid--3,.grid--asym,.grid--rail{grid-template-columns:minmax(0,1fr)}
}

@media (max-width:860px){
  .header-utility__inner{min-height:42px;gap:10px}
  .search-mini__input{width:104px}
  .masthead-block{padding-block:18px 15px}
  .masthead__mark{letter-spacing:.3em;margin-top:7px}

  .nav-band__inner{padding-block:0}
  .nav-toggle{
    display:flex;align-items:center;justify-content:space-between;gap:14px;
    width:100%;
    padding:15px 0;
    color:var(--c-gold-soft);
    font-size:var(--fs-14);
    letter-spacing:.2em;
  }
  .nav-toggle__bars{position:relative;width:18px;height:10px;flex:none}
  .nav-toggle__bars::before,
  .nav-toggle__bars::after{
    content:"";position:absolute;left:0;width:100%;height:1px;background:currentColor;
    transition:transform .26s var(--ease),top .26s var(--ease),bottom .26s var(--ease);
  }
  .nav-toggle__bars::before{top:0}
  .nav-toggle__bars::after{bottom:0}
  .nav-toggle[aria-expanded="true"] .nav-toggle__bars::before{top:5px;transform:rotate(45deg)}
  .nav-toggle[aria-expanded="true"] .nav-toggle__bars::after{bottom:4px;transform:rotate(-45deg)}

  .site-nav{display:none;padding-bottom:14px}
  .site-nav[data-open]{display:block}

  .nav-row{flex-direction:column;align-items:stretch;justify-content:flex-start}
  .nav-row--primary{min-height:0}
  .nav-row--secondary{
    border-top:1px solid var(--line-dark);
    padding-top:14px;margin-top:6px;gap:0;
  }
  .nav-link{
    display:block;
    padding:13px 4px;
    font-size:var(--fs-17);
    border-bottom:1px solid var(--line-dark);
  }
  .nav-link::after{display:none}
  .nav-link[aria-current="page"]{
    color:var(--c-gold-soft);
    padding-left:14px;
    box-shadow:inset 2px 0 0 var(--c-gold);
  }
  .nav-link--cta{
    border:1px solid var(--line-gold);
    margin-top:8px;
    text-align:center;
    padding:11px 16px;
    font-size:var(--fs-14);
  }
  .nav-link--cta[aria-current="page"]{padding-left:16px;box-shadow:none}
}

@media (max-width:520px){
  .footer-cols{grid-template-columns:minmax(0,1fr)}
  .footer-bottom{flex-direction:column;align-items:flex-start}
  .to-top{right:14px;bottom:14px;padding:9px 13px}
}

/* ---------- 16. Motion preferences ---------- */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
  html.js .reveal{opacity:1;transform:none}
  .card:hover,.btn:hover{transform:none}
}
