/* Nocturne design tokens and base rules. */
:root {
  --color-bg: #161826;
  --color-surface: #232532;
  --color-text: #e9e9ed;
  --color-accent: #9184d9; 
  --color-accent-2: #a7a1db; 
  --color-divider: color-mix(in srgb, #e9e9ed 16%, transparent);
  --color-neutral-100: #f3f5fe;
  --color-neutral-200: #e4e7f5;
  --color-neutral-300: #cfd3e5;
  --color-neutral-400: #b2b6ca;
  --color-neutral-500: #9397ab;
  --color-neutral-600: #75798c;
  --color-neutral-700: #595d6c;
  --color-neutral-800: #3f424d;
  --color-neutral-900: #292b31;
  --color-accent-100: #f5f4ff;
  --color-accent-200: #e7e5fe;
  --color-accent-300: #d2cefd;
  --color-accent-400: #b5abfc;
  --color-accent-500: #968ae0;
  --color-accent-600: #796cbf;
  --color-accent-700: #5d5294;
  --color-accent-800: #423a6a;
  --color-accent-900: #2b2741;
  --color-accent-2-100: #f5f4ff;
  --color-accent-2-200: #e7e5fe;
  --color-accent-2-300: #d2cefd;
  --color-accent-2-400: #b5afe8;
  --color-accent-2-500: #9690c9;
  --color-accent-2-600: #7972a9;
  --color-accent-2-700: #5c5783;
  --color-accent-2-800: #423e5d;
  --color-accent-2-900: #2b293a;
  --color-section: #262a60;
  --color-section-glow: #353b80;
  --color-section-ghost: #4c5397;
  --font-heading: "Inter", system-ui, sans-serif;
  --font-heading-weight: 500;
  --font-body: "Inter", system-ui, sans-serif;
  --space-1: 2.8px;
  --space-2: 5.6px;
  --space-3: 8.4px;
  --space-4: 11.2px;
  --space-6: 16.8px;
  --space-8: 22.4px;
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 14px;
  --shadow-sm: 0 0 0 1px #3f424d;
  --shadow-md: 0 0 0 1px #595d6c, 0 6px 18px rgba(0,0,0,0.55);
  --shadow-lg: 0 0 0 1px #9397ab, 0 16px 40px rgba(0,0,0,0.65);
}
body {
  background: var(--color-bg);
  color: var(--color-text);
  font-family: var(--font-body);
}
h1, h2, h3, h4 { font-family: var(--font-heading); font-weight: var(--font-heading-weight); }
.lighten{mix-blend-mode:lighten;background-color:transparent}
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; font-size: 15px; line-height: 1.55; font-weight: 400; }
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading); font-weight: var(--font-heading-weight);
  line-height: 1.12; letter-spacing: -0.015em; margin: 0 0 var(--space-2);
}
h1 { font-size: 42px; }
h2 { font-size: 32px; }
h3 { font-size: 25px; }
h4 { font-size: 20px; }
h5 { font-size: 16px; }
h6 { font-size: 13px; }
h6 { letter-spacing: 0.08em; text-transform: uppercase; }
p { margin: 0 0 var(--space-3); }
a { color: var(--color-accent); text-underline-offset: 3px; }
img { display: block; max-width: 100%; }
figure { margin: 0; }
figcaption {
  font-size: 11px; margin-top: var(--space-1);
  color: color-mix(in srgb, var(--color-text) 55%, transparent);
}
.text-muted { color: color-mix(in srgb, var(--color-text) 55%, transparent); }
:focus { outline: none; }
:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }
::selection { background: color-mix(in srgb, var(--color-accent) 30%, transparent); }

