/* ============================================================
   HIGHLAW — sub.css  (서브 페이지 공통)
============================================================ */

/* 서브 페이지는 body overflow 정상 */
body.sub-page {
  overflow-x: hidden;
  overflow-y: auto;
  background:#f7f7f4;
  color:#111;
}

/* 헤더는 항상 solid */
body.sub-page .site-header { background: rgba(255,255,255,.96); border-bottom: 1px solid rgba(17,17,17,.12); }
body.sub-page .logo-en { color: #111; }

/* ── Sub Header Hero ─────────────────────────── */
.sub-hero {
  position: relative;
  height: 340px;
  display: flex;
  align-items: flex-end;
  padding-bottom: 60px;
  overflow: hidden;
  margin-top: 0;
  padding-top: 80px;
}
.sub-hero__bg {
  position:absolute; inset:0;
  background:#050505;
}
.sub-hero__photo {
  position:absolute; inset:0;
  background-size:cover;
  background-position:center;
  opacity:.42;
  filter:grayscale(100%);
}
.sub-hero__overlay {
  position:absolute; inset:0;
  background: linear-gradient(to right, rgba(5,5,5,.82) 0%, rgba(5,5,5,.36) 100%);
}
.sub-hero__content {
  position:relative;
  z-index:2;
  max-width:1320px;
  width:100%;
  margin:0 auto;
  padding:0 48px;
}
.sub-hero__label {
  font-family: var(--f-en);
  font-size: 1rem;
  font-weight:400;
  letter-spacing:.3em;
  color: #fff;
  text-transform:uppercase;
  margin-bottom:14px;
}
.sub-hero__title {
  font-family: var(--f-kr);
  font-size: clamp(2.8rem, 4vw, 5rem);
  font-weight:600;
  color: #fff;
  line-height:1.25;
}
.sub-hero__title em {
  font-style:normal;
  color: #fff;
}

/* ── Sub Breadcrumb ──────────────────────────── */
.sub-breadcrumb {
  background: #fff;
  border-bottom: 1px solid rgba(17,17,17,.08);
  padding: 14px 0;
}
.sub-breadcrumb__inner {
  max-width:1320px; margin:0 auto; padding:0 48px;
  display:flex; align-items:center; gap:10px;
}
.sub-breadcrumb a, .sub-breadcrumb span {
  font-size:1.1rem; font-weight:300;
  color: #777; letter-spacing:.03em;
}
.sub-breadcrumb span { color: #111; }
.sub-breadcrumb a:hover { color: #111; }
.sub-breadcrumb .sep { color: #aaa; }

/* ── Sub Main Layout ─────────────────────────── */
.sub-main {
  max-width:1320px;
  margin:0 auto;
  padding:80px 48px 120px;
}

/* ── Section utilities ───────────────────────── */
.sub-section { margin-bottom:90px; }
.sub-section__header { margin-bottom:50px; }
.sub-section__label {
  display:inline-block;
  font-family:var(--f-en);
  font-size:1rem; font-weight:400;
  letter-spacing:.3em; color:#111;
  text-transform:uppercase; margin-bottom:14px;
}
.sub-section__title {
  font-family:var(--f-kr);
  font-size:clamp(2.4rem, 3vw, 3.6rem);
  font-weight:600; color:#111;
  line-height:1.35;
}
.sub-section__title em { font-style:normal; color:#111; }
.sub-section__line {
  width:44px; height:2px;
  background:#111; margin-top:24px;
}
.sub-section__desc {
  font-size:1.5rem; font-weight:300;
  line-height:2; color:#666;
  margin-top:18px; max-width:640px;
}

/* ── Practice Grid ───────────────────────────── */
.practice-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:2px;
}
.practice-card {
  background:#fff;
  padding:48px 36px;
  position:relative; overflow:hidden;
  display:flex; flex-direction:column;
  transition:background var(--t), transform var(--t);
  border-bottom:2px solid transparent;
}
.practice-card::after {
  content:''; position:absolute;
  bottom:0; left:0; width:0; height:2px;
  background:#111;
  transition:width var(--ts);
}
.practice-card:hover { background:#f1f1ee; transform:translateY(-4px); }
.practice-card:hover::after { width:100%; }
.practice-card__num {
  font-family:var(--f-en); font-size:1rem;
  letter-spacing:.25em; color:#777;
  opacity:.6; margin-bottom:24px;
}
.practice-card__title {
  font-family:var(--f-kr); font-size:1.9rem;
  font-weight:600; color:#111;
  margin-bottom:14px; line-height:1.45;
}
.practice-card__body {
  font-size:1.3rem; font-weight:300;
  line-height:1.95; color:#666;
  flex:1; margin-bottom:24px;
}
.practice-card__more {
  font-family:var(--f-en); font-size:1.1rem;
  letter-spacing:.1em; color:#111;
  opacity:0; transition:var(--t);
}
.practice-card:hover .practice-card__more { opacity:1; }

/* ── People Grid ─────────────────────────────── */
.people-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:36px;
}
.lawyer-card { overflow:hidden; }
.lawyer-card__photo {
  position:relative; width:100%;
  padding-bottom:115%; overflow:hidden;
  background:var(--c-card);
}
.lawyer-card__photo img {
  position:absolute; top:0; left:0;
  width:100%; height:100%;
  object-fit:cover; object-position:top center;
  filter:grayscale(15%);
  transition:transform .8s var(--ease), filter .5s ease;
}
.lawyer-card:hover .lawyer-card__photo img {
  transform:scale(1.04); filter:grayscale(0%);
}
.lawyer-card__info { padding:24px 2px; }
.lawyer-card__pos {
  display:block;
  font-family:var(--f-en); font-size:.9rem;
  letter-spacing:.25em; color:var(--c-gold);
  text-transform:uppercase; margin-bottom:9px;
}
.lawyer-card__name {
  font-family:var(--f-kr); font-size:2.2rem;
  font-weight:600; color:var(--c-text);
  margin-bottom:14px; line-height:1.4;
}
.lawyer-card__name em { font-style:normal; color:var(--c-muted); font-size:1.6rem; font-weight:300; }
.lawyer-card__line { width:26px; height:1px; background:var(--c-gold); margin-bottom:16px; }
.lawyer-card__career { display:flex; flex-direction:column; gap:8px; }
.lawyer-card__career li {
  font-size:1.2rem; font-weight:300;
  color:var(--c-muted); padding-left:16px;
  position:relative; line-height:1.6;
}
.lawyer-card__career li::before {
  content:'—'; position:absolute; left:0;
  color:var(--c-gold); font-size:.8rem; top:3px;
}

/* ── News Grid ───────────────────────────────── */
.news-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:2px;
}
.news-card {
  background:var(--c-card); padding:40px 32px;
  display:flex; flex-direction:column;
  border-top:2px solid transparent; cursor:pointer;
  transition:background var(--t), transform var(--t), border-color var(--t);
}
.news-card:hover { background:var(--c-bg2); border-top-color:var(--c-gold); transform:translateY(-4px); }
.news-card__tag {
  display:inline-block; align-self:flex-start;
  background:var(--c-gold-dim); color:var(--c-gold);
  font-size:1rem; font-weight:400;
  letter-spacing:.1em; padding:4px 11px;
  margin-bottom:18px;
}
.news-card__title {
  font-family:var(--f-kr); font-size:1.7rem;
  font-weight:600; line-height:1.6;
  color:var(--c-text); margin-bottom:14px; flex:1;
}
.news-card__excerpt {
  font-size:1.2rem; font-weight:300;
  line-height:1.95; color:var(--c-muted);
  margin-bottom:24px;
}
.news-card__footer {
  display:flex; justify-content:space-between; align-items:center;
  margin-top:auto;
}
.news-card__date { font-family:var(--f-en); font-size:1rem; letter-spacing:.1em; color:var(--c-dim); }
.news-card__more { font-family:var(--f-en); font-size:1rem; letter-spacing:.1em; color:var(--c-gold); opacity:0; transition:opacity var(--t); }
.news-card:hover .news-card__more { opacity:1; }

/* ── Contact Form ────────────────────────────── */
.contact-wrap {
  display:grid; grid-template-columns:1fr 1.2fr;
  gap:80px; align-items:start;
}
.contact-info { display:flex; flex-direction:column; gap:0; }
.contact-desc {
  font-size:1.5rem; font-weight:300;
  line-height:2.1; color:var(--c-muted);
  margin-top:16px; margin-bottom:44px;
}
.contact-item {
  display:flex; gap:22px;
  align-items:flex-start;
  padding:16px 0;
  border-bottom:1px solid var(--c-soft);
}
.contact-item:first-of-type { border-top:1px solid var(--c-soft); }
.contact-item__label {
  font-family:var(--f-en); font-size:.95rem;
  letter-spacing:.22em; color:var(--c-gold);
  min-width:52px; flex-shrink:0; padding-top:1px;
}
.contact-item__val {
  font-size:1.4rem; font-weight:300;
  color:var(--c-text); transition:color var(--t);
  line-height:1.6;
}
a.contact-item__val:hover { color:var(--c-gold); }

.contact-form { display:flex; flex-direction:column; gap:13px; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:13px; }
.form-group input,
.form-group select,
.form-group textarea {
  width:100%;
  background:var(--c-card);
  border:1px solid var(--c-soft);
  color:var(--c-text);
  padding:14px 18px;
  font-family:var(--f-ui); font-size:1.3rem; font-weight:300;
  outline:none; -webkit-appearance:none;
  transition:border-color var(--t), background var(--t);
}
.form-group input::placeholder,
.form-group textarea::placeholder { color:var(--c-dim); }
.form-group select { cursor:pointer; color:var(--c-dim); }
.form-group select option { background:var(--c-bg); color:var(--c-text); }
.form-group select.filled { color:var(--c-text); }
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
  border-color:var(--c-gold);
  background:rgba(17,17,17,.03);
}
.form-group textarea { resize:vertical; min-height:110px; }
.form-check { display:flex; align-items:center; gap:11px; padding:3px 0; }
.form-check input[type=checkbox] { width:15px; height:15px; accent-color:var(--c-gold); cursor:pointer; flex-shrink:0; }
.form-check label { font-size:1.1rem; font-weight:300; color:var(--c-muted); cursor:pointer; }
.btn-submit {
  background:var(--c-gold); color:var(--c-bg);
  border:none; padding:16px;
  font-family:var(--f-ui); font-size:1.3rem; font-weight:500;
  letter-spacing:.1em; cursor:pointer; width:100%;
  transition:var(--t);
}
.btn-submit:hover { background:var(--c-gold-h); transform:translateY(-1px); }

/* ── Reservation Calendar ───────────────────── */
.booking-layout {
  display:grid;
  grid-template-columns:minmax(0, 1.35fr) minmax(320px, .65fr);
  gap:34px;
  align-items:start;
}
.booking-calendar,
.booking-slots,
.admin-editor,
.admin-login {
  background:var(--c-card);
  border:1px solid var(--c-border);
}
.booking-calendar { padding:30px; }
.booking-slots,
.admin-editor { padding:30px; }
.booking-toolbar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:24px;
}
.booking-toolbar h3 {
  font-family:var(--f-en);
  font-size:2.6rem;
  font-weight:600;
  letter-spacing:.08em;
  color:#111;
}
.booking-nav {
  width:42px;
  height:42px;
  border:1px solid var(--c-border);
  background:transparent;
  color:var(--c-gold);
  font-size:2.8rem;
  line-height:1;
  cursor:pointer;
  transition:var(--t);
}
.booking-nav:hover { background:var(--c-gold); color:var(--c-bg); }
.booking-grid {
  display:grid;
  grid-template-columns:repeat(7, minmax(0, 1fr));
  gap:1px;
  background:var(--c-soft);
  border:1px solid var(--c-soft);
}
.booking-weekday {
  min-height:36px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:#0c0906;
  color:var(--c-gold);
  font-size:1.1rem;
  letter-spacing:.12em;
}
.booking-day {
  min-height:96px;
  padding:12px;
  border:0;
  background:#111009;
  color:var(--c-text);
  text-align:left;
  cursor:pointer;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  transition:background var(--t), box-shadow var(--t);
}
.booking-day:hover,
.booking-day.is-selected {
  background:rgba(17,17,17,.08);
  box-shadow:inset 0 0 0 1px var(--c-gold);
}
.booking-day.is-empty {
  cursor:default;
  background:#090705;
  box-shadow:none;
}
.booking-day.is-today .booking-day__num { color:var(--c-gold-h); }
.booking-day__num {
  font-family:var(--f-en);
  font-size:1.8rem;
  color:var(--c-cream);
}
.booking-day__meta {
  font-size:1.05rem;
  color:var(--c-muted);
  line-height:1.5;
}
.booking-slots h3,
.admin-editor h2 {
  font-family:var(--f-kr);
  font-size:2.2rem;
  font-weight:600;
  color:var(--c-text);
  margin-bottom:22px;
}
.booking-legend {
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin-bottom:20px;
  padding-bottom:18px;
  border-bottom:1px solid var(--c-soft);
}
.booking-legend span {
  display:flex;
  align-items:center;
  gap:7px;
  font-size:1.1rem;
  color:var(--c-muted);
}
.booking-legend i {
  width:8px;
  height:8px;
  border-radius:50%;
  display:block;
}
.booking-legend .is-available { background:#9dbb82; }
.booking-legend .is-booked { background:var(--c-gold); }
.booking-legend .is-closed { background:#6d645c; }
.booking-slot-list {
  display:flex;
  flex-direction:column;
  gap:10px;
}
.booking-slot {
  min-height:56px;
  border:1px solid var(--c-soft);
  padding:14px 16px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  transition:var(--t);
}
.booking-slot strong {
  font-family:var(--f-en);
  font-size:1.7rem;
  letter-spacing:.06em;
  color:var(--c-cream);
}
.booking-slot span {
  font-size:1.2rem;
  color:var(--c-muted);
}
.booking-slot.is-available { border-color:rgba(157,187,130,.5); }
.booking-slot.is-available:hover {
  background:rgba(157,187,130,.12);
  transform:translateY(-1px);
}
.booking-slot.is-booked,
.booking-slot.is-closed,
.booking-slot.is-consulting {
  opacity:.68;
  cursor:default;
}
.booking-empty {
  padding:24px 0;
  color:var(--c-muted);
  font-size:1.3rem;
}

/* ── Admin ──────────────────────────────────── */
.admin-page {
  min-height:100vh;
  background:
    radial-gradient(ellipse at 10% 0%, rgba(17,17,17,.08), transparent 34%),
    var(--c-bg);
}
.admin-shell {
  width:min(1280px, calc(100% - 48px));
  margin:0 auto;
  padding:56px 0;
}
.admin-login {
  width:min(430px, 100%);
  margin:9vh auto 0;
  padding:36px;
}
.admin-brand { margin-bottom:34px; }
.admin-brand .logo-en { display:block; }
.admin-login h1,
.admin-topbar h1 {
  font-family:var(--f-kr);
  font-size:2.8rem;
  font-weight:600;
  color:var(--c-cream);
  margin-bottom:24px;
}
.admin-help {
  margin-top:18px;
  color:var(--c-muted);
  font-size:1.1rem;
  line-height:1.7;
}
.admin-message {
  min-height:22px;
  margin-top:14px;
  color:var(--c-muted);
  font-size:1.2rem;
}
.admin-message.is-error { color:#e8a39a; }
.admin-message.is-success { color:#9dbb82; }
.admin-topbar {
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:24px;
  margin-bottom:28px;
  padding-bottom:24px;
  border-bottom:1px solid var(--c-border);
}
.admin-topbar__actions {
  display:flex;
  gap:10px;
}
.admin-topbar__actions a,
.admin-topbar__actions button,
.admin-editor__buttons button[type=button] {
  border:1px solid var(--c-border);
  background:transparent;
  color:var(--c-gold);
  padding:11px 16px;
  font-family:var(--f-ui);
  font-size:1.2rem;
  cursor:pointer;
  transition:var(--t);
}
.admin-topbar__actions a:hover,
.admin-topbar__actions button:hover,
.admin-editor__buttons button[type=button]:hover {
  background:var(--c-gold);
  color:var(--c-bg);
}
.admin-grid {
  display:grid;
  grid-template-columns:minmax(0, 1.15fr) minmax(270px, .55fr) minmax(320px, .7fr);
  gap:20px;
  align-items:start;
}
.admin-slot {
  display:grid;
  grid-template-columns:1fr auto;
  border:1px solid var(--c-soft);
}
.admin-slot__main,
.admin-slot__delete {
  border:0;
  background:transparent;
  color:var(--c-text);
  cursor:pointer;
}
.admin-slot__main {
  padding:14px;
  text-align:left;
  display:grid;
  gap:4px;
}
.admin-slot__main strong {
  font-family:var(--f-en);
  font-size:1.6rem;
  color:var(--c-cream);
}
.admin-slot__main span {
  color:var(--c-gold);
  font-size:1.15rem;
}
.admin-slot__main small {
  color:var(--c-muted);
  font-size:1.1rem;
}
.admin-slot__delete {
  padding:0 13px;
  border-left:1px solid var(--c-soft);
  color:#e8a39a;
  font-size:1.1rem;
}
.admin-editor__buttons {
  display:grid;
  grid-template-columns:1fr auto;
  gap:10px;
}

/* ── Practice Detail ─────────────────────────── */
.practice-detail-hero {
  height:430px;
}
.practice-detail {
  padding-top:72px;
}
.practice-detail__intro {
  display:grid;
  grid-template-columns:minmax(220px, .45fr) minmax(0, 1fr);
  gap:56px;
  align-items:start;
  margin-bottom:64px;
}
.practice-detail__intro h2 {
  font-family:var(--f-kr);
  font-size:clamp(3.2rem, 5vw, 6.4rem);
  line-height:1.16;
  color:#111;
  font-weight:600;
}
.practice-detail__intro p {
  grid-column:2;
  max-width:760px;
  font-size:1.8rem;
  line-height:2;
  color:#333;
}
.practice-detail__grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:2px;
  margin-bottom:44px;
}
.practice-detail__grid > div {
  background:#fff;
  border:1px solid rgba(17,17,17,.1);
  padding:42px;
}
.practice-detail__grid h3 {
  font-family:var(--f-kr);
  font-size:2.2rem;
  color:#111;
  margin-bottom:28px;
}
.practice-detail__points,
.practice-detail__process {
  display:grid;
  gap:0;
}
.practice-detail__points li,
.practice-detail__process li {
  display:grid;
  grid-template-columns:72px 1fr;
  gap:18px;
  padding:18px 0;
  border-top:1px solid rgba(17,17,17,.1);
  color:#222;
  font-size:1.45rem;
  line-height:1.7;
}
.practice-detail__points span,
.practice-detail__process span {
  font-family:var(--f-en);
  font-size:1rem;
  letter-spacing:.14em;
  color:#888;
}
.practice-detail__process strong {
  font-size:1.45rem;
  font-weight:400;
}
.practice-detail__cta {
  display:flex;
  gap:12px;
  align-items:center;
}
.practice-detail__cta .btn-submit {
  width:auto;
  padding:14px 32px;
}
.practice-detail__cta > a:last-child {
  border:1px solid rgba(17,17,17,.2);
  padding:13px 28px;
  font-size:1.3rem;
  color:#111;
  transition:var(--t);
}
.practice-detail__cta > a:last-child:hover {
  background:#111;
  color:#fff;
}

/* ── About Place ─────────────────────────────── */
.about-place {
  display:grid;
  grid-template-columns:minmax(0, 1fr) minmax(320px, .8fr);
  gap:48px;
  align-items:end;
  padding:48px 0 8px;
  border-top:1px solid rgba(17,17,17,.16);
}
.about-place__text h2 {
  font-family:var(--f-kr);
  font-size:clamp(2.6rem, 3.5vw, 4.2rem);
  line-height:1.28;
  color:#111;
  margin-bottom:18px;
}
.about-place__text p {
  max-width:560px;
  font-size:1.45rem;
  line-height:2;
  color:#666;
}
.about-place__info {
  background:#fff;
  border:1px solid rgba(17,17,17,.12);
  padding:30px;
  display:grid;
  gap:10px;
}
.about-place__map {
  position:relative;
  display:block;
  aspect-ratio:16 / 8.5;
  margin:-30px -30px 22px;
  border-bottom:1px solid rgba(17,17,17,.12);
  overflow:hidden;
  background:#f2f2ee;
}
.about-place__map-fallback {
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%, -50%);
  z-index:0;
  color:#111;
  border-bottom:1px solid #111;
  padding-bottom:3px;
  font-size:1.2rem;
}
.naver-map-marker {
  position:relative;
  min-width:86px;
  padding:10px 13px;
  background:#111;
  color:#fff;
  text-align:center;
  font-family:var(--f-en);
  font-size:.95rem;
  font-weight:600;
  letter-spacing:.12em;
  box-shadow:0 12px 28px rgba(0,0,0,.22);
}
.naver-map-marker::after {
  content:'';
  position:absolute;
  left:50%;
  bottom:-8px;
  transform:translateX(-50%) rotate(45deg);
  width:16px;
  height:16px;
  background:#111;
}
.about-place__info strong {
  color:#111;
  font-size:1.65rem;
  font-weight:500;
  line-height:1.6;
}
.about-place__info span {
  color:#777;
  font-size:1.25rem;
}
.about-place__info > a:not(.about-place__map-fallback) {
  justify-self:start;
  margin-top:12px;
  border-bottom:1px solid #111;
  padding-bottom:4px;
  color:#111;
  font-size:1.25rem;
  letter-spacing:.08em;
  transition:opacity var(--t);
}
.about-place__info > a:not(.about-place__map-fallback):hover {
  opacity:.6;
}

/* ── Attorney Message ───────────────────────── */
.message-feature {
  display:grid;
  grid-template-columns:minmax(0, 1.25fr) minmax(320px, .75fr);
  gap:42px;
  align-items:center;
  margin-bottom:90px;
}
.message-feature__video {
  background:#050505;
  aspect-ratio:16 / 9;
  overflow:hidden;
}
.message-feature__video video {
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  filter:grayscale(100%);
}
.message-feature__text {
  border-top:1px solid rgba(17,17,17,.28);
  padding-top:30px;
}
.message-feature__text h2 {
  font-family:var(--f-kr);
  font-size:clamp(2.8rem, 3.6vw, 4.8rem);
  line-height:1.24;
  color:#111;
  margin-bottom:24px;
}
.message-feature__text p {
  font-size:1.55rem;
  line-height:2.05;
  color:#555;
  margin-bottom:30px;
}
.message-feature__text a {
  display:inline-block;
  border-bottom:1px solid #111;
  padding-bottom:4px;
  color:#111;
  font-size:1.3rem;
  letter-spacing:.12em;
}
.message-grid {
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:2px;
}
.message-card {
  background:#fff;
  border:1px solid rgba(17,17,17,.08);
}
.message-card__thumb {
  aspect-ratio:16 / 10;
  background:
    linear-gradient(rgba(5,5,5,.45), rgba(5,5,5,.45)),
    url('../images/interior/conference.jpg') center/cover;
  filter:grayscale(100%);
  display:flex;
  align-items:center;
  justify-content:center;
}
.message-card__thumb span {
  width:64px;
  height:64px;
  border:1px solid rgba(255,255,255,.7);
  border-radius:50%;
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  font-family:var(--f-en);
  font-size:.9rem;
  letter-spacing:.12em;
}
.message-card h3 {
  font-family:var(--f-kr);
  font-size:1.8rem;
  color:#111;
  padding:24px 24px 8px;
}
.message-card p {
  color:#666;
  font-size:1.25rem;
  padding:0 24px 26px;
}

/* ── Sub Footer ──────────────────────────────── */
.sub-footer {
  background:#060403;
  padding:56px 0 32px;
  border-top:1px solid var(--c-border);
}
.sub-footer__inner {
  max-width:1320px; margin:0 auto; padding:0 48px;
}
.sub-footer__top {
  display:flex; justify-content:space-between;
  align-items:center; padding-bottom:36px;
  margin-bottom:24px;
  border-bottom:1px solid var(--c-soft);
}
.sub-footer__nav { display:flex; gap:28px; }
.sub-footer__nav a { font-size:1.1rem; font-weight:300; color:var(--c-muted); transition:color var(--t); }
.sub-footer__nav a:hover { color:var(--c-gold); }
.sub-footer__copy { font-size:1rem; font-weight:300; color:var(--c-dim); letter-spacing:.03em; }
.sub-footer__addr { font-size:1rem; font-weight:300; color:var(--c-dim); margin-top:6px; }

/* ── Reveal animation ────────────────────────── */
.reveal {
  opacity:0; transform:translateY(32px);
  transition:opacity .9s var(--ease), transform .9s var(--ease);
}
.reveal.visible { opacity:1; transform:translateY(0); }

/* ── Responsive 768px ────────────────────────── */
@media (max-width:768px) {
  .sub-main { padding:48px 24px 80px; }
  .sub-hero__content { padding:0 24px; }
  .sub-breadcrumb__inner { padding:0 24px; }
  .sub-footer__inner { padding:0 24px; }

  .practice-grid,
  .people-grid,
  .news-grid { grid-template-columns:1fr; }
  .booking-layout,
  .admin-grid,
  .practice-detail__intro,
  .message-feature,
  .about-place,
  .practice-detail__grid { grid-template-columns:1fr; }
  .message-grid { grid-template-columns:1fr; }
  .practice-detail__intro p { grid-column:auto; }
  .practice-detail__grid > div { padding:28px; }
  .practice-detail__cta { flex-direction:column; align-items:stretch; }
  .practice-detail__cta .btn-submit { width:100%; }
  .practice-detail__cta > a:last-child { text-align:center; }
  .booking-calendar,
  .booking-slots,
  .admin-editor,
  .admin-login { padding:22px; }
  .booking-day { min-height:78px; padding:9px; }
  .booking-day__meta { font-size:.95rem; }
  .admin-shell { width:min(100% - 32px, 1280px); padding:32px 0; }
  .admin-topbar { flex-direction:column; }
  .contact-wrap { grid-template-columns:1fr; gap:48px; }
  .form-row { grid-template-columns:1fr; }

  .sub-footer__top { flex-direction:column; gap:24px; text-align:center; align-items:center; }
  .sub-footer__nav { flex-wrap:wrap; justify-content:center; }
}
