:root{
  --ink:#E7E6E1;
  --ink-2:#DBDAD3;
  --paper:#201F1C;
  --paper-dim:#4A4945;
  --line:#CFCDC5;
  --violet:#69675F;
  --font-display:'Cardo', 'Frank Ruhl Libre', serif;
  --font-body:'Heebo', 'Inter', sans-serif;
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{
  background:linear-gradient(rgba(231,230,225,0.55), rgba(231,230,225,0.55)), url('images/wall-texture.jpg') center/cover no-repeat fixed;
  color:var(--paper); font-family:var(--font-body); line-height:1.7; overflow-x:hidden;
}
a{color:inherit; text-decoration:none;}
img{max-width:100%; display:block;}
.wrap{max-width:1100px; margin:0 auto; padding:0 24px;}
h1,h2,h3{font-family:var(--font-display); font-weight:400;}
::selection{background:var(--violet); color:var(--ink);}
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible{
  outline:1px solid var(--violet); outline-offset:3px;
}
.eyebrow{font-size:13px; letter-spacing:0.2em; color:var(--violet); font-weight:500; margin-bottom:14px; display:block;}
section{padding:100px 0;}

/* ---------- HEADER / NAV ---------- */
header.site-header{
  position:fixed; inset-inline:0; top:0; z-index:50; padding:18px 0;
  background:linear-gradient(to bottom, rgba(231,230,225,0.94), rgba(231,230,225,0));
  transition:background .3s ease;
}
header.site-header.scrolled{background:rgba(231,230,225,0.94); backdrop-filter:blur(6px); border-bottom:1px solid var(--line);}
nav.wrap{display:flex; align-items:center; justify-content:space-between; gap:20px;}
.brand{font-family:var(--font-display); font-size:19px; letter-spacing:0.02em; white-space:nowrap;}
.brand span{color:var(--violet);}
.nav-links{display:flex; gap:22px; font-size:13.5px; flex-wrap:wrap;}
.nav-links a{position:relative; padding:4px 0; color:var(--paper-dim); transition:color .25s; white-space:nowrap;}
.nav-links a:hover, .nav-links a.active{color:var(--paper);}
.nav-links a::after{content:''; position:absolute; inset-inline-start:0; bottom:0; width:0; height:1px; background:var(--violet); transition:width .3s ease;}
.nav-links a:hover::after, .nav-links a.active::after{width:100%;}
.nav-right{display:flex; align-items:center; gap:14px;}
.lang-toggle{
  font-size:12.5px; border:1px solid var(--line); padding:7px 13px; border-radius:2px; cursor:pointer;
  background:none; color:var(--paper-dim); transition:border-color .25s, color .25s;
}
.lang-toggle:hover{border-color:var(--violet); color:var(--paper);}
.nav-cta{font-size:13px; border:1px solid var(--line); padding:9px 16px; border-radius:2px; transition:border-color .25s, color .25s; white-space:nowrap;}
.nav-cta:hover{border-color:var(--violet); color:var(--violet);}
.burger{display:none; flex-direction:column; gap:5px; background:none; border:none; cursor:pointer;}
.burger span{width:22px; height:1px; background:var(--paper);}
.mobile-menu{display:none; position:fixed; inset:0; background:var(--ink); z-index:55; flex-direction:column; align-items:center; justify-content:center; gap:26px;}
.mobile-menu.open{display:flex;}
.mobile-menu a{font-family:var(--font-display); font-size:24px;}
@media (max-width:900px){
  .nav-links{display:none;}
  .nav-cta{display:none;}
  .burger{display:flex;}
}

/* ---------- PAGE HERO (inner pages) ---------- */
.page-hero{padding:150px 0 60px; text-align:center; background:rgba(255,255,255,0.4); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
.page-hero h1{font-size:clamp(34px,6vw,58px); font-weight:300;}
.page-hero p{color:var(--paper-dim); margin-top:14px; max-width:520px; margin-inline:auto;}

.section-head{max-width:640px; margin-bottom:48px;}
.section-head h2{font-size:clamp(28px,4vw,42px); font-weight:300;}
.section-head p{color:var(--paper-dim); margin-top:12px; font-size:15px;}

.reveal{opacity:0; transform:translateY(24px); transition:opacity .8s ease, transform .8s ease;}
.reveal.in{opacity:1; transform:none;}

.btn{font-family:var(--font-body); font-size:14px; padding:14px 28px; border-radius:2px; letter-spacing:0.02em; cursor:pointer; transition:all .25s ease; display:inline-block; border:1px solid transparent;}
.btn-primary{background:var(--paper); color:var(--ink); border-color:var(--paper);}
.btn-primary:hover{background:var(--violet); border-color:var(--violet); color:var(--ink);}
.btn-ghost{border:1px solid var(--line); color:var(--paper);}
.btn-ghost:hover{border-color:var(--paper);}
.btn:disabled{opacity:0.4; cursor:not-allowed;}

/* ---------- GALLERY ---------- */
.gallery-grid{display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:14px; background:transparent;}
.g-item{background:transparent; aspect-ratio:4/5; position:relative; overflow:hidden; display:flex; align-items:center; justify-content:center;}
.g-item svg{width:54%; height:54%; stroke:var(--paper-dim); fill:none; stroke-width:1.2; transition:stroke .4s ease, transform .5s ease;}
.g-item:hover svg{stroke:var(--violet); transform:scale(1.06);}
.g-item img{width:100%; height:100%; object-fit:cover; filter:grayscale(80%) contrast(1.05); transition:filter .5s ease, transform .5s ease;}
.g-item:hover img{filter:grayscale(0%) contrast(1.02); transform:scale(1.04);}
.g-caption{position:absolute; inset-inline:0; bottom:0; padding:16px 18px; display:flex; justify-content:space-between; align-items:flex-end; background:linear-gradient(to top, rgba(0,0,0,0.55), transparent); font-size:12px; color:var(--paper-dim); opacity:0; transform:translateY(8px); transition:opacity .35s ease, transform .35s ease;}
.g-item:hover .g-caption{opacity:1; transform:none;}
.g-caption b{color:var(--paper); font-weight:400; font-family:var(--font-display); font-size:14px;}
.g-item.before-after{display:grid; grid-template-columns:1fr 1fr;}
.g-item.before-after > div{display:flex; align-items:center; justify-content:center; position:relative;}
.g-item.before-after > div:first-child{border-inline-end:1px solid var(--line);}
.ba-label{position:absolute; top:8px; inset-inline-start:8px; font-size:10px; letter-spacing:0.1em; color:var(--paper-dim);}

/* ---------- TAGS ---------- */
.tags{display:flex; flex-wrap:wrap; gap:12px;}
.tag{border:1px solid var(--line); padding:11px 20px; border-radius:2px; font-size:13.5px; color:var(--paper-dim); transition:border-color .25s, color .25s;}
.tag:hover{border-color:var(--violet); color:var(--paper);}

/* ---------- FORMS ---------- */
label{font-size:12.5px; color:var(--paper-dim); letter-spacing:0.02em; margin-bottom:8px; display:block;}
.required-star{color:var(--violet);}
.field-hint{font-size:11.5px; color:var(--paper-dim); opacity:0.85; margin-top:3px; display:block;}
.form-section + .form-section{margin-top:22px;}
.mini-cal-panel{border:1px solid var(--line); padding:16px; max-width:320px;}
.mini-cal-panel .cal-month-head{margin-bottom:14px;}
.mini-cal-panel .cal-month-head span{font-size:16px; min-width:120px;}
.mini-cal-panel .cal-grid .cal-cell{cursor:pointer; font-size:13px;}
.mini-cal-panel .cal-grid .cal-cell:hover{color:var(--violet);}
.mini-cal-panel .cal-grid .cal-cell.selected .num::after{content:''; position:absolute; inset:-3px; border:1px solid var(--violet); border-radius:50%;}
.decl-list{list-style:none; padding:0; margin:0;}
.decl-list li{position:relative; padding-inline-start:16px; margin-bottom:8px; font-size:13.5px; color:var(--paper-dim); line-height:1.6;}
.decl-list li::before{content:'–'; position:absolute; inset-inline-start:0;}
.file-drop{border:1px dashed var(--line); padding:16px; font-size:13px; color:var(--paper-dim); text-align:center; cursor:pointer; transition:border-color .2s;}
.file-drop:hover{border-color:var(--violet);}
.file-drop input[type=file]{display:none;}
.file-names{margin-top:8px; font-size:12px; color:var(--paper-dim);}
input, select, textarea{
  width:100%; background:transparent; border:none; border-bottom:1px solid var(--line);
  color:var(--paper); font-family:var(--font-body); font-size:15px; padding:9px 2px; transition:border-color .25s;
}
input::placeholder, textarea::placeholder{color:#5A5A5C;}
input:focus, select:focus, textarea:focus{border-color:var(--violet); outline:none;}
select{cursor:pointer;}
select option{background:#FFFFFF; color:var(--paper);}
.field-error{color:var(--violet); font-size:11.5px; margin-top:5px; display:block;}
.field-invalid{border-bottom-color:var(--violet) !important;}
select option{background:var(--ink-2); color:var(--paper);}
textarea{resize:vertical; min-height:80px;}
.form-row{display:grid; grid-template-columns:1fr 1fr; gap:18px;}
.field{margin-bottom:18px;}
@media (max-width:700px){.form-row{grid-template-columns:1fr;}}

.checkline{display:flex; align-items:flex-start; gap:10px; margin-bottom:14px; font-size:14px; color:var(--paper-dim);}
.checkline input[type=checkbox]{width:16px; height:16px; accent-color:var(--violet); flex-shrink:0; margin-top:2px;}

/* ---------- WIZARD ---------- */
.wizard-steps{display:flex; gap:0; margin-bottom:48px; border:1px solid var(--line); background:rgba(255,255,255,0.5);}
.wizard-step{flex:1; text-align:center; padding:16px 8px; font-size:12.5px; color:var(--paper-dim); border-inline-end:1px solid var(--line); position:relative;}
.wizard-step:last-child{border-inline-end:none;}
.wizard-step b{display:block; font-family:var(--font-display); font-size:20px; font-weight:400; color:var(--paper-dim); margin-bottom:4px;}
.wizard-step.active{color:var(--paper); background:var(--ink-2);}
.wizard-step.active b{color:var(--violet);}
.wizard-step.done b{color:var(--violet);}
.wizard-panel{display:none;}
.wizard-panel.active{display:block;}

.calendar-list{display:flex; flex-direction:column; gap:14px;}
.cal-day{border:1px solid var(--line); padding:18px 20px;}
.cal-day-title{font-family:var(--font-display); font-size:17px; margin-bottom:12px;}
.cal-slots{display:flex; gap:10px; flex-wrap:wrap;}
.cal-slot{border:1px solid var(--line); padding:9px 16px; font-size:13.5px; border-radius:2px; cursor:pointer; color:var(--paper-dim); transition:border-color .2s, color .2s, background .2s;}
.cal-slot:hover{border-color:var(--violet); color:var(--paper);}
.cal-slot.selected{background:var(--violet); border-color:var(--violet); color:var(--ink);}

.cal-panel{background:rgba(255,255,255,0.55); border:1px solid var(--line); padding:28px 20px 20px;}

.cal-month-head{display:flex; align-items:center; justify-content:center; gap:24px; margin-bottom:8px;}
.cal-month-head span{font-family:var(--font-display); font-size:30px; min-width:200px; text-align:center; letter-spacing:0.03em;}
.cal-month-head button{background:none; border:none; font-size:18px; color:var(--paper-dim); cursor:pointer; transition:color .2s;}
.cal-month-head button:hover{color:var(--paper);}

.cal-legend{display:flex; justify-content:center; gap:22px; margin-bottom:30px; font-size:12px; color:var(--paper-dim);}
.cal-legend span{display:inline-flex; align-items:center; gap:6px;}
.cal-legend .dot{width:16px; height:16px; border-radius:50%; display:inline-block; position:relative;}
.cal-legend .dot.available{background:none; border:1px solid var(--violet);}
.cal-legend .dot.booked{background:var(--paper-dim); opacity:0.3;}
.cal-legend .dot.closed{background:none;}
.cal-legend .dot.closed::after{content:''; position:absolute; top:50%; left:-2px; right:-2px; height:1px; background:var(--paper-dim); transform:rotate(-25deg);}

.cal-weekdays{display:grid; grid-template-columns:repeat(7,1fr); margin-bottom:14px;}
.cal-wd{text-align:center; font-size:11px; letter-spacing:0.08em; text-transform:uppercase; color:var(--paper-dim);}
.cal-grid{display:grid; grid-template-columns:repeat(7,1fr); row-gap:10px;}
.cal-cell{aspect-ratio:1; display:flex; align-items:center; justify-content:center; font-size:15px; color:var(--paper); position:relative;}
.cal-cell.empty{visibility:hidden;}
.cal-cell .num{position:relative; display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; border-radius:50%;}
.cal-cell.closed{color:var(--line); cursor:default;}
.cal-cell.closed .num::after{content:''; position:absolute; top:50%; left:-3px; right:-3px; height:1px; background:var(--line); transform:rotate(-25deg);}
.cal-cell.booked{color:var(--paper); cursor:not-allowed;}
.cal-cell.booked .num{background:var(--line);}
.cal-cell.available{cursor:pointer; font-weight:600; transition:color .2s;}
.cal-cell.available:hover{color:var(--violet);}
.cal-cell.available.selected{color:var(--paper); font-weight:700;}
.cal-cell.available.selected .num::after{
  content:''; position:absolute; inset:-3px; border:1px solid var(--violet); border-radius:50%; pointer-events:none;
}

.soft-panel{background:rgba(255,255,255,0.5); border:1px solid var(--line); padding:24px;}
@media (max-width:480px){
  .cal-cell{font-size:13px;}
  .cal-legend{gap:14px; font-size:11px;}
  .cal-month-head span{font-size:24px; min-width:150px;}
}

.signature-box{border:1px dashed var(--line); background:var(--ink-2); touch-action:none; cursor:crosshair; width:100%; height:180px;}
.sig-actions{display:flex; justify-content:space-between; align-items:center; margin-top:10px;}
.sig-actions button{background:none; border:none; color:var(--paper-dim); font-size:13px; cursor:pointer; text-decoration:underline;}

.summary-card{border:1px solid var(--line); padding:24px; margin-top:20px; font-size:14px; color:var(--paper-dim);}
.summary-card div{display:flex; justify-content:space-between; padding:8px 0; border-bottom:1px solid var(--line);}
.summary-card div:last-child{border-bottom:none;}
.summary-card b{color:var(--paper); font-weight:400;}

.success-box{text-align:center; padding:60px 20px; border:1px dashed var(--violet); display:none;}
.success-box.show{display:block;}
.success-box h3{font-size:24px; font-weight:300; margin-bottom:12px;}
.success-box p{color:var(--paper-dim); font-size:14px; max-width:420px; margin-inline:auto;}

/* ---------- INFO CARDS ---------- */
.info-grid{display:grid; grid-template-columns:repeat(auto-fit, minmax(200px,1fr)); gap:24px;}
.contact-grid{display:grid; grid-template-columns:1fr 1fr; gap:56px;}
@media (max-width:760px){.contact-grid{grid-template-columns:1fr; gap:32px;}}
.info-card{border:1px solid var(--line); padding:24px;}
.info-card h3{font-size:16px; font-weight:500; font-family:var(--font-body); margin-bottom:8px; color:var(--violet);}
.info-card p{color:var(--paper-dim); font-size:14px;}

/* ---------- DIVIDER ---------- */
.divider-line{width:100%; max-width:1100px; margin:0 auto; padding:0 24px;}
.divider-line svg{width:100%; height:36px; opacity:0.4;}
.divider-line path{fill:none; stroke:var(--line); stroke-width:1; stroke-dasharray:900; stroke-dashoffset:900; transition:stroke-dashoffset 1.6s ease;}
.divider-line path.in{stroke-dashoffset:0;}

/* ---------- ABOUT ---------- */
.about-grid{display:grid; grid-template-columns:0.8fr 1.2fr; gap:60px; align-items:center;}
.about-portrait{aspect-ratio:3/4; background:var(--ink-2); border:1px solid var(--line); display:flex; align-items:center; justify-content:center;}
.about-portrait svg{width:44%; stroke:var(--violet); fill:none; stroke-width:1;}
.about-text p{color:var(--paper-dim); margin-bottom:16px; font-size:15px;}
.about-text p.lead{color:var(--paper); font-size:19px; font-family:var(--font-display); line-height:1.5;}
.stat-row{display:flex; gap:36px; margin-top:28px; border-top:1px solid var(--line); padding-top:22px;}
.stat-row div b{display:block; font-family:var(--font-display); font-size:26px; font-weight:400; color:var(--violet);}
.stat-row div span{font-size:12.5px; color:var(--paper-dim);}
@media (max-width:760px){.about-grid{grid-template-columns:1fr;} .about-portrait{max-width:240px; margin:0 auto;}}

/* ---------- FOOTER ---------- */
footer.site-footer{border-top:1px solid var(--line); padding:48px 0 28px; margin-top:60px; background:rgba(255,255,255,0.65);}
.footer-grid{display:flex; justify-content:space-between; flex-wrap:wrap; gap:26px; margin-bottom:34px;}
.footer-brand{font-family:var(--font-display); font-size:20px;}
.footer-links{display:flex; gap:22px; font-size:13px; color:var(--paper-dim); flex-wrap:wrap;}
.footer-icons{display:flex; gap:22px; align-items:center;}
.footer-icons a{color:var(--paper); transition:color .25s;}
.footer-icons a:hover{color:var(--violet);}
.footer-icons svg{width:20px; height:20px;}
.footer-links a:hover{color:var(--violet);}
.footer-bottom{border-top:1px solid var(--line); padding-top:20px; display:flex; justify-content:space-between; font-size:12px; color:var(--paper-dim); flex-wrap:wrap; gap:8px;}

@media (prefers-reduced-motion: reduce){*{animation-duration:0.01ms !important; transition-duration:0.01ms !important;}}
