  :root{
    --deep:#03111f;
    --navy:#072438;
    --navy2:#0b3553;
    --teal:#0f5e7a;
    --foam:#7fd1e0;
    --gold:#d9b164;
    --gold-light:#f0d79a;
    --paper:#f4f1ea;
    --ink:#eaf3f7;
    --muted:#9fb8c6;
    --maxw:1180px;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  .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}
  html{scroll-behavior:smooth;scrollbar-gutter:stable both-edges;overflow-x:hidden}
  body{
    font-family:"Noto Sans TC",system-ui,sans-serif;
    background:var(--deep);
    color:var(--ink);
    line-height:1.8;
    overflow-x:hidden;
  }
  h1,h2,h3,.serif{font-family:"Noto Serif TC",serif}
  img{display:block;max-width:100%}
  a{color:inherit;text-decoration:none}
  .wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
  .gold{color:var(--gold)}

  /* ---------- NAV ---------- */
  header.nav{
    position:fixed;top:0;left:0;right:0;z-index:100;
    transition:background .4s, padding .4s, box-shadow .4s;
    padding:18px 0;
  }
  header.nav.scrolled{
    background:rgba(3,17,31,.92);
    backdrop-filter:blur(10px);
    box-shadow:0 6px 24px rgba(0,0,0,.45);
    padding:10px 0;
  }
  .nav .wrap{display:flex;align-items:center;justify-content:space-between}
  .brand{display:flex;align-items:center;gap:12px;font-family:"Noto Serif TC";font-weight:700;font-size:1.15rem;letter-spacing:1px}
  .brand img{width:42px;height:42px;border-radius:50%;background:#fff;object-fit:contain;padding:3px;box-shadow:0 0 0 2px var(--gold)}
  .brand-bw img{width:auto;height:46px;border-radius:0;background:none;padding:0;box-shadow:none;transition:height .4s}
  header.nav.scrolled .brand-bw img{height:38px}
  .navlinks{display:flex;gap:30px;align-items:center}
  .navlinks a{font-size:.95rem;color:var(--ink);position:relative;padding:4px 0;transition:color .25s}
  .navlinks a::after{content:"";position:absolute;left:0;bottom:-2px;height:2px;width:0;background:var(--gold);transition:width .3s}
  .navlinks a:hover{color:var(--gold-light)}
  .navlinks a:hover::after{width:100%}
  .nav-cta{background:var(--gold);color:var(--deep)!important;padding:9px 20px;border-radius:30px;font-weight:700;transition:transform .25s,box-shadow .25s}
  .nav-cta:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(217,177,100,.4)}
  .nav-cta::after{display:none}
  .line-btn{display:inline-flex;align-items:center;transition:transform .25s,filter .25s;line-height:0}
  .line-btn img{border-radius:6px;display:block}
  .line-btn:hover{transform:translateY(-2px);filter:drop-shadow(0 6px 14px rgba(6,199,85,.45))}
  .line-btn::after{display:none}
  .burger{display:none;flex-direction:column;gap:5px;cursor:pointer;background:none;border:0;padding:6px}
  .burger span{width:26px;height:2px;background:var(--ink);transition:.3s}

  /* ---------- HERO ---------- */
  .hero{
    position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;text-align:center;
    background:linear-gradient(rgba(3,17,31,.55),rgba(3,17,31,.8)),var(--navy) url("img/bg.jpg") center/cover no-repeat fixed;
    background-image:linear-gradient(rgba(3,17,31,.55),rgba(3,17,31,.8)),image-set(url("img/bg.webp") type("image/webp") 1x, url("img/bg.jpg") type("image/jpeg") 1x);
  }
  .hero-inner{position:relative;z-index:2;padding:120px 24px 80px;max-width:900px;width:100%;margin-inline:auto;animation:rise 1.2s ease both}
  .hero-logo{width:120px;height:120px;margin:0 auto 26px;border-radius:50%;background:#fff;object-fit:contain;padding:8px;box-shadow:0 0 0 3px var(--gold),0 12px 40px rgba(0,0,0,.5)}
  .eyebrow{letter-spacing:.5em;text-indent:.5em;font-size:.8rem;color:var(--gold-light);text-transform:uppercase;margin-bottom:18px}
  .hero h1{font-size:clamp(2.4rem,6vw,4.4rem);font-weight:900;letter-spacing:3px;text-indent:3px;line-height:1.2;text-shadow:0 4px 30px rgba(0,0,0,.6)}
  .hero .sub{font-family:"Noto Serif TC";font-size:clamp(1.05rem,2.4vw,1.5rem);color:var(--foam);margin-top:18px;font-weight:600}
  .hero .desc{color:#cfe2ec;margin-top:14px;font-size:1rem}
  .hero-btns{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin-top:36px}
  .btn{display:inline-flex;align-items:center;gap:8px;padding:14px 30px;border-radius:34px;font-weight:700;font-size:1rem;transition:transform .25s,box-shadow .25s,background .25s}
  .btn-gold{background:var(--gold);color:var(--deep)}
  .btn-gold:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(217,177,100,.45)}
  .btn-menu{background:linear-gradient(135deg,#15a3c4,#0f5e7a);color:#fff;box-shadow:0 8px 22px rgba(15,94,122,.45)}
  .btn-menu:hover{transform:translateY(-3px);box-shadow:0 14px 32px rgba(21,163,196,.55);filter:brightness(1.08)}
  .btn-ghost{border:1.5px solid rgba(255,255,255,.6);color:#fff}
  .btn-ghost:hover{background:rgba(255,255,255,.12);transform:translateY(-3px)}
  .scroll-ind{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);z-index:2;color:var(--foam);font-size:1.6rem;animation:bob 2s infinite}
  @keyframes bob{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,10px)}}
  @keyframes rise{from{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}

  /* ---------- DEFINITIONS & COMPARISON ---------- */
  #glossary{background:linear-gradient(180deg,var(--navy2),var(--navy))}
  .gloss-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:960px;margin:0 auto}
  .gloss-item{background:rgba(255,255,255,.04);border:1px solid rgba(127,209,224,.2);border-radius:14px;padding:22px 24px}
  .gloss-item dt{font-family:"Noto Serif TC";color:var(--gold-light);font-weight:700;font-size:1.05rem;margin-bottom:8px}
  .gloss-item dd{color:#d4e4ec;font-size:.92rem;line-height:1.75}
  @media(max-width:700px){.gloss-grid{grid-template-columns:1fr}}

  /* ---------- SECTION SHELL ---------- */
  section{padding:96px 0;position:relative}
  .sec-head{text-align:center;margin-bottom:54px}
  .sec-head .kicker{color:var(--gold);letter-spacing:.4em;font-size:.78rem;text-transform:uppercase}
  .sec-head h2{font-size:clamp(1.9rem,4vw,2.8rem);font-weight:900;margin-top:10px;letter-spacing:2px}
  .sec-head .line{width:64px;height:3px;background:var(--gold);margin:18px auto 0;border-radius:3px}
  .reviews-agg{margin-top:18px;color:var(--muted);font-size:.92rem}
  .reveal{opacity:0;transform:translateY(40px);transition:opacity .8s,transform .8s}
  .reveal.in{opacity:1;transform:none}

  /* ---------- ABOUT ---------- */
  #about{background:linear-gradient(180deg,var(--deep),var(--navy))}
  .about-grid{display:grid;grid-template-columns:1fr 1fr;gap:54px;align-items:center}
  .about-text p{margin-bottom:16px;color:#d4e4ec}
  .about-text .lead{font-family:"Noto Serif TC";font-size:1.35rem;color:var(--gold-light);font-weight:600;line-height:1.7}
  .stats{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;margin-top:30px}
  .stat{background:rgba(255,255,255,.04);border:1px solid rgba(217,177,100,.25);border-radius:14px;padding:20px;text-align:center}
  .stat b{display:block;font-family:"Noto Serif TC";font-size:1.7rem;color:var(--gold);font-weight:900;white-space:nowrap}
  .stat span{font-size:.85rem;color:var(--muted)}
  .about-img{position:relative;border-radius:18px;overflow:hidden;box-shadow:0 20px 50px rgba(0,0,0,.5);aspect-ratio:1/1}
  .about-img img{width:100%;height:100%;object-fit:cover}
  .about-img .frame{position:absolute;inset:14px;border:1px solid rgba(255,255,255,.4);border-radius:12px;pointer-events:none}

  /* ---------- MENU ---------- */
  #menu{background:var(--navy)}
  .menu-card{max-width:760px;margin:0 auto;background:rgba(255,255,255,.04);border:1px solid rgba(217,177,100,.3);border-radius:18px;padding:18px;cursor:zoom-in;transition:transform .3s,box-shadow .3s}
  .menu-card:hover{transform:translateY(-4px);box-shadow:0 18px 44px rgba(0,0,0,.5)}
  .menu-card img{width:100%;border-radius:10px}
  .menu-note{text-align:center;color:var(--muted);margin-top:18px;font-size:.92rem}
  .price-row{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-bottom:36px}
  .price-tag{background:rgba(217,177,100,.12);border:1px solid rgba(217,177,100,.4);color:var(--gold-light);padding:8px 20px;border-radius:30px;font-size:.92rem;font-weight:500}

  /* ---------- BANQUET ---------- */
  #banquet{background:linear-gradient(180deg,var(--navy),var(--navy2))}
  .banquet-lead{text-align:center;max-width:760px;margin:0 auto 48px;color:#d4e4ec;font-size:1.08rem}
  .banquet-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
  .bq-card{background:rgba(255,255,255,.04);border:1px solid rgba(217,177,100,.25);border-radius:16px;padding:30px 24px;text-align:center;transition:transform .3s,box-shadow .3s,border-color .3s}
  .bq-card:hover{transform:translateY(-6px);box-shadow:0 18px 40px rgba(0,0,0,.45);border-color:rgba(217,177,100,.6)}
  .bq-ic{font-size:2.6rem;margin-bottom:14px}
  .bq-card h3{font-size:1.25rem;color:var(--gold-light);font-weight:700;margin-bottom:10px;letter-spacing:1px}
  .bq-card p{font-size:.94rem;color:var(--muted);line-height:1.75}
  .reviews-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
  .rv-card{background:rgba(255,255,255,.04);border:1px solid rgba(217,177,100,.25);border-radius:16px;padding:26px 24px;text-align:left;display:flex;flex-direction:column;transition:transform .3s,box-shadow .3s,border-color .3s}
  .rv-card:hover{transform:translateY(-6px);box-shadow:0 18px 40px rgba(0,0,0,.45);border-color:rgba(217,177,100,.6)}
  .rv-stars{color:var(--gold);letter-spacing:2px;font-size:1rem;margin-bottom:12px}
  .rv-text{font-size:.95rem;color:var(--ink);line-height:1.85;margin-bottom:18px;flex:1}
  .rv-name{font-size:.95rem;color:var(--gold-light);font-weight:700;letter-spacing:.5px}
  .rv-meta{font-size:.8rem;color:var(--muted);margin-top:3px}
  .reviews-cta{text-align:center;margin-top:42px}
  .reviews-note{text-align:center;color:var(--muted);font-size:.82rem;margin-top:20px}
  .banquet-cta{text-align:center;margin-top:46px;color:#d4e4ec}
  .banquet-cta .hero-btns{margin-top:18px}

  /* ---------- BOOKING ---------- */
  #booking{background:linear-gradient(180deg,var(--navy2),var(--deep))}
  .booking-lead{text-align:center;max-width:720px;margin:0 auto 50px;color:#d4e4ec;font-size:1.08rem}
  .steps{display:flex;align-items:stretch;justify-content:center;gap:14px;flex-wrap:wrap}
  .step{flex:1;min-width:220px;max-width:300px;background:rgba(255,255,255,.04);border:1px solid rgba(127,209,224,.25);border-radius:16px;padding:34px 24px 28px;text-align:center;position:relative;transition:transform .3s,box-shadow .3s}
  .step:hover{transform:translateY(-6px);box-shadow:0 18px 40px rgba(0,0,0,.45)}
  .step-no{width:52px;height:52px;margin:0 auto 16px;border-radius:50%;background:linear-gradient(135deg,#15a3c4,#0f5e7a);color:#fff;font-family:"Noto Serif TC";font-size:1.5rem;font-weight:900;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 16px rgba(15,94,122,.5)}
  .step h3{font-size:1.2rem;color:var(--foam);font-weight:700;margin-bottom:10px;letter-spacing:1px}
  .step p{font-size:.94rem;color:var(--muted);line-height:1.75}
  .step-arrow{display:flex;align-items:center;color:var(--gold);font-size:1.8rem;font-weight:700}
  .booking-cta{text-align:center;margin-top:46px}
  .line-btn-lg{display:inline-flex;align-items:center;gap:14px;background:#06c755;color:#fff;padding:15px 36px;border-radius:40px;font-weight:700;font-size:1.05rem;box-shadow:0 10px 26px rgba(6,199,85,.4);transition:transform .25s,box-shadow .25s}
  .line-btn-lg img{border-radius:8px;display:block}
  .line-btn-lg:hover{transform:translateY(-3px);box-shadow:0 16px 34px rgba(6,199,85,.55)}
  .booking-note{margin-top:18px;color:var(--muted);font-size:.88rem}

  /* ---------- GALLERY ---------- */
  #gallery{background:linear-gradient(180deg,var(--navy),var(--deep))}
  .grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
  .gitem{position:relative;overflow:hidden;border-radius:12px;aspect-ratio:1;cursor:pointer;background:var(--navy2)}
  .gitem img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
  .gitem::after{content:"🔍";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(3,17,31,.55);color:var(--gold-light);font-size:1.4rem;opacity:0;transition:opacity .3s;pointer-events:none}
  .gitem:hover img{transform:scale(1.12)}
  .gitem:hover::after{opacity:1}

  /* ---------- FAQ ---------- */
  #faq{background:linear-gradient(180deg,var(--deep),var(--navy))}
  .faq-list{max-width:820px;margin:0 auto;display:flex;flex-direction:column;gap:14px}
  .faq-item{background:rgba(255,255,255,.04);border:1px solid rgba(127,209,224,.2);border-radius:14px;overflow:hidden;transition:border-color .3s}
  .faq-item[open]{border-color:rgba(217,177,100,.5)}
  .faq-item summary{list-style:none;cursor:pointer;padding:20px 24px;font-family:"Noto Serif TC";font-size:1.1rem;font-weight:600;color:var(--ink);display:flex;justify-content:space-between;align-items:center;gap:14px}
  .faq-item summary::-webkit-details-marker{display:none}
  .faq-item summary::after{content:"+";color:var(--gold);font-size:1.6rem;font-weight:300;line-height:1;transition:transform .3s;flex:0 0 auto}
  .faq-item[open] summary::after{transform:rotate(45deg)}
  .faq-item summary:hover{color:var(--gold-light)}
  .faq-a{padding:0 24px 22px;color:#d4e4ec;font-size:.98rem;line-height:1.85}

  /* ---------- CONTACT ---------- */
  #contact{background:linear-gradient(180deg,var(--navy),var(--deep))}
  .contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px}
  .info-card{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:30px}
  .info-row{display:flex;gap:16px;align-items:flex-start;padding:16px 0;border-bottom:1px solid rgba(255,255,255,.07)}
  .info-row:last-child{border-bottom:0}
  .info-row .ic{font-size:1.3rem;width:42px;height:42px;flex:0 0 42px;display:flex;align-items:center;justify-content:center;background:rgba(217,177,100,.14);border-radius:50%;color:var(--gold)}
  .info-row b{display:block;font-size:.78rem;color:var(--muted);letter-spacing:1px;text-transform:uppercase;margin-bottom:2px}
  .info-row a,.info-row span{color:var(--ink);font-size:1.02rem}
  .hours{width:100%;border-collapse:collapse;margin-top:6px;font-size:.96rem}
  .hours td{padding:6px 0;border-bottom:1px solid rgba(255,255,255,.06);color:#d4e4ec}
  .hours tr:last-child td{border-bottom:0}
  .hours td:first-child{width:74px;color:var(--muted);white-space:nowrap}
  .hours td:last-child{text-align:right;font-variant-numeric:tabular-nums}
  .hours tr.today td{color:var(--gold-light);font-weight:700}
  .hours tr.today td:first-child{color:var(--gold)}
  .info-row a:hover{color:var(--gold-light)}
  .socials{display:flex;gap:14px;margin-top:22px}
  .socials a{flex:1;text-align:center;padding:13px;border-radius:12px;font-weight:700;transition:transform .25s,opacity .25s}
  .socials a:hover{transform:translateY(-3px);opacity:.92}
  .fb{background:#1877f2;color:#fff}
  .ig{background:linear-gradient(45deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888);color:#fff}
  .map-wrap{border-radius:16px;overflow:hidden;min-height:340px;border:1px solid rgba(255,255,255,.08)}
  .map-wrap iframe{width:100%;height:100%;min-height:340px;border:0;filter:grayscale(.2) contrast(1.05)}

  /* ---------- FOOTER ---------- */
  footer{background:#020c16;padding:44px 0 30px;text-align:center;border-top:1px solid rgba(217,177,100,.2)}
  footer .brand{justify-content:center;margin-bottom:14px}
  footer p{color:var(--muted);font-size:.88rem;margin-top:6px}
  .line-fab{position:fixed;right:22px;bottom:22px;width:58px;height:58px;border-radius:50%;overflow:hidden;box-shadow:0 8px 22px rgba(0,0,0,.45);transition:transform .25s,box-shadow .25s;z-index:90;display:block}
  .line-fab img{width:100%;height:100%;object-fit:cover;display:block}
  .line-fab:hover{transform:translateY(-4px);box-shadow:0 12px 28px rgba(6,199,85,.5)}

  /* ---------- LIGHTBOX ---------- */
  .lb{position:fixed;inset:0;background:rgba(2,8,14,.95);z-index:200;display:none;align-items:center;justify-content:center;padding:30px;cursor:zoom-out}
  .lb.open{display:flex;animation:fade .3s}
  .lb img{max-width:92vw;max-height:90vh;border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
  .lb .close{position:absolute;top:20px;right:28px;font-size:2.4rem;color:#fff;cursor:pointer;line-height:1}
  @keyframes fade{from{opacity:0}to{opacity:1}}

  /* ---------- RESPONSIVE ---------- */
  @media(max-width:880px){
    .navlinks{position:fixed;inset:0 0 0 auto;width:260px;background:rgba(3,17,31,.98);flex-direction:column;justify-content:center;gap:26px;transform:translateX(100%);transition:transform .35s;backdrop-filter:blur(8px)}
    .navlinks.open{transform:none}
    .burger{display:flex;z-index:101}
    .about-grid,.contact-grid{grid-template-columns:1fr;gap:34px}
    .grid{grid-template-columns:repeat(2,1fr)}
    .banquet-grid{grid-template-columns:repeat(2,1fr)}
    .reviews-grid{grid-template-columns:1fr}
    .step-arrow{display:none}
    .step{max-width:none}
    .hero{background-attachment:scroll;background-position:82% center}
    section{padding:72px 0}
  }

  /* ---------- SUBPAGES (privacy / terms / 404) ---------- */
  .breadcrumb{max-width:var(--maxw);margin:0 auto;padding:110px 24px 0;font-size:.85rem;color:var(--muted)}
  .breadcrumb a{color:var(--foam)}
  .breadcrumb a:hover{color:var(--gold-light)}
  .legal{background:linear-gradient(180deg,var(--deep),var(--navy));padding:40px 0 96px}
  .legal .wrap{max-width:860px}
  .legal h1{font-size:clamp(1.9rem,4vw,2.6rem);font-weight:900;margin-bottom:8px}
  .legal .updated{color:var(--muted);font-size:.85rem;margin-bottom:40px}
  .legal h2{font-size:1.3rem;color:var(--gold-light);font-weight:700;margin:36px 0 14px;letter-spacing:.5px}
  .legal p,.legal li{color:#d4e4ec;font-size:.98rem;line-height:1.9;margin-bottom:12px}
  .legal ul,.legal ol{padding-left:22px;margin-bottom:16px}
  .legal a{color:var(--foam);text-decoration:underline;text-underline-offset:3px}
  .legal a:hover{color:var(--gold-light)}
  .notfound{min-height:80vh;display:flex;align-items:center;justify-content:center;text-align:center;background:linear-gradient(180deg,var(--deep),var(--navy))}
  .notfound .wrap{max-width:640px}
  .notfound .code{font-family:"Noto Serif TC";font-size:clamp(4rem,12vw,7rem);font-weight:900;color:var(--gold);line-height:1}
  .notfound h1{font-size:clamp(1.5rem,4vw,2.2rem);margin:10px 0 16px}
  .notfound p{color:#d4e4ec;margin-bottom:30px}
  .notfound .hero-btns{margin-top:10px}
