@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@500;700;900&family=Cinzel+Decorative:wght@700;900&family=EB+Garamond:wght@500;600;700&display=swap');

:root {
  --bg:#050405;
  --panel:rgba(16,13,13,.82);
  --panel2:rgba(25,19,18,.92);
  --text:#f3eee7;
  --muted:#c8b9a5;
  --dim:#8f8173;
  --red:#b30016;
  --red2:#e0222f;
  --gold:#d6a756;
  --line:rgba(255,255,255,.14);
  --shadow:0 24px 90px rgba(0,0,0,.65);
}

.dh-button-link{display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;border:1px solid #7d483f;border-radius:6px;background:#b86e3e;color:#fff;text-decoration:none;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.dh-button-link:hover{background:#238f8d}
.dh-gm-library-links{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.dh-gm-library-links .dh-button-link{font-size:.76rem;padding:8px 11px}
[data-dh-gm-home] .dh-section-head h2{white-space:nowrap}
.dh-equipment-tabs{display:flex;flex-wrap:wrap;gap:8px;padding:8px;border:1px solid rgba(125,72,63,.25);border-radius:10px;background:rgba(255,255,255,.38)}.dh-equipment-tabs button{flex:1 1 130px}.dh-equipment-tabs button[data-active="true"]{background:#238f8d;color:#fff}
.dh-library{display:grid;gap:18px}.dh-library-filters{display:grid;grid-template-columns:minmax(240px,2fr) minmax(150px,1fr) minmax(120px,.7fr) auto;align-items:end;gap:14px;padding:16px}.dh-library-filters label{display:grid;gap:5px}.dh-library-filters input,.dh-library-filters select{width:100%;padding:10px;border:1px solid rgba(54,38,48,.24);border-radius:6px;background:#fffdf8;font:inherit}.dh-library-filters span{padding:10px;font-weight:700;text-align:right}
.dh-library-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:18px}.dh-library-card{display:grid;gap:10px;padding:20px;border:1px solid rgba(125,72,63,.25);border-radius:10px;background:#fffaf1;box-shadow:0 8px 24px rgba(24,15,24,.08)}.dh-library-card header,.dh-library-card footer{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.dh-library-card h3,.dh-library-card p{margin:0}.dh-library-card h3{font-size:1.45rem}.dh-library-type{color:#8d4f3b;font-weight:700}.dh-tier-badge{flex:none;padding:5px 9px;border-radius:999px;background:#238f8d;color:#fff;font-weight:700}.dh-library-card dl{margin:4px 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 14px}.dh-library-card dl div{display:grid;grid-template-columns:auto 1fr;gap:6px;border-top:1px solid rgba(54,38,48,.1);padding-top:5px}.dh-library-card dt{font-weight:700}.dh-library-card dd{margin:0}.dh-library-card details{border-top:1px solid rgba(54,38,48,.15);padding-top:8px}.dh-library-card summary{cursor:pointer;font-weight:700;color:#8d4f3b}.dh-library-card details section{padding:9px 0;border-bottom:1px solid rgba(54,38,48,.1)}.dh-library-card footer{justify-content:flex-start;margin-top:4px}
.dh-attack-line{display:flex;align-items:baseline;gap:8px;width:100%;padding:7px 0;border-top:1px solid rgba(54,38,48,.1);white-space:nowrap}.dh-potential-adversaries{display:grid;gap:4px;width:100%;padding:9px 0;border-top:1px solid rgba(54,38,48,.1)}.dh-potential-adversaries span{line-height:1.45}
.dh-impulses{display:grid;gap:4px;width:100%;padding:9px 0;border-top:1px solid rgba(54,38,48,.1)}.dh-impulses span{line-height:1.45}
.dh-library-dialog{width:min(760px,calc(100% - 28px));max-height:90vh;overflow:auto;border:1px solid #7d483f;border-radius:14px;padding:0;background:#f5f0e8;color:#302831}.dh-library-dialog::backdrop{background:rgba(13,8,18,.76)}.dh-library-dialog form{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:24px}.dh-library-dialog .dh-section-head,.dh-library-dialog label:has(textarea),.dh-library-dialog form>button,.dh-library-editor-fields{grid-column:1/-1}.dh-library-dialog label{display:grid;gap:5px;font-weight:700}.dh-library-dialog input,.dh-library-dialog textarea{width:100%;padding:10px;border:1px solid rgba(54,38,48,.25);border-radius:6px;background:#fffdf8;font:inherit}.dh-library-editor-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.dh-campaign-workspace,.dh-vtt{display:grid;gap:18px}
.dh-campaign-planner{display:grid;grid-template-columns:2fr .7fr 1.2fr;gap:14px;padding:20px}
.dh-campaign-planner label,.dh-campaign-roster form{display:grid;gap:6px}
.dh-campaign-planner input,.dh-campaign-planner textarea,.dh-campaign-roster input,.dh-campaign-roster select{width:100%;padding:10px;border:1px solid rgba(54,38,48,.22);border-radius:6px;background:#fffdf8;font:inherit}
.dh-notes-field{grid-column:1/-1}.dh-campaign-planner>button{justify-self:start}
.dh-campaign-roster{display:grid;grid-template-columns:1fr 1fr;gap:18px}.dh-campaign-roster>.dh-panel{padding:20px}.dh-campaign-roster form{grid-template-columns:1fr auto;margin:12px 0}
.dh-roster-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid rgba(54,38,48,.12)}.dh-roster-row span{display:grid}.dh-roster-row small{opacity:.7}
.dh-vtt-toolbar,.dh-vtt-trackers,.dh-vtt-main,.dh-vtt-grid-head{display:flex;align-items:center;gap:18px}.dh-vtt-toolbar{justify-content:space-between}.dh-vtt-toolbar h2,.dh-vtt-toolbar p{margin:0}.dh-vtt-save{margin-left:auto;color:#238f8d;font-weight:700}
.dh-vtt-trackers{justify-content:space-between;padding:14px;border:1px solid rgba(125,72,63,.25);border-radius:10px;background:rgba(245,240,232,.94)}
.dh-fear,.dh-countdowns{display:flex;align-items:center;gap:12px}.dh-fear>div,.dh-countdowns>div{display:grid;gap:5px}.dh-fear-beads,.dh-countdowns [data-dh-countdown-list]{display:flex;flex-wrap:wrap;gap:5px}.dh-fear-beads button{padding:2px;border-radius:50%;background:#17121b}.dh-fear-beads img{display:block;width:30px;height:30px;object-fit:contain}.dh-countdowns [data-countdown]{padding:6px 9px}
.dh-countdown-item{display:grid;justify-items:center;gap:5px;max-width:180px}.dh-countdown-item>strong{max-width:180px;white-space:normal;text-align:center;line-height:1.15;font-size:.75rem}.dh-countdown-die{display:grid!important;place-items:center;width:66px;height:66px;padding:8px!important;border:2px solid #fff!important;border-radius:14px!important;background:#070707!important;color:#fff!important;box-shadow:0 5px 14px rgba(0,0,0,.35)!important}.dh-countdown-die span{font-size:2rem;line-height:1;font-weight:900}
.dh-vtt-main{align-items:stretch;display:grid;grid-template-columns:minmax(0,3fr) minmax(260px,1fr)}.dh-vtt-main>.dh-panel{padding:16px}.dh-vtt-grid-head{justify-content:space-between}
.dh-grid-builder{display:flex;align-items:end;gap:7px}.dh-grid-builder label{display:grid;gap:2px;font-size:.72rem}.dh-grid-builder input{width:64px;padding:6px;border:1px solid rgba(54,38,48,.25);border-radius:5px;background:#fffdf8;font:inherit}
.dh-battle-grid{--grid-columns:16;display:grid;grid-template-columns:repeat(var(--grid-columns),minmax(18px,1fr));aspect-ratio:4/3;border:2px solid #9e7732;background:#15131a}.dh-grid-cell{position:relative;display:grid;place-items:center;min-width:0;min-height:0;border-right:1px solid rgba(214,167,86,.38);border-bottom:1px solid rgba(214,167,86,.38)}.dh-map-token{position:absolute;inset:8%;display:grid;place-items:center;width:84%;height:84%;padding:0!important;border:2px solid #f1d18d!important;border-radius:50%!important;background:#502b42!important;color:#fff!important;font-size:clamp(.45rem,1vw,.8rem);font-weight:900;cursor:grab}.dh-map-token[data-selected="true"]{outline:3px solid #31b8b2;outline-offset:1px}.dh-vtt-card-actions{display:flex;align-items:center;gap:5px}.dh-vtt-card-actions button:first-child{font-size:.68rem;text-transform:uppercase}
.dh-vtt-card{display:grid;gap:7px;padding:12px 0;border-top:1px solid rgba(54,38,48,.12)}.dh-vtt-card button{justify-self:start}.dh-vtt-card p{margin:0}.dh-vtt-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.dh-vtt-card-head>div{display:grid}.dh-vtt-card-head small{color:#8d4f3b}.dh-vtt-marks{display:grid;gap:5px}.dh-vtt-marks span{display:flex;align-items:center;justify-content:space-between;gap:4px;padding:5px;border-radius:5px;background:rgba(54,38,48,.06)}.dh-vtt-marks button{padding:2px 7px}.dh-vtt-card details summary{cursor:pointer;color:#8d4f3b;font-weight:700}.dh-vtt-card details p{margin:7px 0;font-size:.88rem}.dh-vtt-environments{padding:18px}.dh-vtt-environments [data-dh-vtt-environment-list]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.dh-environment-card{padding:14px;border:1px solid rgba(54,38,48,.14);border-radius:8px}
.dh-table-dialog{width:min(560px,calc(100% - 28px));max-height:88vh;overflow:auto;border:1px solid #7d483f;border-radius:14px;padding:22px;background:#f5f0e8;color:#302831}.dh-table-dialog::backdrop{background:rgba(13,8,18,.78)}.dh-table-dialog form{display:grid;gap:14px}.dh-table-dialog label{display:grid;gap:5px;font-weight:700}.dh-table-dialog input,.dh-table-dialog select{width:100%;padding:10px;border:1px solid rgba(54,38,48,.25);border-radius:6px;background:#fffdf8;font:inherit}.dh-picker-dialog{width:min(820px,calc(100% - 28px))}.dh-picker-filters{display:grid;grid-template-columns:2fr 1fr .75fr;gap:12px;margin-bottom:14px}.dh-picker-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.dh-picker-results>button{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px;text-align:left;background:#fffaf1;color:#302831;border:1px solid rgba(54,38,48,.18)}.dh-picker-results>button span{display:grid}.dh-picker-results small{color:#8d4f3b}.dh-picker-results em{font-style:normal;font-weight:700}
.dh-dice-roller{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:16px}.dh-dice-controls{display:flex;align-items:end;flex-wrap:wrap;gap:10px}.dh-dice-controls h3,.dh-dice-controls p{margin:0}.dh-dice-controls label{display:grid;gap:2px;font-size:.72rem}.dh-dice-controls input,.dh-dice-controls select{width:86px;padding:7px;border:1px solid rgba(54,38,48,.25);border-radius:5px;background:#fffdf8;font:inherit}.dh-mod-stepper{display:flex}.dh-mod-stepper input{width:48px;border-radius:0;text-align:center}.dh-mod-stepper button{padding:5px 8px}.dh-dice-buttons{display:flex;flex-wrap:wrap;gap:5px}.dh-dice-buttons button{min-width:42px;padding:7px}.dh-duality-button{min-width:78px!important;background:linear-gradient(90deg,#d49d35 0 50%,#3b2138 50% 100%)!important;color:#fff!important;border-color:#2c2030!important}.dh-gm-roll-button{min-width:86px!important;background:#050505!important;color:#fff!important;border-color:#fff!important}.dh-roll-result{min-width:190px;display:grid;place-items:center;padding:10px 16px;border-radius:8px;background:#17131b;color:#fff}.dh-roll-result>div{display:grid;place-items:center;gap:2px}.dh-roll-result>div>strong{font-size:2rem}.dh-roll-result small{opacity:.72}.dh-duality-result{grid-template-columns:1fr 1fr!important;gap:7px!important}.dh-duality-result>span{display:grid;place-items:center;min-width:70px;padding:8px;border-radius:12px;clip-path:polygon(15% 0,85% 0,100% 20%,90% 100%,10% 100%,0 20%)}.dh-duality-result strong{font-size:1.6rem}.dh-hope-die{background:#d49d35;color:#17131b}.dh-fear-die{background:#3b2138;color:#fff}.dh-duality-result>i,.dh-duality-result>b{grid-column:1/-1}.dh-duality-result>i{font-size:.72rem}.dh-gm-d20-result>span{display:grid;place-items:center;width:62px;height:62px;clip-path:polygon(50% 0,95% 25%,100% 75%,50% 100%,0 75%,5% 25%);background:#050505;color:#fff;font-size:1.6rem;font-weight:900}.dh-roll-history{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px}.dh-roll-history span{padding:4px 7px;border-radius:999px;background:rgba(54,38,48,.07);font-size:.76rem}
@media(max-width:850px){.dh-campaign-planner{grid-template-columns:1fr}.dh-notes-field{grid-column:auto}.dh-campaign-roster,.dh-vtt-main,.dh-library-grid,.dh-dice-roller{grid-template-columns:1fr}.dh-vtt-trackers{align-items:flex-start;flex-direction:column}.dh-library-filters,.dh-picker-filters{grid-template-columns:1fr 1fr}.dh-library-dialog form,.dh-library-editor-fields{grid-template-columns:1fr}.dh-library-dialog .dh-section-head,.dh-library-dialog label:has(textarea),.dh-library-dialog form>button,.dh-library-editor-fields{grid-column:auto}.dh-gm-library-links{justify-content:flex-start}.dh-vtt-environments [data-dh-vtt-environment-list],.dh-picker-results{grid-template-columns:1fr}.dh-vtt-grid-head{align-items:flex-start;flex-direction:column}.dh-roll-result{min-width:0}.dh-roll-history{grid-column:auto}}

*{
  box-sizing:border-box;
}

html{
  scroll-behavior:smooth;
}

body{
  margin:0;
  background:
    radial-gradient(circle at 20% 0%, rgba(179,0,22,.26), transparent 32%),
    linear-gradient(180deg,#120809 0%,#050405 58%,#020202 100%);
  color:var(--text);
  font-family:'EB Garamond', Georgia, serif;
}

body:before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  opacity:.09;
  background-image:
    linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);
  background-size:34px 34px;
}

.hero{
  position:relative;
  min-height:100vh;
  overflow:hidden;
  padding:80px 22px 70px;
}
/* Avernus */

.hero-avernus .hero-bg{
  background:
    linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.42),rgba(0,0,0,.88)),
    url("./assets/avernus.jpeg") center/cover;
}

/* Vecna */

.hero-vecna .hero-bg{
  background:
    linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.42),rgba(0,0,0,.88)),
    url("./assets/red.jpeg") center/cover;
}

/* Drakkenheim */

.hero-drakkenheim .hero-bg{
  background:
    linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.42),rgba(0,0,0,.88)),
    url("./assets/drakkenheim.png") center/cover;
}

/* Tomb */

.hero-tomb .hero-bg{
  background:
    linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.42),rgba(0,0,0,.88)),
    url("./assets/tomb.jpeg") center/cover;
}

/* Dragonlance */

.hero-dragonlance .hero-bg{
  background:
    linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.42),rgba(0,0,0,.88)),
    url("./assets/dragonlance.png") center/cover;
}

/* Strahd */

.hero-strahd .hero-bg{
  background:
    linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.42),rgba(0,0,0,.88)),
    url("./assets/strahd.jpg") center/cover;
}

