
:root{--ease:cubic-bezier(0.22,1,0.36,1);}
*{box-sizing:border-box;}
body{margin:0;font-family:'Geist',sans-serif;background:oklch(0.16 0.01 45);color:oklch(0.94 0.008 60);}
a{color:oklch(0.78 0.13 85);text-decoration:none;}
a:hover{color:oklch(0.66 0.14 85);}
img{max-width:100%;display:block;}
::selection{background:oklch(0.78 0.13 85 / 0.35);}
@keyframes kenburns{0%{transform:scale(1) translate(0,0);}100%{transform:scale(1.12) translate(-1.5%,-1%);}}
@keyframes revealUp{0%{transform:translateY(14px);}100%{transform:translateY(0);}}
.reveal{animation:revealUp 0.8s var(--ease) both;}
@media (prefers-reduced-motion:reduce){.kb,.reveal{animation:none!important;}}

/* grain overlay */
.grain{position:fixed;inset:0;z-index:2;pointer-events:none;opacity:.045;mix-blend-mode:overlay;
background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
background-repeat:repeat;}
.glow-layer{position:fixed;inset:0;z-index:40;pointer-events:none;overflow:hidden;}
.touch-glow{position:absolute;width:220px;height:220px;margin:-110px 0 0 -110px;border-radius:50%;filter:blur(6px);
background:radial-gradient(circle,rgba(255,215,0,.22) 0%,rgba(255,215,0,.08) 45%,rgba(255,215,0,0) 75%);
opacity:0;transition:opacity .2s ease-out;}

/* loader */
#loader{position:fixed;inset:0;z-index:9999;background:oklch(0.14 0.01 45);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;transition:opacity .35s ease-out;}
#loader.fade{opacity:0;pointer-events:none;}
#loader .grime{opacity:1;transition:opacity .4s ease-out;}
#loader.clean .grime,#loader.sparkle .grime{opacity:0;}
#loader .sparkle{opacity:0;transition:opacity .3s ease-out;}
#loader.sparkle .sparkle{opacity:1;}
#loader .tag{font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:oklch(0.6 0.02 60);}

