/*
Theme Name: 729 Paper — Neo Brutalist 新粗野主義
Theme URI: https://729paper.com
Author: 729 Paper
Author URI: https://729paper.com
Description: A bold neo-brutalist WordPress theme for 729 Paper — thick ink borders, hard offset shadows, a filterable activity menu with detail modal, workshop gallery, and a booking form. Traditional Chinese homepage, fully editable via the Customizer.
Version: 1.6.2
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: neo-brutalist
Tags: blog, portfolio, custom-colors, custom-logo, custom-menu, featured-images, threaded-comments, translation-ready
*/

/* ============================================================================
   729 Paper — Neo Brutalist theme stylesheet
   Thick ink borders · hard offset shadows · filterable activity menu
   ========================================================================== */

:root {
  --ink: #1C1917;          /* stone-900 */
  --bg: #FFFDF9;
  --stone-50: #FAFAF9; --stone-100: #F5F5F4; --stone-200: #E7E5E4;
  --stone-400: #A8A29E; --stone-500: #78716C; --stone-600: #57534E;
  --stone-700: #44403C; --stone-800: #292524;
  --amber-50: #FFFBEB; --amber-100: #FEF3C7; --amber-300: #FCD34D;
  --amber-400: #FBBF24; --amber-500: #F59E0B; --amber-600: #D97706; --amber-700: #B45309;
  --rose-50: #FFF1F2; --rose-100: #FFE4E6; --rose-300: #FDA4AF; --rose-400: #FB7185;
  --rose-500: #F43F5E; --rose-600: #E11D48; --rose-700: #BE123C;
  --emerald-50: #ECFDF5; --emerald-100: #D1FAE5; --emerald-300: #6EE7B7;
  --emerald-400: #34D399; --emerald-500: #10B981; --emerald-600: #059669; --emerald-700: #047857;
  --violet-100: #EDE9FE; --violet-300: #C4B5FD; --violet-500: #8B5CF6; --violet-700: #6D28D9;
  --sky-100: #E0F2FE; --sky-300: #7DD3FC; --sky-500: #0EA5E9; --sky-700: #0369A1;
  --orange-100: #FFEDD5; --orange-300: #FDBA74; --orange-500: #F97316; --orange-700: #C2410C;
  --font: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body { font-family: var(--font); background: var(--bg); color: var(--stone-800); line-height: 1.6; font-size: 16px; -webkit-font-smoothing: antialiased; overflow-x: hidden; }
img { max-width: 100%; display: block; height: auto; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; }
::selection { background: #FEF3C7; color: #B45309; }

ul, ol { list-style: none; }

.container { max-width: 80rem; margin: 0 auto; padding: 0 1rem; }
@media (min-width: 640px) { .container { padding: 0 1.5rem; } }
@media (min-width: 1024px) { .container { padding: 0 2rem; } }

.section { padding: 5rem 0; border-bottom: 4px solid var(--ink); }

/* ── Accessibility helpers ─────────────────────────────────────────────── */
.screen-reader-text {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

.skip-link {
  position: absolute; left: 1rem; top: -60px; z-index: 200;
  background: var(--rose-500); color: #fff; padding: .75rem 1.25rem;
  border: 2px solid var(--ink); border-radius: .5rem; font-weight: 900;
  transition: top .2s;
}
.skip-link:focus { top: 1rem; color: #fff; }

/* ── Header ────────────────────────────────────────────────────────────── */
.site-header { position: sticky; top: 0; z-index: 40; background: rgba(255,253,249,.95); backdrop-filter: blur(8px); border-bottom: 4px solid var(--ink); }
.header-inner { display: flex; align-items: center; justify-content: space-between; height: 5rem; gap: 1rem; }
.logo { display: flex; align-items: center; gap: .75rem; }
.logo-mark {
  width: 44px; height: 44px; background: var(--amber-500); border: 2px solid var(--ink);
  display: flex; align-items: center; justify-content: center; font-weight: 900; font-size: 18px; color: var(--ink);
  box-shadow: 3px 3px 0 0 var(--ink); transition: transform .15s, box-shadow .15s;
}
.logo:hover .logo-mark { transform: translate(2px,2px); box-shadow: 1px 1px 0 0 var(--ink); }
.logo-word { font-weight: 900; font-size: 24px; letter-spacing: -.03em; text-transform: uppercase; color: var(--ink); }
.logo-word .dot { color: var(--rose-500); }

.site-brand-logo img { max-height: 44px; width: auto; }

.nav { display: none; align-items: center; gap: 2rem; font-weight: 700; color: var(--stone-700); }
.nav a:hover { color: var(--rose-500); }
.header-cta { display: none; }
.menu-btn { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border: 2px solid var(--ink); border-radius: .5rem; background: transparent; color: var(--ink); font-size: 1.35rem; line-height: 1; }
.menu-btn:hover { background: var(--stone-100); }
@media (min-width: 768px) {
  .nav { display: flex; }
  .header-cta { display: block; }
  .menu-btn { display: none; }
}

/* ── Buttons ───────────────────────────────────────────────────────────── */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; border: 2px solid var(--ink); border-radius: .6rem; font-weight: 900; transition: all .15s; white-space: nowrap; }
.btn-primary { background: var(--rose-500); color: #fff; box-shadow: 4px 4px 0 0 var(--ink); }
.btn-primary:hover { background: var(--rose-600); box-shadow: 2px 2px 0 0 var(--ink); transform: translate(2px,2px); color: #fff; }
.btn-ghost { background: #fff; color: var(--ink); box-shadow: 4px 4px 0 0 var(--ink); }
.btn-ghost:hover { background: var(--stone-50); box-shadow: 2px 2px 0 0 var(--ink); transform: translate(2px,2px); color: var(--ink); }
.btn-sm { padding: .625rem 1.5rem; font-size: .95rem; }
.btn-lg { padding: 1rem 2rem; font-size: 1.125rem; }
.btn-block { width: 100%; }

/* ── Mobile nav ────────────────────────────────────────────────────────── */
.mobile-nav { display: none; background: var(--bg); border-top: 2px solid var(--ink); padding: 1rem 1rem 1.5rem; flex-direction: column; gap: 1rem; font-weight: 700; }
.mobile-nav.open { display: flex; }
.mobile-nav a { display: block; padding: .5rem 0; color: var(--stone-800); }
.mobile-nav a:hover { color: var(--rose-500); }
.mobile-nav .btn { width: 100%; }

/* ── Hero ──────────────────────────────────────────────────────────────── */
.hero { position: relative; padding: 4rem 0 5rem; background: rgba(255,251,235,.5); border-bottom: 4px solid var(--ink); overflow: hidden; }
.hero-blob { position: absolute; border-radius: 9999px; opacity: .5; pointer-events: none; display: none; }
.blob-1 { top: 3rem; left: 1.5rem; width: 64px; height: 64px; background: var(--rose-200); opacity: .6; filter: blur(20px); }
.blob-2 { bottom: 4rem; right: 3rem; width: 112px; height: 112px; background: var(--amber-300); border-radius: .5rem; transform: rotate(12deg); opacity: .4; }
.blob-3 { top: 33%; right: 25%; width: 80px; height: 80px; background: var(--emerald-200); border-radius: 9999px; transform: rotate(-45deg); opacity: .5; }
@media (min-width: 768px) { .hero-blob { display: block; } }

.hero-grid { display: grid; grid-template-columns: 1fr; gap: 3rem; align-items: center; position: relative; z-index: 10; }
@media (min-width: 1024px) { .hero-grid { grid-template-columns: 7fr 5fr; } }

.hero-copy { display: flex; flex-direction: column; gap: 2rem; text-align: center; }
@media (min-width: 1024px) { .hero-copy { text-align: left; } }

.hero-tag {
  display: inline-flex; align-items: center; gap: .5rem; align-self: center;
  padding: .4rem 1rem; background: var(--amber-100); border: 2px solid var(--ink); border-radius: 9999px;
  color: var(--amber-700); font-weight: 700; font-size: .8rem; text-transform: uppercase; letter-spacing: .05em;
  box-shadow: 2px 2px 0 0 var(--ink);
}
@media (min-width: 1024px) { .hero-tag { align-self: flex-start; } }
.hero-tag .bounce { display: inline-block; animation: bounce 1s infinite; color: var(--amber-600); }
@keyframes bounce { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-4px)} }

.hero-title { font-size: clamp(2.25rem, 5.5vw, 3.75rem); font-weight: 900; letter-spacing: -.03em; line-height: 1.05; color: var(--ink); }
.wavy { text-decoration: underline; text-decoration-color: var(--rose-500); text-decoration-style: wavy; text-decoration-thickness: 3px; text-underline-offset: 8px; }

.hero-lead { font-size: clamp(1.05rem, 2vw, 1.25rem); color: var(--stone-600); font-weight: 500; max-width: 42rem; margin: 0 auto; }
@media (min-width: 1024px) { .hero-lead { margin: 0; } }

.hero-cta { display: flex; flex-direction: column; gap: 1rem; justify-content: center; padding-top: .5rem; }
@media (min-width: 640px) { .hero-cta { flex-direction: row; } }
@media (min-width: 1024px) { .hero-cta { justify-content: flex-start; } }

.hero-badges { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; padding-top: 1.5rem; border-top: 1px solid var(--stone-200); max-width: 32rem; margin: 0 auto; text-align: left; }
@media (min-width: 1024px) { .hero-badges { margin: 0; } }
.hero-badges b { display: block; font-size: 1.5rem; font-weight: 900; color: var(--ink); }
.hero-badges span { font-size: .7rem; color: var(--stone-500); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }

/* ── Hero table visual ─────────────────────────────────────────────────── */
.hero-visual { position: relative; }
.hero-visual-wrap { position: relative; max-width: 28rem; margin: 0 auto; }
.table-card { position: relative; z-index: 10; background: var(--amber-100); border: 4px solid var(--ink); border-radius: 1rem; padding: 1.5rem; box-shadow: 8px 8px 0 0 var(--ink); transform: rotate(-1deg); }
.table-card-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; border-bottom: 2px solid var(--ink); padding-bottom: 1rem; }
.dots { display: flex; gap: .5rem; }
.dots i { width: 12px; height: 12px; border-radius: 9999px; }
.dots i:nth-child(1){background:var(--rose-500)} .dots i:nth-child(2){background:var(--amber-400)} .dots i:nth-child(3){background:var(--emerald-400)}
.table-label { font-size: .65rem; font-weight: 900; text-transform: uppercase; letter-spacing: .1em; color: var(--stone-500); background: #fff; padding: .25rem .5rem; border: 1px solid var(--ink); border-radius: .25rem; }
.step-row { display: flex; align-items: center; gap: 1rem; background: #fff; border: 2px solid var(--ink); border-radius: .75rem; padding: 1rem; box-shadow: 4px 4px 0 0 var(--ink); margin-bottom: 1rem; }
.step-row.offset { transform: translateX(8px); }
.step-row:last-child { margin-bottom: 0; }
.step-icon { width: 48px; height: 48px; border-radius: .5rem; border: 2px solid; display: flex; align-items: center; justify-content: center; font-size: 1.4rem; flex-shrink: 0; }
.step-row h4 { font-weight: 700; font-size: .875rem; color: var(--ink); }
.step-row p { font-size: .75rem; color: var(--stone-500); }
.table-pointer {
  position: absolute; bottom: -1.5rem; left: -1.5rem; z-index: 20;
  background: #fff; border: 2px solid var(--ink); padding: .5rem 1rem; border-radius: .5rem;
  box-shadow: 4px 4px 0 0 var(--ink); display: flex; align-items: center; gap: .5rem; transform: rotate(-6deg);
}
.table-pointer span { font-size: .75rem; font-weight: 900; text-transform: uppercase; }
.hero-visual-bg { position: absolute; inset: 0; background: var(--rose-400); border-radius: 1rem; border: 4px solid var(--ink); transform: translate(1rem,1rem) rotate(-3deg); z-index: 0; }

/* ── Section headers ───────────────────────────────────────────────────── */
.sec-head { text-align: center; max-width: 48rem; margin: 0 auto 4rem; display: flex; flex-direction: column; gap: 1rem; }
.sec-head.split { text-align: left; max-width: none; margin: 0 0 3rem; flex-direction: column; justify-content: flex-end; }
@media (min-width: 768px) { .sec-head.split { flex-direction: row; align-items: flex-end; justify-content: space-between; gap: 1.5rem; } }
.pill { display: inline-block; font-weight: 900; font-size: .8rem; text-transform: uppercase; letter-spacing: .08em; padding: .3rem .8rem; border: 2px solid; border-radius: 9999px; align-self: center; }
@media (min-width: 768px) { .sec-head.split .pill { align-self: flex-start; } }
.sec-title { font-size: clamp(1.75rem, 4vw, 2.5rem); font-weight: 900; color: var(--ink); }
.sec-sub { font-size: 1.05rem; color: var(--stone-600); font-weight: 500; }

/* ── What we do cards ──────────────────────────────────────────────────── */
.cards-3 { display: grid; grid-template-columns: 1fr; gap: 2rem; }
@media (min-width: 768px) { .cards-3 { grid-template-columns: repeat(3, 1fr); } }
.card {
  border: 4px solid var(--ink); border-radius: 1rem; padding: 2rem;
  box-shadow: 6px 6px 0 0 var(--ink); display: flex; flex-direction: column; justify-content: space-between; gap: 1rem;
  transition: box-shadow .15s, transform .15s;
}
.card:hover { box-shadow: 10px 10px 0 0 var(--ink); transform: translate(-4px,-4px); }
.card-icon { width: 56px; height: 56px; border-radius: .75rem; border: 2px solid var(--ink); display: flex; align-items: center; justify-content: center; font-size: 1.6rem; box-shadow: 3px 3px 0 0 var(--ink); }
.card h3 { font-size: 1.25rem; font-weight: 900; color: var(--ink); }
.card p { color: var(--stone-600); font-size: .875rem; }
.card-foot { display: flex; align-items: center; justify-content: space-between; padding-top: 1.5rem; margin-top: 1.5rem; border-top: 1px solid var(--stone-200); }
.card-foot span { font-size: .7rem; font-weight: 900; text-transform: uppercase; color: var(--stone-500); }

/* ── Filters ───────────────────────────────────────────────────────────── */
.filters { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 2rem; }
.filter {
  padding: .5rem 1rem; border-radius: .5rem; font-weight: 700; font-size: .875rem;
  border: 2px solid var(--ink); background: #fff; color: var(--stone-700); transition: all .15s;
}
.filter:hover { background: var(--stone-50); }
.filter.active { background: var(--ink); color: #fff; box-shadow: 2px 2px 0 0 var(--amber-400); }

/* ── Activities ────────────────────────────────────────────────────────── */
.activity-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; }
@media (min-width: 768px) { .activity-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .activity-grid { grid-template-columns: repeat(3, 1fr); } }
.activity {
  background: #fff; border: 4px solid var(--ink); border-radius: 1rem; overflow: hidden;
  box-shadow: 6px 6px 0 0 var(--ink); cursor: pointer;
  transition: box-shadow .15s, transform .15s;
}
.activity:hover { box-shadow: 10px 10px 0 0 var(--ink); transform: translate(-4px,-4px); }
.activity-media { height: 192px; background: var(--stone-100); border-bottom: 4px solid var(--ink); position: relative; overflow: hidden; }
.activity-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.activity:hover .activity-media img { transform: scale(1.05); }
.activity-badge { position: absolute; top: 1rem; left: 1rem; padding: .3rem .75rem; border-radius: 9999px; font-size: .7rem; font-weight: 900; text-transform: uppercase; border: 2px solid var(--ink); color: #fff; }
.activity-body { padding: 1.5rem; display: flex; flex-direction: column; gap: 1rem; }
.activity-head { display: flex; align-items: center; gap: .75rem; }
.activity-icon { padding: .5rem; border-radius: .5rem; border: 2px solid var(--ink); display: flex; align-items: center; justify-content: center; font-size: 1.2rem; }
.activity-body h3 { font-size: 1.25rem; font-weight: 900; color: var(--ink); }
.activity:hover .activity-body h3 { color: var(--rose-500); }
.activity-body p { color: var(--stone-600); font-size: .875rem; }
.activity-meta { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding-top: 1rem; border-top: 1px solid var(--stone-100); font-size: .75rem; font-weight: 700; color: var(--stone-500); }
.activity-meta span { display: flex; align-items: center; gap: .25rem; }
.activity.is-hidden { display: none; }

/* ── Modal ─────────────────────────────────────────────────────────────── */
.modal { position: fixed; inset: 0; z-index: 50; display: none; align-items: center; justify-content: center; padding: 1rem; background: rgba(28,25,23,.8); backdrop-filter: blur(4px); }
.modal.open { display: flex; }
.modal-card { background: #fff; border: 4px solid var(--ink); border-radius: 1rem; max-width: 32rem; width: 100%; overflow: hidden; box-shadow: 8px 8px 0 0 var(--ink); position: relative; }
.modal-close { position: absolute; top: 1rem; right: 1rem; padding: .4rem; background: #fff; border: 2px solid var(--ink); border-radius: 9999px; color: var(--ink); z-index: 10; display: flex; align-items: center; justify-content: center; }
.modal-close:hover { background: var(--stone-50); }
.modal-card > img { width: 100%; height: 224px; object-fit: cover; border-bottom: 4px solid var(--ink); }
.modal-body { padding: 1.5rem; display: flex; flex-direction: column; gap: 1rem; }
.modal-body h3 { font-size: 1.5rem; font-weight: 900; color: var(--ink); }
.modal-body > p { color: var(--stone-600); }
.modal-provide { background: var(--amber-50); border: 2px solid var(--ink); padding: 1rem; border-radius: .75rem; }
.modal-provide h4 { font-weight: 700; font-size: .875rem; margin-bottom: .5rem; }
.modal-provide ul { list-style: disc; padding-left: 1rem; font-size: .75rem; color: var(--stone-600); display: flex; flex-direction: column; gap: .25rem; }
.modal-actions { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding-top: 1rem; }
.modal-actions .btn-primary { flex: 1; text-align: center; font-size: .875rem; }
.modal-actions .btn-close { padding: .75rem 1rem; background: var(--stone-100); color: var(--stone-700); font-weight: 700; border-radius: .5rem; border: 2px solid var(--ink); font-size: .875rem; }
.modal-actions .btn-close:hover { background: var(--stone-200); }

/* ── Gallery ───────────────────────────────────────────────────────────── */
.gallery { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 640px) { .gallery { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .gallery { grid-template-columns: repeat(4, 1fr); } }
.gallery-item { background: var(--stone-50); border: 3px solid var(--ink); border-radius: .75rem; overflow: hidden; box-shadow: 4px 4px 0 0 var(--ink); }
.gallery-item .g-media { height: 240px; overflow: hidden; position: relative; border-bottom: 3px solid var(--ink); }
.gallery-item .g-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.gallery-item:hover .g-media img { transform: scale(1.05); }
.g-tag { position: absolute; bottom: .75rem; left: .75rem; background: var(--ink); color: #fff; font-size: .75rem; font-weight: 700; padding: .25rem .5rem; border-radius: .25rem; border: 1px solid var(--stone-700); }
.gallery-item .g-body { padding: 1rem; display: flex; flex-direction: column; gap: .25rem; }
.gallery-item h4 { font-weight: 900; font-size: .875rem; color: var(--ink); }
.g-loc { display: flex; align-items: center; gap: .25rem; font-size: .75rem; color: var(--stone-500); font-weight: 500; }
.g-loc .pin { color: var(--rose-500); }

/* ── Why us ────────────────────────────────────────────────────────────── */
.why-grid { display: grid; grid-template-columns: 1fr; gap: 3rem; align-items: center; }
@media (min-width: 1024px) { .why-grid { grid-template-columns: 1fr 1fr; } }
.why-visual { position: relative; }
.why-card { position: relative; z-index: 10; background: var(--emerald-100); border: 4px solid var(--ink); border-radius: 1rem; padding: 2rem; box-shadow: 8px 8px 0 0 var(--ink); }
.why-card h3 { font-size: 1.5rem; font-weight: 900; color: var(--ink); margin-bottom: 1.5rem; }
.why-point { display: flex; gap: 1rem; margin-bottom: 1.5rem; }
.why-point:last-child { margin-bottom: 0; }
.why-point .wp-icon { width: 40px; height: 40px; border-radius: .5rem; background: #fff; border: 2px solid var(--ink); display: flex; align-items: center; justify-content: center; flex-shrink: 0; box-shadow: 2px 2px 0 0 var(--ink); }
.why-point h4 { font-weight: 700; font-size: 1rem; color: var(--ink); }
.why-point p { font-size: .875rem; color: var(--stone-600); }
.why-visual-bg { position: absolute; inset: 0; background: var(--emerald-400); border-radius: 1rem; border: 4px solid var(--ink); transform: translate(1rem,1rem); z-index: 0; }

/* why-us: keep the card inside its column (prevents it spilling onto the copy column) */
#why-us .elementor-container { align-items: center; }
#why-us .elementor-column { min-width: 0; }
.why-card { max-width: 100%; margin-right: 2rem; }
.why-point > div:last-child { min-width: 0; }
@media (max-width: 767px) {
  .why-card { margin-right: 0; margin-bottom: 2.5rem; }
}

.why-copy { display: flex; flex-direction: column; gap: 1.5rem; }
.why-copy .pill { align-self: flex-start; }
.why-copy h2 { font-size: clamp(1.75rem, 4vw, 2.5rem); font-weight: 900; line-height: 1.2; color: var(--ink); }
.why-copy p { color: var(--stone-600); font-weight: 500; }
.why-banner { display: inline-flex; align-items: center; gap: .75rem; background: #fff; border: 2px solid var(--ink); border-radius: .75rem; padding: 1rem; box-shadow: 4px 4px 0 0 var(--ink); align-self: flex-start; }
.ping { width: 12px; height: 12px; border-radius: 9999px; background: var(--rose-500); animation: ping 1s cubic-bezier(0,0,.2,1) infinite; }
@keyframes ping { 75%,100% { transform: scale(2); opacity: 0; } }
.why-banner span { font-weight: 700; font-size: .875rem; color: var(--ink); }

/* ── Booking ───────────────────────────────────────────────────────────── */
.book { position: relative; background: var(--amber-400); border-bottom: 4px solid var(--ink); padding: 5rem 0; overflow: hidden; }
.book-shape { position: absolute; border: 4px solid var(--ink); pointer-events: none; }
.book-shape--1 { top: -2.5rem; left: -2.5rem; width: 128px; height: 128px; background: var(--rose-400); border-radius: 9999px; transform: rotate(-12deg); }
.book-shape--2 { bottom: -2.5rem; right: -2.5rem; width: 144px; height: 144px; background: var(--emerald-400); border-radius: .5rem; transform: rotate(45deg); }
.book-inner { position: relative; z-index: 10; max-width: 56rem; margin: 0 auto; text-align: center; display: flex; flex-direction: column; gap: 2rem; }
.book-inner h2 { font-size: clamp(2.25rem, 5vw, 3rem); font-weight: 900; letter-spacing: -.03em; line-height: 1.05; color: var(--ink); }
.book-inner .book-sub { font-size: clamp(1.05rem, 2vw, 1.25rem); font-weight: 700; color: var(--ink); max-width: 42rem; margin: 0 auto; }
.book-form { background: #fff; border: 4px solid var(--ink); border-radius: 1rem; padding: 2rem; box-shadow: 8px 8px 0 0 var(--ink); text-align: left; max-width: 42rem; margin: 0 auto; }
.book-form .row { display: grid; grid-template-columns: 1fr; gap: 1rem; margin-bottom: 1rem; }
@media (min-width: 640px) { .book-form .row { grid-template-columns: 1fr 1fr; } }
.field label { display: block; font-size: .7rem; font-weight: 900; text-transform: uppercase; letter-spacing: .04em; color: var(--stone-700); margin-bottom: .25rem; }
.field input, .field select, .field textarea {
  width: 100%; padding: .625rem 1rem; background: var(--stone-50); border: 2px solid var(--ink); border-radius: .5rem;
  font-family: inherit; font-size: .875rem; font-weight: 500; color: var(--stone-800);
}
.field input:focus, .field select:focus, .field textarea:focus { outline: none; box-shadow: 0 0 0 2px var(--rose-500); }
.field textarea { resize: vertical; }
.submit-btn {
  width: 100%; padding: 1rem; background: var(--rose-500); color: #fff; font-weight: 900; font-size: 1.125rem;
  border: 3px solid var(--ink); border-radius: .75rem; box-shadow: 4px 4px 0 0 var(--ink); transition: all .15s;
}
.submit-btn:hover { background: var(--rose-600); box-shadow: 1px 1px 0 0 var(--ink); transform: translate(1px,1px); }
.book-form .notice { display: none; margin-top: 1rem; padding: .75rem 1rem; border: 2px solid var(--ink); border-radius: .5rem; background: var(--emerald-100); color: var(--emerald-700); font-weight: 700; }
.book-form .notice.show { display: block; }

/* Contact Form 7 card styling (homepage booking + contact page) */
.wpcf7-form {
  background: #fff; border: 4px solid var(--ink); border-radius: 1rem; padding: 2rem;
  box-shadow: 8px 8px 0 0 var(--ink); text-align: left; max-width: 42rem; margin: 0 auto;
}
.wpcf7-form .row { display: grid; grid-template-columns: 1fr; gap: 1rem; margin-bottom: 1rem; }
@media (min-width: 640px) { .wpcf7-form .row { grid-template-columns: 1fr 1fr; } }
.wpcf7-form .wpcf7-form-control-wrap { display: block; }
.wpcf7-form .wpcf7-not-valid-tip { display: block; font-size: .7rem; font-weight: 700; color: var(--rose-600); margin-top: .25rem; }
.wpcf7-form .wpcf7-response-output { margin: 1rem 0 0; padding: .75rem 1rem; border: 2px solid var(--ink); border-radius: .5rem; font-weight: 700; }
.wpcf7-form input[type="submit"],
.wpcf7-form button.wpcf7-submit {
  width: 100%; padding: 1rem; background: var(--rose-500); color: #fff; font-weight: 900; font-size: 1.125rem;
  border: 3px solid var(--ink); border-radius: .75rem; box-shadow: 4px 4px 0 0 var(--ink); transition: all .15s; cursor: pointer;
}
.wpcf7-form input[type="submit"]:hover,
.wpcf7-form button.wpcf7-submit:hover {
  background: var(--rose-600); box-shadow: 1px 1px 0 0 var(--ink); transform: translate(1px, 1px);
}

/* ── Footer ────────────────────────────────────────────────────────────── */
.site-footer { background: var(--ink); color: #f5f5f4; padding: 4rem 0; border-top: 4px solid var(--ink); }
.footer-grid { display: grid; grid-template-columns: 1fr; gap: 3rem; }
@media (min-width: 768px) { .footer-grid { grid-template-columns: repeat(4, 1fr); } }
.footer-brand { grid-column: span 1; display: flex; flex-direction: column; gap: 1rem; }
@media (min-width: 768px) { .footer-brand { grid-column: span 2; } }
.footer-brand .logo-mark { border-color: #fff; }
.footer-brand .logo-word { color: #fff; }
.footer-brand p { color: var(--stone-400); font-size: .875rem; max-width: 24rem; }
.social { display: flex; gap: .75rem; padding-top: .5rem; }
.social a { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 9999px; background: var(--stone-800); color: var(--stone-300); transition: all .15s; }
.social a:hover { background: var(--stone-700); color: #fff; }
.footer-col h4 { font-weight: 900; font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; color: var(--amber-400); margin-bottom: 1rem; }
.footer-col ul { list-style: none; display: flex; flex-direction: column; gap: .5rem; font-size: .875rem; font-weight: 700; color: var(--stone-300); }
.footer-col a:hover { color: #fff; }
.footer-col p { color: var(--stone-400); font-size: .875rem; }
.footer-copy { font-size: .75rem; font-weight: 700; color: var(--stone-500); }

/* ── Inner pages (blog / pages / search / archive) ─────────────────────── */
.content-area { padding: 5rem 0; }
.page-header { margin-bottom: 2.5rem; }
.page-title { font-size: clamp(1.75rem, 4vw, 2.5rem); font-weight: 900; letter-spacing: -.03em; color: var(--ink); line-height: 1.1; }
.archive-description, .page-header p { color: var(--stone-600); font-weight: 500; margin-top: .75rem; max-width: 42rem; }

.post-list { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 768px) { .post-list { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .post-list { grid-template-columns: repeat(4, 1fr); } }

.post-card {
  background: #fff; border: 4px solid var(--ink); border-radius: 1rem; overflow: hidden;
  box-shadow: 6px 6px 0 0 var(--ink); transition: box-shadow .15s, transform .15s;
}
.post-card.is-hidden { display: none; }
.course-filters { margin-bottom: 2rem; }
.filter-empty { color: var(--stone-600); font-weight: 500; padding: 2rem; border: 4px dashed var(--stone-200); border-radius: 1rem; text-align: center; margin-top: 1rem; }

/* Filter loading states */
.post-list { position: relative; }
.post-list.is-loading { opacity: .45; pointer-events: none; }
.post-list.is-loading::after {
  content: '';
  position: absolute;
  top: 5rem;
  left: 50%;
  width: 44px;
  height: 44px;
  margin-left: -22px;
  border: 4px solid var(--stone-200);
  border-top-color: var(--ink);
  border-radius: 50%;
  animation: neo729-spin .8s linear infinite;
}
.filter.is-loading { pointer-events: none; opacity: .7; }
.filter.is-loading::after {
  content: '';
  display: inline-block;
  width: 12px;
  height: 12px;
  margin-left: .5rem;
  border: 2px solid currentColor;
  border-top-color: transparent;
  border-radius: 50%;
  vertical-align: -1px;
  animation: neo729-spin .7s linear infinite;
}
@keyframes neo729-spin { to { transform: rotate(360deg); } }

/* Archive search + load more */
.archive-search { margin-bottom: 1.5rem; }
.archive-search .search-form { display: flex; gap: .5rem; max-width: 32rem; }
.archive-search .search-field {
  flex: 1; padding: .625rem 1rem; background: #fff; border: 2px solid var(--ink); border-radius: .5rem;
  font-family: inherit; font-size: .9rem; color: var(--stone-800);
}
.archive-search .search-field:focus { outline: none; box-shadow: 0 0 0 2px var(--rose-500); }
.archive-search .search-submit {
  padding: .625rem 1.25rem; background: var(--ink); color: #fff; font-weight: 900;
  border: 2px solid var(--ink); border-radius: .5rem; cursor: pointer; transition: all .15s;
}
.archive-search .search-submit:hover { background: var(--stone-700); }
.load-more { margin: 2rem auto 0; display: flex; }
.recent-posts-section { background: var(--stone-50); border-top: 4px solid var(--ink); }
.post-card:hover { box-shadow: 10px 10px 0 0 var(--ink); transform: translate(-4px,-4px); }
.post-card-body { padding: 1.5rem; display: flex; flex-direction: column; gap: .75rem; }
.post-meta { font-size: .75rem; font-weight: 700; color: var(--stone-500); }
.entry-title { font-size: 1.25rem; font-weight: 900; color: var(--ink); }
.entry-title a { color: var(--ink); }
.entry-title a:hover { color: var(--rose-500); }
.entry-summary { color: var(--stone-600); font-size: .875rem; }
.link-arrow { font-weight: 900; color: var(--ink); align-self: flex-start; border-bottom: 3px solid var(--rose-500); padding-bottom: 2px; }
.post-thumb img { width: 100%; height: 220px; object-fit: cover; border-bottom: 4px solid var(--ink); }
.post-thumb:empty { height: 220px; background: var(--amber-100); border-bottom: 4px solid var(--ink); }

/* Homepage activity / case cards: uniform fixed-height rows */
#activities .post-card,
#moments .post-card { display: flex; flex-direction: column; height: 100%; }
#activities .post-card-body,
#moments .post-card-body { flex: 1; }
#activities .entry-title,
#moments .entry-title {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.25;
  min-height: 2.5em;
}
#activities .link-arrow,
#moments .link-arrow { margin-top: auto; }
#activities .post-thumb img { height: 160px; }
#activities .post-thumb:empty { height: 160px; }

/* Entry content (single / page) */
.entry-content { background: #fff; border: 4px solid var(--ink); border-radius: 1rem; padding: 2rem; box-shadow: 6px 6px 0 0 var(--ink); }
.entry-content > * + * { margin-top: 1.2em; }
.entry-content h2, .entry-content h3, .entry-content h4 { margin-top: 1.4em; color: var(--ink); font-weight: 900; }
.entry-content ul, .entry-content ol { list-style: disc; padding-left: 1.5em; color: var(--stone-600); }
.entry-content ol { list-style: decimal; }
.entry-content img { border: 3px solid var(--ink); border-radius: .75rem; box-shadow: 4px 4px 0 0 var(--ink); }
/* Migrated content carries hard-coded inline width/height (e.g. 500x667px).
   Override on small screens so photos resize proportionally instead of distorting. */
.entry-content img { width: auto; height: auto; max-width: 100%; }
@media (max-width: 640px) {
  .entry-content img { width: 100% !important; height: auto !important; }
}
.entry-content blockquote { border-left: 6px solid var(--rose-500); background: var(--stone-50); padding: 1rem 1.25rem; border-radius: .5rem; font-weight: 500; }
.entry-content a { font-weight: 700; color: var(--rose-600); text-decoration: underline; }

/* ── Search form ───────────────────────────────────────────────────────── */
.search-form { display: flex; gap: .75rem; max-width: 30rem; }
.search-field { flex: 1; padding: .625rem 1rem; background: #fff; border: 2px solid var(--ink); border-radius: .5rem; font-family: inherit; font-size: .875rem; font-weight: 500; color: var(--stone-800); box-shadow: 4px 4px 0 0 var(--ink); }
.search-field:focus { outline: none; box-shadow: 0 0 0 2px var(--rose-500); }
.search-submit { padding: .625rem 1.5rem; background: var(--rose-500); color: #fff; font-weight: 900; border: 2px solid var(--ink); border-radius: .5rem; box-shadow: 4px 4px 0 0 var(--ink); cursor: pointer; }
.search-submit:hover { background: var(--rose-600); }

/* ── Pagination ────────────────────────────────────────────────────────── */
.pagination, .navigation.pagination { margin-top: 3rem; }
.pagination .nav-links { display: flex; gap: .5rem; flex-wrap: wrap; }
.pagination .page-numbers { display: inline-grid; place-items: center; min-width: 44px; height: 44px; padding: 0 14px; border: 2px solid var(--ink); border-radius: .5rem; background: #fff; box-shadow: 3px 3px 0 0 var(--ink); font-weight: 900; color: var(--ink); }
.pagination .page-numbers.current { background: var(--ink); color: #fff; }

/* ── Comments ──────────────────────────────────────────────────────────── */
.comments-area { margin-top: 3rem; background: #fff; border: 4px solid var(--ink); border-radius: 1rem; padding: 2rem; box-shadow: 6px 6px 0 0 var(--ink); }
.comments-title { font-size: 1.5rem; font-weight: 900; color: var(--ink); margin-bottom: 1.5rem; }
.comment-list { display: grid; gap: 1rem; margin-bottom: 1.5rem; }
.comment-list li { list-style: none; }
.comment-body { border: 2px solid var(--ink); border-radius: .75rem; padding: 1.25rem; background: var(--stone-50); }
.comment-meta { font-weight: 700; color: var(--stone-500); margin-bottom: .5rem; }
.comment-form label { display: block; font-weight: 700; margin-bottom: .25rem; }
.comment-form input, .comment-form textarea { width: 100%; padding: .625rem 1rem; border: 2px solid var(--ink); border-radius: .5rem; font-family: inherit; margin-bottom: 1rem; background: #fff; }
.comment-form .submit { width: auto; padding: .75rem 1.75rem; background: var(--rose-500); color: #fff; font-weight: 900; border: 2px solid var(--ink); border-radius: .5rem; box-shadow: 4px 4px 0 0 var(--ink); cursor: pointer; }

/* ── 404 ───────────────────────────────────────────────────────────────── */
.error-404 { padding: 6rem 0 8rem; text-align: center; }
.error-code { font-size: clamp(5rem, 18vw, 10rem); font-weight: 900; letter-spacing: -.05em; line-height: 1; color: var(--rose-500); -webkit-text-stroke: 2px var(--ink); margin-bottom: .5rem; }

/* ── WordPress core alignment helpers ──────────────────────────────────── */
.alignleft { float: left; margin: .5em 1.5em .5em 0; }
.alignright { float: right; margin: .5em 0 .5em 1.5em; }
.aligncenter { margin-left: auto; margin-right: auto; }
.alignwide { width: 100%; }
.alignfull { width: 100%; max-width: 100vw; margin-left: calc(50% - 50vw); }
.wp-caption { max-width: 100%; background: var(--stone-50); border: 3px solid var(--ink); border-radius: .75rem; padding: .5rem; box-shadow: 4px 4px 0 0 var(--ink); }
.wp-caption-text { font-size: .8rem; color: var(--stone-500); font-weight: 700; text-align: center; margin-top: .5rem; }
.sticky { display: block; }
.bypostauthor { display: block; }

/* ── Elementor native-widget overrides (front page) ────────────────────── */
.front-page-content .elementor-section > .elementor-container {
  width: min(80rem, calc(100% - 48px)) !important;
  max-width: 80rem !important;
  margin-left: auto;
  margin-right: auto;
}

.front-page-content .elementor-widget-heading h1.elementor-heading-title {
  font-size: clamp(2.25rem, 5.5vw, 3.75rem);
  font-weight: 900;
  letter-spacing: -0.03em;
  line-height: 1.05;
  color: var(--ink);
}

.front-page-content .elementor-widget-heading h2.elementor-heading-title {
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  font-weight: 900;
  letter-spacing: -0.03em;
  color: var(--ink);
}

.front-page-content .elementor-widget-heading h3.elementor-heading-title {
  font-size: 1.25rem;
  font-weight: 900;
  color: var(--ink);
}

.front-page-content .elementor-widget-text-editor {
  color: var(--stone-600);
  font-size: 1rem;
  line-height: 1.6;
}

.front-page-content .elementor-widget-button .elementor-button {
  border: 2px solid var(--ink);
  border-radius: 10px;
  font-weight: 900;
  box-shadow: 4px 4px 0 0 var(--ink);
}

.front-page-content .elementor-widget-button .elementor-button:hover {
  box-shadow: 2px 2px 0 0 var(--ink);
  transform: translate(2px, 2px);
}

.front-page-content .elementor-widget-button .elementor-button-link {
  padding: 16px 32px;
}

/* Section background helpers (the design's inline backgrounds) */
.neo-bg-white { background: #fff; }
.neo-bg-amber { background: rgba(255, 251, 235, 0.3); }
.neo-bg-rose  { background: rgba(255, 241, 242, 0.3); }

/* Native card helpers (used inside Text Editor / columns) */
.neo-icon-chip {
  width: 56px;
  height: 56px;
  border-radius: 0.75rem;
  border: 2px solid var(--ink);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.6rem;
  box-shadow: 3px 3px 0 0 var(--ink);
}

.neo-pill {
  display: inline-block;
  font-weight: 900;
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  padding: 0.3rem 0.8rem;
  border: 2px solid;
  border-radius: 9999px;
}

.neo-card {
  border: 4px solid var(--ink);
  border-radius: 1rem;
  padding: 2rem;
  box-shadow: 6px 6px 0 0 var(--ink);
  height: 100%;
}

/* ============================================================================
   Elementor compatibility — classic section/column widths
   Elementor 3.15 loads frontend-lite.min.css, which omits the classic
   .elementor-col-XX width rules, so multi-column sections collapse.
   ========================================================================== */
.front-page-content .elementor-column {
  flex: 0 0 auto;
  min-height: 1px;
}
.front-page-content .elementor-col-100 { width: 100%; }
.front-page-content .elementor-col-90  { width: 90%; }
.front-page-content .elementor-col-80  { width: 80%; }
.front-page-content .elementor-col-75  { width: 75%; }
.front-page-content .elementor-col-70  { width: 70%; }
.front-page-content .elementor-col-66  { width: 66.666%; }
.front-page-content .elementor-col-65  { width: 65%; }
.front-page-content .elementor-col-60  { width: 60%; }
.front-page-content .elementor-col-58  { width: 58%; }
.front-page-content .elementor-col-55  { width: 55%; }
.front-page-content .elementor-col-50  { width: 50%; }
.front-page-content .elementor-col-45  { width: 45%; }
.front-page-content .elementor-col-42  { width: 42%; }
.front-page-content .elementor-col-40  { width: 40%; }
.front-page-content .elementor-col-35  { width: 35%; }
.front-page-content .elementor-col-33  { width: 33.333%; }
.front-page-content .elementor-col-30  { width: 30%; }
.front-page-content .elementor-col-25  { width: 25%; }
.front-page-content .elementor-col-20  { width: 20%; }
.front-page-content .elementor-col-16  { width: 16.666%; }
.front-page-content .elementor-col-15  { width: 15%; }
.front-page-content .elementor-col-14  { width: 14.285%; }
.front-page-content .elementor-col-12  { width: 12.5%; }
.front-page-content .elementor-col-11  { width: 11.111%; }
.front-page-content .elementor-col-10  { width: 10%; }
.front-page-content .elementor-col-9   { width: 9.09%; }
.front-page-content .elementor-col-8   { width: 8.333%; }
.front-page-content .elementor-col-7   { width: 7.142%; }
.front-page-content .elementor-col-6   { width: 6.25%; }
.front-page-content .elementor-col-5   { width: 5%; }
.front-page-content .elementor-col-4   { width: 4.166%; }
.front-page-content .elementor-col-3   { width: 3.333%; }
.front-page-content .elementor-col-2   { width: 2.5%; }
.front-page-content .elementor-col-1   { width: 1%; }

/* Elementor sections split into header + cards: stitch them visually. */
.section.sec-head-section { padding: 5rem 0 4rem; border-bottom: none; }
.section.cards-section { padding: 0 0 5rem; }

/* Keep full-width Elementor sections within the theme's content width, and
   allow columns to wrap (safety net for any section packing header + cards). */
.front-page-content .elementor-section > .elementor-container {
  flex-wrap: wrap;
  width: min(1280px, calc(100% - 36px)) !important;
  max-width: min(1280px, calc(100% - 36px)) !important;
}

/* Tablet: columns collapse to 50% (100% stays full). */
@media (min-width: 768px) and (max-width: 1024px) {
  .front-page-content .elementor-column:not(.elementor-col-100) { width: 50% !important; }
}

/* Mobile: stack all columns. */
@media (max-width: 767px) {
  .front-page-content .elementor-column { width: 100% !important; }
}

/* ── Favourites (收藏) ────────────────────────────────────────────────── */
.post-card { position: relative; }
.fav-btn {
  position: absolute; top: .75rem; right: .75rem; z-index: 5;
  width: 38px; height: 38px; border-radius: 9999px;
  background: #fff; border: 2px solid var(--ink);
  color: var(--stone-500); font-size: 1.05rem; line-height: 1;
  display: inline-flex; align-items: center; justify-content: center;
  box-shadow: 2px 2px 0 0 var(--ink); transition: all .15s;
}
.fav-btn:hover { color: var(--rose-500); transform: translate(-1px,-1px); box-shadow: 3px 3px 0 0 var(--ink); }
.fav-btn.is-active { background: var(--rose-500); border-color: var(--ink); color: #fff; }
.fav-btn-lg {
  position: static; width: auto; height: auto; border-radius: .6rem;
  padding: .5rem 1rem; font-weight: 900; gap: .4rem; margin-top: .75rem; font-size: .95rem;
}
.fav-empty { color: var(--stone-600); font-weight: 500; padding: 2rem; border: 4px dashed var(--stone-200); border-radius: 1rem; text-align: center; }

/* ── Inner page Elementor helpers (About etc.) ─────────────────────────── */
.section-label {
  display: inline-block; font-weight: 900; font-size: .8rem; text-transform: uppercase;
  letter-spacing: .08em; padding: .3rem .8rem; border: 2px solid var(--ink);
  border-radius: 9999px; color: var(--amber-700); background: var(--amber-100);
  box-shadow: 2px 2px 0 0 var(--ink); margin-bottom: 1rem;
}
.client-logos {
  display: grid; grid-template-columns: repeat(6, 1fr); gap: 1rem; margin-top: 2rem;
}
.logo-tile {
  background: #fff; border: 2px solid var(--stone-200); border-radius: .75rem;
  height: 96px; display: flex; align-items: center; justify-content: center; padding: .75rem;
  transition: border-color .2s, box-shadow .2s;
}
.logo-tile img {
  max-width: 100%; max-height: 64px; object-fit: contain;
  filter: grayscale(1) opacity(.65); transition: filter .2s;
}
.logo-tile:hover { border-color: var(--ink); box-shadow: 3px 3px 0 0 var(--ink); }
.logo-tile:hover img { filter: grayscale(0) opacity(1); }
@media (max-width: 1024px) { .client-logos { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 640px)  { .client-logos { grid-template-columns: repeat(2, 1fr); } }

/* ── Contact page cards ──────────────────────────────────────────────── */
.contact-cards { display: flex; flex-direction: column; gap: 1rem; margin-top: 1.5rem; }
.contact-card {
  display: flex; align-items: center; gap: 1rem;
  background: #fff; border: 3px solid var(--ink); border-radius: .75rem; padding: 1rem 1.25rem;
  box-shadow: 4px 4px 0 0 var(--ink); transition: transform .15s, box-shadow .15s;
}
.contact-card:hover { transform: translate(-2px,-2px); box-shadow: 6px 6px 0 0 var(--ink); }
.contact-card .cc-icon {
  width: 44px; height: 44px; border-radius: .6rem; background: var(--amber-100);
  border: 2px solid var(--ink); display: flex; align-items: center; justify-content: center;
  font-size: 1.3rem; flex-shrink: 0;
}
.contact-card > div { display: flex; flex-direction: column; gap: .1rem; }
.contact-card b { font-size: .72rem; font-weight: 900; text-transform: uppercase; letter-spacing: .04em; color: var(--stone-500); }
.contact-card span { font-weight: 900; color: var(--ink); font-size: 1rem; }
.company-card {
  background: var(--rose-50); border: 3px solid var(--ink); border-radius: .75rem;
  padding: 1.5rem; box-shadow: 4px 4px 0 0 var(--ink);
  display: flex; flex-direction: column; gap: .75rem; margin-bottom: 1.5rem;
}
.company-card b { font-size: 1.15rem; font-weight: 900; color: var(--ink); }
.company-card p { color: var(--stone-600); }

/* Contact page: gap between the two columns (聯絡方式 | 查詢表單 / 公司資料 | 快捷查詢) */
#contact-details .elementor-column,
#contact-company .elementor-column { box-sizing: border-box; }
@media (min-width: 768px) {
  #contact-details .elementor-column:first-child,
  #contact-company .elementor-column:first-child { padding-right: 1.5rem; }
  #contact-details .elementor-column:last-child,
  #contact-company .elementor-column:last-child  { padding-left: 1.5rem; }
}
@media (max-width: 767px) {
  #contact-details .elementor-column:first-child,
  #contact-company .elementor-column:first-child { margin-bottom: 3rem; }
}

/* ── Contact Form 7 ──────────────────────────────────────────────────── */
.wpcf7 .row { display: grid; grid-template-columns: 1fr; gap: 1rem; margin-bottom: 1rem; }
@media (min-width: 640px) { .wpcf7 .row { grid-template-columns: 1fr 1fr; } }
.wpcf7 input[type="text"], .wpcf7 input[type="email"], .wpcf7 input[type="tel"],
.wpcf7 input[type="url"], .wpcf7 textarea, .wpcf7 select {
  width: 100%; padding: .625rem 1rem; background: var(--stone-50);
  border: 2px solid var(--ink); border-radius: .5rem; font-family: inherit;
  font-size: .875rem; font-weight: 500; color: var(--stone-800);
}
.wpcf7 input:focus, .wpcf7 textarea:focus, .wpcf7 select:focus {
  outline: none; box-shadow: 0 0 0 2px var(--rose-500);
}
.wpcf7 input[type="submit"] {
  width: 100%; padding: .875rem; background: var(--rose-500); color: #fff;
  font-weight: 900; font-size: 1rem; border: 3px solid var(--ink); border-radius: .75rem;
  box-shadow: 4px 4px 0 0 var(--ink); cursor: pointer; transition: all .15s;
}
.wpcf7 input[type="submit"]:hover {
  background: var(--rose-600); box-shadow: 1px 1px 0 0 var(--ink); transform: translate(1px,1px);
}
.wpcf7 .wpcf7-not-valid-tip { color: var(--rose-600); font-weight: 700; font-size: .75rem; }
.wpcf7 .wpcf7-response-output {
  border: 2px solid var(--ink) !important; border-radius: .5rem; font-weight: 700; color: var(--ink);
}
