:root {
  color-scheme: dark;
  --ink: #0c0711;
  --ink-soft: #17101e;
  --ivory: #f2e8d8;
  --ash: #aa9cac;
  --line: rgba(242, 232, 216, .17);
  --violet: #b86cff;
  --violet-deep: #6e2b9e;
  --amber: #ffad3d;
  --orange: #e8692d;
  --green: #7d9b53;
  --blood: #b93853;
  --black-sugar: #32243b;
  --page: min(1120px, calc(100% - 40px));
  font-family: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  min-width: 300px;
  color: var(--ivory);
  background:
    radial-gradient(circle at 72% 16%, rgba(184,108,255,.12), transparent 27rem),
    radial-gradient(circle at 18% 34%, rgba(255,173,61,.08), transparent 24rem),
    linear-gradient(#0d0812, #09060d 55%, #120a16);
  min-height: 100vh;
  overflow-x: hidden;
}

button, a { -webkit-tap-highlight-color: transparent; }
button { font: inherit; }
button:focus-visible, a:focus-visible, summary:focus-visible {
  outline: 2px solid var(--amber);
  outline-offset: 4px;
}
[hidden] { display: none !important; }

.skip-link {
  position: fixed;
  z-index: 99;
  top: .8rem;
  left: .8rem;
  transform: translateY(-180%);
  background: var(--ivory);
  color: var(--ink);
  padding: .7rem 1rem;
  text-decoration: none;
}
.skip-link:focus { transform: translateY(0); }

.night { position: fixed; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; }
.night::before {
  content: "";
  position: absolute;
  inset: 0;
  opacity: .38;
  background-image: radial-gradient(circle, rgba(255,255,255,.8) 0 1px, transparent 1.5px);
  background-size: 89px 89px;
  background-position: 12px 20px;
}
.moon { position: absolute; display: block; border-radius: 50%; filter: drop-shadow(0 0 2rem currentColor); }
.moon-amber { width: 8rem; height: 8rem; top: 8rem; left: calc(50% - 31rem); color: rgba(255,173,61,.38); background: #e8c997; }
.moon-violet { width: 5.5rem; height: 5.5rem; top: 5.5rem; right: calc(50% - 29rem); color: rgba(184,108,255,.45); border: .55rem solid #b99ac8; }
.cloud { position: absolute; height: 1px; width: 38rem; background: linear-gradient(90deg, transparent, rgba(185,164,193,.22), transparent); filter: blur(3px); }
.cloud-a { top: 13rem; left: 4%; transform: rotate(-4deg); }
.cloud-b { top: 20rem; right: -4%; transform: rotate(5deg); }
.castle-shadow {
  position: absolute;
  left: 50%; bottom: -3rem; width: 52rem; height: 19rem;
  transform: translateX(-50%);
  opacity: .18;
  background: linear-gradient(135deg, transparent 35%, #000 36% 64%, transparent 65%) 0 0/12rem 12rem,
              linear-gradient(#000, #000) 50% 100%/78% 58% no-repeat;
  clip-path: polygon(2% 100%, 2% 50%, 11% 50%, 11% 28%, 18% 28%, 18% 62%, 28% 62%, 28% 42%, 37% 42%, 37% 11%, 45% 11%, 50% 0, 55% 11%, 63% 11%, 63% 48%, 71% 48%, 71% 20%, 80% 20%, 80% 58%, 91% 58%, 91% 38%, 98% 38%, 98% 100%);
}
.grain { position: absolute; inset: -50%; opacity: .06; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E"); animation: grain .35s steps(2) infinite; }

.site-header {
  width: var(--page);
  min-height: 5rem;
  margin: auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  border-bottom: 1px solid var(--line);
}
.brand { display: flex; align-items: center; gap: .7rem; color: var(--ivory); text-decoration: none; font: 700 .68rem/1.2 ui-monospace, monospace; letter-spacing: .17em; }
.brand img { width: 2rem; height: 2rem; }
.brand i { color: var(--ash); font-style: normal; font-weight: 400; }
.sound-toggle { min-height: 44px; border: 1px solid var(--line); color: var(--ash); background: rgba(12,7,17,.7); padding: .55rem .8rem; cursor: pointer; font-size: .7rem; letter-spacing: .08em; }
.sound-toggle[aria-pressed="true"] span { color: var(--amber); text-shadow: 0 0 .8rem var(--amber); }

main, footer { width: var(--page); margin-inline: auto; }
.hero { position: relative; min-height: 34rem; padding: clamp(5rem, 12vw, 8rem) 0 5rem; border-bottom: 1px solid var(--line); }
.eyebrow, .step-heading > p:first-child { color: var(--amber); font: 700 .65rem/1.5 ui-monospace, monospace; letter-spacing: .22em; }
h1 { margin: 1.3rem 0 1rem; font-weight: 400; line-height: .82; letter-spacing: -.08em; }
h1 span { display: block; font-size: clamp(2.4rem, 7vw, 5.8rem); }
h1 strong { display: block; margin-left: .3em; color: var(--orange); font-size: clamp(5.4rem, 15vw, 11.5rem); font-weight: 900; text-shadow: .05em .05em 0 rgba(184,108,255,.22), 0 0 2rem rgba(232,105,45,.12); }
.hero-copy { margin: 2rem 0 0 .5rem; color: #d8cbd5; font-size: clamp(.92rem, 2vw, 1.14rem); line-height: 2; letter-spacing: .06em; }
.open-rule { position: absolute; top: 8rem; right: 0; width: 13.5rem; padding: 1rem; border: 1px solid rgba(184,108,255,.35); background: rgba(14,8,20,.55); color: var(--ash); font-size: .7rem; line-height: 1.8; transform: rotate(2deg); }
.open-rule b { color: var(--violet); }
.hero-pumpkin { position: absolute; right: clamp(1rem, 7vw, 7rem); bottom: 2rem; width: clamp(9rem, 22vw, 15rem); aspect-ratio: 1.12; border-radius: 48% 48% 43% 43%; background: repeating-radial-gradient(ellipse at center, transparent 0 19%, rgba(84,23,4,.23) 20% 25%, transparent 26% 33%), linear-gradient(90deg,#8c3318,#e87228 30%,#f08a35 50%,#e87228 70%,#8c3318); box-shadow: inset 0 -.7rem 1.6rem rgba(38,8,0,.5), 0 2rem 4rem rgba(0,0,0,.45); transform: rotate(-5deg); }
.stem, .patient-stem { position: absolute; width: 20%; height: 25%; left: 40%; top: -17%; border-radius: 40% 10% 35% 10%; background: linear-gradient(90deg,#263716,#7d8c45); transform: rotate(8deg); }
.face-eye { position: absolute; top: 35%; width: 18%; height: 20%; background: #15090d; clip-path: polygon(0 0,100% 30%,60% 100%); }
.face-eye.left { left: 21%; } .face-eye.right { right: 21%; transform: scaleX(-1); }
.face-mouth { position: absolute; left: 26%; bottom: 20%; width: 48%; height: 22%; background: #15090d; clip-path: polygon(0 20%,16% 35%,27% 0,40% 34%,53% 0,67% 36%,82% 5%,100% 35%,90% 82%,12% 100%); }

.stall { margin-top: 3rem; border: 1px solid var(--line); background: rgba(16,10,21,.8); box-shadow: 0 2rem 8rem rgba(0,0,0,.35); backdrop-filter: blur(18px); }
.keeper-line { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 1rem; min-height: 7rem; padding: 1.4rem clamp(1rem, 4vw, 2.4rem); border-bottom: 1px solid var(--line); background: linear-gradient(90deg, rgba(184,108,255,.1), transparent 55%); }
.raven-mark { display: grid; place-items: center; width: 3.2rem; aspect-ratio: 1; color: var(--violet); border: 1px solid rgba(184,108,255,.45); transform: rotate(45deg); box-shadow: inset 0 0 1rem rgba(184,108,255,.1); }
.keeper-line p { margin: 0 0 .35rem; color: var(--ash); font: .62rem/1.4 ui-monospace, monospace; letter-spacing: .12em; }
.keeper-line strong { font-size: clamp(.84rem, 2vw, 1rem); font-weight: 500; }
.step { padding: clamp(2rem, 6vw, 4.5rem); }
.step-heading { margin-bottom: 2rem; }
.step-heading h2 { margin: .4rem 0; font-size: clamp(1.65rem, 4vw, 2.8rem); font-weight: 500; letter-spacing: .03em; }
.step-note { color: var(--ash); font-size: .8rem; }

.choice-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.choice-card { position: relative; min-height: 18rem; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: .35rem; padding: 1.1rem; border: 1px solid var(--line); color: var(--ivory); background: rgba(7,4,10,.55); cursor: pointer; overflow: hidden; transition: transform .18s ease, border-color .18s ease, background .18s ease; }
.choice-card:hover { transform: translateY(-4px); border-color: rgba(255,173,61,.6); background: rgba(33,18,32,.75); }
.choice-card[aria-checked="true"] { border-color: var(--amber); box-shadow: inset 0 0 0 1px var(--amber), 0 0 2rem rgba(255,173,61,.1); }
.choice-card small { color: var(--ash); font: .6rem/1.4 ui-monospace, monospace; letter-spacing: .13em; }
.choice-card strong { font-size: 1.05rem; font-weight: 500; }
.choice-card em { color: var(--ash); font-size: .72rem; font-style: normal; line-height: 1.6; }
.mini-pumpkin { position: absolute; top: 2.9rem; width: 7rem; height: 6.1rem; border-radius: 48% 48% 43% 43%; background: linear-gradient(90deg,#793019,var(--shell-color) 28%,#ef8734 50%,var(--shell-color) 72%,#793019); box-shadow: inset 0 -.5rem 1rem rgba(32,6,0,.45), 0 .8rem 2rem rgba(0,0,0,.28); transform: rotate(var(--tilt, 0deg)); }
.mini-pumpkin::before { content:""; position:absolute; width:1.2rem; height:1.9rem; background:#536832; left:2.9rem; top:-1.15rem; border-radius:50% 12%; }
.pumpkin-face { position:absolute;inset:0;width:100%;height:100%;overflow:visible; }
.face-light { fill:var(--core-bright,#1b0a10); }
.face-ink { fill:#1b0a10; }
.face-line { fill:none;stroke:#291016;stroke-width:4;stroke-linecap:round;stroke-linejoin:round; }
.face-line.stitches { stroke-width:3; }
.face-tear { fill:var(--core-color,#ffd182);stroke:var(--core-bright,#e4a557);stroke-width:1.3; }
.face-patch { fill:#b98a6b;stroke:#321521;stroke-width:2; }
.shell-crown { display:none;position:absolute;left:5%;top:-10%;width:43%;height:30%;transform:rotate(-17deg);background:linear-gradient(125deg,#fff0b8,#f6bb46 55%,#ab6228);clip-path:polygon(0 8%,29% 38%,48% 0,70% 38%,100% 12%,88% 100%,12% 100%); }
[data-look="crown"] .shell-crown { display:block; }
.shell-crown::after { content:"";position:absolute;left:43%;top:52%;width:17%;height:28%;background:var(--core-color,#8752ad);transform:rotate(45deg); }
.core-grid .choice-card { min-height: 16rem; }
.core-orb { position: absolute; top: 2.4rem; width: 6.4rem; aspect-ratio: 1; border-radius: 54% 46% 58% 42%; background: radial-gradient(circle at 34% 30%, #fff 0 4%, transparent 5%), radial-gradient(circle at 40% 35%, var(--core-bright), var(--core-color) 44%, #170c1d 75%); filter: drop-shadow(0 0 1rem var(--core-color)); animation: pulse 1.15s ease-in-out infinite; }
.core-orb::before, .core-orb::after { content:""; position:absolute; top:-.55rem; width:2.7rem; height:3rem; border-radius:60% 45% 0 50%; background:inherit; }
.core-orb::before { left:.25rem; transform:rotate(-24deg); } .core-orb::after { right:.25rem; transform:scaleX(-1) rotate(-24deg); }
.back-button { min-height: 44px; margin-top: 1.4rem; border: 0; color: var(--ash); background: transparent; text-decoration: underline; text-underline-offset: .3rem; cursor: pointer; font-size: .76rem; }

.stitch-status { display: flex; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; color: var(--ash); font: .72rem/1.4 ui-monospace, monospace; letter-spacing: .08em; }
.stitch-status b { color: var(--amber); font-size: 1rem; }
.operating-table { position: relative; display: grid; place-items: center; min-height: 31rem; border: 1px solid rgba(184,108,255,.25); overflow: hidden; background: radial-gradient(circle, rgba(184,108,255,.12), transparent 45%), repeating-linear-gradient(0deg,transparent 0 39px,rgba(255,255,255,.025) 40px), repeating-linear-gradient(90deg,transparent 0 39px,rgba(255,255,255,.025) 40px), #09060d; }
.ritual-rings, .ritual-rings i { position: absolute; border: 1px solid rgba(184,108,255,.3); border-radius: 50%; }
.ritual-rings { width: 23rem; aspect-ratio:1; animation: turn 18s linear infinite; }
.ritual-rings::before, .ritual-rings::after { content:"✦  ☾  ✦  Ⅶ  ✦  ☽"; position:absolute; inset:-1.3rem; color:rgba(184,108,255,.5); font:1rem/1 monospace; letter-spacing:2.7rem; white-space:nowrap; }
.ritual-rings i:nth-child(1) { inset:2rem; } .ritual-rings i:nth-child(2) { inset:5rem; } .ritual-rings i:nth-child(3) { inset:8rem; }
.patient { --patient-scale:1; position: relative; width: 14rem; height: 12rem; z-index:1; border-radius:48% 48% 43% 43%; background:linear-gradient(90deg,#662714,var(--shell-color,#d85d25) 28%,#ee8232 50%,var(--shell-color,#d85d25) 72%,#662714); box-shadow:inset 0 -1rem 2rem rgba(35,5,0,.5),0 2rem 4rem rgba(0,0,0,.42); transform:scale(var(--patient-scale)); }
.heart { position:absolute; left:50%; top:48%; width:2.4rem; height:2.4rem; background:var(--core-color,#b86cff); transform:translate(-50%,-50%) rotate(45deg); border-radius:.35rem; filter:drop-shadow(0 0 .9rem var(--core-color,#b86cff)); animation:heart-pulse .85s ease-in-out infinite; }
.heart::before,.heart::after { content:""; position:absolute; width:100%; height:100%; border-radius:50%; background:inherit; }.heart::before{left:-50%;}.heart::after{top:-50%;}
.stitch-point { position:absolute; z-index:4; left:var(--x,50%); top:var(--y,50%); width:64px; height:64px; border-radius:50%; border:1px solid var(--amber); background:radial-gradient(circle,rgba(255,255,255,.9),rgba(255,173,61,.45) 20%,rgba(255,173,61,.08) 55%,transparent 58%); color:#fff; font-size:1.35rem; cursor:pointer; transform:translate(-50%,-50%) scale(0); opacity:0; transition:left .16s ease,top .16s ease; }
.stitch-point.is-live { animation:stitch-pop .3s ease forwards,stitch-glow .75s ease-in-out infinite alternate .3s; }
.start-ritual { position:absolute; z-index:5; inset:auto auto 1.5rem; min-width:min(22rem,calc(100% - 2rem)); min-height:64px; border:1px solid var(--amber); color:var(--ink); background:linear-gradient(135deg,#ffd188,var(--amber)); cursor:pointer; box-shadow:0 0 2rem rgba(255,173,61,.18); }
.start-ritual span,.start-ritual small { display:block; }.start-ritual span{font-weight:800;}.start-ritual small{font:.62rem/1.4 ui-monospace,monospace;margin-top:.25rem;}
.operating-table.is-running .start-ritual { display:none; }
.operating-table.is-running .patient { animation:patient-shake 1.3s ease-in-out infinite; }

.result { padding:clamp(2rem,6vw,4.5rem); }
.result-heading { text-align:center; }
.familiar-card { position:relative; width:min(34rem,100%); min-height:46rem; margin:auto; padding:2.1rem clamp(1.2rem,5vw,3.2rem) 2rem; border:1px solid rgba(255,173,61,.55); background:radial-gradient(circle at 50% 26%,rgba(184,108,255,.17),transparent 15rem),linear-gradient(160deg,#1a0e20,#0b0710 60%,#201120); box-shadow:0 2.5rem 6rem rgba(0,0,0,.55),inset 0 0 0 8px #0d0812,inset 0 0 0 9px rgba(255,173,61,.18); overflow:hidden; text-align:center; }
.card-edition { position:absolute;left:1rem;right:1rem;top:.7rem;display:flex;flex-wrap:wrap;justify-content:center;gap:.15rem 1rem;margin:0;color:#c39458;font:.55rem/1.5 ui-monospace,monospace;letter-spacing:.12em; }
.card-edition span { max-width:100%;overflow-wrap:anywhere; }
.card-moons i { position:absolute; top:3.1rem; border-radius:50%; }.card-moons i:first-child{left:2.1rem;width:3.4rem;height:3.4rem;background:#d6b985;box-shadow:0 0 1rem rgba(255,173,61,.25)}.card-moons i:last-child{right:2.1rem;width:2.4rem;height:2.4rem;border:.28rem solid #aa79be;box-shadow:0 0 1rem rgba(184,108,255,.25)}
.specimen { position:relative; width:15rem; height:17rem; margin:3rem 0 .8rem;left:50%;transform:translateX(-50%);filter:drop-shadow(0 1.5rem 1.3rem rgba(0,0,0,.6)); }
.specimen-body { position:absolute; left:2.9rem; top:3.6rem; width:9.2rem; height:10rem; border-radius:50% 50% 45% 45%; background:linear-gradient(90deg,#542012,var(--shell-color) 30%,#e8792d 50%,var(--shell-color) 70%,#542012); box-shadow:inset 0 -.7rem 1.2rem rgba(35,5,0,.55); }
.specimen-body::before { content:""; position:absolute; left:3.8rem; top:-2rem; width:1.7rem; height:2.5rem; border-radius:50% 10%; background:#61713d; }
.specimen .face-light { filter:drop-shadow(0 0 4px var(--core-color)); }
.specimen-body[data-look="crown"] { border-radius:46% 46% 42% 42%; }
.specimen-body[data-look="tear"] { border-radius:48% 48% 44% 44%; }
.specimen-body[data-look="scar"] { border-radius:43% 54% 39% 48%; }
.specimen-body[data-look="scar"]::before { transform:rotate(18deg); }
.core-magic { position:absolute;inset:0;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 4px var(--core-color)); }
.magic-bolt,.magic-drop,.magic-candy { fill:var(--core-color);stroke:var(--core-bright);stroke-width:1;stroke-linejoin:round; }
.magic-spark,.magic-wisp { fill:none;stroke:var(--core-bright);stroke-width:2;stroke-linecap:round; }
.magic-ghost { fill:#ccb3db;opacity:.85; }
.ghost-eyes { fill:none;stroke:#32203d;stroke-width:2;stroke-linecap:round; }
.wing { position:absolute; top:6.1rem; width:5rem; height:6.4rem; background:linear-gradient(135deg,#25152e,#70418b); clip-path:polygon(100% 0,83% 38%,100% 52%,62% 64%,74% 83%,0 100%,23% 42%); }.wing-left{left:0}.wing-right{right:0;transform:scaleX(-1)}
.specimen-tail { position:absolute;inset:0;width:100%;height:100%;color:var(--core-color);pointer-events:none; }
[data-core="violet"] .wing { background:linear-gradient(135deg,#32164e,#9d4fe6); }
[data-core="amber"] .wing { background:linear-gradient(135deg,#643039,#d48a45);clip-path:polygon(100% 0,100% 56%,85% 58%,70% 69%,65% 84%,47% 80%,29% 85%,0 100%,9% 55%,40% 20%); }
[data-core="black"] .wing { background:linear-gradient(135deg,#302039,#776080);clip-path:polygon(100% 0,87% 37%,100% 50%,65% 58%,77% 80%,44% 70%,32% 93%,22% 79%,0 100%,21% 37%); }
[data-core="black"] .specimen-tail { color:#a180b3; }
[data-core="black"] .specimen-body { box-shadow:inset 0 -.7rem 1.2rem rgba(24,5,29,.7),inset -.6rem 0 1.5rem #43263e; }
.tail-curve { fill:none;stroke:currentColor;stroke-width:7;stroke-linecap:round; }
.tail-tip { fill:currentColor; }
.rarity { display:grid;justify-items:center;gap:.35rem;width:fit-content;min-width:min(100%,12rem);max-width:100%;margin:.35rem auto 1.3rem;padding:.8rem 1.2rem .9rem;border:1px solid rgba(255,173,61,.65);color:#ffce83;background:linear-gradient(135deg,rgba(255,173,61,.12),rgba(184,108,255,.06));box-shadow:0 0 1.8rem rgba(255,173,61,.1),inset 0 0 1rem rgba(255,173,61,.04); }
.rarity-stars { font:.78rem/1.2 ui-monospace,monospace;letter-spacing:.12em; }
.rarity-title { font-size:clamp(1.4rem,4vw,1.75rem);line-height:1.4;font-weight:800;letter-spacing:.12em;text-shadow:0 0 1rem rgba(255,173,61,.4); }
.rarity-code { color:#d8b98d;font:700 .58rem/1.3 ui-monospace,monospace;letter-spacing:.2em; }
.result-label { margin:0;color:var(--ash);font-size:.72rem;letter-spacing:.15em; }
.familiar-card h3 { margin:.4rem 0 .2rem;font-size:clamp(2rem,6vw,3.3rem);font-weight:600;letter-spacing:.03em; }
.familiar-kind { margin:.2rem 0 1.4rem;color:var(--violet);font:.7rem/1.4 ui-monospace,monospace;letter-spacing:.12em; }
.familiar-copy { min-height:4.5rem;margin:0 auto 1.5rem;max-width:25rem;color:#d7cbd5;font-size:.88rem;line-height:1.9; }
.familiar-facts { display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line); }
.familiar-facts span { padding:.8rem;color:var(--ash);font-size:.68rem; }.familiar-facts span+span{border-left:1px solid var(--line)}.familiar-facts b{display:block;margin-top:.3rem;color:var(--ivory);font-size:.8rem;font-weight:500}
.card-number { margin:1.1rem 0 .5rem;color:var(--ash);font:.58rem/1.4 ui-monospace,monospace;letter-spacing:.12em; }
.dawn-note { margin:.4rem 0 0;color:#8e8191;font-size:.65rem; }
.result-actions { display:flex;justify-content:center;gap:.8rem;margin:1.4rem auto 0; }
.primary-button,.secondary-button { min-height:52px;padding:.7rem 1.2rem;cursor:pointer; }.primary-button{border:1px solid var(--amber);background:var(--amber);color:var(--ink);font-weight:700}.secondary-button{border:1px solid var(--line);background:transparent;color:var(--ivory)}
.copy-status{text-align:center;color:var(--amber);font-size:.72rem;min-height:1.2rem}

.ledger { margin:2rem 0 5rem;border:1px solid var(--line);background:rgba(10,6,14,.65); }
.ledger summary { min-height:6rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.3rem clamp(1rem,4vw,2rem);cursor:pointer;list-style:none; }.ledger summary::-webkit-details-marker{display:none}.ledger summary small,.ledger summary strong{display:block}.ledger summary small{color:var(--ash);font:.58rem/1.4 ui-monospace,monospace;letter-spacing:.15em}.ledger summary strong{font-size:1.25rem;margin-top:.25rem}.ledger summary>span:last-child{color:var(--amber)}
.ledger-body { padding:0 clamp(1rem,4vw,2rem) 2rem;border-top:1px solid var(--line); }.ledger-body ol{list-style:none;padding:0;margin:0}.ledger-body li{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--line)}.ledger-body li i{width:2.4rem;aspect-ratio:1;border-radius:50%;background:var(--swatch);box-shadow:inset 0 0 0 .4rem rgba(0,0,0,.25)}.ledger-body li strong,.ledger-body li small{display:block}.ledger-body li small{color:var(--ash);font-size:.63rem;margin-top:.2rem}.ledger-body li time{color:var(--ash);font:.58rem/1 monospace}.local-note,#ledger-empty{color:var(--ash);font-size:.72rem;line-height:1.7}.danger{color:#b87986}

footer { min-height:12rem;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;border-top:1px solid var(--line);color:var(--ash);font:.62rem/1.7 ui-monospace,monospace;letter-spacing:.08em; }footer img{width:2.8rem}footer p span{color:#756978}footer a{color:var(--ivory);text-underline-offset:.3rem}

@keyframes grain { 0%{transform:translate(0)}25%{transform:translate(2%,1%)}50%{transform:translate(-1%,2%)}75%{transform:translate(1%,-2%)}100%{transform:translate(-2%,-1%)} }
@keyframes pulse { 0%,100%{transform:scale(.94)}50%{transform:scale(1.08)} }
@keyframes turn { to{transform:rotate(360deg)} }
@keyframes stitch-pop { to{transform:translate(-50%,-50%) scale(1);opacity:1} }
@keyframes stitch-glow { to{box-shadow:0 0 2rem var(--amber);transform:translate(-50%,-50%) scale(1.08)} }
@keyframes heart-pulse { 0%,100%{transform:translate(-50%,-50%) rotate(45deg) scale(.9)}50%{transform:translate(-50%,-50%) rotate(45deg) scale(1.08)} }
@keyframes patient-shake { 0%,100%{transform:scale(var(--patient-scale)) rotate(-1deg)}50%{transform:scale(var(--patient-scale)) rotate(1deg) translateY(-2px)} }

@media (max-width: 760px) {
  :root { --page:min(100% - 24px, 44rem); }
  .site-header{min-height:4.3rem}.brand i{display:none}
  .hero{min-height:36rem;padding-top:4rem}.open-rule{position:relative;top:auto;right:auto;margin:2rem 0 0;width:min(15rem,65%)}.hero-pumpkin{right:1rem;bottom:1.5rem}
  .choice-grid{grid-template-columns:1fr}.choice-card{min-height:10rem;align-items:flex-start;padding-left:9.5rem;text-align:left}.mini-pumpkin{top:2rem;left:1.1rem;width:6.6rem;height:5.8rem}.core-grid .choice-card{min-height:9.5rem}.core-orb{top:1.55rem;left:1.6rem;width:5.6rem}
  .operating-table{min-height:27rem}.ritual-rings{width:19rem}.patient{--patient-scale:.88}.operating-table.is-running .patient{animation:patient-shake 1.3s ease-in-out infinite}
  .familiar-card{min-height:43rem}.card-edition{display:grid;gap:0;font-size:.6rem}.specimen{transform:translateX(-50%) scale(.9);margin-top:2rem;margin-bottom:-.4rem}
  footer{grid-template-columns:auto 1fr;padding:2rem 0}footer a{grid-column:1/-1}
}

@media (max-width: 380px) {
  :root{--page:calc(100% - 16px)}
  h1 strong{margin-left:0}.hero-copy{margin-left:0}.keeper-line{grid-template-columns:1fr}.raven-mark{display:none}.step{padding:1.4rem .9rem}.operating-table{min-height:24rem}.ritual-rings{width:17rem}.patient{--patient-scale:.72}.stitch-point{width:58px;height:58px}.result{padding:1.4rem .75rem}.familiar-card{min-height:41rem;padding-inline:1rem}.specimen{transform:translateX(-50%) scale(.78);margin-bottom:-1.5rem}.result-actions{flex-direction:column}.result-actions button{width:100%}.ledger-body li{grid-template-columns:auto 1fr}.ledger-body li time{grid-column:2}
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior:auto !important; animation-duration:.001ms !important; animation-iteration-count:1 !important; }
  .stitch-point.is-live { transform:translate(-50%,-50%) scale(1); opacity:1; }
}