.hero-wildemount .hero-bg{
  background:
    linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.45),rgba(0,0,0,.88)),
    url("./wildemount.jpg") center/cover;
}

/* Rime */

.hero-rime .hero-bg{
  background:
    linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.42),rgba(0,0,0,.88)),
    url("./assets/rime.jpeg") center/cover;
}
.hero-bg{
  position:absolute;
  inset:0;
  background:
    linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.45),rgba(0,0,0,.88)),
    url("./assets/red.jpeg") center/cover;
  filter:saturate(1.05) contrast(1.08);
  transform:scale(1.03);
}

/* Waterdeep Guide Hero */

.hero-wddh .hero-bg{
  background:
    linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.42),rgba(0,0,0,.88)),
    url("./assets/1v1campaign-wddh.jpeg") center/cover;
}

.hero-avernus .hero-bg{
  background:
    linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.42),rgba(0,0,0,.88)),
    url("./assets/avernus.jpeg") center/cover;
}

.hero:after{
  content:"";
  position:absolute;
  inset:0;
  background:radial-gradient(circle at center,transparent 0%,rgba(0,0,0,.24) 45%,rgba(0,0,0,.78) 100%);
}

.hero-inner{
  position:relative;
  z-index:2;
  width:min(1180px,100%);
  margin:0 auto;
  text-align:left;
  padding-top:150px;
}

.banner{
  width:100%;
  max-width:980px;
  height:auto;
  display:block;
  object-fit:contain;
  border:1px solid rgba(255,255,255,.18);
  box-shadow:var(--shadow);
  margin-bottom:34px;
}

.eyebrow{
  font-family:'Cinzel', serif;
  color:var(--gold);
  text-transform:uppercase;
  letter-spacing:.22em;
  font-weight:800;
  font-size:.76rem;
  margin:0 0 14px;
}

h1,h2,h3{
  margin:0;
  line-height:1.08;
}

h1{
  font-family:'Cinzel Decorative', serif;
  font-size:clamp(2.3rem,5vw,4.4rem);
  letter-spacing:.01em;
  max-width:760px;
  text-shadow:0 0 25px rgba(214,167,86,.16),0 10px 50px rgba(0,0,0,.85);
}

h2{
  font-family:'Cinzel Decorative', serif;
  font-size:clamp(1.55rem,3vw,2.6rem);
  letter-spacing:.01em;
}

h3{
  font-family:'Cinzel', serif;
  font-size:1.18rem;
  letter-spacing:.04em;
}

.lead{
  color:var(--muted);
  max-width:560px;
  margin:20px 0 0;
  font-size:clamp(1.02rem,1.7vw,1.18rem);
  line-height:1.6;
}

.actions{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  margin-top:28px;
}

.btn{
  font-family:'Cinzel', serif;
  display:inline-flex;
  min-height:42px;
  align-items:center;
  justify-content:center;
  padding:11px 17px;
  border-radius:999px;
  text-decoration:none;
  font-weight:900;
  font-size:.82rem;
  letter-spacing:.04em;
  color:var(--text);
  border:1px solid rgba(255,255,255,.18);
  background:linear-gradient(180deg,var(--red2),#72030d);
  box-shadow:0 16px 45px rgba(179,0,22,.34);
}

.btn.ghost{
  background:rgba(0,0,0,.46);
  box-shadow:none;
}

.private-note{
  color:rgba(243,238,231,.72);
  font-size:.92rem;
  margin-top:18px;
}

.section{
  position:relative;
  z-index:1;
  width:min(1180px,100%);
  margin:0 auto;
  padding:64px 22px;
}

.intro{
  background:linear-gradient(180deg,rgba(0,0,0,.48),rgba(0,0,0,.28));
  border:1px solid rgba(255,255,255,.12);
  border-radius:30px;
  box-shadow:var(--shadow);
  padding:42px;
  margin-top:36px;
}

.intro h2{
  max-width:820px;
}

.features{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:18px;
  margin-top:30px;
}

.features article,
.campaign,
.event-card,
.contact-card{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:24px;
  box-shadow:var(--shadow);
  overflow:hidden;
}

.features article{
  padding:24px;
}

.features span{
  font-family:'Cinzel', serif;
  color:var(--gold);
  font-size:1rem;
  font-weight:900;
  letter-spacing:.14em;
  display:block;
  margin-bottom:12px;
}

.features p,
.campaign p,
.event-card p,
.contact p,
.small{
  color:var(--muted);
  line-height:1.55;
}

.campaign-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:18px;
  margin-top:24px;
}

.campaign{
  min-width:0;
}

.campaign img{
  width:100%;
  height:220px;
  object-fit:cover;
  object-position:center;
  display:block;
  filter:saturate(1.04) contrast(1.05);
}

.campaign div{
  padding:22px;
}

.tag{
  font-family:'Cinzel', serif;
  color:var(--gold)!important;
  text-transform:uppercase;
  letter-spacing:.12em;
  font-size:.72rem;
  font-weight:800;
  margin-top:0;
}

.event-card{
  padding:42px;
  background:
    linear-gradient(135deg,rgba(179,0,22,.34),rgba(0,0,0,.1)),
    var(--panel2);
}

.event-card p{
  max-width:820px;
  font-size:1.05rem;
}

.contact{
  display:grid;
  grid-template-columns:1fr .8fr;
  gap:22px;
  align-items:center;
}

.contact-card{
  padding:26px;
  text-align:center;
}

.small{
  font-size:.94rem;
  color:var(--dim);
}

footer{
  border-top:1px solid var(--line);
  padding:30px 22px;
  text-align:center;
  color:var(--dim);
}

/* Primer Layout */

.primer-hero{
  min-height:60vh;
}

.primer-wrap{
  width:min(1180px,100%);
  margin:0 auto;
  padding:42px 22px 80px;
  display:grid;
  grid-template-columns:260px 1fr;
  gap:34px;
}

