@import url("https://fonts.googleapis.com/css2?family=Kosugi+Maru&family=Noto+Sans+JP:wght@400;500;600;700;900&family=Noto+Serif+JP:wght@700&display=swap");

/* ==========================================================================
   Reset / Base
   ========================================================================== */
:root {
  --color-navy: #233a4d;
  --color-navy-soft: #2b5970;
  --color-body: #59788c;
  --color-body-light: #8ca6b8;
  --color-caption: #738c9e;
  --color-blue-light: #5aade8;
  --color-blue-main: #2a7fc0;
  --color-blue-deep: #005d9f;
  --color-blue-dark: #1a5e8a;
  --color-blue-navy: #1a4a6b;
  --color-blue-pale: #eff7fb;
  --color-blue-pale-2: #e8f3f9;
  --color-blue-pale-3: #d9ecf6;
  --color-blue-pale-4: #b8def3;
  --color-blue-dashed: #c5deed;
  --color-blue-band: #7fc0e4;
  --color-green: #6bb88c;
  --color-gray-day: #e1e1e1;
  --color-gray-text: #666;
  --color-footer-bg: #1e3040;
  --color-footer-text: #b8d1e3;
  --color-footer-text-soft: #9ebdd1;
  --color-footer-muted: #809eb5;
  --font-sans: "Noto Sans JP", sans-serif;
  --font-serif: "Noto Serif JP", serif;
  --font-round: "Kosugi Maru", sans-serif;
  --inner-width: 1140px;
  --side-1140: max(150px, calc((100% - 1140px) / 2));
  --side-header: max(73px, calc((100% - 1294px) / 2));
  --side-footer: max(160px, calc((100% - 1120px) / 2));
  --section-pad-v: 90px;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  font-family: var(--font-sans);
  font-size: 16px;
  color: var(--color-body);
  background: #fff;
  -webkit-font-smoothing: antialiased;
}

img {
  max-width: 100%;
  display: block;
}

a {
  text-decoration: none;
  color: inherit;
}

ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

p {
  margin: 0;
}

button {
  font-family: inherit;
  cursor: pointer;
}

.section-label {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.section-label__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: 30px;
  color: var(--color-navy);
}

.section-label__caption {
  display: flex;
  align-items: center;
  gap: 8px;
}

.section-label__bar {
  width: 22px;
  height: 5px;
  border-radius: 3px;
  background: var(--color-green);
}

.section-label__en {
  font-size: 12px;
  letter-spacing: 3px;
  color: var(--color-caption);
}

/* ==========================================================================
   Display utilities
   ========================================================================== */
@media (min-width: 1025px) {
  .tab-only,
  .sp-only,
  .tab-sp-only {
    display: none !important;
  }
}

@media (max-width: 1024px) {
  .pc-only {
    display: none !important;
  }
}

@media (max-width: 1024px) and (min-width: 768px) {
  .sp-only {
    display: none !important;
  }
}

@media (max-width: 767px) {
  .tab-only,
  .pc-tab-only {
    display: none !important;
  }
}

/* ==========================================================================
   Header
   ========================================================================== */
.page-top {
  position: sticky;
  top: 0;
  z-index: 100;
  background: #fff;
  box-shadow: 0 2px 12px rgba(26, 77, 115, 0.08);
}

[id] {
  scroll-margin-top: 90px;
}

.site-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 20px;
  width: 100%;
  max-width: 1280px;
  margin: auto;
}

.site-header--sp {
  position: relative;
}

.site-header__logo {
  display: flex;
  align-items: center;
  gap: 12px;
}

.site-header__logo-mark {
  width: 40px;
  height: 47px;
}

.site-header__logo-ja {
  font-family: var(--font-serif);
  font-weight: 700;
  font-size: 24px;
  color: var(--color-blue-light);
  white-space: nowrap;
}

.site-header__logo-en {
  font-family: var(--font-sans);
  font-size: 11px;
  color: #8cb2cc;
  white-space: nowrap;
}

.site-nav {
  font-size: 14px;
  color: #4a6b7d;
}

.site-nav a {
  white-space: nowrap;
  color: #333;
  font-size: 15px;
}

.site-nav a:hover {
  color: var(--color-blue-main);
}

.site-nav--pc {
  display: flex;
  align-items: center;
  gap: 28px;
}

.site-nav--sp {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  background: #fff;
  box-shadow: 0 12px 24px rgba(26, 77, 115, 0.14);
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
  transition: max-height 0.3s ease, opacity 0.3s ease;
  z-index: 95;
}

