/* Type: TeX Gyre Schola (Century Schoolbook design), GUST Font License. See assets/GUST-FONT-LICENSE.txt */
@font-face{font-family:Schola;src:url(assets/schola-regular.otf) format("opentype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Schola;src:url(assets/schola-bold.otf) format("opentype");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:Schola;src:url(assets/schola-italic.otf) format("opentype");font-weight:400;font-style:italic;font-display:swap}

:root{
  --ink:#18120c;
  --k:clamp(0.5px, calc(100vw / 768), 1px);   /* 1px at the 768px page width; scales down on phones */
  --bleed:0 0 .6px rgba(35,28,21,.55);
}
*{box-sizing:border-box;margin:0;padding:0}
html{background:#2a231b}
body{padding:24px 0;color:var(--ink);font-family:Schola,"Century Schoolbook","New Century Schoolbook",Georgia,serif}
.defs{position:absolute;width:0;height:0;overflow:hidden}

/* ---------- the page: one continuous sheet ----------
   Middle: a vertically seamless tile cut from the page photo (cross-faded wrap).
   Top and bottom: the photo's real top and bottom edges, feathered into the tile with masks. */
.card{width:768px;max-width:100%;margin:0 auto;position:relative;isolation:isolate;
  background:#e9dfc6 url(assets/paper-tile.jpg) center top/100% auto repeat-y;
  padding:calc(58*var(--k)) calc(40*var(--k)) calc(64*var(--k)) calc(58*var(--k));
  text-align:center;text-shadow:var(--bleed);overflow:hidden}
.card::before,.card::after{content:"";position:absolute;left:0;right:0;z-index:-1;pointer-events:none;
  background-size:100% auto;background-repeat:no-repeat;aspect-ratio:766/560}
.card::before{top:0;background-image:url(assets/paper-top.jpg);background-position:top;
  -webkit-mask-image:linear-gradient(#000 45%,transparent 100%);mask-image:linear-gradient(#000 45%,transparent 100%)}
.card::after{bottom:0;aspect-ratio:766/520;background-image:url(assets/paper-bottom.jpg);background-position:bottom;
  -webkit-mask-image:linear-gradient(transparent 0,#000 55%);mask-image:linear-gradient(transparent 0,#000 55%)}

/* printed-ink look */
.ink{filter:url(#ink)}
.card > *{mix-blend-mode:multiply}
b,strong,h1,h2,h3,.title,.dish,.addr,summary,.num,label{-webkit-text-stroke:calc(.7*var(--k)) var(--ink)}
.lead,.features li,.note,.steps p,.faq p,.motto{-webkit-text-stroke:calc(.45*var(--k)) var(--ink)}

/* ---------- masthead: stacked title like the 1926 menu ---------- */
.masthead{position:relative}
.emblem{display:block;margin:calc(22*var(--k)) auto 0;width:clamp(90px,calc(120*var(--k)),120px);height:auto;opacity:.88}
.title{font-weight:700;text-transform:uppercase;line-height:1}
.title span{display:block}
.t-huge{font-size:calc(66*var(--k));margin-top:calc(10*var(--k));letter-spacing:calc(1*var(--k))}
.t-mid{font-size:calc(40*var(--k));margin-top:calc(14*var(--k))}
h1{font-weight:700;font-size:calc(38*var(--k));line-height:1.12;margin:calc(20*var(--k)) auto 0;max-width:calc(600*var(--k))}
.lead{font-style:italic;font-weight:500;font-size:calc(38*var(--k));line-height:calc(44*var(--k));margin:calc(14*var(--k)) auto 0;max-width:calc(640*var(--k))}
@media (max-width:600px){.lead{font-size:23px;line-height:28px}}

/* reserved 9:16 media slot (empty on purpose) */
.media-slot{width:min(300px,60%);aspect-ratio:9/16;margin:calc(30*var(--k)) auto 0;
  border:calc(5*var(--k)) double var(--ink);opacity:.8;mix-blend-mode:multiply}
@media (max-width:600px){.media-slot{width:60%;border-width:3px}}

.quote-link{margin-top:calc(26*var(--k));font-weight:700;font-size:calc(26*var(--k));text-transform:uppercase;letter-spacing:calc(1.5*var(--k))}
.quote-link a{color:var(--ink);text-decoration:none;border-bottom:calc(2.5*var(--k)) solid var(--ink);padding-bottom:1px}
.quote-link a:hover{color:#6b1e17;border-color:#6b1e17}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #0b4f8a;outline-offset:2px}

/* ---------- tiers: French name, rosettes, dish name, italic contents ---------- */
.tier{margin-top:calc(46*var(--k))}
.tier h2,.block h2{font-weight:700;font-size:calc(46*var(--k));line-height:1.1}
.stars{display:flex;justify-content:center;gap:calc(10*var(--k));margin-top:calc(8*var(--k))}
.stars i{display:block;width:calc(40*var(--k));height:calc(38*var(--k));background:url(assets/rosette.svg) center/contain no-repeat}
.dish{font-weight:700;font-size:calc(42*var(--k));line-height:1.12;margin-top:calc(8*var(--k))}
.worth{font-style:italic;font-weight:400;font-size:calc(25*var(--k));line-height:1.2;margin-top:calc(2*var(--k));opacity:.9;-webkit-text-stroke:0}
.features{list-style:none;margin-top:calc(4*var(--k))}
.features li{font-style:italic;font-size:calc(33*var(--k));line-height:calc(35*var(--k))}

.note{font-style:italic;font-size:calc(29*var(--k));line-height:calc(34*var(--k));margin:calc(40*var(--k)) auto 0;max-width:calc(560*var(--k))}

/* ---------- other sections ---------- */
.rule{width:calc(150*var(--k));height:0;border:0;border-top:calc(3*var(--k)) solid var(--ink);margin:0 auto calc(30*var(--k))}
.block{margin-top:calc(46*var(--k))}
.steps{list-style:none;margin-top:calc(6*var(--k))}
.steps li{margin-top:calc(14*var(--k))}
.steps .dish{font-size:calc(38*var(--k));margin-top:0}
.steps p{font-style:italic;font-size:calc(31*var(--k));line-height:calc(35*var(--k))}
.faq{margin:calc(24*var(--k)) auto 0;max-width:calc(600*var(--k))}
.faq summary{font-weight:700;font-size:calc(34*var(--k));line-height:1.2;cursor:pointer;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:" +";}
.faq[open] summary::after{content:" –";}
.faq p{font-style:italic;font-size:calc(29*var(--k));line-height:calc(34*var(--k));margin-top:calc(6*var(--k))}
.motto{font-style:italic;font-size:calc(31*var(--k));line-height:calc(36*var(--k));margin-top:calc(6*var(--k))}

/* form: tap-first contact form (chips are real radio inputs styled as printed pills) */
.reassure{font-style:italic;font-size:max(15px,calc(22*var(--k)));margin-top:calc(10*var(--k))}
.contact-form{max-width:calc(640*var(--k));margin:calc(26*var(--k)) auto 0;text-shadow:none}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.chip-group{border:0;margin:0 0 calc(24*var(--k));padding:0;min-width:0}
.chip-group legend,.contact-form label:not(.chip){display:block;font-weight:700;font-size:max(15px,calc(23*var(--k)));margin:0 auto calc(10*var(--k));padding:0;-webkit-text-stroke:0;text-align:center}
.contact-form label em{font-weight:400}
.chip-group legend{width:100%}
.chips{display:flex;flex-wrap:wrap;justify-content:center;gap:calc(10*var(--k)) calc(10*var(--k))}
.chip{position:relative;display:inline-flex;cursor:pointer;-webkit-text-stroke:0}
.chip input{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;cursor:pointer}
.chip span{display:inline-flex;align-items:center;min-height:42px;padding:6px max(13px,calc(18*var(--k)));
  font:italic max(15px,calc(22*var(--k)))/1.15 Schola,Georgia,serif;color:var(--ink);
  border:1.5px solid var(--ink);border-radius:999px;background:rgba(255,250,235,.35);transition:background .12s,color .12s}
.chip:hover span{border-color:#6b1e17;color:#6b1e17}
.chip input:checked + span{background:var(--ink);color:#f1e7cc;border-color:var(--ink)}
.chip input:checked + span::before{content:"\2713\00a0";font-style:normal}
.chip input:focus-visible + span{outline:3px solid #0b4f8a;outline-offset:2px}
.other-field{max-width:320px;margin:calc(12*var(--k)) auto 0}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:calc(18*var(--k)) calc(28*var(--k));margin-top:calc(6*var(--k))}
.field-small{max-width:360px;margin:calc(18*var(--k)) auto 0}
.field-small label{font-size:max(14px,calc(20*var(--k))) !important}
.contact-form input[type=text],.contact-form input[type=tel],.contact-form input[type=url]{width:100%;font:max(16px,calc(25*var(--k))) Schola,Georgia,serif;color:var(--ink);background:rgba(255,250,235,.35);border:0;border-bottom:1.5px solid var(--ink);padding:6px 4px;border-radius:0;text-align:center}
.contact-form input::placeholder{color:#5c5246;font-style:italic;opacity:1}
.contact-form [aria-invalid="true"]{border-color:#9b1c14;background:rgba(155,28,20,.07)}
.field-error{color:#9b1c14;font-style:italic;font-size:max(14px,calc(21*var(--k)));margin-top:3px;text-align:center}
.field-error:empty{display:none}
.form-actions{text-align:center;margin-top:calc(28*var(--k))}
.btn{font:700 max(15px,calc(24*var(--k))) Schola,Georgia,serif;text-transform:uppercase;letter-spacing:2px;color:#f1e7cc;background:var(--ink);border:0;padding:12px 34px;cursor:pointer}
.btn-big{display:block;width:100%;max-width:440px;margin:0 auto;font-size:max(17px,calc(28*var(--k)));padding:18px 24px;letter-spacing:3px}
.btn:hover:not(:disabled){background:#2e2318}
.btn:disabled{opacity:.5;cursor:not-allowed}
.form-fine{font-size:max(13px,calc(18*var(--k)));font-style:italic;text-align:center;margin-top:calc(12*var(--k))}
.form-fine a,.linkish{color:var(--ink);text-decoration:underline;text-underline-offset:2px}
.linkish{background:none;border:0;padding:0;font:inherit;font-style:italic;cursor:pointer}
.form-fine a:hover,.linkish:hover{color:#6b1e17}
.delete-note{border:2px solid #BD2333;background:rgba(255,250,235,.35);padding:12px 16px;margin-bottom:calc(20*var(--k));font-size:max(15px,calc(21*var(--k)));text-align:center}
.delete-note p + p{margin-top:6px}
.form-status{margin-top:calc(16*var(--k));border:2px solid #9b1c14;background:rgba(155,28,20,.08);color:#7a140e;font-weight:700;font-size:max(16px,calc(22*var(--k)));padding:10px 12px;text-align:center}
.form-status.is-ok{border-color:#2d5a27;color:#2d5a27;background:rgba(45,90,39,.08)}
.hp-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
@media (max-width:600px){.field-row{grid-template-columns:1fr}.chip span{min-height:44px}}

/* colophon: short rule, bold caps lines, printer's credit over a thin rule */
.colophon{margin-top:calc(56*var(--k))}
.colophon .rule{margin-bottom:calc(36*var(--k))}
.addr{font-weight:700;text-transform:uppercase;font-size:calc(33*var(--k));line-height:1.2;letter-spacing:calc(.5*var(--k))}
.addr.small{text-transform:none;font-size:calc(27*var(--k));margin-top:calc(6*var(--k))}
.imprint{display:table;margin:calc(28*var(--k)) auto 0;border-top:1px solid var(--ink);padding-top:calc(4*var(--k));font-size:calc(19*var(--k))}

/* pull quote */
.pull{margin:calc(30*var(--k)) auto 0;max-width:calc(600*var(--k))}
.pull .rule{margin-bottom:calc(20*var(--k))}
.pull p{font-style:italic;font-size:calc(36*var(--k));line-height:calc(42*var(--k));-webkit-text-stroke:calc(.45*var(--k)) var(--ink)}
.pull cite{display:block;font-style:normal;font-variant:small-caps;font-size:calc(27*var(--k));line-height:calc(34*var(--k));letter-spacing:calc(1*var(--k));max-width:calc(600*var(--k));margin:calc(14*var(--k)) auto 0;text-wrap:balance;-webkit-text-stroke:calc(.5*var(--k)) var(--ink)}
.pull .nw{white-space:nowrap}
/* guide plate: classic Rolls-Royce ad under the attribution */
.ad-plate{margin:calc(20*var(--k)) auto 0;max-width:min(420px,92%);padding:0;filter:none;mix-blend-mode:normal}
.ad-plate img{display:block;width:100%;height:auto;border:1px solid rgba(45,36,28,.28);box-shadow:0 1px 0 rgba(45,36,28,.06);background:#f6eedb}
@media (max-width:600px){.pull cite{font-size:16px;line-height:21px;letter-spacing:.4px;max-width:340px}.ad-plate{max-width:min(320px,88%);margin-top:calc(16*var(--k))}}
.faq summary .num{font-weight:700}
.faq p + p{margin-top:calc(14*var(--k))}
.faq p.gap{margin-top:1em}

/* tier 2 badge: Guide red, darkened to #A61F2D for small-text contrast (5.15:1 on the paper), kept out of the ink filter so the red stays clean */
.tier.ink{filter:none}
.tier.ink > :not(.badge):not(.example){filter:url(#ink)}
.badge{display:table;margin:calc(8*var(--k)) auto 0;color:#A61F2D;border:1.5px solid #A61F2D;font-weight:700;text-transform:uppercase;
  font-size:max(11px,calc(15*var(--k)));letter-spacing:.14em;line-height:1;padding:calc(5*var(--k)) calc(10*var(--k)) calc(4*var(--k));text-shadow:none;-webkit-text-stroke:0}
.tier .worth{margin-top:calc(4*var(--k))}
.tier .stars{margin-top:calc(10*var(--k))}
.tier .features{margin-top:calc(10*var(--k))}

/* 9:16 sales video fills the double-ruled slot */
.media-slot{opacity:1;mix-blend-mode:normal;overflow:visible;background:#111}
.media-slot video{display:block;width:100%;height:100%;object-fit:cover}

/* tier examples: a live sample site under each plan */
.example{margin:calc(22*var(--k)) auto 0;width:min(calc(620*var(--k)),92%)}
.example figcaption{font-style:italic;font-size:calc(25*var(--k));opacity:.9;margin-bottom:calc(8*var(--k));filter:url(#ink)}
.example video,.example img{display:block;width:100%;height:auto;border:calc(5*var(--k)) double var(--ink);background:#111}

/* keep the ink texture off the sales video */
.masthead.ink{filter:none}
.masthead.ink > :not(.media-slot):not(.motto-quote):not(.ad-plate){filter:url(#ink)}

/* media sits on its own layer: sections with media don't multiply as a whole;
   their text still multiplies into the paper, the media stays untouched */
.card > .tier,.card > .masthead{mix-blend-mode:normal}
.tier > :not(.example),.masthead > :not(.media-slot):not(.motto-quote):not(.ad-plate){mix-blend-mode:multiply}
.example,.media-slot,.ad-plate{mix-blend-mode:normal;isolation:isolate}

/* tier price under the English title */
.price{font-weight:700;font-size:calc(34*var(--k));line-height:1.1;margin-top:calc(4*var(--k))}
/* thin Guide-red rule between tiers (same red and weight as the Most Recommended badge) */
.tier-divider{border:0;border-top:2px solid #BD2333;width:calc(140*var(--k));margin:calc(46*var(--k)) auto 0;mix-blend-mode:normal}
.tier-divider + .tier{margin-top:calc(40*var(--k))}

/* price sits under the stars, regular weight */
.tier .price{font-weight:700;margin-top:calc(8*var(--k))}

/* pull-quote rule in Guide red */
.pull .rule{border-color:#BD2333;background:#BD2333;color:#BD2333;filter:none;mix-blend-mode:normal}

.rule.rule-red{border-color:#BD2333;filter:none;mix-blend-mode:normal}
.lead-sub{font-size:calc(22*var(--k));line-height:calc(29*var(--k));margin-top:calc(16*var(--k));max-width:calc(600*var(--k))}

/* ---------- tier features: each line opens like an FAQ (+ / –) ---------- */
.feat summary{cursor:pointer;list-style:none;-webkit-text-stroke:calc(.45*var(--k)) var(--ink)}
.feat summary::-webkit-details-marker{display:none}
.feat summary::after{content:" +";}
.feat[open] summary::after{content:" –";}
.feat p{font-style:italic;font-size:max(15px,calc(24*var(--k)));line-height:1.38;max-width:calc(560*var(--k));
  margin:calc(4*var(--k)) auto calc(14*var(--k));-webkit-text-stroke:calc(.3*var(--k)) var(--ink)}
.plus{font-style:italic;font-size:max(14px,calc(25*var(--k)));line-height:1.2;margin-top:calc(10*var(--k));opacity:.9}
.tier .plus + .features{margin-top:calc(4*var(--k))}
.seo-note{font-size:max(14px,calc(24*var(--k)));line-height:1.3;margin-top:calc(42*var(--k))}

/* footer policy links */
.footer-links{margin-top:calc(14*var(--k));font-size:max(13px,calc(19*var(--k)))}
.footer-links a{color:var(--ink);text-decoration:underline;text-underline-offset:2px}
.footer-links a:hover{color:#6b1e17}

/* ---------- policy pages (refund, terms, privacy, cookies) ---------- */
.crumbs{text-align:left;font-style:italic;font-size:max(14px,calc(20*var(--k)))}
.crumbs a{color:var(--ink);text-decoration:underline;text-underline-offset:2px}
.crumbs a:hover{color:#6b1e17}
.policy-head{margin-top:calc(18*var(--k))}
.policy-head h1{margin-top:calc(14*var(--k))}
.policy-head .updated{font-style:italic;font-size:max(14px,calc(20*var(--k)));margin-top:calc(8*var(--k))}
.policy-head .rule{margin:calc(24*var(--k)) auto 0}
.policy{text-align:left;font-size:max(16px,calc(22*var(--k)));line-height:1.5;margin:calc(30*var(--k)) auto 0;max-width:calc(620*var(--k))}
.policy h2{font-size:max(20px,calc(30*var(--k)));line-height:1.2;margin-top:calc(34*var(--k));filter:url(#ink)}
.policy h3{font-size:max(17px,calc(24*var(--k)));line-height:1.25;margin-top:calc(22*var(--k))}
.policy p,.policy ul,.policy ol{margin-top:calc(12*var(--k))}
.policy ul,.policy ol{padding-left:1.3em}
.policy li + li{margin-top:.35em}
.policy a{color:var(--ink);text-decoration:underline;text-underline-offset:2px}
.policy a:hover{color:#6b1e17}
.policy .lede{font-style:italic}
.callout{border:2px solid #BD2333;background:rgba(255,250,235,.35);padding:calc(16*var(--k)) calc(20*var(--k));margin-top:calc(20*var(--k))}
.callout > :first-child{margin-top:0}
.callout .callout-title{font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#A61F2D;font-size:max(13px,calc(18*var(--k)))}
.checklist{list-style:none;padding-left:0 !important}
.checklist li{padding-left:1.5em;position:relative}
.checklist li::before{content:"\2610";position:absolute;left:0;top:0}
.policy .small{font-size:max(14px,calc(19*var(--k)))}
@media (max-width:600px){
  .callout{padding:12px 10px}
}

/* ---------- full-bleed paper: the sheet fills the whole screen, text stays in a centered column ---------- */
html{background:#e9dfc6 url(assets/paper-bg.jpg) center top/764px auto repeat}
body{padding:0}
.card{background:transparent;isolation:auto}
.card::before,.card::after{display:none}
/* aged paper edges down the far left and right of the screen */
body{min-height:100vh;background:url(assets/edge-left.webp) left top/110px auto repeat-y,url(assets/edge-right.webp) right top/110px auto repeat-y}
@media (max-width:600px){body{background-size:56px auto,56px auto}}
/* Request a quote: solid Michelin-red button above the video */
.quote-link{margin:calc(30*var(--k)) 0 calc(28*var(--k))}
.quote-link a{display:inline-block;background:#BD2333;color:#f6eedb;border:0;padding:16px 40px;font-size:max(17px,calc(26*var(--k)));letter-spacing:3px;text-shadow:none;box-shadow:0 2px 0 #7d1520;mix-blend-mode:normal}
.quote-link a:hover,.quote-link a:focus-visible{background:#A61F2D;color:#fff;border:0}
.quote-link a:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
.card > .quote-link{mix-blend-mode:normal;filter:none;text-align:center}
.quote-link a{filter:none;-webkit-text-stroke:0;text-shadow:none}
/* form accents in Michelin red (selected chips, hover, submit button) */
.chip:hover span{border-color:#BD2333;color:#BD2333}
.chip input:checked + span{background:#BD2333;color:#f6eedb;border-color:#BD2333}
.contact-form .btn{background:#BD2333;color:#f6eedb;box-shadow:0 2px 0 #7d1520;-webkit-text-stroke:0;text-shadow:none}
.contact-form .btn:hover:not(:disabled){background:#A61F2D;color:#fff}
#contact{mix-blend-mode:normal}
#contact > :not(form),.contact-form label:not(.chip),.contact-form legend{mix-blend-mode:multiply}

/* goal statement under the lead: framed by Michelin-red lines, crisp solid ink */
.motto-quote{max-width:calc(660*var(--k));margin:calc(18*var(--k)) auto calc(10*var(--k));padding:calc(18*var(--k)) 0;
  border-top:2px solid #BD2333;border-bottom:2px solid #BD2333;color:var(--ink);font-size:calc(28*var(--k));line-height:calc(34*var(--k));
  filter:none;mix-blend-mode:normal;opacity:1;-webkit-text-stroke:calc(.4*var(--k)) var(--ink)}
#contact .book-link{margin:calc(30*var(--k)) 0 calc(14*var(--k))}
@media (max-width:600px){.motto-quote{font-size:17px;line-height:23px}}

/* ---------- tier feature symbols: small printed icon before each feature (summary keeps its + / – after the text) ---------- */
.ico{display:inline-block;color:var(--ink);overflow:visible}
.feat summary .ico{width:max(16px,.8em);height:max(16px,.8em);margin-right:.32em;vertical-align:-.08em}

/* ornamental rule: thin printed flourish between sections that had only blank space */
.orn{margin:calc(46*var(--k)) auto 0;width:clamp(110px,calc(150*var(--k)),150px);color:var(--ink);opacity:.9;line-height:0}
.orn svg{display:block;width:100%;height:auto;aspect-ratio:8/1}
.orn + .tier{margin-top:calc(40*var(--k))}
.orn + .seo-note{margin-top:calc(34*var(--k))}

/* contact: old county map in sepia ink, above the heading */
.oc-map{max-width:520px;width:100%;margin:0 auto calc(34*var(--k));color:#3a281a}
.map-svg{display:block;width:100%;height:auto;overflow:visible}
.map-lbl text{font-family:Schola,"Century Schoolbook",Georgia,serif;font-size:13px;letter-spacing:1.1px;text-shadow:none}
.map-lbl .map-sea{font-style:italic;letter-spacing:4px;font-size:13px}
.oc-map figcaption{font-style:italic;font-size:max(15px,calc(25*var(--k)));line-height:1.3;margin-top:calc(12*var(--k));color:var(--ink);-webkit-text-stroke:calc(.35*var(--k)) var(--ink)}
@media (max-width:600px){.map-lbl text{font-size:14px}.map-lbl .map-sea{font-size:13px;letter-spacing:3px}}

/* contact: tap chips in front of "Book my call" (single-select, tap again to clear; red when chosen) */
#contact .book-form{max-width:calc(660*var(--k));margin:calc(30*var(--k)) auto 0}
#contact .book-form .chip-group{margin:0 0 calc(26*var(--k))}
#contact .book-form .chip-group legend{font-weight:400;font-variant:small-caps;font-size:max(15px,calc(23*var(--k)));letter-spacing:calc(2*var(--k));margin-bottom:calc(12*var(--k))}
#contact .book-form .chips{gap:calc(12*var(--k)) calc(12*var(--k))}
#contact .book-form .chip span{min-height:44px;box-sizing:border-box;font-size:max(15px,calc(22*var(--k)))}
#contact .book-form .chip input:checked + span::before{content:none}
#contact .book-link{margin-top:calc(8*var(--k))}
.talk-now{text-align:center;font-style:italic;font-size:max(15px,calc(22*var(--k)));margin-top:calc(2*var(--k))}
.talk-now a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;white-space:nowrap;font-style:normal}
.talk-now a:hover{color:#BD2333}
.addr .addr-tel{color:inherit;text-decoration:none;white-space:nowrap}
.addr .addr-tel:hover{text-decoration:underline;text-underline-offset:3px}
@media (max-width:600px){#contact .book-form .chips{gap:8px}#contact .book-form .chip span{padding:6px 14px}}
.colophon .addr-contact{text-wrap:balance}

/* pricing section mark: a title page in three centred rows — a large oldstyle 3, three rosettes, then
   WEBSITE PRICING in open small caps — then the red rule. Rosettes in the same charcoal as the tier stars. */
.pricing-head{text-align:center;margin:calc(8*var(--k)) auto 0}
.pricing-mark{display:flex;flex-direction:column;align-items:center;margin:0;line-height:1;-webkit-text-stroke:calc(.55*var(--k)) var(--ink)}
.pricing-three{display:block;font-weight:400;font-size:max(68px,calc(118*var(--k)));line-height:.8;font-variant-numeric:oldstyle-nums;font-feature-settings:"onum" 1;
  -webkit-text-stroke:calc(.9*var(--k)) var(--ink);padding-bottom:.12em}
.pricing-head .stars{display:flex;justify-content:center;margin:max(15px,calc(27*var(--k))) 0 0;gap:max(10px,calc(16*var(--k)))}
.pricing-head .stars i{width:max(26px,calc(40*var(--k)));height:max(25px,calc(38*var(--k)))}
.pricing-words{display:block;margin-top:max(14px,calc(22*var(--k)));font-weight:700;font-size:max(23px,calc(40*var(--k)));line-height:1.1;
  font-variant-caps:small-caps;letter-spacing:.12em;padding-left:.12em;-webkit-text-stroke:inherit}
.pricing-head .tier-divider{margin-top:max(18px,calc(28*var(--k)));margin-bottom:0}
.orn + .pricing-head{margin-top:calc(36*var(--k))}
.pricing-head + .tier{margin-top:calc(40*var(--k))}
@media (max-width:600px){.pricing-head + .tier{margin-top:max(30px,calc(34*var(--k)))}.orn + .pricing-head{margin-top:max(28px,calc(32*var(--k)))}}

html{scroll-behavior:smooth}
#contact-h{scroll-margin-top:max(24px,calc(28*var(--k)))}
/* Stacked CTAs: Buy Now · or★★ · Book my call (both chip-gated Michelin progress fill) */
#contact .book-link{margin:calc(8*var(--k)) 0 calc(6*var(--k))}
#contact .cta-or{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:calc(10*var(--k));
  margin:calc(4*var(--k)) auto calc(2*var(--k));
  font-style:italic;
  font-size:max(14px,calc(20*var(--k)));
  letter-spacing:0.04em;
  opacity:.72;
  color:var(--ink);
  line-height:1;
  transition:color .3s ease,opacity .3s ease;
}
#contact .cta-or .stars{display:inline-flex;margin:0;gap:0}
#contact .cta-or .stars i{width:calc(18*var(--k));height:calc(17*var(--k));min-width:14px;min-height:13px}
/* Unlocked: tint "or" Michelin red so the stack reads as open */
#contact.is-cta-unlocked .cta-or{color:#BD2333;opacity:1}
/* Buy Now + Book my call: Michelin-red progress fill as chip groups complete (data-progress 0–3) */
#buy-now,#book-call{
  position:relative;
  overflow:hidden;
  isolation:isolate;
  background-color:#e6d7b8;
  background-image:linear-gradient(#BD2333,#BD2333);
  background-repeat:no-repeat;
  background-size:0% 100%;
  color:#6b1e17;
  border:2px solid #BD2333;
  box-shadow:none;
  transition:background-size .35s ease,color .25s ease,opacity .25s ease,box-shadow .25s ease,filter .25s ease,transform .25s ease;
}
#buy-now[data-progress="0"],#book-call[data-progress="0"]{background-size:0% 100%;background-color:#e6d7b8;opacity:.55;color:#6b1e17;filter:grayscale(.1)}
#buy-now[data-progress="1"],#book-call[data-progress="1"]{background-size:33.333% 100%;background-color:#7a3038;opacity:.9;color:#f6eedb;text-shadow:0 1px 0 rgba(0,0,0,.25)}
#buy-now[data-progress="2"],#book-call[data-progress="2"]{background-size:66.666% 100%;background-color:#7a3038;opacity:.95;color:#f6eedb;text-shadow:0 1px 0 rgba(0,0,0,.25)}
#buy-now[data-progress="3"],#book-call[data-progress="3"]{background-size:100% 100%;background-color:#BD2333;opacity:1;color:#f6eedb;border-color:#BD2333;box-shadow:0 2px 0 #7d1520;filter:none;text-shadow:none}
/* Unlocked resting shadow (static; reached by the same box-shadow transition as the fill) */
#contact.is-cta-unlocked #buy-now[data-progress="3"],
#contact.is-cta-unlocked #book-call[data-progress="3"]{
  box-shadow:0 3px 0 #7d1520,0 5px 12px rgba(36,28,20,.22);
}
/* (removed: cta-unlock-settle — scale/brightness/shadow bounce on Buy Now + Book my call at unlock) */
#buy-now.is-disabled,#buy-now[aria-disabled="true"],#book-call.is-disabled,#book-call[aria-disabled="true"]{cursor:not-allowed}
#buy-now.is-disabled:hover,#buy-now[aria-disabled="true"]:hover,#book-call.is-disabled:hover,#book-call[aria-disabled="true"]:hover{color:inherit}
#buy-now[data-progress="0"].is-disabled:hover,#buy-now[data-progress="0"][aria-disabled="true"]:hover,#book-call[data-progress="0"].is-disabled:hover,#book-call[data-progress="0"][aria-disabled="true"]:hover{color:#6b1e17;background-color:#e6d7b8}
#buy-now[data-progress="3"]:hover,#book-call[data-progress="3"]:hover{background-color:#A61F2D;background-image:linear-gradient(#A61F2D,#A61F2D);color:#fff}
#buy-now[data-progress="3"]:focus-visible,#book-call[data-progress="3"]:focus-visible{outline:3px solid var(--ink);outline-offset:3px}

/* Rosette stamp in cta-or — bigger press-into-paper (~1.5×), once per unlock */
#contact .cta-or.is-stamping{
  color:#BD2333;
  opacity:1;
}
#contact .cta-or.is-stamping .stars i{
  animation:cta-rosette-stamp .55s ease-out forwards;
  transform-origin:center center;
}
@keyframes cta-rosette-stamp{
  0%{transform:scale(1.5);opacity:.9}
  55%{transform:scale(0.9);opacity:1}
  100%{transform:scale(1);opacity:1}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  #contact .cta-or.is-stamping .stars i{animation:none;transform:none}
  /* Instant unlocked look at CTA stack — buttons lifted, or tinted, stamp/line shown */
  #contact.is-cta-unlocked #contact-h::after{animation:none;transform:none;opacity:0}
  .book-hint.is-unlock-fade{transition:none}
  .unlock-line{transition:none}
  .unlock-line.is-shown{animation:none;opacity:1;visibility:visible;transform:none}
  .cleared-stamp{transition:none}
  .cleared-stamp.is-shown,.cleared-stamp.is-pressing{
    animation:none;
    opacity:1;
    visibility:visible;
    transform:rotate(-6deg) scale(1);
  }
  .cta-confetti,.confetti-piece{display:none !important}
}

/* Other trade field: always reserved height — visibility/opacity only (no display:none / no jiggle) */
#contact .other-field,#contact #trade-other-wrap{
  max-width:min(360px,92%);
  margin:calc(14*var(--k)) auto 0;
  text-align:center;
  min-height:calc(14*var(--k) + 2.75em);
  box-sizing:border-box;
  visibility:hidden;
  opacity:0;
  pointer-events:none;
  transition:opacity .2s ease,visibility .2s ease;
}
#contact #trade-other-wrap.is-open{
  visibility:visible;
  opacity:1;
  pointer-events:auto;
}
#contact .other-field input{width:100%;font:max(16px,calc(24*var(--k))) Schola,Georgia,serif;color:var(--ink);background:rgba(255,250,235,.45);border:0;border-bottom:1.5px solid var(--ink);padding:8px 4px;text-align:center;border-radius:0}
#contact .other-field input::placeholder{color:#5c5246;font-style:italic;opacity:1}
#contact .other-field input[aria-invalid="true"]{border-color:#9b1c14;background:rgba(155,28,20,.07)}

/* unlock hint under Contact us heading — stays in flow (visibility/opacity; never display:none) */
.book-hint{
  text-align:center;
  font-style:italic;
  font-weight:700;
  font-size:max(16px,calc(24*var(--k)));
  letter-spacing:0.03em;
  line-height:1.4;
  margin:calc(16*var(--k)) auto calc(12*var(--k));
  padding:calc(10*var(--k)) calc(8*var(--k));
  /* Reserve full plate height so fade-out never collapses layout / jiggles the page */
  min-height:calc(3.6em + 20*var(--k));
  box-sizing:border-box;
  opacity:1;
  visibility:visible;
  color:var(--ink);
  max-width:34em;
  transition:opacity .45s ease,visibility .45s ease;
}
/* Short centered Michelin-red rules frame the instruction (not a CTA separator) */
.book-hint::before,
.book-hint::after{
  content:"";
  display:block;
  width:min(10em,46%);
  margin-left:auto;
  margin-right:auto;
  border:0;
  border-top:1.5px solid #BD2333;
  opacity:.9;
}
.book-hint::before{margin-bottom:calc(9*var(--k))}
.book-hint::after{margin-top:calc(9*var(--k))}
/* Michelin rosette (same mark as the pricing head and the "or" between the CTAs) framing the hint */
.book-hint-mark{
  display:inline-block;
  width:1.08em;
  height:1.01em;
  margin:0 0.18em;
  vertical-align:-0.16em;
  background:url(assets/rosette.svg) center/contain no-repeat;
}
.book-hint.is-unlock-fade,
.book-hint.is-met{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}
/* "Now serving …": a quiet small-caps line between the unlock hint and the Trade chips (static, always in flow) */
.serving-line{text-align:center;font-variant:small-caps;font-weight:400;font-style:normal;font-size:max(16px,calc(22*var(--k)));
  letter-spacing:.06em;line-height:1.35;color:var(--ink);margin:0 auto calc(22*var(--k));max-width:34em;padding:0 8px;text-wrap:balance}
@media (max-width:600px){.serving-line{letter-spacing:.02em;padding:0}}
/* Thin rule draws under contact heading as hint fades (hint box still reserved) */
#contact #contact-h::after{content:"";display:block;width:min(11em,48%);height:0;margin:calc(10*var(--k)) auto 0;border:0;border-top:1px solid #BD2333;opacity:0;transform:scaleX(0);transform-origin:center}
#contact.is-cta-unlocked #contact-h::after{
  content:"";
  display:block;
  width:min(11em,48%);
  height:0;
  margin:calc(10*var(--k)) auto 0;
  border:0;
  border-top:1px solid #BD2333;
  opacity:.72;
  transform:scaleX(0);
  transform-origin:center;
  animation:unlock-hint-rule .5s ease forwards;
}
#contact.is-cta-unlocking #contact-h::after{animation:unlock-hint-rule .5s ease forwards}
@keyframes unlock-hint-rule{
  0%{transform:scaleX(0);opacity:0}
  100%{transform:scaleX(1);opacity:.72}
}

/* CTA stack: relative host for Cleared. stamp / legacy unlock line + paper confetti (no layout jiggle) */
.cta-stack{
  position:relative;
  isolation:isolate;
  /* Clip horizontal bloom overflow so scale pulse cannot nudge scrollbars */
  overflow-x:clip;
  overflow-y:visible;
  margin:calc(4*var(--k)) 0 0;
  padding:calc(4*var(--k)) 0 0;
}

/* Default unlock: Michelin inspector rubber-stamp (rosette + "Cleared.") above Buy Now */
.cleared-stamp{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:calc(8*var(--k));
  text-align:center;
  margin:0 auto calc(10*var(--k));
  padding:calc(4*var(--k)) calc(10*var(--k));
  min-height:calc(2.4em + 8*var(--k));
  max-width:16em;
  box-sizing:border-box;
  color:#BD2333;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:rotate(-6deg) scale(1.2);
  transform-origin:center center;
  transition:opacity .25s ease,visibility .25s ease;
}
.cleared-stamp-rosette{
  display:inline-block;
  width:calc(28*var(--k));
  height:calc(26*var(--k));
  min-width:18px;
  min-height:17px;
  background:url(assets/rosette.svg) center/contain no-repeat;
  /* Tint rosette Michelin red via filter so stamp reads as ink */
  filter:brightness(0) saturate(100%) invert(18%) sepia(92%) saturate(3200%) hue-rotate(340deg) brightness(92%) contrast(96%);
  flex-shrink:0;
}
.cleared-stamp-word{
  font-family:Schola,Georgia,"Times New Roman",serif;
  font-style:italic;
  font-weight:700;
  font-size:max(18px,calc(26*var(--k)));
  letter-spacing:0.06em;
  line-height:1;
  text-transform:none;
  /* Soft ink-stamp edge */
  text-shadow:0 0 0.5px rgba(189,35,51,.45),0 1px 0 rgba(125,21,32,.2);
}
.cleared-stamp.is-shown{
  opacity:1;
  visibility:visible;
  transform:rotate(-6deg) scale(1);
}
.cleared-stamp.is-shown.is-pressing{
  animation:cleared-stamp-press .55s ease-out forwards;
}
@keyframes cleared-stamp-press{
  0%{opacity:0;transform:rotate(-8deg) scale(1.2)}
  45%{opacity:1;transform:rotate(-5deg) scale(0.95)}
  100%{opacity:1;transform:rotate(-6deg) scale(1)}
}

/* Legacy unlock line ("Both doors are open.") — kept for ?celebrate=legacy / UNLOCK_STYLE=legacy */
.unlock-line{
  text-align:center;
  font-style:italic;
  font-weight:700;
  font-size:max(15px,calc(22*var(--k)));
  letter-spacing:0.04em;
  line-height:1.35;
  color:#BD2333;
  margin:0 auto calc(10*var(--k));
  padding:calc(2*var(--k)) calc(8*var(--k));
  min-height:1.5em;
  max-width:28em;
  box-sizing:border-box;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translateY(4px);
  transition:opacity .4s ease,visibility .4s ease,transform .4s ease;
}
.unlock-line.is-shown{
  opacity:1;
  visibility:visible;
  transform:translateY(0);
  animation:unlock-line-stamp .55s ease-out;
}
@keyframes unlock-line-stamp{
  0%{opacity:0;transform:translateY(6px) scale(0.98)}
  55%{opacity:1;transform:translateY(0) scale(1.02)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}

/* Legacy only (?celebrate=legacy): 1900s Michelin paper confetti — parchment scraps, red ticks, dots */
.cta-confetti{
  position:absolute;
  inset:0 -4% auto -4%;
  height:110%;
  pointer-events:none;
  z-index:4;
  overflow:hidden;
}
.confetti-piece{
  position:absolute;
  top:-8%;
  display:block;
  opacity:0;
  pointer-events:none;
  will-change:transform,opacity;
}
.cta-confetti.is-bursting .confetti-piece{
  animation:paper-confetti-fall var(--dur,1.4s) ease-in forwards;
  animation-delay:var(--delay,0s);
}
.confetti-parchment{
  width:calc(10*var(--k));
  height:calc(7*var(--k));
  min-width:7px;min-height:5px;
  background:#f1e7cc;
  border:1px solid rgba(36,28,20,.35);
  box-shadow:0 1px 0 rgba(36,28,20,.12);
}
.confetti-tick{
  width:calc(8*var(--k));
  height:2px;
  min-width:6px;
  background:#BD2333;
  border-radius:1px;
}
.confetti-dot{
  width:calc(6*var(--k));
  height:calc(6*var(--k));
  min-width:4px;min-height:4px;
  border-radius:50%;
  background:#BD2333;
  box-shadow:0 0 0 1px rgba(189,35,51,.25);
}
@keyframes paper-confetti-fall{
  0%{
    opacity:0;
    transform:translate3d(0,-6px,0) rotate(0deg);
  }
  12%{opacity:.95}
  100%{
    opacity:0;
    transform:translate3d(var(--drift,12px),118px,0) rotate(var(--spin,90deg));
  }
}


/* FAQ after contact: Michelin-red short rule between prefer-to-talk block and FAQs */
/* FAQs above contact heading; Michelin-red rule between FAQ list and Contact us */
#contact .faq-block{margin:calc(28*var(--k)) auto calc(8*var(--k));max-width:calc(700*var(--k))}
.faq-divider{margin-top:calc(32*var(--k));margin-bottom:calc(28*var(--k))}
.colophon .rule.rule-red{border-color:#BD2333;filter:none;mix-blend-mode:normal}

/* ==========================================================================
   Inspection unlock (default · UNLOCK_STYLE = "inspection")
   1. "Inspector's Notes" card writes each pick in ink as it is chosen.
   2. Third line written → 250ms pause → the inspector's rosette seal presses onto the card
      (scale 1.25 → 0.96 → 1, ink halo, paper dent, 2–3px thud of the card).
   3. Red ink flows into Buy Now, then Book my call (+120ms); the two rosettes beside "or" ink in black;
      "Inspection complete. Choose your next step." appears.
   Plussing: rosette tick beside each group heading when picked; card lifts on its shadow while writing.
   Deselect reverses it. Fallbacks: ?celebrate=stamp (74decdd "Cleared.") · ?celebrate=legacy (52bc58d).
   Everything here is transform/opacity/clip-path on reserved boxes: no layout shift.
   ========================================================================== */
#contact .inspect{display:none}
#contact[data-unlock="inspection"] .inspect{display:block}
#contact[data-unlock="inspection"] .cleared-stamp,
#contact[data-unlock="inspection"] .unlock-line,
#contact[data-unlock="inspection"] .cta-confetti{display:none}

.inspect{max-width:min(520px,100%);margin:calc(6*var(--k)) auto calc(6*var(--k));text-align:left}
.inspect-card{
  position:relative;
  padding:calc(16*var(--k)) max(16px,calc(26*var(--k))) max(12px,calc(16*var(--k)));
  background:radial-gradient(120% 140% at 50% 38%,#f6eed8 0%,#efe3c5 60%,#e3d1a8 100%);
  border:1px solid rgba(96,68,36,.34);
  box-shadow:inset 0 0 0 3px rgba(246,238,216,.55),inset 0 0 0 4px rgba(189,35,51,.22),0 1px 2px rgba(60,40,20,.14),0 10px 18px -12px rgba(60,40,20,.38);
  text-shadow:none;
  -webkit-text-stroke:0;
  transition:transform .3s ease,box-shadow .3s ease;
}
/* plussing: while a line is being written the card rises a hair on a softer, deeper shadow */
.inspect-card.is-writing{
  transform:translateY(-2px);
  box-shadow:inset 0 0 0 3px rgba(246,238,216,.55),inset 0 0 0 4px rgba(189,35,51,.22),0 3px 5px rgba(60,40,20,.12),0 18px 28px -14px rgba(60,40,20,.45);
}
.inspect-head{
  margin:0 0 calc(2*var(--k));
  padding-bottom:calc(8*var(--k));
  border-bottom:1.5px solid #BD2333;
  font-weight:700;
  font-variant:small-caps;
  letter-spacing:.07em;
  font-size:max(17px,calc(23*var(--k)));
  line-height:1.2;
  color:var(--ink);
}
.inspect-lines{margin:0}
.inspect-line{display:flex;align-items:flex-end;gap:calc(12*var(--k));height:max(40px,calc(48*var(--k)))}
.inspect-line dt{
  flex:0 0 5.3em;
  padding-bottom:6px;
  font-variant:small-caps;
  letter-spacing:.05em;
  font-size:max(15px,calc(20*var(--k)));
  line-height:1.2;
  color:#3d3125;
}
.inspect-line dd{
  flex:1 1 auto;
  min-width:0;
  height:100%;
  margin:0;
  padding-bottom:3px;
  display:flex;
  align-items:flex-end;
  border-bottom:1.5px dotted rgba(36,28,20,.3);
}
/* The visitor's own words, in iron-gall ink: clip-path "pen" reveal, then the ink dries darker */
.inspect-ink{
  display:inline-block;
  max-width:100%;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
  padding:0 .18em 0 .04em;
  font-style:italic;
  font-size:max(17px,calc(24*var(--k)));
  line-height:1.3;
  color:#1f2a44;
  opacity:0;
  clip-path:inset(-30% 100% -30% 0);
  transition:opacity .22s ease,clip-path 0s linear .22s;
}
.inspect-ink.is-written{
  opacity:1;
  clip-path:inset(-30% 0 -30% 0);
  transition:clip-path .56s cubic-bezier(.42,.08,.52,1),opacity .08s ease;
  animation:inspect-ink-dry 1.2s ease-out both;
}
@keyframes inspect-ink-dry{0%{color:#41589a}100%{color:#1f2a44}}

/* Inspector's seal: rosette + "INSPECTED · OC LIGHT AND MAGIC" ring + today's date */
.inspect-stamp,.inspect-dent{
  --s:max(112px,calc(150*var(--k)));
  position:absolute;
  width:var(--s);
  height:var(--s);
  top:calc(100% - var(--s) + 26px);
  right:-44px;
  border-radius:50%;
  pointer-events:none;
}
.inspect-stamp{
  z-index:2;
  color:#1a1714; /* black rubber-stamp-pad ink (was Michelin red #b31f2f, tag unlock-inspection-red-stamp-e89a050) */
  opacity:0;
  visibility:hidden;
  transform:rotate(-14deg) scale(1.25);
  transform-origin:50% 50%;
  mix-blend-mode:multiply;
}
.inspect-stamp svg{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 .7px rgba(26,23,20,.5))}
.inspect-ring{font-family:Schola,Georgia,serif;font-weight:700;letter-spacing:1.1px}
.inspect-ring-top{font-size:13px;letter-spacing:3px}
.inspect-ring-bottom{font-size:10.6px;letter-spacing:.9px}
.inspect-date{font-family:Schola,Georgia,serif;font-weight:700;font-size:11.5px;letter-spacing:.4px}
/* ink-bleed halo that blooms once on impact */
.inspect-stamp::before{
  content:"";
  position:absolute;
  inset:-14%;
  border-radius:50%;
  background:radial-gradient(circle,rgba(26,23,20,0) 46%,rgba(26,23,20,.16) 60%,rgba(26,23,20,0) 72%);
  opacity:0;
}
.inspect-dent{
  z-index:1;
  opacity:0;
  box-shadow:0 0 0 0 rgba(40,25,10,0),inset 0 1.5px 2.5px rgba(70,45,20,0),inset 0 -1px 1px rgba(255,250,235,0);
}
.inspect.is-stamped .inspect-stamp{opacity:.84;visibility:visible;transform:rotate(-14deg) scale(1)}
.inspect.is-stamped .inspect-dent,
.inspect.is-lifting .inspect-dent{
  opacity:1;
  box-shadow:0 0 0 0 rgba(40,25,10,0),inset 0 1.5px 2.5px rgba(70,45,20,.26),inset 0 -1px 1px rgba(255,250,235,.55);
}
.inspect.is-stamping .inspect-stamp{animation:inspect-stamp-press .56s linear both}
.inspect.is-stamping .inspect-stamp::before{animation:inspect-halo .75s .235s ease-out both}
.inspect.is-stamping .inspect-dent{animation:inspect-dent-in .56s linear both}
.inspect.is-stamping .inspect-card{animation:inspect-card-thud .26s .235s ease-out both}
@keyframes inspect-stamp-press{
  0%{opacity:0;transform:rotate(-21deg) scale(1.25);animation-timing-function:cubic-bezier(.55,0,.9,.45)}
  14%{opacity:.5}
  42%{opacity:.96;transform:rotate(-14deg) scale(.96);animation-timing-function:cubic-bezier(.2,.65,.3,1)}
  64%{transform:rotate(-14deg) scale(1.012)}
  100%{opacity:.84;transform:rotate(-14deg) scale(1)}
}
@keyframes inspect-dent-in{
  /* the seal's shadow gathers as it comes down (anticipation), then becomes a pressed dent */
  0%{opacity:0;transform:scale(1.3);box-shadow:0 16px 24px 6px rgba(40,25,10,0),inset 0 1.5px 2.5px rgba(70,45,20,0),inset 0 -1px 1px rgba(255,250,235,0);animation-timing-function:cubic-bezier(.55,0,.9,.45)}
  30%{opacity:1;box-shadow:0 8px 16px 2px rgba(40,25,10,.16),inset 0 1.5px 2.5px rgba(70,45,20,0),inset 0 -1px 1px rgba(255,250,235,0)}
  42%{transform:scale(1);box-shadow:0 1px 3px 0 rgba(40,25,10,.2),inset 0 1.5px 2.5px rgba(70,45,20,.34),inset 0 -1px 1px rgba(255,250,235,.6)}
  100%{opacity:1;transform:scale(1);box-shadow:0 0 0 0 rgba(40,25,10,0),inset 0 1.5px 2.5px rgba(70,45,20,.26),inset 0 -1px 1px rgba(255,250,235,.55)}
}
@keyframes inspect-halo{
  0%{opacity:0;transform:scale(.86)}
  22%{opacity:1}
  100%{opacity:0;transform:scale(1.16)}
}
@keyframes inspect-card-thud{
  0%{transform:translate(0,0)}
  18%{transform:translate(-2.5px,1.5px)}
  42%{transform:translate(2px,-.5px)}
  68%{transform:translate(-1px,.5px)}
  100%{transform:translate(0,0)}
}
/* reverse: the seal lifts off and the dent relaxes */
.inspect.is-lifting .inspect-stamp{visibility:visible;animation:inspect-stamp-lift .24s ease-in both}
.inspect.is-lifting .inspect-dent{animation:inspect-fade-out .3s ease both}
@keyframes inspect-stamp-lift{
  0%{opacity:.84;transform:rotate(-14deg) scale(1)}
  100%{opacity:0;transform:rotate(-19deg) scale(1.18) translateY(-6px)}
}
@keyframes inspect-fade-out{from{opacity:1}to{opacity:0}}

/* one confident line under the card, space reserved */
.inspect-next{
  margin:calc(12*var(--k)) auto 0;
  min-height:1.45em;
  text-align:center;
  font-style:italic;
  font-size:max(16px,calc(23*var(--k)));
  line-height:1.45;
  color:var(--ink);
  opacity:0;
  visibility:hidden;
  transform:translateY(3px);
  transition:opacity .45s ease,visibility .45s ease,transform .45s ease;
}
.inspect-next{text-wrap:balance}
.inspect.is-sealed .inspect-next{opacity:1;visibility:visible;transform:none}

/* buttons: red ink flows from the 2/3 mark to full (no settle: the buttons never move at unlock) */
#contact[data-unlock="inspection"] #buy-now,
#contact[data-unlock="inspection"] #book-call{
  transition:background-size .55s cubic-bezier(.35,.1,.25,1),background-color 0s linear,color .3s ease,opacity .3s ease,box-shadow .3s ease,filter .3s ease,transform .25s ease;
}
#contact[data-unlock="inspection"] #buy-now[data-progress="3"],
#contact[data-unlock="inspection"] #book-call[data-progress="3"]{
  transition:background-size .55s cubic-bezier(.35,.1,.25,1),background-color 0s linear .55s,color .35s ease .2s,opacity .3s ease,box-shadow .4s ease .3s,filter .3s ease,transform .25s ease;
}
/* the two rosettes beside "or": gray while locked, ink in solid black on unlock, left then right */
#contact[data-unlock="inspection"] .cta-or .stars i{opacity:.42;transition:opacity .5s ease,filter .5s ease}
#contact[data-unlock="inspection"] .cta-or.is-inked .stars i{
  opacity:1;
  filter:brightness(0);
}
#contact[data-unlock="inspection"] .cta-or.is-inked .stars:last-child i{transition-delay:.14s}

/* Section headings carry their own rosettes (Trade 1, Package 2, Timeline 3), always in the layout, so nothing
   shifts. They rest in charcoal ink; once that group is picked (form.js toggles .is-on) each one inks Michelin red,
   left to right, replacing the old single pick tick. The red layer is an ::after crossfade (no size change). */
.legend-text{position:relative;display:inline-block}
.group-tick{display:inline-flex;gap:.1em;margin-left:.38em;vertical-align:-.1em;pointer-events:none}
.group-tick i{position:relative;display:block;width:.86em;height:.81em;background:url(assets/rosette.svg) center/contain no-repeat;
  opacity:.82;transition:opacity .25s ease}
.group-tick i::after{content:"";position:absolute;inset:0;background:inherit;
  filter:brightness(0) saturate(100%) invert(18%) sepia(92%) saturate(3200%) hue-rotate(340deg) brightness(92%) contrast(96%);
  opacity:0;transform:scale(1.5) rotate(-20deg);transition:opacity .16s ease,transform .32s cubic-bezier(.3,1.5,.5,1)}
.group-tick.is-on i{opacity:1}
.group-tick.is-on i::after{opacity:1;transform:none}
.group-tick.is-on i:nth-child(2)::after{transition-delay:.09s}
.group-tick.is-on i:nth-child(3)::after{transition-delay:.18s}

@media (min-width:601px){.inspect-card{padding-right:60px}}
@media (max-width:600px){
  .inspect{max-width:calc(100% - 14px)}
  .inspect-line dt{flex-basis:4.9em}
  /* phones: the seal lands on the top-right corner (over the heading), clear of the long Package line */
  .inspect-stamp,.inspect-dent{--s:104px;right:-8px;top:-12px}
}
@media (prefers-reduced-motion:reduce){
  .inspect-ink,.inspect-ink.is-written{transition:none;animation:none}
  .inspect.is-stamping .inspect-stamp,.inspect.is-stamping .inspect-stamp::before,.inspect.is-stamping .inspect-dent,.inspect.is-stamping .inspect-card,
  .inspect.is-lifting .inspect-stamp,.inspect.is-lifting .inspect-dent{animation:none}
  .inspect-next{transition:none}
  .inspect-card,.inspect-card.is-writing{transition:none;transform:none}
  .group-tick i,.group-tick i::after,.group-tick.is-on i::after{transition:none}
  #contact[data-unlock="inspection"] #buy-now,#contact[data-unlock="inspection"] #book-call,
  #contact[data-unlock="inspection"] #buy-now[data-progress="3"],#contact[data-unlock="inspection"] #book-call[data-progress="3"]{transition:none}
  #contact[data-unlock="inspection"] .cta-or .stars i{transition:none}
}

/* big play button over the sales video (tag model-before-play-button-12eb54b to revert) */
.media-slot{position:relative}
.vsl-play{position:absolute;left:50%;top:50%;width:84px;height:84px;margin:-42px 0 0 -42px;border:0;border-radius:50%;
  background:#BD2333;box-shadow:0 0 0 3px #f6efe0,0 3px 14px rgba(0,0,0,.45);cursor:pointer;display:flex;align-items:center;justify-content:center;
  padding:0;z-index:2;transition:background-color .2s ease,opacity .2s ease}
.vsl-play svg{width:42px;height:42px;fill:#f6efe0;margin-left:0}
.vsl-play:hover,.vsl-play:focus-visible{background:#951a28}
.vsl-play:focus-visible{outline:3px solid #f6efe0;outline-offset:3px}
.media-slot.is-playing .vsl-play{opacity:0;pointer-events:none}
@media (max-width:600px){.vsl-play{width:64px;height:64px;margin:-32px 0 0 -32px}.vsl-play svg{width:32px;height:32px;margin-left:0}}


/* taste line below the sales video, above Request a quote (revert: model-taste-line-above-* tag) */
.taste-line{max-width:calc(640*var(--k));margin:calc(40*var(--k)) auto calc(6*var(--k));padding:calc(22*var(--k)) 0;
  border-top:2px solid #BD2333;border-bottom:2px solid #BD2333;font-style:normal;color:var(--ink);
  font-size:calc(30*var(--k));line-height:calc(40*var(--k));text-align:center;filter:none;mix-blend-mode:normal;
  -webkit-text-stroke:calc(.4*var(--k)) var(--ink)}
.taste-red{color:#BD2333;-webkit-text-stroke:calc(.4*var(--k)) #BD2333}
@media (max-width:600px){.taste-line{font-size:19px;line-height:26px;margin:28px 6% 6px;padding:16px 0}}

/* taste line: inspector underline + margin note + video hand-off (js/taste.js; revert tags model-taste-anim-v1-* / model-before-taste-anim-*) */
.taste-line{position:relative}
.taste-red{background-image:linear-gradient(transparent,transparent);background-repeat:no-repeat}
.taste-line.tl-armed .taste-red{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 8' preserveAspectRatio='none'%3E%3Cpath d='M1 5.2 C40 3.6 80 6.4 120 4.4 S180 3.4 199 4.8' fill='none' stroke='%23BD2333' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E");background-size:0% 7px;background-position:0 100%;padding-bottom:3px;-webkit-box-decoration-break:clone;box-decoration-break:clone;
  transition:background-size 1.3s cubic-bezier(.45,.05,.35,1)}
.taste-line.tl-marked .taste-red{background-size:100% 7px}
.taste-note{max-width:calc(640*var(--k));margin:calc(4*var(--k)) auto calc(-8*var(--k));text-align:right;padding-right:calc(10*var(--k));
  font-family:"Bradley Hand","Segoe Print","Snell Roundhand","Comic Neue",cursive;font-style:normal;font-size:max(17px,calc(24*var(--k)));line-height:1.1;
  color:#5b554d;-webkit-text-stroke:0;text-shadow:none;filter:none;mix-blend-mode:multiply;transform:rotate(-4deg);transform-origin:100% 50%}
@media (max-width:600px){.taste-note{margin:6px 6% -4px}}
.quote-link a.tl-next{box-shadow:0 2px 0 #7d1520,0 0 0 4px #f6eedb,0 0 0 6px #BD2333;transition:box-shadow .8s ease}
@media (prefers-reduced-motion:reduce){.taste-line.tl-armed .taste-red{transition:none}}

.taste-line .taste-red{color:inherit}

/* ---------- light and magic (js/magic.js; flags at the top of that file; revert tag model-before-light-magic-*) ---------- */
:root{--mg-lamp:.7}
.mg-t-morning{--mg-lamp:.6}.mg-t-golden{--mg-lamp:.75}.mg-t-night{--mg-lamp:1}
/* 1. reading lamp: a warm pool over a barely dimmer room, soft-light so the paper grain looks lit */
.mg-lamp{position:fixed;inset:0;z-index:25;pointer-events:none;overflow:hidden;mix-blend-mode:soft-light;opacity:var(--mg-lamp);
  background:rgba(30,18,8,.22)}
.mg-lamp-pool{position:absolute;left:0;top:0;width:1000px;height:1000px;margin:-500px 0 0 -500px;pointer-events:none;
  background:radial-gradient(circle closest-side,rgba(255,231,184,.95) 0,rgba(255,220,163,.78) 20%,rgba(250,206,146,.45) 42%,rgba(200,170,130,.12) 70%,rgba(128,128,128,0) 100%);
  transform:translate3d(50vw,20vh,0)}
.mg-still .mg-lamp-pool{transform:translate3d(50vw,18vh,0)}
/* 2. invisible ink: lemon-juice notes in the margins, warmed into view by the lamp */
.mg-note{display:none;position:absolute;left:0;top:0;z-index:3;width:140px;margin:0;pointer-events:none;user-select:none;-webkit-user-select:none;
  font-family:"Bradley Hand","Segoe Print","Snell Roundhand","Comic Neue",cursive;font-size:18px;line-height:1.18;text-align:center;
  color:#8a5a2b;color:color-mix(in srgb,#8a5a2b calc(35% + var(--lv,0) * 65%),#d6b47c);
  text-shadow:0 0 1.5px rgba(138,90,43,.3);-webkit-text-stroke:0;filter:none;mix-blend-mode:multiply;
  opacity:calc(var(--lv,0) * .9);transform-origin:50% 50%}
@media (min-width:1100px){.mg-note{display:block}}
/* 3. watermark: a pressed monogram, seen only inside the lamp pool */
.mg-wm{position:absolute;left:0;top:0;z-index:-1;width:min(380px,76vw);aspect-ratio:1;pointer-events:none;color:#6e4c27;opacity:.16;mix-blend-mode:multiply;
  -webkit-mask-image:radial-gradient(circle 200px at var(--wx,-999px) var(--wy,-999px),#000 0,rgba(0,0,0,.6) 40%,transparent 100%);
  mask-image:radial-gradient(circle 200px at var(--wx,-999px) var(--wy,-999px),#000 0,rgba(0,0,0,.6) 40%,transparent 100%)}
.mg-wm svg{display:block;width:100%;height:100%;overflow:visible;font-family:Schola,"Century Schoolbook",Georgia,serif}
.mg-wm image{opacity:.85}
/* 4. room light from the visitor's clock */
.mg-tint{position:fixed;inset:0;z-index:24;pointer-events:none}
.mg-t-morning .mg-tint{background:linear-gradient(180deg,rgba(214,228,246,.34),rgba(222,233,246,.16));mix-blend-mode:multiply}
.mg-t-golden .mg-tint{background:linear-gradient(112deg,rgba(255,176,90,.55) 0,rgba(255,188,112,.28) 30%,rgba(255,200,140,0) 62%,rgba(40,24,10,.18) 100%);mix-blend-mode:soft-light}
.mg-t-night .mg-tint{background:radial-gradient(ellipse 120% 100% at 50% 40%,rgba(52,36,22,.09),rgba(34,22,12,.2));mix-blend-mode:multiply}
/* 5. foil rosettes: a narrow glint, moved by scroll and the lamp (--g 0..1) */
.stars i.mg-foil{position:relative}
.stars i.mg-foil::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(104deg,transparent 45%,rgba(255,236,196,.22) 48%,rgba(255,247,224,.68) 50%,rgba(255,236,196,.22) 52%,transparent 55%) calc(var(--g,0) * 100%) 0/300% 100% no-repeat;
  -webkit-mask:url(assets/rosette.svg) center/contain no-repeat;mask:url(assets/rosette.svg) center/contain no-repeat}
/* 6. the video's last light spills onto the paper around the frame */
.mg-spill{position:absolute;z-index:26;pointer-events:none;opacity:0;border-radius:2px;
  box-shadow:0 0 24px 4px rgba(var(--c),.5),0 0 80px 26px rgba(var(--c),.3),0 0 170px 60px rgba(var(--c),.14);transition:opacity 4s cubic-bezier(.3,0,.45,1)}
.mg-spill.is-bloom{opacity:1;transition:opacity 1.2s cubic-bezier(.2,.6,.3,1)}
@media (prefers-reduced-motion:reduce){.mg-note,.mg-wm,.mg-spill,.stars i.mg-foil::after{display:none}}
@media print{.mg-lamp,.mg-tint,.mg-note,.mg-wm,.mg-spill,.stars i.mg-foil::after{display:none}}
