/* Web's editorial frame; App's approved palette only while the ritual is active. */
body[data-design-family="cast"] { margin:0; transition:background-color .65s ease,color .65s ease; }
html.cast-dark,body[data-design-family="cast"].cast-dark { background:#171714!important; color:#efeee4!important; color-scheme:dark!important; }
.cast-page { max-width:1120px; margin:auto; padding:64px 44px 28px; font:400 16px/1.75 var(--sos-ui); color:#302d28; }
.cast-page [hidden] { display:none!important; }
.cast-page p { margin:0 0 22px; }
.cast-page h1,.cast-page h2,.cast-page blockquote { font-family:var(--sos-display); font-weight:400; }
.cast-page h1 { font-size:clamp(42px,5vw,64px); line-height:1.06; letter-spacing:-.025em; margin:0 0 28px; overflow-wrap:anywhere; }
.cast-page h1 em { color:#795537; font-weight:400; }
.cast-page h2 { font-size:32px; line-height:1.2; margin:0 0 20px; }
.cast-page .cast-kicker { font:400 11px/1.6 var(--sos-ui); letter-spacing:.14em; color:#795537; margin:0 0 18px; }
.cast-entry { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,1fr); gap:64px; min-height:570px; }
.cast-introduction .cast-lead { font-size:18px; line-height:1.7; color:#302d28; }
.cast-introduction>p:not(.cast-kicker):not(.cast-lead) { color:#655f55; }
.cast-form { padding:8px 0 0 32px; border-left:1px solid #c7bcad; }
.cast-form label { display:block; font:400 12px/1.6 var(--sos-ui); margin:26px 0 8px; }
.cast-form textarea,.cast-form input { width:100%; box-sizing:border-box; color:#302d28; background:transparent; border:1px solid #bcb1a0; border-radius:0; padding:15px; font:400 16px/1.6 var(--sos-ui); }
.cast-form textarea { min-height:118px; resize:vertical; font:400 23px/1.5 var(--sos-display); }
.cast-form input::placeholder,.cast-form textarea::placeholder { color:#796f62; opacity:1; }
.cast-page :is(button,a,input,textarea,summary):focus-visible { outline:2px solid #795537; outline-offset:4px; }
.cast-page .cast-fine { font:400 12px/1.65 var(--sos-ui); color:#655f55; margin:10px 0 18px; }
.cast-button { display:block; box-sizing:border-box; width:100%; min-height:52px; padding:16px 22px; margin:28px 0 14px; border:1px solid #302d28; border-radius:0; background:#302d28; color:#F7EFE3; text-decoration:none; text-align:center; font:400 14px/1.5 var(--sos-ui); cursor:pointer; }
.cast-button span { float:right; }
.cast-button.secondary { color:#302d28; background:transparent; }
.cast-button:disabled { opacity:.45; cursor:default; }
.cast-page .cast-error { color:#94382f; font:400 14px/1.65 var(--sos-ui); margin:12px 0; }
.cast-page .cast-error:empty { display:none; }
.cast-wait { min-height:560px; text-align:center; max-width:650px; margin:auto; padding:55px 0; }
.cast-wait h2 { font-size:36px; overflow-wrap:anywhere; }
.cast-wait>p:not(.cast-kicker) { color:#655f55; }
.casting-ritual { position:relative; isolation:isolate; display:flex; flex-direction:column; align-items:center; min-height:570px; padding:4px 24px 28px; text-align:center; color:#efeee4; background:#171714; animation:cast-arrive .6s ease both; }
.casting-intro { max-width:680px; width:100%; }
.casting-ritual .cast-kicker { color:#d5c393; margin-bottom:10px; }
.cast-page .casting-ritual h2 { color:#efeee4!important; font-size:34px; line-height:1.25; margin:0 0 30px; overflow-wrap:anywhere; }
.casting-ritual blockquote { font-size:34px; line-height:1.25; max-width:550px; margin:0 auto 14px; }
.cast-page .casting-attribution { font-size:12px; color:#b0b0a1; margin:0; }
.casting-figure { margin-top:52px; min-height:200px; display:flex; flex-direction:column; justify-content:center; align-items:center; }
.hex-lines { display:flex; flex-direction:column-reverse; width:142px; gap:14px; }
.hex-line { height:6px; display:flex; gap:18px; opacity:0; transform:translateY(5px); transition:opacity .45s ease,transform .45s ease; }
.hex-line.formed { opacity:1; transform:none; }
.hex-line span { height:6px; flex:1; background:#d5c393; border-radius:1px; transition:box-shadow .8s ease; }
.cast-page .casting-name { font:400 24px/1.35 var(--sos-display); color:#b0b0a1; margin:24px 0 0; opacity:0; transition:opacity .45s ease; }
.casting-name.formed { opacity:1; }
.casting-halo { position:absolute; z-index:-1; inset:0; pointer-events:none; opacity:0; background:linear-gradient(180deg,rgba(213,195,147,.46),rgba(213,195,147,.20) 42%,rgba(23,23,20,0)); transition:opacity .8s ease; }
.casting-ritual.lit .casting-halo { opacity:1; }
.casting-ritual.lit .hex-line span { box-shadow:0 0 12px rgba(213,195,147,.9); }
.cast-page .casting-caption { font-size:12px; color:#b0b0a1; margin:28px 0 0; }
body.cast-dark .sos-shell { background:#171714!important; border-color:#37372e!important; transition:background-color .65s ease; }
body.cast-dark .sos-shell :is(a,button) { color:#b0b0a1!important; border-color:#65604a!important; }
body.cast-dark .sos-shell .sos-shell-brand { color:#efeee4!important; }
body.cast-dark .cast-footer { color:#b0b0a1; border-color:#37372e; }
body.cast-dark .cast-footer a { color:#b0b0a1; }
.cast-result { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(240px,.8fr); gap:64px; animation:cast-result-arrive .65s ease both; }
.cast-result h1 { font-size:40px; }
.reading-heading { display:flex; justify-content:space-between; align-items:center; gap:24px; margin-top:34px; }
.reading-heading .cast-kicker { margin-bottom:10px; }
.reading-signal { font:400 56px/1.05 var(--sos-display); color:#795537; }
.small-hex { width:50px; gap:5px; flex-shrink:0; }
.small-hex .hex-line { height:3px; gap:7px; }
.small-hex .hex-line span { height:3px; background:#B78758; }
.reading-body { font-size:18px; line-height:1.8; white-space:pre-line; margin:24px 0; }
.reading-trap { border-left:2px solid #B78758; padding-left:20px; margin:28px 0; font-size:18px; line-height:1.75; }
.reading-trap h2.cast-kicker { margin-bottom:10px; }
.reading-origin { border-top:1px solid #c7bcad; padding:18px 0; font-size:14px; color:#655f55; }
.reading-origin summary { cursor:pointer; min-height:36px; color:#302d28; }
.reading-origin p { margin:12px 0; }
.reading-origin blockquote { font-size:27px; margin:18px 0 12px; color:#302d28; }
.cast-response { border-left:1px solid #c7bcad; padding-left:30px; }
.cast-response p { font-size:14px; color:#655f55; }
.response-options { display:grid; gap:10px; margin:24px 0 16px; }
.response-option { text-align:left; min-height:48px; padding:12px 15px; background:transparent; color:#302d28; border:1px solid #c7bcad; border-radius:0; font:400 14px/1.5 var(--sos-ui); cursor:pointer; }
.response-option[aria-pressed="true"] { background:#302d28; color:#F7EFE3; border-color:#302d28; }
.response-option:disabled { cursor:default; }
.reading-pitch { border-top:1px solid #c7bcad; padding-top:24px; margin-top:28px; }
.reading-pitch h2 { font-size:28px; }
.cast-stop { max-width:700px; min-height:520px; margin:auto; }
.cast-stop h1 { font-size:40px; white-space:pre-line; }
.cast-stop p { white-space:pre-line; }
.cast-stop .boundary-quote { font:italic 26px/1.5 var(--sos-display); color:#795537; }
.cast-stop .cast-button { max-width:400px; }
.cast-footer { display:flex; justify-content:space-between; gap:22px; border-top:1px solid #c7bcad; margin-top:64px; padding-top:20px; font:400 11px/1.6 var(--sos-ui); color:#655f55; }
.cast-footer a { text-decoration:none; color:#655f55; letter-spacing:.12em; }
.cast-skip { position:absolute; top:8px; left:20px; z-index:1500; transform:translateY(-200%); background:#F5EFE5; color:#11110F; padding:12px; }
.cast-skip:focus { transform:none; }
.cast-noscript { margin:32px; }
@keyframes cast-arrive { from{opacity:0} to{opacity:1} }
@keyframes cast-result-arrive { from{opacity:0;transform:translateY(7px)} to{opacity:1;transform:none} }
@media(max-width:760px) {
  .cast-page { padding:40px 22px 26px; }
  .cast-entry,.cast-result { grid-template-columns:1fr; gap:32px; }
  .cast-page h1 { font-size:44px; }
  .cast-page h2 { font-size:30px; }
  .cast-form,.cast-response { border-left:0; border-top:1px solid #c7bcad; padding:28px 0 0; }
  .casting-ritual { padding:4px 0 24px; min-height:540px; }
  .casting-ritual blockquote { font-size:30px; }
  .cast-page .casting-ritual h2 { font-size:30px; }
  .casting-figure { margin-top:44px; }
  .cast-result h1 { font-size:36px; }
  .reading-body,.reading-trap { font-size:17px; }
  .cast-footer { flex-wrap:wrap; margin-top:42px; }
}
@media(prefers-reduced-motion:reduce) {
  body[data-design-family="cast"],.hex-line,.hex-line span,.casting-name,body.cast-dark .sos-shell { transition:none; }
  .casting-ritual,.cast-result { animation:none; }
  .hex-line { transform:none; }
  .casting-halo { display:none; }
  .casting-ritual.lit .hex-line span { box-shadow:none; }
}