.primer-nav{
  position:sticky;
  top:24px;
  align-self:start;
  background:rgba(12,10,10,.88);
  border:1px solid var(--line);
  border-radius:18px;
  padding:18px;
  box-shadow:var(--shadow);
}

.primer-nav a{
  display:block;
  font-family:'Cinzel', serif;
  font-size:.78rem;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--muted);
  text-decoration:none;
  padding:10px 8px;
  border-bottom:1px solid rgba(255,255,255,.08);
}

.primer-nav a:hover{
  color:var(--gold);
}

.primer-content{
  background:#f4efe5;
  color:#221b18;
  border-radius:18px;
  overflow:hidden;
  box-shadow:var(--shadow);
  border:1px solid rgba(0,0,0,.25);
}

.ddb-section{
  padding:38px 46px;
  border-bottom:1px solid rgba(70,46,31,.18);
}

.ddb-section:last-child{
  border-bottom:none;
}

.ddb-section h2{
  color:#321b14;
  font-family:'Cinzel', serif;
  font-size:clamp(1.6rem,2.6vw,2.3rem);
  margin-bottom:18px;
}

.ddb-section h3{
  color:#6e2019;
  margin-top:22px;
  margin-bottom:8px;
}

.ddb-section p,
.ddb-section li{
  color:#2b2521;
  font-size:1.06rem;
  line-height:1.65;
}

.ddb-section .eyebrow{
  color:#9a2c1d;
}

.ddb-callout{
  border-left:5px solid #9a2c1d;
  background:#eadfce;
  padding:18px 22px;
  margin:24px 0;
  border-radius:0 12px 12px 0;
}

.ddb-table{
  border:1px solid rgba(70,46,31,.22);
  border-radius:14px;
  overflow:hidden;
  margin:22px 0;
}

.ddb-table div{
  display:grid;
  grid-template-columns:220px 1fr;
  border-bottom:1px solid rgba(70,46,31,.16);
}

.ddb-table div:last-child{
  border-bottom:none;
}

.ddb-table strong{
  background:#dfd1bd;
  padding:13px 16px;
  color:#321b14;
  font-family:'Cinzel', serif;
}

.ddb-table span{
  padding:13px 16px;
  color:#2b2521;
}

.faction-list{
  display:grid;
  gap:18px;
  margin-top:24px;
}

.faction-entry{
  background:#fffaf0;
  border:1px solid rgba(70,46,31,.2);
  border-radius:14px;
  padding:22px;
}

.faction-entry h3{
  margin-top:0;
}

@media(max-width:900px){

  .hero{
    padding-top:40px;
  }

  .features,
  .campaign-grid,
  .contact,
  .primer-wrap{
    grid-template-columns:1fr;
  }

  .campaign img{
    height:260px;
  }

  .intro{
    padding:30px 20px;
  }

  .primer-nav{
    position:relative;
    top:auto;
  }

  .ddb-table div{
    grid-template-columns:1fr;
  }
}

@media(max-width:520px){

  .section{
    padding:44px 16px;
  }

  .campaign img{
    height:220px;
  }

  .event-card{
    padding:26px;
  }

  .ddb-section{
    padding:28px 22px;
  }
}

/* Campaign Hover Overlay */

.campaign-img{
  position:relative;
  overflow:hidden;
  padding:0 !important;
}

.campaign-img img{
  width:100%;
  height:220px;
  object-fit:cover;
  object-position:center;
  display:block;
  filter:saturate(1.04) contrast(1.05);
  transition:transform 0.5s ease;
}

.campaign-overlay{
  position:absolute;
  inset:0;
  z-index:2;
  background:linear-gradient(
    to bottom,
    rgba(0,0,0,0.15),
    rgba(0,0,0,0.9)
  );
  display:flex;
  align-items:flex-end;
  padding:20px;
  opacity:0;
  transition:opacity 0.35s ease;
}

.campaign-overlay p{
  margin:0;
  color:var(--text);
  font-size:0.95rem;
  line-height:1.45;
}

.campaign-img:hover img{
  transform:scale(1.08);
}

.campaign-img:hover .campaign-overlay{
  opacity:1;
}


/* Daggerheart Compatible Player Portal */

