/* Personal dashboard styles. Complements ds.css; does not replace it. */
:root{
  --gold:#f0c040; --gold-dim:#c8a84b;
  --bg:#0f1115; --panel:#161922; --panel2:#1c202b;
  --line:rgba(240,192,64,.16); --line-soft:rgba(255,255,255,.07);
  --txt:#e6e8ee; --muted:#98a0b0; --muted2:#6f7788;
  --ok:#4CAF50; --warn:#e0a030; --bad:#ef5350; --info:#5b9bd5;
}
.dash{max-width:1180px;margin:0 auto;padding:1.25rem 1rem 3rem;color:var(--txt)}
.dash h1{font-family:Cinzel,serif;color:var(--gold);font-size:1.7rem;margin:0 0 .2rem}
.dash h2{font-family:Cinzel,serif;color:var(--gold);font-size:1.15rem;margin:1.6rem 0 .7rem;
  border-bottom:1px solid var(--line);padding-bottom:.35rem}
.dash h3{font-size:.95rem;color:var(--txt);margin:1rem 0 .5rem}
.sub{color:var(--muted);font-size:.85rem;margin:0 0 1.2rem}
.stamp{color:var(--muted2);font-size:.74rem;font-style:italic}
.stamp.warn{color:var(--warn);font-style:normal}

.grid{display:grid;gap:.85rem}
.grid.c2{grid-template-columns:repeat(auto-fit,minmax(330px,1fr))}
.grid.c3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.grid.c4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}

.card{background:var(--panel);border:1px solid var(--line-soft);border-radius:10px;padding:.9rem 1rem}
.card.hi{border-color:var(--line)}
.card h3{margin-top:0}

/* character tiles */
.ctile{display:block;background:var(--panel);border:1px solid var(--line-soft);border-radius:10px;
  padding:.75rem .85rem;text-decoration:none;color:var(--txt);transition:.15s}
.ctile:hover{border-color:var(--gold);transform:translateY(-2px)}
.ctile .top{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem}
.ctile .nm{font-weight:600;font-size:1rem}
.ctile .lv{color:var(--gold);font-size:.85rem;font-weight:600}
.ctile .meta{color:var(--muted);font-size:.78rem;margin-top:.25rem}
.ctile .il{color:var(--gold-dim);font-weight:600}
.ctile.dim{opacity:.62}
.bar{height:5px;background:rgba(255,255,255,.08);border-radius:3px;margin-top:.5rem;overflow:hidden}
.bar > i{display:block;height:100%;background:linear-gradient(90deg,var(--gold-dim),var(--gold))}

/* checklist */
.chk{display:flex;gap:.6rem;align-items:flex-start;padding:.55rem .1rem;border-bottom:1px solid var(--line-soft)}
.chk:last-child{border-bottom:0}
.chk input{margin-top:.25rem;width:17px;height:17px;accent-color:var(--gold);flex:0 0 auto;cursor:pointer}
.chk .body{flex:1;min-width:0}
.chk .t{font-weight:600;font-size:.9rem;line-height:1.35}
.chk .n{color:var(--muted);font-size:.8rem;line-height:1.45;margin-top:.2rem}
.chk .d{color:var(--warn);font-size:.76rem;font-weight:600;margin-top:.2rem}
.chk.done .t,.chk.done .n{text-decoration:line-through;opacity:.45}
.chk .time{color:var(--gold-dim);font-size:.74rem;font-weight:600;white-space:nowrap}

/* gear table */
.gear{width:100%;border-collapse:collapse;font-size:.85rem}
.gear th{text-align:left;color:var(--muted2);font-weight:500;font-size:.75rem;
  text-transform:uppercase;letter-spacing:.04em;padding:.3rem .5rem;border-bottom:1px solid var(--line-soft)}
.gear td{padding:.38rem .5rem;border-bottom:1px solid rgba(255,255,255,.04)}
.gear td.il{text-align:right;font-weight:600;color:var(--gold-dim);white-space:nowrap}
.gear tr.weak td{background:rgba(239,83,80,.09)}
.gear tr.weak td.il{color:var(--bad)}

/* campaign */
.chap{border:1px solid var(--line-soft);border-radius:9px;margin-bottom:.6rem;background:var(--panel);overflow:hidden}
.chap > summary{cursor:pointer;padding:.65rem .85rem;display:flex;gap:.7rem;align-items:center;
  list-style:none;font-size:.9rem}
.chap > summary::-webkit-details-marker{display:none}
.chap > summary:hover{background:var(--panel2)}
.chap .ttl{flex:1;font-weight:600}
.chap .pill{font-size:.74rem;padding:.12rem .5rem;border-radius:20px;white-space:nowrap;
  background:rgba(255,255,255,.07);color:var(--muted)}
.chap .pill.ok{background:rgba(76,175,80,.16);color:var(--ok)}
.chap .pill.part{background:rgba(224,160,48,.16);color:var(--warn)}
.chap .qs{padding:.2rem .85rem .8rem;font-size:.84rem}
.chap .q{padding:.25rem 0;color:var(--muted);display:flex;gap:.5rem}
.chap .q.done{color:var(--muted2);text-decoration:line-through;opacity:.6}
.chap .q.nxt{color:var(--gold);font-weight:600;text-decoration:none;opacity:1}
.chap .q a{color:inherit;text-decoration:none;border-bottom:1px dotted rgba(255,255,255,.2)}
.chap .tag{font-size:.68rem;padding:.05rem .35rem;border-radius:4px;background:rgba(91,155,213,.18);color:var(--info)}

.callout{border-left:3px solid var(--gold);background:rgba(240,192,64,.07);
  padding:.7rem .9rem;border-radius:0 8px 8px 0;margin:.6rem 0;font-size:.87rem;line-height:1.5}