/* header/nav */
header{position:sticky;top:0;z-index:100;background:oklch(0.14 0.01 45 / 0.92);border-bottom:1px solid oklch(0.32 0.012 45);}
nav.mainnav{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;padding:16px 28px;}
.logo{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.logo svg{flex-shrink:0;}
.logo .word{font-weight:700;font-size:22px;letter-spacing:.02em;color:oklch(0.78 0.13 85);}
.logo .sub{font-size:13px;color:oklch(0.68 0.02 60);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;}
.navlinks{display:none;justify-content:center;gap:20px;}
.navlinks a{font-size:14.5px;color:oklch(0.88 0.008 60);transition:color .25s,transform .25s var(--ease);display:inline-block;}
.navlinks a:hover{color:oklch(0.78 0.13 85);transform:translateY(-2px);}
.navlinks a.active{color:oklch(0.78 0.13 85);}
.utility{display:none;align-items:center;gap:14px;flex-shrink:0;}
.iconbtn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:6px;color:oklch(0.9 0.01 60);cursor:pointer;transition:background .25s,transform .25s var(--ease);}
.iconbtn:hover{background:oklch(0.4 0.06 130 / 0.15);transform:scale(1.08);}
.contactbtn{display:flex;align-items:center;gap:7px;background:transparent;border:none;border-radius:6px;color:oklch(0.94 0.008 60);cursor:pointer;padding:8px 6px;font-family:'Geist',sans-serif;font-weight:600;font-size:14.5px;white-space:nowrap;transition:color .25s,transform .25s var(--ease);}
.contactbtn:hover{color:oklch(0.78 0.13 85);transform:translateY(-2px);}
.dropdown{position:relative;}
.dropdown .panel{position:absolute;top:48px;right:0;background:oklch(0.19 0.012 45);border:1px solid oklch(0.32 0.012 45);border-radius:8px;box-shadow:0 12px 32px rgba(0,0,0,.45);display:none;}
.dropdown.open .panel{display:block;}
.contact-panel{padding:8px;min-width:190px;}
.contact-panel a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:6px;color:oklch(0.92 0.008 60);font-size:14.5px;}
.contact-panel a:hover{background:oklch(0.24 0.014 45);color:oklch(0.92 0.008 60);}
.search-panel{padding:12px;width:280px;}
.search-panel input{width:100%;background:oklch(0.14 0.01 45);border:1px solid oklch(0.32 0.012 45);border-radius:6px;color:oklch(0.94 0.008 60);padding:9px 10px;font-size:14.5px;font-family:'Geist',sans-serif;}
.search-results a{display:block;padding:8px 4px;color:oklch(0.85 0.01 60);font-size:14px;border-top:1px solid oklch(0.28 0.012 45);}
.settings-panel{padding:16px;width:250px;display:flex;flex-direction:column;gap:14px;}
.settings-panel .tag{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:oklch(0.68 0.02 60);}
.settings-row{display:flex;align-items:center;justify-content:space-between;font-size:14.5px;color:oklch(0.92 0.008 60);cursor:pointer;}
.cta-btn{background:linear-gradient(110deg,oklch(0.78 0.13 85) 0%,oklch(0.78 0.13 85) 40%,oklch(0.95 0.06 92) 50%,oklch(0.78 0.13 85) 60%,oklch(0.78 0.13 85) 100%);background-size:250% 100%;background-position:100% 50%;transition:background-position .6s var(--ease),transform .25s var(--ease);color:oklch(0.16 0.01 45);font-weight:600;font-size:14.5px;padding:11px 20px;border-radius:6px;white-space:nowrap;border:none;cursor:pointer;display:inline-block;}
.cta-btn:hover{background-position:0% 50%;transform:scale(1.03);}
.cta-btn.dark{background:linear-gradient(110deg,oklch(0.16 0.01 45) 0%,oklch(0.16 0.01 45) 40%,oklch(0.32 0.02 45) 50%,oklch(0.16 0.01 45) 60%,oklch(0.16 0.01 45) 100%);color:oklch(0.94 0.008 60);}
.cta-btn.outline{background:linear-gradient(110deg,transparent 0%,transparent 40%,oklch(0.16 0.01 45 / 0.14) 50%,transparent 60%,transparent 100%);background-size:250% 100%;background-position:100% 50%;border:2px solid oklch(0.16 0.01 45);color:oklch(0.16 0.01 45);}
.hamburger{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:oklch(0.92 0.008 60);cursor:pointer;justify-self:end;}
#drawer{position:fixed;inset:0;z-index:960;background:oklch(0.12 0.008 45 / 0.98);overflow-y:auto;display:none;}
#drawer.open{display:block;}
.drawer-inner{max-width:440px;margin:0 auto;padding:0 24px 48px;display:flex;flex-direction:column;gap:28px;}
.drawer-close{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:oklch(0.92 0.008 60);cursor:pointer;margin-left:auto;display:flex;}
.drawer-topbar{display:flex;justify-content:flex-end;padding:18px 20px;}
.drawer-nav a{display:block;padding:14px 4px;font-size:20px;color:oklch(0.94 0.008 60);border-bottom:1px solid oklch(0.28 0.012 45);}
.drawer-cta{text-align:center;}
.drawer-contact{display:flex;flex-direction:column;gap:10px;}
.drawer-contact a{display:flex;align-items:center;gap:12px;color:oklch(0.9 0.008 60);font-size:16px;padding:10px 4px;}
.drawer-settings{display:flex;flex-direction:column;gap:14px;padding-top:8px;border-top:1px solid oklch(0.28 0.012 45);}
.drawer-settings .row{display:flex;align-items:center;justify-content:space-between;font-size:16px;color:oklch(0.92 0.008 60);}
.drawer-search input{width:100%;background:oklch(0.18 0.012 45);border:1px solid oklch(0.32 0.012 45);border-radius:6px;color:oklch(0.94 0.008 60);padding:12px 14px;font-size:16px;font-family:'Geist',sans-serif;}
@media(min-width:900px){
  .navlinks{display:flex;}
  .utility{display:flex;}
  .hamburger{display:none;}
}

/* hero */
.hero{position:relative;overflow:visible;min-height:300px;}
.hero-bg{position:absolute;inset:0;overflow:hidden;}
.hero-bg .kb{position:absolute;inset:-6%;will-change:transform;background-size:cover;background-position:center;animation:kenburns 26s ease-in-out infinite alternate;}
.hero-overlay{position:absolute;inset:0;}
.hero-content{position:relative;display:flex;flex-direction:column;justify-content:center;padding:32px 24px;max-width:820px;min-height:300px;}
.hero-content h1{font-family:'Geist',sans-serif;font-weight:700;font-size:30px;line-height:1.08;letter-spacing:-.01em;color:oklch(0.97 0.006 60);margin:0 0 18px;}
.hero-content p{font-size:18px;line-height:1.55;color:oklch(0.86 0.01 60);margin:0;}
.kicker{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:oklch(0.78 0.13 85);font-weight:600;margin-bottom:14px;}
@media(min-width:769px){
  .hero-content h1{font-size:44px;}
  .hero-content{padding:48px 64px;}
  .hero.home .hero-content h1{font-size:58px;}
  .hero.home .hero-content{max-width:920px;min-height:460px;}
  .hero.about .hero-content,.hero.services .hero-content,.hero.contact .hero-content{min-height:340px;}
}
.hero.home .hero-content{min-height:400px;}

