/* =========================================================
   THEME-NEUTRAL BASELINE
   Prepended to every theme's CSS. Covers behavior that must work
   regardless of theme (anchor-scroll to the quote form under a sticky
   topbar) and a plain fallback for arbitrary site-authored HTML inside
   CONFIG["cost_body"] (tables, lists) that a theme's own CSS doesn't
   otherwise style.
========================================================= */
*{ box-sizing: border-box; }

/* Browsers default <figure> to `margin: 1em 40px`, which throws off any
   grid/flex pairing it sits in (e.g. an image beside a quote-form box) —
   the sibling box ends up looking like it "sticks out" below the image. */
figure{ margin: 0; }

html, body{ max-width: 100%; overflow-x: clip; }

html, body{
  scroll-behavior: smooth;
  scroll-padding-top: calc(110px + env(safe-area-inset-top));
}

#quote-panel{
  scroll-margin-top: calc(110px + env(safe-area-inset-top));
}

@media (min-width: 900px){
  html, body{ scroll-padding-top: 80px; }
  #quote-panel{ scroll-margin-top: 80px; }
}

[hidden]{ display: none !important; }

.sr-only{
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0);
  white-space: nowrap; border: 0;
}

/* Fallback styling for arbitrary CONFIG["cost_body"] markup (tables, lists)
   that a theme's own stylesheet doesn't specifically target. */
table{
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  margin: 14px 0;
  background: #fff;
  border: 1px solid rgba(0,0,0,.12);
  border-radius: 10px;
  overflow: hidden;
}
thead th{
  background: rgba(0,0,0,.04);
  text-align: left;
  padding: 10px 12px;
  border-bottom: 1px solid rgba(0,0,0,.12);
  white-space: nowrap;
  font-size: 13px;
}
td{
  padding: 10px 12px;
  vertical-align: top;
  border-bottom: 1px solid rgba(0,0,0,.10);
  font-size: 14px;
}
tbody tr:last-child td{ border-bottom: none; }
.table-scroll{ max-width: 100%; }
@media (max-width: 640px){
  .table-scroll{ overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .table-scroll table{ min-width: 720px; }
}

/* Swiss International — International Typographic Style.
   12-column grid, flush-left/ragged-right, Helvetica, black + one red.
   Scale is the only ornament. */
:root{
  --sw-red:#e2231a; --sw-ink:#111; --sw-grey:#6b6b6b; --sw-rule:#111; --sw-hair:#d4d4d4; --sw-paper:#fff;
  --sw-font:"Helvetica Neue",Helvetica,"Nimbus Sans","Arial Nova",Arial,sans-serif;
  --sw-gut:24px;
}
html{ background:var(--sw-paper); }
body.swintl, .est-body{ margin:0; background:var(--sw-paper); color:var(--sw-ink); font:17px/1.5 var(--sw-font); -webkit-font-smoothing:antialiased; }
.swintl a:not(.swintl-btn){ color:inherit; }
.swintl-wrap{ max-width:1280px; margin:0 auto; padding:0 40px; }

/* ---------- masthead ---------- */
.swintl-mast__in{ display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--sw-gut); align-items:center; padding-top:22px; padding-bottom:22px; }
.swintl-brand{ grid-column:1 / span 6; display:flex; align-items:center; gap:12px; text-decoration:none; font-weight:700; font-size:17px; letter-spacing:-.01em; }
.swintl-brand img{ display:block; width:32px; height:32px; }
.swintl-nav{ grid-column:7 / span 6; display:flex; align-items:center; gap:28px; flex-wrap:wrap; }
.swintl-nav a:not(.swintl-btn){ font-size:15px; font-weight:700; text-decoration:none; padding:8px 0; border-bottom:3px solid transparent; }
.swintl-nav a[aria-current="page"]{ border-bottom-color:var(--sw-red); }
.swintl-nav .swintl-btn{ margin-left:auto; }

