:root{--bg:#14161f;--panel:#1d2030;--panel-2:#252a40;--text:#e8e6df;--muted:#9a97a8;--accent:#e8a83c;--accent-2:#6db3e8;--danger:#c75450;--border:#3a3f58;--border-soft:#2a2f48;--radius:10px;--font-scale:1;font-family:Georgia,Times New Roman,serif}:root[data-theme=light]{--bg:#f3efe6;--panel:#fffdf8;--panel-2:#ece6d8;--text:#221d16;--muted:#6c6555;--accent:#b27913;--accent-2:#2f6da8;--danger:#b23b37;--border:#d8cfbb;--border-soft:#e4ddcb}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);line-height:1.55;font-size:calc(16px * var(--font-scale,1));margin:0}.reduce-motion *,.reduce-motion :before,.reduce-motion :after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}button{font:inherit;border-radius:var(--radius);cursor:pointer;background:var(--panel-2);color:var(--text);border:none;padding:10px 16px}button:disabled{opacity:.45;cursor:wait}button.primary{background:var(--accent);color:#1b1408;font-weight:700}button.danger{color:var(--danger);border:1px solid var(--danger);background:0 0}button.ghost{color:var(--muted);border:1px solid var(--border);background:0 0}button.ghost:hover{color:var(--text);border-color:var(--accent-2)}button.wide{width:100%}input,select{font:inherit;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);padding:9px 12px}input:focus,select:focus{outline:2px solid var(--accent-2);border-color:#0000}.error{color:var(--danger);min-height:1.2em}.hint{color:var(--muted);margin:6px 0 0;font-size:.85em}.setup{max-width:560px;margin:40px auto;padding:0 20px 60px}.setup h1{color:var(--accent);letter-spacing:.02em;margin-bottom:0;font-size:2.6em}.setup .tagline{color:var(--muted);margin-top:6px}.appVersion{color:var(--muted);letter-spacing:normal;vertical-align:middle;font-size:.3em;font-weight:400}.subtitle{color:var(--accent-2);margin:4px 0 0;font-style:italic}.divider{text-align:center;color:var(--muted);margin:18px 0 4px}.setup h2{color:var(--accent-2);margin:10px 0 8px}.setup label{color:var(--muted);margin:10px 0;display:block}.setup label input,.setup label select{margin-top:4px}.stepHint{color:var(--muted)}.optional{color:var(--accent-2);font-size:.85em;font-style:italic}.tos{color:var(--muted);align-items:center;gap:8px;margin-top:14px;font-size:.9em;display:flex}.tos input[type=checkbox]{width:auto;accent-color:var(--accent);background:0 0;border:none;flex:none;margin:0;padding:0}.tos label{color:var(--muted);margin:0}.linkBtn{font:inherit;color:var(--accent-2);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.accountArea{margin-bottom:16px}.acctRow{color:var(--muted);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:baseline;gap:10px;padding:8px 12px;font-size:.9em;display:flex}.acctWho{color:var(--text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.displayRow{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.displayRow .ghost{padding:6px 12px;font-size:.9em}.fontBtns{gap:4px;display:flex}.fontBtn{min-width:34px}.fontBtn.on{color:var(--accent);border-color:var(--accent)}.motionToggle{color:var(--muted);align-items:center;gap:6px;margin:0;font-size:.85em;display:flex}.motionToggle input{width:auto;accent-color:var(--accent);background:0 0;border:none;margin:0;padding:0}.lockNotice{background:var(--panel);border:1px solid var(--accent);border-radius:var(--radius);color:var(--muted);margin-bottom:14px;padding:10px 14px;font-size:.85em;line-height:1.45}.lockNotice b{color:var(--accent)}.rollActions{gap:8px;display:flex}.rollActions button{flex:1}.rollActions .ghost{flex:none}.pinList{flex-direction:column;gap:8px;display:flex}.pinItem{align-items:stretch;gap:8px;display:flex}.pinUse{text-align:left;background:var(--panel-2);border:1px solid var(--border);flex-direction:column;flex:1;gap:2px;display:flex}.pinUse:hover{border-color:var(--accent-2)}.pinLabel{color:var(--accent);font-weight:700}.pinMeta{color:var(--muted);font-size:.82em}.pinDel{flex:none;padding:8px 12px}.modalBackdrop{z-index:100;background:#000000a6;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:520px;max-height:80vh;padding:20px 22px;overflow:auto}.modal h3{color:var(--accent);margin-top:0}.modalBody{color:var(--text);margin-bottom:14px;font-size:.9em;line-height:1.5}.modalBody ul{padding-left:18px}.modalBody li{margin:7px 0}.fieldLabel{color:var(--muted);margin:16px 0 6px}.progress{gap:8px;margin:18px 0 4px;display:flex}.progress .dot{background:var(--border);border-radius:50%;width:10px;height:10px}.progress .dot.done{background:var(--accent-2)}.progress .dot.on{background:var(--accent)}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:999px;padding:6px 14px;font-size:.92em}.chip:hover:not(:disabled){border-color:var(--accent-2)}.chip:disabled{opacity:.35;cursor:not-allowed}.chip.on{background:var(--accent);color:#1b1408;border-color:var(--accent);font-weight:700}.chips+input{margin-top:8px}.wizardNav{justify-content:space-between;gap:10px;margin-top:18px;display:flex}.wizardNav button{min-width:110px}.chip.big{padding:10px 18px;font-size:1em}.yearRow{align-items:center;gap:16px;display:flex}.yearRow input[type=range]{accent-color:var(--accent);border:none;flex:1;height:28px;padding:0}.yearLabel{text-align:right;min-width:110px;color:var(--accent);font-variant-numeric:tabular-nums;font-size:1.25em;font-weight:700}.rollCard{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;padding:16px 18px}.rollCard h3{color:var(--accent);margin:0 0 4px;font-size:1.3em}.rollMeta{color:var(--muted);margin-bottom:8px;font-size:.9em}.worldHead{color:var(--accent-2);text-transform:uppercase;letter-spacing:.06em;margin:14px 0 4px;font-size:.95em}.worldList{margin:0;padding-left:18px;font-size:.92em}.worldList li{margin:4px 0}.worldList b{color:var(--text)}.worldList.events b{color:var(--accent)}.horizon{color:var(--muted);font-style:italic}.progressTrack{border:1px solid var(--border);background:#11131d;border-radius:5px;max-width:420px;height:10px;margin:14px auto 0;overflow:hidden}.progressFill{background:linear-gradient(90deg, var(--accent-2), var(--accent));border-radius:5px;width:2%;height:100%;transition:width .25s;display:block}.startOptions{flex-direction:column;gap:10px;margin:10px 0 14px;display:flex}.optionCard{text-align:left;background:var(--panel);border:1px solid var(--border);border-left:3px solid var(--accent-2);border-radius:var(--radius);flex-direction:column;gap:4px;padding:12px 14px;display:flex}.optionCard b{color:var(--accent);font-size:1.05em}.optionCard span{color:var(--muted);font-size:.92em}.optionCard:hover:not(:disabled){border-color:var(--accent-2)}.optionCard.on{border-color:var(--accent);border-left-color:var(--accent);background:#2c3050}.optionCard.on span{color:var(--text)}.rollStatus{text-align:center;padding:30px 0;font-size:1.1em}.rollQuip{min-height:1.4em;margin:0 0 14px;transition:opacity .18s}.secrets{border-radius:var(--radius);border:1px dashed #5a5070;margin-top:12px;padding:8px 12px}.powers{border:1px solid var(--accent-2);border-left:3px solid var(--accent-2);border-radius:var(--radius);color:var(--text);background:#1c2742;margin:8px 0 12px;padding:10px 12px;font-size:.95em}.powers b{color:var(--accent-2)}.secrets summary{cursor:pointer;color:#b07cc6}.secrets .secret{margin:8px 0;font-size:.92em}.secretLabel{color:#b07cc6;margin-right:6px;font-style:italic;display:inline-block}.statGrid{grid-template-columns:repeat(3,1fr);gap:10px 16px;margin:14px 0 6px;display:grid}.statRow{justify-content:space-between;align-items:baseline;display:flex}.statName{color:var(--accent-2);letter-spacing:.06em;font-size:.85em;font-weight:700}.statVal{color:var(--text);font-variant-numeric:tabular-nums;font-weight:700}.statBar{background:#11131d;border-radius:3px;height:6px;margin-top:3px;overflow:hidden}.statBar span{background:linear-gradient(90deg, var(--accent-2), var(--accent));border-radius:3px;height:100%;display:block}@media (width<=520px){.statGrid{grid-template-columns:repeat(2,1fr)}}.review{border-collapse:collapse;width:100%}.review th{text-align:left;color:var(--muted);vertical-align:top;width:130px;padding:6px 12px 6px 0;font-weight:400}.review td{padding:6px 0}.review tr{border-bottom:1px solid var(--border-soft)}.game{flex-direction:column;min-height:100vh;display:flex}.scene{border-bottom:2px solid #000;height:220px;overflow:hidden}.scene svg{width:100%;height:100%;display:block}.layout{flex:1;grid-template-columns:minmax(0,1fr) 250px;gap:24px;width:100%;max-width:1080px;margin:0 auto;padding:20px;display:grid}.log .entry{margin:0 0 14px}.log .action{color:var(--accent-2);font-style:italic}.log .narration{white-space:pre-wrap}.timeChip{background:var(--panel-2);border:1px solid var(--accent);color:var(--accent);letter-spacing:.02em;border-radius:999px;margin:0 0 12px;padding:3px 12px;font-size:.85em;font-style:italic;display:inline-block}.charLink{font:inherit;color:var(--accent-2);border:none;border-bottom:1px dotted var(--accent-2);cursor:pointer;background:0 0;margin:0;padding:0;display:inline}.charLink:hover{color:var(--accent);border-bottom-color:var(--accent)}.charPopover{z-index:60;background:var(--panel-2);border:1px solid var(--accent-2);border-radius:var(--radius);max-width:250px;padding:10px 12px;font-family:Georgia,serif;position:fixed;box-shadow:0 8px 24px #00000080}.charPopName{color:var(--accent);font-weight:700}.charPopRole{color:var(--muted);margin-bottom:5px;font-size:.85em;font-style:italic}.charPopDesc{font-size:.9em;line-height:1.45}.status{color:var(--muted);min-height:1.4em;font-style:italic}.status.busy:after{text-align:left;content:"";width:1.2em;animation:1.2s steps(4,end) infinite dots;display:inline-block}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}.choices{flex-direction:column;gap:8px;margin:10px 0;display:flex}.choice{text-align:left;background:var(--panel-2);border-left:3px solid var(--accent)}.choice:hover:not(:disabled){background:#303756}.checkBadge{float:right;color:var(--accent);border:1px solid var(--accent);white-space:nowrap;background:#e8a83c1f;border-radius:999px;margin-left:10px;padding:1px 9px;font-size:.78em;font-weight:700}.choice.pending{opacity:1}.choice.queued{opacity:1;border-left-color:var(--accent);outline:1px solid var(--accent);background:#3a3556}.epitaph{text-align:center;border:1px solid var(--accent);border-radius:var(--radius);margin-bottom:10px;padding:18px;font-style:italic}.sidebar{background:var(--panel);border-radius:var(--radius);align-self:start;padding:16px;position:sticky;top:16px}.sidebar h2{color:var(--accent);margin:0 0 2px}.sidebar .age{color:var(--muted)}.sidebar .calendar{color:var(--accent);letter-spacing:.02em;font-size:.85em}.sidebar .bodyLine{color:var(--muted);font-size:.85em}.sidebar .condition{color:var(--accent-2);margin:4px 0 12px;font-size:.85em;font-style:italic}.sidebar .money{color:#9fd58a;margin:12px 0;font-size:1.2em}.sidebar .wordsRead{color:var(--muted);margin:4px 0 12px;font-size:.85em}.sidebar .metaLine{color:var(--muted);margin:4px 0;font-size:.85em}.bar{align-items:center;gap:8px;margin:7px 0;font-size:.85em;display:flex}.barLabel{width:72px;color:var(--muted);text-transform:capitalize}.barTrack{background:#11131d;border-radius:4px;flex:1;height:8px;overflow:hidden}.barFill{border-radius:4px;height:100%;transition:width .6s;display:block}.barFill.health{background:#c75450}.barFill.happiness{background:var(--accent)}.barVal{text-align:right;width:26px;color:var(--muted)}.moreDetails{border-top:1px solid var(--border-soft);margin-top:10px;padding-top:8px}.moreDetails summary{cursor:pointer;color:var(--accent-2);-webkit-user-select:none;user-select:none;font-size:.9em}.moreDetails>div:first-of-type{margin-top:8px}.ioRow{gap:8px;margin:8px 0;display:flex}.ioRow button{flex:1}.proseRow{align-items:center;gap:10px;margin-top:4px;display:flex}.proseRow input[type=range]{flex:1;min-width:0}.proseEnd{color:var(--muted);white-space:nowrap;font-size:.8em}.saveControls{border-top:1px solid var(--border-soft);margin-top:12px;padding-top:10px}.invDetails{border:1px solid var(--border);border-radius:var(--radius);margin:10px 0;padding:8px 12px}.invDetails summary{cursor:pointer;color:var(--accent);-webkit-user-select:none;user-select:none;font-size:.92em}.invList{margin-top:8px}.invItem{border-bottom:1px solid #242a40;justify-content:space-between;gap:10px;padding:3px 0;font-size:.85em;display:flex}.invItem:last-child{border-bottom:none}.invName{color:var(--text)}.invNote{color:var(--muted);text-align:right;font-style:italic}.invEmpty{color:var(--muted);font-size:.85em;font-style:italic}.cast{margin:14px 0}.cast h3{color:var(--accent-2);margin:0 0 6px;font-size:.95em}.castEntry{width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:space-between;align-items:baseline;gap:8px;margin:0 -6px;padding:4px 6px;font-size:.85em;display:flex}.castEntry:hover{background:var(--panel-2)}.castName{color:var(--accent-2);border-bottom:1px dotted #0000}.castEntry:hover .castName{border-bottom-color:var(--accent-2)}.castRole{color:var(--muted);text-align:right;flex-shrink:0}.relSub{color:var(--muted);margin:-4px 0 12px;font-style:italic}.relDesc{margin:0 0 6px}.relEmpty{color:var(--muted);font-style:italic}.relArc{margin:6px 0 0;padding:0;list-style:none}.relMoment{border-bottom:1px solid var(--border-soft);justify-content:space-between;gap:12px;padding:6px 0;display:flex}.relMoment:last-child{border-bottom:none}.relMoment.now .relState{color:var(--accent);font-weight:700}.relWhen{color:var(--muted);flex-shrink:0;font-size:.85em}.relState{text-align:right}.lifeRecord .charLink{color:#7a5a1e;border-bottom-color:#c2a05a}.lifeRecord .charLink:hover{color:#1b1814;border-bottom-color:#1b1814}.wrapped,.graveyard{max-width:640px;margin:30px auto;padding:0 20px 60px}.wrappedTitle{text-align:center;color:var(--accent);letter-spacing:.14em;text-transform:uppercase;margin-bottom:14px;font-size:.9em}.graveyard h1{color:var(--accent)}.lifeRecord{color:#1b1814;border-radius:var(--radius);background:#f4f1ea;padding:22px 24px;font-family:Georgia,Times New Roman,serif}.paperHead{text-align:center;text-transform:uppercase;letter-spacing:.18em;border-bottom:2px solid #1b1814;margin-bottom:10px;padding-bottom:6px;font-size:.8em;font-weight:700}.obitHeadline{text-align:center;margin:6px 0;font-size:1.45em;line-height:1.25}.obitMeta{text-align:center;color:#5b5246;margin-bottom:14px;font-size:.9em;font-style:italic}.obitBody{margin:0;line-height:1.6}.epitaphLine{text-align:center;color:#3a332a;margin:14px 0 0;font-style:italic}.lifeRecord h3{text-transform:uppercase;letter-spacing:.08em;border-top:1px solid #cabfa9;margin:16px 0 6px;padding-top:10px;font-size:.95em}.milestones{margin:6px 0;padding-left:20px}.milestones li{margin:5px 0}.lifeStats{text-align:center;color:#5b5246;margin-top:14px;font-size:.85em}.wrappedActions{gap:10px;margin-top:14px;display:flex}.wrappedActions button{flex:1}.wrappedNav{gap:10px;margin-top:10px;display:flex}.wrappedNav button{flex:1}.graveCard{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:10px;padding:10px 14px}.graveCard summary{cursor:pointer;justify-content:space-between;align-items:baseline;gap:10px;list-style:none;display:flex}.graveCard summary::-webkit-details-marker{display:none}.graveName{color:var(--accent);font-weight:700}.graveMeta{color:var(--muted);text-align:right;font-size:.85em}.graveCard .lifeRecord{margin-top:12px}.recordStats{grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:10px;margin:16px 0 22px;display:grid}.statChip{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);text-align:center;padding:10px 8px}.statChipVal{color:var(--accent);font-size:1.25em;font-weight:700;display:block}.statChipLabel{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-top:2px;font-size:.72em;display:block}.familyLine{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;padding:12px 14px}.familyLine.solo{text-align:left;cursor:pointer;justify-content:space-between;align-items:baseline;gap:10px;width:100%;display:flex}.familyLine.solo:hover{border-color:var(--accent-2)}.lineHead{color:var(--accent);align-items:center;gap:10px;margin-bottom:10px;font-weight:700;display:flex}.lineHead .crestWrap{flex-shrink:0;display:flex}.lineTitle{flex:1}.lineCount{color:var(--muted);font-size:.78em;font-weight:400}.crest{display:block}.lineage{align-items:center;gap:8px;margin:2px 0 8px;display:flex}.lineage .crest{flex-shrink:0}.lineageText{color:var(--muted);font-size:.78em;line-height:1.3}.relCrest{justify-content:center;margin-bottom:8px;display:flex}.diceBackdrop{z-index:120;cursor:pointer;background:#000000b8;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.diceBox{text-align:center;flex-direction:column;align-items:center;gap:10px;display:flex}.d20{width:110px;height:110px;color:var(--text);background:var(--panel-2);border:3px solid var(--accent-2);clip-path:polygon(50% 0,95% 25%,95% 75%,50% 100%,5% 75%,5% 25%);place-items:center;font-size:2.6em;font-weight:700;transition:border-color .2s,box-shadow .2s,color .2s;display:grid}.d20.rolling{animation:.1s infinite diceShake}.d20.success{border-color:#6db36d;box-shadow:0 0 26px #6db36d8c}.d20.fail{border-color:var(--danger);box-shadow:0 0 26px #c7545080}.d20.crit{border-color:var(--accent);color:var(--accent);box-shadow:0 0 34px #e8a83ccc}.d20.fumble{border-color:var(--danger);color:var(--danger)}@keyframes diceShake{0%{transform:translate(0)rotate(0)}25%{transform:translate(-3px,2px)rotate(-6deg)}50%{transform:translate(2px,-3px)rotate(5deg)}75%{transform:translate(-2px,-2px)rotate(-3deg)}to{transform:translate(0)rotate(0)}}.diceStat{color:var(--muted);letter-spacing:.04em;font-size:.9em}.diceCalc{color:var(--text);min-height:1.2em;font-size:1.1em}.diceVerdict{letter-spacing:.1em;opacity:0;font-size:1.1em;font-weight:700}.diceVerdict.show{opacity:1;transition:opacity .2s}.diceVerdict.success{color:#6db36d}.diceVerdict.fail{color:var(--danger)}.diceSkip{color:var(--muted);margin-top:4px;font-size:.72em}.genChain{flex-direction:column;gap:2px;display:flex}.genRow{align-items:flex-start;gap:10px;display:flex;position:relative}.genRow:not(:last-child):before{content:"";background:var(--border);width:2px;position:absolute;top:22px;bottom:-2px;left:10px}.genDot{background:var(--panel-2);border:1px solid var(--accent);width:22px;height:22px;color:var(--accent);z-index:1;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:.75em;font-weight:700;display:flex}.genBody{flex-direction:column;min-width:0;padding-bottom:12px;display:flex}.genRel{color:var(--muted);font-size:.8em;font-style:italic}.genMeta{color:var(--muted);font-size:.8em}.lineLink{color:var(--accent-2);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;margin:0;padding:0;font-weight:700}.lineLink:hover{text-decoration:underline}.familyLine.solo .graveName{color:var(--accent)}.recordDetail #recBack{margin-bottom:14px}.recordLineage{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;font-size:.9em;display:flex}.recordLineage .here{color:var(--accent);font-weight:700}.recordLineage .arrow{color:var(--muted)}@media (width<=760px){.layout{grid-template-columns:1fr}.sidebar{order:-1;position:static}.setup h1{margin:4px 0 0;font-size:1.5em}.setup .tagline{display:none}.setup{margin:12px auto}.scene{height:140px}}
