  :root{
    --ink:#12201B;
    --bone:#EDEAE2;
    --porcelain:#F7F5F1;
    --sage:#5C6E52;
    --sage-dim:#8C9A82;
    --rosewood:#A9705E;
    --rosewood-light:#C79684;
    --brass:#9C8552;
    --line:rgba(156,133,82,0.28);
    --line-dark:rgba(237,234,226,0.14);
  }
  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth;}
  body{
    background:var(--porcelain);
    color:var(--ink);
    font-family:'Work Sans', sans-serif;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }
  ::selection{ background:var(--rosewood-light); color:var(--ink); }
  a{ color:inherit; text-decoration:none; }

  .eyebrow{
    font-family:'IBM Plex Mono', monospace;
    font-size:14.5px;
    letter-spacing:0.2em;
    text-transform:uppercase;
  }

  /* ---------- NAV ---------- */
  .nav{
    position:sticky;
    top:0;
    z-index:50;
    background:rgba(247,245,241,0.86);
    backdrop-filter:blur(10px);
    border-bottom:1px solid var(--line);
  }
  .nav-inner{
    max-width:1180px;
    margin:0 auto;
    display:flex;
    align-items:center;
    gap:6px;
    padding:0 20px;
  }
  .nav-brand{
    display:flex;
    align-items:center;
    gap:10px;
    font-family:'IBM Plex Mono', monospace;
    font-size:14px;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--ink);
    padding:14px 18px 14px 0;
    white-space:nowrap;
    border-right:1px solid var(--line);
    margin-right:8px;
  }
  .nav-logo{
    width:30px;
    height:30px;
    object-fit:contain;
    flex-shrink:0;
  }
  .nav-link{
    position:relative;
    white-space:nowrap;
    font-size:17px;
    color:var(--sage);
    padding:16px 14px;
    transition:color 0.3s ease;
  }
  .nav-link.home::after{
    content:'';
    position:absolute; left:14px; right:14px; bottom:10px;
    height:1px; background:var(--rosewood);
    transform:scaleX(0); transform-origin:left;
    transition:transform 0.35s cubic-bezier(.19,1,.22,1);
  }
  .nav-link.home:hover::after{ transform:scaleX(1); }
  .nav-link-current{ color:var(--rosewood); margin-left:auto; }

  /* ---------- HEADER ---------- */
  .page-head{
    position:relative;
    background:var(--ink);
    color:var(--bone);
    text-align:center;
    padding:110px 24px 90px;
    overflow:hidden;
  }
  .page-head-glow{ position:absolute; inset:0; z-index:0; filter:blur(70px); opacity:0.7; }
  .page-head-glow span{
    position:absolute; border-radius:50%; mix-blend-mode:screen;
    animation:drift 24s ease-in-out infinite;
  }
  .page-head-glow span:nth-child(1){
    width:46vw; height:46vw; max-width:560px; max-height:560px;
    left:-6%; top:0%;
    background:radial-gradient(circle at 30% 30%, rgba(169,112,94,0.5), transparent 70%);
  }
  .page-head-glow span:nth-child(2){
    width:40vw; height:40vw; max-width:480px; max-height:480px;
    right:-8%; bottom:-10%;
    background:radial-gradient(circle at 60% 40%, rgba(92,110,82,0.5), transparent 70%);
    animation-delay:-10s;
  }
  @keyframes drift{
    0%,100%{ transform:translate(0,0) scale(1); border-radius:50%; }
    33%{ transform:translate(3%,-4%) scale(1.08); border-radius:46% 54% 60% 40%; }
    66%{ transform:translate(-4%,3%) scale(0.95); border-radius:60% 40% 44% 56%; }
  }
  .page-head-content{ position:relative; z-index:2; }
  .page-head-logo{
    width:76px;
    height:auto;
    margin:0 auto 22px;
    display:block;
    filter:drop-shadow(0 10px 26px rgba(0,0,0,0.35));
    opacity:0;
    animation:rise 1s cubic-bezier(.19,1,.22,1) 0s forwards;
  }
  .page-head .eyebrow{ color:var(--brass); margin-bottom:20px; opacity:0; animation:rise 1s cubic-bezier(.19,1,.22,1) 0.1s forwards; }
  .page-head h1{
    font-family:'Fraunces', serif;
    font-weight:400;
    font-size:clamp(44px, 7.4vw, 80px);
    line-height:1.04;
    letter-spacing:-0.01em;
    max-width:680px;
    margin:0 auto 22px;
    opacity:0;
    animation:rise 1.1s cubic-bezier(.19,1,.22,1) 0.26s forwards;
  }
  .page-head h1 em{ font-style:italic; font-weight:300; color:var(--rosewood-light); }
  .page-head p{
    color:var(--sage-dim);
    font-size:19px;
    max-width:480px;
    margin:0 auto;
    line-height:1.7;
    opacity:0;
    animation:rise 1.1s cubic-bezier(.19,1,.22,1) 0.42s forwards;
  }
  @keyframes rise{ from{ opacity:0; transform:translateY(18px); } to{ opacity:1; transform:translateY(0); } }
  @media (prefers-reduced-motion: reduce){
    .page-head-glow span{ animation:none; }
    .page-head-logo, .page-head .eyebrow, .page-head h1, .page-head p{ animation:none; opacity:1; }
  }

  /* ---------- CONTACT GRID ---------- */
  .contact-wrap{
    max-width:1000px;
    margin:0 auto;
    padding:90px 24px 100px;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:60px;
  }
  .contact-card{
    opacity:0; transform:translateY(24px);
    transition:opacity 0.7s cubic-bezier(.19,1,.22,1), transform 0.7s cubic-bezier(.19,1,.22,1);
  }
  .contact-card.in-view{ opacity:1; transform:translateY(0); }

  .info-block{ margin-bottom:44px; }
  .info-block:last-child{ margin-bottom:0; }
  .info-block .eyebrow{ color:var(--brass); display:block; margin-bottom:12px; }
  .info-block h2{
    font-family:'Fraunces', serif;
    font-weight:500;
    font-size:27px;
    margin-bottom:12px;
    color:var(--ink);
  }
  .info-block p, .info-block a.detail{
    font-size:18px;
    line-height:1.75;
    color:#3E4A40;
  }
  .info-block a.detail{
    display:inline-block;
    color:var(--rosewood);
    font-family:'IBM Plex Mono', monospace;
    font-size:18px;
    margin-top:2px;
    position:relative;
  }
  .info-block a.detail::after{
    content:'';
    position:absolute; left:0; right:0; bottom:-2px; height:1px;
    background:var(--rosewood);
    transform:scaleX(0); transform-origin:left;
    transition:transform 0.35s cubic-bezier(.19,1,.22,1);
  }
  .info-block a.detail:hover::after{ transform:scaleX(1); }

  .hours-table{ width:100%; border-collapse:collapse; margin-top:6px; }
  .hours-table tr{ border-bottom:1px solid var(--line); }
  .hours-table tr:last-child{ border-bottom:none; }
  .hours-table td{
    padding:12px 0;
    font-size:17px;
    color:#3E4A40;
  }
  .hours-table td:first-child{ color:var(--sage); }
  .hours-table td:last-child{
    text-align:right;
    font-family:'IBM Plex Mono', monospace;
    font-size:16px;
    color:var(--ink);
  }

  /* Map card */
  .map-card{
    position:relative;
    height:100%;
    min-height:360px;
    border-radius:6px;
    overflow:hidden;
    background:
      radial-gradient(circle at 30% 20%, rgba(169,112,94,0.16), transparent 55%),
      radial-gradient(circle at 75% 70%, rgba(92,110,82,0.18), transparent 55%),
      var(--ink);
    display:flex;
    align-items:center;
    justify-content:center;
    text-align:center;
    padding:40px;
  }
  .map-card::before{
    content:'';
    position:absolute; inset:0;
    background-image:
      linear-gradient(var(--line-dark) 1px, transparent 1px),
      linear-gradient(90deg, var(--line-dark) 1px, transparent 1px);
    background-size:34px 34px;
    opacity:0.5;
  }
  .map-pin{
    position:relative;
    z-index:2;
    color:var(--bone);
  }
  .map-pin .dot{
    width:14px; height:14px;
    border-radius:50%;
    background:var(--rosewood);
    margin:0 auto 18px;
    position:relative;
    animation:pulse 2.6s ease-in-out infinite;
  }
  .map-pin .dot::after{
    content:'';
    position:absolute; inset:-10px;
    border-radius:50%;
    border:1px solid var(--rosewood);
    opacity:0.5;
    animation:ring 2.6s ease-out infinite;
  }
  @keyframes pulse{ 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.15); } }
  @keyframes ring{ 0%{ transform:scale(0.6); opacity:0.6; } 100%{ transform:scale(2.4); opacity:0; } }
  .map-pin .addr{
    font-family:'Fraunces', serif;
    font-size:23px;
    margin-bottom:8px;
  }
  .map-pin .sub{
    font-family:'IBM Plex Mono', monospace;
    font-size:13px;
    letter-spacing:0.08em;
    color:var(--sage-dim);
    text-transform:uppercase;
  }
  @media (prefers-reduced-motion: reduce){
    .map-pin .dot, .map-pin .dot::after{ animation:none; }
  }

  /* ---------- FOOTER ---------- */
  .footer{
    background:var(--ink);
    color:var(--bone);
    padding:70px 24px 40px;
    text-align:center;
  }
  .footer p{ color:var(--sage-dim); font-size:16px; }
  .footer-base{
    margin-top:40px; padding-top:24px;
    border-top:1px solid var(--line-dark);
    font-family:'IBM Plex Mono', monospace;
    font-size:13px; letter-spacing:0.08em; color:var(--sage-dim);
  }

  @media (max-width:800px){
    .contact-wrap{ grid-template-columns:1fr; gap:50px; padding:70px 20px 80px; }
    .map-card{ min-height:280px; }
  }
  @media (max-width:640px){
    .page-head{ padding:90px 20px 70px; }
    .page-head p{ max-width:100%; }
    .nav-brand{ border-right:none; }
  }