.site-nav--sp.is-open {
  max-height: 480px;
  opacity: 1;
  pointer-events: auto;
}

.site-nav--sp a {
  width: 100%;
  padding: 14px 24px;
  border-top: 1px solid var(--color-blue-pale);
}

.site-header__menu-btn {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  width: 40px;
  height: 40px;
  background: none;
  border: none;
  padding: 0;
}

.site-header__menu-btn span {
  display: block;
  width: 24px;
  height: 2px;
  border-radius: 2px;
  background: var(--color-navy);
  transition: transform 0.25s ease, opacity 0.25s ease;
}

.site-header__menu-btn[aria-expanded="true"] span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

.site-header__menu-btn[aria-expanded="true"] span:nth-child(2) {
  opacity: 0;
}

.site-header__menu-btn[aria-expanded="true"] span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

/* ==========================================================================
   Mobile quick-action bar
   ========================================================================== */
.sp-quick-bar {
  display: flex;
  width: 100%;
}

.sp-quick-bar__item {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 12px 8px;
  font-size: 13px;
  font-weight: 500;
  color: #fff;
  text-align: center;
  line-height: 1.3;
}

.sp-quick-bar__item--reserve {
  background: var(--color-blue-main);
}

.sp-quick-bar__item--tel {
  background: var(--color-green);
}

.sp-quick-bar__icon {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
}

/* ==========================================================================
   Hero
   ========================================================================== */
.hero-section {
  position: relative;
  background: #fff;
  overflow: hidden;
  padding-bottom: 70px;
}

.hero-inner {
  position: relative;
  z-index: 1;
  max-width: 1140px;
  margin: 0 auto;
  padding-top: 36px;
}

.hero-bg-block {
  position: absolute;
  left: 0;
  top: 0;
  width: calc(var(--side-1140) + 250px);
  height: 620px;
  background: var(--color-blue-pale-3);
  z-index: 0;
}

.hero-photo {
  position: relative;
  z-index: 1;
  width: 100%;
  aspect-ratio: 1140 / 470;
  border-radius: 0 65px 0 65px;
  overflow: hidden;
}

.hero-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.hero-catch {
  position: absolute;
  display: inline-flex;
  align-items: center;
  background: rgba(255, 255, 255, 0.95);
  border-radius: 999px;
  padding: 12px 28px;
  box-shadow: 0 4px 12px rgba(26, 77, 115, 0.18);
  font-family: var(--font-round);
  font-weight: 400;
  font-size: 38px;
  color: var(--color-blue-deep);
  white-space: nowrap;
}

.hero-catch--1 {
  left: 6%;
  top: 30%;
}

.hero-catch--2 {
  left: 8.5%;
  top: 51%;
}

.hero-lead {
  text-align: center;
  font-size: 16px;
  line-height: 2;
  color: var(--color-body);
  margin-top: 40px;
}

.hero-actions {
  display: flex;
  justify-content: center;
  gap: 20px;
  margin-top: 30px;
  flex-wrap: wrap;
}

.btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border-radius: 999px;
  padding: 10px 32px;
  font-size: 14px;
  font-weight: 500;
  white-space: nowrap;
  border: none;
  justify-content: center;
}

.btn--primary {
  background: var(--color-blue-main);
  color: #fff;
  width: 250px;
  max-width: 100%;
}

.btn--outline {
  background: #fff;
  border: 2px solid var(--color-blue-pale-4);
  color: var(--color-blue-main);
  width: 250px;
  max-width: 100%;
  font-size: 18px;
}

.btn__icon {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}

/* ==========================================================================
   Hours section
   ========================================================================== */
.hours-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 24px;
  padding: var(--section-pad-v) var(--side-1140);
  background: #fff;
}

.hours-section__note {
  text-align: center;
  font-size: 14px;
  line-height: 1.9;
  color: var(--color-body-light);
}

.hours-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  background: #fff;
  border: 1.5px solid #e3f0f7;
  border-radius: 32px;
  padding: 36px 56px;
  box-shadow: 0 10px 30px rgba(79, 168, 217, 0.18);
}

.hours-card__label {
  font-size: 13px;
  letter-spacing: 3px;
  color: var(--color-blue-light);
}

.hours-card__title {
  font-weight: 500;
  font-size: 22px;
  color: var(--color-navy-soft);
}

.hours-table {
  display: flex;
  flex-direction: column;
  gap: 12px;
  width: 100%;
  max-width: 500px;
}

