:root{
      --bg: #ffffff;
      --surface: #fbfaf8;
      --fore: #14110f;
      --muted: #5a514a;
      --border: #e7e0d8;
      --accent: #b8793b; /* caramel */

      --font-display: "Fraunces", ui-serif, Georgia, "Times New Roman", serif;
      --font-body: Inter, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji","Segoe UI Emoji";

      /* type overrides (base tokens exist upstream) */
      --fs-h1: clamp(34px, 3.6vw, 54px);
      --fs-h2: clamp(24px, 2.2vw, 34px);
      --fs-h3: clamp(16px, 1.4vw, 18px);
      --fs-body: 16px;
    }

    html{ scroll-behavior:smooth; }
    body{
      background: var(--bg);
      color: var(--fore);
      font-family: var(--font-body);
      font-size: var(--fs-body);
      line-height: 1.6;
    }

    /* layout helpers (base .container may exist; ensure compatible) */
    .container{
      width: min(1180px, calc(100% - clamp(32px, 6vw, 80px)));
      margin-inline: auto;
    }
    .section{
      padding-block: clamp(64px, 7vw, 112px);
    }

    /* top nav */
    .topnav{
      position: sticky;
      top: 0;
      z-index: 20;
      background: color-mix(in srgb, var(--bg) 88%, transparent);
      backdrop-filter: blur(10px);
      border-bottom: 1px solid var(--border);
    }
    .topnav .inner{
      display:flex;
      align-items:center;
      justify-content:space-between;
      padding: 14px 0;
      gap: 16px;
    }
    .brand{
      display:flex;
      align-items:center;
      gap: 12px;
      min-width: 240px;
    }
    .brand img{
      height: 26px;
      width: auto;
      display:block;
    }
    .navlinks{
      display:flex;
      gap: 18px;
      align-items:center;
      flex-wrap: wrap;
      justify-content:flex-end;
    }
    .navlinks a{
      color: var(--muted);
      text-decoration:none;
      font-size: 14px;
      font-weight: 500;
      padding: 8px 10px;
      border-radius: 10px;
      transition: background 220ms cubic-bezier(0.4,0,0.2,1), color 220ms cubic-bezier(0.4,0,0.2,1);
      cursor:pointer;
    }
    .navlinks a:hover{ background: var(--surface); color: var(--fore); }

    /* buttons */
    .btn{
      appearance:none;
      border: 1px solid var(--border);
      background: transparent;
      color: var(--fore);
      font-weight: 600;
      font-size: 14px;
      padding: 12px 14px;
      border-radius: 14px;
      display:inline-flex;
      align-items:center;
      gap: 10px;
      cursor:pointer;
      transition: transform 220ms cubic-bezier(0.4,0,0.2,1), box-shadow 220ms cubic-bezier(0.4,0,0.2,1), background 220ms cubic-bezier(0.4,0,0.2,1), border-color 220ms cubic-bezier(0.4,0,0.2,1);
      box-shadow: var(--elevation-1, 0 1px 1px rgba(0,0,0,.04));
      text-decoration:none;
      white-space: nowrap;
    }
    .btn:hover{ transform: translateY(-1px); box-shadow: var(--elevation-2, 0 6px 18px rgba(0,0,0,.08)); }
    .btn:active{ transform: translateY(0px); }
    .btn-primary{
      background: var(--accent);
      border-color: color-mix(in srgb, var(--accent) 70%, var(--border));
      color: #fff;
      box-shadow: var(--elevation-2, 0 6px 18px rgba(0,0,0,.10));
    }
    .btn-secondary{
      background: var(--surface);
    }
    .btn svg{ width: 18px; height: 18px; }

    a:focus-visible, button:focus-visible{
      outline: 3px solid color-mix(in srgb, var(--accent) 35%, transparent);
      outline-offset: 3px;
      border-radius: 14px;
    }

    /* typography */
    h1,h2,h3{
      font-family: var(--font-display);
      letter-spacing: -0.02em;
      line-height: 1.08;
    }
    h1{ font-size: var(--fs-h1); }
    h2{ font-size: var(--fs-h2); }
    h3{ font-size: var(--fs-h3); letter-spacing: -0.01em; }
    p{ color: var(--muted); }

    .lead{
      font-size: 16px;
      margin-top: var(--space-4, 16px);
      max-width: 56ch;
    }

    /* hero */
    .hero{
      padding-top: clamp(40px, 5vw, 76px);
      padding-bottom: clamp(64px, 7vw, 112px);
      position: relative;
      overflow: clip;
    }
    .hero-grid{
      display:grid;
      grid-template-columns: 1.05fr 0.95fr;
      gap: clamp(24px, 4vw, 56px);
      align-items: center;
    }
    .hero h1{
      margin-top: 14px;
      max-width: 18ch;
      color: var(--fore);
    }
    .hero .kicker{
      display:inline-flex;
      align-items:center;
      gap: 10px;
      font-size: 12px;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--muted);
    }
    .dot{
      width: 8px; height: 8px; border-radius: 99px;
      background: var(--accent); /* accent use #1 on screen */
      box-shadow: 0 0 0 6px color-mix(in srgb, var(--accent) 14%, transparent);
      flex: 0 0 auto;
    }
    .hero-cta{
      display:flex;
      gap: 12px;
      flex-wrap: wrap;
      margin-top: var(--space-6, 24px);
      align-items: center;
    }
    .hero-meta{
      display:flex;
      gap: 18px;
      flex-wrap: wrap;
      margin-top: var(--space-7, 32px);
      padding-top: var(--space-5, 20px);
      border-top: 1px solid var(--border);
      max-width: 62ch;
    }
    .pill{
      display:flex;
      gap: 10px;
      align-items: baseline;
      padding: 10px 12px;
      border: 1px solid var(--border);
      border-radius: 14px;
      background: var(--surface);
      box-shadow: var(--elevation-1, 0 1px 1px rgba(0,0,0,.04));
      font-variant-numeric: tabular-nums;
    }
    .pill strong{
      color: var(--fore);
      font-weight: 650;
      font-size: 14px;
    }
    .pill span{
      color: var(--muted);
      font-size: 13px;
    }

    .hero-visual{
      position: relative;
      border-radius: 18px;
      border: 1px solid var(--border);
      background: linear-gradient(180deg, var(--surface), var(--bg));
      overflow:hidden;
      box-shadow: var(--elevation-3, 0 14px 36px rgba(0,0,0,.10));
    }
    .hero-visual .logo-wrap{
      display:grid;
      place-items:center;
      padding: clamp(28px, 4vw, 44px);
      min-height: 320px;
    }
    .hero-visual img{
      width: min(420px, 88%);
      height: auto;
      display:block;
      filter: drop-shadow(0 18px 28px rgba(20,17,15,.14));
    }
    .badge{
      position:absolute;
      right: 14px;
      bottom: 14px;
      background: color-mix(in srgb, var(--bg) 78%, transparent);
      border: 1px solid var(--border);
      border-radius: 16px;
      padding: 12px 12px;
      box-shadow: var(--elevation-4, 0 22px 50px rgba(0,0,0,.14));
      backdrop-filter: blur(10px);
      max-width: 250px;
    }
    .badge h3{
      font-family: var(--font-body);
      font-size: 13px;
      letter-spacing: 0.02em;
      text-transform: uppercase;
      color: var(--muted);
      margin: 0 0 6px 0;
    }
    .badge p{
      margin:0;
      color: var(--fore);
      font-size: 14px;
      line-height: 1.35;
    }

    /* hero decor (single flourish: floating linework) */
    .hero-decor{
      position:absolute;
      inset: -80px -60px auto auto;
      width: 520px;
      height: 520px;
      opacity: .12;
      pointer-events:none;
      filter: blur(0.2px);
      animation: drift 12s ease-in-out infinite alternate;
    }
    @keyframes drift{
      from{ transform: translate3d(0,0,0) rotate(0deg); }
      to{ transform: translate3d(-18px, 14px, 0) rotate(5deg); }
    }

    /* features */
    .split{
      display:grid;
      grid-template-columns: 0.95fr 1.05fr;
      gap: clamp(24px, 4vw, 56px);
      align-items: start;
    }
    .grid-2{
      display:grid;
      grid-template-columns: 1fr 1fr;
      gap: 16px;
    }
    .card{
      border: 1px solid var(--border);
      border-radius: 16px;
      background: var(--bg);
      padding: 18px 18px;
      box-shadow: var(--elevation-1, 0 1px 1px rgba(0,0,0,.04));
      transition: transform 240ms cubic-bezier(0.4,0,0.2,1), box-shadow 240ms cubic-bezier(0.4,0,0.2,1);
    }
    .card:hover{ transform: translateY(-2px); box-shadow: var(--elevation-3, 0 14px 36px rgba(0,0,0,.10)); }
    .icon{
      width: 34px; height: 34px;
      border-radius: 12px;
      display:grid;
      place-items:center;
      background: var(--surface);
      border: 1px solid var(--border);
      margin-bottom: 12px;
      color: var(--fore);
    }
    .icon svg{ width: 18px; height: 18px; }
    .card h3{ margin: 0 0 6px 0; color: var(--fore); }
    .card p{ margin: 0; font-size: 14px; }

    .aside-photo{
      border-radius: 18px;
      overflow:hidden;
      border: 1px solid var(--border);
      background: var(--surface);
      box-shadow: var(--elevation-2, 0 6px 18px rgba(0,0,0,.08));
    }
    .aside-photo img{
      width: 100%;
      height: auto;
      display:block;
      aspect-ratio: 4 / 3;
      object-fit: cover;
    }
    .caption{
      padding: 14px 16px;
      border-top: 1px solid var(--border);
      font-size: 13px;
      color: var(--muted);
    }

    /* menu */
    .menu-grid{
      display:grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 16px;
      margin-top: var(--space-7, 32px);
    }
    .menu-item{
      border: 1px solid var(--border);
      border-radius: 16px;
      overflow:hidden;
      background: var(--bg);
      box-shadow: var(--elevation-1, 0 1px 1px rgba(0,0,0,.04));
      transition: transform 240ms cubic-bezier(0.4,0,0.2,1), box-shadow 240ms cubic-bezier(0.4,0,0.2,1);
    }
    .menu-item:hover{ transform: translateY(-2px); box-shadow: var(--elevation-3, 0 14px 36px rgba(0,0,0,.10)); }
    .menu-item img{
      width: 100%;
      height: auto;
      display:block;
      aspect-ratio: 4 / 3;
      object-fit: cover;
      background: var(--surface);
    }
    .menu-body{
      padding: 14px 14px 16px;
    }
    .menu-top{
      display:flex;
      align-items: baseline;
      justify-content: space-between;
      gap: 12px;
      margin-bottom: 6px;
      font-variant-numeric: tabular-nums;
    }
    .menu-top h3{
      margin: 0;
      font-family: var(--font-display);
      color: var(--fore);
      font-size: 18px;
      line-height: 1.1;
    }
    .price{
      font-weight: 650;
      color: var(--fore);
      font-size: 14px;
      white-space: nowrap;
    }
    .menu-body p{
      margin: 0;
      font-size: 13.5px;
      color: var(--muted);
    }

    /* gallery */
    .gallery{
      background: var(--surface);
      border-top: 1px solid var(--border);
      border-bottom: 1px solid var(--border);
    }
    .gallery-grid{
      display:grid;
      grid-template-columns: 1.2fr 0.8fr 0.8fr;
      gap: 14px;
      margin-top: var(--space-7, 32px);
    }
    .gcol{
      display:grid;
      gap: 14px;
    }
    .shot{
      border-radius: 18px;
      overflow:hidden;
      border: 1px solid var(--border);
      box-shadow: var(--elevation-2, 0 6px 18px rgba(0,0,0,.08));
      background: var(--bg);
    }
    .shot img{
      width: 100%;
      height: 100%;
      display:block;
      object-fit: cover;
    }
    .shot.wide img{ aspect-ratio: 16 / 10; }
    .shot.tall img{ aspect-ratio: 3 / 4; }
    .shot.square img{ aspect-ratio: 1 / 1; }

    /* reservation */
    form{
      margin-top: var(--space-7, 32px);
    }
    .form-grid{
      display:grid;
      grid-template-columns: 1fr 1fr;
      gap: 14px;
      align-items: start;
    }
    .field{ display:flex; flex-direction:column; gap: 6px; }
    label{
      color: var(--fore);
      font-size: 13px;
      font-weight: 600;
    }
    label span[aria-hidden="true"]{ color: var(--error, #dc2626); }
    .full{ grid-column: 1 / -1; }
    .help{
      font-size: 13px;
      color: var(--muted);
      margin-top: 10px;
      max-width: 66ch;
    }

    /* footer */
    footer{
      padding-block: 34px;
      border-top: 1px solid var(--border);
      background: var(--bg);
    }
    .foot{
      display:flex;
      align-items:flex-start;
      justify-content:space-between;
      gap: 16px;
      flex-wrap: wrap;
    }
    .foot small{ color: var(--muted); }
    .foot a{ color: var(--muted); text-decoration:none; cursor:pointer; }
    .foot a:hover{ color: var(--fore); }

    /* responsive */
    @media (max-width: 1023px){
      .hero-grid{ grid-template-columns: 1fr; }
      .split{ grid-template-columns: 1fr; }
      .menu-grid{ grid-template-columns: repeat(2, 1fr); }
      .gallery-grid{ grid-template-columns: 1fr; }
      .gcol{ grid-template-columns: 1fr 1fr; }
    }
    @media (max-width: 640px){
      .navlinks{ display:none; }
      .menu-grid{ grid-template-columns: 1fr; }
      .gcol{ grid-template-columns: 1fr; }
      .form-grid{ grid-template-columns: 1fr; }
      .badge{ max-width: 92%; }
      .brand{ min-width: unset; }
    }

    /* animation — CSS-only reveal */
    @keyframes fadeInUp {
      from { opacity: 0; transform: translateY(24px); }
      to   { opacity: 1; transform: translateY(0); }
    }
    section > h1,
    section > h2,
    section > h3,
    section > p:first-of-type,
    .hero-cta {
      animation: fadeInUp 0.7s cubic-bezier(0.4, 0, 0.2, 1) both;
    }
    section .card:nth-child(1),  section [class*="grid"] > *:nth-child(1) { animation: fadeInUp 0.7s 0.08s cubic-bezier(0.4,0,0.2,1) both; }
    section .card:nth-child(2),  section [class*="grid"] > *:nth-child(2) { animation: fadeInUp 0.7s 0.16s cubic-bezier(0.4,0,0.2,1) both; }
    section .card:nth-child(3),  section [class*="grid"] > *:nth-child(3) { animation: fadeInUp 0.7s 0.24s cubic-bezier(0.4,0,0.2,1) both; }
    section .card:nth-child(4),  section [class*="grid"] > *:nth-child(4) { animation: fadeInUp 0.7s 0.32s cubic-bezier(0.4,0,0.2,1) both; }

    @media (prefers-reduced-motion: reduce) {
      .hero-decor{ animation: none; }
      section > h1, section > h2, section > h3, section > p:first-of-type,
      .hero-cta, section .card, section [class*="grid"] > * { animation: none; }
      .btn, .card, .menu-item{ transition: none; }
      html{ scroll-behavior: auto; }
    }