/* ===== EDIT ME: COLOURS =====
   --paper = page colour, --ink = text, --accent = headings/highlights, --bg = area behind the book */
:root{--paper:#f3ecd9;--ink:#1d1a16;--accent:#7a2335;--rule:#1d1a16;--bg:#2a2622;--muted:#5c554a;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#14120f}}
:root[data-theme="dark"]{--bg:#14120f}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font-family:"Libre Baskerville",Georgia,"Times New Roman",serif;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:12px}
.book{position:relative;width:min(94vw,520px);height:min(78vh,720px);perspective:1800px}
.page{position:absolute;inset:0;background:var(--paper);background-image:repeating-linear-gradient(0deg,rgba(0,0,0,.025) 0 2px,transparent 2px 4px);padding:26px 24px;overflow:auto;box-shadow:0 12px 40px rgba(0,0,0,.5);transform-origin:left center;transition:transform 1s cubic-bezier(.645,.045,.355,1);backface-visibility:hidden;-webkit-backface-visibility:hidden;will-change:transform;pointer-events:none;transform:none}
.page::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.4),rgba(0,0,0,0) 70%);opacity:0;transition:opacity 1s ease-in;pointer-events:none}
.page.on{pointer-events:auto}
.page.past{transform:rotateY(-180deg)}
.page.past::after{opacity:1}
h1,h2,h3{font-family:"Playfair Display","Old Standard TT",Georgia,serif;margin:0;line-height:1.05}
.cover{text-align:center;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:18px}
.cover .extra{font-size:clamp(34px,10vw,56px);font-weight:900;letter-spacing:.02em;color:var(--accent)}
.cover p{margin:0;font-style:italic;font-size:17px}
.btn{font:inherit;cursor:pointer;border:2px solid var(--ink);background:var(--ink);color:var(--paper);padding:11px 22px;font-size:15px}
.btn.ghost{background:transparent;color:var(--ink)}
.btn:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.mast{text-align:center;border-top:4px double var(--rule);border-bottom:4px double var(--rule);padding:8px 0;margin-bottom:12px}
.mast .meta{display:flex;justify-content:space-between;font-size:11px;border-bottom:1px solid var(--rule);padding-bottom:4px;margin-bottom:6px}
.mast h2{font-size:clamp(30px,9vw,46px);font-weight:900}
.head{font-size:clamp(34px,11vw,58px);font-weight:900;text-align:center;margin:14px 0 6px}
.lede{text-align:center;font-style:italic;margin:0 0 16px;line-height:1.5}
.count{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--rule);margin:12px 0}
.count div{text-align:center;padding:8px 0;border-right:1px solid var(--rule);font-size:12px}
.count div:last-child{border:0}
.count b{display:block;font-size:26px;font-family:"Playfair Display",Georgia,serif}
.toc{border-top:1px solid var(--rule);margin-top:14px}
.toc a{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px dotted var(--muted);color:inherit;text-decoration:none;cursor:pointer;font-size:15px}
.folio{display:flex;justify-content:space-between;font-size:11px;border-bottom:1px solid var(--rule);padding-bottom:5px;margin-bottom:14px}
.page h3{font-size:24px;margin:16px 0 6px}
.cols{column-count:2;column-gap:20px;column-rule:1px solid var(--muted);line-height:1.6;font-size:14.5px;text-align:justify;hyphens:auto}
.cols p{margin:0 0 10px}
.cols p:first-child::first-letter{float:left;font-size:46px;line-height:.9;padding:4px 6px 0 0;font-family:"Playfair Display",Georgia,serif;font-weight:900;color:var(--accent)}
.notice{border:2px solid var(--ink);padding:12px 14px;margin:14px 0;font-size:14px;line-height:1.5}
.notice i{color:var(--muted)}
.event{border-top:1px solid var(--rule);padding:12px 0;line-height:1.5}
.event h3{margin-top:0}
.event a{color:var(--accent);font-weight:700}
label{display:block;font-size:13px;margin:12px 0 4px}
input[type=text]{width:100%;font:inherit;padding:10px;border:1px solid var(--ink);background:#fffdf5;color:#1d1a16}
.stepper{display:flex;align-items:center;gap:0}
.stepper button{width:42px;height:42px;font-size:20px;border:1px solid var(--ink);background:#fffdf5;cursor:pointer}
.stepper span{min-width:50px;text-align:center;font-size:20px}
.row{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
#thanks{margin-top:14px;font-style:italic;color:var(--accent)}
.nav{display:flex;gap:12px;align-items:center;color:#ddd}
.nav button{font:inherit;color:#ddd;background:transparent;border:1px solid #888;padding:7px 16px;cursor:pointer}
.nav button:disabled{opacity:.35;cursor:default}
.nav button:focus-visible{outline:3px solid #fff}
@media (max-width:420px){.cols{column-count:1}}
@media (prefers-reduced-motion:reduce){.page,.page.on{transition:none}}
/* ===== PHOTOS (files: assets/photo1.jpg, assets/photo2.jpg) ===== */
.photo{margin:12px 0;border:1px solid var(--rule);padding:6px;background:#fffdf5}
.photo img{display:block;width:100%;max-height:190px;object-fit:cover;filter:sepia(.25) contrast(1.05)}
.photo figcaption{display:none}
.photo.missing{border-style:dashed;text-align:center;padding:34px 8px;color:var(--muted)}
.photo.missing figcaption{display:block;font-size:13px}

/* ===== FULL-PAGE INTRO ===== */
#env{position:fixed;inset:0;z-index:999;background:var(--paper);background-image:repeating-linear-gradient(0deg,rgba(0,0,0,.025) 0 2px,transparent 2px 4px);color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:18px;padding:24px;transition:opacity .9s,visibility .9s}
#env.gone{opacity:0;visibility:hidden}
.intro-kicker{margin:0;font-style:italic;font-size:17px;color:var(--muted)}
.intro-title{font-family:"Playfair Display",Georgia,serif;font-weight:900;font-size:clamp(40px,13vw,88px);line-height:1.05;color:var(--accent);margin:0}
.intro-sub{margin:0;font-size:16px}
.intro-rule{width:min(70vw,340px);border:0;border-top:4px double var(--rule);margin:0}
.intro-btn{margin-top:10px;padding:13px 44px;font-size:18px}

/* ===== MUSIC BUTTON ===== */
.mus{position:fixed;top:calc(12px + env(safe-area-inset-top,0px));right:12px;width:42px;height:42px;border-radius:50%;border:1px solid #bbb;background:rgba(0,0,0,.5);color:#fff;font-size:20px;z-index:1000;cursor:pointer}
.mus.off{opacity:.5;text-decoration:line-through}
.mus:focus-visible{outline:3px solid #fff}
@media (prefers-reduced-motion:reduce){#env{transition:none}}
