@import "https://fonts.googleapis.com/css2?family=Cinzel:wght@400;500;600;700&family=Inter:wght@300;400;500;600;700&display=swap";
:root{--midnight:#02050a;--slate:#1e2938;--gunmetal:#232f40;--charcoal:#161e2b;--steel-blue:#4a7ba7;--soft-cyan:#5bc0de;--antique-gold:#c9a961;--silver:#b8c5d6;--text-warm-white:#f5f3ef;--text-light-gray:#d0d5dd;--text-muted:#8b92a0;--glow-blue:#4b7ba74d;--glow-gold:#c9a96133;--border-subtle:#ffffff0f;--border-medium:#ffffff1a;--panel-glass:#0a0e1499;--panel-solid:#0a0e14f2;--card-bg:#12161c80;--card-hover:#12161cbf}*{box-sizing:border-box}html{background:var(--midnight);color:var(--text-warm-white);scroll-behavior:smooth}body{background:var(--midnight);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;margin:0;padding:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;line-height:1.6}body:before{content:"";pointer-events:none;z-index:-1;background-image:radial-gradient(circle at 20%,#4b7ba704 0%,#0000 50%),radial-gradient(circle at 80% 80%,#c9a96103 0%,#0000 50%);width:100%;height:100%;position:fixed;top:0;left:0}h1,h2,h3,h4,h5,h6{color:var(--text-warm-white);margin:0;font-family:Cinzel,Palatino,serif;font-weight:600;line-height:1.2}h1{letter-spacing:-.02em;font-size:2.5rem}h2{letter-spacing:-.01em;font-size:1.875rem}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1.125rem}h6{font-size:1rem}p{color:var(--text-light-gray);margin:0 0 1rem}a{color:var(--steel-blue);text-decoration:none;transition:color .2s}a:hover{color:var(--soft-cyan)}.card{background:var(--card-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-subtle);border-radius:8px;padding:1.25rem;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.card:before{content:"";pointer-events:none;-webkit-mask-composite:xor;opacity:0;background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border-radius:8px;padding:1px;transition:opacity .2s;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.card:hover{background:var(--card-hover);border-color:var(--border-medium);box-shadow:0 4px 12px #0000004d, 0 0 20px var(--glow-blue);transform:translateY(-2px)}.card:hover:before{opacity:1}.card.entity-card--player-character{outline-offset:1px;border-color:#4fd67eb8;outline:1px solid #4fd67e47;box-shadow:0 0 12px #36d37147}.card.entity-card--player-character:hover{border-color:#68ec96e6;box-shadow:0 4px 12px #0000004d,0 0 18px #36d3716b}.character-directory-filters:before{pointer-events:none}.notable-npcs-card:hover{background:var(--card-bg);border-color:var(--border-subtle);box-shadow:none;transform:none}.notable-npcs-card:before{pointer-events:none}.notable-npcs-card:hover:before{opacity:0}.notable-npc-link{transition:color .2s,background .2s,border-color .2s,transform .2s,box-shadow .2s}.notable-npc-link:hover,.notable-npc-link:focus-visible{color:var(--soft-cyan);border-color:var(--steel-blue);box-shadow:0 2px 8px var(--glow-blue);background:#4b7ba742;transform:translateY(-1px)}.campaign-card{background:var(--card-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-subtle);border-radius:8px;flex-direction:column;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;overflow:hidden}.campaign-card:hover{background:var(--card-hover);border-color:var(--steel-blue);box-shadow:0 8px 24px #0006, 0 0 32px var(--glow-blue);transform:translateY(-4px)}.btn{cursor:pointer;border:1px solid #0000;border-radius:6px;align-items:center;gap:.5rem;padding:.625rem 1.25rem;font-size:.9375rem;font-weight:500;text-decoration:none;transition:all .2s;display:inline-flex}.btn-primary{background:linear-gradient(135deg, var(--steel-blue), #3a628a);color:#fff;border-color:var(--steel-blue);box-shadow:0 2px 8px #4a7ba74d}.btn-primary:hover{background:linear-gradient(135deg, #5a8bb7, var(--steel-blue));transform:translateY(-1px);box-shadow:0 4px 16px #4a7ba780}.btn-secondary{color:var(--text-light-gray);border-color:var(--border-medium);background:0 0}.btn-secondary:hover{border-color:var(--border-subtle);color:var(--text-warm-white);background:#ffffff0d}.tag{color:var(--soft-cyan);background:#4b7ba726;border:1px solid #4b7ba74d;border-radius:4px;align-items:center;padding:.25rem .625rem;font-size:.75rem;font-weight:500;display:inline-flex}.tag-gold{color:var(--antique-gold);background:#c9a96126;border-color:#c9a9614d}table{border-collapse:collapse;width:100%;margin:1.5rem 0}thead{background:var(--gunmetal);border-bottom:2px solid var(--border-medium)}th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);padding:.75rem 1rem;font-size:.8125rem;font-weight:600}td{border-bottom:1px solid var(--border-subtle);color:var(--text-light-gray);padding:.875rem 1rem}tr:hover td{background:#ffffff08}.prose{max-width:75ch;color:var(--text-light-gray);line-height:1.75}.prose h1,.prose h2,.prose h3,.prose h4{margin-top:2rem;margin-bottom:1rem}.prose p{margin-bottom:1.25rem}.prose code{color:var(--soft-cyan);background:#4b7ba726;border-radius:3px;padding:.2em .4em;font-family:Fira Code,Consolas,monospace;font-size:.875em}.prose blockquote{border-left:3px solid var(--steel-blue);color:var(--text-muted);margin-left:0;padding-left:1.25rem;font-style:italic}.prose hr{border:none;border-top:1px solid var(--border-subtle);margin:2rem 0}.chapter-pagination{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;max-width:75ch;display:grid}.chapter-pagination-item{min-width:0;min-height:4.25rem;color:var(--text-warm-white);background:var(--card-bg);border:1px solid var(--border-subtle);border-radius:8px;flex-direction:column;justify-content:center;gap:.35rem;padding:.75rem 1rem;text-decoration:none;transition:background .16s,border-color .16s,transform .16s;display:flex}a.chapter-pagination-item:hover{background:var(--card-hover);border-color:var(--border-medium);transform:translateY(-1px)}.chapter-pagination-item--next{text-align:right;align-items:flex-end}.chapter-pagination-item.is-disabled{opacity:.45;cursor:not-allowed}.chapter-pagination-kicker{color:var(--antique-gold);letter-spacing:.06em;text-transform:uppercase;font-size:.6875rem;font-weight:700}.chapter-pagination-title{max-width:100%;color:var(--text-light-gray);text-overflow:ellipsis;white-space:nowrap;font-family:Cinzel,serif;font-size:.8125rem;line-height:1.35;overflow:hidden}.entity-detail-grid{grid-template-columns:minmax(0,2fr) minmax(240px,1fr);align-items:start;gap:2rem;display:grid}.entity-detail-sidebar{flex-direction:column;gap:1.25rem;display:flex;position:sticky;top:80px}.character-biography .prose{max-width:none}.character-biography .prose h2:first-child{margin-top:0}.entity-portrait{border:1px solid var(--border-medium);border-radius:10px;width:100%;margin:0;overflow:hidden;box-shadow:0 12px 30px #00000061,0 0 24px #4a7ba71f}.entity-map-figure{border:1px solid var(--border-medium);background:var(--gunmetal);border-radius:10px;width:100%;margin:0;overflow:hidden;box-shadow:0 12px 30px #00000061,0 0 24px #4a7ba71f}.entity-map-figure img{width:100%;height:auto;display:block}.entity-map-link{text-decoration:none;display:block}.entity-map-link:hover .entity-map-figure,.entity-map-link:focus-visible .entity-map-figure{border-color:var(--soft-cyan);box-shadow:0 12px 30px #00000073,0 0 24px #5bc0de47}.entity-map-figure figcaption{color:var(--text-light-gray);text-align:center;background:#02050ac7;padding:.6rem .75rem;font-family:Cinzel,Palatino,serif;font-size:.75rem}.entity-portrait-stage{aspect-ratio:3/4;background:radial-gradient(circle at 50% 24%, #ffffff14, transparent 55%), var(--gunmetal);position:relative}.entity-portrait-art-trigger{width:100%;height:100%;color:inherit;cursor:zoom-in;font:inherit;background:0 0;border:0;padding:0;display:block;position:relative;overflow:hidden}.entity-portrait-art-trigger:after{content:"";z-index:1;opacity:0;pointer-events:none;background:linear-gradient(#0000 64%,#02050a6b);transition:opacity .16s;position:absolute;inset:0}.entity-portrait-art-trigger-hint{z-index:2;color:var(--text-warm-white);opacity:0;pointer-events:none;background:#02050ad1;border:1px solid #fff3;border-radius:999px;align-items:center;gap:.35rem;padding:.35rem .55rem;font-size:.6875rem;transition:opacity .16s,transform .16s;display:inline-flex;position:absolute;bottom:.6rem;right:.65rem;transform:translateY(4px);box-shadow:0 4px 14px #00000059}.entity-portrait-art-trigger:hover:after,.entity-portrait-art-trigger:focus-visible:after,.entity-portrait-art-trigger:hover .entity-portrait-art-trigger-hint,.entity-portrait-art-trigger:focus-visible .entity-portrait-art-trigger-hint{opacity:1}.entity-portrait-art-trigger:hover .entity-portrait-art-trigger-hint,.entity-portrait-art-trigger:focus-visible .entity-portrait-art-trigger-hint{transform:translateY(0)}.entity-portrait-art-trigger:focus-visible{outline:2px solid var(--soft-cyan);outline-offset:-2px}.entity-portrait-art-trigger:hover .entity-portrait-image,.entity-portrait-art-trigger:focus-visible .entity-portrait-image{transform:scale(1.015)}.entity-portrait-image{object-fit:cover;transition:transform .18s}.entity-portrait-placeholder{color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:.75rem;display:flex;position:absolute;inset:0}.entity-portrait-placeholder span{opacity:.3;filter:grayscale();font-size:3.5rem}.entity-portrait-placeholder small{letter-spacing:.08em;text-transform:uppercase;font-size:.6875rem}.entity-portrait figcaption{color:var(--text-light-gray);text-align:center;background:#02050ac7;padding:.6rem .75rem;font-family:Cinzel,Palatino,serif;font-size:.75rem}.entity-portrait figcaption span,.entity-portrait figcaption small{display:block}.entity-portrait figcaption small{color:var(--text-muted);margin-top:.15rem;font-family:Inter,sans-serif;font-size:.625rem}.character-biography-deck{color:var(--text-light-gray);margin:0 0 1.25rem;font-size:1rem;line-height:1.75}.character-journals-panel{padding:1.1rem;overflow:hidden}.character-journals-panel:before{pointer-events:none}.character-journals-heading-row{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.4rem;display:flex}.character-journals-heading-row h3{margin:0;font-size:.9375rem}.character-journals-heading-row>span{border:1px solid var(--border-subtle);min-width:1.65rem;color:var(--text-muted);text-align:center;border-radius:999px;padding:.15rem .4rem;font-size:.6875rem}.character-journal-list{flex-direction:column;display:flex}.character-journal-link{border:0;border-top:1px solid var(--border-subtle);width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;grid-template-columns:minmax(0,1fr) auto;gap:.25rem .6rem;padding:.8rem .15rem;transition:background .16s,padding .16s;display:grid}.character-journal-link:hover,.character-journal-link:focus-visible{background:#d5b46a0f;outline:none;padding-inline:.55rem}.character-journal-link-title{color:var(--text-warm-white);font-family:Cinzel,Palatino,serif;font-size:.8125rem;font-weight:600}.character-journal-link-type{color:var(--antique-gold);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;border:1px solid #d5b46a40;border-radius:999px;place-self:start end;padding:.16rem .42rem;font-size:.625rem}.character-journal-link-when{color:var(--text-muted);grid-column:1/-1;font-size:.6875rem;line-height:1.45}.character-journal-dialog-backdrop{z-index:1100;width:auto;max-width:none;height:auto;max-height:none;color:inherit;background:#02050af0;border:0;place-items:center;margin:0;padding:.5rem;display:grid;position:fixed;inset:0}.character-journal-dialog{border:1px solid var(--border-medium);background:#080d14;border-radius:14px;grid-template-rows:auto minmax(0,1fr);width:min(100%,980px);height:calc(100dvh - 1rem);display:grid;overflow:hidden;box-shadow:0 30px 100px #000000b8}.character-journal-dialog-header{border-bottom:1px solid var(--border-subtle);background:#0d151ffa;justify-content:space-between;align-items:flex-start;gap:1.5rem;padding:1rem 1.1rem;display:flex}.character-journal-dialog-kicker{color:var(--antique-gold);letter-spacing:.08em;text-transform:uppercase;font-size:.6875rem}.character-journal-dialog-header h2{margin:.2rem 0 0;font-size:clamp(1.25rem,3vw,1.8rem)}.character-journal-dialog-meta{color:var(--text-muted);flex-wrap:wrap;gap:.35rem .8rem;margin-top:.35rem;font-size:.75rem;display:flex}.character-journal-dialog-actions{flex:none;align-items:center;gap:.65rem;display:flex}.character-journal-style-switcher{border:1px solid var(--border-medium);background:#02050ab3;border-radius:999px;padding:.2rem;display:flex}.character-journal-style-switcher button{color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:.38rem .65rem;font-size:.6875rem}.character-journal-style-switcher button.is-active{color:var(--text-warm-white);background:#d5b46a26}.character-journal-close{border:1px solid var(--border-medium);width:38px;height:38px;color:var(--text-warm-white);font:inherit;cursor:pointer;background:#ffffff0a;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:1.25rem;display:inline-flex}.character-journal-reader{overscroll-behavior:contain;min-height:0;overflow:auto}.character-journal-dialog--plain .character-journal-reader{background:linear-gradient(145deg,#0b121b,#05080d);padding:clamp(1rem,4vw,3rem)}.character-journal-dialog--plain .character-journal-content{max-width:76ch;margin:0 auto}.character-journal-dialog--journal .character-journal-reader{background-color:#251a12;background-image:radial-gradient(circle at 20% 15%,#ffd68c14,#0000 28%),repeating-linear-gradient(90deg,#ffffff05 0 1px,#0000 1px 8px),repeating-linear-gradient(0deg,#0000000f 0 1px,#0000 1px 7px);padding:clamp(.8rem,4vw,3rem)}.character-journal-dialog--journal .character-journal-content{color:#332719;background-color:#ead9ad;background-image:linear-gradient(90deg,#0000 0 3.5rem,#84392d33 3.5rem 3.58rem,#0000 3.58rem),repeating-linear-gradient(0deg,#0000 0 2rem,#445e681f 2rem 2.06rem),radial-gradient(circle,#573c1e17 0 .7px,#0000 .85px),linear-gradient(115deg,#ffffff59,#0000 32%,#67441f14);background-size:100% 100%,100% 2.06rem,13px 11px,100% 100%;border:1px solid #492d146b;width:min(100%,760px);min-height:100%;margin:0 auto;padding:clamp(2rem,6vw,4.5rem) clamp(1.4rem,7vw,5rem);position:relative;box-shadow:0 16px 45px #00000085,inset 0 0 55px #64411b26}.character-journal-dialog--journal .character-journal-content:after{content:"";pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 18px #56331533}.character-journal-dialog--journal .character-journal-content .prose{color:#332719;max-width:none;font-family:Segoe Print,Bradley Hand,Comic Sans MS,cursive;font-size:1rem;line-height:2.05}.character-journal-dialog--journal .character-journal-content .prose p,.character-journal-dialog--journal .character-journal-content .prose li,.character-journal-dialog--journal .character-journal-content .prose blockquote{color:#332719}.character-journal-dialog--journal .character-journal-content .prose h1,.character-journal-dialog--journal .character-journal-content .prose h2,.character-journal-dialog--journal .character-journal-content .prose h3,.character-journal-dialog--journal .character-journal-content .prose h4{color:#2c1e12;letter-spacing:.015em;font-family:inherit}.character-journal-dialog--journal .character-journal-content .prose h1{margin-top:0;font-size:clamp(1.45rem,4vw,2.1rem);line-height:1.45}.character-journal-dialog--journal .character-journal-content .prose a{color:#6c321f}.character-journal-dialog--journal[data-journal-font=lora-italic] .character-journal-content .prose{font-family:var(--font-fey-journal), Georgia, serif;font-size:1.18rem;font-style:italic;font-weight:400;line-height:1.86}.character-journal-dialog--journal[data-journal-font=lora-italic] .character-journal-content .prose em{font-style:normal;font-weight:inherit;text-decoration:none}.character-journal-dialog--journal[data-journal-font=cormorant-garamond] .character-journal-content .prose{font-family:var(--font-nixala-journal), "Cormorant Garamond", Georgia, serif;font-size:1.24rem;font-style:normal;font-weight:450;line-height:1.78}.character-journal-dialog--journal[data-journal-surface] .character-journal-content{background-repeat:no-repeat,repeat,no-repeat}.character-journal-dialog--journal[data-journal-surface=royal-vellum] .character-journal-reader{background-color:#211811;background-image:radial-gradient(circle at 50% 0,#a97e3929,#0000 48%),linear-gradient(135deg,#1f0f2261,#0000 42%)}.character-journal-dialog--journal[data-journal-surface=royal-vellum] .character-journal-content{background-color:#ead9b4;background-image:radial-gradient(at 15% 8%,#fffad87a,#0000 34%),radial-gradient(circle,#5c40201c 0 .65px,#0000 .8px),linear-gradient(115deg,#ffffff38,#0000 38%,#6e47201a);background-size:100% 100%,11px 13px,100% 100%;border-color:#6844217a;box-shadow:0 18px 55px #00000094,inset 0 0 75px #6841182b}@keyframes art-intro-veil{0%{opacity:0}to{opacity:1}}@keyframes art-intro-content{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.art-intro-veil{animation:.9s ease-out 1s both art-intro-veil}.art-intro-content{animation:.9s ease-out 1s both art-intro-content}@media (prefers-reduced-motion:reduce){.art-intro-veil,.art-intro-content{animation:none}}@media (max-width:760px){.entity-detail-grid{grid-template-columns:minmax(0,1fr)}.entity-detail-sidebar{position:static}.entity-detail-grid--with-portrait .entity-detail-sidebar{order:-1}.entity-portrait{width:min(100%,360px);margin:0 auto}.character-journal-dialog-header{flex-direction:column;gap:.8rem}.character-journal-dialog-actions{justify-content:space-between;width:100%}.character-journal-dialog--journal:not([data-journal-surface]) .character-journal-content{background-image:repeating-linear-gradient(0deg,#0000 0 2rem,#445e681f 2rem 2.06rem),radial-gradient(circle,#573c1e17 0 .7px,#0000 .85px),linear-gradient(115deg,#ffffff59,#0000 32%,#67441f14);background-size:100% 2.06rem,13px 11px,100% 100%;padding-inline:1.25rem}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--charcoal)}::-webkit-scrollbar-thumb{background:var(--gunmetal);border:2px solid var(--charcoal);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--slate)}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-light-gray)}.glass-panel{background:var(--panel-glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-subtle);border-radius:8px}.divider{background:var(--border-subtle);height:1px;margin:1.5rem 0}.hero-btn:hover{background:#02050ad9!important;border-color:#4a7ba780!important}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes novel-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){[style*=novel-spin]{animation:none!important}}.gm-notes{border:1px solid var(--steel-blue);background:linear-gradient(#4a7ba71a,#161e2b8c);border-left-width:3px;border-radius:6px;padding:0;overflow:hidden}.gm-notes>summary{cursor:pointer;color:var(--soft-cyan);letter-spacing:.04em;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;padding:.75rem 1.25rem;font-family:Cinzel,serif;font-size:.875rem;list-style:none;display:flex}.gm-notes>summary::-webkit-details-marker{display:none}.gm-notes>summary::marker{content:""}.gm-notes>summary:hover{background:#4a7ba71f}.gm-notes>summary:focus-visible{outline:2px solid var(--soft-cyan);outline-offset:-2px}.gm-notes>summary .gm-notes-caret{font-size:.75rem;transition:transform .15s}.gm-notes[open]>summary .gm-notes-caret{transform:rotate(90deg)}.gm-notes>summary .gm-notes-hint{color:var(--text-muted);letter-spacing:0;text-transform:none;margin-left:auto;font-family:inherit;font-size:.6875rem}.gm-notes-body{border-top:1px solid #4a7ba759;padding:.25rem 1.25rem 1rem}.gm-notes-body h4{color:var(--soft-cyan);letter-spacing:.02em;margin:1rem 0 .35rem;font-size:.8125rem;font-weight:600}.gm-notes-body p{color:var(--text-light-gray);white-space:pre-wrap;margin:0 0 .6rem;font-size:.9375rem;line-height:1.6}.gm-notes-body .gm-notes-kind{color:var(--text-muted);margin:-.2rem 0 .5rem;font-size:.6875rem;display:block}
