html { scroll-padding-top: 135px; }
body.admin-bar .site-header { top: 32px; }
body.admin-bar .hero { padding-top: 143px; }
.plomer-document { max-width: 1000px; padding-top: 180px; padding-bottom: 100px; min-height: 70vh; }
.plomer-document h1 { font-size: clamp(2.3rem, 6vw, 4.5rem); overflow-wrap: anywhere; margin-bottom: 36px; }
.plomer-document h2 { font-size: 2rem; margin: 36px 0 16px; }
.plomer-document h3 { font-size: 1.4rem; margin: 28px 0 12px; }
.plomer-document p, .plomer-document li { font-size: 1rem; line-height: 1.75; margin-bottom: 16px; }
.plomer-document a:not(.button) { text-decoration: underline; text-underline-offset: 3px; }
.plomer-document ul, .plomer-document ol { padding-left: 24px; }
.plomer-document ul { list-style: disc; }
.plomer-document img { max-width: 100%; height: auto; }
.plomer-document .alignwide { max-width: 100%; }
.plomer-document .wp-block-image figcaption { font-size: .875rem; color: #555; }
.plomer-document input:not([type=checkbox]), .plomer-document textarea { max-width: 100%; border: 1px solid #777; background: #fff; padding: 10px; }

/* 404: a single playful moment, kept fast, legible and fully decorative. */
.error404 .site-header { background: rgba(244,243,237,.96); border-bottom-color: rgba(21,22,21,.09); box-shadow: 0 5px 24px rgba(21,22,21,.04); }
.error-page { position: relative; isolation: isolate; overflow: hidden; min-height: min(820px, 100svh); padding-block: 190px 104px; color: var(--white); background: var(--night); }
.error-page-grid { position: absolute; z-index: -2; inset: 0; opacity: .16; pointer-events: none; background-image: linear-gradient(rgba(255,255,255,.13) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.13) 1px, transparent 1px); background-size: 62px 62px; mask-image: linear-gradient(180deg, black, rgba(0,0,0,.52) 72%, transparent); }
.error-page::after { position: absolute; z-index: -1; content: ""; width: 620px; height: 620px; right: -210px; top: 40px; border-radius: 50%; background: radial-gradient(circle, rgba(243,216,72,.2), rgba(243,216,72,0) 69%); pointer-events: none; }
.error-page-layout { display: grid; grid-template-columns: minmax(0,.83fr) minmax(440px,1.17fr); align-items: center; gap: clamp(52px,7vw,110px); }
.error-page-copy { position: relative; z-index: 2; }
.error-kicker { display: flex; align-items: center; gap: 11px; margin: 0 0 25px; color: rgba(255,255,255,.65); font-size: .7rem; font-weight: 800; line-height: 1.2; letter-spacing: .17em; text-transform: uppercase; }
.error-kicker span { width: 34px; height: 1px; background: var(--accent); }
.error-page h1 { max-width: 660px; margin: 0; color: var(--white); font-size: clamp(3.3rem,6.2vw,6rem); line-height: .98; letter-spacing: -.055em; }
.error-page h1 em { color: #8b8d84; font-style: normal; font-weight: 450; }
.error-lead { max-width: 480px; margin: 29px 0 0; color: rgba(255,255,255,.72); font-size: clamp(1rem,1.35vw,1.16rem); line-height: 1.65; }
.error-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 24px; margin-top: 35px; }
.error-cable-card { position: relative; display: grid; align-items: center; min-height: 430px; overflow: hidden; background: rgba(255,255,255,.035); border: 1px solid rgba(255,255,255,.13); border-radius: 4px 54px 4px 4px; box-shadow: 0 36px 90px rgba(0,0,0,.28); animation: errorCardIn 680ms cubic-bezier(.16,1,.3,1) both; }
.error-watermark { position: absolute; top: -42px; right: 18px; color: rgba(255,255,255,.035); font-size: clamp(9rem,18vw,15rem); font-weight: 800; line-height: 1; letter-spacing: -.08em; user-select: none; }
.error-cable { position: relative; width: 112%; max-width: none; margin-left: -6%; overflow: visible; }
.error-cable-shadow, .error-cable-line { fill: none; stroke-linecap: round; }
.error-cable-shadow { stroke: rgba(0,0,0,.32); stroke-width: 36; transform: translateY(9px); }
.error-cable-line { stroke: var(--accent); stroke-width: 27; }
.error-plug rect { fill: var(--accent); }
.error-plug path { fill: none; stroke: var(--white); stroke-width: 11; stroke-linecap: round; }
.error-plug circle { fill: var(--night); opacity: .78; }
.error-spark { transform-origin: 404px 227px; animation: errorSparkIn 720ms 260ms cubic-bezier(.16,1,.3,1) both; }
.error-spark path { fill: none; stroke: var(--white); stroke-width: 7; stroke-linecap: round; }
.error-spark circle { fill: var(--white); }
.error-cable-label { position: absolute; left: 24px; bottom: 19px; display: flex; align-items: center; gap: 9px; margin: 0; color: rgba(255,255,255,.54); font-size: .63rem; font-weight: 750; letter-spacing: .13em; text-transform: uppercase; }
.error-cable-label span { width: 7px; height: 7px; background: #d95750; border-radius: 50%; box-shadow: 0 0 0 4px rgba(217,87,80,.12); }
@keyframes errorCardIn { from { opacity: 0; transform: translate3d(0,16px,0) scale(.97); } to { opacity: 1; transform: none; } }
@keyframes errorSparkIn { 0% { opacity: 0; transform: scale(.72) rotate(-8deg); } 52% { opacity: 1; transform: scale(1.08) rotate(2deg); } 100% { opacity: 1; transform: none; } }
@media(max-width:900px) {
  .error-page { padding-block: 166px 80px; }
  .error-page-layout { grid-template-columns: 1fr; gap: 46px; }
  .error-page-copy { max-width: 680px; }
  .error-cable-card { min-height: 330px; }
  .error-cable { width: min(860px,112%); justify-self: center; }
}
@media(max-width:600px) {
  .error-page { min-height: auto; padding-block: 146px 64px; }
  .error-page-layout { gap: 38px; }
  .error-kicker { margin-bottom: 18px; font-size: .63rem; letter-spacing: .12em; }
  .error-page h1 { font-size: clamp(2.65rem,12vw,4rem); line-height: 1.02; }
  .error-lead { margin-top: 22px; }
  .error-actions { align-items: flex-start; flex-direction: column; gap: 20px; margin-top: 28px; }
  .error-cable-card { min-height: 255px; border-radius: 4px 38px 4px 4px; }
  .error-cable { width: 125%; margin-left: -12.5%; }
  .error-cable-label { left: 17px; bottom: 15px; }
}
@media(prefers-reduced-motion:reduce) {
  .error-cable-card, .error-spark { animation: none; }
}
.plomer-post { padding-block: 18px 32px; border-bottom: 1px solid #ccc; }
.plomer-comments { margin-top: 60px; }
.plomer-map-consent { position: absolute; inset: 0; display: grid; align-content: center; justify-items: center; gap: 18px; padding: 24px 24px 64px; text-align: center; background: #252722; color: #fffefa; }
.plomer-map-consent p { max-width: 380px; font-size: .875rem; line-height: 1.6; }
.plomer-map-consent .button { font-size: .875rem; min-height: 44px; }
.site-header .brand img, .footer-brand img { object-fit: contain; }
@media(max-width:782px) { body.admin-bar .site-header { top:46px; } body.admin-bar .hero { padding-top:149px; } body.admin-bar .mobile-menu { top:149px; } }
@media(max-width:600px) { body.admin-bar #wpadminbar { position:fixed; } .plomer-document { padding-top:155px; } }
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }

/* One shared content edge across every section and breakpoint. */
:root { --page-gutter: clamp(24px, 4vw, 48px); --shell: min(1240px, calc(100% - var(--page-gutter) * 2)); }
.shell { width: var(--shell); max-width: 1240px; margin-inline: auto; }
.shell > *, .hero-copy, .hero-media { min-width: 0; }
.hero-media { width: 100%; max-width: none; margin-inline: 0; padding-inline: 0; }
.hero h1 { font-size: clamp(2.25rem, 4.6vw, 4.5rem); max-width: none; }
.scene-control { left: 0; }
.hero-orbit { display: none; }
.mobile-menu nav, .mobile-menu-contact { padding-inline: var(--page-gutter); }
.site-credit { display: grid; justify-items: center; gap: 10px; padding-block: 30px 40px; border-top: 1px solid var(--line-light); color: rgba(255,255,255,.7); font-size: .8125rem; line-height: 1.5; text-align: center; }
.site-credit-brand { display: inline-flex; align-items: center; justify-content: center; padding: 7px 8px; color: var(--white); border-radius: 8px; transition: opacity 180ms ease, transform 180ms cubic-bezier(.23,1,.32,1); }
.site-credit-brand:hover { opacity: .82; transform: translateY(-1px); }
.site-credit-brand:focus-visible { outline: 3px solid var(--white); outline-offset: 3px; }
.site-credit-logo { width: 126px; height: auto; flex: 0 0 auto; }
.map-reset-button { min-height: 44px; border: 1px solid currentColor; border-radius: 4px; padding: 9px 13px; background: transparent; color: inherit; cursor: pointer; font-size: .875rem; }
.map-reset-button { margin-top: 12px; }
[hidden] { display: none !important; }
.plomer-map-consent { padding: 20px 20px 54px; gap: 12px; }
.plomer-map-consent a { text-decoration: underline; text-underline-offset: 3px; }
.location-map { min-height: 300px; }
.request-form input, .request-form textarea, .request-form select { font-size: 1rem; }
.form-row label, .form-privacy-note { font-size: .875rem; }
.button-submit { white-space: normal; text-align: center; }

/* Brief, one-time reveals, with no scroll interception or looping decoration. */
.plomer-js [data-reveal] { transform: translateY(14px); transition: opacity 280ms var(--ease), transform 280ms var(--ease); transition-delay: 0ms; }
.plomer-js [data-reveal].is-visible, .hero [data-reveal] { opacity: 1; transform: none; }
.hero-scene-image { transform: none; transition: opacity 400ms var(--ease); }
.hero-house-glow { transition: opacity 400ms var(--ease); }
.business-status-dot, .business-status.is-open .business-status-dot, .business-status.is-closed .business-status-dot,
.availability-card .availability-pill i, .availability-card.is-open .availability-pill i, .availability-card.is-closed .availability-pill i,
.process-mark, .process-mark::before, .process-mark::after, .about-stamp, .scroll-cue i, .scroll-cue i::after { animation: none; }
.phone-pulse::after, .header-phone.is-closed .phone-pulse::after { animation: none; }
.text-link { transition: color 160ms ease; }
.text-link:hover { gap: 9px; }
.button, .scene-control button { transition: transform 150ms var(--ease), background-color 150ms ease; }
.button:active, .scene-control button:active { transform: scale(.98); }
.button:focus-visible, .scene-control button:focus-visible { transition: none; }
.button:focus-visible:active, .scene-control button:focus-visible:active { transform: none; }
@media (hover: none) { .service-card:hover, .scene-control button:hover, .button:hover { transform: none; } }
@media (max-width: 960px) {
  .hero-layout { max-width: 1240px; }
  .hero-copy, .hero-media { max-width: none; }
}
@media (max-width: 760px) {
  :root { --page-gutter: 24px; }
  .hero-layout { gap: 24px; padding-block: 28px 40px; }
  .hero .eyebrow { font-size: .75rem; letter-spacing: .08em; margin-bottom: 14px; }
  .hero h1 { width: 100%; max-width: none; font-size: clamp(2.1rem, 8.7vw, 3.9rem); line-height: 1.06; letter-spacing: -.045em; }
  .hero-lead, .hero-proof, .hero .availability-card, .hero-actions .text-link, .scroll-cue { display: none; }
  .hero-actions { display: block; margin-top: 22px; }
  .hero-actions .button { width: auto; min-height: 48px; font-size: .9375rem; }
  .hero-media { padding: 0; }
  .hero-image-wrap { aspect-ratio: 16 / 10; border-radius: 4px 38px 4px 4px; }
  .hero-image-wrap img { object-position: 74% center; }
  .scene-control { position: relative; left: auto; bottom: auto; width: 100%; margin-top: 10px; padding: 8px 12px; box-shadow: none; gap: 10px; }
  .scene-control small { display: none; }
  .scene-control strong { font-size: .875rem; }
  .scene-control button { min-height: 44px; font-size: .875rem; }
  .hero-grid { opacity: .2; }
  .hero-glow { display: none; }
  .services, .feature-section, .reviews-section, .process-section, .faq-section, .contact-section { padding-block: 64px; }
  .services-intro > p:not(.eyebrow), .service-card p, .about-copy > p:not(.eyebrow):not(.large-copy), .process-list p,
  .faq-intro > p:not(.eyebrow), .faq-list details p, .contact-intro > p:not(.eyebrow) { font-size: 1rem; line-height: 1.65; }
  .two-columns { grid-template-columns: 1fr; }
  .site-credit { padding-block: 26px 36px; }
  .footer-bottom { padding-bottom: 24px; }
}
@media (max-width: 600px) {
  .mobile-contact-bar { left: var(--page-gutter); width: calc(100% - var(--page-gutter) * 2); }
  body.admin-bar .hero { padding-top: 144px; }
  .site-credit { gap: 8px; }
  .site-credit-logo { width: 116px; }
}
@media (max-width: 380px) { :root { --page-gutter: 20px; } }
html[data-input-mode="keyboard"] .mobile-contact-bar { display: none; }
html[data-input-mode="keyboard"] .form-notice { transition: none; }
@media (prefers-reduced-motion: reduce) {
  .plomer-js [data-reveal] { opacity: 1; transform: none; transition: none; }
  .hero-scene-image, .button, .scene-control button { transition: none; }
  .button:active, .scene-control button:active { transform: none; }
}
