:root{--paper:#FFFFFF;--wash:#F7F5FD;--wash2:#EFEBFA;--lav:#8E7CD4;--lavink:#6552A8;--plum:#3B3160;--ink:#1C1A26;--slate:#66627A;--line:#E4DFF2;--wrap:1080px;--gut:clamp(20px,5vw,44px);--sec:clamp(56px,8vw,96px);--r:14px;--fh:"Fraunces",Georgia,serif;--fb:"Plus Jakarta Sans",-apple-system,"Segoe UI",sans-serif}
*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--fb);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}
a{color:inherit}a:focus-visible{outline:2.5px solid var(--lav);outline-offset:2px}
.wrap{max-width:var(--wrap);margin:0 auto;padding-left:var(--gut);padding-right:var(--gut)}
.band{padding-top:var(--sec);padding-bottom:var(--sec)}.band--wash{background:var(--wash)}
.masthead{display:flex;align-items:center;justify-content:space-between;gap:14px;padding-top:20px;padding-bottom:20px;flex-wrap:wrap}
.logo{font-family:var(--fh);font-weight:600;font-size:22px;text-decoration:none;letter-spacing:-.01em}.logo span{color:var(--lav)}
.nav{display:flex;gap:4px 18px;flex-wrap:wrap;font-size:14.5px;font-weight:600}
.nav a{text-decoration:none;color:var(--slate)}.nav a:hover{color:var(--lavink)}
.tel{font-size:14.5px;font-weight:600;text-decoration:none;color:var(--plum)}.tel:hover{color:var(--lavink)}
.crumbs{font-size:13px;color:var(--slate);padding-top:10px}.crumbs a{text-decoration:none}.crumbs a:hover{color:var(--lavink)}
.eyebrow{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--lavink);margin:0 0 14px}
h1{font-family:var(--fh);font-weight:500;font-size:clamp(34px,6.4vw,56px);line-height:1.06;letter-spacing:-.02em;margin:0 0 14px;max-width:20ch;font-variation-settings:"SOFT" 40}
h2{font-family:var(--fh);font-weight:500;font-size:clamp(25px,3.8vw,34px);line-height:1.12;letter-spacing:-.015em;margin:0 0 14px;font-variation-settings:"SOFT" 40}
h3{font-family:var(--fh);font-weight:500;font-size:21px;line-height:1.25;margin:0 0 8px;font-variation-settings:"SOFT" 40}
.lede{font-size:clamp(17px,1.9vw,19.5px);color:var(--slate);max-width:52ch;margin:0 0 8px}
p{margin:0 0 16px;max-width:68ch}li{margin:0 0 8px}
.sec{padding:clamp(30px,4.5vw,48px) 0 0}.sec p,.sec li{color:var(--slate)}.sec b,.sec strong{color:var(--ink)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;background:var(--plum);color:#fff;text-decoration:none;font-size:16px;font-weight:600;padding:15px 26px;border:1.5px solid var(--plum);border-radius:var(--r);transition:.18s ease}
.btn:hover{background:var(--lav);border-color:var(--lav);transform:translateY(-1px)}
.btn--soft{background:#fff;color:var(--plum);border-color:var(--line)}.btn--soft:hover{background:#fff;color:var(--plum);border-color:var(--lav)}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin:22px 0 6px}
.img-ph{background:var(--wash2);border:1.5px dashed #CFC6EA;border-radius:var(--r);color:var(--lavink);font-size:13.5px;font-weight:600;display:flex;align-items:center;justify-content:center;text-align:center;padding:16px;min-height:170px;margin:20px 0}
.tbl{width:100%;border-collapse:collapse;margin:14px 0 20px;font-size:15.5px}
.tbl th{text-align:left;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--lavink);padding:10px 12px;border-bottom:2px solid var(--line)}
.tbl td{padding:11px 12px;border-bottom:1px solid var(--line);color:var(--slate)}.tbl td:last-child{font-family:var(--fh);font-size:18px;color:var(--ink);white-space:nowrap}
.faq{border-top:1px solid var(--line);margin-top:8px}.faq details{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;padding:19px 40px 19px 0;position:relative;font-size:17px;font-weight:600}
.faq summary::-webkit-details-marker{display:none}.faq summary:hover{color:var(--lavink)}
.faq summary::after{content:"";position:absolute;right:8px;top:50%;width:10px;height:10px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-70%) rotate(45deg);transition:.2s}
.faq details[open] summary::after{transform:translateY(-25%) rotate(225deg)}
.faq-a{margin:0;padding:0 0 22px;color:var(--slate);max-width:64ch}
.cta{background:var(--plum);color:#fff;border-radius:20px;padding:clamp(28px,4vw,44px);margin:clamp(36px,5vw,56px) 0}
.cta h2{color:#fff}.cta p{color:#C3BCDA}.cta .btn{background:#fff;color:var(--plum);border-color:#fff;margin-top:10px}.cta .btn:hover{background:var(--lav);color:#fff;border-color:var(--lav)}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}
.card{background:#fff;border:1.5px solid var(--line);border-radius:var(--r);padding:22px 22px 24px}.card p{font-size:15.5px;color:var(--slate);margin:0}
.band--wash .card{background:#fff}
.postcard{display:block;text-decoration:none;background:#fff;border:1.5px solid var(--line);border-radius:var(--r);padding:24px;transition:.15s}.postcard:hover{border-color:var(--lav)}
.postcard h3{margin-bottom:6px}.postcard p{font-size:15px;color:var(--slate);margin:0}
.postcard .meta{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--lavink);font-weight:700;margin-bottom:10px}
.prose{max-width:720px}.prose h2{margin-top:38px}.prose h3{margin-top:26px}
.arealist{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 8px;padding:0;list-style:none}
.arealist a{display:inline-block;font-size:14.5px;font-weight:600;text-decoration:none;color:var(--plum);background:var(--wash2);border:1.5px solid var(--line);border-radius:99px;padding:8px 15px}
.arealist a:hover{border-color:var(--lav);color:var(--lavink)}
.foot{padding:36px 0;border-top:1px solid var(--line);margin-top:var(--sec)}
.foot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:24px;font-size:14px}
.foot h4{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--lavink);margin:0 0 10px}
.foot a{display:block;text-decoration:none;color:var(--slate);padding:3px 0}.foot a:hover{color:var(--lavink)}
.foot-base{display:flex;flex-wrap:wrap;gap:8px 24px;justify-content:space-between;font-size:13px;color:var(--slate);margin-top:28px;padding-top:18px;border-top:1px solid var(--line)}
.dock{display:none}
@media(max-width:760px){.dock{display:flex;gap:9px;position:fixed;left:0;right:0;bottom:0;z-index:60;background:rgba(255,255,255,.95);backdrop-filter:blur(12px);border-top:1.5px solid var(--line);padding:10px 14px calc(10px + env(safe-area-inset-bottom))}.dock .btn{flex:1;padding:14px 10px;font-size:15px}body{padding-bottom:84px}.nav{display:none}}
.hero{padding-top:clamp(24px,5vw,52px);padding-bottom:clamp(40px,6vw,64px)}
.hero-sub{font-size:clamp(17px,2vw,20px);color:var(--slate);max-width:46ch;margin:22px 0 0}
.hero-sub b{color:var(--ink);font-weight:600}
.hero-trust{display:flex;flex-wrap:wrap;gap:8px 22px;font-size:14px;color:var(--slate);margin-top:18px}
.hero-trust i{font-style:normal;color:var(--lav);margin-right:6px}
.railing{display:flex;justify-content:space-between;border-top:2px solid var(--line);height:18px}
.railing i{display:block;width:2px;height:18px;background:var(--line);border-radius:0 0 2px 2px}
.svc{display:grid;grid-template-columns:repeat(auto-fit,minmax(228px,1fr));gap:16px}
.price-card{background:#fff;border:1.5px solid var(--line);border-radius:20px;padding:clamp(28px,4vw,44px);display:grid;grid-template-columns:1fr;gap:22px}
@media(min-width:761px){.price-card{grid-template-columns:auto 1fr;gap:44px}}
.price-num{font-family:var(--fh);font-weight:500;font-size:clamp(58px,9vw,86px);line-height:.9;letter-spacing:-.03em}
.price-num sup{font-size:.4em;position:relative;top:-.78em}
.price-list{list-style:none;margin:0;padding:0}
.price-list li{display:flex;gap:12px;padding:9px 0;font-size:16px;color:var(--slate)}
.price-list b{color:var(--ink)}
.tick{flex:0 0 auto;width:19px;height:19px;margin-top:3px;stroke:var(--lav);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.gauge{background:#fff;border:1.5px solid var(--line);border-radius:20px;overflow:hidden}
.scene{position:relative;height:clamp(180px,26vw,250px);background:linear-gradient(178deg,#EDE9FB 0%,#DFE9F2 46%,#CFDDE8 100%)}
.scene-glass{position:absolute;left:6%;right:6%;bottom:26px;top:34%;border:2px solid rgba(255,255,255,.85);border-radius:6px;background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.08))}
.scene-rail{position:absolute;left:6%;right:6%;top:34%;height:5px;border-radius:3px;background:rgba(255,255,255,.92)}
.scene-floor{position:absolute;left:0;right:0;bottom:0;height:26px;background:#C9BEDB}
.scene-grime{position:absolute;inset:0;pointer-events:none;opacity:var(--grime,.34);transition:opacity .35s ease;background-image:radial-gradient(58% 42% at 22% 30%,rgba(122,106,78,.52),transparent 66%),radial-gradient(46% 40% at 80% 70%,rgba(96,98,84,.46),transparent 66%),repeating-linear-gradient(102deg,rgba(140,128,102,.20) 0 2px,transparent 2px 12px)}
.gauge-body{padding:clamp(24px,3.4vw,34px)}
.gauge-top{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:baseline;justify-content:space-between;margin-bottom:20px}
.gauge-level{font-family:var(--fh);font-weight:500;font-size:clamp(22px,3vw,30px)}
.gauge-time{font-size:14px;font-weight:600;color:var(--lavink);background:var(--wash2);padding:5px 13px;border-radius:99px;white-space:nowrap}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:34px;background:transparent;cursor:pointer;margin:0;display:block}
input[type=range]::-webkit-slider-runnable-track{height:8px;border-radius:99px;background:linear-gradient(90deg,#DCD5F2,#B7A6E4 55%,#8E7CD4)}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:30px;height:30px;border-radius:50%;background:#fff;border:3px solid var(--plum);box-shadow:0 2px 10px rgba(59,49,96,.25);margin-top:-11px}
input[type=range]::-moz-range-track{height:8px;border-radius:99px;background:linear-gradient(90deg,#DCD5F2,#B7A6E4 55%,#8E7CD4)}
input[type=range]::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:#fff;border:3px solid var(--plum)}
.gauge-ticks{display:flex;justify-content:space-between;gap:8px;font-size:12px;font-weight:600;color:var(--slate);margin-top:2px}
.gauge-desc{margin:20px 0 0;color:var(--slate);font-size:16px;max-width:56ch;min-height:52px}
.gauge-price{margin-top:24px;padding-top:22px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline}
.gauge-price strong{font-family:var(--fh);font-weight:600;font-size:27px;color:var(--plum)}
.gauge-price span{font-size:15px;color:var(--slate)}
.steps{list-style:none;margin:0;padding:0;counter-reset:s}
.steps li{counter-increment:s;display:grid;grid-template-columns:52px 1fr;gap:0 18px;padding:26px 0;border-top:1px solid var(--line)}
.steps li:last-child{border-bottom:1px solid var(--line)}
.steps li::before{content:counter(s);font-family:var(--fh);font-weight:600;font-size:21px;color:var(--lav);line-height:1.4}
.steps p{margin:0;color:var(--slate);font-size:16px;max-width:54ch}
.book-card{background:#fff;border:1.5px solid var(--line);border-radius:20px;padding:clamp(26px,3.6vw,40px)}
.fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:18px}
.field{display:flex;flex-direction:column;gap:7px}.field.full{grid-column:1/-1}
.field label{font-size:13.5px;font-weight:600}
.field input,.field select{font-family:var(--fb);font-size:16px;color:var(--ink);padding:13px 14px;border:1.5px solid var(--line);border-radius:11px;background:#fff;width:100%}
.picks{display:flex;flex-wrap:wrap;gap:9px}.pick{position:relative}
.pick input{position:absolute;opacity:0;width:1px;height:1px}
.pick span{display:block;padding:11px 17px;border:1.5px solid var(--line);border-radius:11px;font-size:15px;font-weight:500;cursor:pointer;transition:.15s ease;user-select:none}
.pick input:checked + span{background:var(--wash2);border-color:var(--lav);color:var(--plum);font-weight:600}
.book-submit{margin-top:26px;display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center}
.book-note{font-size:14px;color:var(--slate);max-width:34ch}
.book-note a{color:var(--lavink);font-weight:600}
.book-error{margin:16px 0 0;font-size:15px;font-weight:600;color:#9B2C4A;background:#FCEEF2;border:1.5px solid #F3D3DD;border-radius:11px;padding:12px 15px;display:none}
.book-error.on{display:block}
.obj{display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));gap:clamp(28px,4vw,44px)}
.obj-item p{margin:0;color:var(--slate);font-size:16px}
/* Semantic tones. Warn reuses the booking form's error colours; ok is its
   calm counterpart. Used sitewide and by /blog.css. */
:root{--warn-ink:#9B2C4A;--warn-bg:#FCEEF2;--warn-line:#F3D3DD;--ok-ink:#2C6A56;--ok-bg:#ECF6F1;--ok-line:#CBE5D9}
.book-error{color:var(--warn-ink);background:var(--warn-bg);border-color:var(--warn-line)}
/* Text selection. With no rule the browser keeps each word's own color under its
   default highlight, so white text on a plum panel or button washed out of sight
   the moment someone selected it. One pair for light surfaces, one for dark. */
::selection{background:#D9CFF6;color:var(--ink)}
.cta::selection,.cta *::selection,.btn::selection,.btn *::selection{background:#EDE8FB;color:var(--plum)}
