:root {
  --osawa-logo-green: #126435;
  --osawa-logo-text: #2d2e2f;
  --osawa-main: var(--osawa-color-primary);
  --osawa-sub: var(--osawa-color-secondary);
  --osawa-bg: var(--osawa-color-white);
  --osawa-bg-secondary: var(--osawa-color-bg-warm);
  --osawa-bg-green: var(--osawa-color-bg-soft);
  --osawa-text: var(--osawa-color-text);
  --osawa-accent-text: var(--osawa-color-accent);
  --osawa-white: var(--osawa-color-white);
}

@media screen and (min-width: 992px) {
  .pc-none {
    display: none;
  }
}

.site-header {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: 50;
  background: rgba(255,255,255,.9);
  box-shadow: 0 1px 10px rgba(38,38,38,.035);
}

.site-header a,
.site-header a:link,
.site-header a:visited,
.site-header a:hover,
.site-header a:focus {
  text-decoration: none;
}

.header-top {
  width: 100%;
  min-height: 94px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: clamp(170px, 13.4vw, 205px) clamp(150px, 13.2vw, 270px) minmax(220px, 1fr) clamp(82px, 5.8vw, 104px) minmax(420px, 41vw, 840px);
  grid-template-rows: 22px 63px;
  column-gap: 0;
  row-gap: 4px;
  align-items: center;
  padding-left: clamp(18px, 2.6vw, 38px);
  position: relative;
  font-size: 13px;
}

.header-logo {
  grid-column: 1;
  grid-row: 2;
  align-self: center;
}

.header-logo img {
  width: clamp(160px, 13.4vw, 274px);
}

.sp-menu-toggle {
  display: none;
}

.header-tagline {
  grid-column: 1 / 3;
  grid-row: 1;
  align-self: end;
  margin: 0;
  color: var(--osawa-accent-text);
  font-family: "Zen Old Mincho", serif;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.4;
  white-space: nowrap;
}

.header-access p,
.header-hours p,
.header-closed p {
  margin: 0;
}

.header-access {
  grid-column: 2;
  grid-row: 2;
  position: relative;
  display: grid;
  gap: 5px;
  padding-left: 24px;
  color: var(--osawa-text);
  font-family: "Zen Old Mincho", serif;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.4;
  justify-self: start;
}

.header-access::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  width: 1px;
  height: 54px;
  background: var(--osawa-sub);
  transform: translateY(-50%);
}

.header-access p:nth-child(2) {
  width: max-content;
  padding: 2px 6px;
  background: var(--osawa-sub);
  color: var(--osawa-white);
  font-size: 12px;
  line-height: 1.2;
}

.header-hours span,
.header-closed span {
  display: block;
  margin-bottom: 8px;
  color: var(--osawa-text);
  font-family: "Zen Old Mincho", serif;
}

.header-hours {
  grid-column: 3;
  grid-row: 2;
  justify-self: center;
  color: var(--osawa-text);
  font-family: "Zen Old Mincho", serif;
  font-size: clamp(13px, .83vw, 17px);
  line-height: 1.45;
  letter-spacing: .02em;
}

.header-hours span {
  text-align: center;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0;
}

.header-hours p {
  display: grid;
  grid-template-columns: 6.6em max-content;
  justify-content: space-between;
  column-gap: 8px;
  font-size: 13px;
}

.header-hours small {
  display: inline-block;
  color: var(--osawa-accent-text);
  font-size: clamp(10px, .68vw, 14px);
  font-weight: 600;
}

.header-closed {
  grid-column: 4;
  grid-row: 2;
  width: 70px;
  height: 63px;
  display: grid;
  align-content: center;
  justify-items: center;
  justify-self: center;
  border-radius: 50%;
  background: var(--osawa-white);
  box-shadow: 0 0 20px rgba(38,38,38,.03);
  font-family: "Zen Old Mincho", serif;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.35;
  text-align: center;
}

.header-closed span {
  margin: 0 0 2px;
  color: var(--osawa-text);
  font-size: 12px;
}

.header-closed p {
  color: var(--osawa-accent-text);
}

.header-actions {
  grid-column: 5;
  grid-row: 2;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  align-items: center;
  width: 100%;
  height: 63px;
  justify-self: end;
  align-self: center;
}

.header-actions a {
  height: 63px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: clamp(6px, .8vw, 14px);
  min-width: 0;
  padding: 0 clamp(6px, .7vw, 12px);
  border: 1px solid var(--osawa-sub);
  background: var(--osawa-white);
  color: var(--osawa-accent-text);
  font-family: "Zen Old Mincho", serif;
  font-size: clamp(14px, 1.08vw, 22px);
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
}

