@charset "UTF-8";

/* Drain warmth from the interface so the blood remains a distinct intrusion. */
.mood-worn:not(.finance-horror):not(.reduced-stimulus) {
  --bg: #d4d6d7; --paper: #e9e9e5; --ink: #30363a; --muted: #62696c;
  --line: #afb4b6; --blue: #616d76; --blue-deep: #37454e; --light: #d6d9d9; --pale: #dedfdd;
  --danger: #9c3532; --radius: 7px; --shadow: 0 5px 20px #11182020;
  --mood-meter-base: #6b747b; --mood-meter-today: #90989d; --mood-meter-loan: #8b6666;
  --mood-paper-shadow: inset 0 0 15px #151b200d, 0 3px 0 #151b2012;
}
.mood-low:not(.finance-horror):not(.reduced-stimulus) {
  --bg: #969c9f; --paper: #ced0cd; --ink: #242b30; --muted: #515b61;
  --line: #858e92; --blue: #505d66; --blue-deep: #2b3a44; --light: #b3babd; --pale: #bec3c4;
  --danger: #96232b; --radius: 4px; --shadow: 0 7px 25px #080e183d;
  --mood-meter-base: #5c6972; --mood-meter-today: #89969d; --mood-meter-loan: #8c6266;
  --mood-paper-shadow: inset 0 0 26px #0a111b24, inset 0 1px 0 #edf0ed4d, 0 3px 0 #0a111b26;
}
.mood-fragile:not(.finance-horror):not(.reduced-stimulus) {
  --bg: #111518; --paper: #30373b; --ink: #e6e8e4; --muted: #afb9bc;
  --line: #626d73; --blue: #57666f; --blue-deep: #ccd6db; --light: #414d54; --pale: #242c31;
  --danger: #ee8e8a; --radius: 2px; --shadow: 0 8px 30px #00050b73;
  --mood-meter-base: #93a0a7; --mood-meter-today: #bbc5c9; --mood-meter-loan: #b88b8e;
  --mood-paper-shadow: inset 0 0 34px #00070e4d, inset 0 1px 0 #d0dce321, 0 3px 0 #00050c59;
}
body:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) {
  color: var(--ink);
  background: var(--bg);
}
.game-shell:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) {
  --mood-blood: clamp(0, calc((var(--mood-decay) - .333333) * 1.5), 1);
  --mood-dread: clamp(0, calc((var(--mood-decay) - .75) * 4), 1);
  background-color: var(--bg);
  background-image: repeating-linear-gradient(0deg,#0007110b 0 1px,transparent 1px 5px);
}
/* Keep the finance palette beneath one shared veil, above every normal window. */
body:is(.mood-worn,.mood-low,.mood-fragile):not(.reduced-stimulus) {
  --mood-veil: linear-gradient(rgb(96 0 12 / calc(var(--mood-decay) * .035)),rgb(96 0 12 / calc(var(--mood-decay) * .035))),
    radial-gradient(ellipse at 50% 42%,transparent 38%,rgb(3 5 9 / calc(var(--mood-decay) * .45)) 100%);
}
body:is(.mood-worn,.mood-low,.mood-fragile):not(.reduced-stimulus)::after,
dialog:modal:is(.mood-worn,.mood-low,.mood-fragile):not(.reduced-stimulus)::after {
  content: ''; position: fixed; inset: 0; z-index: 1000; pointer-events: none;
  border: 1px solid #160a0d59;
  background: var(--mood-veil);
  box-shadow: inset 0 0 calc(30px + var(--mood-decay) * 100px) rgb(18 0 5 / calc(var(--mood-decay) * .2));
}
/* A modal lives in the browser top layer: transfer the veil there, without doubling it. */
body:has(dialog:modal)::after { display: none; }
:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) :is(.masthead,.top-nav,.footer) {
  background: var(--pale); color: var(--ink); border-color: var(--line);
}
:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) :is(.section,.metrics,.job-card,.job-card.unavailable,.application-row,.offer-card,.training-card,.growth-card,.ability-sources,.calendar-panel,.life-control-panel,.persistent-day,.controls-launcher,.mail-launcher,.utility,.role-pill,.ending,.setup-form) {
  background: var(--paper); color: var(--ink); border-color: var(--line); box-shadow: var(--mood-paper-shadow);
}
:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) :is(.tag,.tag.orange,.company-logo,.notice,.day-counter,.calendar-day.past,.sender-avatar,.sender-avatar img) {
  background: var(--light); color: var(--ink); border-color: var(--line);
}
:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) :is(.button,.filter-button,.personal-tabs button,.allocation-control button,select,input) {
  background: var(--light); color: var(--ink); border-color: var(--line);
}
:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) :is(.button.primary,.button.danger,.filter-button.active,.top-nav button.active,.controls-launcher[aria-expanded="true"],.calendar-day.today) {
  background: var(--blue); color: #fff2ed; border-color: var(--blue);
}
:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) :is(.button.ghost,.button:disabled,.text-button:disabled) {
  background: var(--pale); color: var(--muted); border-color: var(--line);
}
:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) :is(.button:hover:not(:disabled),.filter-button:hover,.mail-row:hover,.mail-row.selected,.calendar-day:hover,.controls-launcher:hover) {
  background: var(--light); color: var(--ink); border-color: var(--line);
}
:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) :is(.ability-track,.control-resource-track,.energy-meter,.mood-meter,.ap-dots i) { background: var(--light); }
:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) :is(.ability-base,.control-resource-track > i,.energy-meter > i,.mood-meter > i,.ap-dots i.filled) { background: var(--mood-meter-base); }
:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) .ability-today { background: var(--mood-meter-today); }
:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) .ability-loan { background: var(--mood-meter-loan); }
:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) :is(.story-image,.sender-avatar img) { filter: grayscale(var(--mood-decay)) contrast(calc(1 + var(--mood-decay) * .2)); }
:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) .mail-list-panel { background: var(--pale); }
.mail-notice:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) .mail-notice-progress { background: var(--blue); }
:is(dialog,.toast,.mail-notice):is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) {
  background: var(--paper); color: var(--ink); border-color: var(--line); border-radius: var(--radius); box-shadow: var(--mood-paper-shadow);
}
dialog:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus)::backdrop { background: #060a10bd; }
dialog.review-dialog:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) { background: transparent; box-shadow: none; }
:is(.mood-worn,.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus) .review-card { background: var(--paper); color: var(--ink); }

/* Unique, offline-baked textures: one placement per asset, no runtime filters. */
.game-shell:is(.mood-low,.mood-fragile):not(.finance-horror):not(.reduced-stimulus)::after {
  content: ''; position: fixed; inset: 0; z-index: 44; pointer-events: none;
  background: url('../assets/mood/blood-edge-baked.webp') center / 100% 100% no-repeat;
  opacity: var(--mood-blood);
  transition: opacity .2s ease-out;
}
.game-shell.mood-fragile:not(.finance-horror):not(.reduced-stimulus) .masthead::after {
  content: ''; position: fixed; top: 0; left: 0; right: 0; height: min(23vh,190px);
  z-index: 46; pointer-events: none;
  background: url('../assets/mood/blood-trails-baked.webp') center top / 100% 100% no-repeat;
  opacity: var(--mood-dread);
  transition: opacity .2s ease-out;
}
@media (prefers-reduced-motion: reduce) {
  .game-shell::after, .game-shell .masthead::after { transition: none; }
}