.hours-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  row-gap: 8px;
  width: 100%;
}

.hours-row__label {
  font-size: 14px;
  letter-spacing: 0.7px;
  color: var(--color-gray-text);
}

.hours-days {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

.day-pill {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 100px;
  background: var(--color-blue-light);
  color: #fff;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.6px;
}

.day-pill--off {
  background: var(--color-gray-day);
}

.day-pill--wide {
  width: 54px;
}

.day-pill--surgery {
  width: auto;
  padding: 0 10px;
  background: #fff;
  border: 1.5px solid var(--color-blue-light);
  color: var(--color-blue-main);
  font-size: 12px;
}

.hours-table--sp .day-pill--surgery {
  width: 24px;
  padding: 0;
}

.hours-card__text {
  font-size: 16px;
  color: var(--color-body);
}

.hours-card__note {
  font-size: 14px;
  text-align: center;
  line-height: 1.9;
  color: var(--color-body-light);
}

/* ==========================================================================
   Patients section
   ========================================================================== */
.patients-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 32px;
  padding: var(--section-pad-v) var(--side-1140);
  background: var(--color-blue-pale);
}

.patients-section .section-label {
  align-items: flex-start;
  width: 100%;
}

.patients-lead {
  text-align: center;
  font-size: 16px;
  line-height: 2.2;
  color: var(--color-body);
}

.info-box {
  width: 100%;
  background: #fff;
  border-radius: 28px;
  padding: 28px 40px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  box-shadow: 0 6px 18px rgba(79, 168, 217, 0.1);
}

.info-box__title {
  font-weight: 500;
  font-size: 16px;
  color: var(--color-blue-dark);
}

.info-box__text {
  font-size: 14px;
  line-height: 1.9;
  color: var(--color-body);
}

/* ==========================================================================
   Greeting band
   ========================================================================== */
.greeting-section {
  position: relative;
  padding: var(--section-pad-v) var(--side-1140);
  background: var(--color-blue-pale);
}

.greeting-leaf {
  position: absolute;
  left: calc(var(--side-1140) - 43px);
  top: 18px;
  width: 80px;
  height: 80px;
}

.greeting-row {
  display: flex;
  align-items: center;
  gap: 64px;
  margin-top: 40px;
}

.greeting-text {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.greeting-text__heading {
  font-weight: 700;
  font-size: 24px;
  line-height: 1.9;
  color: var(--color-navy-soft);
}

.greeting-text__heading em {
  font-style: normal;
  color: var(--color-blue-main);
}

.greeting-text__body {
  font-size: 16px;
  line-height: 2;
  color: var(--color-body);
}

.greeting-text__body span {
  display: block;
}

.greeting-photo {
  flex-shrink: 0;
  width: 520px;
  height: 350px;
  border-radius: 32px;
  overflow: hidden;
}

.greeting-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ==========================================================================
   News section
   ========================================================================== */
.news-section {
  display: flex;
  flex-direction: column;
  gap: 40px;
  padding: var(--section-pad-v) var(--side-1140);
  background: #fff;
}

.news-card {
  background: #fff;
  border-radius: 28px;
  padding: 28px 44px;
  box-shadow: 0 8px 24px rgba(79, 168, 217, 0.14);
}

.news-list {
  display: flex;
  flex-direction: column;
}

.news-row {
  display: flex;
  align-items: center;
  gap: 20px;
  padding: 18px 0;
}

.news-row + .news-row {
  border-top: 1.5px dashed var(--color-blue-dashed);
}

.news-row__date {
  font-size: 14px;
  color: #7fb5d4;
  white-space: nowrap;
}

.news-row__badge {
  display: inline-flex;
  align-items: center;
  background: var(--color-blue-pale-2);
  border-radius: 999px;
  padding: 4px 16px;
  font-weight: 500;
  font-size: 14px;
  color: var(--color-blue-dark);
  white-space: nowrap;
}

.news-row__body {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.news-row__title {
  font-size: 16px;
  color: var(--color-body);
}

.news-row__excerpt {
  font-size: 14px;
  line-height: 1.8;
  color: var(--color-body);
}

.news-more-row {
  display: flex;
  justify-content: center;
}

.btn--more {
  background: #fff;
  padding: 12px 28px;
  font-weight: 500;
  font-size: 14px;
  background: var(--color-blue-main);
  color: #fff;
}

/* ==========================================================================
   Orthoptist section
   ========================================================================== */
.orthoptist-section {
  display: flex;
  flex-direction: column;
  gap: 40px;
  padding: var(--section-pad-v) var(--side-1140);
  background: #fff;
}

.orthoptist-lead {
  font-weight: 700;
  font-size: 22px;
  color: var(--color-navy);
}

.myopia-card {
  display: flex;
  align-items: center;
  gap: 64px;
  background: var(--color-blue-pale);
  border-radius: 28px;
  padding: 48px 56px;
}

.myopia-text {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.myopia-text__heading {
  font-weight: 700;
  font-size: 24px;
  line-height: 1.7;
  color: var(--color-navy);
}

.myopia-text__body {
  font-size: 16px;
  line-height: 2;
  color: var(--color-body);
}

.myopia-points {
  display: flex;
  flex-direction: column;
  gap: 16px;
  width: 380px;
  flex-shrink: 0;
}

.point-pill {
  display: flex;
  align-items: center;
  gap: 14px;
  background: #fff;
  border-radius: 999px;
  padding: 16px 32px 16px 24px;
}

.point-pill__dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--color-green);
  flex-shrink: 0;
}

.point-pill__text {
  font-weight: 500;
  font-size: 16px;
  color: var(--color-navy);
}

/* ==========================================================================
   Medical section
   ========================================================================== */
.medical-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 48px;
  padding: var(--section-pad-v) var(--side-1140);
  background: #fff;
}