/* ---------- buttons ---------- */
.swintl-btn, .btn{
  display:inline-flex; align-items:center; justify-content:center; min-height:44px; padding:10px 20px;
  font:700 15px/1 var(--sw-font); letter-spacing:0; text-decoration:none; cursor:pointer;
  background:var(--sw-ink); color:#fff; border:0; border-radius:0;
}
.swintl-btn:hover, .btn:hover{ background:var(--sw-red); color:#fff; }
.swintl-btn--go{ background:var(--sw-ink); min-height:60px; padding:0 28px; font-size:18px; }
.swintl-btn--go:hover{ background:#fff; color:var(--sw-red); }
.swintl-btn--strip{ background:#fff; color:var(--sw-ink); min-height:60px; font-size:22px; padding:0 26px; }
.swintl-btn--strip:hover{ background:var(--sw-ink); color:#fff; }
.swintl-btn--foot{ background:var(--sw-red); min-height:56px; font-size:18px; padding:0 26px; }
.swintl-btn--foot:hover{ background:#fff; color:var(--sw-ink); }

/* ---------- red strip (the form) ---------- */
.swintl-strip{ background:var(--sw-red); color:#fff; }
.swintl-strip__in{ display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--sw-gut); align-items:center; padding-top:20px; padding-bottom:20px; }
.swintl-strip__label{ grid-column:1 / span 5; margin:0; font-size:20px; font-weight:700; line-height:1.15; letter-spacing:-.01em; }
.swintl-zip{ grid-column:7 / span 6; display:flex; gap:0; min-width:0; }
.swintl-zip .swintl-btn{ flex:none; white-space:nowrap; }
.swintl-zip input[name="zip"]{
  flex:1 1 auto; min-width:0; height:60px; border:0; border-radius:0; padding:0 18px; background:#fff; color:var(--sw-ink);
  font:700 26px/1 var(--sw-font); letter-spacing:.06em;
}
.swintl-zip input[name="zip"]::placeholder{ color:#9a9a9a; font-weight:400; letter-spacing:0; font-size:20px; }
.swintl-zip input[name="zip"]:focus{ outline:4px solid var(--sw-ink); outline-offset:-4px; }
.swintl-strip--call .swintl-btn{ grid-column:7 / span 6; justify-self:start; }

/* ---------- title + opening ---------- */
.swintl-title{ padding:72px 0 48px; }
.swintl-title h1{
  margin:0; max-width:11.2em; overflow-wrap:break-word; -webkit-hyphens:auto; hyphens:auto; font-size:clamp(42px,7.2vw,104px); line-height:.96; font-weight:700; letter-spacing:-.035em;
}
.swintl-open{ display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--sw-gut); padding-bottom:64px; border-bottom:3px solid var(--sw-rule); }
.swintl-fig{ grid-column:1 / span 4; }
.swintl-fig img{ display:block; width:100%; height:auto; aspect-ratio:4/3; object-fit:cover; filter:grayscale(1) contrast(1.12); }
.swintl-lede{ grid-column:6 / span 7; }
.swintl-lede p{ margin:0 0 14px; font-size:clamp(20px,1.9vw,27px); line-height:1.32; letter-spacing:-.012em; }

/* ---------- Q&A rows ---------- */
.swintl-row{ display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--sw-gut); padding:28px 0 22px; border-bottom:1px solid var(--sw-rule); }
.swintl-row__q{ grid-column:1 / span 5; margin:0; font-size:22px; line-height:1.18; font-weight:700; letter-spacing:-.015em; }
.swintl-row__a{ grid-column:7 / span 6; }
.swintl-row__a p{ margin:0 0 12px; }
.swintl-row__a ul{ margin:0 0 12px; padding:0; list-style:none; border-top:1px solid var(--sw-hair); }
.swintl-row__a li{ padding:8px 0 8px 22px; border-bottom:1px solid var(--sw-hair); position:relative; }
.swintl-row__a li::before{ content:""; position:absolute; left:0; top:15px; width:10px; height:10px; background:var(--sw-red); }
.swintl-row--cost{ background:var(--sw-ink); color:#fff; border-bottom:0; margin:0 -40px; padding:36px 40px 30px; grid-template-columns:repeat(12,minmax(0,1fr)); }
.swintl-row--cost .swintl-row__q{ color:#fff; }
.swintl-row--cost p{ line-height:1.75; }
.swintl-row--cost strong{ font-size:clamp(26px,2.6vw,36px); line-height:1; letter-spacing:-.03em; color:#fff; box-shadow:inset 0 -5px 0 var(--sw-red); }

/* cost-page tables */
.swintl .table-scroll table{ border:0; border-radius:0; background:transparent; border-top:3px solid var(--sw-ink); }
.swintl .table-scroll thead th{ background:transparent; font-size:13px; font-weight:700; border-bottom:1px solid var(--sw-ink); padding:10px 12px 10px 0; }
.swintl .table-scroll td{ font-size:15px; padding:10px 12px 10px 0; border-bottom:1px solid var(--sw-hair); }
.swintl .table-scroll td:nth-child(2){ font-weight:700; white-space:nowrap; }

/* ---------- service area ---------- */
.swintl-area{ display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--sw-gut); padding:40px 0 56px; }
.swintl-area__head{ grid-column:1 / span 4; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); column-gap:var(--sw-gut); align-content:start; }
.swintl-area__head h2{ grid-column:1 / span 4; margin:0 0 10px; font-size:22px; line-height:1.18; letter-spacing:-.015em; }
.swintl-area__head .muted{ grid-column:1 / span 4; }
.swintl-area__list{ grid-column:5 / span 8; columns:4 150px; column-gap:var(--sw-gut); }
.muted{ color:var(--sw-grey); font-size:15px; margin:0; }
.city-group__title{ break-after:avoid; margin:0; padding:14px 0 4px; font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--sw-red); }
.city-grid{ list-style:none; margin:0; padding:0; }
.city-grid li{ break-inside:avoid; }
.city-grid a{ display:block; padding:3px 0; font-size:14px; line-height:1.35; text-decoration:none; }
.city-grid a:hover{ color:var(--sw-red); text-decoration:underline; }
.swintl hr{ display:none; }

/* ---------- footer ---------- */
.swintl-foot{ background:var(--sw-ink); color:#fff; }
.swintl-foot__in{ display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--sw-gut); padding-top:56px; padding-bottom:40px; }
.swintl-foot__cta{ grid-column:1 / span 5; margin:0 0 32px; }
.swintl-foot__links{ grid-column:1 / span 6; margin:0; display:flex; gap:24px; font-size:14px; }
.swintl-foot__links a{ text-decoration:none; border-bottom:1px solid #777; }
.swintl-foot__copy{ grid-column:7 / span 6; margin:0; font-size:14px; color:#aaa; }

/* ---------- small screens ---------- */
@media (max-width:900px){
  .swintl-wrap{ padding:0 20px; }
  .swintl-mast__in{ grid-template-columns:1fr; row-gap:12px; padding-top:14px; padding-bottom:12px; }
  .swintl-brand, .swintl-nav{ grid-column:1; }
  .swintl-nav{ gap:20px; }
  .swintl-strip__in{ grid-template-columns:minmax(0,1fr); row-gap:12px; padding-top:16px; padding-bottom:18px; }
  .swintl-strip__label, .swintl-zip, .swintl-strip--call .swintl-btn{ grid-column:1; }
  .swintl-strip__label{ font-size:18px; }
  .swintl-zip input[name="zip"], .swintl-btn--go{ height:56px; min-height:56px; }
  .swintl-btn--go{ padding:0 18px; font-size:16px; }
  .swintl-title{ padding:36px 0 26px; }
  /* shrink only when the longest unbreakable token (e.g. A/B/C) would overflow */
  .swintl-title h1{ max-width:none; font-size:clamp(16px, min(9.6vw, calc((100vw - 42px) / (var(--swintl-long, 10) * .55))), 64px); }
  .swintl-open{ grid-template-columns:1fr; row-gap:22px; padding-bottom:36px; }
  .swintl-fig, .swintl-lede{ grid-column:1; }
  .swintl-fig{ max-width:240px; }
  .swintl-row{ grid-template-columns:minmax(0,1fr); row-gap:10px; padding:22px 0 14px; }
  .swintl-row__q{ grid-column:1; font-size:20px; }
  .swintl-row__a{ grid-column:1; }
  .swintl-row--cost{ margin:0 -20px; padding:26px 20px 20px; grid-template-columns:minmax(0,1fr); }
  .swintl-area{ grid-template-columns:1fr; padding:30px 0 40px; }
  .swintl-area__head{ grid-column:1; grid-template-columns:minmax(0,1fr); column-gap:0; margin-bottom:6px; }
  .swintl-area__head h2, .swintl-area__head .muted{ grid-column:1; }
  .swintl-area__list{ grid-column:1; columns:2; column-gap:16px; }
  .swintl-area__list .city-grid a{ font-size:13.5px; }
  .swintl-foot__in{ grid-template-columns:1fr; row-gap:18px; padding-top:40px; }
  .swintl-foot__cta, .swintl-foot__links, .swintl-foot__copy{ grid-column:1; margin:0; }
}
@media (max-width:420px){

  .swintl-nav{ gap:16px; }
  .swintl-nav .swintl-btn{ padding:10px 14px; }
}

/* =========================================================
   STANDALONE (estimate wizard + legal)
========================================================= */
.est-page{ min-height:100vh; display:grid; grid-template-rows:auto 1fr auto; }
.topbar--estimate{ border-bottom:3px solid var(--sw-ink); }
.topbar-inner--estimate{ max-width:1280px; margin:0 auto; padding:18px 40px; }
.brand--estimate{ display:inline-flex; align-items:center; gap:12px; text-decoration:none; color:var(--sw-ink); font-weight:700; font-size:17px; }
.brand-logo--estimate{ display:block; width:32px; height:32px; }
.est-main{ width:100%; max-width:1280px; margin:0 auto; padding:48px 40px 64px; }
.est-weave{ display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--sw-gut); align-items:start; }
.est-weave-media{ grid-column:1 / span 4; }
.est-weave-media img{ display:block; width:100%; height:auto; aspect-ratio:4/3; object-fit:cover; filter:grayscale(1) contrast(1.1); }
.est-weave .est-shell{ grid-column:6 / span 7; }
.est-shell{ min-width:0; max-width:760px; }
.est-title{ margin:0 0 28px; font-size:clamp(34px,4.4vw,60px); line-height:.98; font-weight:700; letter-spacing:-.03em; }
.est-form{ border-top:3px solid var(--sw-ink); padding-top:20px; }
.est-header{ margin-bottom:8px; }
.est-progress{ height:8px; background:#ececec; }
.est-bar{ height:100%; width:20%; background:var(--sw-red); transition:width .25s; }
.est-error{ margin:14px 0 0; padding:12px 14px; background:var(--sw-red); color:#fff; font-weight:700; }
.est-panel label{ display:block; margin:18px 0 0; font-size:14px; font-weight:700; }
.est-panel input, .est-panel select, .est-panel textarea{
  display:block; width:100%; margin-top:6px; height:52px; padding:0 14px; border:0; border-bottom:2px solid var(--sw-ink); border-radius:0;
  background:#f3f3f3; font:400 18px var(--sw-font); color:var(--sw-ink);
}
.est-panel textarea, .est-textarea{ height:auto; min-height:130px; padding:12px 14px; resize:vertical; margin-top:18px; }
.est-panel input:focus, .est-panel select:focus, .est-panel textarea:focus{ outline:3px solid var(--sw-red); outline-offset:0; }
.est-row{ display:grid; grid-template-columns:1fr 120px 120px; gap:var(--sw-gut); }
.est-tcpa{ margin:14px 0 0; font-size:12px; line-height:1.45; color:var(--sw-grey); }
.est-actions{ display:flex; justify-content:space-between; gap:12px; margin-top:26px; }
.btn{ min-height:52px; padding:0 30px; font-size:17px; }
.btn.ghost{ background:transparent; color:var(--sw-ink); box-shadow:inset 0 0 0 2px var(--sw-ink); }
.btn.ghost:hover{ background:var(--sw-ink); color:#fff; }
.est-thanks{ padding:22px; background:var(--sw-red); color:#fff; font-size:20px; font-weight:700; }
.legal-copy p{ margin:0 0 16px; font-size:17px; max-width:40em; }
.est-page footer{ background:var(--sw-ink); color:#bbb; }
.est-page .footer-inner{ max-width:1280px; margin:0 auto; padding:20px 40px; font-size:14px; }
@media (max-width:900px){
  .topbar-inner--estimate{ padding:14px 20px; }
  .est-main{ padding:24px 20px 40px; }
  .est-weave{ grid-template-columns:1fr; row-gap:22px; }
  .est-weave-media, .est-weave .est-shell{ grid-column:1; }
  .est-weave-media{ max-width:280px; }
  .est-row{ grid-template-columns:1fr; gap:0; }
  .est-page .footer-inner{ padding:18px 20px; }
}

/* last-resort line breaking: an unusually long title token wraps instead of being clipped */
@media (max-width:900px){ .swintl h1{ overflow-wrap:anywhere; } }

/* keep a wide (min-width:720px) cost table from widening its grid column;
   it scrolls inside its wrapper instead */
.table-scroll{ contain:inline-size; }

/* ---------- sticky masthead ----------
   Pinned while the page scrolls; a hairline shadow fades in once content
   passes under it (scroll-driven where supported, always shown elsewhere). */
.swintl-mast{ position:sticky; top:0; z-index:50; background:var(--sw-paper); }
.topbar--estimate{ position:sticky; top:0; z-index:50; background:var(--sw-paper); }
@supports (animation-timeline: scroll()){
  .swintl-mast, .topbar--estimate{ animation:swintl-lift linear both; animation-timeline:scroll(root); animation-range:0 80px; }
  @keyframes swintl-lift{ to{ box-shadow:0 1px 0 rgba(0,0,0,.12), 0 10px 24px -18px rgba(0,0,0,.45); } }
}
@supports not (animation-timeline: scroll()){
  .swintl-mast, .topbar--estimate{ box-shadow:0 1px 0 rgba(0,0,0,.12); }
}
