:root{color-scheme:light;--ink:#392b20;--cream:#fbf1da}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:#b89675 url('assets/madeira.jpg') center/auto 100vh;font-family:'Montserrat',sans-serif}body:before{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(180deg,#eedbb22b,transparent 38%,#36221013)}.ritual{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 20px 24px;overflow:hidden}header{text-align:center;position:relative;z-index:1}.badge{display:inline-block;padding:8px 19px;border:1px solid #4d382b65;border-radius:30px;font-size:11px;letter-spacing:2.1px}h1{font-family:'Montserrat',sans-serif;font-weight:400;font-size:clamp(29px,3.3vw,51px);line-height:1.15;margin:19px 0 0;letter-spacing:-1.5px}.board{width:min(70vh,680px,96vw);flex-shrink:0;margin:0 auto;position:relative}#board{width:100%;display:block;overflow:visible;mask-image:radial-gradient(circle,#000 60%,transparent 72%)}.card{cursor:pointer;outline:none}.visual{transform-box:view-box;transform-origin:835px 456px;transition:transform .38s cubic-bezier(.2,.75,.25,1),filter .38s}.card:hover .visual,.card:focus-visible .visual{transform:translate(var(--dx),var(--dy));filter:drop-shadow(0 7px 5px #38210b80) brightness(1.035)}.focus-ring{fill:none;stroke:#ffffff;stroke-width:2;opacity:0;pointer-events:none}.card:focus-visible .focus-ring{opacity:1}.hint{display:flex;flex-direction:column;align-items:center;gap:10px;position:relative;margin-top:0;color:#493628}.hint span{font-size:12px;letter-spacing:1px}.hint svg{opacity:.8}dialog{border:0;background:transparent;padding:30px 26px 18px;overflow:visible;color:var(--cream);width:min(420px,94vw);max-height:96svh}dialog::backdrop{background:#21170f99;backdrop-filter:blur(9px)}dialog[open]{animation:appear .55s cubic-bezier(.2,.7,.2,1)}.front{min-height:460px;padding:32px 20px 25px;border-radius:13px;border:1px solid #dbc6a178;outline:1px solid #dbc6a13b;outline-offset:-10px;background:radial-gradient(ellipse at 50% 32%,#9d8050 0,#675039 45%,#433728 100%);box-shadow:0 30px 80px #160e0c55;display:flex;flex-direction:column;align-items:center;text-align:center}.card-brand{font-family:'Montserrat',sans-serif;font-size:21px;letter-spacing:7px;margin-left:7px}.symbol{width:100px;height:100px;border:1px solid #f4dfaf85;border-radius:50%;margin:34px 0 23px;display:grid;place-items:center}.symbol:before{content:"";width:65px;height:65px;border:1px solid #f4dfaf70;border-radius:50%;position:absolute}.symbol span{width:1px;height:56px;background:#fff0bf;position:relative;box-shadow:0 0 20px 3px #f6cf5f55}.symbol span:after{content:"";position:absolute;width:40px;height:1px;background:#fff0bf;left:-20px;top:28px}.eyebrow{font-size:9px;letter-spacing:3px;margin:0 0 10px}h2{font-family:'Montserrat',sans-serif;font-size:43px;font-weight:400;margin:0 0 19px}.message{font-family:'Montserrat',sans-serif;font-size:17px;line-height:1.6;margin:0}.sample{font-size:8px;letter-spacing:2px;opacity:.65;margin-top:29px}.close{position:absolute;right:8px;top:-7px;font-size:29px;border:0;background:transparent;color:var(--cream);cursor:pointer;width:40px;height:40px}.again{display:block;margin:23px auto 0;background:transparent;color:var(--cream);font:12px 'Montserrat',sans-serif;letter-spacing:.6px;border:0;border-bottom:1px solid #f4dfaf80;padding:0 0 8px;cursor:pointer}.again span{margin-left:14px}button:focus-visible{outline:2px solid #ffffff;outline-offset:5px}@keyframes appear{from{opacity:0;transform:translateY(24px) rotateY(-22deg) scale(.93)}to{opacity:1;transform:none}}@media(max-width:600px){.ritual{padding:36px 12px;justify-content:center}h1{max-width:330px;margin:23px auto 10px;font-size:36px;letter-spacing:-1px}.board{width:106vw;max-width:600px;margin:12px -5vw 14px}.badge{font-size:10px}.hint{margin-top:8px}}@media(max-height:700px) and (min-width:601px){.ritual{padding:18px}.board{width:66vh}h1{font-size:34px;margin-top:12px}.hint{gap:6px}.hint svg{height:24px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

@font-face{font-family:Montserrat;src:url(assets/montserrat.ttf) format("truetype");font-weight:100 900;font-display:swap}.logo{display:block;width:126px;height:auto;margin:0 auto 12px}header,.hint{color:#fff}.hint svg{opacity:1}h1{font-size:clamp(26px,2.6vw,40px);font-weight:400;letter-spacing:-1px;text-shadow:0 1px 12px #543b2a33}.card{pointer-events:none}.card .hit{pointer-events:all}.front[hidden]{display:none}.front,.again,.close{color:#fff}.message{font-size:15px}.ritual{padding-top:24px}.board{width:min(66vh,660px,96vw)}@media(max-width:600px){.logo{width:110px}h1{font-size:29px;line-height:1.3;max-width:350px}.board{width:106vw;max-width:600px}}

/* Every card has its own complete surface, shadow and stable hit area. */
.visual{filter:drop-shadow(0 2px 2px #38210b59);pointer-events:none}.card:hover .visual,.card:focus-visible .visual{filter:drop-shadow(0 7px 5px #38210b70) brightness(1.035)}#board{mask-image:none}.card-body{vector-effect:non-scaling-stroke}

/* Original deck artwork: preserve full image and transparent rounded corners. */
.final-card{display:block;width:100%;height:auto;max-height:calc(94svh - 110px);object-fit:contain;filter:drop-shadow(0 16px 30px #160e0c55)}dialog{width:min(500px,96vw);padding:28px 12px 14px;max-height:96svh}.again{margin-top:12px}.close{right:12px;top:0}.visual image{pointer-events:none}

.visual.is-active{transform:translate(var(--dx),var(--dy));filter:drop-shadow(0 7px 5px #38210b70) brightness(1.035)}.visual.is-keyboard .focus-ring{opacity:1}

/* Noninteractive corner ornaments and serif headline. */
.corner-details{position:absolute;top:30px;left:32px;right:32px;display:flex;align-items:center;justify-content:space-between;gap:20px;color:#fff;opacity:.85;pointer-events:none}.corner-name{font-family:"Times New Roman",Times,serif;font-size:22px;line-height:1.3;font-weight:400}.corner-symbol{width:42px;height:42px;flex-shrink:0}.ritual{padding-top:96px}h1{font-family:"Times New Roman",Times,serif;font-size:clamp(32px,3.8vw,52px);font-weight:400;letter-spacing:-.7px;line-height:1.15;margin:0 auto} @media(max-width:600px){.corner-details{top:23px;left:20px;right:20px}.corner-name{font-size:18px}.corner-symbol{width:31px;height:31px}.ritual{padding-top:100px}h1{font-family:"Times New Roman",Times,serif;font-size:34px;max-width:350px;margin:0 auto 10px}}@media(max-height:700px) and (min-width:601px){.ritual{padding-top:85px}.board{width:60vh}}

/* Balance the headline and invitation within the space around the board. */
.ritual{display:grid;grid-template-rows:minmax(88px,1fr) auto minmax(88px,1fr);justify-items:center;align-items:center;min-height:100svh;padding:76px 20px 0;row-gap:0}
.ritual header{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.ritual h1{font-size:clamp(28px,3.2vw,44px);font-weight:300;line-height:1.2;letter-spacing:-.5px;margin:0 auto;color:rgba(255,255,255,.88);text-shadow:none}
.ritual .board{margin:0 auto}
.ritual .hint{margin:0;align-self:center;justify-content:center}
@media(max-width:600px){.ritual{padding:62px 12px 0;grid-template-rows:minmax(96px,1fr) auto minmax(96px,1fr)}.ritual h1{font-size:29px;max-width:350px;padding:0 8px}.ritual .board{width:min(106vw,60svh);max-width:600px;margin:0}}
@media(max-height:700px) and (min-width:601px){.ritual{padding-top:72px;grid-template-rows:minmax(72px,1fr) auto minmax(72px,1fr)}.ritual h1{font-size:30px}.ritual .board{width:min(60vh,calc(100svh - 216px))}}

/* Sharper wood, more depth, and a unified secondary text tone. */
:root{--secondary-text:rgba(255,255,255,.85)}
body{background-image:url('assets/madeira-hd.png');background-size:cover;background-position:center;background-repeat:no-repeat;background-attachment:fixed}
.corner-details{color:var(--secondary-text);opacity:1}
.ritual .hint{color:var(--secondary-text)}
.ritual .hint svg{opacity:1}
.visual{filter:drop-shadow(0 4px 3px #27170e99) drop-shadow(0 8px 7px #27170e55)}
.card:hover .visual,.card:focus-visible .visual,.visual.is-active{filter:drop-shadow(0 7px 4px #27170e99) drop-shadow(0 13px 9px #27170e66) brightness(1.035)}
@media(max-width:600px){.ritual h1{font-size:clamp(22px,6vw,28px);max-width:none;padding:0;white-space:nowrap;letter-spacing:-.35px}}

/* No rectangular tap/focus highlight on the return action. */
.again,.again:focus,.again:focus-visible,.again:active{outline:none;box-shadow:none;-webkit-tap-highlight-color:transparent}
.again:focus-visible{color:#fff4cf}

/* Continuous canvas with safe-area support. */
html{min-height:100%;background:#ae815b linear-gradient(#7e67661a,#7e67661a) center top/cover no-repeat;background-image:linear-gradient(#7e67661a,#7e67661a),url('assets/madeira-hd.png')}
body{min-height:100svh;background:none;overflow-x:hidden}
body::before{display:none}
.ritual{padding-top:calc(76px + env(safe-area-inset-top,0px));padding-bottom:env(safe-area-inset-bottom,0px)}
.ritual header{flex-direction:column;gap:12px}
.intro-body{font-size:14px;font-weight:300;line-height:1.5;color:var(--secondary-text);margin:0;text-align:center}
.corner-details{top:calc(30px + env(safe-area-inset-top,0px));left:max(32px,env(safe-area-inset-left,0px));right:max(32px,env(safe-area-inset-right,0px))}
.corner-name{font-size:19.8px}
.corner-symbol{width:39.9px;height:39.9px}
.center-objects{filter:brightness(.9) saturate(.82) contrast(.96) drop-shadow(0 2px 2px #38210b52) drop-shadow(2px 7px 6px #38210b47);pointer-events:none}
.again,.again:hover,.again:focus,.again:focus-visible,.again:active{border:0;border-bottom:1px solid #e4cf9d99;display:table;margin:12px auto 0;padding:0 0 8px;text-align:center;outline:none;box-shadow:none}
@media(max-width:600px){
.ritual{padding-top:calc(62px + env(safe-area-inset-top,0px));padding-bottom:env(safe-area-inset-bottom,0px);padding-left:max(12px,env(safe-area-inset-left,0px));padding-right:max(12px,env(safe-area-inset-right,0px))}
.ritual .board{width:min(94vw,56svh);max-width:100%}
.corner-details{top:calc(23px + env(safe-area-inset-top,0px));left:max(20px,env(safe-area-inset-left,0px));right:max(20px,env(safe-area-inset-right,0px))}
.corner-name{font-size:16.2px}
.corner-symbol{width:29.45px;height:29.45px}
.ritual header{gap:10px}
.intro-body{font-size:13px}
}

/* Five percent larger title and lightweight, stable card reveal. */
.ritual h1{font-size:clamp(29.4px,3.36vw,46.2px)}
@media(max-height:700px) and (min-width:601px){.ritual h1{font-size:31.5px}}
@media(max-width:600px){.ritual h1{font-size:clamp(23.1px,6.3vw,29.4px)}}
dialog::backdrop{background:#21170fb3;backdrop-filter:none;-webkit-backdrop-filter:none}
dialog[open]{animation:card-reveal .18s ease-out}
@keyframes card-reveal{from{opacity:0}to{opacity:1}}
.visual{transition:transform .25s ease-out}
@media(hover:none){.visual{transition:none}}

/* Reference typography: headline approximately 2.5 times the subtitle. */
.ritual h1{font-size:clamp(34px,4.7vw,62px);line-height:1.12;letter-spacing:-.5px}
.intro-body{font-size:clamp(13.6px,1.88vw,24.8px);line-height:1.5}
.ritual header{gap:12px}
@media(max-width:600px){
 .ritual h1{font-size:clamp(25px,7.6vw,45.6px);white-space:nowrap}
 .intro-body{font-size:clamp(10px,3.04vw,18.24px)}
 .ritual header{gap:8px}
}
/* Move the selected card into view, then reveal its face. */
dialog{perspective:1400px}
dialog[open]{animation:none}
dialog::backdrop{animation:veil-in .4s ease-out}
.card-turn{position:relative;transform-style:preserve-3d;transform-origin:center;will-change:transform}
.flip-front,.flip-back{backface-visibility:hidden;-webkit-backface-visibility:hidden}
.flip-back{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transform:rotateY(180deg);filter:drop-shadow(0 16px 24px #160e0c55);pointer-events:none}
@keyframes veil-in{from{background:#21170f00}to{background:#21170fb3}}
@media(prefers-reduced-motion:reduce){dialog::backdrop{animation:none}.card-turn{will-change:auto}}

/* Warm contact and cast shadows anchor the reference objects to the wood. */
html{background:#b88b59 url(assets/wood-reference.webp) center center/cover no-repeat}
.center-objects{filter:drop-shadow(0 2px 1.5px #27170e99) drop-shadow(3px 8px 5px #38210b80) drop-shadow(5px 13px 10px #38210b40)}

/* SVG touch targets otherwise receive a rectangular WebKit tap highlight.
   Keyboard users retain the custom focus ring on the card artwork. */
#board,#board *{-webkit-tap-highlight-color:transparent}
.card,.card .hit{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation}
.card:focus,.card:active,.card .hit:focus{outline:none}

/* Cover the live viewport and the iPhone home-indicator area, even when
   Safari expands beyond the small viewport used by the board layout. */
html,body{min-height:100vh;min-height:100dvh}
@media(max-width:600px){
 body{isolation:isolate}
 body::before{
  content:"";display:block;position:fixed;inset:0;z-index:-1;
  min-height:100vh;min-height:100lvh;pointer-events:none;
  background:#b88b59 url('assets/wood-reference.webp') center center/cover no-repeat;
 }
}
