
:root { --ease: cubic-bezier(0.22,1,0.36,1); --gold: #B9B979; --bg: #00132A; --bg2: #041F3C; --bg3: #001B38; --text: #E8E9E4; --muted: #A9B1B9; --dim: #8C95A0; }
*,*::before,*::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin:0; background:var(--bg); color:var(--text); font-family:Geist,system-ui,sans-serif; font-size:18px; line-height:1.6; -webkit-font-smoothing:antialiased; overflow-x:hidden; }
a { color:var(--gold); text-decoration:none; }
a:hover { color:#D8D8A6; }
img { display:block; max-width:100%; }
input,button,select,textarea { font:inherit; color:inherit; }
:focus-visible { outline:2px solid var(--gold); outline-offset:3px; }
::selection { background:var(--gold); color:var(--bg); }

/* Loader */
.loader { position:fixed; inset:0; z-index:9000; background:var(--bg); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:22px; transition:opacity .6s var(--ease),visibility .6s var(--ease); }
.loader.hidden { opacity:0; visibility:hidden; pointer-events:none; }
.loader-logo { width:128px; height:128px; border-radius:6px; animation:rise .8s var(--ease) both; }
.loader-bar-wrap { width:210px; height:2px; background:rgba(185,185,121,.18); overflow:hidden; }
.loader-bar { width:100%; height:100%; background:var(--gold); transform-origin:left; animation:buildline 1.5s var(--ease) forwards; }
.loader-text { font-size:12px; letter-spacing:.34em; text-transform:uppercase; color:var(--dim); }

/* Grain */
.grain { position:fixed; inset:-6%; z-index:30; 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='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/></filter><rect width='160' height='160' filter='url(%23n)'/></svg>"); background-size:160px 160px; animation:grainshift 7s steps(6) infinite; }

/* Header */
header { position:sticky; top:0; z-index:60; backdrop-filter:blur(14px); background:rgba(0,19,42,.82); border-bottom:1px solid rgba(185,185,121,.16); }
.header-inner { display:flex; align-items:center; gap:18px; padding:12px 24px; }
.brand { display:flex; align-items:center; gap:12px; flex:0 0 auto; }
.brand-logo { width:46px; height:46px; border-radius:4px; }
.brand-text { display:flex; flex-direction:column; line-height:1.1; }
.brand-name { font-family:'Cormorant Garamond',Georgia,serif; font-size:21px; letter-spacing:.04em; color:#EDEEE7; }
.brand-sub { font-size:10px; letter-spacing:.24em; text-transform:uppercase; color:var(--dim); }
nav[aria-label="Main"] { display:flex; gap:26px; margin-left:28px; }
nav[aria-label="Main"] a { font-size:15px; letter-spacing:.06em; text-transform:uppercase; color:#D6D8D2; background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0 100%; background-size:0% 1px; transition:background-size .4s var(--ease),color .3s var(--ease); padding-bottom:3px; }
nav[aria-label="Main"] a:hover { background-size:100% 1px; color:var(--gold); }
.header-right { margin-left:auto; display:flex; align-items:center; gap:10px; }

/* Contact pill */
.contact-wrap { position:relative; }
.contact-pill { display:flex; align-items:center; gap:9px; padding:9px 15px; border-radius:999px; border:1px solid rgba(185,185,121,.32); color:var(--text); font-size:15px; letter-spacing:.02em; transition:background .35s var(--ease),border-color .35s var(--ease); }
.contact-pill:hover { background:rgba(185,185,121,.12); border-color:var(--gold); color:var(--text); }
.contact-menu { position:absolute; right:0; top:calc(100% + 10px); min-width:210px; background:var(--bg2); border:1px solid rgba(185,185,121,.28); border-radius:12px; padding:6px; box-shadow:0 24px 50px rgba(0,0,0,.55); opacity:0; visibility:hidden; transform:translateY(-6px); transition:opacity .3s var(--ease),transform .3s var(--ease),visibility .3s; pointer-events:none; }
.contact-wrap:hover .contact-menu, .contact-menu.open { opacity:1; visibility:visible; transform:none; pointer-events:auto; }
.contact-menu a { display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:8px; color:var(--text); font-size:15px; transition:background .25s var(--ease); }
.contact-menu a:hover { background:rgba(185,185,121,.14); color:var(--text); }
.btn-cta { padding:12px 22px; border-radius:999px; background:var(--gold); color:var(--bg); font-size:15px; font-weight:600; letter-spacing:.03em; white-space:nowrap; transition:transform .35s var(--ease),box-shadow .35s var(--ease),background .35s var(--ease); }
.btn-cta:hover { transform:translateY(-2px); box-shadow:0 14px 30px rgba(185,185,121,.28); background:#CBCB8C; color:var(--bg); }
.burger { display:none; align-items:center; justify-content:center; width:42px; height:42px; border:0; background:transparent; border-radius:10px; cursor:pointer; }
.burger:hover { background:rgba(185,185,121,.14); }

/* Mobile nav */
.mobile-nav { max-height:0; overflow:hidden; transition:max-height .45s var(--ease); background:rgba(4,31,60,.98); }
.mobile-nav.open { max-height:320px; }
.mobile-nav a { display:block; padding:14px 24px; font-size:19px; border-bottom:1px solid rgba(255,255,255,.06); color:var(--text); }
.mobile-nav a:last-child { border-bottom:0; }
.mobile-nav a:hover { color:var(--gold); }

/* Container */
.container { max-width:1400px; margin:0 auto; padding-left:24px; padding-right:24px; }

/* Keyframes */
@keyframes kb { from{transform:scale(1) translate3d(0,0,0)} to{transform:scale(1.16) translate3d(0,-1.5%,0)} }
@keyframes grainshift { 0%{transform:translate3d(0,0,0)} 25%{transform:translate3d(-2%,1%,0)} 50%{transform:translate3d(1%,-2%,0)} 75%{transform:translate3d(-1%,-1%,0)} 100%{transform:translate3d(0,0,0)} }
@keyframes buildline { 0%{transform:scaleX(0)} 55%{transform:scaleX(1)} 100%{transform:scaleX(1)} }
@keyframes rise { from{opacity:0;transform:translateY(14px)} to{opacity:1;transform:none} }

/* Reveal */
.reveal { opacity:0; transform:translateY(26px); transition:opacity .8s var(--ease),transform .8s var(--ease); }
.reveal.visible { opacity:1; transform:none; }

/* Hero */
.hero { position:relative; min-height:88vh; display:flex; align-items:flex-end; overflow:hidden; }
.hero-bg { position:absolute; inset:-8% 0; }
.hero-bg img { width:100%; height:100%; object-fit:cover; animation:kb 26s var(--ease) infinite alternate; }
.hero-overlay { position:absolute; inset:0; background:linear-gradient(180deg,rgba(0,19,42,.72) 0%,rgba(0,19,42,.58) 40%,rgba(0,19,42,.94) 100%); }
.hero-inner { position:relative; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.42fr); gap:48px; align-items:end; padding-top:120px; padding-bottom:88px; }
.hero h1 { margin:0; font-family:'Cormorant Garamond',Georgia,serif; font-weight:300; font-size:clamp(42px,6.4vw,92px); line-height:1.02; letter-spacing:-.01em; color:#F2F3EC; text-wrap:balance; }
.hero-right { display:flex; flex-direction:column; gap:26px; padding-bottom:10px; }
.eyebrow { font-size:12px; letter-spacing:.34em; text-transform:uppercase; color:var(--gold); margin-bottom:22px; }
.lead { margin:0; font-size:19px; color:#C7CCD2; max-width:46ch; }
.hint { margin:0; font-size:15px; color:var(--dim); }
.btn-row { display:flex; flex-wrap:wrap; gap:14px; align-items:center; }
.btn-primary { display:inline-flex; align-items:center; padding:15px 28px; border-radius:999px; background:var(--gold); color:var(--bg); font-weight:600; transition:transform .35s var(--ease),box-shadow .35s var(--ease),background .35s var(--ease); border:0; cursor:pointer; font-size:inherit; }
.btn-primary:hover { transform:translateY(-3px); box-shadow:0 18px 36px rgba(185,185,121,.3); background:#CBCB8C; color:var(--bg); }
.btn-ghost { display:inline-flex; align-items:center; padding:15px 26px; border-radius:999px; border:1px solid rgba(232,233,228,.28); color:var(--text); transition:border-color .35s var(--ease),background .35s var(--ease); }
.btn-ghost:hover { border-color:var(--gold); background:rgba(185,185,121,.1); color:var(--text); }

/* Stats */
.stats-bar { border-bottom:1px solid rgba(255,255,255,.06); }
.stats-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:32px; padding-top:56px; padding-bottom:56px; }
.stat { display:flex; flex-direction:column; gap:6px; }
.stat-num { font-family:'Cormorant Garamond',Georgia,serif; font-size:60px; line-height:1; color:var(--gold); }
.stat-label { font-size:14px; letter-spacing:.2em; text-transform:uppercase; color:var(--dim); }

/* Services preview */
.services-preview { position:relative; }
.services-header { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:48px; align-items:end; padding-top:96px; padding-bottom:40px; }
.serif-h2 { margin:0; font-family:'Cormorant Garamond',Georgia,serif; font-weight:300; font-size:clamp(34px,4vw,58px); line-height:1.08; color:#F2F3EC; }
.services-header .lead { justify-self:end; margin-bottom:10px; }
.cards-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:28px; padding-bottom:96px; }
.card { display:flex; flex-direction:column; border:1px solid rgba(185,185,121,.16); border-radius:4px; overflow:hidden; background:var(--bg2); color:var(--text); transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .35s var(--ease); }
.card:hover { transform:translateY(-6px); box-shadow:0 26px 54px rgba(0,0,0,.45); border-color:#8E8E56; }
.card:hover .card-img img { transform:scale(1.06); }
.card:hover .arrow { transform:translateX(4px); }
.card-img { overflow:hidden; aspect-ratio:16/10; }
.card-img img { width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease); }
.card-body { padding:30px 28px 32px; display:flex; flex-direction:column; gap:14px; }
.card-body h3 { margin:0; font-family:'Cormorant Garamond',Georgia,serif; font-weight:400; font-size:32px; color:#F2F3EC; }
.card-body p { margin:0; color:var(--muted); font-size:17px; }
.card-link { display:flex; align-items:center; gap:10px; font-size:14px; letter-spacing:.18em; text-transform:uppercase; color:var(--gold); }
.arrow { display:inline-block; transition:transform .3s var(--ease); }

/* Craft */
.craft-strip { border-top:1px solid rgba(255,255,255,.06); }
.craft-grid { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); align-items:center; }
.craft-text { padding:96px 48px 96px 0; display:flex; flex-direction:column; gap:20px; }
.craft-text .eyebrow { margin-bottom:0; }
.serif-pull { margin:0; font-family:'Cormorant Garamond',Georgia,serif; font-weight:300; font-size:clamp(28px,3.2vw,46px); line-height:1.18; color:#F2F3EC; max-width:20ch; }
.body-muted { margin:0; color:var(--muted); max-width:44ch; }
.craft-img { height:100%; min-height:480px; overflow:hidden; }
.craft-img img { width:100%; height:100%; object-fit:cover; }

/* Reviews */
.reviews-section { border-top:1px solid rgba(255,255,255,.06); }
.reviews-inner { max-width:1000px; margin:0 auto; padding:96px 24px 110px; display:flex; flex-direction:column; align-items:center; gap:30px; text-align:center; }
.stars { letter-spacing:.3em; color:var(--gold); font-size:20px; }
.review-quote { margin:0; min-height:150px; font-family:'Cormorant Garamond',Georgia,serif; font-weight:300; font-size:clamp(24px,3vw,38px); line-height:1.3; color:#F2F3EC; transition:opacity .5s var(--ease); }
.review-author { display:flex; align-items:center; gap:14px; }
.review-avatar { width:52px; height:52px; border-radius:999px; object-fit:cover; }
.review-name { font-size:16px; color:var(--text); text-align:left; }
.review-city { font-size:14px; color:var(--dim); text-align:left; }
.review-dots { display:flex; gap:10px; }
.dot { width:9px; height:9px; border-radius:999px; border:0; padding:0; cursor:pointer; background:rgba(185,185,121,.3); transition:background .3s var(--ease); }
.dot--active { background:var(--gold); }
.disclaimer { margin:0; font-size:14px; color:#6F7883; max-width:60ch; }

/* Page hero */
.page-hero { position:relative; min-height:56vh; display:flex; align-items:flex-end; overflow:hidden; }
.page-hero--short { min-height:50vh; }
.page-hero-inner { position:relative; padding-top:130px; padding-bottom:70px; }
.page-hero-inner h1 { margin:0; font-family:'Cormorant Garamond',Georgia,serif; font-weight:300; font-size:clamp(36px,5vw,74px); line-height:1.05; color:#F2F3EC; max-width:22ch; }
.page-hero-inner .lead { margin:16px 0 0; }
.page-hero .hero-overlay { background:linear-gradient(180deg,rgba(0,19,42,.74),rgba(0,19,42,.94)); }

/* About */
.about-body { padding:88px 0 40px; }
.about-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.8fr); gap:64px; }
.about-copy { margin:0; font-size:20px; line-height:1.7; color:#C7CCD2; }
.about-aside { display:flex; flex-direction:column; gap:14px; align-self:start; border-left:1px solid rgba(185,185,121,.24); padding-left:28px; }
.about-aside .eyebrow { margin-bottom:0; }
.detail-list { margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:6px; color:var(--muted); }
.about-img-full { padding:40px 0 110px; }

/* Services */
.service-section { padding:96px 0; }
.service-section + .service-section { padding-top:0; }
.service-grid { display:grid; grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr); gap:64px; align-items:center; }
.service-grid--rev { grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); }
.service-grid--rev .service-text { order:-1; }
.service-img img { width:100%; height:100%; object-fit:cover; }
.service-text { display:flex; flex-direction:column; gap:22px; }
.service-text h2 { margin:0; font-family:'Cormorant Garamond',Georgia,serif; font-weight:300; font-size:clamp(30px,3.6vw,52px); line-height:1.1; color:#F2F3EC; }
.service-text p { margin:0; color:#C7CCD2; }
.service-list { margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:12px; color:var(--muted); }
.service-list li { display:grid; grid-template-columns:16px 1fr; gap:12px; }
.service-list li::before { content:'—'; color:var(--gold); }
.inline-link { color:var(--gold); background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0 100%; background-size:0% 1px; transition:background-size .4s var(--ease); }
.inline-link:hover { background-size:100% 1px; color:var(--gold); }

/* Contact */
.contact-body { padding:80px 0 40px; }
.contact-grid { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:64px; }
.contact-info { display:flex; flex-direction:column; gap:26px; }
.contact-links { display:flex; flex-direction:column; gap:14px; }
.contact-link { display:flex; align-items:center; gap:12px; font-size:19px; color:#C7CCD2; transition:color .3s var(--ease); }
.contact-link:hover { color:var(--gold); }
.contact-link--big { font-size:22px; color:var(--text); }
.contact-form { display:grid; grid-template-columns:1fr 1fr; gap:18px; background:var(--bg2); border:1px solid rgba(185,185,121,.16); padding:34px; border-radius:4px; }
.form-row { grid-column:1 / -1; display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.form-field { grid-column:1 / -1; display:flex; flex-direction:column; gap:8px; font-size:14px; letter-spacing:.16em; text-transform:uppercase; color:var(--dim); }
.form-row .form-field { grid-column:auto; }
.form-field input,.form-field select,.form-field textarea { background:transparent; border:0; border-bottom:1px solid rgba(255,255,255,.16); padding:10px 0; font-size:18px; color:#EDEEE7; text-transform:none; letter-spacing:normal; }
.form-field textarea { resize:vertical; }
.contact-form .btn-primary { grid-column:1 / -1; justify-self:start; margin-top:8px; }
.form-note { grid-column:1 / -1; font-size:15px; color:var(--dim); }
.map-section { padding:20px 0 110px; }
.map-wrap { border:1px solid rgba(185,185,121,.16); overflow:hidden; border-radius:4px; }

/* Footer */
footer { border-top:1px solid rgba(185,185,121,.18); background:var(--bg3); position:relative; z-index:10; }
.footer-grid { display:grid; grid-template-columns:minmax(0,1.2fr) repeat(3,minmax(0,.7fr)); gap:44px; padding-top:72px; padding-bottom:34px; }
.footer-brand { display:flex; flex-direction:column; gap:18px; }
.footer-brand img { width:72px; height:72px; border-radius:4px; }
.footer-brand p { margin:0; color:var(--dim); font-size:16px; max-width:34ch; }
.footer-col { display:flex; flex-direction:column; gap:12px; }
.footer-label { font-size:12px; letter-spacing:.28em; text-transform:uppercase; color:var(--gold); }
.footer-col a { color:#C7CCD2; font-size:16px; align-self:start; background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0 100%; background-size:0% 1px; transition:background-size .4s var(--ease),color .3s var(--ease); }
.footer-col a:hover { background-size:100% 1px; color:var(--gold); }
.footer-note { color:var(--dim); font-size:16px; }
.footer-bottom { display:flex; flex-wrap:wrap; gap:14px; justify-content:space-between; color:#6F7883; font-size:14px; border-top:1px solid rgba(255,255,255,.06); padding-top:22px; padding-bottom:44px; }

/* Social buttons */
.social-row { display:flex; gap:10px; }
.social-btn { width:46px; height:46px; border-radius:999px; border:1px solid rgba(185,185,121,.28); display:flex; align-items:center; justify-content:center; transition:box-shadow .35s var(--ease),background .35s var(--ease); }
.social-btn:hover { background:rgba(185,185,121,.14); box-shadow:0 0 22px rgba(185,185,121,.28); }
.social-btn--text { width:auto; height:46px; padding:0 18px; font-size:14px; letter-spacing:.14em; text-transform:uppercase; color:var(--gold); }
.social-btn--text:hover { color:var(--gold); }

/* Parallax */
.parallax { will-change:transform; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after { animation:none !important; transition:none !important; }
  .reveal { opacity:1 !important; transform:none !important; }
}

/* Responsive */
@media (max-width:1080px) {
  nav[aria-label="Main"] { display:none; }
  .burger { display:flex; }
  .btn-cta { display:none; }
}
@media (max-width:900px) {
  .hero-inner,.services-header,.craft-grid,.about-grid,.contact-grid,.service-grid,.service-grid--rev,.footer-grid { grid-template-columns:1fr; }
  .service-grid--rev .service-text { order:0; }
  .hero { min-height:70vh; }
  .hero-inner { padding-top:80px; padding-bottom:56px; }
  .craft-text { padding:72px 0 48px; }
  .craft-img { min-height:320px; }
  .contact-form { grid-template-columns:1fr; }
  .form-row { grid-template-columns:1fr; }
  .form-row .form-field { grid-column:auto; }
}
@media (max-width:720px) {
  .phone-text { display:none; }
  .footer-grid { grid-template-columns:1fr 1fr; }
}
@media (max-width:480px) {
  .footer-grid { grid-template-columns:1fr; }
  .contact-form { padding:22px 18px; }
  .btn-row { flex-direction:column; align-items:flex-start; }
}