.callout.red{border-left-color:var(--bad);background:rgba(239,83,80,.08)}
.callout b{color:var(--gold)}
.callout.red b{color:var(--bad)}

.selector{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-bottom:1rem}
.selector select{background:var(--panel2);color:var(--txt);border:1px solid var(--line);
  border-radius:7px;padding:.5rem .7rem;font-size:.92rem;min-width:220px}
.kv{display:flex;justify-content:space-between;gap:1rem;padding:.3rem 0;
  border-bottom:1px solid rgba(255,255,255,.04);font-size:.86rem}
.kv b{color:var(--muted);font-weight:500}
.kv span{color:var(--txt);text-align:right}

.empty{color:var(--muted2);font-size:.86rem;font-style:italic;padding:.6rem 0}

/* public page */
.pub{max-width:820px;margin:0 auto;padding:3.5rem 1.25rem 4rem;text-align:center;color:var(--txt)}
.pub h1{font-family:Cinzel,serif;color:var(--gold);font-size:2.6rem;margin:.4rem 0}
.pub .tag{color:var(--muted);font-size:1.02rem;margin-bottom:2rem}
.pub p{color:var(--muted);line-height:1.75;text-align:left;margin:0 0 1rem}
.pub .facts{display:flex;justify-content:center;gap:2.2rem;flex-wrap:wrap;margin:2rem 0}
.pub .facts div{text-align:center}
.pub .facts b{display:block;color:var(--gold);font-family:Cinzel,serif;font-size:1.25rem}
.pub .facts span{color:var(--muted2);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em}

@media (max-width:640px){
  .dash{padding:1rem .7rem 2.5rem}
  .dash h1{font-size:1.35rem}
  .grid.c2,.grid.c3,.grid.c4{grid-template-columns:1fr}
  .gear{font-size:.8rem}
  .gear td,.gear th{padding:.32rem .3rem}
  .selector select{width:100%;min-width:0}
  .pub h1{font-size:1.9rem}
  .site-nav .nav-links{flex-wrap:wrap;gap:.5rem .9rem}
}

/* campaign browser */
.crumb{font-size:.82rem;color:var(--muted2);margin-bottom:.5rem}
.crumb a{color:var(--gold-dim);text-decoration:none}
.crumb a:hover{color:var(--gold)}
.crumb span{margin:0 .35rem;opacity:.5}
.exrow{display:block;background:var(--panel);border:1px solid var(--line-soft);border-radius:9px;
  padding:.7rem .85rem;margin-bottom:.5rem;text-decoration:none;color:var(--txt);transition:.13s}
.exrow:hover{border-color:var(--gold);background:var(--panel2)}
.exrow .r1{display:flex;justify-content:space-between;align-items:baseline;gap:.8rem}
.exrow .nm{font-weight:600;font-size:.97rem}
.exrow .num{font-size:.82rem;color:var(--gold-dim);white-space:nowrap;font-weight:600}
.exrow .r2{display:flex;justify-content:space-between;gap:.8rem;margin-top:.3rem;
  font-size:.78rem;color:var(--muted)}
.exrow .miss{color:var(--warn);font-weight:600}
.exrow.done{opacity:.55}.exrow.done .miss{color:var(--ok)}
.pbar{height:6px;background:rgba(255,255,255,.08);border-radius:3px;margin-top:.45rem;overflow:hidden}
.pbar>i{display:block;height:100%;background:linear-gradient(90deg,var(--gold-dim),var(--gold))}
.pbar.ok>i{background:linear-gradient(90deg,#3d8b40,var(--ok))}
.toolbar{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin:.8rem 0 1rem}
.toolbar a,.toolbar button{background:var(--panel2);color:var(--txt);border:1px solid var(--line);
  border-radius:7px;padding:.4rem .75rem;font-size:.83rem;text-decoration:none;cursor:pointer}
.toolbar a.on{background:rgba(240,192,64,.16);border-color:var(--gold);color:var(--gold)}
.bigstat{display:flex;gap:1.6rem;flex-wrap:wrap;margin:.4rem 0 1rem}
.bigstat div{min-width:96px}
.bigstat b{display:block;font-family:Cinzel,serif;color:var(--gold);font-size:1.5rem;line-height:1.1}
.bigstat span{color:var(--muted2);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em}
@media (max-width:640px){
  .exrow .r1{flex-direction:column;gap:.15rem}
  .bigstat{gap:1rem}.bigstat b{font-size:1.2rem}
}

/* drop page rows - body on the left, actions right-aligned.
   Scoped to .drow so the campaign browser's own .exrow layout is untouched. */
.exrow.drow{display:flex;align-items:center;gap:.9rem}
.exrow.drow .body{flex:1;min-width:0}
.exrow.drow .body>a{font-weight:600;font-size:.97rem;text-decoration:none;overflow-wrap:anywhere}
.exrow.drow .body>a:hover{text-decoration:underline}
.exrow.drow .n{display:block;font-size:.78rem;color:var(--muted);margin-top:.2rem;overflow-wrap:anywhere}
.exrow.drow .acts{display:flex;align-items:center;gap:.5rem;margin-left:auto;flex-shrink:0}
.exrow.drow .acts form{margin:0}
.exrow.drow .acts .ds-btn{text-decoration:none;white-space:nowrap}
.exrow.drow .acts .ds-btn-danger{border-color:rgba(198,84,84,.45);color:#cf8a8a}
.exrow.drow .acts .ds-btn-danger:hover{border-color:#e06c6c;color:#ff9a9a}
@media (max-width:640px){
  .exrow.drow{flex-direction:column;align-items:stretch;gap:.6rem}
  .exrow.drow .acts{margin-left:0;justify-content:flex-end}
}
