.campaign-book{display:grid;gap:.8em}
.campaign-book h3,.campaign-book h4,.campaign-book p{margin:0}
.campaign-objective,.campaign-history{
  display:grid;gap:.65em;padding:.9em;border:1px solid #615037;border-radius:8px;
  background:linear-gradient(145deg,#24201a,#11161c 72%);box-shadow:inset 0 1px #fff1;
}
.campaign-objective h4{font-size:1.28em;color:#fff0ce}
.campaign-objective small,.campaign-muted{color:#d5c4a8}
.campaign-book .primary{justify-content:center}
.campaign-book .campaign-line,.campaign-history button,.campaign-scene-controls>button:not(.primary){
  background:#23272b;color:#f3e1b9;border:1px solid #6b5740;border-radius:6px;padding:.65em;
  text-align:left;min-height:34px;
}
.campaign-history{border-color:#393c3d;background:#12171a}
.campaign-history summary{font-weight:700;cursor:pointer}
.campaign-history[open]>:not(summary){margin-block-start:.65em}
.campaign-book .campaign-artifact{color:#ffcc73}
#game .campaign-highlight{
  outline:2px solid #ffd365;outline-offset:-2px;
  box-shadow:inset 0 0 15px #ffc04740,0 0 13px #ffc04776;
  animation:campaign-target 1.4s ease-in-out 5;
}
@keyframes campaign-target{50%{outline-color:#fff1ab;box-shadow:inset 0 0 16px #ffc04762,0 0 16px #ffc047a2}}
#game.campaign-blackout::after{
  content:"";position:absolute;inset:0;z-index:95;pointer-events:none;
  background:radial-gradient(ellipse at 50% 8%,#9e541933,#05080ce0 72%);
  animation:campaign-workshop-dark 2.3s ease-out both;
}
.campaign-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
@keyframes campaign-enter{from{opacity:0;translate:0 9px}to{opacity:1;translate:0 0}}
@keyframes campaign-workshop-dark{0%,100%{opacity:0}12%{opacity:.96}48%{opacity:.57}}
body.no-motion #game :is(.campaign-scene,.campaign-highlight){animation:none}
body.no-motion #game.campaign-blackout::after{display:none}
@media(prefers-reduced-motion:reduce){#game :is(.campaign-scene,.campaign-highlight){animation:none}}
@media(prefers-reduced-motion:reduce){#game.campaign-blackout::after{display:none}}


/* Persistent guidance stays in the native dialog top layer when work is open. */
#game .campaign-highlight{animation:campaign-target 1.7s ease-in-out infinite;outline-width:2px;position:relative}
.campaign-guide{position:absolute;z-index:94;right:12px;top:76px;width:min(310px,calc(100% - 24px));padding:12px 14px;background:#151a21f5;border:1px solid #c3933e;border-left:3px solid #f2b84b;border-radius:5px;box-shadow:0 8px 30px #0009;color:#e8eaed;animation:campaign-enter .2s ease both;box-sizing:border-box}
.campaign-guide header{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#f2b84b;font-size:10px;letter-spacing:.13em}
.campaign-guide header button{width:32px;min-height:30px;font-size:22px;padding:0;color:#bbc2cd}
.campaign-guide strong{display:block;font-size:15px}
.campaign-guide p{font-size:13px;line-height:1.4;margin:7px 0;color:#c8cdd5}
.campaign-guide-next{background:#f2b84b;color:#151a21;border-radius:3px;min-height:36px;padding:7px 12px;font-weight:700}
.campaign-guide-next[hidden]{display:none}
.campaign-guide-in-dialog{position:sticky;top:0;width:100%;margin:0 0 12px;z-index:5}
@media(max-height:460px){.campaign-guide{padding:5px 10px;width:min(270px,calc(100% - 24px));top:56px;right:8px}.campaign-guide p{font-size:12px;margin:3px 0}.campaign-guide header{font-size:9px}.campaign-guide strong{font-size:13px}.campaign-guide-in-dialog{width:100%;margin-bottom:6px;right:0;top:0}.campaign-guide-in-dialog header{float:right;margin-left:12px}.campaign-guide-in-dialog p{margin-right:0}}
body.no-motion #game .campaign-highlight{animation:none}
@media(prefers-reduced-motion:reduce){#game .campaign-highlight,.campaign-guide{animation:none}}

#game:has([data-race-active],.drag-screen) .campaign-guide{display:none!important}

.campaign-reward-card{
  position:absolute;right:clamp(8px,2vw,30px);bottom:clamp(45px,9vh,95px);z-index:10;
  display:grid;grid-template-columns:auto auto;gap:6px 10px;padding:10px 14px;
  border:1px solid #ffca60;border-radius:10px;background:#17130fee;color:#ffe2a2;
  box-shadow:0 0 22px #ffb22c38;animation:reward-in .22s ease-out
}
.campaign-reward-card :is(small,strong,span){grid-column:1/-1}
.campaign-reward-card .primary{min-height:34px}
.campaign-reward-pending::after{content:attr(data-reward-count);color:#1b1208;background:#ffc656;border-radius:1em;padding:0 .35em;font-size:10px}
@keyframes reward-in{from{opacity:0;transform:translateY(7px)}}
@media(prefers-reduced-motion:reduce){.campaign-reward-card{animation:none}}
body:has(.drag-screen,[data-race-active],.character-dialogue) .campaign-reward-card{display:none}
.phoenix-entry{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;text-align:left;width:100%;margin:0 0 12px;padding:12px;border:1px solid #aa8644;border-radius:8px;background:linear-gradient(140deg,#393830,#141719)}
.phoenix-entry span{grid-row:span 2;color:#ffca63;font-size:1.4em}.phoenix-entry small{color:#d8c5a4}.phoenix-ready{animation:campaign-target 1.7s infinite}
.phoenix-dialog{width:min(520px,calc(100% - 24px));max-height:calc(100dvh - 20px);overflow:auto}
.phoenix-dialog section{padding:12px 18px}.phoenix-dialog form{float:right}.phoenix-dialog h2{margin:0;color:#ffcd76}
.phoenix-chest{position:relative;width:min(210px,65%);height:96px;margin:20px auto 4px;perspective:460px}
.phoenix-front,.phoenix-lid{position:absolute;inset:auto 0 0;height:65%;border:3px solid #605749;border-radius:7px;background:repeating-linear-gradient(107deg,#fff0 0 13px,#e8ad5b10 14px 15px),linear-gradient(#575247,#252521);box-shadow:inset 0 0 17px #0b0b0b}
.phoenix-front{display:grid;place-content:center;text-align:center;color:#e0ba7b;font-size:11px;letter-spacing:.25em}
.phoenix-lid{z-index:1;bottom:57%;height:26%;transform-origin:top;background:linear-gradient(#6a6556,#2c2a23)}
.phoenix-chest i{position:absolute;z-index:2;left:19%;bottom:48%;width:13px;height:19px;background:linear-gradient(#ae9669,#3f3525);border:2px solid #665844;border-radius:3px}
.phoenix-chest i:last-child{left:auto;right:19%}
.phoenix-light{position:absolute;inset:19% 5% 55%;background:#ffe196;box-shadow:0 0 34px 12px #ffc368;opacity:0}
.phoenix-opened .phoenix-chest{scale:1.07;transition:scale .45s}
.phoenix-opened .phoenix-chest i{transform:translateY(15px) rotate(24deg);opacity:.25;transition:transform .3s,opacity .3s}
.phoenix-opened .phoenix-chest i:last-child{transition-delay:.2s}
.phoenix-opened .phoenix-lid{transform:rotateX(-125deg);transition:transform .6s .35s}
.phoenix-opened .phoenix-light{opacity:1;transition:opacity .5s .52s}
.phoenix-items details{padding:5px;border-bottom:1px solid #ffffff20}.phoenix-items summary{cursor:pointer;min-height:28px}
.phoenix-open[hidden]{display:none}
@media(prefers-reduced-motion:reduce){.phoenix-ready{animation:none}.phoenix-opened .phoenix-chest *{transition:none!important}}

.campaign-guide[hidden]{display:none}
.campaign-guide:not(.campaign-guide-in-dialog){pointer-events:none}
.campaign-guide button{pointer-events:auto;touch-action:manipulation}
.campaign-guide.guide-left:not(.campaign-guide-in-dialog){right:auto;left:8px}
#game :is(.post-marker,.vehicle-target).campaign-highlight{position:absolute}
#game .campaign-highlight{outline:2px solid #ffcc67;outline-offset:2px}
