/* Rise Renovations - generated from .dc.html design source */
.svc-wrap{position:relative;display:inline-block}
.svc-menu{position:absolute;top:100%;left:0;margin-top:0;padding-top:8px;background:#161616;border:1px solid #3A342B;border-radius:8px;padding:8px;min-width:230px;gap:2px;box-shadow:0 20px 40px -20px rgba(0,0,0,.6);z-index:40;display:none}
.svc-wrap:hover .svc-menu,.svc-wrap:focus-within .svc-menu{display:grid}
.img-ph{background:#1D1812;border:1px dashed #3A342B;display:flex;align-items:center;justify-content:center;color:#8A7E6B;font-size:13px;text-align:center;padding:12px}
.stat-num{font-family:'Playfair Display',serif;font-weight:700;font-size:32px;color:#B8862B;opacity:0;transform:translateY(16px);transition:opacity .6s ease var(--d,0s),transform .6s ease var(--d,0s)}
[data-reveal].is-in .stat-num{opacity:1;transform:translateY(0)}
[data-parallax]{will-change:transform}
.doc-page{max-width:1180px;margin:0 auto;padding:clamp(28px,5vw,64px) clamp(20px,5vw,64px)}
.field{display:flex;flex-direction:column;gap:6px}
.form-err{color:#F0B4B4;font-size:13px;margin-top:8px;display:none}
.form-err.show{display:block}
button[disabled]{opacity:.6;cursor:progress}
:focus-visible{outline:2px solid #D3A94C;outline-offset:2px}
img{max-width:100%}
@media (max-width:860px){
  header nav{gap:10px!important;font-size:13px!important}
  .svc-menu{position:static!important;box-shadow:none!important;min-width:0!important}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;transition-duration:.01ms!important}
  [data-parallax]{transform:none!important}
}
.hv1:hover{color: #D3A94C}
.hv2:hover{color: #B8862B}
.hv3:hover{background: #1E1E1E; color: #D3A94C}
.hv4:hover{background: #D3A94C}
.hv5:hover{background: rgba(255,255,255,.12)}
.hv6:hover{color: #fff}
.hv7:hover{background: rgba(255,255,255,.14)}
.hv8:hover{transform: translateY(-4px)}
.hv9:hover{background: #B8862B; color: #fff}
.hv10:hover{color: #8A6620}
.proj-card figure{transition:transform .25s ease,box-shadow .25s ease}
.proj-card:hover figure{transform:translateY(-4px);box-shadow:0 18px 34px -22px rgba(0,0,0,.55)}
.proj-card:hover h2{color:#8A6620}

/* RESPONSIVE-GRIDS — design source uses fixed multi-column grids; collapse on narrow viewports */
@media (max-width: 860px){
  [style*="grid-template-columns: minmax"],
  [style*="grid-template-columns: repeat(2"],
  [style*="grid-template-columns: repeat(3"],
  [style*="grid-template-columns: repeat(4"]{ grid-template-columns: 1fr !important; }
  section, main, header, footer { max-width: 100% !important; }
  [style*="min-height:"]{ min-height: 0 !important; }
}
@media (max-width: 560px){
  [style*="grid-template-columns: repeat(auto-fit"]{ grid-template-columns: 1fr !important; }
}

/* ---- Past Projects ---- */
.proj-card{transition:transform .18s ease,box-shadow .18s ease}
.proj-card:hover{transform:translateY(-3px);box-shadow:0 22px 44px -22px rgba(0,0,0,.7)}
.proj-gallery a{transition:opacity .18s ease}
.proj-gallery a:hover{opacity:.82}
@media (max-width:900px){
  .proj-featured{grid-template-columns:1fr!important}
  .proj-gallery{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}
@media (max-width:560px){.proj-gallery{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media (prefers-reduced-motion:reduce){.proj-card,.proj-gallery a{transition:none}}

/* ---- intake address block ---- */
.rr-addr{display:grid;gap:10px;margin-top:6px;
  grid-template-columns:repeat(6,minmax(0,1fr));
  grid-template-areas:"street street street street unit unit"
                      "city city city state zip zip"}
.rr-addr input::placeholder{color:#8C8577}
/* On a phone the home panel's form column is only ~246px wide. Squeezing city, state
   and ZIP onto one row there left ZIP 54px — narrower than the five digits it has to
   hold, so a typed 07030 would scroll inside its own box. Measured, not guessed: on a
   phone each part gets a full-width row and only the 2-character state shares with ZIP,
   which is the same full-width stacking every other field on this form already uses. */
@media (max-width:720px){.rr-addr{grid-template-columns:repeat(4,minmax(0,1fr));
  grid-template-areas:"street street street street"
                      "unit unit unit unit"
                      "city city city city"
                      "state zip zip zip"}}

/* hover state on light sections (#B8862B is 2.88:1 on cream) */
[style*="F5F1EA"] a:hover,[style*="FFFFFF"] a:hover{color:#5F4712}


/* ================= mobile navigation ================= */
.rr-burger{display:none;background:none;border:1px solid #3A342B;border-radius:8px;
  width:48px;height:48px;align-items:center;justify-content:center;cursor:pointer;
  color:#EDE6D8;padding:0;margin-left:auto;flex:none}
.rr-burger:hover{border-color:#B8862B;color:#D3A94C}
.rr-burger svg{display:block;pointer-events:none}

.rr-drawer{position:fixed;inset:0;z-index:120;display:none;background-color:#0A0A0A;
  background-image:linear-gradient(180deg,rgba(10,8,6,.80),rgba(10,8,6,.90)),
             var(--rr-drawer-bg);background-position:center;background-size:cover;background-repeat:no-repeat}
.rr-drawer[data-open="true"]{display:flex;flex-direction:column;
  animation:rrFade .22s ease-out both}
@keyframes rrFade{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.rr-drawer[data-open="true"]{animation:none}}

.rr-drawer__top{display:flex;align-items:center;justify-content:space-between;
  padding:14px clamp(18px,5vw,28px);border-bottom:1px solid rgba(58,52,43,.8);flex:none}
.rr-drawer__top img{height:56px;width:auto;display:block}
.rr-close{background:none;border:1px solid #3A342B;border-radius:8px;width:48px;height:48px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;color:#EDE6D8;padding:0}
.rr-close:hover{border-color:#B8862B;color:#D3A94C}

.rr-drawer__scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;flex:1;
  padding:8px clamp(18px,5vw,28px) 28px}
.rr-drawer a{display:block;color:#F5EFE3;text-decoration:none;font-family:'Playfair Display',serif;
  font-weight:700;font-size:21px;line-height:1;padding:15px 0;border-bottom:1px solid rgba(58,52,43,.6)}
.rr-drawer a:hover,.rr-drawer a:focus-visible{color:#D3A94C}
.rr-sub{margin:0;padding:0 0 6px 14px;border-left:2px solid #3A342B}
.rr-sub a{font-family:'Work Sans',sans-serif;font-weight:500;font-size:15.5px;
  color:#C9BFAF;padding:13px 0;border-bottom:1px solid rgba(58,52,43,.35)}
.rr-sub a:hover{color:#D3A94C}
.rr-acc{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;
  background:none;border:0;border-bottom:1px solid rgba(58,52,43,.6);color:#F5EFE3;
  font-family:'Playfair Display',serif;font-weight:700;font-size:21px;line-height:1;
  padding:15px 0;cursor:pointer;text-align:left}
.rr-acc:hover{color:#D3A94C}
.rr-acc svg{transition:transform .2s ease;flex:none}
.rr-acc[aria-expanded="true"] svg{transform:rotate(180deg)}
.rr-sub[hidden]{display:none}

.rr-drawer__cta{padding:20px clamp(18px,5vw,28px) calc(20px + env(safe-area-inset-bottom));
  border-top:1px solid rgba(58,52,43,.8);display:grid;gap:12px;flex:none;
  background:rgba(10,8,6,.85)}
.rr-drawer__cta a{border-bottom:0;padding:15px 18px;border-radius:8px;text-align:center;
  font-family:'Work Sans',sans-serif;font-size:16px;font-weight:700}
.rr-cta-primary{background:#B8862B;color:#161616!important}
.rr-cta-primary:hover{background:#D3A94C;color:#161616!important}
.rr-cta-call{border:1.5px solid #3A342B;color:#F5EFE3!important}
.rr-cta-call:hover{border-color:#B8862B;color:#D3A94C!important}

@media (max-width:900px){
  .rr-burger{display:flex}
  header nav{display:none!important}
  header a[href="#estimate"],header a[href="contact-us.html"].hdr-cta{display:none!important}
}
body.rr-locked{overflow:hidden}

/* home "Completed Projects" — two equal cards, one column on mobile */
.home-projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin-top:40px}
@media (max-width:760px){.home-projects{grid-template-columns:1fr!important}}

/* ================= home project slider ================= */
.rr-sw{position:relative;margin-top:30px}
.rr-track{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;
  scrollbar-width:none;-ms-overflow-style:none;padding:2px 2px 8px}
.rr-track::-webkit-scrollbar{display:none}
.rr-track{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){.rr-track{scroll-behavior:auto}}

.rr-slide{flex:0 0 calc((100% - 36px)/3);scroll-snap-align:start;position:relative;
  display:block;border-radius:12px;overflow:hidden;background:#1E1E1E;
  text-decoration:none;color:inherit}
.rr-slide img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;
  transition:transform .35s ease}
.rr-slide:hover img{transform:scale(1.04)}
@media (prefers-reduced-motion:reduce){.rr-slide img,.rr-slide:hover img{transition:none;transform:none}}
.rr-slide:focus-visible{outline:2px solid #D3A94C;outline-offset:3px}

.rr-slide__cat{position:absolute;top:12px;left:12px;background:#B8862B;color:#161616;
  font-size:11px;font-weight:700;padding:4px 11px;border-radius:20px;letter-spacing:.03em}
.rr-slide__cap{position:absolute;left:0;right:0;bottom:0;padding:34px 16px 14px;
  background:linear-gradient(180deg,rgba(10,8,6,0),rgba(10,8,6,.88));
  display:flex;flex-direction:column;gap:2px}
.rr-slide__cap b{font-family:'Playfair Display',serif;font-size:16px;color:#F5EFE3;font-weight:700}
.rr-slide__cap span{font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  font-weight:600;color:#D3A94C}

.rr-bar{display:flex;align-items:center;gap:12px;margin-top:18px}
.rr-arrow{width:44px;height:44px;border-radius:50%;border:1.5px solid #3A342B;
  background:none;color:#EDE6D8;display:flex;align-items:center;justify-content:center;
  cursor:pointer;flex:none;padding:0}
.rr-arrow:hover:not(:disabled){border-color:#B8862B;color:#D3A94C}
.rr-arrow:disabled{opacity:.35;cursor:default}
.rr-count{font-size:12.5px;letter-spacing:.06em;color:#A79C89;font-variant-numeric:tabular-nums}
.rr-rail{flex:1;height:3px;border-radius:3px;background:#2A2622;overflow:hidden}
.rr-rail i{display:block;height:100%;background:#B8862B;border-radius:3px;
  transition:width .2s ease,margin-left .2s ease}
@media (prefers-reduced-motion:reduce){.rr-rail i{transition:none}}

@media (max-width:980px){.rr-slide{flex-basis:calc((100% - 18px)/2)}}
@media (max-width:640px){.rr-slide{flex-basis:86%}}

/* ================= Google rating ================= */
/* align-self/width matter: the review cards are flex columns, and a flex item is
   blockified — inline-block alone would stretch the pill to the full card width. */
.rr-stars{color:#FFC72C;letter-spacing:3px;line-height:1;display:inline-block;
  width:fit-content;align-self:flex-start}
/* 12.7:1 on the dark ground; on white the same yellow is 1.56:1, so light
   backgrounds get a dark pill behind the stars instead of a darker yellow. */
.rr-stars--chip{background:#161616;padding:6px 11px;border-radius:999px;
  letter-spacing:2.5px;font-size:14px}

.rr-grate{display:inline-flex;align-items:center;gap:11px;flex-wrap:wrap;
  text-decoration:none;border-radius:999px;color:#EDE6D8}
/* explicit, so nothing inside can inherit the section's gold — which is only 1.95:1
   on the cream ground even though every child sets its own colour today */
.rr-grate--light{color:#3A3227}
.rr-grate__score{font-family:'Playfair Display',serif;font-weight:700;font-size:20px;
  line-height:1;color:#F5EFE3}
.rr-grate__on{font-size:14px;font-weight:600;letter-spacing:.01em;color:#EDE6D8}
.rr-grate__on b{font-weight:700}
.rr-grate:hover .rr-grate__on{color:#FFC72C}
.rr-grate:focus-visible{outline:2px solid #FFC72C;outline-offset:4px}
.rr-grate--light .rr-grate__score{color:#1D1812}
.rr-grate--light .rr-grate__on{color:#3A3227}
.rr-grate--light:hover .rr-grate__on{color:#8A6620}

.rr-gsrc{font-weight:700;color:#EDE6D8}
.rr-gsrc--light{font-weight:700;color:#3A3227}

/* ---- credibility strip ---- */
.rr-trust{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));background:#1E1E1E;
  border-radius:10px;box-shadow:0 24px 55px -25px rgba(0,0,0,.55);overflow:hidden}
.rr-trust>*{padding:24px 18px;text-align:center;border-right:1px solid #3A342B;
  text-decoration:none;color:inherit;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:5px}
.rr-trust>*:last-child{border-right:0}
.rr-trust a:hover .rr-trust__big{color:#FFC72C}
.rr-trust__big{font-family:'Playfair Display',serif;font-weight:700;font-size:24px;
  color:#F5EFE3;line-height:1.15}
.rr-trust__sub{font-size:12.5px;color:#A79C89;line-height:1.35}
/* The stars sat 54px left of the "5.0" and "on Google" stacked beneath them. Cause: the
   base .rr-stars rule carries align-self:flex-start — added so the pill version could
   not stretch inside the left-aligned review cards — and align-self overrides this
   cell's align-items:center. width:fit-content on that base rule already prevents the
   stretch, so this just puts the alignment back where the cell asked for it.
   The negative margin cancels the trailing 3px letter-space after the fifth star, which
   would otherwise leave the glyphs 1.5px right of true centre. Sized up from 15px so
   five stars carry their weight beside a 24px "5.0". */
.rr-trust .rr-stars{font-size:17px;align-self:center;margin-right:-3px}
@media (max-width:1080px){.rr-trust{grid-template-columns:repeat(3,minmax(0,1fr))}
  .rr-trust>*:nth-child(3){border-right:0}}
@media (max-width:660px){.rr-trust{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rr-trust>*{border-right:1px solid #3A342B}
  .rr-trust>*:nth-child(2n){border-right:0}}

/* rating in the top bar, every page */
.rr-topgoogle{display:inline-flex;align-items:center;gap:7px;text-decoration:none;
  color:#FFFFFF;white-space:nowrap}
/* align-self again: flex-start was top-aligning the stars against the text in this row */
.rr-topgoogle .rr-stars{font-size:12px;letter-spacing:2px;align-self:center;
  margin-right:-2px}
.rr-topgoogle b{font-weight:700}
.rr-topgoogle:hover{color:#FFC72C}
@media (max-width:620px){.rr-topgoogle{display:none}}

/* ================= service card icons ================= */
.rr-ico{width:60px;height:60px;border-radius:14px;display:flex;align-items:center;
  justify-content:center;margin-bottom:16px;
  background:linear-gradient(145deg,#2A2724,#171514);
  border:1px solid #3A342B;
  box-shadow:inset 0 1px 0 rgba(240,207,126,.16), 0 8px 18px -12px rgba(0,0,0,.9);
  transform-style:preserve-3d}
.rr-ico svg{width:34px;height:34px;display:block;transform:translateZ(14px);
  filter:drop-shadow(0 3px 4px rgba(0,0,0,.55))}

.rr-inc{perspective:700px}
.rr-inc>div{border:1px solid transparent;
  transition:transform .35s cubic-bezier(.2,.7,.3,1),border-color .35s ease,opacity .5s ease}

/* The reveal is opt-in via .rr-anim, added by JS. Hiding the cards in CSS by default
   would leave them invisible for good if the script ever failed to run. */
.rr-inc.rr-anim>div{opacity:0;transform:translateY(14px)}
.rr-inc.rr-anim>div.rr-in{opacity:1;transform:none}

/* Both hover selectors come last: .rr-anim>div.rr-in sets transform:none and would
   otherwise cancel the tilt at equal-or-higher specificity. */
.rr-inc>div:hover,
.rr-inc.rr-anim>div.rr-in:hover{transform:rotateX(4deg) rotateY(-5deg) translateY(-4px);
  border-color:#3A342B}
.rr-inc>div:hover .rr-ico{background:linear-gradient(145deg,#332F29,#1B1917);
  border-color:#8A6620}

@media (prefers-reduced-motion:reduce){
  .rr-inc>div,.rr-inc>div.rr-in{opacity:1;transform:none;transition:none}
  .rr-inc>div:hover{transform:none}
  .rr-ico svg{transform:none}
}

/* ---- page hero ----
   The photo and the scrim are pseudo-elements at negative z-index inside a stacking
   context of the hero's own, so they sit under the existing heading markup without any
   of it having to move. Nothing here changes the DOM order the page already had. */
.rr-hero{position:relative;isolation:isolate;background:#161310;
  padding:clamp(26px,4.5vw,52px) 0}
.rr-hero::before{content:"";position:absolute;inset:0;z-index:-2;
  background-image:var(--rr-hero);background-size:cover;background-position:center;
  background-repeat:no-repeat}
/* Dark at the top so the fixed header keeps its contrast, darker still at the bottom
   where the intro paragraph sits in muted stone. */
.rr-hero::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,rgba(16,13,10,.68) 0%,rgba(16,13,10,.74) 42%,
    rgba(16,13,10,.88) 100%)}
/* The title markup was written for a flat charcoal band, so its muted stone greys sat
   at 1.9:1 over the brightest parts of a photograph. Measured against the lightest pixel
   in each of the 23 heroes, these hold 4.5:1 or better while the picture stays visible.
   !important because every one of these colours is an inline style. */
.rr-hero h1{color:#FFFFFF !important;text-shadow:0 2px 12px rgba(0,0,0,.45)}
.rr-hero p,.rr-hero li,.rr-hero time{color:#E6DFD2 !important;
  text-shadow:0 1px 6px rgba(0,0,0,.4)}
.rr-hero span,.rr-hero a{color:#E2DACD !important}
.rr-hero span[style*="D3A94C"],.rr-hero span[style*="B8862B"]{color:#F0CF7E !important}
@media (max-width:640px){.rr-hero{padding:clamp(18px,4vw,32px) 0}
  .rr-hero::after{background:linear-gradient(180deg,rgba(16,13,10,.8),rgba(16,13,10,.92))}}