/* generic section */
.section{padding:56px 24px;max-width:1200px;margin:0 auto;}
@media(min-width:769px){.section{padding:96px 64px;}}
.section h2{font-family:'Geist',sans-serif;font-weight:600;font-size:34px;color:oklch(0.96 0.006 60);margin:0 0 20px;}
.grid2{display:grid;gap:56px;grid-template-columns:1fr;align-items:center;}
@media(min-width:769px){.grid2{grid-template-columns:1fr 1fr;}}
.card-img{position:relative;height:300px;overflow:hidden;border-radius:10px;}
@media(min-width:769px){.card-img{height:380px;}}
.card-img img{width:100%;height:100%;object-fit:cover;}
.services-row{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:12px;margin-bottom:44px;}
.services-row a{font-size:15px;display:inline-flex;align-items:center;gap:6px;transition:transform .3s var(--ease),color .3s;}
.services-row a:hover{transform:translateX(4px);}
.services-grid{display:grid;gap:28px;grid-template-columns:1fr;}
@media(min-width:769px){.services-grid{grid-template-columns:1fr 1fr;}}
.service-card{display:block;background:oklch(0.19 0.012 45);border:1px solid oklch(0.3 0.012 45);border-radius:10px;overflow:hidden;transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .35s var(--ease);}
.service-card:hover{transform:translateY(-6px);box-shadow:0 24px 48px rgba(0,0,0,.4);border-color:oklch(0.66 0.14 85);}
.service-card .img{height:220px;overflow:hidden;}
.service-card .img img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease);}
.service-card:hover .img img{transform:scale(1.06);}
.service-card .body{padding:26px;}
.service-card h3{font-family:'Geist',sans-serif;font-weight:600;font-size:21px;color:oklch(0.96 0.006 60);margin:0 0 10px;}
.service-card p{font-size:15px;line-height:1.6;color:oklch(0.72 0.015 60);margin:0;}
.testimonials{background:oklch(0.12 0.008 45);}
.testi-grid{display:grid;gap:24px;grid-template-columns:1fr;}
@media(min-width:769px){.testi-grid{grid-template-columns:1fr 1fr 1fr;}}
.testi-card{background:oklch(0.16 0.01 45);border:1px solid oklch(0.3 0.012 45);border-radius:10px;padding:30px;display:flex;flex-direction:column;gap:16px;transition:transform .35s var(--ease),border-color .35s var(--ease);}
.testi-card:hover{transform:translateY(-4px);border-color:oklch(0.66 0.14 85);}
.testi-card .quote{font-size:16.5px;line-height:1.55;color:oklch(0.92 0.008 60);margin:0;flex:1;}
.testi-card .name{color:oklch(0.68 0.02 60);font-size:14px;font-weight:500;}
.stars{display:flex;gap:3px;}
.cta-band{position:relative;overflow:hidden;padding:48px 24px;}
@media(min-width:769px){.cta-band{padding:56px 64px;}}
.cta-band .bg{position:absolute;inset:0;background-size:cover;background-position:center;}
.cta-band .wash{position:absolute;inset:0;background:oklch(0.78 0.13 85 / 0.82);}
.cta-band .row{position:relative;max-width:1000px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:24px;}
.cta-band h2{font-family:'Geist',sans-serif;font-weight:700;font-size:28px;color:oklch(0.16 0.01 45);margin:0 0 6px;}
.cta-band p{font-size:16px;color:oklch(0.24 0.02 45);margin:0;}
.cta-band .btns{display:flex;gap:14px;flex-wrap:wrap;}
.about-block{padding:56px 24px;max-width:1200px;margin:0 auto;display:grid;gap:56px;grid-template-columns:1fr;align-items:center;}
@media(min-width:769px){.about-block{padding:80px 64px;grid-template-columns:1fr 1fr;}}
@media(max-width:768px){.about-block .card-img{order:-1;}.svc-detail .row .img{order:-1!important;}}
.about-block p{font-size:17px;line-height:1.7;color:oklch(0.8 0.012 60);margin:0 0 24px;}
.notecard{font-size:14.5px;color:oklch(0.66 0.015 60);margin:14px 0 0;}
.svc-detail{padding:56px 24px;max-width:1200px;margin:0 auto;}
@media(min-width:769px){.svc-detail{padding:88px 64px;}}
.svc-detail .row{display:grid;gap:56px;grid-template-columns:1fr;align-items:start;}
@media(min-width:769px){.svc-detail .row{grid-template-columns:1.05fr .95fr;}}
.svc-detail .num{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:oklch(0.62 0.02 60);margin-bottom:14px;}
.svc-detail h2{font-family:'Geist',sans-serif;font-weight:600;font-size:30px;color:oklch(0.96 0.006 60);margin:0 0 20px;}
.svc-detail p.desc{font-size:17px;line-height:1.7;color:oklch(0.8 0.012 60);margin:0 0 26px;}
.svc-detail ul{list-style:none;padding:0;margin:0 0 30px;display:flex;flex-direction:column;gap:14px;}
.svc-detail li{display:flex;gap:12px;font-size:15.5px;line-height:1.6;color:oklch(0.82 0.012 60);}
.svc-detail li span.mark{color:oklch(0.78 0.13 85);flex-shrink:0;}
.svc-detail .lead{font-size:16.5px;line-height:1.6;color:oklch(0.9 0.008 60);font-weight:500;margin:0 0 20px;}
.svc-detail .img{position:relative;height:300px;overflow:hidden;border-radius:10px;}
@media(min-width:769px){.svc-detail .img{position:sticky;top:100px;height:460px;}}
.svc-detail .img img{width:100%;height:100%;object-fit:cover;}
.about-us-note{font-size:14.5px;color:oklch(0.66 0.015 60);}