.dh-page{
  --dh-ink:#29232c;
  --dh-ink-soft:#5a5160;
  --dh-plum:#25172d;
  --dh-plum-2:#402744;
  --dh-ivory:#fbf4e7;
  --dh-paper:#fffaf0;
  --dh-copper:#b86f45;
  --dh-copper-dark:#7d432c;
  --dh-teal:#2e8f8b;
  --dh-garnet:#8f2f46;
  --dh-line:rgba(41,35,44,.16);
  background:
    radial-gradient(circle at 20% 0%,rgba(184,111,69,.22),transparent 32%),
    radial-gradient(circle at 80% 8%,rgba(46,143,139,.18),transparent 34%),
    linear-gradient(140deg,var(--dh-plum),#17101d 58%,#100c15);
  color:var(--dh-ink);
  min-height:100vh;
}

.dh-page [hidden]{
  display:none!important;
}

.dh-app{
  min-height:calc(100vh - 84px);
  padding:12px;
}

.dh-topbar{
  align-items:center;
  background:rgba(255,250,240,.94);
  border:1px solid rgba(255,255,255,.36);
  border-radius:8px;
  box-shadow:0 18px 60px rgba(0,0,0,.24);
  display:flex;
  gap:16px;
  justify-content:space-between;
  margin:0 auto 10px;
  max-width:1180px;
  padding:10px 12px;
  position:sticky;
  top:8px;
  z-index:10;
}

.dh-brand{
  align-items:center;
  color:var(--dh-ink);
  display:flex;
  gap:10px;
  min-width:0;
  text-decoration:none;
}

.dh-brand img{
  background:#111;
  border-radius:50%;
  height:42px;
  object-fit:contain;
  padding:4px;
  width:42px;
}

.dh-brand strong,
.dh-brand small{
  display:block;
  line-height:1.05;
}

.dh-brand strong{
  font-family:'Cinzel', serif;
  font-size:1.1rem;
  text-transform:uppercase;
}

.dh-brand small{
  color:var(--dh-ink-soft);
  font-size:.74rem;
}

.dh-compatible-mark{
  height:42px;
  max-width:180px;
  object-fit:contain;
}

.dh-tabs{
  background:rgba(37,23,45,.88);
  border:1px solid rgba(255,250,240,.22);
  border-radius:8px;
  display:grid;
  gap:6px;
  grid-template-columns:repeat(4,1fr);
  margin:0 auto 12px;
  max-width:1180px;
  padding:6px;
  position:sticky;
  top:78px;
  z-index:9;
}

.dh-tabs button,
.dh-section-head button,
.dh-login-actions button,
.dh-card-actions button,
.dh-seat-card button,
.dh-rule-buttons button{
  appearance:none;
  background:var(--dh-copper);
  border:1px solid rgba(255,255,255,.26);
  border-radius:6px;
  color:#fff;
  cursor:pointer;
  font-family:'Cinzel', serif;
  font-size:.74rem;
  letter-spacing:.06em;
  padding:10px 11px;
  text-transform:uppercase;
}

.dh-tabs button[data-active="true"],
.dh-tabs button:hover,
.dh-section-head button:hover,
.dh-login-actions button:hover,
.dh-card-actions button:hover,
.dh-seat-card button:hover,
.dh-rule-buttons button[data-active="true"],
.dh-rule-buttons button:hover{
  background:var(--dh-teal);
}

.dh-login,
.dh-shell{
  margin:0 auto;
  max-width:1180px;
}

.dh-login{
  display:grid;
  min-height:68vh;
  place-items:center;
}

.dh-panel,
.dh-login-card,
.dh-character-card,
.dh-sheet,
.dh-seat-card,
.dh-empty{
  background:linear-gradient(180deg,var(--dh-paper),var(--dh-ivory));
  border:1px solid rgba(255,255,255,.62);
  border-radius:8px;
  box-shadow:0 16px 46px rgba(0,0,0,.18);
}

.dh-login-card{
  max-width:620px;
  padding:26px;
}

.dh-login-card h1,
.dh-portal-head h1,
.dh-section-head h2,
.dh-sheet h3,
.dh-rule-reader h3{
  color:var(--dh-ink);
  font-family:'Cinzel', serif;
  letter-spacing:.01em;
  line-height:1.08;
  margin:0;
  text-transform:uppercase;
}

.dh-login-card h1{
  font-size:clamp(2rem,7vw,4.8rem);
}

.dh-login-card p,
.dh-rule-reader p,
.dh-seat-card p,
.dh-character-card p,
.dh-empty p{
  color:var(--dh-ink-soft);
  line-height:1.45;
}

.dh-kicker{
  color:var(--dh-copper-dark);
  font-family:'Cinzel', serif;
  font-size:.72rem;
  font-weight:800;
  letter-spacing:.11em;
  margin:0 0 6px;
  text-transform:uppercase;
}

.dh-login-fields{
  display:grid;
  gap:8px;
  grid-template-columns:repeat(2,1fr);
  margin-top:18px;
}

.dh-login-fields label,
.dh-campaign-create label{
  color:var(--dh-ink-soft);
  display:grid;
  font-size:.78rem;
  gap:4px;
}

.dh-login-fields input,
.dh-campaign-create input,
.dh-builder input,
.dh-builder select{
  background:#fffdf7;
  border:1px solid var(--dh-line);
  border-radius:6px;
  color:var(--dh-ink);
  font:inherit;
  min-width:0;
  padding:10px;
}

.dh-login-actions{
  display:flex;
  gap:8px;
  justify-content:flex-end;
  margin-top:12px;
}

.dh-login-actions .dh-gm-entry{
  background:var(--dh-plum-2);
}

.dh-login-error{
  color:#9c302b !important;
  font-weight:700;
  margin:10px 0 0;
}

.dh-campaign-create{
  align-items:end;
  display:grid;
  gap:10px;
  grid-template-columns:1fr auto;
  margin-bottom:12px;
  padding:14px;
}

.dh-portal-head,
.dh-section-head{
  align-items:end;
  display:flex;
  gap:12px;
  justify-content:space-between;
  margin-bottom:12px;
}

.dh-portal-head{
  color:#fff;
  padding:12px 4px 4px;
}

.dh-portal-head h1{
  color:#fff;
  font-size:clamp(2rem,5vw,4.2rem);
}

.dh-portal-head .dh-kicker{
  color:#f0cfb9;
}

.dh-link-button{
  appearance:none;
  background:transparent;
  border:none;
  color:#f4dfce;
  cursor:pointer;
  font-family:'Cinzel', serif;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.dh-tab-panel{
  background:rgba(255,250,240,.86);
  border:1px solid rgba(255,255,255,.32);
  border-radius:8px;
  padding:14px;
}

.dh-character-list{
  display:grid;
  gap:10px;
}

.dh-character-card,
.dh-seat-card{
  align-items:center;
  display:grid;
  gap:12px;
  grid-template-columns:1fr auto;
  padding:14px;
}

.dh-character-card h3,
.dh-seat-card h3{
  font-family:'Cinzel', serif;
  margin:0;
  text-transform:uppercase;
}

.dh-card-actions{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  justify-content:flex-end;
}

.dh-card-actions button{
  background:var(--dh-plum-2);
  padding:8px 9px;
}

.dh-empty{
  padding:18px;
}

.dh-builder{
  display:grid;
  gap:12px;
}

.dh-builder label{
  color:var(--dh-ink-soft);
  display:grid;
  font-size:.82rem;
  gap:4px;
}

.dh-stepper{
  display:grid;
  gap:6px;
  grid-template-columns:repeat(8,1fr);
}

.dh-stepper button{
  background:rgba(255,253,247,.72);
  border:1px solid rgba(72,61,78,.16);
  border-radius:7px;
  color:var(--dh-ink-soft);
  font-family:'Cinzel', serif;
  font-size:.64rem;
  font-weight:800;
  min-height:38px;
  padding:8px 7px;
  text-align:center;
  text-transform:uppercase;
}

.dh-stepper button:hover,
.dh-stepper button:focus-visible{
  border-color:var(--dh-teal);
  transform:translateY(-1px);
}

.dh-stepper button[data-current="true"]{
  background:linear-gradient(135deg,var(--dh-teal),#266d73);
  border-color:rgba(255,255,255,.4);
  color:#fffaf0;
}

.dh-stepper button[data-done="true"]{
  border-color:rgba(179,105,59,.46);
  color:var(--dh-copper-dark);
}

.dh-wizard-card{
  background:#fffdf7;
  border:1px solid var(--dh-line);
  border-radius:8px;
  padding:16px;
}

.dh-wizard-card h3{
  color:var(--dh-ink);
  font-family:'Cinzel', serif;
  margin:0 0 12px;
  text-transform:uppercase;
}

.dh-builder-fields,
.dh-choice-grid,
.dh-card-slots,
.dh-domain-picker{
  display:grid;
  gap:9px;
}

.dh-builder-fields{
  grid-template-columns:repeat(2,1fr);
}

.dh-alias-fields{
  margin-top:12px;
}

.dh-wide-label{
  margin-top:12px;
}

.dh-choice-grid{
  grid-template-columns:repeat(3,1fr);
}

.dh-choice-grid button,
.dh-domain-picker button,
.dh-card-slot{
  background:linear-gradient(180deg,#fffdf7,#f3ebdc);
  border:1px solid var(--dh-line);
  border-radius:7px;
  color:var(--dh-ink);
  cursor:pointer;
  font-family:'Cinzel', serif;
  min-height:70px;
  padding:11px;
  text-align:left;
  text-transform:uppercase;
}

.dh-choice-grid button small,
.dh-domain-picker button small,
.dh-card-slot small,
.dh-card-slot span{
  color:var(--dh-teal);
  display:block;
  font-family:Georgia, serif;
  font-size:.72rem;
  margin-top:4px;
  text-transform:none;
}

.dh-choice-grid button[data-selected="true"],
.dh-domain-picker button[data-selected="true"]{
  border-color:var(--dh-teal);
  box-shadow:inset 0 0 0 2px rgba(46,143,139,.22);
}

.dh-card-slots{
  grid-template-columns:repeat(2,1fr);
  margin-bottom:10px;
}

.dh-card-slot{
  border-color:var(--dh-copper);
  min-height:112px;
}

.dh-card-slot strong{
  display:block;
  font-size:1.05rem;
  margin-top:12px;
}

.dh-domain-picker{
  grid-template-columns:repeat(3,1fr);
}

.dh-wizard-actions{
  border-top:1px solid var(--dh-line);
  display:flex;
  gap:8px;
  justify-content:flex-end;
  margin-top:16px;
  padding-top:12px;
}

.dh-wizard-actions button:disabled{
  cursor:not-allowed;
  opacity:.45;
}

.dh-helper{
  color:var(--dh-ink-soft);
  font-size:.82rem;
  margin:0;
}

.dh-helper.is-alert{
  color:var(--dh-garnet);
  font-weight:700;
}

.dh-trait-grid{
  display:grid;
  gap:7px;
  grid-template-columns:repeat(2,1fr);
}

.dh-sheet{
  margin-top:12px;
  padding:14px;
}

.dh-sheet-head{
  align-items:start;
  border-bottom:1px solid var(--dh-line);
  display:grid;
  gap:12px;
  grid-template-columns:minmax(180px,1fr) auto;
  margin-bottom:10px;
  padding-bottom:10px;
  position:relative;
}

.dh-sheet-head p{
  color:var(--dh-ink-soft);
  margin:4px 0 0;
}

.dh-sheet-meta{
  align-items:start;
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  justify-content:flex-end;
  max-width:620px;
}

.dh-meta-chip{
  appearance:none;
  background:rgba(46,143,139,.11);
  border:1px solid rgba(46,143,139,.24);
  border-radius:8px;
  color:var(--dh-ink);
  cursor:pointer;
  display:grid;
  gap:2px;
  min-width:74px;
  padding:7px 9px;
  text-align:left;
}

.dh-meta-chip small{
  color:var(--dh-teal);
  font-family:'Cinzel', serif;
  font-size:.58rem;
  letter-spacing:.08em;
  line-height:1;
  text-transform:uppercase;
}

.dh-meta-chip strong{
  color:var(--dh-ink);
  font-family:'Cinzel', serif;
  font-size:.86rem;
  line-height:1.05;
  text-transform:uppercase;
  white-space:nowrap;
}

.dh-meta-chip:hover,
.dh-meta-chip:focus{
  background:var(--dh-teal);
}

.dh-meta-chip:hover small,
.dh-meta-chip:focus small,
.dh-meta-chip:hover strong,
.dh-meta-chip:focus strong{
  color:#fffaf0;
}

.dh-sheet-section{
  position:relative;
}

.dh-sidecar-tab{
  appearance:none;
  align-items:center;
  background:linear-gradient(180deg,var(--dh-copper),#8e4b2b);
  border:1px solid rgba(255,255,255,.38);
  border-radius:0 7px 7px 0;
  color:#fffaf0;
  cursor:pointer;
  display:grid;
  font-family:'Cinzel', serif;
  font-size:.58rem;
  height:54px;
  justify-content:center;
  letter-spacing:.06em;
  padding:4px 2px;
  position:absolute;
  right:-36px;
  top:8px;
  width:38px;
  writing-mode:vertical-rl;
  z-index:4;
}

.dh-sidecar-tab[aria-expanded="true"]{
  background:var(--dh-teal);
}

.dh-sidecar{
  animation:dhSidecarIn .16s ease-out;
  background:#fffdf7;
  border:1px solid rgba(41,35,44,.2);
  border-left:4px solid var(--dh-teal);
  border-radius:8px;
  box-shadow:0 18px 48px rgba(41,35,44,.22);
  max-width:300px;
  padding:12px;
  position:absolute;
  right:18px;
  top:6px;
  width:min(300px,calc(100vw - 44px));
  z-index:6;
}

.dh-sidecar > button{
  appearance:none;
  background:transparent;
  border:none;
  color:var(--dh-ink-soft);
  cursor:pointer;
  font-size:1.2rem;
  line-height:1;
  padding:0;
  position:absolute;
  right:9px;
  top:8px;
}

.dh-sidecar h4{
  color:var(--dh-ink);
  font-family:'Cinzel', serif;
  margin:0 24px 8px 0;
  text-transform:uppercase;
}

.dh-sidecar p:last-child{
  color:var(--dh-ink-soft);
  font-size:.86rem;
  line-height:1.42;
  margin:0;
}

@keyframes dhSidecarIn{
  from{ opacity:0; transform:translateX(10px); }
  to{ opacity:1; transform:translateX(0); }
}

.dh-sheet-grid,
.dh-stat-strip,
.dh-track-grid{
  display:grid;
  gap:7px;
}

.dh-sheet-grid{
  grid-template-columns:136px 1fr;
}

.dh-evasion-badge{
  align-items:center;
  background:
    radial-gradient(circle at 30% 22%,rgba(255,255,255,.46),transparent 36%),
    linear-gradient(145deg,var(--dh-teal),#1f5e65);
  border:1px solid rgba(255,255,255,.42);
  border-radius:9px;
  box-shadow:0 10px 24px rgba(46,143,139,.28);
  color:#fff;
  display:grid;
  min-height:100%;
  padding:8px;
  text-align:center;
}

.dh-evasion-badge small{
  font-family:'Cinzel', serif;
  font-size:.62rem;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.dh-evasion-badge strong{
  font-size:2.35rem;
  line-height:1;
}

.dh-stat-strip{
  grid-template-columns:repeat(6,1fr);
}

.dh-track-grid{
  grid-template-columns:repeat(4,1fr);
  margin-top:10px;
}

.dh-stat-strip span{
  background:#fffdf7;
  border:1px solid var(--dh-line);
  border-radius:7px;
  display:grid;
  gap:2px;
  padding:8px;
  text-align:center;
}

.dh-stat-strip small{
  color:var(--dh-ink-soft);
  font-size:.62rem;
  text-transform:uppercase;
}

.dh-stat-strip strong{
  color:var(--dh-ink);
  font-size:1.05rem;
}

.dh-track{
  background:#fffdf7;
  border:1px solid var(--dh-line);
  border-radius:8px;
  display:grid;
  gap:7px;
  padding:9px;
}

.dh-track > div:first-child{
  align-items:center;
  display:flex;
  gap:8px;
  justify-content:space-between;
}

.dh-track small{
  color:var(--dh-ink-soft);
  font-family:'Cinzel', serif;
  font-size:.66rem;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.dh-track strong{
  color:var(--dh-ink);
  font-size:.9rem;
}

.dh-box-row{
  display:flex;
  flex-wrap:wrap;
  gap:5px;
}

.dh-mark-box{
  appearance:none;
  background:#faf9f4;
  border:1px solid rgba(41,35,44,.34);
  border-radius:4px;
  cursor:pointer;
  height:20px;
  padding:0;
  position:relative;
  width:20px;
}

.dh-mark-box.is-marked:before{
  background:currentColor;
  box-shadow:4px 0 0 currentColor,8px 0 0 currentColor;
  content:"";
  height:2px;
  left:3px;
  position:absolute;
  top:12px;
  transform:rotate(-48deg);
  transform-origin:center;
  width:13px;
}

.dh-armor-track .dh-mark-box{
  border-color:rgba(125,67,44,.5);
}

.dh-armor-track .dh-mark-box.is-marked{
  color:var(--dh-copper-dark);
}

.dh-stress-track{
  background:#e2dfda;
}

.dh-stress-track .dh-mark-box{
  background:#f4f1eb;
  border-color:rgba(41,35,44,.48);
}

.dh-stress-track .dh-mark-box.is-marked{
  color:#3e3940;
}

.dh-hope-track{
  background:#fff1c9;
  border-color:rgba(177,122,24,.34);
}

.dh-hope-track .dh-mark-box{
  background:#fffaf0;
  border-color:rgba(177,122,24,.6);
}

.dh-hope-track .dh-mark-box.is-marked{
  color:#c99219;
}

.dh-hp-track{
  border-color:rgba(52,121,77,.26);
}

.dh-hp-healthy .dh-hp-track{
  background:#e8f5e9;
}

.dh-hp-hurt .dh-hp-track{
  background:#fff4ca;
  border-color:rgba(199,145,25,.34);
}

.dh-hp-bloodied .dh-hp-track{
  background:#ffe1c2;
  border-color:rgba(190,97,29,.38);
}

.dh-hp-critical .dh-hp-track{
  background:#ffd4d2;
  border-color:rgba(143,47,70,.4);
}

.dh-hp-track .dh-mark-box.is-marked{
  color:var(--dh-garnet);
}

.dh-sheet-lines{
  display:grid;
  gap:4px;
  margin:10px 0;
}

.dh-sheet-lines p{
  color:var(--dh-ink-soft);
  margin:0;
}

.dh-equipment-table{
  border:1px solid var(--dh-line);
  border-radius:8px;
  display:grid;
  margin-top:10px;
  overflow:hidden;
}

.dh-gear-grid{
  display:grid;
  gap:8px;
  grid-template-columns:repeat(3,1fr);
  margin-top:10px;
}

.dh-gear-card{
  background:#fffdf7;
  border:1px solid var(--dh-line);
  border-radius:8px;
  padding:10px;
}

.dh-gear-card p,
.dh-gear-card h4{
  margin:0;
}

.dh-gear-card p{
  color:var(--dh-copper-dark);
  font-family:'Cinzel', serif;
  font-size:.66rem;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.dh-gear-card h4{
  color:var(--dh-ink);
  font-family:'Cinzel', serif;
  font-size:1rem;
  line-height:1.1;
  margin-top:5px;
  text-transform:uppercase;
}

.dh-gear-card div{
  display:grid;
  gap:5px;
  grid-template-columns:repeat(3,1fr);
  margin-top:10px;
}

.dh-gear-card span{
  background:#f6efe3;
  border:1px solid rgba(41,35,44,.1);
  border-radius:6px;
  display:grid;
  gap:2px;
  min-width:0;
  padding:6px;
}

.dh-gear-card small{
  color:var(--dh-ink-soft);
  font-size:.58rem;
  line-height:1;
  text-transform:uppercase;
}

.dh-gear-card strong{
  color:var(--dh-ink);
  font-size:.76rem;
  line-height:1.1;
  overflow-wrap:anywhere;
}

.dh-gear-card em{
  border-top:1px solid var(--dh-line);
  color:var(--dh-ink-soft);
  display:block;
  font-size:.78rem;
  font-style:normal;
  line-height:1.28;
  margin-top:9px;
  padding-top:8px;
}

.dh-equipment-table div{
  align-items:center;
  display:grid;
  gap:8px;
  grid-template-columns:1.2fr 1.4fr .9fr .9fr;
  padding:9px 10px;
}

.dh-equipment-table div + div{
  border-top:1px solid var(--dh-line);
}

.dh-equipment-table strong{
  color:var(--dh-copper-dark);
  font-family:'Cinzel', serif;
  font-size:.72rem;
  letter-spacing:.06em;
  text-transform:uppercase;
}

.dh-equipment-table span{
  color:var(--dh-ink-soft);
  font-size:.86rem;
}

.dh-snippet-section{
  margin-top:12px;
}

.dh-feature-list{
  display:grid;
  gap:7px;
  grid-template-columns:repeat(4,1fr);
}

.dh-feature-snippet{
  background:#fffdf7;
  border:1px solid var(--dh-line);
  border-radius:8px;
  padding:9px;
}

.dh-feature-snippet summary,
.dh-codex-card summary{
  cursor:pointer;
  list-style:none;
}

.dh-feature-snippet summary::-webkit-details-marker,
.dh-codex-card summary::-webkit-details-marker{
  display:none;
}

.dh-feature-snippet span{
  color:var(--dh-teal);
  display:block;
  font-family:'Cinzel', serif;
  font-size:.62rem;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.dh-feature-snippet strong{
  color:var(--dh-ink);
  display:block;
  font-family:'Cinzel', serif;
  line-height:1.15;
  margin-top:4px;
  text-transform:uppercase;
}

.dh-feature-snippet p{
  color:var(--dh-ink-soft);
  font-size:.82rem;
  line-height:1.35;
  margin:8px 0 0;
}

.dh-codex-strip{
  border-top:1px solid var(--dh-line);
  display:flex;
  gap:9px;
  margin-top:12px;
  overflow-x:auto;
  padding:12px 0 2px;
  scroll-snap-type:x proximity;
}

.dh-loadout-panel,
.dh-inventory-panel{
  background:#fffdf7;
  border:1px solid var(--dh-line);
  border-radius:8px;
  padding:10px;
}

.dh-loadout-panel > summary,
.dh-inventory-panel > summary{
  align-items:center;
  cursor:pointer;
  display:flex;
  gap:10px;
  justify-content:space-between;
  list-style:none;
}

.dh-loadout-panel > summary::-webkit-details-marker,
.dh-inventory-panel > summary::-webkit-details-marker{
  display:none;
}

.dh-loadout-panel > summary span,
.dh-inventory-panel > summary span{
  color:var(--dh-copper-dark);
  font-family:'Cinzel', serif;
  font-size:.72rem;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.dh-loadout-panel > summary strong,
.dh-inventory-panel > summary strong{
  background:rgba(46,143,139,.1);
  border:1px solid rgba(46,143,139,.2);
  border-radius:999px;
  color:var(--dh-teal);
  font-family:'Cinzel', serif;
  font-size:.68rem;
  padding:5px 8px;
  text-transform:uppercase;
}

.dh-card-library{
  display:grid;
  gap:7px;
  grid-template-columns:repeat(3,1fr);
  margin-top:10px;
}

.dh-card-library button{
  appearance:none;
  background:#f6efe3;
  border:1px solid rgba(41,35,44,.14);
  border-radius:7px;
  color:var(--dh-ink);
  cursor:pointer;
  font-family:'Cinzel', serif;
  min-height:58px;
  padding:9px;
  text-align:left;
  text-transform:uppercase;
}

.dh-card-library button small{
  color:var(--dh-teal);
  display:block;
  font-family:Georgia, serif;
  font-size:.68rem;
  margin-bottom:4px;
  text-transform:none;
}

.dh-card-library button[data-selected="true"]{
  background:#fffdf7;
  border-color:var(--dh-teal);
  box-shadow:inset 0 0 0 2px rgba(46,143,139,.18);
}

.dh-inventory-panel{
  margin-top:12px;
}

.dh-inventory-body{
  display:grid;
  gap:10px;
  margin-top:10px;
}

.dh-gold-row{
  display:grid;
  gap:8px;
  grid-template-columns:repeat(3,1fr);
}

.dh-gold-row label{
  background:#fff8e5;
  border:1px solid rgba(177,122,24,.24);
  border-radius:7px;
  color:var(--dh-copper-dark);
  display:grid;
  font-family:'Cinzel', serif;
  font-size:.66rem;
  font-weight:800;
  gap:5px;
  letter-spacing:.08em;
  padding:8px;
  text-transform:uppercase;
}

.dh-gold-row input{
  background:#fffdf7;
  border:1px solid rgba(41,35,44,.16);
  border-radius:6px;
  color:var(--dh-ink);
  font:800 .95rem Georgia, serif;
  padding:6px;
  width:100%;
}

.dh-inventory-toolbar{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}

.dh-inventory-toolbar button,
.dh-inventory-item nav button{
  appearance:none;
  background:#432347;
  border:1px solid rgba(255,255,255,.2);
  border-radius:7px;
  color:#fffdf7;
  cursor:pointer;
  font-family:'Cinzel', serif;
  font-size:.66rem;
  font-weight:800;
  letter-spacing:.06em;
  padding:8px 10px;
  text-transform:uppercase;
}

.dh-inventory-toolbar button:first-child{
  background:var(--dh-teal);
}

.dh-inventory-list{
  display:grid;
  gap:8px;
}

.dh-inventory-item{
  align-items:start;
  background:#f6efe3;
  border:1px solid rgba(41,35,44,.12);
  border-left:4px solid var(--dh-copper);
  border-radius:8px;
  display:grid;
  gap:10px;
  grid-template-columns:minmax(0,1fr) auto auto;
  padding:10px;
}

.dh-inventory-item h4,
.dh-inventory-item p{
  margin:0;
}

.dh-inventory-item small{
  color:var(--dh-teal);
  display:block;
  font-family:'Cinzel', serif;
  font-size:.62rem;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.dh-inventory-item h4{
  color:var(--dh-ink);
  font-family:'Cinzel', serif;
  font-size:.96rem;
  line-height:1.1;
  margin-top:3px;
  text-transform:uppercase;
}

.dh-inventory-item p{
  color:var(--dh-ink-soft);
  font-size:.82rem;
  line-height:1.35;
  margin-top:5px;
}

.dh-inventory-item > span{
  background:#fffdf7;
  border:1px solid rgba(41,35,44,.12);
  border-radius:999px;
  color:var(--dh-ink);
  font-size:.78rem;
  font-weight:800;
  padding:6px 9px;
  white-space:nowrap;
}

.dh-inventory-item nav{
  display:flex;
  gap:6px;
}

.dh-inventory-empty{
  background:#f6efe3;
  border:1px dashed rgba(41,35,44,.2);
  border-radius:8px;
  color:var(--dh-ink-soft);
  padding:10px;
}

.dh-modal-backdrop{
  align-items:center;
  background:rgba(16,12,21,.58);
  display:grid;
  inset:0;
  padding:18px;
  position:fixed;
  z-index:40;
}

.dh-item-modal{
  background:linear-gradient(180deg,var(--dh-paper),var(--dh-ivory));
  border:1px solid rgba(255,255,255,.58);
  border-radius:8px;
  box-shadow:0 24px 80px rgba(0,0,0,.34);
  color:var(--dh-ink);
  display:grid;
  gap:12px;
  justify-self:center;
  max-width:680px;
  padding:16px;
  width:min(680px,100%);
}

.dh-item-modal-head{
  align-items:start;
  border-bottom:1px solid var(--dh-line);
  display:flex;
  gap:12px;
  justify-content:space-between;
  padding-bottom:10px;
}

.dh-item-modal h3{
  color:var(--dh-ink);
  font-family:'Cinzel', serif;
  margin:0;
  text-transform:uppercase;
}

.dh-item-modal-head > button{
  appearance:none;
  background:transparent;
  border:none;
  color:var(--dh-ink-soft);
  cursor:pointer;
  font-size:1.35rem;
  line-height:1;
}

.dh-item-modal-grid{
  display:grid;
  gap:10px;
  grid-template-columns:1fr 150px;
}

.dh-item-modal label{
  color:var(--dh-copper-dark);
  display:grid;
  font-family:'Cinzel', serif;
  font-size:.68rem;
  font-weight:800;
  gap:5px;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.dh-modal-wide{
  grid-column:1 / -1;
}

.dh-item-modal input,
.dh-item-modal select,
.dh-item-modal textarea{
  background:#fffdf7;
  border:1px solid rgba(41,35,44,.16);
  border-radius:7px;
  color:var(--dh-ink);
  font:400 .94rem Georgia, serif;
  padding:9px;
  width:100%;
}

.dh-item-modal textarea{
  line-height:1.4;
  resize:vertical;
}

.dh-item-modal-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  justify-content:flex-end;
}

.dh-item-modal-actions button{
  appearance:none;
  background:#432347;
  border:1px solid rgba(255,255,255,.2);
  border-radius:7px;
  color:#fffdf7;
  cursor:pointer;
  font-family:'Cinzel', serif;
  font-size:.68rem;
  font-weight:800;
  letter-spacing:.06em;
  padding:9px 12px;
  text-transform:uppercase;
}

.dh-item-modal-actions button[type="submit"]{
  background:var(--dh-teal);
}

.dh-confirm-modal p{
  color:var(--dh-ink-soft);
  margin:0;
}

.dh-codex-card{
  background:
    linear-gradient(135deg,rgba(255,255,255,.74),rgba(255,250,240,.96)),
    var(--dh-paper);
  border:1px solid rgba(41,35,44,.18);
  border-left:4px solid var(--dh-copper);
  border-radius:7px;
  box-shadow:0 8px 20px rgba(41,35,44,.12);
  flex:0 0 178px;
  min-height:104px;
  padding:10px;
  scroll-snap-align:start;
}

.dh-codex-card p,
.dh-codex-card h4,
.dh-codex-card span{
  margin:0;
}

.dh-codex-card p{
  color:var(--dh-teal);
  font-family:'Cinzel', serif;
  font-size:.64rem;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.dh-codex-card h4{
  color:var(--dh-ink);
  font-family:'Cinzel', serif;
  font-size:1rem;
  line-height:1.1;
  margin-top:6px;
  text-transform:uppercase;
}

.dh-codex-card span{
  color:var(--dh-ink-soft);
  display:block;
  font-size:.78rem;
  line-height:1.3;
  margin-top:8px;
}

.dh-rule-layout{
  display:grid;
  gap:14px;
  grid-template-columns:220px minmax(0,1fr);
  align-items:start;
}

.dh-rule-buttons{
  align-self:start;
  display:grid;
  gap:7px;
  position:sticky;
  top:142px;
}

.dh-rule-buttons button{
  background:var(--dh-plum-2);
  justify-content:flex-start;
  min-height:42px;
  text-align:left;
}

.dh-rule-reader{
  overflow:hidden;
  padding:18px;
}

.dh-rule-article-head{
  border-bottom:3px double rgba(125,67,44,.28);
  margin-bottom:14px;
  padding-bottom:14px;
}

.dh-rule-article-head h3{
  font-size:clamp(1.7rem,3.3vw,2.8rem);
  margin-bottom:8px;
}

.dh-rule-article-head p:last-child{
  color:var(--dh-ink-soft);
  font-size:1rem;
  line-height:1.5;
  margin:0;
  max-width:74ch;
}

.dh-rule-summary-grid{
  display:grid;
  gap:9px;
  grid-template-columns:repeat(auto-fit,minmax(170px,1fr));
  margin:0 0 16px;
}

.dh-rule-summary-card{
  appearance:none;
  background:#fffdf7;
  border:1px solid rgba(41,35,44,.14);
  border-left:4px solid var(--dh-copper);
  border-radius:8px;
  color:inherit;
  cursor:pointer;
  display:grid;
  gap:4px;
  grid-template-rows:auto auto 1fr;
  font:inherit;
  min-height:86px;
  padding:10px;
  text-align:left;
}

.dh-rule-summary-card:hover,
.dh-rule-summary-card:focus{
  border-color:rgba(46,143,139,.44);
  box-shadow:inset 0 0 0 2px rgba(46,143,139,.16);
}

.dh-rule-summary-card small,
.dh-rule-srd-card small,
.dh-domain-card small,
.dh-rule-side-panel .dh-kicker{
  color:var(--dh-teal);
  font-family:'Cinzel', serif;
  font-size:.64rem;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.dh-rule-summary-card strong{
  color:var(--dh-ink);
  font-family:'Cinzel', serif;
  font-size:.82rem;
  line-height:1.12;
  text-transform:uppercase;
}

.dh-rule-summary-card span{
  color:var(--dh-ink-soft);
  font-size:.82rem;
  line-height:1.32;
}

.dh-rule-content-grid{
  align-items:start;
  display:grid;
  gap:14px;
  grid-template-columns:minmax(0,1fr);
}

.dh-rule-main-column{
  display:grid;
  gap:10px;
  min-width:0;
}

.dh-rule-side-column{
  display:grid;
  gap:10px;
  position:sticky;
  top:142px;
}

.dh-rule-topic{
  background:
    linear-gradient(180deg,rgba(255,255,255,.42),rgba(246,239,227,.58)),
    #fffdf7;
  border:1px solid var(--dh-line);
  border-radius:8px;
  overflow:hidden;
}

.dh-rule-topic summary{
  align-items:center;
  cursor:pointer;
  display:flex;
  gap:12px;
  justify-content:flex-start;
  list-style:none;
  padding:12px 14px;
}

.dh-rule-topic summary::-webkit-details-marker{
  display:none;
}

.dh-rule-topic summary span{
  color:var(--dh-ink);
  font-family:'Cinzel', serif;
  font-size:.95rem;
  font-weight:900;
  letter-spacing:.03em;
  text-transform:uppercase;
}

.dh-rule-topic > div{
  border-top:1px solid var(--dh-line);
  padding:14px;
}

.dh-rule-topic p,
.dh-rule-topic li{
  color:var(--dh-ink);
  font-size:.98rem;
  line-height:1.58;
  margin:0 0 10px;
  max-width:78ch;
}

.dh-rule-topic ul{
  display:grid;
  gap:7px;
  margin:10px 0 0;
  max-width:78ch;
  padding-left:20px;
}

.dh-rule-topic li{
  margin:0;
}

.dh-rule-mini-list{
  display:grid;
  gap:8px;
  margin-top:10px;
}

.dh-rule-mini-list span{
  background:rgba(255,253,247,.74);
  border:1px solid var(--dh-line);
  border-radius:7px;
  display:grid;
  gap:2px;
  padding:8px;
}

.dh-rule-mini-list strong{
  color:var(--dh-ink);
  font-family:'Cinzel', serif;
  font-size:.76rem;
  line-height:1.1;
  text-transform:uppercase;
}

.dh-rule-mini-list small{
  color:var(--dh-ink-soft);
  font-size:.78rem;
  line-height:1.25;
}

.dh-domain-grid,
.dh-rule-card-list,
.dh-item-reference-grid{
  display:grid;
  gap:9px;
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  margin-top:12px;
}

.dh-domain-card,
.dh-rule-srd-card,
.dh-item-reference-card{
  background:rgba(255,253,247,.86);
  border:1px solid var(--dh-line);
  border-left:4px solid var(--dh-copper);
  border-radius:8px;
  display:grid;
  gap:6px;
  padding:11px;
}

.dh-domain-card h4,
.dh-rule-srd-card strong,
.dh-item-reference-card h4{
  color:var(--dh-ink);
  font-family:'Cinzel', serif;
  font-size:1rem;
  line-height:1.08;
  margin:0;
  text-transform:uppercase;
}

.dh-domain-card p,
.dh-domain-card span,
.dh-rule-srd-card p,
.dh-item-reference-card p{
  color:var(--dh-ink-soft);
  font-size:.86rem;
  line-height:1.35;
  margin:0;
}

.dh-item-reference-card small{
  color:var(--dh-teal);
  font-family:'Cinzel', serif;
  font-size:.62rem;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.dh-rule-prose{
  display:grid;
  gap:9px;
}

.dh-rule-prose h4{
  border-top:1px solid var(--dh-line);
  color:var(--dh-copper-dark);
  font-family:'Cinzel', serif;
  font-size:.82rem;
  letter-spacing:.08em;
  margin:8px 0 0;
  padding-top:10px;
  text-transform:uppercase;
}

.dh-rule-prose h4:first-child{
  border-top:none;
  margin-top:0;
  padding-top:0;
}

.dh-rule-prose p{
  max-width:92ch;
}

.dh-reference-table{
  border:1px solid var(--dh-line);
  border-radius:8px;
  display:grid;
  margin-top:12px;
  overflow:hidden;
}

.dh-reference-row{
  display:grid;
  grid-template-columns:var(--dh-reference-template, repeat(var(--dh-reference-columns, 6), minmax(0,1fr)));
  min-width:0;
}

.dh-reference-row + .dh-reference-row{
  border-top:1px solid var(--dh-line);
}

.dh-reference-row span{
  color:var(--dh-ink-soft);
  font-size:.82rem;
  line-height:1.25;
  min-width:0;
  overflow-wrap:anywhere;
  padding:9px 10px;
}

.dh-reference-head{
  background:rgba(64,39,68,.09);
}

.dh-reference-head span{
  color:var(--dh-copper-dark);
  font-family:'Cinzel', serif;
  font-size:.68rem;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.dh-seat-card button{
  background:var(--dh-garnet);
  min-width:160px;
}

.dh-tooltip,
.dh-toast{
  position:fixed;
  z-index:30;
}

.dh-tooltip{
  background:var(--dh-ink);
  border:1px solid rgba(255,255,255,.18);
  border-radius:7px;
  box-shadow:0 14px 34px rgba(0,0,0,.24);
  color:#fffaf0;
  font-size:.82rem;
  line-height:1.35;
  max-width:270px;
  padding:9px 10px;
}

.dh-toast{
  background:var(--dh-teal);
  border-radius:999px;
  bottom:18px;
  box-shadow:0 16px 38px rgba(0,0,0,.24);
  color:#fff;
  left:50%;
  padding:10px 16px;
  transform:translateX(-50%);
}

.dh-footer{
  color:#e8d8ca;
  font-size:.72rem;
  line-height:1.4;
  margin:0 auto;
  max-width:1180px;
  padding:10px 14px 24px;
}

@media(max-width:860px){
  .dh-rule-layout,
  .dh-rule-content-grid{
    grid-template-columns:1fr;
  }

  .dh-rule-buttons{
    grid-template-columns:repeat(2,1fr);
    position:static;
  }

  .dh-rule-side-column{
    position:static;
  }

  .dh-builder,
  .dh-character-card,
  .dh-seat-card{
    grid-template-columns:1fr;
  }

  .dh-stepper,
  .dh-choice-grid,
  .dh-domain-picker{
    grid-template-columns:repeat(2,1fr);
  }

  .dh-builder-fields{
    grid-template-columns:1fr;
  }

  .dh-card-actions{
    justify-content:start;
  }

  .dh-stat-strip{
    grid-template-columns:repeat(3,1fr);
  }

  .dh-sheet-grid,
  .dh-feature-list,
  .dh-gear-grid,
  .dh-card-library{
    grid-template-columns:1fr;
  }

  .dh-equipment-table div{
    grid-template-columns:1fr 1fr;
  }
}

@media(max-width:560px){
  .dh-app{
    padding:8px;
  }

  .dh-topbar{
    top:6px;
  }

  .dh-stepper,
  .dh-card-slots,
  .dh-choice-grid,
  .dh-domain-picker{
    grid-template-columns:1fr;
  }

  .dh-sidecar-tab{
    right:4px;
    top:-28px;
    width:auto;
    height:24px;
    writing-mode:horizontal-tb;
    border-radius:7px;
    padding:3px 8px;
  }

  .dh-brand strong{
    font-size:.92rem;
  }

  .dh-compatible-mark{
    height:34px;
    max-width:110px;
  }

  .dh-tabs{
    top:68px;
  }

  .dh-tabs button{
    font-size:.63rem;
    padding:9px 5px;
  }

  .dh-rule-buttons,
  .dh-rule-summary-grid,
  .dh-domain-grid,
  .dh-rule-card-list,
  .dh-item-reference-grid{
    grid-template-columns:1fr;
  }

  .dh-login-fields,
  .dh-login-actions,
  .dh-campaign-create,
  .dh-section-head,
  .dh-portal-head{
    align-items:stretch;
    flex-direction:column;
    grid-template-columns:1fr;
  }

  .dh-sheet-head{
    grid-template-columns:1fr;
  }

  .dh-sheet-meta{
    justify-content:start;
  }

  .dh-tab-panel{
    padding:10px;
  }

  .dh-trait-grid,
  .dh-track-grid,
  .dh-gold-row{
    grid-template-columns:repeat(2,1fr);
  }

  .dh-inventory-item{
    grid-template-columns:1fr;
  }

  .dh-inventory-item nav{
    justify-content:start;
  }

  .dh-gear-card div{
    grid-template-columns:1fr;
  }

  .dh-equipment-table div{
    grid-template-columns:1fr;
  }

  .dh-stat-strip{
    grid-template-columns:repeat(2,1fr);
  }

  .dh-codex-card{
    flex-basis:154px;
  }
}

.daggerheart-home-card{
  background:
    radial-gradient(circle at 85% 12%,rgba(46,143,139,.25),transparent 28%),
    linear-gradient(135deg,rgba(64,39,68,.88),rgba(184,111,69,.34)),
    var(--panel2);
}

/* Portal Pages */

.page{
  min-height:100vh;
  padding:48px 24px;
}

.hero-card{
  max-width:1180px;
  margin:0 auto;
  background:rgba(15,12,12,.82);
  border:1px solid rgba(255,255,255,.12);
  border-radius:30px;
  padding:48px;
  box-shadow:var(--shadow);
  position:relative;
  z-index:2;
}

.subtitle{
  color:var(--muted);
  font-size:1.1rem;
  line-height:1.6;
  max-width:760px;
  margin-top:18px;
}

.session-banner{
  margin-top:36px;
  padding:24px;
  border-radius:22px;
  background:
    linear-gradient(135deg,rgba(179,0,22,.32),rgba(0,0,0,.15)),
    rgba(18,14,14,.95);
  border:1px solid rgba(255,255,255,.1);
}

.session-label{
  font-family:'Cinzel', serif;
  text-transform:uppercase;
  letter-spacing:.12em;
  color:var(--gold);
  font-size:.75rem;
  margin-bottom:10px;
}

.session-title{
  font-size:2rem;
  margin-bottom:8px;
}

.session-time{
  color:var(--muted);
  font-size:1rem;
}

.recap-card{
  margin-top:30px;
  background:rgba(12,10,10,.88);
  border:1px solid rgba(255,255,255,.08);
  border-radius:24px;
  padding:32px;
}

.recap-label{
  display:inline-block;
  font-family:'Cinzel', serif;
  text-transform:uppercase;
  letter-spacing:.12em;
  color:var(--gold);
  font-size:.75rem;
  margin-bottom:14px;
}

.recap-content p{
  color:var(--muted);
  line-height:1.7;
  margin-bottom:18px;
}

.portal-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:18px;
  margin-top:32px;
}

.portal-card{
  display:block;
  text-decoration:none;
  background:rgba(15,12,12,.92);
  border:1px solid rgba(255,255,255,.1);
  border-radius:24px;
  padding:28px;
  transition:all .25s ease;
  box-shadow:var(--shadow);
}

.portal-card:hover{
  transform:translateY(-4px);
  border-color:rgba(214,167,86,.45);
}

.card-label{
  display:inline-block;
  font-family:'Cinzel', serif;
  text-transform:uppercase;
  letter-spacing:.12em;
  color:var(--gold);
  font-size:.72rem;
  margin-bottom:14px;
}

.portal-card h2{
  color:var(--text);
  margin-bottom:12px;
}

.portal-card p{
  color:var(--muted);
  line-height:1.6;
}

.play-card{
  background:
    linear-gradient(135deg,rgba(179,0,22,.35),rgba(0,0,0,.15)),
    rgba(15,12,12,.95);
}

.notion-panel{
  width:min(1180px,100%);
  margin:40px auto 80px;
  background:rgba(15,12,12,.88);
  border:1px solid rgba(255,255,255,.1);
  border-radius:28px;
  overflow:hidden;
  box-shadow:var(--shadow);
}

.panel-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:24px 28px;
  border-bottom:1px solid rgba(255,255,255,.08);
}

.open-notion{
  color:var(--gold);
  text-decoration:none;
  font-family:'Cinzel', serif;
  font-size:.8rem;
  letter-spacing:.08em;
  text-transform:uppercase;
}

iframe{
  display:block;
  border:none;
  background:#fff;
}

@media(max-width:900px){

  .portal-grid{
    grid-template-columns:1fr;
  }

  .hero-card{
    padding:32px 24px;
  }

  .panel-header{
    flex-direction:column;
    align-items:flex-start;
    gap:12px;
  }
}
/* Campaign Dashboard / Session Records */

.campaign-dashboard{
  width:min(1400px,94%);
  margin:80px auto;
  background:
    linear-gradient(180deg,rgba(18,8,8,.96),rgba(8,4,4,.96));
  border:1px solid rgba(180,120,80,.18);
  border-radius:30px;
  overflow:hidden;
  box-shadow:0 30px 120px rgba(0,0,0,.6);
}

.dashboard-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:24px;
  padding:42px 48px;
  border-bottom:1px solid rgba(180,120,80,.12);
}

.dashboard-header h1{
  font-size:clamp(3rem,6vw,5.2rem);
  line-height:.95;
  max-width:none;
}

.dashboard-layout{
  display:grid;
  grid-template-columns:320px 1fr;
  min-height:720px;
}

.session-sidebar{
  background:linear-gradient(180deg,rgba(28,8,8,.96),rgba(10,4,4,.96));
  border-right:1px solid rgba(180,120,80,.12);
  overflow-y:auto;
}

.sidebar-header{
  padding:22px 24px;
  font-family:'Cinzel', serif;
  color:var(--gold);
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:.72rem;
  border-bottom:1px solid rgba(180,120,80,.12);
}

.session-tab{
  width:100%;
  display:block;
  padding:22px 24px;
  background:transparent;
  border:0;
  border-bottom:1px solid rgba(180,120,80,.08);
  color:var(--muted);
  text-align:left;
  font-family:'Cinzel', serif;
  font-size:.94rem;
  line-height:1.45;
  cursor:pointer;
  transition:background .2s ease,color .2s ease,transform .2s ease;
}

.session-tab:hover{
  background:rgba(179,0,22,.18);
  color:var(--text);
  transform:translateX(3px);
}

.empty-state{
  padding:28px 24px;
  color:rgba(255,255,255,.5);
}

.session-viewer{
  padding:42px;
  display:flex;
  flex-direction:column;
  gap:22px;
}

.session-view-header{
  display:flex;
  flex-direction:column;
  gap:14px;
}

.session-status{
  display:inline-block;
  font-family:'Cinzel', serif;
  color:var(--gold);
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:.72rem;
}

.session-input{
  width:100%;
  padding:20px 22px;
  background:rgba(12,6,6,.94);
  border:1px solid rgba(180,120,80,.18);
  border-radius:16px;
  color:var(--text);
  font-family:'Cinzel', serif;
  font-size:1.25rem;
}

.session-textarea{
  width:100%;
  min-height:520px;
  resize:vertical;
  padding:26px;
  background:rgba(12,6,6,.94);
  border:1px solid rgba(180,120,80,.18);
  border-radius:18px;
  color:var(--text);
  font-family:'EB Garamond', Georgia, serif;
  font-size:1.08rem;
  line-height:1.8;
}

.session-input:focus,
.session-textarea:focus{
  outline:none;
  border-color:rgba(214,167,86,.55);
  box-shadow:0 0 24px rgba(179,0,22,.18);
}

.session-controls,
.modal-actions{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
}

.session-modal{
  position:fixed;
  inset:0;
  display:none;
  align-items:center;
  justify-content:center;
  padding:34px;
  background:rgba(0,0,0,.82);
  z-index:9999;
}

.session-modal.active{
  display:flex;
}

.modal-card{
  width:min(920px,100%);
  max-height:86vh;
  overflow-y:auto;
  background:linear-gradient(180deg,rgba(22,8,8,.98),rgba(8,4,4,.98));
  border:1px solid rgba(180,120,80,.18);
  border-radius:26px;
  padding:42px;
  box-shadow:0 30px 120px rgba(0,0,0,.7);
}

.modal-card h2{
  font-size:clamp(2rem,4vw,3.2rem);
  margin-bottom:24px;
  max-width:none;
}

.modal-recap{
  color:var(--muted);
  line-height:1.9;
  font-size:1.08rem;
}

.modal-recap p{
  margin:0 0 22px;
}

.modal-actions{
  margin-top:34px;
}

@media(max-width:900px){
  .campaign-dashboard{
    width:min(100% - 24px,1400px);
    margin:28px auto;
    border-radius:22px;
  }

  .dashboard-header{
    flex-direction:column;
    align-items:flex-start;
    padding:28px 22px;
  }

  .dashboard-layout{
    grid-template-columns:1fr;
    min-height:auto;
  }

  .session-sidebar{
    border-right:0;
    border-bottom:1px solid rgba(180,120,80,.12);
    max-height:260px;
  }

  .session-viewer{
    padding:24px 18px;
  }

  .session-input{
    font-size:1rem;
  }

  .session-textarea{
    min-height:420px;
  }

  .session-modal{
    padding:16px;
  }

  .modal-card{
    padding:26px 20px;
  }
}

.dh-duality-button{
  background:#d49d35!important;
  color:#17131b!important;
  border-color:#8d641e!important;
  font-weight:800;
}

.dh-vtt-map{padding:16px}
.dh-vtt-encounter{padding:18px}
.dh-vtt-encounter>[data-dh-vtt-adversaries]{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.dh-vtt-encounter .dh-vtt-card{padding:14px;border:1px solid rgba(54,38,48,.14);border-radius:8px}
.dh-vtt-toolbar-actions{display:flex;gap:8px}
.dh-end-session{background:#8b2530!important;color:#fff!important}
.dh-session-notes{padding:18px}
.dh-session-notes summary{cursor:pointer;font-family:Georgia,serif;font-size:1.35rem;font-weight:800;text-transform:uppercase}
.dh-session-notes label{display:grid;gap:6px;margin-top:14px}
.dh-session-notes textarea{width:100%;resize:vertical;padding:12px;border:1px solid rgba(54,38,48,.25);border-radius:6px;background:#fffdf8;font:inherit}
.dh-fear{padding:10px 14px;border:1px solid rgba(141,79,59,.28);border-radius:12px;background:linear-gradient(135deg,#211523,#0c1119);color:#fff;box-shadow:0 8px 24px rgba(25,13,23,.25)}
.dh-fear small{font-family:Georgia,serif;font-size:1rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:#e1b55e}
.dh-fear-beads img{width:40px;height:40px}
.dh-map-token.dh-token-healthy{background:#23733f!important;border-color:#9ee3ad!important}
.dh-map-token.dh-token-hurt{background:#c26a16!important;border-color:#ffd095!important}
.dh-map-token.dh-token-critical{background:#a51f2d!important;border-color:#ffabb3!important}
.dh-map-token.dh-token-character{background:#315c99!important;border-color:#acd3ff!important}
@media(max-width:850px){.dh-vtt-encounter>[data-dh-vtt-adversaries]{grid-template-columns:1fr}.dh-vtt-toolbar{align-items:flex-start;flex-wrap:wrap}}

/* Keep the battle map a stable tabletop viewport regardless of grid dimensions. */
.dh-vtt-map .dh-battle-grid{
  width:100%;
  height:clamp(320px,44vw,500px);
  aspect-ratio:auto!important;
  grid-template-columns:repeat(var(--grid-columns),minmax(0,1fr));
  overflow:hidden;
}
.dh-vtt-map .dh-grid-cell{min-width:0;min-height:0}
.dh-vtt-map .dh-map-token{
  inset:12%;
  width:76%;
  height:76%;
  max-width:30px;
  max-height:30px;
  margin:auto;
  font-size:clamp(.38rem,.7vw,.68rem);
  border-width:1px!important;
}

/* Encounter cards are control snippets; the full stat block stays collapsed. */
.dh-vtt-encounter>[data-dh-vtt-adversaries]{
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:8px;
}
.dh-vtt-encounter .dh-vtt-card{
  gap:4px;
  padding:9px 10px;
}
.dh-vtt-encounter .dh-vtt-card-head strong{font-size:.95rem}
.dh-vtt-encounter .dh-vtt-card-head small,
.dh-vtt-encounter .dh-vtt-card>p{font-size:.72rem}
.dh-vtt-encounter .dh-vtt-card-actions{gap:3px}
.dh-vtt-encounter .dh-vtt-card-actions button{padding:3px 6px!important;font-size:.62rem!important}
.dh-vtt-encounter .dh-vtt-marks{grid-template-columns:1fr 1fr;gap:5px}
.dh-vtt-encounter .dh-vtt-marks span{padding:3px 5px;font-size:.72rem}
.dh-vtt-encounter .dh-vtt-marks button{padding:1px 6px}
.dh-vtt-encounter .dh-vtt-card details summary{font-size:.75rem}
@media(max-width:650px){
  .dh-vtt-map .dh-battle-grid{height:340px}
  .dh-vtt-encounter>[data-dh-vtt-adversaries]{grid-template-columns:1fr}
}

.dh-vtt-map{min-height:570px}
.dh-vtt-map .dh-battle-grid{
  margin:18px auto 0;
  max-width:100%;
  aspect-ratio:auto!important;
}
.dh-vtt-map .dh-grid-cell{
  width:auto;
  height:auto;
  aspect-ratio:1/1;
}
@media(max-width:650px){.dh-vtt-map{min-height:430px}}

.dh-vtt-map{min-height:670px}
.dh-vtt-map .dh-map-token{
  max-width:40px;
  max-height:40px;
  line-height:.8;
  grid-template-rows:auto auto;
  align-content:center;
}
.dh-vtt-map .dh-map-token>span{font-size:clamp(.48rem,.8vw,.76rem)}
.dh-vtt-map .dh-map-token>small{font-size:clamp(.4rem,.65vw,.62rem);font-weight:900}
@media(max-width:650px){.dh-vtt-map{min-height:500px}}

.dh-vtt-map{min-height:0!important}
.dh-vtt-map .dh-map-token{row-gap:4px;line-height:1}
.dh-vtt-map .dh-map-token>small{display:block;transform:translateY(2px)}

.dh-player-trackers{margin-bottom:12px;padding:12px 16px;border-radius:10px;background:rgba(255,255,255,.72)}
.dh-player-trackers .dh-fear{pointer-events:none}
.dh-player-trackers [data-dh-player-fear]{display:flex;flex-wrap:wrap;gap:5px}
.dh-player-trackers [data-dh-player-fear]>span:not(.dh-helper){display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#17121b}
.dh-player-trackers [data-dh-player-fear] img{width:38px;height:38px;object-fit:contain}
.dh-player-trackers [data-dh-player-countdowns]{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}
.dh-player-map{padding:16px}
.dh-player-map .dh-battle-grid{margin:18px auto 0;max-width:100%;aspect-ratio:auto!important;grid-template-columns:repeat(var(--grid-columns),minmax(0,1fr));overflow:hidden}
.dh-player-map .dh-grid-cell{min-width:0;min-height:0;aspect-ratio:1/1}
.dh-player-map .dh-map-token{position:absolute;inset:5%;display:grid;place-items:center;align-content:center;row-gap:4px;width:90%;height:90%;max-width:46px;max-height:46px;margin:auto;padding:0;border:1px solid #f1d18d;border-radius:50%;color:#fff;font-weight:900;line-height:1}
.dh-player-map .dh-map-token>span{font-size:clamp(.48rem,.8vw,.76rem)}
.dh-player-map .dh-map-token>small{display:block;transform:translateY(2px);font-size:clamp(.4rem,.65vw,.62rem)}
.dh-player-token-tools{display:flex;align-items:end;gap:8px}
.dh-player-token-tools label{display:grid;gap:3px}
.dh-player-sheet{margin-top:12px;padding:18px}
.dh-player-sheet>details>summary{cursor:pointer;font-family:Georgia,serif;font-size:1.25rem;font-weight:900;text-transform:uppercase}
.dh-player-sheet-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px}
.dh-player-sheet-head h3,.dh-player-sheet-head p{margin:0}
.dh-player-tracks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:14px 0}
.dh-player-track{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:6px;padding:8px;border-radius:6px;background:rgba(54,38,48,.07)}
.dh-player-track button{padding:2px 7px}
.dh-player-sheet-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px}
.dh-player-sheet-summary p{margin:0}
@media(max-width:700px){.dh-player-token-tools,.dh-player-sheet-head{align-items:stretch;flex-direction:column}.dh-player-tracks,.dh-player-sheet-summary{grid-template-columns:1fr 1fr}}

.dh-command-roster{margin-top:16px;padding:18px}
.dh-add-existing-player{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;margin:12px 0 16px}
.dh-add-existing-player label{display:grid;gap:5px}
.dh-player-roster-card{display:grid;grid-template-columns:minmax(190px,.8fr) minmax(0,2fr);gap:12px;padding:12px 0;border-top:1px solid rgba(54,38,48,.14)}
.dh-player-roster-card header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.dh-player-roster-card header>div{display:grid}
.dh-player-roster-card header small{color:#8d4f3b}
.dh-player-roster-card>div{display:flex;flex-wrap:wrap;gap:7px}
.dh-roster-character{display:flex;align-items:stretch}.dh-roster-character>[data-view-campaign-character]{display:grid;justify-items:start;min-width:190px;padding:8px 10px;text-align:left;background:#fffdf8!important;color:#2c2630!important;border:1px solid rgba(54,38,48,.18)!important}.dh-roster-character>[data-view-campaign-character] small{font-size:.7rem;color:#8d4f3b}.dh-roster-character>[data-remove-character]{padding:4px 8px}
.dh-character-assignment{margin-top:14px;padding-top:14px;border-top:1px solid rgba(54,38,48,.14)}
.dh-character-assignment form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.dh-campaign-notes{margin-top:16px;padding:18px}
.dh-campaign-notes>summary{cursor:pointer;font-family:Georgia,serif;font-size:1.35rem;font-weight:900;text-transform:uppercase}
.dh-campaign-notes form{display:grid;gap:8px;margin-top:14px}
.dh-campaign-notes textarea{width:100%;resize:vertical;padding:12px;border:1px solid rgba(54,38,48,.25);border-radius:6px;background:#fffdf8;font:inherit}
.dh-campaign-notes form button{justify-self:start}
.dh-session-note-archive{margin-top:20px;padding-top:16px;border-top:1px solid rgba(54,38,48,.14)}
.dh-session-note-archive details{padding:9px 0;border-top:1px solid rgba(54,38,48,.1)}
.dh-session-note-archive summary{cursor:pointer;font-weight:800;color:#8d4f3b}
.dh-player-dialog form{grid-template-columns:1fr}
.dh-player-dialog .dh-section-head,.dh-player-dialog form>button{grid-column:auto}
.dh-character-popout{width:min(720px,calc(100% - 30px));padding:22px}
.dh-character-popout-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:14px 0}
.dh-character-popout-grid p{margin:0;padding:8px;border-radius:6px;background:rgba(54,38,48,.06)}
@media(max-width:700px){.dh-add-existing-player,.dh-character-assignment form,.dh-player-roster-card,.dh-character-popout-grid{grid-template-columns:1fr}}

.dh-vtt-map{min-height:970px}
.dh-vtt-map .dh-map-token{
  inset:5%;
  width:90%;
  height:90%;
  max-width:46px;
  max-height:46px;
}
@media(max-width:650px){.dh-vtt-map{min-height:500px}}
