:root{--ink:#17161b;--paper:#f3f1ec;--white:#fff;--purple:#8d5ab7;--purple2:#b382d5;--muted:#706d75;--line:#d9d5cf}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,Arial,sans-serif}.skip{position:fixed;left:12px;top:-60px;background:#fff;color:#111;padding:12px;z-index:99}.skip:focus{top:12px}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}
.topbar{height:94px;padding:10px clamp(22px,5vw,76px);display:flex;align-items:center;justify-content:space-between;background:rgba(21,20,24,.97);color:#fff;position:sticky;top:0;z-index:20;border-bottom:1px solid #312f36}.brand img{width:190px;height:74px;object-fit:contain}.topbar nav{display:flex;align-items:center;gap:clamp(20px,2.4vw,40px);font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.09em}.topbar nav>a:not(.nav-call){padding:12px 0;border-bottom:1px solid transparent}.topbar nav>a:hover{color:var(--purple2);border-color:var(--purple2)}.nav-call{background:var(--purple);padding:15px 20px}.menu{display:none}
.hero{min-height:calc(100vh - 94px);position:relative;display:flex;align-items:center;color:#fff;overflow:hidden}.hero-image,.hero-shade{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero-image{object-position:center 55%}.hero-shade{background:linear-gradient(90deg,rgba(10,9,12,.92) 0%,rgba(10,9,12,.63) 45%,rgba(10,9,12,.12) 78%),linear-gradient(0deg,rgba(10,9,12,.8),transparent 45%)}.hero-content{position:relative;z-index:2;padding:80px clamp(24px,8vw,130px) 160px;max-width:900px}.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:12px;font-weight:800;margin:0 0 22px}.eyebrow:before{content:"";display:inline-block;width:34px;height:2px;background:var(--purple2);margin:0 12px 4px 0}.purple{color:var(--purple)}h1,h2{font-family:"Playfair Display",Georgia,serif;line-height:.98;letter-spacing:-.03em;margin:0}h1{font-size:clamp(58px,7.8vw,118px)}h1 em,h2 em{color:var(--purple2);font-weight:600}.hero-copy{font-size:clamp(16px,1.7vw,21px);line-height:1.7;max-width:680px;color:#e3dfe6;margin:34px 0}.actions{display:flex;gap:12px;flex-wrap:wrap}.button{display:inline-flex;align-items:center;justify-content:center;gap:28px;padding:18px 25px;border:1px solid rgba(255,255,255,.45);font:800 12px Manrope;text-transform:uppercase;letter-spacing:.11em;cursor:pointer}.button span{font-size:19px}.primary{background:var(--purple);color:#fff;border-color:var(--purple)}.primary:hover{background:#754596}.ghost:hover{background:#fff;color:#111}.hero-proof{position:absolute;z-index:3;bottom:0;right:0;display:grid;grid-template-columns:repeat(3,1fr);background:rgba(23,22,27,.95);min-width:min(680px,70vw)}.hero-proof div{padding:22px 28px;border-left:1px solid #39363f}.hero-proof strong,.hero-proof span{display:block}.hero-proof strong{font:600 20px "Playfair Display"}.hero-proof span{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:#aaa5ae;margin-top:5px}
.section{padding:clamp(80px,10vw,150px) clamp(24px,8vw,130px)}.intro,.about,.process{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(300px,1.1fr);gap:60px 10vw}.section-heading h2{font-size:clamp(46px,5vw,78px)}.intro-copy,.about-copy{font-size:18px;line-height:1.8;color:#4f4b53;max-width:620px;padding-top:32px}.intro-copy>p:first-child{font-size:23px;color:var(--ink);margin-top:0}.area{font-weight:700;color:var(--purple)}.service-grid{grid-column:1/-1;margin-top:50px;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.service-grid article{min-height:285px;padding:34px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.service-grid article>span{font:600 15px "Playfair Display";color:var(--purple)}.service-grid h3{font:600 26px "Playfair Display";margin:58px 0 14px}.service-grid p{line-height:1.65;color:var(--muted);font-size:14px}
.dark{background:var(--ink);color:#fff}.work .section-heading{margin-bottom:55px}.light h2{color:#fff}.gallery{display:grid;grid-template-columns:repeat(12,1fr);gap:18px}.gallery figure{margin:0;grid-column:span 4;position:relative;overflow:hidden;background:#29272d;min-height:420px}.gallery figure.wide{grid-column:span 8}.gallery img{width:100%;height:100%;position:absolute;object-fit:cover;transition:transform .6s}.gallery figure:hover img{transform:scale(1.025)}.gallery figure:after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(transparent,rgba(0,0,0,.9))}.gallery figcaption{position:absolute;z-index:2;left:25px;bottom:24px}.gallery figcaption span,.gallery figcaption b{display:block}.gallery figcaption span{text-transform:uppercase;color:var(--purple2);font-size:10px;letter-spacing:.15em;font-weight:800}.gallery figcaption b{font:600 22px "Playfair Display";margin-top:7px}
.about{position:relative;overflow:hidden}.about-mark{position:absolute;right:-20px;top:0;font:700 330px "Playfair Display";color:rgba(141,90,183,.06);line-height:1}.values{display:flex;flex-wrap:wrap;gap:10px;margin-top:35px}.values span{padding:10px 15px;border:1px solid var(--line);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--ink)}
.process{background:#e7e3dc}.process ol{list-style:none;margin:0;padding:0}.process li{display:flex;gap:25px;padding:28px 0;border-bottom:1px solid #c9c3ba}.process li:first-child{padding-top:0}.process li>b{color:var(--purple);font:600 15px "Playfair Display"}.process h3{font:600 25px "Playfair Display";margin:0 0 8px}.process p{color:var(--muted);line-height:1.6;margin:0}
.contact{background:var(--ink);color:#fff;display:grid;grid-template-columns:.9fr 1.1fr;gap:10vw}.contact h2{font-size:clamp(52px,6vw,90px)}.contact>div>p:not(.eyebrow){color:#bab5c0;line-height:1.7;max-width:580px}.direct{margin-top:50px}.direct a{display:block;padding:16px 0;border-bottom:1px solid #38353e;font:600 clamp(16px,1.5vw,22px) "Playfair Display";overflow-wrap:anywhere}.direct small{display:block;color:var(--purple2);font:800 9px Manrope;text-transform:uppercase;letter-spacing:.16em;margin-bottom:5px}.contact form{background:#232127;padding:clamp(25px,4vw,52px);display:grid;grid-template-columns:1fr 1fr;gap:22px}.contact label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em}.contact label:nth-of-type(n+4){grid-column:1/-1}.contact input,.contact select,.contact textarea{display:block;width:100%;margin-top:9px;background:#17161b;border:1px solid #44404a;color:#fff;padding:15px;font:14px Manrope;border-radius:0}.contact textarea{resize:vertical}.contact form .button{grid-column:1/-1}.form-note{grid-column:1/-1;font-size:11px;color:#99949f;margin:0}
footer{background:#0e0d10;color:#9f9aa4;padding:45px clamp(24px,8vw,130px);display:flex;align-items:center;gap:30px;justify-content:space-between;font-size:11px;text-transform:uppercase;letter-spacing:.1em;border-top:1px solid #2a282e}footer img{width:150px;height:70px;object-fit:contain}.mobile-call{display:none}
@media(max-width:900px){.topbar{height:78px;padding:7px 20px}.brand img{width:150px;height:62px}.menu{display:flex;background:none;border:0;flex-direction:column;gap:5px;padding:10px;color:#fff}.menu span{width:25px;height:2px;background:#fff}.menu b{position:absolute;width:1px;height:1px;overflow:hidden}.topbar nav{display:none;position:absolute;top:78px;left:0;right:0;background:#17161b;flex-direction:column;align-items:stretch;padding:20px}.topbar nav.open{display:flex}.topbar nav a{padding:15px!important}.hero{min-height:780px}.hero-content{padding:80px 24px 210px}.hero-shade{background:linear-gradient(90deg,rgba(10,9,12,.9),rgba(10,9,12,.4)),linear-gradient(0deg,rgba(10,9,12,.88),transparent 55%)}.hero-proof{width:100%;min-width:0}.hero-proof div{padding:18px 12px}.intro,.about,.process,.contact{grid-template-columns:1fr}.service-grid{grid-template-columns:1fr 1fr}.gallery figure,.gallery figure.wide{grid-column:span 6;min-height:380px}footer{flex-direction:column;align-items:flex-start;padding-bottom:90px}.mobile-call{display:flex;position:fixed;z-index:18;bottom:0;left:0;right:0;background:var(--purple);color:#fff;padding:14px 22px;justify-content:space-between;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.1em}}
@media(max-width:580px){h1{font-size:54px}.hero{min-height:700px}.hero-copy{font-size:15px}.button{width:100%}.hero-proof strong{font-size:16px}.hero-proof span{font-size:8px}.section{padding:78px 22px}.intro,.about,.process{gap:25px}.section-heading h2{font-size:45px}.intro-copy{padding-top:0}.service-grid{grid-template-columns:1fr;margin-top:25px}.service-grid article{min-height:230px}.service-grid h3{margin-top:42px}.gallery{display:block}.gallery figure,.gallery figure.wide{height:430px;min-height:0;margin-bottom:14px}.contact{gap:45px}.contact form{grid-template-columns:1fr}.contact label{grid-column:1/-1}.contact h2{font-size:50px}}
/* Give the logo artwork more presence without stretching its proportions. */
.topbar{height:140px;padding-top:4px;padding-bottom:4px;background:#080709}
.brand{position:relative;display:block;flex:0 0 280px;height:132px;overflow:hidden}
.brand img{position:absolute;left:50%;top:50%;width:360px;height:240px;max-width:none;transform:translate(-50%,-50%);object-fit:contain}
.hero{min-height:calc(100vh - 140px)}
@media(max-width:1100px){.topbar nav{gap:16px}.nav-call{padding:15px 12px}}
@media(max-width:900px){.topbar{height:112px;padding:4px 16px}.brand{flex-basis:230px;height:104px}.brand img{width:292px;height:195px}.topbar nav{top:112px}.hero{min-height:780px}}
@media(max-width:580px){.hero{min-height:700px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.gallery img{transition:none}}

/* Clickable portfolio cards and individual project pages. */
.work .section-heading{margin-bottom:28px}.work-intro{max-width:680px;color:#ccc6d1;font-size:17px;line-height:1.7;margin:0 0 44px}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}.project-card{background:#242229;border:1px solid #3a3540;min-width:0}.project-card>a{display:flex;flex-direction:column;height:100%}.project-photo{aspect-ratio:4/3;overflow:hidden}.project-photo img{width:100%;height:100%;object-fit:cover;transition:transform .3s}.project-card a:hover .project-photo img{transform:scale(1.035)}.project-card a:focus-visible{outline:3px solid var(--purple2);outline-offset:5px}.project-card-copy{padding:26px;display:flex;flex:1;flex-direction:column}.project-category{font-size:13px;color:var(--purple2);letter-spacing:.1em;text-transform:uppercase;font-weight:800}.project-card h3,.project-card h4{font:600 27px/1.2 'Playfair Display',Georgia,serif;margin:14px 0}.project-card p{font-size:16px;line-height:1.65;color:#ccc6d1;margin:0 0 24px}.project-link{display:flex;justify-content:space-between;gap:16px;margin-top:auto;padding-top:18px;border-top:1px solid #48414f;font-size:14px;font-weight:800}.project-link>span{color:var(--purple2)}.project-page{padding:60px clamp(22px,6vw,100px) 100px}.project-heading{max-width:1050px;margin-bottom:42px}.back-link{display:inline-block;font-size:15px;font-weight:700;text-decoration:underline;text-underline-offset:5px;line-height:1.6}.project-heading .back-link{margin-bottom:40px}.project-heading h1{font-size:clamp(38px,5.5vw,76px);line-height:1.1;overflow-wrap:break-word}.project-detail{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr);gap:clamp(28px,5vw,80px);align-items:start}.project-full-photo{background:#e7e3dc;padding:12px}.project-full-photo img{width:100%;height:auto;max-height:850px;object-fit:contain}.project-story h2{font-size:34px;line-height:1.15}.project-story h3{font-size:19px;line-height:1.4;margin:28px 0 12px}.project-story p,.project-story li{font-size:17px;line-height:1.75;color:#514b57}.project-story ul{padding-left:22px}.project-story li{padding:5px 0}.project-enquiry{border-top:1px solid var(--line);margin-top:30px;padding-bottom:30px}.project-enquiry .button{font-size:14px;letter-spacing:.04em}.project-page+.mobile-call{position:fixed}
@media(max-width:1100px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.project-detail{grid-template-columns:1fr}.project-full-photo img{max-height:none}.project-page{padding-top:36px}.project-heading .back-link{margin-bottom:28px}}
@media(max-width:580px){.project-grid{grid-template-columns:1fr;gap:24px}.project-card-copy{padding:24px}.project-card h3,.project-card h4{font-size:27px}.project-page{padding-bottom:65px}.project-story h2{font-size:31px}}
@media(prefers-reduced-motion:reduce){.project-photo img{transition:none}.project-card a:hover .project-photo img{transform:none}}
/* Frequently asked questions. */
.faq-page{padding:70px clamp(22px,7vw,110px) 100px}.faq-heading{max-width:850px;margin-bottom:65px}.faq-heading h1{font-size:clamp(44px,6vw,86px);line-height:1.08}.faq-heading>p:last-child{max-width:660px;font-size:19px;line-height:1.75;color:#514b57;margin-top:28px}.faq-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,340px);gap:clamp(32px,6vw,90px);align-items:start}.faq-group{margin-bottom:52px}.faq-group h2{font-size:30px;line-height:1.2;margin-bottom:24px}.faq-item{border-top:1px solid #c9c3cd}.faq-item:last-child{border-bottom:1px solid #c9c3cd}.faq-item summary{padding:24px 34px 24px 0;cursor:pointer;position:relative;font-size:18px;font-weight:700;line-height:1.5;list-style:none}.faq-item summary::-webkit-details-marker{display:none}.faq-item summary:after{content:'+';position:absolute;right:4px;top:22px;font-size:25px;color:#754596}.faq-item[open] summary:after{content:'−'}.faq-item summary:focus-visible{outline:3px solid var(--purple);outline-offset:3px}.faq-answer{padding:0 26px 24px 0}.faq-answer p{font-size:17px;line-height:1.8;color:#514b57;margin:0}.faq-answer a{text-decoration:underline;text-underline-offset:4px;color:#694081}.faq-contact{background:var(--ink);color:white;padding:30px}.faq-contact h2{font-size:30px;line-height:1.2}.faq-contact p{font-size:16px;line-height:1.75;color:#ccc6d1;margin:20px 0 28px}.faq-contact .button{font-size:14px;letter-spacing:.03em;width:100%;padding:18px 14px}.faq-phone{display:block;margin-top:24px;text-align:center;font-size:16px;font-weight:700}.topbar nav a[aria-current="page"]{color:var(--purple2)}footer{flex-wrap:wrap}footer>a{text-decoration:underline;text-underline-offset:4px;font-size:14px}
@media(min-width:901px) and (max-width:1200px){.menu{display:flex;background:none;border:0;flex-direction:column;gap:5px;padding:10px;color:#fff}.menu span{width:25px;height:2px;background:#fff}.menu b{position:absolute;width:1px;height:1px;overflow:hidden}.topbar nav{display:none;position:absolute;top:140px;left:0;right:0;background:#17161b;flex-direction:column;align-items:stretch;padding:20px;font-size:14px}.topbar nav.open{display:flex}.topbar nav a{padding:15px!important}}
@media(max-width:800px){.faq-layout{grid-template-columns:1fr}.faq-page{padding-top:45px}.faq-heading{margin-bottom:40px}.faq-contact{max-width:540px}.faq-group{margin-bottom:38px}}

/* Dark, moody Black Thistle palette. */
:root{color-scheme:dark;--ink:#f2eef5;--paper:#111014;--purple:#8b58ae;--purple2:#c09bd9;--muted:#b9b1c0;--line:#37303e}
body{background:var(--paper)}
.topbar{background:#080709;border-bottom-color:#2b2531}
.hero{background:#0c0b0e;color:#fff}
.hero-shade{background:linear-gradient(90deg,rgba(8,7,10,.95) 0%,rgba(8,7,10,.78) 40%,rgba(8,7,10,.3) 78%),linear-gradient(0deg,rgba(8,7,10,.88),transparent 65%)}
.hero-copy{color:#ddd6e3}.hero-content{max-width:940px}
.hero .ghost{background:rgba(12,10,16,.35);border-color:#8c8196;color:#fff}
.hero .ghost:hover{background:#292130;border-color:var(--purple2)}
.hero-proof{background:rgba(17,14,22,.96);border-top:1px solid var(--line)}
.hero-proof div{border-color:var(--line)}.hero-proof span{color:var(--muted)}
.purple,.area,.service-grid article>span,.process li>b{color:var(--purple2)}
.nav-call,.primary,.mobile-call{background:#764693;color:#fff}.primary{border-color:#764693}.primary:hover,.nav-call:hover{background:#8753a5}
.intro-copy,.about-copy,.project-story p,.project-story li,.faq-heading>p:last-child,.faq-answer p{color:#c8c0cf}
.service-grid article{background:#18151d}.service-grid h3{color:#f2eef5}
.dark,.work.dark{background:#0c0b0f;color:#f2eef5}
.work-intro,.project-card p{color:#c8c0cf}
.project-card{background:#1b1720;border-color:var(--line);box-shadow:0 12px 32px rgba(0,0,0,.2)}
.project-card:hover{border-color:#766080}.project-link{border-color:var(--line)}
.about{background:radial-gradient(ellipse at 95% 0,rgba(112,65,137,.12),transparent 60%),#141117}
.about-mark{color:rgba(192,155,217,.045)}
.process{background:#1b1720}.process li{border-color:var(--line)}
.contact{background:#0c0b0f;color:#f2eef5}.contact>div>p:not(.eyebrow){color:#c8c0cf}.direct a{border-color:var(--line)}
.contact form{background:#1b1720;border:1px solid var(--line);box-shadow:0 18px 48px rgba(0,0,0,.22)}
.contact input,.contact select,.contact textarea{background:#100e14;border-color:#65586f;color:#f2eef5}
.contact input::placeholder,.contact textarea::placeholder{color:#aca0b6;opacity:1}
.contact input:focus,.contact select:focus,.contact textarea:focus{outline:2px solid var(--purple2);outline-offset:2px}
.form-note{color:#b9b1c0}.project-full-photo{background:#1b1720;border:1px solid var(--line)}
.faq-item,.faq-item:last-child{border-color:var(--line)}.faq-item summary:after,.faq-answer a{color:var(--purple2)}
.faq-contact{background:#211a29;border:1px solid var(--line);color:#f2eef5}.faq-contact p{color:#c8c0cf}
footer{background:#080709;color:#b9b1c0;border-top-color:var(--line)}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--purple2);outline-offset:5px}
@media(max-width:900px){.hero-shade{background:linear-gradient(90deg,rgba(8,7,10,.93),rgba(8,7,10,.65)),linear-gradient(0deg,rgba(8,7,10,.9),transparent 65%)}}

/* Bathroom renovation photo story: full images at every screen size. */
.renovation-album{margin-top:70px;padding-top:48px;border-top:1px solid var(--line)}
.renovation-album h2{font-size:clamp(32px,4vw,52px);line-height:1.15}.renovation-album>p{color:var(--muted);font-size:17px;line-height:1.7;margin:20px 0 32px}
.renovation-photos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;align-items:start}.renovation-photos figure{margin:0;background:#1b1720;border:1px solid var(--line)}.renovation-photos a{display:block}.renovation-photos img{width:100%;height:auto}.renovation-photos figcaption{padding:18px 20px;color:var(--ink);font-size:14px;line-height:1.5}
@media(max-width:650px){.renovation-photos{grid-template-columns:1fr;gap:22px}.renovation-album{margin-top:45px;padding-top:35px}}

/* Group kitchen projects together in the portfolio. */
.work-group+.work-group{margin-top:60px}.work-group-heading{font:600 clamp(28px,3.5vw,42px)/1.2 "Playfair Display",Georgia,serif;margin:0 0 28px;color:var(--ink)}

/* Kitchen photo album: preserve full images at every screen size. */
.kitchen-album-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin:32px 0 48px}.kitchen-album-grid figure{margin:0;min-width:0}.kitchen-album-grid a{display:block;background:#201e24}.kitchen-album-grid img{display:block;width:100%;height:auto}.kitchen-album-grid figcaption{padding:12px 0;color:var(--muted)}@media(max-width:650px){.kitchen-album-grid{grid-template-columns:1fr;gap:22px}}

.kitchen-album-summary{grid-template-columns:minmax(0,820px)}@media(min-width:801px){.kitchen-album-summary .project-card>a{display:grid;grid-template-columns:1.1fr 1fr}.kitchen-album-summary .project-photo{height:100%;min-height:310px}}