/* contact page */
.contact-grid{display:grid;gap:56px;grid-template-columns:1fr;align-items:start;padding:56px 24px;max-width:1200px;margin:0 auto;}
@media(min-width:769px){.contact-grid{grid-template-columns:1.1fr .9fr;padding:88px 64px;}}
.contact-grid h2{font-family:'Geist',sans-serif;font-weight:600;font-size:26px;color:oklch(0.96 0.006 60);margin:0 0 24px;}
form{display:flex;flex-direction:column;gap:16px;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
label{display:block;font-size:13.5px;color:oklch(0.68 0.02 60);margin-bottom:6px;}
input,select,textarea{width:100%;box-sizing:border-box;background:oklch(0.19 0.012 45);border:1px solid oklch(0.32 0.012 45);border-radius:6px;color:oklch(0.94 0.008 60);padding:13px 14px;font-size:16px;font-family:'Geist',sans-serif;}
textarea{resize:vertical;}
.info-card{background:oklch(0.19 0.012 45);border:1px solid oklch(0.3 0.012 45);border-radius:10px;padding:28px;display:flex;flex-direction:column;gap:20px;}
.info-card .tag{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:oklch(0.6 0.02 60);}
.info-card a,.info-card .row2{display:flex;align-items:center;gap:12px;color:oklch(0.92 0.008 60);font-size:16px;}
.info-card .notes{padding-top:16px;border-top:1px solid oklch(0.28 0.012 45);display:flex;flex-direction:column;gap:8px;}
.info-card .notes span{color:oklch(0.68 0.02 60);font-size:14.5px;}
.map-frame{border-radius:10px;overflow:hidden;border:1px solid oklch(0.3 0.012 45);height:280px;}
.map-frame iframe{width:100%;height:100%;border:0;}

/* footer */
footer{background:oklch(0.12 0.008 45);border-top:1px solid oklch(0.28 0.012 45);padding:56px 24px 32px;}
@media(min-width:769px){footer{padding:56px 40px 32px;}}
.footer-grid{max-width:1160px;margin:0 auto;display:grid;gap:32px;grid-template-columns:1fr;}
@media(min-width:641px){.footer-grid{grid-template-columns:1.4fr 1fr 1fr;}}
.footer-brand{font-weight:700;font-size:20px;color:oklch(0.78 0.13 85);margin-bottom:10px;}
.footer-desc{color:oklch(0.66 0.02 60);font-size:15px;line-height:1.6;max-width:340px;margin:0;}
.footer-heading{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:oklch(0.6 0.02 60);margin-bottom:14px;}
.footer-links{display:flex;flex-direction:column;gap:9px;}
.footer-links a,.footer-contact a{color:oklch(0.88 0.008 60);font-size:15px;width:fit-content;background-image:linear-gradient(oklch(0.78 0.13 85),oklch(0.78 0.13 85));background-repeat:no-repeat;background-position:0 100%;background-size:0% 1px;transition:background-size .35s var(--ease);}
.footer-links a:hover,.footer-contact a:hover{background-size:100% 1px;color:oklch(0.94 0.008 60);}
.footer-contact{display:flex;flex-direction:column;gap:9px;font-size:15px;}
.footer-contact span{color:oklch(0.76 0.012 60);}
.footer-bottom{max-width:1160px;margin:40px auto 0;padding-top:24px;border-top:1px solid oklch(0.26 0.012 45);}
.footer-bottom span{color:oklch(0.5 0.015 60);font-size:13px;}
