/* どどスタンプラリー☆（ライト／ダーク両対応：html.land-dark） */
.dstp-book,.dstp-toasts{
  --dstp-bg:#ffffff;
  --dstp-bg2:#f4f5fa;
  --dstp-line:#e2e5ef;
  --dstp-text:#262b3b;
  --dstp-dim:#80879e;
  --dstp-key:#ff7a59;
  --dstp-key2:#ffc93c;
  --dstp-ok:#2fbf71;
  --dstp-shadow:0 6px 24px rgba(40,50,90,.08);
}
html.land-dark .dstp-book,html.land-dark .dstp-toasts{
  --dstp-bg:#1c2030;
  --dstp-bg2:#262b3f;
  --dstp-line:#353b54;
  --dstp-text:#eef0f8;
  --dstp-dim:#9aa2bd;
  --dstp-key:#ff8f70;
  --dstp-key2:#ffd666;
  --dstp-ok:#4fd68b;
  --dstp-shadow:0 6px 24px rgba(0,0,0,.35);
}

/* ---------- スタンプ帳 ---------- */
.dstp-book{color:var(--dstp-text);background:var(--dstp-bg);border:1px solid var(--dstp-line);border-radius:18px;box-shadow:var(--dstp-shadow);padding:18px;margin:1.5em 0;box-sizing:border-box;font-size:15px;line-height:1.5}
.dstp-bk-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin:0 0 8px}
.dstp-bk-ttl{font-weight:800;font-size:1.2em}
.dstp-bk-count{font-weight:700;color:var(--dstp-dim)}
.dstp-bk-count b{font-size:1.5em;color:var(--dstp-key)}
.dstp-bar{height:12px;background:var(--dstp-bg2);border-radius:999px;overflow:hidden;margin:0 0 10px}
.dstp-bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--dstp-key2),var(--dstp-key));border-radius:999px;transition:width .6s ease}
.dstp-note{font-size:.8em;color:var(--dstp-dim);margin:0 0 12px}
.dstp-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.dstp-card{position:relative;margin:0;padding:14px 10px 12px;border-radius:14px;background:var(--dstp-bg2);border:1px solid var(--dstp-line);text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}
.dstp-card.is-earned{background:linear-gradient(160deg,rgba(255,201,60,.18),rgba(255,122,89,.10));border-color:rgba(255,160,70,.55)}
.dstp-ic{position:relative;width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--dstp-bg);border:3px dashed var(--dstp-line);margin-bottom:4px}
.dstp-card.is-earned .dstp-ic{border:3px solid var(--dstp-key2);box-shadow:0 4px 14px rgba(255,150,60,.35);transform:rotate(-6deg)}
.dstp-ic-e{font-size:32px;line-height:1}
.dstp-ic-img{width:44px;height:44px;object-fit:contain}
.dstp-card:not(.is-earned) .dstp-ic-e,.dstp-card:not(.is-earned) .dstp-ic-img{filter:grayscale(1);opacity:.35}
.dstp-card.is-secret .dstp-ic-e{filter:none;opacity:.6;font-weight:900;color:var(--dstp-dim)}
.dstp-check{position:absolute;right:-4px;bottom:-4px;width:22px;height:22px;border-radius:50%;background:var(--dstp-ok);color:#fff;font-size:13px;font-weight:900;display:flex;align-items:center;justify-content:center;border:2px solid var(--dstp-bg)}
.dstp-nm{font-weight:800;font-size:.95em;word-break:break-word}
.dstp-card:not(.is-earned) .dstp-nm{color:var(--dstp-dim)}
.dstp-ds{font-size:.78em;color:var(--dstp-dim);word-break:break-word}
.dstp-date{font-size:.72em;font-weight:700;color:var(--dstp-key);margin-top:auto}
.dstp-lock{font-size:.75em;font-weight:700;color:var(--dstp-dim);margin-top:auto}
.dstp-pg{display:flex;align-items:center;gap:6px;font-size:.72em;color:var(--dstp-dim);margin-top:auto;width:100%;justify-content:center}
.dstp-pg-bar{flex:1;max-width:70px;height:6px;border-radius:999px;background:var(--dstp-line);overflow:hidden}
.dstp-pg-bar>span{display:block;height:100%;background:var(--dstp-key2)}
.dstp-reward{margin-top:16px;padding:16px;border-radius:14px;background:linear-gradient(135deg,rgba(255,201,60,.22),rgba(255,122,89,.18),rgba(120,140,255,.18));border:2px solid var(--dstp-key2);text-align:center}
.dstp-rw-ttl{font-weight:900;font-size:1.15em;margin-bottom:6px}
.dstp-rw-body p{margin:.4em 0}
.dstp-rw-btn{display:inline-block;padding:8px 18px;border-radius:999px;background:linear-gradient(135deg,var(--dstp-key2),var(--dstp-key));color:#2b1400!important;font-weight:800;text-decoration:none!important}
.dstp-loading{text-align:center;color:var(--dstp-dim);padding:20px}
@media (max-width:480px){
  .dstp-book{padding:14px 12px}
  .dstp-grid{grid-template-columns:repeat(2,1fr);gap:8px}
  .dstp-ic{width:54px;height:54px}
  .dstp-ic-e{font-size:26px}
}

/* ---------- トースト（左下） ---------- */
.dstp-toasts{position:fixed;left:16px;bottom:16px;z-index:2147483000;display:flex;flex-direction:column;gap:8px;pointer-events:none;max-width:calc(100vw - 32px)}
.dstp-toast{pointer-events:auto;display:flex;align-items:center;gap:10px;min-width:220px;max-width:320px;padding:10px 16px 10px 10px;border-radius:14px;background:var(--dstp-bg);color:var(--dstp-text)!important;text-decoration:none!important;border:1px solid var(--dstp-line);border-left:4px solid var(--dstp-key2);box-shadow:0 10px 30px rgba(20,25,50,.25);opacity:0;transform:translateX(-24px) scale(.96);transition:opacity .35s ease,transform .45s cubic-bezier(.2,1.4,.4,1)}
.dstp-toast.is-in{opacity:1;transform:none}
.dstp-toast.is-out{opacity:0;transform:translateY(8px)}
.dstp-toast.is-complete{border-left-color:var(--dstp-key)}
.dstp-t-ic{flex:none;width:44px;height:44px;border-radius:50%;background:var(--dstp-bg2);display:flex;align-items:center;justify-content:center;font-size:24px;border:2px solid var(--dstp-key2)}
.dstp-toast.is-in .dstp-t-ic{animation:dstp-stamp .6s ease .1s both}
.dstp-t-img{width:32px;height:32px;object-fit:contain}
.dstp-t-tx{display:flex;flex-direction:column;min-width:0}
.dstp-t-tx small{font-size:11px;font-weight:800;color:var(--dstp-key);letter-spacing:.05em}
.dstp-t-tx b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@keyframes dstp-stamp{0%{transform:scale(1.8) rotate(-20deg);opacity:0}60%{transform:scale(.9) rotate(4deg);opacity:1}100%{transform:none}}
.dstp-toasts.is-reduced .dstp-toast{transition:opacity .01s;transform:none}
.dstp-toasts.is-reduced .dstp-t-ic{animation:none!important}
@media (prefers-reduced-motion:reduce){
  .dstp-toast{transition:opacity .01s;transform:none}
  .dstp-toast.is-in .dstp-t-ic{animation:none}
  .dstp-bar>span{transition:none}
}
@media (max-width:480px){.dstp-toasts{left:10px;bottom:74px}}