.header-actions img {
  width: 22px;
  height: 22px;
  flex: 0 0 auto;
  object-fit: contain;
}

.header-actions .reserve img {
  height: 20px;
}

.header-actions .line img {
  width: 24px;
  height: 24px;
  filter: brightness(0) invert(1);
}

.header-actions .tel {
  background: var(--osawa-sub);
  color: var(--osawa-white);
}

.header-actions .tel img {
  filter: brightness(0) invert(1);
}

.header-actions .tel:link,
.header-actions .tel:visited {
  color: var(--osawa-white);
}

.header-actions .tel:hover {
  background: var(--osawa-white);
  color: var(--osawa-sub);
}

.header-actions .tel:hover img {
  filter: none;
}

.header-actions .line {
  background: var(--osawa-main);
  border-color: var(--osawa-main);
  color: var(--osawa-white);
}

.header-actions .reserve:link,
.header-actions .reserve:visited {
  color: var(--osawa-accent-text);
}

.site-header .header-actions .reserve:hover {
  background: var(--osawa-sub);
  color: var(--osawa-white);
}

.site-header .header-actions .reserve:hover img {
  filter: brightness(0) invert(1);
}

.header-actions .line:link,
.header-actions .line:visited {
  color: var(--osawa-white);
}

.header-actions .line:hover {
  background: var(--osawa-white);
  color: var(--osawa-main);
}

.header-actions .line:hover img {
  filter: none;
}

.global-nav {
  border-top: 0;
}

.global-nav ul {
  width: min(1800px, calc(100% - 120px));
  margin: 0 auto;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  list-style: none;
}

.global-nav a {
  min-height: 86px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  position: relative;
  color: var(--osawa-text);
  font-family: "Zen Old Mincho", serif;
  font-size: clamp(17px, 1.08vw, 22px);
  font-weight: 500;
  line-height: 1.45;
}

.global-nav a:link,
.global-nav a:visited {
  color: var(--osawa-text);
}

.global-nav li:not(:last-child) a::after {
  content: "";
  position: absolute;
  top: 31px;
  right: 0;
  width: 1px;
  height: 24px;
  background: var(--osawa-sub);
}

.global-nav small {
  color: var(--osawa-sub);
  font-family: "EB Garamond", serif;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .08em;
  text-align: center;
}

.global-nav > ul > .global-nav__item--has-submenu {
  position: relative;
}

.global-nav .global-nav__submenu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 2;
  width: 290px;
  display: block;
  padding: 8px 0;
  background: rgba(255, 255, 255, .98);
  box-shadow: 0 10px 22px rgba(38, 38, 38, .14);
  opacity: 0;
  transform: translateY(-8px);
  visibility: hidden;
  pointer-events: none;
  transition: opacity .2s ease, transform .2s ease, visibility .2s ease;
}

.global-nav .global-nav__submenu li {
  display: block;
}

.global-nav .global-nav__submenu a {
  min-height: 44px;
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  padding: 8px 22px;
  border-bottom: 1px solid rgba(169, 119, 35, .18);
  font-family: "Noto Sans JP", sans-serif;
  font-size: 14px;
  line-height: 1.5;
  white-space: nowrap;
}

.global-nav .global-nav__submenu li:last-child a {
  border-bottom: 0;
}

.global-nav .global-nav__submenu a::after {
  display: none !important;
}

.global-nav .global-nav__submenu a:hover,
.global-nav .global-nav__submenu a:focus-visible {
  background: var(--osawa-bg-green);
  color: var(--osawa-accent-text);
}

.global-nav__item--has-submenu:hover > .global-nav__submenu,
.global-nav__item--has-submenu:focus-within > .global-nav__submenu {
  opacity: 1;
  transform: translateY(0);
  visibility: visible;
  pointer-events: auto;
}

@media screen and (min-width: 992px) and (max-width: 1199px) {
  .header-top {
    min-height: 94px;
    grid-template-columns: 150px 128px minmax(140px, 1fr) 64px clamp(380px, 38vw, 440px);
    grid-template-rows: 26px 63px;
    padding-left: 14px;
    padding-right: 12px;
  }

  .header-logo img {
    width: 150px;
  }

  .header-actions {
    grid-template-columns: 1.1fr .9fr 1fr;
  }

  .header-actions a {
    gap: 6px;
    padding: 0 8px;
    font-size: clamp(13px, 1.18vw, 14px);
  }

  .header-actions img {
    width: 20px;
    height: 20px;
  }

  .header-actions .reserve img {
    height: 18px;
  }

  .header-actions .line img {
    width: 22px;
    height: 22px;
  }
}

