/* Adapt to available space, never clip controls to force a one-screen ritual. */
.ritual-hero:not(.is-reading){height:max(780px,100svh);min-height:780px}
.ritual-stage{overflow:visible;bottom:max(96px,calc(76px + env(safe-area-inset-bottom)))}
.ritual-stage > .rite-panel{min-width:0}
.rite-button{min-height:52px;max-width:100%}
.rite-progress{max-width:calc(100% - 32px);white-space:nowrap}
.ritual-note{white-space:normal;text-wrap:balance;line-height:1.6}
#reading{box-sizing:border-box;direction:ltr;gap:24px clamp(28px,4vw,64px);padding-inline:clamp(22px,4vw,48px)}
#reading > *{min-width:0}
#reading .reading-nav{direction:ltr;overflow-wrap:anywhere}
#reading .scroll-stage{overflow:visible;position:relative;top:auto}
#reading .scroll-copy{gap:0}
#reading .fortune-verdict p,#reading .interpretation p{overflow-wrap:anywhere}
#reading .reading-actions a{min-height:44px;display:flex;align-items:center;justify-content:center}
/* Keep the failure note and action in one grid cell across all layouts. */
.jiaobei-panel[data-panel="confirm"] { grid-template-rows: minmax(0, 1fr) auto; }
.confirm-actions { grid-column: 1 / -1; grid-row: 2; display: flex; flex-direction: column; align-items: center; justify-self: center; gap: 8px; width: min(300px, 100%); }
.confirm-actions .rite-attempt { box-sizing: border-box; width: 100%; margin: 0; color: #cdb995; font: 13px/1.6 var(--reading-serif, serif); letter-spacing: .04em; text-align: center; text-wrap: balance; overflow-wrap: anywhere; }
.confirm-actions .rite-attempt:empty { display: none; }
.confirm-actions .rite-button { flex: none; margin: 0; }
.ritual-note .privacy-link { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 10px; color: #d6cfbf; font-size: 14px; text-underline-offset: .2em; letter-spacing: 0; }
@media (max-width: 1100px) {
  .jiaobei-panel[data-panel="confirm"] { grid-template-rows: minmax(270px, 1fr) auto auto auto; }
  .confirm-actions { grid-row: 4; }
}
@media(min-width:851px) and (max-width:1100px){
  #reading{grid-template-columns:minmax(260px,.85fr) minmax(0,1fr);gap:24px 28px}
  #reading .scroll-copy{padding:38px 26px;min-height:560px}
  #reading .scroll-reveal{min-height:560px}
  #reading .scroll-copy blockquote{font-size:22px}
}
@media(max-width:1100px){
  .ritual-stage{inset:130px max(20px,env(safe-area-inset-right)) max(96px,calc(76px + env(safe-area-inset-bottom))) max(20px,env(safe-area-inset-left));overflow:visible}
  .jiaobei-panel{grid-template-columns:minmax(0,1fr) 108px;grid-template-rows:minmax(280px,1fr) auto auto 56px;align-content:center;gap:10px;padding:0}
  .jiaobei-panel .jiaobei-scene{grid-column:1;grid-row:1;width:min(100%,420px);max-height:100%;aspect-ratio:1;justify-self:center;align-self:center}
  .jiaobei-panel .vertical-instruction{position:static;grid-column:2;grid-row:1;width:auto;height:240px;max-height:none;transform:none;justify-self:center;align-self:center}
  .jiaobei-panel .pending-slip,.jiaobei-panel .rite-outcome{position:static;grid-column:1/-1;width:100%;max-width:100%;max-height:none;writing-mode:horizontal-tb;transform:none;text-align:center;margin:0;align-self:center}
  .jiaobei-panel .pending-slip{grid-row:2}
  .jiaobei-panel .rite-outcome{grid-row:3;min-height:0}
  .jiaobei-panel .rite-outcome:empty{display:none}
  .jiaobei-panel .rite-button{grid-column:1/-1;grid-row:4;width:min(300px,100%);justify-self:center;margin:0}
}
@media(max-width:760px){
  .ritual-hero:not(.is-reading){height:max(780px,100svh);min-height:780px}
  .ritual-stage{inset:124px max(16px,env(safe-area-inset-right)) max(110px,calc(90px + env(safe-area-inset-bottom))) max(16px,env(safe-area-inset-left))}
  .intro-panel{align-content:center;justify-content:center;padding:12px 0;overflow:visible}
  .intro-panel h1{font-size:clamp(36px,10.8vw,52px);line-height:1.2}
  .intro-panel .rite-copy{font-size:14px;line-height:1.85;margin:22px 0}
  .intro-panel .rite-button{min-height:54px;margin-top:20px}
  .jiaobei-panel{grid-template-columns:minmax(0,1fr) 96px;grid-template-rows:minmax(270px,1fr) auto auto 56px}
  .jiaobei-panel .jiaobei-scene > p{white-space:normal;overflow:visible;max-width:100%;letter-spacing:.04em;bottom:0}
  .cylinder-panel{grid-template-rows:minmax(350px,1fr) 56px;align-content:stretch;gap:14px}
  .cylinder-panel .cylinder-scene{width:100%;height:100%;min-height:0;max-height:none}
  .cylinder-panel .rite-button{width:min(300px,100%);min-height:54px}
  .ritual-note{bottom:max(16px,env(safe-area-inset-bottom));font-size:12px}
  #reading{padding-top:20px;padding-bottom:max(36px,env(safe-area-inset-bottom))}
  #reading .scroll-copy{padding:30px 26px;min-height:0}
  #reading .scroll-reveal{min-height:0}
  #reading .scroll-copy blockquote{font-size:22px;line-height:1.8;margin:24px 0}
  #reading .scroll-heading{gap:10px;padding-bottom:18px}
  #reading .scroll-copy > .scroll-seal{margin-top:18px}
}
@media(max-width:360px){
  .rite-progress{font-size:13px;gap:4px}
  .rite-progress i{width:10px;flex-basis:10px}
  #reading{padding-inline:16px}
  #reading .scroll-copy{padding:28px 24px}
  #reading .scroll-heading b{font-size:29px}
  #reading .scroll-copy blockquote{font-size:20px}
}
@media(max-height:520px) and (min-width:761px){
  .ritual-hero:not(.is-reading){height:740px;min-height:740px}
  .jiaobei-panel .jiaobei-scene{width:min(100%,360px)}
}
@media(prefers-reduced-motion:reduce){#reading .scroll-reveal,#reading .scroll-copy{animation:none;clip-path:none;opacity:1}}

/* Intro explains the whole ritual; active scenes use the top progress bar. */
.ritual-hero[data-rite="intro"] > .rite-progress { display: none; }
.ritual-hero:not(.is-reading)[data-rite="intro"] {
  display: flex;
  flex-direction: column;
  height: auto;
  min-height: 100svh;
}
.ritual-hero[data-rite="intro"] > header { flex-shrink: 0; }
.ritual-hero[data-rite="intro"] .ritual-stage {
  position: relative;
  inset: auto;
  display: flex;
  flex: 1;
  margin: 0 6vw;
  overflow: visible;
}
.ritual-hero[data-rite="intro"] .intro-panel {
  position: relative;
  inset: auto;
  display: flex;
  flex: 1;
  flex-direction: column;
  align-items: stretch;
  justify-content: space-between;
  padding: 0;
}
.intro-copy {
  display: grid;
  justify-items: start;
  margin-block: auto;
  padding: clamp(40px, 6svh, 84px) 0 clamp(40px, 6svh, 84px) 7vw;
}
.ritual-hero[data-rite="intro"] .rite-overview {
  position: relative;
  inset: auto;
  width: 100%;
  margin: 0;
  flex-shrink: 0;
}
.ritual-hero[data-rite="intro"] .ritual-note {
  position: relative;
  inset: auto;
  transform: none;
  flex-shrink: 0;
  max-width: none;
  margin: 0;
  padding: 24px max(18px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));
  text-align: center;
}
@media (min-width: 761px) and (max-width: 1100px) {
  .ritual-hero[data-rite="intro"] .ritual-stage { margin-inline: 4vw; }
  .intro-copy { padding-left: 5vw; }
  .rite-overview li { grid-template-columns: 24px minmax(0, 1fr); column-gap: 7px; padding-inline: 10px; }
  .rite-overview strong { font-size: 18px; }
  .rite-overview b { grid-row: 1; }
  .rite-overview span { grid-column: 1 / -1; grid-row: 2; letter-spacing: .02em; }
}
@media (max-width: 760px) {
  .ritual-hero[data-rite="intro"] .ritual-stage {
    margin-inline: max(20px, env(safe-area-inset-left)) max(20px, env(safe-area-inset-right));
  }
  .intro-copy {
    justify-items: center;
    padding: clamp(32px, 6svh, 60px) 0 36px;
  }
  .intro-panel .rite-kicker { margin-bottom: 22px; }
  .intro-panel .rite-button { margin-top: 4px; }
  .ritual-hero[data-rite="intro"] .rite-overview { width: min(100%, 430px); align-self: center; }
  .rite-overview li { min-height: 44px; padding: 8px 0; grid-template-columns: 24px 56px minmax(0, 1fr); column-gap: 10px; }
  .rite-overview strong { font-size: 18px; }
  .rite-overview span { font-size: 12px; line-height: 1.6; letter-spacing: .02em; overflow-wrap: anywhere; }
  .ritual-hero[data-rite="intro"] .ritual-note { padding-top: 22px; }
}
@media (max-width: 360px) {
  .ritual-hero[data-rite="intro"] .ritual-stage { margin-inline: 16px; }
  .intro-copy { padding-top: 28px; padding-bottom: 28px; }
  .intro-panel .rite-kicker { font-size: 11px; letter-spacing: .2em; }
  .rite-overview li { column-gap: 8px; }
}

/* Readable ritual captions and warmer object highlights on the intro only. */
.ritual-hero[data-rite="intro"] .rite-overview span {
  color: #d0c3ae;
  font-family: "Songti SC", "STSong", "Noto Serif SC", serif;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.65;
  letter-spacing: .02em;
  text-wrap: pretty;
}
.ritual-hero[data-rite="intro"] .rite-overview strong { color: #e0cda8; }
.ritual-hero[data-rite="intro"] .hero-image {
  opacity: .76;
  filter: saturate(.88) contrast(1.08) brightness(1.08) sepia(.10);
}
.ritual-hero[data-rite="intro"] .hero-shade {
  background:
    linear-gradient(90deg, rgba(4,3,2,.90) 0%, rgba(4,3,2,.64) 36%, rgba(4,3,2,.03) 70%, rgba(4,3,2,.56) 100%),
    linear-gradient(0deg, rgba(4,3,2,.86), transparent 38%, rgba(4,3,2,.20));
}
.ritual-hero[data-rite="intro"]::before {
  background:
    radial-gradient(ellipse at 72% 32%, rgba(197,137,68,.12), transparent 29%),
    linear-gradient(180deg, rgba(7,6,5,.02), rgba(7,6,5,.16) 62%, rgba(7,6,5,.60));
}
@media (min-width: 761px) and (max-width: 1100px) {
  .ritual-hero[data-rite="intro"] .rite-overview li { padding-inline: 6px; }
}
@media (max-width: 760px) {
  .ritual-hero[data-rite="intro"] .hero-image { opacity: .66; }
  .ritual-hero[data-rite="intro"] .hero-shade {
    background:
      linear-gradient(90deg, rgba(4,3,2,.64), rgba(4,3,2,.12) 68%, rgba(4,3,2,.50)),
      linear-gradient(180deg, rgba(4,3,2,.08) 12%, rgba(4,3,2,.38) 44%, rgba(4,3,2,.86) 76%, #070605);
  }
  .ritual-hero[data-rite="intro"] .rite-overview li { min-height: 46px; }
}
