  :root{
    --bg: #14100d;
    --bg-alt: #1c1611;
    --panel: #211a14;
    --ink: #ece4d6;
    --gold: #b8924f;
    --gold-deep: #d9bd85;
    --green: #b8924f;
    --text-dim: #b6a891;
    --line: #3a2f24;
    --dark: #14100d;
  }
  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth;}
  body{
    background: var(--bg);
    color: var(--ink);
    font-family: 'Noto Serif JP', serif;
    font-weight: 300;
    line-height: 1.9;
    overflow-x: hidden;
  }
  h1,h2,h3, .brand, .quote{
    font-family: 'Cormorant Garamond', 'Noto Serif JP', serif;
    font-weight: 500;
    letter-spacing: 0.04em;
  }
  a{color:inherit; text-decoration:none;}
  img{max-width:100%; display:block;}
  .container{
    max-width: 1120px;
    margin: 0 auto;
    padding: 0 32px;
  }
  .eyebrow{
    font-size: 12px;
    letter-spacing: 0.35em;
    color: var(--gold-deep);
    text-transform: uppercase;
    margin-bottom: 18px;
    display:block;
  }
  /* Header */
  header{
    position: fixed;
    top:0; left:0; right:0;
    z-index: 100;
    padding: 22px 0;
    background: linear-gradient(to bottom, rgba(20,16,13,0.9), transparent);
    transition: background 0.3s ease, padding 0.3s ease;
  }
  header.scrolled{
    background: rgba(20,16,13,0.96);
    border-bottom: 1px solid var(--line);
    padding: 14px 0;
  }
  .nav-row{
    display:flex;
    align-items:center;
    justify-content: space-between;
    gap: 32px;
  }
  .container.nav-row{ max-width: 1320px; }
  .brand{
    font-size: 21px;
    color: var(--ink);
    letter-spacing: 0.1em;
    display:flex; align-items:center; gap: 12px;
    flex-shrink: 0;
  }
  .brand-mark{
    height: 40px; width:auto; border-radius: 3px;
    border: 1px solid var(--line);
  }
  .brand-text{ display:flex; flex-direction:column; line-height:1.2; }
  .brand-title span{color: var(--gold-deep);}
  .brand-subtitle{
    font-family: 'Cormorant Garamond', serif;
    font-size: 9.5px; font-weight: 400; font-style: normal;
    letter-spacing: 0.32em; text-transform: uppercase;
    color: var(--gold-deep); opacity: 0.85; margin-top: 4px;
  }
  footer .brand span{color: var(--gold-deep);}
  nav ul{
    list-style:none;
    display:flex;
    align-items:center;
    flex-wrap: nowrap;
    gap: 30px;
  }
  nav ul li{ flex-shrink:0; }
  nav a{
    font-size: 13px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--text-dim);
    padding-bottom: 4px;
    border-bottom: 1px solid transparent;
    transition: color 0.25s, border-color 0.25s;
    white-space: nowrap;
  }
  nav a{ position:relative; }
  nav a::after{
    content:""; position:absolute; left:0; bottom:-1px; width:100%; height:1px;
    background: var(--gold); transform: scaleX(0); transform-origin:left;
    transition: transform 0.4s cubic-bezier(.16,.84,.44,1);
  }
  nav a:hover{ color: var(--gold-deep); border-color: var(--gold); }
  nav a:hover::after{ transform: scaleX(1); }
  .menu-toggle{ display:none; background:none; border:1px solid var(--line); color:var(--ink); font-size:20px; width:42px; height:42px; }

  /* Language switch */
  .lang-switch{
    display:flex; align-items:center; gap:6px; flex-shrink:0;
    font-size:11px; letter-spacing:0.03em; margin-left: 10px;
    padding-left: 10px; border-left: 1px solid var(--line);
  }
  .lang-switch a{ color: var(--text-dim); white-space:nowrap; transition: color 0.25s; }
  .lang-switch a:hover{ color: var(--gold-deep); }
  .lang-switch a.lang-current{ color: var(--gold-deep); border-bottom: 1px solid var(--gold); padding-bottom:1px; }
  .lang-switch .sep{ color: var(--line); }

  /* Nav contact (phone + mail popover) */
  .nav-contact{ position:relative; display:flex; align-items:center; gap:10px; padding-left:12px; border-left:1px solid var(--line); flex-shrink:0; }
  .nav-tel{ display:flex; flex-direction:column; align-items:flex-start; gap:3px; color: var(--text-dim); text-transform:none; }
  .nav-tel-row{ display:flex; align-items:center; gap:5px; white-space:nowrap; }
  .nav-tel-row svg{ width:13px; height:13px; fill:currentColor; flex-shrink:0; }
  .nav-tel-number{ font-size:12px; letter-spacing:0.02em; white-space:nowrap; }
  .nav-tel-label{ font-size:9px; letter-spacing:0.06em; opacity:0.7; white-space:nowrap; padding-left:18px; }
  .nav-tel:hover{ color: var(--gold-deep); }
  .nav-mail-btn{
    background:none; border:1px solid var(--line); border-radius:50%;
    width:32px; height:32px; display:flex; align-items:center; justify-content:center;
    color: var(--text-dim); cursor:pointer; transition: border-color 0.25s, color 0.25s;
  }
  .nav-mail-btn svg{ width:14px; height:14px; fill:currentColor; }
  .nav-mail-btn:hover, .nav-mail-btn.active{ border-color: var(--gold); color: var(--gold-deep); }
  .nav-contact-pop{
    position:absolute; top:calc(100% + 16px); right:0; min-width:250px;
    background:#1c1611; border:1px solid var(--line); padding:8px;
    display:flex; flex-direction:column; gap:2px;
    opacity:0; visibility:hidden; transform:translateY(-6px);
    transition: opacity 0.25s, transform 0.25s, visibility 0.25s;
    z-index:200;
  }
  .nav-contact-pop.open{ opacity:1; visibility:visible; transform:translateY(0); }
  .nav-contact-pop-item{
    display:flex; align-items:center; gap:10px; padding:10px 12px;
    font-size:12px; letter-spacing:0.02em; text-transform:none;
    color: var(--text-dim); border-radius:2px; transition: background 0.2s, color 0.2s;
  }
  .nav-contact-pop-item svg{ width:14px; height:14px; fill:currentColor; flex-shrink:0; }
  .nav-contact-pop-item:hover{ background: rgba(197,161,105,0.1); color: var(--gold-deep); }
  .nav-contact-pop-item::after{ display:none; }

  /* Hero */
  .hero{
    height: 100vh;
    min-height: 640px;
    position: relative;
    display:flex;
    align-items:center;
    justify-content:center;
    text-align:center;
    border-bottom: 1px solid var(--line);
    overflow: hidden;
  }
  .hero-bg{ position:absolute; inset:0; z-index:0; }
  .hero-bg img{
    position:absolute; inset:0; width:100%; height:100%;
    object-fit:cover; object-position: center 30%;
    opacity:0; transition: opacity 2s ease;
    transform: scale(1.1);
    animation: heroImgFloat 16s ease-in-out infinite;
  }
  .hero-bg img.active{ opacity:1; }
  @keyframes heroImgFloat{
    0%{ transform: scale(1.1) translateY(-2.2%); }
    50%{ transform: scale(1.1) translateY(2.2%); }
    100%{ transform: scale(1.1) translateY(-2.2%); }
  }
  .hero-overlay{
    position:absolute; inset:0; z-index:1; pointer-events:none;
    background:
      radial-gradient(ellipse at 50% 20%, rgba(184,146,79,0.16), transparent 55%),
      linear-gradient(180deg, rgba(20,16,13,0.68), rgba(20,16,13,0.94));
    background-size: 200% 200%, 100% 100%;
    animation: heroPan 26s ease-in-out infinite alternate;
  }
  @keyframes heroPan{
    0%{ background-position: 50% 20%, center; }
    100%{ background-position: 50% 30%, center; }
  }
  .embers{ position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:2; }
  .ember{
    position:absolute; bottom:-10px; width:3px; height:3px; border-radius:50%;
    background: radial-gradient(circle, var(--gold-deep), transparent 70%);
    opacity:0; animation: emberRise linear infinite;
  }
  .ember:nth-child(1){ left:10%; animation-delay:0s; animation-duration:11s; }
  .ember:nth-child(2){ left:24%; animation-delay:2.4s; animation-duration:13s; }
  .ember:nth-child(3){ left:41%; animation-delay:4.6s; animation-duration:10s; }
  .ember:nth-child(4){ left:59%; animation-delay:1.1s; animation-duration:12.5s; }
  .ember:nth-child(5){ left:76%; animation-delay:3.6s; animation-duration:14s; }
  .ember:nth-child(6){ left:90%; animation-delay:6.2s; animation-duration:11.5s; }
  @keyframes emberRise{
    0%{ transform: translateY(0) translateX(0); opacity:0; }
    8%{ opacity:0.75; }
    55%{ transform: translateY(-46vh) translateX(8px); opacity:0.4; }
    100%{ transform: translateY(-92vh) translateX(-6px); opacity:0; }
  }
  .hero-inner{ max-width: 760px; padding: 0 24px; position:relative; z-index:2; will-change: transform; }
  .hero-mark{
    height: 108px; width:auto; margin: 0 auto 26px; display:block;
    border-radius: 5px; border: 1px solid var(--line);
    box-shadow: 0 16px 34px rgba(0,0,0,0.45);
    animation: heroFadeUp 1s cubic-bezier(.16,.84,.44,1) 0s both;
  }
  .hero .eyebrow{ text-align:center; animation: heroFadeUp 1s cubic-bezier(.16,.84,.44,1) 0.1s both; }
  .hero h1{
    font-size: clamp(40px, 7vw, 76px);
    line-height: 1.15;
    color: var(--ink);
    margin-bottom: 22px;
  }
  .hero h1 em{ color: var(--gold-deep); font-style: italic; }
  .hero h1 .hero-line{ display:block; opacity:0; }
  .hero h1 .hero-line-1{
    animation: heroLineInLeft 1s cubic-bezier(.16,.84,.44,1) 0.32s forwards;
  }
  .hero h1 .hero-line-2{
    animation: heroLineInRight 1s cubic-bezier(.16,.84,.44,1) 0.55s forwards;
  }
  @keyframes heroLineInLeft{
    from{ opacity:0; transform: translateX(-1.15em); }
    to{ opacity:1; transform: translateX(-0.55em); }
  }
  @keyframes heroLineInRight{
    from{ opacity:0; transform: translateX(-0.05em); }
    to{ opacity:1; transform: translateX(0.55em); }
  }
  @keyframes heroFadeUp{ from{ opacity:0; transform: translateY(26px); } to{ opacity:1; transform: translateY(0); } }
  .hero p{
    color: var(--text-dim);
    font-size: 17px;
    max-width: 520px;
    margin: 0 auto 40px;
    animation: heroFadeUp 1.1s cubic-bezier(.16,.84,.44,1) 0.55s both;
  }
  .hero .btn{ animation: heroFadeUp 1.1s cubic-bezier(.16,.84,.44,1) 0.78s both; }
  .btn{
    display:inline-block;
    border: 1px solid var(--gold);
    color: var(--gold-deep);
    padding: 14px 38px;
    font-size: 13px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    transition: background 0.3s, color 0.3s;
  }
  .btn:hover{ background: var(--gold); color: #14100d; }
  .btn.filled{ background: var(--gold); color: #14100d; border-color: var(--gold); }
  .btn.filled:hover{ background: var(--gold-deep); border-color: var(--gold-deep); }
  .scroll-cue{
    position:absolute; bottom: 34px; left:50%; transform: translateX(-50%); z-index:2;
    font-size: 11px; letter-spacing: 0.3em; color: var(--text-dim); text-transform:uppercase;
  }
  .scroll-cue::after{
    content:""; display:block; width:1px; height:36px; background: var(--gold);
    margin: 10px auto 0; animation: scrollLine 1.8s ease-in-out infinite;
  }
  @keyframes scrollLine{ 0%{opacity:0; transform: scaleY(0.3);} 50%{opacity:1;} 100%{opacity:0; transform: scaleY(1);} }

  section{ padding: 120px 0; }
  .section-head{ text-align:center; max-width: 640px; margin: 0 auto 64px; }
  .section-head h2{ font-size: clamp(30px, 4vw, 44px); color: var(--ink); }
  .divider{
    width: 60px; height:1px; background: var(--gold); margin: 22px auto 0;
  }

  /* Scroll reveal */
  .reveal{
    opacity:0; transform: translateY(32px);
    transition: opacity 0.9s cubic-bezier(.16,.84,.44,1), transform 0.9s cubic-bezier(.16,.84,.44,1);
  }
  .reveal.in-view{ opacity:1; transform: translateY(0); }
  .reveal.from-left{ transform: translateX(-32px); }
  .reveal.from-left.in-view{ transform: translateX(0); }
  .reveal.from-right{ transform: translateX(32px); }
  .reveal.from-right.in-view{ transform: translateX(0); }
  .gallery-grid .reveal:nth-child(1){ transition-delay:0ms; }
  .gallery-grid .reveal:nth-child(2){ transition-delay:100ms; }
  .gallery-grid .reveal:nth-child(3){ transition-delay:200ms; }
  .gallery-grid .reveal:nth-child(4){ transition-delay:300ms; }
  .news-grid .reveal:nth-child(1){ transition-delay:0ms; }
  .news-grid .reveal:nth-child(2){ transition-delay:130ms; }
  .news-grid .reveal:nth-child(3){ transition-delay:260ms; }

  /* Story */
  .story{ background: var(--bg-alt); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);}
  .story-grid{
    display:grid; grid-template-columns: 1fr 1fr; gap: 72px; align-items:center;
  }
  .story-frame{
    aspect-ratio: 4/5;
    background: linear-gradient(160deg, #2a2117, #171009);
    border: 1px solid var(--line);
    position:relative;
    display:flex; align-items:center; justify-content:center;
    animation: floatY 6s ease-in-out infinite;
    overflow: hidden;
  }
  .frame-note{
    display:block; text-align:center; font-size: 11.5px; color: var(--text-dim);
    opacity:0.8; margin-top: 14px; letter-spacing: 0.02em;
  }
  .shop-badge{
    display:flex; align-items:center; gap: 10px; margin-top: 16px;
    padding: 8px; border: 1px solid var(--gold); background: rgba(184,146,79,0.06);
  }
  .shop-badge img{
    width: 52px; height: 52px; object-fit:cover; flex-shrink:0;
    border: 1px solid var(--gold-deep);
  }
  .shop-badge-label{ font-size: 11.5px; color: var(--gold-deep); line-height:1.6; letter-spacing:0.01em; }
  .story-frame img{
    position:absolute; inset:0;
    width:100%; height:100%; object-fit:cover; object-position: center 25%;
    filter: saturate(1.05) contrast(1.03) brightness(0.96);
    opacity:0; transition: opacity 1.3s ease;
    pointer-events: none;
    cursor: zoom-in;
  }
  .story-frame img.portrait{
    object-position: 72% 20%;
    filter: grayscale(1) sepia(0.28) contrast(1.08) brightness(0.82);
  }
  .story-frame img.active{ opacity:1; pointer-events:auto; }
  .story-dots{
    position:absolute; bottom:16px; left:50%; transform:translateX(-50%);
    display:flex; gap:8px; z-index:2;
  }
  .story-dots .dot{
    width:6px; height:6px; border-radius:50%;
    background: rgba(236,228,214,0.4);
    transition: background 0.3s ease, transform 0.3s ease;
    cursor:pointer;
  }
  .story-dots .dot.active{ background: var(--gold-deep); transform: scale(1.35); }
  @keyframes floatY{ 0%,100%{ transform: translateY(0); } 50%{ transform: translateY(-10px); } }
  .story-frame::after{
    content:""; position:absolute; inset: 18px; border: 1px solid rgba(184,146,79,0.35); pointer-events:none;
  }
  .story-text p{ color: var(--text-dim); margin-bottom: 20px; font-size: 15.5px; }
  .story-actions{ display:flex; gap: 16px; flex-wrap: wrap; }
  .story-copy{ max-width: 700px; margin: 0 auto; }
  .story-copy p{ color: var(--text-dim); margin-bottom: 24px; font-size: 15.5px; line-height: 2; }
  .story-copy p:last-child{ margin-bottom: 0; }
  #finca-story{ border-top: 1px solid var(--line); }
  .quote{
    font-style: italic; font-size: 22px; color: var(--gold-deep);
    border-left: 2px solid var(--green); padding-left: 22px; margin: 30px 0;
  }
  .finca-strip{ margin: 68px auto; }
  .finca-strip-label{
    display:block; text-align:center; font-size: 11px; letter-spacing: 0.3em;
    text-transform: uppercase; color: var(--gold); margin-bottom: 22px;
  }
  .finca-strip-ours{ margin-top: 40px; }
  .finca-strip-label.ours{ color: var(--gold-deep); }
  .finca-strip-ours .finca-strip-grid img,
  .finca-strip-ours .story-page-gallery img{ border-color: var(--gold-deep); }
  .gallery-jump-link{
    display:inline-block; font-size: 12.5px; letter-spacing: 0.1em;
    color: var(--gold-deep); border-bottom: 1px solid var(--gold);
    padding-bottom: 3px; transition: color 0.25s, border-color 0.25s;
  }
  .gallery-jump-link:hover{ color: var(--gold); border-color: var(--gold-deep); }
  .finca-strip-grid{ display:grid; grid-template-columns: repeat(5, 1fr); gap: 12px; }
  .finca-strip-grid img{
    width:100%; aspect-ratio: 4/5; object-fit:cover; display:block;
    border: 1px solid var(--line);
    filter: saturate(0.85) contrast(1.05) brightness(0.92);
    transition: transform 0.5s ease, border-color 0.3s ease;
    cursor: zoom-in;
  }
  .finca-strip-grid img:hover{ transform: scale(1.035); border-color: var(--gold); }

  .finca-scroll-wrap{ position:relative; }
  .finca-scroll-wrap::before, .finca-scroll-wrap::after{
    content:""; position:absolute; top:0; bottom:14px; width:56px; z-index:2; pointer-events:none;
  }
  .finca-scroll-wrap::before{ left:0; background: linear-gradient(to right, var(--bg), transparent); }
  .finca-scroll-wrap::after{ right:0; background: linear-gradient(to left, var(--bg), transparent); }
  .finca-scroll{
    display:flex; gap: 12px; overflow-x:auto; overflow-y:hidden;
    padding-bottom: 14px; scroll-snap-type: x proximity;
    scrollbar-width: thin; scrollbar-color: var(--gold) var(--bg-alt);
    cursor: grab;
  }
  .finca-scroll.dragging{ cursor: grabbing; scroll-snap-type: none; }
  .finca-scroll::-webkit-scrollbar{ height: 6px; }
  .finca-scroll::-webkit-scrollbar-track{ background: var(--bg-alt); }
  .finca-scroll::-webkit-scrollbar-thumb{ background: var(--gold); border-radius: 3px; }
  .finca-scroll img{
    flex: 0 0 auto; width: 220px; aspect-ratio: 4/5; object-fit:cover;
    border: 1px solid var(--line); scroll-snap-align: start;
    filter: saturate(0.85) contrast(1.05) brightness(0.92);
    transition: transform 0.4s ease, border-color 0.3s ease;
    cursor: zoom-in;
  }
  .finca-scroll img:hover{ transform: scale(1.03); border-color: var(--gold); }
  .finca-scroll-nav{
    position:absolute; top:calc(50% - 7px); transform:translateY(-50%); z-index:3;
    width:40px; height:40px; border-radius:50%; border:1px solid var(--line);
    background: rgba(20,16,13,0.8); color: var(--ink); font-size:20px; line-height:1;
    display:flex; align-items:center; justify-content:center; cursor:pointer;
    transition: border-color 0.25s, color 0.25s, opacity 0.25s;
  }
  .finca-scroll-nav:hover{ border-color: var(--gold); color: var(--gold-deep); }
  .finca-scroll-prev{ left: 6px; }
  .finca-scroll-next{ right: 6px; }
  .finca-scroll-hint{
    display:block; text-align:center;
    margin-top: 14px; font-size: 11px; letter-spacing: 0.04em;
    font-family: 'Noto Serif JP', sans-serif; line-height: 1.5;
    color: var(--text-dim); opacity: 0.75;
  }
  @media (max-width: 640px){
    .finca-scroll img{ width: 168px; }
    .finca-scroll-nav{ display:none; }
    .finca-scroll-wrap::before, .finca-scroll-wrap::after{ width:32px; }
    .finca-scroll-hint{ font-size: 9.5px; margin-top: 10px; }
  }

  /* Story page (separate page) */
  .page-hero{
    padding: 200px 0 60px;
    text-align:center;
    border-bottom: 1px solid var(--line);
    background: var(--bg-alt);
  }
  .page-hero .eyebrow{ text-align:center; }
  .page-hero h1{ font-size: clamp(32px, 5vw, 50px); color: var(--ink); }
  .back-link{
    display:inline-block; margin-top: 30px; font-size: 12px; letter-spacing: 0.15em;
    color: var(--text-dim); border-bottom: 1px solid var(--line); padding-bottom: 3px;
    transition: color 0.25s, border-color 0.25s;
  }
  .back-link:hover{ color: var(--gold-deep); border-color: var(--gold); }
  .page-hero-links{
    display:flex; justify-content:space-between; align-items:center;
    gap: 28px; flex-wrap: wrap; margin: 30px auto 0;
    max-width: 600px;
  }
  .page-hero-links .back-link{ margin-top: 0; }
  .story-page-body{ padding: 100px 0; }
  .story-page-gallery{ display:grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-top: 68px; }
  .story-page-gallery img{
    width:100%; aspect-ratio: 4/5; object-fit:cover; display:block;
    border: 1px solid var(--line);
    filter: saturate(0.85) contrast(1.05) brightness(0.92);
    transition: transform 0.5s ease, border-color 0.3s ease;
    cursor: zoom-in;
  }
  .story-page-gallery img:hover{ transform: scale(1.035); border-color: var(--gold); }

  /* Timeline (History page) */
  .timeline{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 28px; margin: 56px 0 64px; }
  .timeline-item{ text-align:center; padding: 30px 22px; border: 1px solid var(--line); background: var(--panel); position:relative; }
  .timeline-item .year{ font-family:'Cormorant Garamond', serif; font-size: 26px; color: var(--gold-deep); display:block; margin-bottom: 12px; letter-spacing: 0.04em; }
  .timeline-item .label{ font-size: 13px; color: var(--text-dim); line-height: 1.8; }
  .next-link-wrap{ text-align:center; margin-top: 70px; padding-top: 50px; border-top: 1px solid var(--line); }
  .next-link-wrap .eyebrow{ text-align:center; }
  .next-link-wrap h3{ font-size: 24px; color: var(--ink); margin-bottom: 26px; }

  /* Menu */
  .menu-tabs{ display:flex; justify-content:center; gap: 8px; margin-bottom: 56px; flex-wrap: wrap; }
  .menu-tab{
    padding: 10px 26px; font-size: 12px; letter-spacing: 0.15em; text-transform: uppercase;
    border: 1px solid var(--line); color: var(--text-dim); background: var(--panel); cursor:pointer;
    transition: all 0.25s;
  }
  .menu-tab.active, .menu-tab:hover{ border-color: var(--gold-deep); color: var(--gold-deep); }
  .menu-panel{ display:none; }
  .menu-panel.active{ display:block; animation: fadeIn 0.5s ease; }
  @keyframes fadeIn{ from{opacity:0; transform: translateY(6px);} to{opacity:1; transform:none;} }
  .cigar-origin-tabs{ display:flex; justify-content:center; gap: 8px; margin: 4px 0 34px; flex-wrap: wrap; }
  .cigar-origin-tab{
    padding: 8px 22px; font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase;
    border: 1px solid var(--line); color: var(--text-dim); background: transparent; cursor:pointer;
    transition: all 0.25s;
    display:inline-flex; align-items:center; gap: 8px;
  }
  .cigar-origin-tab.active, .cigar-origin-tab:hover{ border-color: var(--gold-deep); color: var(--gold-deep); }
  .tab-flag{
    width: 18px; height: 13px; object-fit: cover; display:inline-block;
    border: 1px solid rgba(184,146,79,0.35); border-radius: 1px;
    filter: saturate(0.9);
  }
  .cigar-origin-panel{ display:none; position:relative; overflow:hidden; }
  .cigar-origin-panel.active{ display:block; animation: fadeIn 0.5s ease; }
  .flag-watermark{
    position:absolute; top:50%; left:50%; transform:translate(-50%, -50%);
    width:62%; max-width:460px; height:auto;
    opacity:0.07; z-index:-1; pointer-events:none;
  }
  .menu-list{ max-width: 720px; margin: 0 auto; }
  .menu-subhead{
    display:flex; align-items:center; gap: 14px;
    margin: 40px 0 6px; font-size: 13px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--gold);
  }
  .menu-subhead:first-child{ margin-top: 0; }
  .menu-subhead::after{ content:""; flex:1; height:1px; background: var(--line); }
  .menu-item{
    display:flex; justify-content: space-between; align-items: baseline;
    padding: 22px 0; border-bottom: 1px dashed var(--line); gap: 20px;
    transition: padding-left 0.3s ease, border-color 0.3s ease;
  }
  .menu-item:hover{ padding-left: 10px; border-color: var(--gold); }
  .menu-item h4{ font-family:'Cormorant Garamond', serif; font-size: 20px; color: var(--ink); font-weight:500; }
  .menu-item h4.has-photo{ position:relative; display:inline-block; cursor: default; border-bottom: 1px dotted var(--gold); }
  .item-preview{
    position:absolute; bottom:100%; left:0; margin-bottom:14px;
    width: 240px; max-width: 60vw;
    opacity:0; pointer-events:none; transform: translateY(8px);
    transition: opacity 0.3s ease, transform 0.3s ease;
    z-index:30; border: 1px solid var(--gold); background:#0d0a08;
    box-shadow: 0 16px 34px rgba(0,0,0,0.55);
  }
  .item-preview img{ display:block; width:100%; height:auto; object-fit:contain; }
  .menu-item h4.has-photo:hover .item-preview,
  .menu-item div:has(> h4.has-photo):hover .item-preview{ opacity:1; transform: translateY(0); }
  .has-photo{ position:relative; display:inline-block; cursor: default; border-bottom: 1px dotted var(--gold); }
  .has-photo .item-photo{
    position:absolute; left:50%; bottom: calc(100% + 14px); transform: translateX(-50%) translateY(6px);
    width: 220px; height: 220px; object-fit: cover;
    border: 1px solid var(--gold); box-shadow: 0 18px 40px rgba(0,0,0,0.55);
    opacity:0; visibility:hidden; pointer-events:none; z-index: 30;
    transition: opacity 0.25s ease, transform 0.25s ease;
  }
  .has-photo:hover .item-photo{ opacity:1; visibility:visible; transform: translateX(-50%) translateY(0); }
  @media (max-width: 860px){
    .has-photo .item-photo{ width: 160px; height: 160px; }
  }
  .menu-item .desc{ color: var(--text-dim); font-size: 13.5px; margin-top: 4px; }
  .menu-item .price{ color: var(--gold-deep); font-size: 15px; white-space:nowrap; }
  @media (max-width: 640px){
    .menu-item h4{ font-size: 16.5px; }
    .menu-item h4 span{ font-size: 11.5px !important; }
    .menu-item .desc{ font-size: 12px; }
    .menu-item .price{ font-size: 13.5px; }
    .menu-subhead{ font-size: 11px; }
  }
  .menu-note{
    font-size: 12px; color: var(--text-dim); opacity:0.85;
    margin-top: 12px; padding-bottom: 6px; letter-spacing: 0.02em;
  }
  .menu-intro{
    text-align:center; font-style: italic; font-size: 14.5px; line-height: 1.9;
    color: var(--text-dim); max-width: 560px; margin: 0 auto 36px;
  }
  .cigar-brand{ margin-bottom: 8px; }
  .cigar-line-name{
    font-family:'Cormorant Garamond', serif; font-weight: 500;
    font-size: 18px; color: var(--gold-deep); letter-spacing: 0.04em;
    margin: 26px 0 10px;
  }
  .cigar-line-name span{ color: var(--text-dim); font-size: 13px; font-family:'Noto Serif JP', serif; margin-left: 8px; letter-spacing: 0.1em; }
  .cigar-line-name:first-child{ margin-top: 4px; }
  .spec-table{ width:100%; border-collapse: collapse; margin-bottom: 26px; }
  .spec-table th{
    text-align:left; font-size: 11px; letter-spacing: 0.15em; text-transform: uppercase;
    color: var(--gold); font-weight: 400; padding: 6px 8px; border-bottom: 1px solid var(--line);
  }
  .spec-table th:not(:first-child), .spec-table td:not(:first-child){ text-align:right; }
  .spec-table td{
    padding: 10px 8px; border-bottom: 1px dashed var(--line);
    font-size: 14px; color: var(--text-dim);
  }
  .spec-table td:first-child{ color: var(--ink); font-family:'Cormorant Garamond', serif; font-size: 16px; }
  .spec-table td.price{ color: var(--gold-deep); white-space:nowrap; }
  .spec-table th.flavor, .spec-table td.flavor{ text-align:left; }
  .spec-table td.flavor{ color: var(--text-dim); font-size: 13px; line-height: 1.8; max-width: 280px; }
  @media (max-width: 640px){
    .spec-table th{ font-size: 9px; padding: 5px 3px; letter-spacing: 0.08em; }
    .spec-table td{ font-size: 12px; padding: 8px 3px; }
    .spec-table td:first-child{ font-size: 13.5px; }
    .spec-table td:nth-child(3){ white-space: nowrap; font-size: 10.5px; }
    .spec-table td.flavor{ font-size: 10.5px; line-height: 1.6; max-width: 120px; }
  }

  /* Gallery */
  .gallery{ background: var(--bg-alt); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
  .gallery-grid{
    display:grid; grid-template-columns: repeat(4, 1fr); gap: 4px;
    max-width: 880px; margin: 0 auto;
  }
  .gallery-grid div{
    aspect-ratio: 1/1;
    position:relative;
    background: linear-gradient(150deg, #241b12, #150f0a);
    border: 1px solid var(--line);
    overflow:hidden;
    color: rgba(184,146,79,0.4); font-size: 11px; letter-spacing:0.2em; text-transform:uppercase;
    transition: transform 0.5s ease, border-color 0.3s ease, color 0.3s ease;
  }
  .gallery-grid div:hover{ transform: scale(1.045); border-color: var(--gold); color: rgba(217,189,133,0.75); z-index:1; }
  .gallery-grid img{
    width:100%; height:100%; object-fit:cover; display:block;
    filter: saturate(0.92) contrast(1.05) brightness(0.9);
    transition: transform 0.6s ease;
    cursor: zoom-in;
  }
  .gallery-grid div:hover img{ transform: scale(1.08); }
  .gallery-grid .cap{
    position:absolute; left:0; right:0; bottom:0; padding:14px 16px;
    background: linear-gradient(to top, rgba(20,16,13,0.88), transparent);
    color: var(--gold-deep);
  }
  .gallery-sub-label{
    display:block; text-align:center; font-size: 10.5px; letter-spacing: 0.25em;
    text-transform: uppercase; color: var(--gold); margin: 42px 0 16px; opacity: 0.85;
  }
  .gallery-sub-grid{
    display:grid; grid-template-columns: repeat(4, 1fr); gap: 4px;
    max-width: 480px; margin: 0 auto;
  }
  .gallery-sub-grid img{
    width:100%; aspect-ratio: 1/1; object-fit:cover; display:block;
    border: 1px solid var(--line); opacity: 0.82;
    filter: saturate(0.8) contrast(1.02) brightness(0.88);
    transition: opacity 0.3s ease;
    cursor: zoom-in;
  }
  .gallery-sub-grid img:hover{ opacity: 1; }
  .gallery-sub-grid-sm{ max-width: 320px; }

  /* Lightbox (click any gallery photo to enlarge) */
  .lightbox-overlay{
    position:fixed; inset:0; z-index:1000; padding:40px;
    background: rgba(10,8,6,0.94);
    display:flex; align-items:center; justify-content:center;
    opacity:0; visibility:hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
  }
  .lightbox-overlay.open{ opacity:1; visibility:visible; }
  .lightbox-overlay img{
    max-width:88vw; max-height:84vh; object-fit:contain;
    border: 1px solid var(--line);
    box-shadow: 0 24px 70px rgba(0,0,0,0.55);
  }
  .lightbox-close, .lightbox-nav{
    position:absolute; border-radius:50%; border:1px solid var(--line);
    background: rgba(28,22,17,0.85); color: var(--ink);
    display:flex; align-items:center; justify-content:center;
    cursor:pointer; transition: border-color 0.25s, color 0.25s;
  }
  .lightbox-close:hover, .lightbox-nav:hover{ border-color: var(--gold); color: var(--gold-deep); }
  .lightbox-close{ top:24px; right:28px; width:44px; height:44px; font-size:22px; line-height:1; }
  .lightbox-nav{ top:50%; transform:translateY(-50%); width:48px; height:48px; font-size:22px; line-height:1; }
  .lightbox-prev{ left:16px; }
  .lightbox-next{ right:16px; }
  @media (max-width: 640px){
    .lightbox-overlay{ padding:16px; }
    .lightbox-close{ top:12px; right:12px; width:38px; height:38px; }
    .lightbox-nav{ width:40px; height:40px; }
    .lightbox-prev{ left:6px; }
    .lightbox-next{ right:6px; }
  }

  /* Business hours calendar */
  .calendar-card{
    max-width: 620px; margin: 44px auto 0;
    background: var(--panel); border: 1px solid var(--line);
    padding: 36px 36px 30px; scroll-margin-top: 100px;
  }
  .calendar-head{ display:flex; align-items:center; gap: 16px; margin-bottom: 26px; }
  .calendar-mark{ height: 48px; width:auto; object-fit:contain; border-radius:3px; border:1px solid var(--line); }
  .calendar-head h3{
    font-family:'Cormorant Garamond', serif; font-size: 34px; font-weight:500;
    color: var(--ink); letter-spacing: 0.06em; margin-top: 2px;
  }
  .cal-month-jp{
    margin-left: 10px; font-size: 15px; font-weight: 400; letter-spacing: 0.05em;
    color: var(--text-dim);
  }
  .calendar-grid{
    display:grid; grid-template-columns: repeat(7, 1fr); gap: 4px;
  }
  .cal-dow{
    text-align:center; font-size: 10.5px; letter-spacing: 0.15em; text-transform:uppercase;
    color: var(--gold); padding-bottom: 8px;
  }
  .cal-day{
    aspect-ratio: 1/1; display:flex; align-items:center; justify-content:center;
    font-family:'Cormorant Garamond', serif; font-size: 17px; color: var(--ink);
    background: var(--bg-alt); border: 1px solid var(--line);
  }
  .cal-day.empty{ background: transparent; border-color: transparent; }
  .cal-day.cal-tan{ background: rgba(184,146,79,0.28); border-color: var(--gold); color: var(--gold-deep); }
  .cal-day.cal-orange{ background: #a85f34; border-color: #c97a45; color: #f3e6d6; }
  .cal-day.cal-red{ background: #7a3330; border-color: #9c4842; color: #f3e6d6; }
  .cal-day.cal-yellow{ background: #8a7635; border-color: #a68f45; color: #f3e6d6; }
  .calendar-legend{
    display:flex; flex-wrap:wrap; gap: 14px 22px; margin-top: 24px;
  }
  .legend-item{
    display:flex; align-items:center; gap: 8px; font-size: 12px; color: var(--text-dim);
  }
  .legend-item .swatch{
    width: 16px; height:16px; display:inline-block; flex-shrink:0;
    background: var(--bg-alt); border: 1px solid var(--line);
  }
  .legend-item .swatch.cal-tan{ background: rgba(184,146,79,0.28); border-color: var(--gold); }
  .legend-item .swatch.cal-orange{ background: #a85f34; border-color: #c97a45; }
  .legend-item .swatch.cal-red{ background: #7a3330; border-color: #9c4842; }
  .legend-item .swatch.cal-yellow{ background: #8a7635; border-color: #a68f45; }
  @media (max-width: 640px){
    .calendar-card{ padding: 26px 18px 22px; }
    .cal-day{ font-size: 13px; }
    .calendar-head h3{ font-size: 27px; }
  }

  /* Blog / News */
  .news-grid{
    display:grid; grid-template-columns: repeat(3, 1fr); gap: 40px;
  }
  .news-card{
    border: 1px solid var(--line); padding: 32px 28px; background: var(--panel);
    transition: border-color 0.3s, transform 0.3s;
  }
  .news-card:hover{ border-color: var(--gold-deep); transform: translateY(-4px); }
  .news-date{ font-size: 12px; letter-spacing: 0.15em; color: var(--gold-deep); margin-bottom: 14px; display:block; }
  .news-tag{
    display:inline-block; font-size: 10px; letter-spacing: 0.15em; text-transform:uppercase;
    color: var(--text-dim); border: 1px solid var(--line); padding: 3px 10px; margin-bottom: 16px;
  }
  .news-card h3{ font-size: 21px; color: var(--ink); margin-bottom: 12px; font-weight: 500; }
  .news-card p{ color: var(--text-dim); font-size: 14px; margin-bottom: 18px; }
  .news-card a.readmore{ font-size: 12px; letter-spacing: 0.1em; color: var(--gold-deep); text-transform: uppercase; border-bottom: 1px solid var(--gold); padding-bottom: 2px; }

  /* News / Column — single stacked list under one section title (mobile-friendly, compact) */
  .news-list{ max-width: 700px; margin: 0 auto; }
  .news-row{
    padding: 24px 0; border-bottom: 1px dashed var(--line);
    transition: padding-left 0.3s ease, border-color 0.3s ease;
  }
  .news-list .news-row:last-child{ border-bottom: none; }
  .news-row:hover{ padding-left: 10px; border-color: var(--gold); }
  .news-row-head{ display:flex; align-items:center; gap: 12px; margin-bottom: 8px; }
  .news-row .news-date{ margin-bottom: 0; font-size: 11px; }
  .news-row .news-tag{ margin-bottom: 0; font-size: 9px; padding: 2px 8px; }
  .news-row h3{ font-size: 18px; color: var(--ink); margin-bottom: 6px; font-weight: 500; }
  .news-row p{ color: var(--text-dim); font-size: 13px; margin-bottom: 10px; line-height:1.75; }
  .news-row a.readmore{ font-size: 11px; letter-spacing: 0.1em; color: var(--gold-deep); text-transform: uppercase; border-bottom: 1px solid var(--gold); padding-bottom: 2px; }
  @media (max-width: 640px){
    .news-row{ padding: 20px 0; }
    .news-row h3{ font-size: 16.5px; }
  }

  /* Access */
  .access{ background: var(--bg-alt); border-top: 1px solid var(--line); }
  .access-grid{ display:grid; grid-template-columns: 1fr 1fr; gap: 72px; }
  .info-row{ display:flex; gap: 20px; padding: 18px 0; border-bottom: 1px solid var(--line); }
  .info-row .label{ width: 110px; flex-shrink:0; color: var(--gold); font-size: 13px; letter-spacing: 0.1em; }
  .info-row .value{ color: var(--text-dim); font-size: 14.5px; }
  .info-row .value a{ color: var(--gold-deep); border-bottom: 1px solid var(--gold); }
  .map-frame{
    background: linear-gradient(150deg, #241b12, #150f0a);
    border: 1px solid var(--line);
    height: 100%; min-height: 280px;
    overflow: hidden;
  }
  .map-frame iframe{ width:100%; height:100%; min-height:280px; border:0; filter: invert(92%) hue-rotate(180deg) brightness(0.95) contrast(0.9) saturate(0.7); }

  /* Contact CTA */
  .cta{ text-align:center; }
  .cta p{ color: var(--text-dim); max-width: 480px; margin: 20px auto 36px; }

  footer{
    border-top: 1px solid var(--line);
    padding: 56px 0 32px;
    text-align:center;
  }
  footer .brand{ font-size: 20px; display:block; margin-bottom: 18px; }
  .footer-mark{
    height: 88px; width:auto; border-radius: 4px; border: 1px solid var(--line);
    margin: 0 auto 20px; display:block; box-shadow: 0 12px 26px rgba(0,0,0,0.35);
  }
  .social{ display:flex; justify-content:center; gap: 20px; margin-bottom: 28px; }
  .social a{
    width: 38px; height:38px; border: 1px solid var(--line); border-radius:50%;
    display:flex; align-items:center; justify-content:center; font-size: 13px; color: var(--text-dim);
    transition: border-color 0.25s, color 0.25s;
  }
  .social a:hover{ border-color: var(--gold); color: var(--gold-deep); }
  footer .copyright{ color: #6b5f4d; font-size: 12px; letter-spacing: 0.05em; }

  @media (max-width: 1180px){
    nav ul{ gap: 20px; }
    .nav-tel-label{ display:none; }
    .nav-contact{ gap:8px; padding-left:8px; }
  }

  @media (max-width: 860px){
    nav ul{ display:none; }
    .menu-toggle{ display:block; flex-shrink:0; }
    .story-grid, .access-grid{ grid-template-columns: 1fr; }
    .news-grid{ grid-template-columns: 1fr; }
    .gallery-grid{ grid-template-columns: repeat(2, 1fr); }
    .finca-strip-grid, .story-page-gallery{ grid-template-columns: repeat(2, 1fr); }
    .timeline{ grid-template-columns: 1fr; }
    .gallery-sub-grid{ max-width: 320px; }
    section{ padding: 84px 0; }
    .page-hero{ padding: 150px 0 50px; }
    .nav-contact{ border-left:none; padding-left:0; padding-top:14px; border-top:1px solid var(--line); width:100%; }
    .nav-tel-label{ display:block; }
    .nav-contact-pop{ right:auto; left:0; }
    .nav-row{ gap: 10px; }
    .brand{ flex-shrink:1; min-width:0; font-size: 13.5px; gap: 8px; align-items:center; }
    .brand-mark{ height: 34px; flex-shrink:0; }
    .brand-text{ min-width:0; flex-direction:row; flex-wrap:wrap; align-items:baseline; column-gap:6px; }
    .brand-title{ display:inline; white-space:normal; line-height:1.25; word-spacing: -1px; }
    .brand-subtitle{
      display:inline-block; font-size: 7.5px; margin-top:0; letter-spacing: 0.18em;
      white-space:nowrap; opacity:0.8;
    }
    .lang-switch{ margin-left:4px; padding-left:6px; gap:3px; font-size:10px; flex-shrink:0; }
  }
  @media (max-width: 400px){
    .brand{ font-size: 11.5px; }
    .brand-subtitle{ font-size: 6.5px; }
    .lang-switch{ font-size: 9px; gap:2px; margin-left:2px; padding-left:4px; }
  }