.medical-section .section-label {
  width: 100%;
}

.medical-cards {
  display: flex;
  gap: 26px;
  width: 100%;
}

.medical-card {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  padding-bottom: 12px;
}

.medical-card__photo {
  width: 100%;
  aspect-ratio: 330 / 220;
  border-radius: 165px 165px 20px 20px;
  overflow: hidden;
  transition: opacity 0.4s ease;
}

.medical-card__photo:hover {
  opacity: 0.8;
}

.medical-card__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.medical-card__title {
  font-weight: 500;
  font-size: 20px;
  color: var(--color-blue-main);
}

.medical-card__desc {
  font-size: 14px;
  line-height: 1.8;
  color: var(--color-body);
  text-align: center;
}

.btn--detail {
  background: var(--color-blue-pale-4);
  padding: 10px 28px;
  font-weight: 500;
  font-size: 14px;
  color: var(--color-blue-navy);
  margin-top: auto;
}

.icon-menu {
  display: flex;
  justify-content: space-between;
  width: 100%;
  max-width: 980px;
}

.icon-menu__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 13px;
  width: 150px;
}

.icon-menu__circle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 126px;
  height: 126px;
  border-radius: 999px;
  background: var(--color-blue-pale-2);
  box-shadow: 0 6px 16px rgba(79, 168, 217, 0.18);
}

.icon-menu__circle img {
  width: 64px;
  height: 64px;
}

.icon-menu__label {
  font-weight: 600;
  font-size: 14px;
  color: var(--color-blue-main);
  text-align: center;
  line-height: 1.7;
}

.icon-menu__label small {
  display: block;
  font-weight: 400;
  font-size: 14px;
  color: var(--color-gray-text);
}

/* ==========================================================================
   Clinic info section
   ========================================================================== */
.clinic-info-section {
  display: flex;
  align-items: center;
  gap: 72px;
  padding: var(--section-pad-v) var(--side-1140);
  background: var(--color-blue-pale);
}