@media screen and (max-width: 991px) {
  .sp-none {
    display: none;
  }

  .header-top {
    width: min(720px, calc(100% - 32px));
    min-height: 72px;
    grid-template-columns: 150px minmax(20px, 1fr) 360px;
    padding: 10px 0;
  }

  .header-logo img {
    width: 150px;
  }

  .header-tagline,
  .header-access,
  .header-hours,
  .header-closed {
    display: none;
  }

  .header-actions {
    grid-column: 3;
    grid-template-columns: 1.1fr .9fr 1fr;
    height: 40px;
  }

  .header-actions a {
    height: 40px;
    gap: 4px;
    padding: 0 6px;
    font-size: 12px;
  }

  .header-actions img {
    width: 18px;
    height: 18px;
  }

  .header-actions .reserve img {
    height: 17px;
  }

  .header-actions .line img {
    width: 20px;
    height: 20px;
  }

  .global-nav ul {
    width: 100%;
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .global-nav a {
    min-height: 54px;
    gap: 0;
    font-size: 14px;
  }

  .global-nav li:not(:last-child) a::after {
    top: 18px;
    height: 10px;
  }

  .global-nav small {
    font-size: 10px;
    letter-spacing: 0;
  }
}

@media screen and (max-width: 767px) {
  .site-header {
    background: var(--osawa-bg);
    box-shadow: 0 1px 8px rgba(38,38,38,.06);
  }

  .header-top {
    width: 100%;
    min-height: 0;
    display: grid;
    grid-template-rows: none;
    grid-template-columns: 1fr auto;
    align-items: center;
    padding: 10px 17px 10px 20px;
  }

  .header-actions {
    display: none;
  }

  .global-nav {
    position: absolute;
    top: 100%;
    right: 0;
    left: 0;
    display: block;
    max-height: 0;
    overflow: hidden;
    padding: 0 20px;
    background: rgba(247,246,243,.98);
    box-shadow: 0 10px 22px rgba(38,38,38,0);
    opacity: 0;
    transform: translateY(-8px);
    visibility: hidden;
    transition: max-height .32s ease, padding .32s ease, opacity .24s ease, transform .32s ease, visibility .32s ease, box-shadow .32s ease;
  }

  .global-nav ul {
    width: 100%;
    display: grid;
    grid-template-columns: 1fr;
    gap: 0;
    overflow: visible;
  }

  .global-nav a {
    min-height: 54px;
    display: grid;
    grid-template-columns: 1fr;
    place-items: center;
    border-bottom: 1px solid rgba(169,119,35,.22);
  }

  .global-nav li:not(:last-child) a::after {
    display: none;
  }

  .header-logo {
    grid-column: 1;
    grid-row: 1;
    justify-self: start;
    align-self: center;
  }

  .header-logo img {
    width: 138px;
  }

  .sp-menu-toggle {
    width: 30px;
    height: 24px;
    padding: 0;
    display: grid;
    gap: 8px;
    grid-column: 2;
    grid-row: 1;
    justify-self: end;
    align-self: center;
    border: 0;
    background: transparent;
  }

  .sp-menu-toggle span {
    display: block;
    width: 30px;
    height: 2px;
    background: var(--osawa-accent-text);
    transition: transform .2s ease, opacity .2s ease;
  }

  .site-header.is-menu-open .sp-menu-toggle span:nth-child(1) {
    transform: translateY(10px) rotate(45deg);
  }

  .site-header.is-menu-open .sp-menu-toggle span:nth-child(2) {
    opacity: 0;
  }

  .site-header.is-menu-open .sp-menu-toggle span:nth-child(3) {
    transform: translateY(-10px) rotate(-45deg);
  }

  .site-header.is-menu-open .global-nav {
    max-height: calc(100vh - 64px);
    overflow-y: auto;
    padding: 12px 20px 0;
    box-shadow: 0 10px 22px rgba(38,38,38,.12);
    opacity: 1;
    transform: translateY(0);
    visibility: visible;
  }

  .global-nav .global-nav__submenu {
    display: none;
  }

  .site-header.site-header.is-menu-open .global-nav {
    max-height: calc(100vh - 64px);
    overflow-y: auto;
  }
}
