:root{--bg: #ddcca6;--edge: #c3ae82;--surface: #f4ebd1;--surface-2: #e7d9b6;--ink: #372c1c;--ink-2: #5c4b32;--muted: #8c7a58;--line: #c9b488;--line-strong: #b39c6e;--gold: #9d7a2a;--gold-bright: #b8902f;--gold-contrast: #ffffff;--wax: #8f3b2e;--wax-soft: #ecd8c3;--shadow: 0 1px 2px rgba(55, 44, 28, .1), 0 10px 26px rgba(55, 44, 28, .12);--mono: "Cascadia Code", ui-monospace, Consolas, monospace;--serif: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", "Songti SC", "Noto Serif SC", Georgia, serif}@media(prefers-color-scheme:dark){:root{--bg: #17110a;--edge: #0d0904;--surface: #221a0f;--surface-2: #2b2113;--ink: #ecdfc1;--ink-2: #cbbb90;--muted: #9c8b66;--line: #3a2c19;--line-strong: #4a3a22;--gold: #c8a545;--gold-bright: #ddb85a;--gold-contrast: #1a1206;--wax: #d06c53;--wax-soft: #3a241a;--shadow: 0 1px 2px rgba(0, 0, 0, .5), 0 12px 32px rgba(0, 0, 0, .45)}}:root[data-theme=light]{--bg: #ddcca6;--edge: #c3ae82;--surface: #f4ebd1;--surface-2: #e7d9b6;--ink: #372c1c;--ink-2: #5c4b32;--muted: #8c7a58;--line: #c9b488;--line-strong: #b39c6e;--gold: #9d7a2a;--gold-bright: #b8902f;--gold-contrast: #ffffff;--wax: #8f3b2e;--wax-soft: #ecd8c3;--shadow: 0 1px 2px rgba(55, 44, 28, .1), 0 10px 26px rgba(55, 44, 28, .12)}:root[data-theme=dark]{--bg: #17110a;--edge: #0d0904;--surface: #221a0f;--surface-2: #2b2113;--ink: #ecdfc1;--ink-2: #cbbb90;--muted: #9c8b66;--line: #3a2c19;--line-strong: #4a3a22;--gold: #c8a545;--gold-bright: #ddb85a;--gold-contrast: #1a1206;--wax: #d06c53;--wax-soft: #3a241a;--shadow: 0 1px 2px rgba(0, 0, 0, .5), 0 12px 32px rgba(0, 0, 0, .45)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;color:var(--ink);font-family:var(--serif);font-size:15px;line-height:1.6;background:radial-gradient(120% 90% at 50% -10%,transparent 55%,var(--edge) 100%) fixed,var(--bg)}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}input,textarea,select{font-family:var(--serif);color:var(--ink)}.book{height:100%;display:flex;flex-direction:column;padding:14px clamp(14px,2vw,28px) 16px;gap:12px}.titleband{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;padding:0 6px 10px;border-bottom:1px solid var(--line)}.titleband h1{margin:0;font-size:clamp(22px,2.6vw,30px);font-weight:600;line-height:1.1;text-wrap:balance}.titleband h1 .sub{display:block;font-size:12px;letter-spacing:.34em;text-transform:uppercase;color:var(--gold);margin-bottom:3px;font-weight:600}.folio{margin-left:auto;text-align:right;font-family:var(--mono);font-size:12px;color:var(--muted)}.folio .big{color:var(--ink);font-size:13.5px}.iconbtn{background:transparent;border:1px solid var(--line-strong);color:var(--ink-2);border-radius:999px;width:34px;height:34px;font-size:15px;display:grid;place-items:center}.iconbtn:hover{border-color:var(--gold);color:var(--gold)}.rites{padding:12px 16px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);display:flex;align-items:center;gap:12px;flex-wrap:wrap}.rites.in-session{box-shadow:0 0 0 1px var(--gold) inset,var(--shadow)}.rites .lead{display:flex;flex-direction:column;gap:1px;padding-right:14px;border-right:1px solid var(--line)}.rites .lead .k{font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-weight:600}.rites .lead .v{font-family:var(--mono);font-size:12px;color:var(--muted)}.rites .lead .v b{color:var(--ink);font-variant-numeric:tabular-nums}.rite{display:inline-flex;align-items:center;gap:8px;padding:9px 15px;background:var(--surface-2);border:1px solid var(--line-strong);color:var(--ink);border-radius:10px;font-size:14px;font-weight:550;transition:background .15s,color .15s,border-color .15s,transform .1s}.rite svg{width:18px;height:18px}.rite:hover:not(:disabled){background:var(--gold);color:var(--gold-contrast);border-color:var(--gold);transform:translateY(-1px)}.rite:disabled{opacity:.45;cursor:not-allowed}.rite.active{background:var(--gold);color:var(--gold-contrast);border-color:var(--gold)}.rite.end{margin-left:auto;background:transparent;border-style:dashed;border-color:var(--wax);color:var(--wax);font-weight:600}.rite.end:hover:not(:disabled){background:var(--wax);color:#fff;border-style:solid}.rite:focus-visible,.iconbtn:focus-visible,.btn:focus-visible,.editbtn:focus-visible,.send:focus-visible,.sigil:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.spread{flex:1;min-height:0;display:grid;grid-template-columns:minmax(220px,260px) minmax(0,1fr) minmax(300px,380px);gap:16px;align-items:stretch}.column{min-height:0;display:flex;flex-direction:column;gap:16px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.column.oracle-column{overflow:hidden}.leaf{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:15px 16px;box-shadow:var(--shadow);flex-shrink:0}.leaf>h2{margin:0 0 4px;font-size:11.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);display:flex;align-items:center;gap:8px}.leaf>h2 .tools{margin-left:auto;display:flex;gap:6px}.rule{height:1px;background:linear-gradient(90deg,transparent,var(--line-strong),transparent);margin:8px 0 13px;position:relative}.rule:after{content:"◆";position:absolute;top:-8px;left:50%;transform:translate(-50%);color:var(--gold);font-size:9px;background:var(--surface);padding:0 6px}.editbtn{background:transparent;border:1px solid var(--line-strong);color:var(--muted);font-size:11px;letter-spacing:.05em;padding:2px 9px;border-radius:999px}.editbtn:hover{color:var(--gold);border-color:var(--gold)}.empty{color:var(--muted);font-style:italic;font-size:13px;text-align:center;padding:10px 0}.grouplabel{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:2px 0 8px}.grouplabel:not(:first-of-type){margin-top:16px}.sigils{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.sigil{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 6px 9px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);font-size:12px;color:var(--ink-2);text-align:center;word-break:break-word;transition:border-color .15s,transform .1s}.sigil:hover{border-color:var(--gold);transform:translateY(-1px)}.sigil.dragging{opacity:.4}.sigil .glyph{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;font-size:16px;font-weight:600;color:#fff;background:var(--line-strong);box-shadow:inset 0 0 0 1px #ffffff26;overflow:hidden}.sigil .glyph img{width:22px;height:22px}.sigil .glyph.emoji{background:var(--surface);font-size:20px}.sigil .ctrls{position:absolute;top:4px;right:4px;display:flex;gap:3px}.sigil .ctrls button{width:19px;height:19px;border-radius:5px;border:1px solid var(--line-strong);background:var(--surface);color:var(--muted);font-size:10px;line-height:1;display:grid;place-items:center;padding:0}.sigil .ctrls button:hover{color:var(--wax);border-color:var(--wax)}.sigil.add{border-style:dashed;color:var(--muted);justify-content:center;min-height:80px;background:transparent}.sigil.add:hover{color:var(--gold)}.sigil.add .plus{font-size:22px;line-height:1}.hint{font-size:11px;color:var(--muted);margin:10px 0 0;font-style:italic}.cards{display:flex;flex-direction:column;gap:12px}.card{border:1px solid var(--line);border-radius:11px;padding:13px 15px;background:var(--surface-2)}.card.pinned{border-color:var(--gold)}.card h3{margin:0;font-size:16.5px;font-weight:600;display:flex;align-items:center;gap:9px}.card h3 .spacer{margin-left:auto}.seal-pin{font-size:10px;color:#fff;background:var(--wax);border-radius:999px;padding:1px 9px;letter-spacing:.08em}.card .cardbtn{background:transparent;border:0;color:var(--muted);padding:2px;border-radius:5px;display:grid;place-items:center}.card .cardbtn:hover{color:var(--gold)}.card .cardbtn.danger:hover{color:var(--wax)}.card .next{margin:6px 0 9px;color:var(--ink-2);font-size:13.5px}.card .next em{color:var(--muted);font-style:normal;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;margin-right:6px}.card .next b{font-weight:600;color:var(--ink)}.chips{display:flex;gap:7px;flex-wrap:wrap}.chips a{font-family:var(--mono);font-size:11px;color:var(--ink-2);background:var(--surface);border:1px solid var(--line);padding:2px 10px;border-radius:999px}.chips a:hover{border-color:var(--gold);color:var(--gold)}.card .meta{margin-top:8px;font-family:var(--mono);font-size:10.5px;color:var(--muted)}.marks{display:flex;flex-direction:column}.mark{padding:9px 2px;border-bottom:1px dashed var(--line)}.mark:last-child{border-bottom:0}.mark .t{display:flex;align-items:center;gap:8px;font-size:13.5px}.mark .t a:hover{color:var(--gold)}.mark .t .spacer{margin-left:auto}.mark .u{font-family:var(--mono);font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mark .note{font-size:12px;color:var(--ink-2);font-style:italic}.tag{flex:none;font-size:9.5px;letter-spacing:.08em;padding:1px 8px;border-radius:999px;font-weight:700;text-transform:uppercase;border:0;background:var(--wax-soft);color:var(--wax)}.tag.seen{background:transparent;color:var(--muted);border:1px solid var(--line-strong)}.mark .cardbtn{background:transparent;border:0;color:var(--muted);padding:2px;border-radius:5px}.mark .cardbtn:hover{color:var(--wax)}.oracle{flex:1;min-height:0;display:flex;flex-direction:column;padding:0;overflow:hidden}.oracle-head{padding:14px 16px 11px;border-bottom:1px solid var(--line)}.oracle-head h2{margin:0;font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);font-weight:700;display:flex;align-items:center;gap:8px}.familiar{width:9px;height:9px;border-radius:50%;background:var(--gold);box-shadow:0 0 10px var(--gold-bright)}.familiar.off{background:var(--muted);box-shadow:none}.oracle-head .whisper{margin:7px 0 0;font-size:12px;color:var(--muted);font-style:italic}.oracle-head .tools{margin-left:auto;display:flex;gap:6px}.thread{flex:1;min-height:0;padding:14px 15px;display:flex;flex-direction:column;gap:11px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.bubble{max-width:88%;font-size:13.5px;line-height:1.5}.bubble .who{font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:2px}.bubble.me{align-self:flex-end;text-align:right}.bubble.me .body{background:var(--gold);color:var(--gold-contrast);padding:8px 13px;border-radius:12px 12px 3px;display:inline-block;text-align:left;white-space:pre-wrap;word-break:break-word}.bubble.her .body{background:var(--surface-2);border:1px solid var(--line);padding:8px 13px;border-radius:12px 12px 12px 3px;white-space:pre-wrap;word-break:break-word}.caret:after{content:"▍";color:var(--gold)}@media(prefers-reduced-motion:no-preference){.caret:after{animation:blink 1.05s step-end infinite}@keyframes blink{50%{opacity:0}}}.oracle .offstate{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--muted);font-style:italic;font-size:13px;text-align:center;padding:20px}.oracle .offstate .mark-big{font-size:30px;opacity:.5}.compose{display:flex;gap:9px;padding:11px 13px;border-top:1px solid var(--line);background:var(--surface-2)}.compose input{flex:1;font-size:13.5px;background:var(--surface);border:1px solid var(--line-strong);border-radius:9px;padding:9px 13px}.compose input::placeholder{color:var(--muted);font-style:italic}.compose input:focus{outline:none;border-color:var(--gold)}.send{border:1px solid var(--gold);background:var(--gold);color:var(--gold-contrast);border-radius:9px;padding:0 15px;font-size:13px;font-weight:600}.send:hover:not(:disabled){background:var(--gold-bright);border-color:var(--gold-bright)}.send:disabled{opacity:.5;cursor:not-allowed}.overlay{position:fixed;inset:0;background:#140e068c;display:grid;place-items:center;z-index:40;padding:20px}.dialog{position:relative;width:min(440px,100%);background:var(--surface);border:1px solid var(--line-strong);border-radius:14px;box-shadow:var(--shadow);padding:20px 22px;max-height:90vh;overflow-y:auto}.dialog-close{position:absolute;top:11px;right:13px;width:30px;height:30px;display:grid;place-items:center;border:0;border-radius:999px;background:transparent;color:var(--muted);font-size:22px;line-height:1}.dialog-close:hover{color:var(--wax);background:var(--surface-2)}.dialog h3{margin:0 0 4px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);font-weight:700}.dialog .rule{margin-bottom:15px}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.field label{font-size:11.5px;letter-spacing:.08em;color:var(--muted);text-transform:uppercase}.field input,.field textarea,.field select{font-size:14px;background:var(--surface-2);border:1px solid var(--line-strong);border-radius:8px;padding:8px 11px}.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--gold)}.field .help{font-size:11px;color:var(--muted);font-style:italic}.field .help.error{color:var(--wax)}.fieldrow{display:flex;gap:10px}.fieldrow .field{flex:1}.dialog .actions{display:flex;gap:9px;justify-content:flex-end;margin-top:16px}.btn{border:1px solid var(--line-strong);background:var(--surface-2);color:var(--ink);border-radius:8px;padding:7px 16px;font-size:13.5px}.btn:hover{border-color:var(--gold);color:var(--gold)}.btn.primary{background:var(--gold);border-color:var(--gold);color:var(--gold-contrast);font-weight:600}.btn.primary:hover{background:var(--gold-bright);color:var(--gold-contrast)}.btn.danger{background:transparent;border-color:var(--wax);color:var(--wax)}.btn.danger:hover{background:var(--wax);color:#fff}.iconpick{display:flex;gap:8px;align-items:center}.iconpick .preview{width:38px;height:38px;border-radius:9px;display:grid;place-items:center;font-size:17px;font-weight:600;color:#fff;background:var(--line-strong);flex:none;overflow:hidden}.iconpick .preview img{width:24px;height:24px}.toast{position:fixed;bottom:18px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--bg);font-size:13px;padding:8px 18px;border-radius:999px;z-index:60;box-shadow:var(--shadow)}.status-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 13px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2);color:var(--muted);font-size:12.5px}.status-banner.error{border-color:var(--wax);color:var(--wax)}.status-banner button{border:0;background:transparent;color:inherit;text-decoration:underline;font-weight:600}@media(max-width:980px){html,body,#root,.book{height:auto}.spread{grid-template-columns:1fr}.column,.column.oracle-column{overflow:visible}.oracle{min-height:420px}.rite.end{margin-left:0}}