.clinic-info {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.clinic-info__logo {
  display: flex;
  align-items: center;
  gap: 12px;
}

.clinic-info__logo-mark {
  width: 40px;
  height: 47px;
}

.clinic-info__logo-text {
  font-family: var(--font-serif);
  font-weight: 700;
  font-size: 26px;
  color: var(--color-blue-light);
}

.clinic-info__address {
  font-size: 14px;
  color: var(--color-body);
}

.clinic-info__tel {
  font-weight: 700;
  font-size: 34px;
  color: var(--color-blue-deep);
}

.info-rows {
  display: flex;
  flex-direction: column;
  width: 100%;
}

.info-row {
  display: flex;
  gap: 20px;
  padding: 14px 0;
}

.info-row + .info-row {
  border-top: 1.5px dashed var(--color-blue-dashed);
}

.info-row__label {
  font-weight: 500;
  width: 130px;
  flex-shrink: 0;
  color: var(--color-blue-dark);
  font-size: 14px;
}

.info-row__value {
  font-size: 14px;
  color: var(--color-body);
}

.hours-box {
  width: 100%;
  background: #fff;
  border-radius: 20px;
  padding: 26px 36px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.clinic-map {
  flex-shrink: 0;
  width: 434px;
  height: 460px;
  border-radius: 32px;
  overflow: hidden;
  box-shadow: 0 8px 24px rgba(79, 168, 217, 0.16);
}

.clinic-map img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.clinic-map iframe {
  width: 100%;
  height: 100%;
  display: block;
  border: 0;
}

/* ==========================================================================
   CTA band
   ========================================================================== */
.cta-section {
  position: relative;
  background: var(--color-blue-band);
}

.cta-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 24px;
  padding: var(--section-pad-v) var(--side-1140);
}

.cta-inner__label {
  font-size: 13px;
  letter-spacing: 3px;
  color: #ebf7fc;
}

.cta-inner__title {
  font-weight: 700;
  font-size: 44px;
  color: #fff;
}

.cta-inner__desc {
  text-align: center;
  font-size: 16px;
  line-height: 2;
  color: #f7fcff;
}

.cta-inner__note {
  text-align: center;
  font-size: 16px;
  line-height: 1.5;
  color: #ebf7fc;
}

.btn--cta {
  background: #fff;
  color: var(--color-blue-main);
  padding: 15px 18px;
  width: 350px;
  justify-content: center;
  font-weight: 700;
  font-size: 20px;
  margin-top: 12px;
}

.queue-card {
  position: absolute;
  right: var(--side-1140);
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  background: #fff;
  border-radius: 20px;
  padding: 18px 10px;
  box-shadow: 0 8px 20px rgba(13, 64, 102, 0.25);
}

.queue-card__label {
  font-family: var(--font-round);
  font-size: 16px;
  color: var(--color-blue-navy);
}

.queue-card img {
  width: 157px;
  height: 232px;
  border-radius: 12px;
  object-fit: cover;
}

/* ==========================================================================
   Footer
   ========================================================================== */
.site-footer {
  background: var(--color-footer-bg);
}

.footer-content {
  display: flex;
  gap: 100px;
  padding: 56px var(--side-footer) 40px;
}

.footer-clinic {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.footer-clinic__logo {
  font-family: var(--font-serif);
  font-weight: 700;
  font-size: 22px;
  color: #fff;
}

.footer-clinic__text {
  font-size: 14px;
  line-height: 1.9;
  color: var(--color-footer-text-soft);
}

.footer-clinic__text span {
  display: block;
}

.footer-links {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.footer-links__title {
  font-weight: 500;
  font-size: 16px;
  color: #fff;
}

.footer-links__list {
  display: flex;
  flex-direction: column;
}

.footer-links__list li {
  font-size: 14px;
  line-height: 2.2;
  color: var(--color-footer-text);
}

.footer-copyright {
  display: flex;
  justify-content: center;
  padding: 16px 0 24px;
  font-size: 14px;
  color: var(--color-footer-muted);
}

/* ==========================================================================
   Floating reserve button
   ========================================================================== */
.floating-reserve {
  position: fixed;
  right: 24px;
  bottom: 24px;
  width: 200px;
  height: 200px;
  z-index: 100;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}

.floating-reserve--hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.floating-reserve__base,
.floating-reserve__ring {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  transition: transform 0.5s ease;
}

.floating-reserve__base {
  border-radius: 50%;
}

.floating-reserve:hover .floating-reserve__base {
  transform: scale(1.06);
}

.floating-reserve:hover .floating-reserve__ring {
  transform: scale(1.06) rotate(18deg);
}

/* ==========================================================================
   Responsive — Narrow PC
   ========================================================================== */
@media (max-width: 1366px) {
  :root {
    --side-1140: max(40px, calc((100% - 1140px) / 2));
  }
}

@media (max-width: 1160px) {
  .clinic-info-section {
    flex-direction: column;
    gap: 32px;
  }

  .clinic-map {
    width: 100%;
    height: 450px;
  }
}

/* ==========================================================================
   Responsive — Tablet
   ========================================================================== */
@media (max-width: 1024px) {
  :root {
    --side-1140: max(32px, calc((100% - 900px) / 2));
    --side-header: max(24px, calc((100% - 900px) / 2));
    --side-footer: max(32px, calc((100% - 900px) / 2));
    --section-pad-v: 56px;
  }

  .site-header {
    width: 100%;
    padding: 10px 5%;
  }

  .hero-inner {
    padding-left: var(--side-1140);
    padding-right: var(--side-1140);
  }

  .hero-bg-block {
    height: 420px;
  }

  .hero-catch {
    font-size: 26px;
    padding: 10px 22px;
  }

  .greeting-row {
    flex-direction: column;
    gap: 32px;
  }

  .greeting-photo {
    width: 100%;
    height: auto;
    aspect-ratio: 520 / 350;
  }

  .myopia-card {
    flex-direction: column;
    gap: 32px;
    padding: 36px 32px;
  }

  .myopia-points {
    width: 100%;
  }

  .icon-menu {
    flex-wrap: wrap;
    justify-content: center;
    gap: 24px 20px;
    max-width: 100%;
  }

  .queue-card {
    position: static;
    transform: none;
    margin-top: 8px;
  }

  .footer-content {
    flex-direction: column;
    gap: 32px;
    padding-top: 40px;
    padding-bottom: 32px;
  }

  .floating-reserve {
    width: 150px;
    height: 150px;
    right: 16px;
    bottom: 16px;
  }
}

/* ==========================================================================
   Responsive — Smartphone
   ========================================================================== */
@media (max-width: 767px) {
  :root {
    --side-1140: 20px;
    --side-header: 20px;
    --side-footer: 20px;
    --section-pad-v: 40px;
  }

  .site-header {
    width: 100%;
    padding: 10px 5%;
  }

  .br-pc {
    display: none;
  }

  .section-label__title {
    font-size: 24px;
  }

  .hours-card__title {
    font-size: 19px;
  }

  .hours-row__label {
    font-size: 13px;
  }

  .patients-lead {
    font-size: 14px;
    line-height: 1.9;
    text-align: left;
  }

  .greeting-text__heading {
    font-size: 20px;
    line-height: 1.8;
  }

  .orthoptist-lead {
    font-size: 18px;
  }

  .myopia-text__heading {
    font-size: 20px;
  }

  .medical-card__title {
    font-size: 18px;
  }

  .clinic-info__tel {
    font-size: 28px;
  }

  .cta-inner__title {
    font-size: 32px;
  }

  .news-card {
    padding: 20px 15px;
  }

  .news-row {
    flex-wrap: wrap;
    gap: 5px;
    padding: 14px 0;
  }

  .news-row__body {
    width: 100%;
  }

  .news-row__title {
    width: 100%;
    font-size: 14px;
  }

  .news-row__excerpt {
    font-size: 13px;
  }

  .info-row {
    flex-direction: column;
    gap: 4px;
    padding: 12px 0;
  }

  .info-row__label {
    width: auto;
  }

  [id] {
    scroll-margin-top: 125px;
  }

  .hero-photo {
    aspect-ratio: 4 / 3;
    border-radius: 0 32px 0 32px;
  }

  .hero-catch {
    font-size: 16px;
    padding: 8px 16px;
  }

  .hero-lead {
    font-size: 14px;
    margin-top: 24px;
  }

  .hero-section {
    padding-bottom: 40px;
  }

  .hero-inner {
    padding-top: 24px;
  }

  .hours-card {
    padding: 28px 20px;
  }

  .greeting-leaf {
    left: 4px;
    top: calc(var(--section-pad-v) - 27px);
    width: 48px;
    height: 48px;
    z-index: 0;
  }

  .greeting-section .section-label {
    position: relative;
    z-index: 1;
  }

  .hours-row {
    justify-content: center;
  }

  .myopia-card {
    padding: 36px 5%;
  }

  .point-pill__text {
    font-size: 15px;
  }

  .medical-cards {
    flex-direction: column;
    gap: 24px;
  }

  .medical-card {
    flex: none;
    width: 100%;
  }

  .medical-card__photo {
    border-radius: 60px 60px 16px 16px;
  }

  .icon-menu__item {
    width: calc(33.333% - 14px);
    gap: 8px;
  }

  .icon-menu__circle {
    width: 100%;
    height: auto;
    aspect-ratio: 1 / 1;
  }

  .icon-menu__circle img {
    width: 50%;
    height: 50%;
  }

  .icon-menu__label {
    font-size: 12px;
  }

  .icon-menu__label small {
    font-size: 10px;
  }

  .footer-content {
    gap: 24px;
    padding-top: 32px;
    padding-bottom: 24px;
  }

  .footer-links {
    width: 100%;
  }

  .floating-reserve {
    width: 110px;
    height: 110px;
    right: 12px;
    bottom: 12px;
  }
}