/* Soulhearth theme layer: every --sh-* token, overridden per theme by boot.js. */
:root{
--sh-bg:#0f1120;--sh-bg-deep:#12141f;--sh-panel:#161826;--sh-panel-2:#1b1d2b;
--sh-raise:#232741;--sh-raise-2:#23252f;--sh-raise-3:#2b2e3d;--sh-raise-4:#232532;--sh-raise-5:#24262f;--sh-raise-6:#26283a;
--sh-edge:#3f424d;--sh-edge-dim:#292b31;--sh-edge-2:#4a4d5c;--sh-edge-3:#33364a;--sh-edge-acc:#5d5294;
--sh-ink:#e9e9ed;--sh-ink-hi:#efecff;--sh-soft:#c9ccd8;--sh-soft-2:#aeb2c2;
--sh-dim:#9397ab;--sh-dim-2:#878ca1;--sh-dim-3:#8f94a8;--sh-dim-4:#75798c;
--sh-faint:#6f7488;--sh-faint-2:#5f647a;--sh-faint-3:#5f5a7d;
--sh-accent:#8579d0;--sh-accent-2:#9184d9;--sh-accent-ink:#b5abfc;--sh-accent-hi:#d2cefd;
--sh-accent-mute:#6d6890;--sh-accent-mute-2:#8f8ab5;--sh-accent-soft:#c6bdff;--sh-accent-pale:#cfc9f2;
--sh-shadow:#06070c;--color-text:#e9e9ed;
--sh-art-blend:lighten;--sh-neb-a:#2c3284;--sh-neb-b:#165864;--sh-star:#c8cee8;--sh-star-warm:#fff0dc;--sh-phen-ink:#cdeaef;--sh-phen:#7ec4ce;--sh-phen-dim:#7d95a0;--sh-warn-ink:#e2a8be;
--sh-book-a:#08070e;--sh-book-b:#100e1c;--sh-book-c:#0a0913;
--sh-stage:radial-gradient(circle at 30% 20%,rgba(122,108,204,.10),transparent 56%),radial-gradient(circle at 84% 86%,rgba(24,28,74,.55),transparent 52%),radial-gradient(circle at 12% 88%,rgba(18,72,82,.22),transparent 46%),radial-gradient(circle at 68% 12%,rgba(86,26,52,.16),transparent 44%),#070914;
}
html,body{margin:0;height:100%;background:var(--sh-bg);font-family:var(--font-body);color:var(--sh-ink);overflow:hidden}
a{color:var(--sh-accent-ink);text-decoration:none}a:hover{color:var(--sh-accent-hi)}
*{box-sizing:border-box}
input,textarea,select{font-family:var(--font-body)}
::selection{background:color-mix(in oklab, var(--sh-accent-2) 30%, transparent)}
.lighten{mix-blend-mode:var(--sh-art-blend)}
[data-sh-swapping] *,[data-sh-swapping] *:before,[data-sh-swapping] *:after{transition:none !important}
.thinbar{scrollbar-width:thin;scrollbar-color:var(--sh-edge) transparent}
.thinbar::-webkit-scrollbar{width:5px;height:5px}
.thinbar::-webkit-scrollbar-track{background:transparent}
.thinbar::-webkit-scrollbar-thumb{background:linear-gradient(var(--sh-edge-acc),var(--sh-raise));border-radius:3px}
.thinbar::-webkit-scrollbar-thumb:hover{background:var(--sh-edge-acc)}
:focus-visible{outline:2px solid var(--sh-accent-2);outline-offset:2px}
i[class^="ph"]{display:inline-flex;align-items:center;justify-content:center;line-height:1}
@keyframes sh-mote{0%{transform:translate3d(0,0,0) scale(.7);opacity:0}10%{opacity:1;transform:translate3d(6px,-24px,0) scale(1)}50%{opacity:.95}88%{opacity:.55}100%{transform:translate3d(84px,-300px,0) scale(.8);opacity:0}}
body.sh-obsidian,body.sh-obsidian *{cursor:none !important}
@keyframes sh-obsidian-shimmer{0%,100%{filter:drop-shadow(0 0 4px color-mix(in oklab, var(--sh-accent-2) 55%, transparent)) drop-shadow(0 0 12px color-mix(in oklab, var(--sh-accent) 32%, transparent))}50%{filter:drop-shadow(0 0 8px color-mix(in oklab, var(--sh-accent-ink) 85%, transparent)) drop-shadow(0 0 22px color-mix(in oklab, var(--sh-accent-2) 50%, transparent))}}
@keyframes sh-peek{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:translateX(0)}}
@keyframes sh-twinkle{0%,100%{opacity:.25;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
[data-bk-prose] h3{margin:0 0 6px;font:600 15px/1.25 'Work Sans',var(--font-heading);letter-spacing:.01em;color:var(--sh-ink-hi);text-shadow:0 0 16px color-mix(in oklab, var(--sh-accent-2) 45%, transparent)}
[data-bk-prose] p{margin:0 0 8px}
[data-bk-prose]:empty:before{content:attr(data-ph);color:var(--sh-faint-3)}
@keyframes sh-bookglow{0%,100%{box-shadow:0 26px 46px color-mix(in oklab, var(--sh-bg-deep) 75%, transparent),0 0 26px color-mix(in oklab, var(--sh-accent) 22%, transparent)}50%{box-shadow:0 26px 46px color-mix(in oklab, var(--sh-bg-deep) 75%, transparent),0 0 46px color-mix(in oklab, var(--sh-accent-2) 46%, transparent)}}
@keyframes sh-bookshine{0%{background-position:180% 0}100%{background-position:-80% 0}}
@keyframes sh-lattice{0%,72%,100%{opacity:0}12%{opacity:.85}30%{opacity:.22}46%{opacity:.62}}
@keyframes sh-aurora{0%{transform:translate3d(-3%,0,0) scale(1)}50%{transform:translate3d(5%,-4%,0) scale(1.14)}100%{transform:translate3d(-3%,0,0) scale(1)}}
@keyframes sh-sheen{0%{transform:translateX(-140%) skewX(-14deg)}100%{transform:translateX(320%) skewX(-14deg)}}
@keyframes sh-breathe{0%,100%{box-shadow:0 0 0 0 color-mix(in oklab, var(--sh-accent-2) 0%, transparent)}50%{box-shadow:0 0 18px 0 color-mix(in oklab, var(--sh-accent-2) 22%, transparent)}}
@keyframes sh-pulse{0%,100%{opacity:.5}50%{opacity:1}}
@keyframes sh-rise{0%{opacity:0;transform:translateY(9px)}100%{opacity:1;transform:none}}
@keyframes dcspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
