/* visit.css — /visit request page and the tap-to-confirm page (visit-token.html).
   Dressed as monticelloumc.church, measured from the live site (2026-09-12): the dark grapevine
   ground with its gold glow, the framed paper page, the green top bar and ribbons, the ◆ rules,
   the gold-edged cards, the wine buttons, Cormorant Garamond / Newsreader / JetBrains Mono.
   The church's type scale is set ×1.38 here (its 14.5px body → 20px) for older readers, and its
   #8a6d3b mono labels are darkened to #7a5f30 so they pass WCAG AA at these sizes.
   Mobile first. */

:root{
  /* ground (out of bounds) */
  --ground:#20160b; --ground-edge:#221708;
  --glow:radial-gradient(at 50% 16%,rgba(170,128,58,.2),rgba(20,13,6,0) 62%);
  --vine:url("/assets/grapevine-gold.svg");
  /* the page */
  --paper:#efe9dd; --card:#f7f1e3; --field:#fbf7ec; --quote:#ece4d1; --picked:#f1e4cc;
  --frame:#4a2e20; --inset:rgba(176,141,79,.5); --edge:rgba(176,141,79,.55); --hair:rgba(138,109,59,.3);
  --noise:url("data:image/svg+xml;utf8,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%22160%22 height=%22160%22><filter id=%22n%22><feTurbulence type=%22fractalNoise%22 baseFrequency=%22.9%22 numOctaves=%222%22/><feColorMatrix values=%220 0 0 0 .42 0 0 0 0 .36 0 0 0 0 .26 0 0 0 .05 0%22/></filter><rect width=%22160%22 height=%22160%22 filter=%22url(%23n)%22/></svg>");
  /* ink */
  --ink:#1a1714; --body:#4a3f33; --soft:#5a4a3a; --label:#7a5f30; --gold:#b08d4f; --line:#8a6d3b;
  --wine:#7A2E2E; --wine-deep:#5e2020; --on-wine:#f3ead6; --green:#233223; --on-green:#c9b78a;
  --error:#9b2c2c;
  --serif:'Newsreader',Georgia,'Times New Roman',serif;
  --display:'Cormorant Garamond',Georgia,serif;
  --mono:'JetBrains Mono',ui-monospace,Menlo,monospace;
  --gutter:1.25rem;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{font-size:100%;-webkit-text-size-adjust:100%;background:var(--ground)}
html,body{margin:0;padding:0}
body{min-height:100vh;background:transparent;color:var(--ink);font-family:var(--serif);font-size:1.25rem;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
/* the church's ground: glow over a 75px grapevine tile, fixed to the window like its .mumc-altar */
body::before{content:"";position:fixed;inset:0;z-index:-1;background-color:var(--ground);background-image:var(--glow),var(--vine);background-size:auto,75px 75px;background-repeat:no-repeat,repeat;pointer-events:none}
::selection{background:#e4d3a8}
[hidden]{display:none!important}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* the paper page (.mumc-shell) */
.page{position:relative;max-width:560px;margin:0 auto;min-height:100vh;background-color:var(--paper);background-image:var(--noise);box-shadow:0 0 40px rgba(26,23,20,.25);display:flex;flex-direction:column}

a{color:var(--wine);text-decoration:none;border-bottom:1px dotted currentColor}
a:hover{border-bottom-style:solid}
a[href^="tel:"]{white-space:nowrap}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex="-1"]:focus-visible{outline:3px solid var(--ink);outline-offset:3px}

/* ── the call-don't-book banner, in the church's green top bar ── */
.urgent{background:var(--green);color:var(--on-green);padding:.8rem var(--gutter) .9rem;line-height:1.45}
.urgent p{margin:0}
.urgent .urgent-title{font-family:var(--serif);font-weight:600;font-size:1.2rem;color:var(--on-wine)}
.urgent .urgent-title::before{content:"† ";content:"† " / "";font-family:var(--mono);font-weight:400;color:var(--on-green)}
.urgent .urgent-body{margin-top:.25rem;font-size:1.15rem}
.urgent a{font-weight:600;font-size:1.25rem;color:#e6cf98;white-space:nowrap;border-bottom-color:rgba(230,207,152,.7)}
.urgent a:focus-visible{outline-color:var(--on-wine)}

.skip{position:absolute;left:-9999px;top:0;background:var(--ink);color:#fff;padding:.75rem 1rem;z-index:10;border:0}
.skip:focus{left:.5rem;top:.5rem}

/* ── masthead: the "‹ BACK TO INDEX · TWO DOORS" row, with the three ribbons ── */
.mast{position:relative;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:0 5rem 0 var(--gutter);border-bottom:1px solid var(--hair);min-height:3rem}
.mast a{font-family:var(--mono);font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;color:var(--label);border:0;display:inline-block;padding:.85rem 0}
.mast a:hover{color:var(--wine)}
.mast a.back::before{content:"‹ ";content:"‹ " / ""}
/* a page without the call banner still opens with the church's green bar */
.page > .mast:first-child{border-top:28px solid var(--green)}
.ribbons{position:absolute;top:0;right:1.1rem;display:flex;gap:7px;pointer-events:none}
.ribbons span{display:block;width:11px;clip-path:polygon(0 0,100% 0,100% 100%,50% 84%,0 100%);box-shadow:0 2px 3px rgba(26,23,20,.3)}
.ribbons span:nth-child(1){height:30px;background:linear-gradient(#7a2e2e,#5e2020)}
.ribbons span:nth-child(2){height:37px;background:linear-gradient(#c49a52,#a37c39)}
.ribbons span:nth-child(3){height:26px;background:linear-gradient(#3a6b40,#2c5232)}

main{flex:1;padding:1.9rem 0 2.5rem}

/* ── the heading block ── */
.eyebrow{font-family:var(--mono);font-size:.8rem;letter-spacing:.26em;color:var(--label);margin:0 var(--gutter);text-align:center;text-transform:uppercase}
h1{font-family:var(--display);font-variant-numeric:lining-nums;font-weight:600;font-size:2.5rem;line-height:1.12;margin:.55rem var(--gutter) 0;text-align:center;color:var(--ink)}
h1 em{font-style:italic;color:var(--wine)}
.lede{font-family:var(--display);font-style:italic;font-size:1.35rem;line-height:1.4;color:var(--soft);margin:.5rem var(--gutter) 0;text-align:center}

/* the ◆ rule: gold hairlines fading out from a diamond */
.divider{display:flex;align-items:center;gap:.9rem;margin:1.6rem var(--gutter) 0}
.divider .dline{flex:1;height:1px;background:linear-gradient(90deg,rgba(0,0,0,0),var(--gold))}
.divider .dline + .dmark + .dline,.divider .dmark ~ .dline{background:linear-gradient(90deg,var(--gold),rgba(0,0,0,0))}
.divider .dmark{font-size:.85rem;line-height:1;color:var(--gold)}

.notice{margin:1.25rem var(--gutter) 0;border:1px solid var(--edge);padding:.8rem 1rem;background:var(--card);color:var(--body)}

/* ── form: each question is one of the church's gold-edged cards ── */
form{margin:1.25rem var(--gutter) 0}
fieldset,.field{border:1px solid var(--edge);background:var(--card);margin:0;padding:1rem .9rem 1.15rem;min-width:0}
fieldset + fieldset,fieldset + .field,.field + fieldset,.field + .field,.error-summary + fieldset{margin-top:.9rem}
legend,.label{font-family:var(--display);font-variant-numeric:lining-nums;font-weight:600;font-size:1.75rem;line-height:1.15;color:var(--ink);padding:0;margin:0 0 .5rem}
legend{float:left;width:100%}
fieldset > :not(legend){clear:both}
.label{display:block}
.label-small{display:block;font-weight:600;font-size:1.2rem;margin:1rem 0 .35rem;color:var(--ink)}
fieldset > .label-small:first-of-type{margin-top:.25rem}
.req{font-weight:400;font-size:1rem;color:var(--soft);font-family:var(--serif)}
.hint{color:var(--soft);margin:.1rem 0 .75rem;font-size:1.1rem;line-height:1.5}
.section-title{font-family:var(--display);font-weight:600;font-size:1.75rem;line-height:1.2;margin:0 0 .25rem}

.choices{display:grid;gap:.6rem}
.choices.times{grid-template-columns:repeat(auto-fill,minmax(8.25rem,1fr))}
.choice{display:flex;gap:.75rem;align-items:flex-start;background:var(--field);border:1px solid rgba(138,109,59,.5);border-radius:3px;padding:.75rem .8rem;min-height:3.5rem;cursor:pointer;color:var(--ink)}
.choice:hover{border-color:var(--line)}
.choice input{flex:none;width:1.5rem;height:1.5rem;margin:.2rem 0 0;accent-color:var(--wine);cursor:pointer}
.choice .c-main{display:block;font-family:var(--display);font-variant-numeric:lining-nums;font-weight:600;font-size:1.45rem;line-height:1.2;color:var(--ink)}
.choice .c-sub{display:block;color:var(--soft);font-size:1.05rem;line-height:1.45;margin-top:.15rem}
.choice .c-tag{display:inline-block;margin-left:.5rem;font-family:var(--mono);font-weight:500;font-size:.75rem;letter-spacing:.16em;color:var(--label);text-transform:uppercase;vertical-align:.2em}
.choice:has(input:checked){border-color:var(--wine);box-shadow:inset 0 0 0 1px var(--wine);background:var(--picked)}
.choice:has(input:focus-visible){outline:3px solid var(--ink);outline-offset:2px}
.choice:has(input:disabled){opacity:.55;cursor:not-allowed;background:var(--quote)}
.choices.times .choice{align-items:center;padding:.65rem .85rem}
.choices.times .choice .c-main{font-family:var(--serif);font-size:1.2rem;font-weight:600}

/* Morning / Afternoon / Evening: the church's labelled ◆ rule */
.group-label{display:flex;align-items:center;gap:.7rem;font-family:var(--mono);font-size:.8rem;letter-spacing:.24em;color:var(--label);text-transform:uppercase;margin:1.2rem 0 .6rem}
.group-label::before,.group-label::after{content:"";flex:1;height:1px}
.group-label::before{background:linear-gradient(90deg,rgba(0,0,0,0),var(--gold))}
.group-label::after{background:linear-gradient(90deg,var(--gold),rgba(0,0,0,0))}
.group-label:first-child{margin-top:.3rem}

input[type=text],input[type=email],input[type=tel],select,textarea{display:block;width:100%;font:inherit;font-size:1.25rem;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:3px;padding:.75rem .9rem;min-height:3.25rem}
textarea{min-height:7rem;resize:vertical;line-height:1.5}
select{appearance:auto;max-width:12rem}
[aria-invalid=true]{border-color:var(--error)!important;box-shadow:inset 0 0 0 1px var(--error)}

.field-error{color:var(--error);font-weight:600;margin:.2rem 0 .5rem}
.field-error::before{content:"\26A0\FE0E  ";content:"\26A0\FE0E  " / ""}

/* buttons: the church's wine button, mono caps */
.btn{display:inline-block;font-family:var(--mono);font-weight:500;font-size:1rem;letter-spacing:.14em;text-transform:uppercase;line-height:1.3;border-radius:3px;padding:.95rem 1.4rem;min-height:3.5rem;cursor:pointer;border:1px solid var(--wine)}
.btn-primary{background:var(--wine);color:var(--on-wine);width:100%}
.btn-primary:hover{background:var(--wine-deep)}
.btn-primary[disabled]{opacity:.7;cursor:progress}
.btn-quiet{background:var(--field);color:var(--wine);margin-top:.8rem}
.btn-quiet:hover{background:var(--picked)}
.submit-row{margin-top:1.5rem}
.submit-row .small{text-align:center}
.small{font-size:1.05rem;color:var(--soft)}

.status{color:var(--body);margin:.3rem 0 .6rem}
.status.problem{color:var(--error);font-weight:600}

.error-summary{border:2px solid var(--error);background:var(--field);padding:1rem 1.2rem;margin:0 0 .9rem}
.error-summary h2{font-family:var(--serif);font-size:1.3rem;margin:0 0 .4rem;color:var(--error)}
.error-summary ul{margin:0;padding-left:1.2rem}
.error-summary a{color:var(--error);font-weight:600}

/* honeypot — off-screen, not announced, not tabbable */
.hp{position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}

/* place autocomplete */
.ac{position:relative}
.ac-list{list-style:none;margin:.25rem 0 0;padding:0;background:var(--field);border:1px solid var(--line);border-radius:3px;box-shadow:0 8px 24px rgba(26,23,20,.22);max-height:20rem;overflow-y:auto;position:absolute;left:0;right:0;z-index:20}
.ac-list li{padding:.8rem 1rem;min-height:3rem;cursor:pointer;border-top:1px solid var(--hair);line-height:1.35}
.ac-list li:first-child{border-top:0}
.ac-list li[aria-selected=true],.ac-list li:hover{background:var(--picked);box-shadow:inset 3px 0 0 var(--wine)}

/* the thank-you */
.done{margin:1.5rem var(--gutter) 0;padding:1.6rem 1.1rem 1.4rem;text-align:center;background:var(--card);border:1px solid var(--edge)}
.done h2{font-family:var(--display);font-weight:500;font-style:italic;font-size:2rem;line-height:1.2;margin:.75rem 0 1rem}
.done p{color:var(--body)}
.seal{width:5rem;height:5rem;margin:0 auto;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 36% 30%,#b23a34 0%,#8a2321 44%,#661918 100%);border-radius:47% 53% 48% 52% / 53% 47% 53% 47%;color:#f2cfc9;font-family:var(--display);font-weight:600;font-size:1.35rem;transform:rotate(-4deg)}

.reveal{animation:visitIn .35s ease-out both}
@keyframes visitIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

footer{border-top:1px solid var(--hair);margin:0 var(--gutter);padding:1.25rem 0 1.75rem;text-align:center}
footer a{font-family:var(--mono);font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--label);border:0;display:inline-block;padding:.85rem 0}
footer a:hover{color:var(--wine)}
footer .sdg{font-family:var(--display);font-style:italic;font-size:1.15rem;color:var(--label);margin:.35rem 0 0}

@media (min-width:30rem){
  :root{--gutter:1.5rem}
  fieldset,.field{padding:1.25rem 1.15rem 1.35rem}
  .choice{gap:.85rem;padding:.8rem 1rem}
  .choices.types{grid-template-columns:1fr}
}

/* desktop: the church's framed page on the vine ground (its breakpoint: 860px wide, 500px tall) */
@media (min-width:860px) and (min-height:500px){
  body{padding:30px 18px}
  .page{width:578px;max-width:none;min-height:calc(100vh - 60px);border:6px solid var(--frame);box-shadow:inset 0 0 0 1px var(--inset),0 18px 44px rgba(0,0,0,.55),0 26px 46px rgba(0,0,0,.35)}
  h1{font-size:2.6rem}
}
@media (prefers-reduced-motion:reduce){ .reveal{animation:none} }
@media (forced-colors:active){ .choice:has(input:checked){outline:3px solid CanvasText} .ribbons{display:none} }

/* ── tap-to-confirm page (/visit/confirm, /visit/decide → visit-token.html) ── */
.token .lede{font-family:var(--serif);font-style:normal;font-size:1.3rem;line-height:1.55;color:var(--body);margin-top:1.4rem}
.token h1:focus{outline:none}
.token h1:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
.facts{margin:1.5rem var(--gutter) 0;padding:1.1rem 1.2rem;background:var(--card);border:1px solid var(--edge);display:grid;grid-template-columns:auto 1fr;gap:.45rem 1rem;align-items:baseline}
.facts dt{font-family:var(--mono);font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;color:var(--label)}
.facts dd{margin:0;font-weight:600;color:var(--ink)}
.token .submit-row{margin:1.5rem var(--gutter) 0}
.token .submit-row .small{margin:.6rem 0 0}
.token-link{text-align:center;margin:1.5rem var(--gutter) 0;font-size:1.25rem}
.token-help{text-align:center;margin:2.5rem var(--gutter) 0}
