:root{--paper:#e8e0cb;--paper-dark:#191d18;--ink:#1d2620;--ink-soft:#4d5c4f;--accent:#2f4a3a;--accent2:#b59a3a;--danger:#8a2b22;--seal:#a5281f;--line:color-mix(in srgb, var(--ink) 22%, transparent);--line-strong:color-mix(in srgb, var(--ink) 55%, transparent);--shade:color-mix(in srgb, var(--ink) 8%, transparent);--font:"Noto Serif SC", "Source Han Serif SC", "Source Han Serif CN", "Songti SC", "STSong", "SimSun", "Noto Serif CJK SC", serif;--font-ui:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", "Noto Sans CJK SC", system-ui, sans-serif;--radius:3px;--ease:cubic-bezier(.2, .7, .2, 1);--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.25 0 0 0 0 0.2 0 0 0 0 0.12 0 0 0 0.55 0'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)'/%3E%3C/svg%3E");--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper-dark);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.75;overflow:hidden}button,input,textarea,select{font:inherit;color:inherit}::selection{background:color-mix(in srgb, var(--accent2) 45%, transparent)}.desk{background:radial-gradient(120% 90% at 50% 40%, color-mix(in srgb, var(--paper-dark) 70%, #3a3328) 0%, var(--paper-dark) 62%, #050505 100%);justify-content:center;align-items:stretch;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.desk:after{content:"";pointer-events:none;background-image:var(--grain);opacity:.35;mix-blend-mode:overlay;position:absolute;inset:0}.paper{background-color:var(--paper);background-image:radial-gradient(140% 100% at 50% 0%, transparent 55%, color-mix(in srgb, var(--ink) 10%, transparent) 100%), var(--grain);background-blend-mode:normal, multiply;color:var(--ink);position:relative}.book{z-index:1;filter:drop-shadow(0 30px 40px #0000008c);width:min(1240px,97vw);height:min(860px,96vh);animation:book-in .9s var(--ease) both;grid-template-columns:1fr 1fr;margin:auto;display:grid;position:relative}@keyframes book-in{0%{opacity:0;transform:translateY(18px)scale(.985)}}.page{flex-direction:column;min-height:0;padding:34px 40px 30px;display:flex;position:relative;overflow:hidden}.page.left{box-shadow:inset -26px 0 40px -26px color-mix(in srgb, var(--ink) 55%, transparent);border-radius:6px 0 0 6px}.page.right{box-shadow:inset 26px 0 40px -26px color-mix(in srgb, var(--ink) 55%, transparent);border-radius:0 6px 6px 0}.page-num{color:var(--ink-soft);letter-spacing:.2em;font-size:12px;position:absolute;bottom:12px}.page.left .page-num{left:40px}.page.right .page-num{right:40px}.page-head{border-bottom:1px solid var(--line-strong);justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;padding-bottom:8px;display:flex}.page-head h1,.page-head h2{letter-spacing:.12em;margin:0;font-weight:700}.page-head h1{font-size:26px}.page-head h2{font-size:20px}.eyebrow{font-family:var(--font-ui);letter-spacing:.3em;color:var(--ink-soft);font-size:12px}.scroll{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;min-height:0;overflow-y:auto}.muted{color:var(--ink-soft)}.small{font-size:13px}.tiny{font-size:12px}.center{text-align:center}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.col{flex-direction:column;gap:10px;display:flex}.grow{flex:1;min-height:0}.spacer{flex:1}hr.rule{background:var(--line);border:none;height:1px;margin:14px 0}.ornament{text-align:center;color:var(--ink-soft);letter-spacing:1em;margin:10px 0;font-size:12px}.btn{appearance:none;border:1.5px solid var(--ink);color:var(--ink);border-radius:var(--radius);cursor:pointer;letter-spacing:.08em;background:0 0;padding:7px 16px;line-height:1.4;transition:background .18s,color .18s,transform .12s,box-shadow .18s}.btn:hover:not(:disabled){background:var(--ink);color:var(--paper)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:focus-visible,.chip:focus-visible,.fixture:focus-visible,.exit:focus-visible,.slip:focus-visible{outline:2px solid var(--accent2);outline-offset:2px}.btn:disabled{opacity:.38;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--paper)}.btn.primary:hover:not(:disabled){background:var(--ink);border-color:var(--ink)}.btn.danger{border-color:var(--danger);color:var(--danger)}.btn.danger:hover:not(:disabled){background:var(--danger);color:var(--paper)}.btn.ghost{border-color:#0000}.btn.small{padding:3px 10px;font-size:13px}.btn.big{letter-spacing:.3em;padding:12px 28px;font-size:18px}.chip{appearance:none;border:1px solid var(--line-strong);background:color-mix(in srgb, var(--paper) 60%, transparent);cursor:pointer;border-radius:999px;padding:2px 12px;font-size:13px}.chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.tag{border:1px solid var(--line-strong);color:var(--ink-soft);font-size:12px;font-family:var(--font-ui);border-radius:2px;margin:0 4px 4px 0;padding:0 7px;display:inline-block}.seal{background:var(--seal);color:#f6eadb;letter-spacing:.1em;border-radius:3px;place-items:center;padding:4px 6px;font-size:14px;font-weight:700;line-height:1.1;display:inline-grid;transform:rotate(-4deg);box-shadow:inset 0 0 0 2px #f6eadb40}.seal.big{writing-mode:vertical-rl;letter-spacing:.2em;padding:10px 12px;font-size:22px}.title-screen{z-index:1;text-align:center;color:var(--paper);place-items:center;margin:auto;padding:24px;display:grid;position:relative}.title-screen h1{letter-spacing:.4em;text-shadow:0 0 40px color-mix(in srgb, var(--accent2) 30%, transparent);margin:0 0 0 .4em;font-size:clamp(42px,9vw,96px);font-weight:900}.title-screen .subtitle{letter-spacing:.5em;color:color-mix(in srgb, var(--paper) 70%, transparent);margin-bottom:36px}.title-screen .menu{gap:12px;width:min(320px,80vw);margin:0 auto;display:grid}.title-screen .btn{border-color:color-mix(in srgb, var(--paper) 70%, transparent);color:var(--paper);letter-spacing:.4em}.title-screen .btn:hover:not(:disabled){background:var(--paper);color:var(--paper-dark)}.title-screen .btn.primary{background:var(--seal);border-color:var(--seal)}.title-meta{color:color-mix(in srgb, var(--paper) 55%, transparent);letter-spacing:.15em;margin-top:26px;font-size:13px}.title-canvas{pointer-events:none;position:absolute;inset:0}.slips{flex-wrap:wrap;justify-content:center;gap:10px;padding:10px 0;display:flex}.slip{border:1.5px solid var(--ink);background:linear-gradient(90deg, transparent 46%, color-mix(in srgb, var(--ink) 9%, transparent) 50%, transparent 54%), color-mix(in srgb, var(--accent2) 18%, var(--paper));cursor:pointer;width:64px;min-height:210px;transition:transform .25s var(--ease), box-shadow .25s;animation:slip-out .7s var(--ease) both;appearance:none;color:var(--ink);border-radius:4px 4px 30px 30px;flex-direction:column;align-items:center;padding:10px 4px;display:flex;position:relative}.slip:hover{transform:translateY(-6px);box-shadow:0 10px 18px -10px #00000080}.slip.selected{box-shadow:0 0 0 3px var(--accent2);transform:translateY(-10px)}.slip.locked:after{content:"锁";background:var(--seal);color:#f6eadb;border-radius:50%;place-items:center;width:24px;height:24px;font-size:12px;display:grid;position:absolute;top:-10px;right:-10px}.slip .cat{color:var(--ink-soft);font-size:11px;font-family:var(--font-ui);letter-spacing:.1em}.slip .val{writing-mode:vertical-rl;letter-spacing:.25em;margin-top:10px;font-size:19px;font-weight:700}.slip.sealed .val{color:var(--seal)}@keyframes slip-out{0%{opacity:0;transform:translateY(60px) rotate(var(--r,0deg))}}.proposals{grid-template-columns:repeat(3,1fr);gap:14px;min-height:0;display:grid}.proposal{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--paper) 70%, #fff 30%);cursor:pointer;transition:transform .22s var(--ease), box-shadow .22s;text-align:left;appearance:none;color:var(--ink);min-height:0;animation:page-in .6s var(--ease) both;border-radius:4px;flex-direction:column;gap:6px;padding:14px 14px 12px;display:flex;overflow:hidden}.proposal:hover{transform:translateY(-4px);box-shadow:0 12px 24px -16px #0000008c}.proposal.chosen{box-shadow:0 0 0 2px var(--accent)}.proposal h3{letter-spacing:.15em;margin:0;font-size:22px}.proposal .logline{font-size:14px}.proposal dl{grid-template-columns:auto 1fr;gap:2px 8px;margin:0;font-size:13px;display:grid}.proposal dt{color:var(--ink-soft);white-space:nowrap}.proposal dd{margin:0}@keyframes page-in{0%{opacity:0;transform:perspective(900px)rotateY(-12deg)translate(-12px)}}.budget-bar{border:1px solid var(--line-strong);border-radius:4px;height:8px;display:flex;overflow:hidden}.budget-bar span{height:100%;display:block}.risk{font-family:var(--font-ui);color:var(--paper);border-radius:2px;padding:0 6px;font-size:12px}.risk.low{background:var(--accent)}.risk.mid{background:var(--accent2)}.risk.high{background:var(--danger)}.cards{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;display:grid}.card{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--paper) 75%, #fff 25%);cursor:pointer;text-align:left;appearance:none;color:var(--ink);border-radius:4px;padding:10px 12px;transition:transform .18s,box-shadow .18s}.card:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 16px -12px #00000080}.card.on{box-shadow:0 0 0 2px var(--accent);background:color-mix(in srgb, var(--accent) 10%, var(--paper))}.card:disabled{opacity:.45;cursor:not-allowed}.card .name{letter-spacing:.08em;font-weight:700}.card .sum{color:var(--ink-soft);font-size:13px}.rarity-common{border-left:3px solid var(--ink-soft)}.rarity-rare{border-left:3px solid var(--accent2)}.rarity-epic{border-left:3px solid var(--accent)}.rarity-legendary{border-left:3px solid var(--seal)}.writing{z-index:1;width:min(620px,92vw);color:var(--paper);text-align:center;margin:auto;position:relative}.writing .quill{width:110px;height:110px;margin:0 auto 10px}.writing h2{letter-spacing:.5em;margin:0 0 6px .5em;font-weight:400}.writing .lines{text-align:left;font-size:13px;font-family:var(--font-ui);color:color-mix(in srgb, var(--paper) 70%, transparent);max-height:220px;margin-top:18px;overflow:hidden;-webkit-mask-image:linear-gradient(#0000,#000 30%);mask-image:linear-gradient(#0000,#000 30%)}.writing .lines div{animation:fade-up .5s var(--ease) both;padding:2px 0}.writing .lines .ok:before{content:"✓ ";color:var(--accent2)}.writing .lines .degraded:before{content:"◐ ";color:var(--accent2)}.writing .lines .retry:before{content:"↺ ";color:var(--accent2)}.writing .lines .start:before{content:"· "}@keyframes fade-up{0%{opacity:0;transform:translateY(6px)}}.play-left{gap:10px}.room-art{border:1.5px solid var(--ink);aspect-ratio:16/9;background:var(--paper);border-radius:3px;flex:none;position:relative;overflow:hidden}.room-art svg{width:100%;height:100%;display:block}.room-title{background:color-mix(in srgb, var(--paper) 88%, transparent);border:1px solid var(--ink);letter-spacing:.15em;padding:1px 10px;font-weight:700;position:absolute;top:8px;left:10px}.room-badges{gap:6px;display:flex;position:absolute;top:8px;right:8px}.actors-on-stage{pointer-events:none;justify-content:flex-end;align-items:flex-end;gap:4px;padding:0 10px;display:flex;position:absolute;inset:auto 0 0}.actors-on-stage .portrait-mini{filter:drop-shadow(0 6px 8px #00000073);width:26%;max-width:150px;animation:rise .6s var(--ease) both}@keyframes rise{0%{opacity:0;transform:translateY(20px)}}.room-desc{text-indent:2em;font-size:15px}.fixtures{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px;display:grid}.fixture{appearance:none;border:1px solid var(--line-strong);background:color-mix(in srgb, var(--paper) 70%, #fff 30%);cursor:pointer;text-align:left;color:var(--ink);border-radius:3px;align-items:center;gap:6px;padding:5px 8px;font-size:14px;transition:background .15s,transform .12s;display:flex}.fixture:hover{background:color-mix(in srgb, var(--accent2) 20%, var(--paper))}.fixture.searched{opacity:.6}.fixture svg{flex:none;width:26px;height:26px}.fixture .lbl{line-height:1.3}.fixture .sub{color:var(--ink-soft);font-size:11px;font-family:var(--font-ui);display:block}.exits{flex:none;grid-template-rows:repeat(3,auto);grid-template-columns:repeat(3,1fr);gap:4px;width:210px;display:grid}.exit{appearance:none;border:1px solid var(--line-strong);cursor:pointer;color:var(--ink);background:0 0;border-radius:3px;min-height:38px;padding:3px 4px;font-size:12px;line-height:1.25}.exit:hover:not(:disabled){background:var(--ink);color:var(--paper)}.exit.locked{color:var(--ink-soft);border-style:dashed}.exit .d{font-weight:700}.exit-center{color:var(--ink-soft);border:1px dotted var(--line);border-radius:50%;place-items:center;font-size:11px;display:grid}.meters{gap:6px;display:grid}.meter{grid-template-columns:4.5em 1fr 3.4em;align-items:center;gap:8px;font-size:13px;display:grid}.meter .bar{border:1px solid var(--ink);background:color-mix(in srgb, var(--ink) 6%, transparent);border-radius:2px;height:10px;overflow:hidden}.meter .fill{background:var(--ink);height:100%;transition:width .5s var(--ease);background-image:repeating-linear-gradient(135deg, transparent 0 4px, color-mix(in srgb, var(--paper) 25%, transparent) 4px 6px)}.meter.sanity .fill{background-color:var(--accent)}.meter.tension .fill{background-color:var(--danger)}.meter.low .fill{background-color:var(--danger);animation:1.2s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.55}}.log{flex-direction:column;gap:6px;padding-right:6px;font-size:15px;display:flex}.log .e{animation:ink-in .5s var(--ease) both}@keyframes ink-in{0%{opacity:0;filter:blur(2px);transform:translateY(4px)}}.log .narration{text-indent:2em}.log .system{font-family:var(--font-ui);color:var(--ink-soft);font-size:13px}.log .dialogue{border-left:2px solid var(--line-strong);padding-left:1em}.log .dialogue .who{margin-right:.4em;font-weight:700}.log .whisper{color:var(--ink-soft);letter-spacing:.05em;font-style:italic}.log .callout{color:var(--accent);letter-spacing:.04em;font-size:16px;font-weight:700}.log .check{font-family:var(--font-ui);color:var(--ink-soft);font-size:12px}.log .combat{font-size:14px}.log .hint{color:var(--accent);font-size:14px}.log .hint:before{content:"☞ "}.log .loot{color:var(--accent2);font-size:14px;font-family:var(--font-ui)}.log .danger{color:var(--danger);font-weight:700}.log .callback{color:var(--accent2);font-style:italic}.log .chapter-mark{text-align:center;letter-spacing:.6em;color:var(--ink-soft);margin:6px 0;font-size:12px}.actions-bar{border-top:1px solid var(--line);flex-wrap:wrap;gap:6px;padding-top:8px;display:flex}.tabs{border-bottom:1px solid var(--line-strong);gap:2px;margin-bottom:8px;display:flex}.tabs button{appearance:none;cursor:pointer;color:var(--ink-soft);letter-spacing:.1em;background:0 0;border:none;border-bottom:2px solid #0000;padding:4px 10px}.tabs button.on{color:var(--ink);border-bottom-color:var(--ink);font-weight:700}.inv{gap:6px;display:grid}.inv-item{border-bottom:1px dotted var(--line);grid-template-columns:1fr auto;gap:2px 8px;padding-bottom:4px;font-size:14px;display:grid}.inv-item .sum{color:var(--ink-soft);grid-column:1/-1;font-size:12px}.inv-item .dormant{color:var(--accent2);font-size:12px}.map-svg{width:100%;height:auto;max-height:260px}.marginalia{color:var(--ink-soft);font-size:12px;font-style:italic}.overlay{z-index:20;background:color-mix(in srgb, var(--paper-dark) 62%, transparent);-webkit-backdrop-filter:blur(2px)saturate(.7);backdrop-filter:blur(2px)saturate(.7);place-items:center;padding:16px;animation:.3s both fade;display:grid;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.leaf{width:min(880px,96vw);max-height:92vh;animation:leaf-in .45s var(--ease) both;border-radius:4px;grid-template-columns:260px 1fr;display:grid;overflow:hidden;box-shadow:0 30px 60px -20px #000000b3}.leaf.single{grid-template-columns:1fr;width:min(640px,96vw)}@keyframes leaf-in{0%{opacity:0;transform:perspective(1000px)rotateX(8deg)translateY(30px)}}.leaf .portrait-side{background:color-mix(in srgb, var(--ink) 85%, var(--paper));color:var(--paper);flex-direction:column;justify-content:flex-end;align-items:center;padding:16px 10px 10px;display:flex;position:relative}.leaf .portrait-side svg{width:100%;height:auto}.leaf .portrait-side .nm{letter-spacing:.3em;margin-top:6px;font-size:18px;font-weight:700}.leaf .body{flex-direction:column;gap:12px;min-height:0;padding:22px 26px;display:flex;overflow-y:auto}.leaf h3{letter-spacing:.15em;margin:0;font-size:20px}.feed{border-left:2px solid var(--line);flex-direction:column;gap:4px;max-height:180px;padding-left:10px;font-size:14px;display:flex;overflow-y:auto}.feed div:last-child{font-weight:700}.options{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.option{appearance:none;text-align:left;border:1.5px solid var(--ink);cursor:pointer;color:var(--ink);background:0 0;border-radius:3px;flex-direction:column;gap:2px;padding:7px 10px;transition:background .15s,color .15s;display:flex}.option:hover:not(:disabled){background:var(--ink);color:var(--paper)}.option:hover:not(:disabled) .note{color:color-mix(in srgb, var(--paper) 75%, transparent)}.option:disabled{opacity:.35;cursor:not-allowed}.option .lbl{letter-spacing:.05em;font-weight:700}.option .note{color:var(--ink-soft);font-size:12px;font-family:var(--font-ui)}.option.key{border-color:var(--accent2);box-shadow:inset 0 0 0 1px var(--accent2)}.goal-track{gap:4px;display:flex}.goal-track span{border:1px solid var(--ink);border-radius:1px;width:22px;height:8px}.goal-track span.on{background:var(--accent)}.dice{font-family:var(--font-ui);align-items:center;gap:4px;font-size:12px;display:inline-flex}.die{border:1.5px solid var(--ink);background:var(--paper);width:22px;height:22px;animation:roll .5s var(--ease);border-radius:4px;place-items:center;font-weight:700;display:grid}@keyframes roll{0%{transform:rotate(-200deg)scale(.6)}}.check-ok{color:var(--accent);font-weight:700}.check-fail{color:var(--danger);font-weight:700}.puzzle-input{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.digit-wheel{border:1.5px solid var(--ink);background:color-mix(in srgb, var(--paper) 70%, #fff 30%);border-radius:6px;grid-template-rows:auto auto auto;place-items:center;width:52px;display:grid}.digit-wheel button{appearance:none;cursor:pointer;width:100%;color:var(--ink-soft);background:0 0;border:none;font-size:14px}.digit-wheel .v{font-size:28px;font-weight:700;line-height:1.2}.seq{border:1px dashed var(--line-strong);border-radius:4px;flex-wrap:wrap;align-items:center;gap:6px;min-height:44px;padding:6px;display:flex}.seq .slot{border:1.5px solid var(--ink);background:var(--paper);border-radius:3px;padding:2px 10px}.pairs{grid-template-columns:1fr 1fr;gap:6px 12px;display:grid}.dialogue-feed .line{font-size:15px}.dialogue-feed .line.npc:before{content:"「";color:var(--ink-soft)}.dialogue-feed .line.npc:after{content:"」";color:var(--ink-soft)}.steps{font-size:12px;font-family:var(--font-ui);color:var(--ink-soft);flex-wrap:wrap;gap:4px;display:flex}.steps span{border:1px solid var(--line);border-radius:999px;padding:1px 8px}.steps span.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.steps span.done{text-decoration:line-through}.ending-text{text-indent:2em;font-size:17px;line-height:2}.story-lines{gap:4px;font-size:14px;display:grid}.story-lines .h{letter-spacing:.1em;margin-top:8px;font-weight:700}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;display:grid}.stat{border:1px solid var(--line);border-radius:3px;padding:6px 10px}.stat .n{font-size:24px;font-weight:700;line-height:1.2}.stat .k{color:var(--ink-soft);font-size:12px;font-family:var(--font-ui)}.shelf{grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:12px;display:grid}.spine{appearance:none;cursor:pointer;color:#f2ead8;height:168px;transition:transform .2s var(--ease);border:none;border-radius:3px 6px 6px 3px;flex-direction:column;align-items:center;gap:6px;padding:10px 8px;display:flex;box-shadow:inset 6px 0 10px -6px #0009,0 8px 14px -10px #0009}.spine:hover{transform:translateY(-4px)rotate(-1deg)}.spine .t{writing-mode:vertical-rl;letter-spacing:.2em;font-size:16px;font-weight:700}.spine .e{opacity:.8;margin-top:auto;font-size:11px}.toast{z-index:50;background:var(--ink);color:var(--paper);border-radius:3px;max-width:90vw;padding:8px 18px;font-size:14px;animation:.3s both fade-up;position:fixed;bottom:28px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px -10px #000000b3}.form{gap:12px;display:grid}.field{gap:4px;display:grid}.field label{color:var(--ink-soft);font-size:13px;font-family:var(--font-ui)}.field input[type=text],.field input[type=password],.field input[type=number],.field select,.field textarea{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--paper) 60%, #fff 40%);border-radius:3px;padding:6px 8px}.field input[type=range]{accent-color:var(--accent)}.notice{border:1px solid var(--accent2);background:color-mix(in srgb, var(--accent2) 12%, var(--paper));border-radius:3px;padding:8px 12px;font-size:13px}.stage-fx{pointer-events:none;z-index:30;position:fixed;inset:0}.fx-flash{background:#fff;animation:.6s ease-out both flash}@keyframes flash{0%{opacity:.75}to{opacity:0}}.fx-black{background:#000;animation:1.4s ease-in-out both black}@keyframes black{0%{opacity:0}35%,60%{opacity:1}to{opacity:0}}.fx-vignette{background:radial-gradient(#0000 40%,#000000bf 100%);animation:2.4s ease-in-out both vignette}@keyframes vignette{0%,to{opacity:0}30%,70%{opacity:1}}.fx-bloom{background:radial-gradient(circle at 50% 50%, var(--ink) 0%, var(--ink) 30%, transparent 31%);animation:bloom 1.3s var(--ease) both;mix-blend-mode:multiply;background-position:50%;background-size:300% 300%}@keyframes bloom{0%{opacity:.9;transform:scale(.1)}60%{opacity:.85;transform:scale(1.6)}to{opacity:0;transform:scale(2.4)}}.fx-hit{box-shadow:inset 0 0 120px 30px color-mix(in srgb, var(--danger) 75%, transparent);animation:.7s ease-out both fade-out}.fx-sanity{box-shadow:inset 0 0 140px 40px color-mix(in srgb, var(--accent) 70%, #000);-webkit-backdrop-filter:hue-rotate(40deg);backdrop-filter:hue-rotate(40deg);animation:1s ease-out both fade-out}@keyframes fade-out{to{opacity:0}}.shake{animation:.45s cubic-bezier(.36,.07,.19,.97) both shake}@keyframes shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(3px,1px)}30%,50%,70%{transform:translate(-5px,-1px)}40%,60%{transform:translate(5px,1px)}}.push-in{animation:push 1.6s var(--ease) both}@keyframes push{0%{transform:scale(1)}50%{transform:scale(1.025)}to{transform:scale(1)}}.freeze{animation:1.6s both freeze}@keyframes freeze{20%,70%{filter:grayscale()contrast(1.15)}}.page-turn{animation:turn .8s var(--ease) both;transform-origin:0}@keyframes turn{0%{opacity:.2;transform:perspective(1400px)rotateY(-18deg)}}.stage-portraits{z-index:25;pointer-events:none;justify-content:space-between;align-items:flex-end;padding:0 4vw;display:flex;position:fixed;inset:0}.stage-portraits .sp{width:min(32vw,360px);animation:stage-pop 2.6s var(--ease) both;filter:drop-shadow(0 20px 30px #0009)}.stage-portraits .sp.center{margin:0 auto}@keyframes stage-pop{0%{opacity:0;transform:translateY(40px)scale(.96)}15%,75%{opacity:1;transform:none}to{opacity:0;transform:translateY(10px)}}.text-fall{z-index:26;pointer-events:none;position:fixed;inset:0;overflow:hidden}.text-fall span{color:var(--danger);font-size:22px;font-weight:700;animation:2.2s ease-in both fall;position:absolute;top:-40px}@keyframes fall{to{opacity:.2;transform:translateY(110vh)rotate(25deg)}}.cold-open{z-index:40;background:var(--paper-dark);cursor:pointer;position:fixed;inset:0}.cold-open canvas{width:100%;height:100%;display:block}.cold-open .skip{color:color-mix(in srgb, var(--paper) 55%, transparent);font-size:12px;font-family:var(--font-ui);letter-spacing:.2em;position:absolute;bottom:14px;right:18px}.mobile-tabs{display:none}@media (width<=900px){body{overflow:auto}.desk{align-items:flex-start;overflow:auto}.book{filter:none;grid-template-columns:1fr;width:100%;height:auto;min-height:100%}.page{padding:18px 16px 34px;box-shadow:none!important;border-radius:0!important}.book.tabbed .page.hide-mobile{display:none}.mobile-tabs{z-index:5;background:var(--paper);border-bottom:1px solid var(--line-strong);display:flex;position:sticky;top:0}.mobile-tabs button{appearance:none;letter-spacing:.2em;color:var(--ink-soft);background:0 0;border:none;flex:1;padding:8px}.mobile-tabs button.on{color:var(--ink);box-shadow:inset 0 -2px 0 var(--ink);font-weight:700}.proposals,.leaf{grid-template-columns:1fr}.leaf .portrait-side{flex-direction:row;justify-content:flex-start;gap:10px;padding:10px 14px}.leaf .portrait-side svg{width:84px}.exits{width:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.flicker{animation:3.2s step-end infinite flicker}.flicker-slow{animation:5s ease-in-out infinite flicker-slow}@keyframes flicker{0%,to{opacity:1}41%{opacity:.55}43%{opacity:1}77%{opacity:.7}79%{opacity:1}}@keyframes flicker-slow{50%{opacity:.85}}.drift{animation:14s ease-in-out infinite alternate drift}@keyframes drift{to{transform:translate(-24px)}}.quill .quill-body{transform-origin:30px 90px;animation:1.6s ease-in-out infinite write}.quill .quill-ink{stroke-dasharray:120;animation:3.2s ease-in-out infinite ink-line}@keyframes write{50%{transform:rotate(-6deg)translate(6px,-2px)}}@keyframes ink-line{0%{stroke-dashoffset:120px}to{stroke-dashoffset:0}}
