/* どど誕生日☆（ライト／ダーク両対応：html.land-dark） */
.dbd-banner,.dbd-today,.dbd-cal,.dbd-ribbon{
  --dbd-c1:#ffb13b;
  --dbd-c2:#ff5a7a;
  --dbd-bg:#ffffff;
  --dbd-bg2:#f6f4fb;
  --dbd-line:#e8e4f2;
  --dbd-text:#262338;
  --dbd-dim:#837e98;
  --dbd-shadow:0 10px 30px rgba(70,40,120,.12);
}
html.land-dark .dbd-banner,html.land-dark .dbd-today,html.land-dark .dbd-cal{
  --dbd-bg:#1b1d2d;
  --dbd-bg2:#25283b;
  --dbd-line:#353a52;
  --dbd-text:#eeeef8;
  --dbd-dim:#a3a1bd;
  --dbd-shadow:0 10px 30px rgba(0,0,0,.4);
}
.dbd-banner *,.dbd-today *,.dbd-cal *{box-sizing:border-box}
.dbd-banner a,.dbd-today a,.dbd-cal a{text-decoration:none}

/* ============================================================
 * バナー
 * ============================================================ */
.dbd-banner{position:relative;display:flex;align-items:center;gap:18px;margin:0 0 22px;padding:18px 54px 18px 20px;border-radius:20px;overflow:hidden;
  color:var(--dbd-text);
  background:
    radial-gradient(circle at 12% 20%,rgba(255,255,255,.55) 0 2px,transparent 2.5px) 0 0/26px 26px,
    linear-gradient(115deg,color-mix(in srgb,var(--dbd-c1) 30%,#fff) 0%,color-mix(in srgb,var(--dbd-c2) 26%,#fff) 100%);
  border:1px solid color-mix(in srgb,var(--dbd-c2) 30%,transparent);
  box-shadow:var(--dbd-shadow);font-size:15px;line-height:1.55;
  opacity:0;transform:translateY(-8px);transition:opacity .45s ease,transform .45s cubic-bezier(.2,.8,.3,1.2)}
html.land-dark .dbd-banner{background:
    radial-gradient(circle at 12% 20%,rgba(255,255,255,.08) 0 2px,transparent 2.5px) 0 0/26px 26px,
    linear-gradient(115deg,color-mix(in srgb,var(--dbd-c1) 26%,#1b1d2d) 0%,color-mix(in srgb,var(--dbd-c2) 24%,#1b1d2d) 100%)}
.dbd-banner.is-in{opacity:1;transform:none}
.dbd-banner.is-closing{opacity:0;transform:translateY(-8px) scale(.98)}
.dbd-banner.is-reduced{transition:none}
.dbd-bn-deco{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.dbd-bn-deco i{position:absolute;top:-14px;width:8px;height:12px;border-radius:2px;opacity:.85;animation:dbd-fall 7s linear infinite}
.dbd-bn-deco i:nth-child(1){left:18%;background:var(--dbd-c2);animation-delay:-1s}
.dbd-bn-deco i:nth-child(2){left:31%;background:#ffe066;animation-delay:-3.5s;width:6px;height:6px;border-radius:50%}
.dbd-bn-deco i:nth-child(3){left:46%;background:var(--dbd-c1);animation-delay:-5s}
.dbd-bn-deco i:nth-child(4){left:58%;background:#5ec8ff;animation-delay:-2s;animation-duration:8s}
.dbd-bn-deco i:nth-child(5){left:69%;background:#b79cff;animation-delay:-6s;width:6px;height:6px;border-radius:50%}
.dbd-bn-deco i:nth-child(6){left:78%;background:var(--dbd-c2);animation-delay:-4s;animation-duration:9s}
.dbd-bn-deco i:nth-child(7){left:88%;background:#5fe0b8;animation-delay:-0.5s}
.dbd-bn-deco i:nth-child(8){left:95%;background:#ffe066;animation-delay:-2.7s;animation-duration:6s}
@keyframes dbd-fall{0%{transform:translateY(0) rotate(0)}100%{transform:translateY(240px) rotate(540deg)}}
.dbd-bn-av{position:relative;flex:none;width:92px;height:92px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg,var(--dbd-c1),var(--dbd-c2));box-shadow:0 0 0 4px #fff,0 0 0 7px color-mix(in srgb,var(--dbd-c2) 55%,transparent),0 8px 18px rgba(0,0,0,.18)}
html.land-dark .dbd-bn-av{box-shadow:0 0 0 4px #1b1d2d,0 0 0 7px color-mix(in srgb,var(--dbd-c2) 60%,transparent),0 8px 18px rgba(0,0,0,.4)}
.dbd-bn-av img{width:100%;height:100%;object-fit:cover;object-position:50% 15%;transform:scale(1.25);transform-origin:50% 18%}
.dbd-av-ic{font-size:40px;line-height:1}
.dbd-bn-body{position:relative;flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.dbd-bn-kicker{display:inline-flex;align-items:center;gap:5px;align-self:flex-start;padding:2px 10px;border-radius:999px;background:rgba(255,255,255,.75);color:color-mix(in srgb,var(--dbd-c2) 80%,#000);font-size:10.5px;font-weight:900;letter-spacing:.16em}
html.land-dark .dbd-bn-kicker{background:rgba(0,0,0,.3);color:color-mix(in srgb,var(--dbd-c2) 60%,#fff)}
.dbd-banner .dbd-bn-ttl,.dbd-today .dbd-tb-ttl{margin:0!important;font-size:1.25em;font-weight:900;line-height:1.4;letter-spacing:.02em}
.dbd-bn-ttl a,.dbd-tb-ttl a{color:inherit!important;background:linear-gradient(transparent 62%,color-mix(in srgb,var(--dbd-c1) 55%,transparent) 62%)}
.dbd-banner .dbd-bn-msg,.dbd-today .dbd-tb-msg{margin:0!important;font-size:.9em;color:color-mix(in srgb,var(--dbd-text) 80%,transparent)}
.dbd-cheer-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:6px}
.dbd-banner .dbd-cheer,.dbd-today .dbd-cheer{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:7px 18px;border:0;border-radius:999px;cursor:pointer;
  font:inherit;font-size:.92em;font-weight:900;color:#fff;background:linear-gradient(135deg,var(--dbd-c1),var(--dbd-c2));
  box-shadow:0 6px 16px color-mix(in srgb,var(--dbd-c2) 45%,transparent),inset 0 -2px 0 rgba(0,0,0,.12);transition:transform .15s,filter .15s}
.dbd-cheer:hover{transform:translateY(-2px) scale(1.03)}
.dbd-cheer:active{transform:scale(.96)}
.dbd-cheer:focus-visible{outline:3px solid color-mix(in srgb,var(--dbd-c2) 50%,#fff);outline-offset:3px}
.dbd-cheer-ic{font-size:1.2em;line-height:1}
.dbd-cheer.is-done{background:#fff;color:color-mix(in srgb,var(--dbd-c2) 85%,#000);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--dbd-c2) 60%,transparent)}
html.land-dark .dbd-cheer.is-done{background:transparent;color:color-mix(in srgb,var(--dbd-c2) 60%,#fff)}
.dbd-cheer.is-wiggle{animation:dbd-wiggle .45s}
@keyframes dbd-wiggle{25%{transform:rotate(-7deg)}50%{transform:rotate(6deg)}75%{transform:rotate(-3deg)}}
.dbd-cheer-n{font-size:.84em;color:var(--dbd-dim);font-weight:700}
.dbd-cheer-n b{font-size:1.2em;color:var(--dbd-text);font-variant-numeric:tabular-nums}
.dbd-cheer-n.is-bump b{display:inline-block;animation:dbd-bump .45s}
@keyframes dbd-bump{40%{transform:scale(1.45)}}
.dbd-banner .dbd-bn-others{list-style:none;margin:6px 0 0!important;padding:6px 0 0!important;border-top:1px dashed color-mix(in srgb,var(--dbd-text) 18%,transparent);font-size:.84em;display:flex;flex-direction:column;gap:2px}
.dbd-bn-others li{margin:0!important;padding:0!important}
.dbd-bn-others li::before{display:none!important}
.dbd-bn-others a{color:inherit!important;font-weight:800}
.dbd-banner .dbd-bn-x{position:absolute;top:10px;right:10px;width:32px;height:32px;border:0;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;
  background:rgba(255,255,255,.7);color:var(--dbd-text);font:700 18px/1 system-ui,sans-serif;padding:0;transition:background .15s}
.dbd-bn-x:hover{background:#fff}
html.land-dark .dbd-bn-x{background:rgba(0,0,0,.3)}
@media (max-width:600px){
  .dbd-banner{gap:12px;padding:14px 44px 14px 14px;border-radius:16px;margin-bottom:16px}
  .dbd-bn-av{width:64px;height:64px;align-self:flex-start;margin-top:4px}
  .dbd-av-ic{font-size:30px}
  .dbd-banner .dbd-bn-ttl{font-size:1.06em}
  .dbd-banner .dbd-bn-x{top:8px;right:8px;width:28px;height:28px}
}

/* ============================================================
 * 紙吹雪・リボン
 * ============================================================ */
.dbd-confetti{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:2147483000}
.dbd-ribbon{position:absolute;top:0;right:0;width:190px;height:190px;overflow:hidden;pointer-events:none;z-index:40}
.dbd-ribbon span{position:absolute;top:44px;right:-58px;width:270px;padding:8px 0;transform:rotate(45deg);text-align:center;
  font:900 13px/1.2 system-ui,-apple-system,"Hiragino Sans",sans-serif;letter-spacing:.14em;color:#fff;white-space:nowrap;
  background:linear-gradient(90deg,var(--dbd-c2),color-mix(in srgb,var(--dbd-c1) 70%,var(--dbd-c2)),var(--dbd-c2));
  box-shadow:0 6px 16px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.4),inset 0 -1px 0 rgba(0,0,0,.2);text-shadow:0 1px 2px rgba(0,0,0,.25)}
.dbd-ribbon span::before,.dbd-ribbon span::after{content:"";position:absolute;left:0;right:0;height:2px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.8) 0 6px,transparent 6px 10px)}
.dbd-ribbon span::before{top:3px}
.dbd-ribbon span::after{bottom:3px}
/* ステータス画面：名前の上のリボン */
.dbd-ribbon.is-badge{position:relative;top:auto;right:auto;width:auto;height:auto;overflow:visible;display:inline-block;margin:0 0 10px 6px;z-index:2;animation:dbd-badge-in .7s cubic-bezier(.3,1.5,.5,1) both .2s}
.dbd-ribbon.is-badge span{position:relative;top:auto;right:auto;display:inline-block;width:auto;transform:skewX(-10deg);padding:7px 26px 7px 22px;font-size:14px;letter-spacing:.18em;
  clip-path:polygon(0 0,100% 0,calc(100% - 12px) 50%,100% 100%,0 100%,12px 50%);background:linear-gradient(90deg,var(--dbd-c2),color-mix(in srgb,var(--dbd-c1) 75%,var(--dbd-c2)),var(--dbd-c2)) 0 0/200% 100%;animation:dbd-shine 3s linear infinite}
@keyframes dbd-badge-in{from{opacity:0;transform:translateY(-10px) scale(.7) rotate(-6deg)}to{opacity:1;transform:none}}
@keyframes dbd-shine{to{background-position:200% 0}}
@media (max-width:600px){
  .dbd-ribbon{width:140px;height:140px}
  .dbd-ribbon span{top:30px;right:-62px;width:230px;font-size:10.5px;padding:6px 0}
  .dbd-ribbon.is-badge span{font-size:12px;padding:6px 22px 6px 18px}
}

/* ============================================================
 * [dodo_birthday_today]
 * ============================================================ */
.dbd-today{margin:1.5em 0;display:flex;flex-direction:column;gap:12px;color:var(--dbd-text)}
.dbd-today-load{padding:14px 16px;border-radius:16px;background:var(--dbd-bg2);color:var(--dbd-dim);font-size:.9em}
.dbd-tb{position:relative;display:flex;align-items:center;gap:16px;padding:16px 18px;border-radius:18px;overflow:hidden;border:1px solid var(--dbd-line);
  background:
    radial-gradient(circle at 12% 20%,rgba(255,255,255,.55) 0 2px,transparent 2.5px) 0 0/26px 26px,
    linear-gradient(115deg,color-mix(in srgb,var(--dbd-c1) 26%,var(--dbd-bg)),color-mix(in srgb,var(--dbd-c2) 22%,var(--dbd-bg)));box-shadow:var(--dbd-shadow)}
.dbd-tb-av{flex:none;width:84px;height:84px;border-radius:18px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:linear-gradient(150deg,var(--dbd-c1),var(--dbd-c2));box-shadow:0 6px 16px rgba(0,0,0,.18)}
.dbd-tb-av img{width:100%;height:100%;object-fit:cover;object-position:50% 15%}
.dbd-tb-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.dbd-tb-empty{background:var(--dbd-bg2);box-shadow:none;align-items:flex-start}
.dbd-tb-empty>div{display:flex;flex-direction:column;gap:2px}
.dbd-tb-empty span{font-size:.88em;color:var(--dbd-dim)}
.dbd-tb-empty a{color:var(--dbd-text)!important;font-weight:800;border-bottom:2px solid var(--dbd-c1)}
.dbd-tb-ic{font-size:30px;line-height:1}

/* ============================================================
 * [dodo_birthdays]
 * ============================================================ */
.dbd-cal{margin:1.5em 0;padding:20px 18px 22px;border-radius:24px;background:var(--dbd-bg);border:1px solid var(--dbd-line);box-shadow:var(--dbd-shadow);color:var(--dbd-text);font-size:15px;line-height:1.55}
.dbd-cal-head{margin:0 0 12px}
.dbd-kicker{display:block;font-size:11px;font-weight:800;letter-spacing:.26em;color:#ff5a7a}
.dbd-cal .dbd-cal-ttl{margin:2px 0 0!important;padding:0!important;border:0!important;background:none!important;font-size:1.35em!important;font-weight:900;color:var(--dbd-text)!important}
.dbd-cal .dbd-cal-ttl::before,.dbd-cal .dbd-cal-ttl::after,.dbd-cal .dbd-h::before,.dbd-cal .dbd-h::after{display:none!important}
.dbd-cal .dbd-h{margin:18px 0 10px!important;padding:0 0 0 12px!important;border:0!important;border-left:4px solid #ffb13b!important;background:none!important;font-size:1.05em!important;font-weight:900;color:var(--dbd-text)!important;line-height:1.4}
.dbd-h small{font-weight:600;color:var(--dbd-dim);font-size:.8em}
.dbd-cal .dbd-muted{margin:0!important;color:var(--dbd-dim);font-size:.9em}
.dbd-cal .dbd-up-ul{list-style:none;margin:0!important;padding:0!important;display:flex;flex-direction:column;gap:8px}
.dbd-up-li{margin:0!important;padding:0!important}
.dbd-up-li::before{display:none!important}
.dbd-up-li>a,.dbd-up-in{display:flex;align-items:center;gap:12px;padding:8px 12px 8px 8px;border-radius:14px;background:var(--dbd-bg2);border:1px solid var(--dbd-line);color:var(--dbd-text)!important;transition:transform .15s,border-color .15s}
.dbd-up-li>a:hover{transform:translateX(3px);border-color:color-mix(in srgb,var(--dbd-c2) 50%,var(--dbd-line))}
.dbd-up-li.is-today>a,.dbd-up-li.is-today .dbd-up-in{background:linear-gradient(115deg,color-mix(in srgb,var(--dbd-c1) 28%,var(--dbd-bg)),color-mix(in srgb,var(--dbd-c2) 24%,var(--dbd-bg)));border-color:color-mix(in srgb,var(--dbd-c2) 55%,transparent)}
.dbd-up-date{flex:none;width:58px;height:54px;border-radius:12px;background:var(--dbd-bg);display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.1;box-shadow:inset 0 0 0 1px var(--dbd-line)}
.dbd-up-date b{font-size:1.05em;font-weight:900;font-variant-numeric:tabular-nums}
.dbd-up-date small{font-size:.72em;color:var(--dbd-dim)}
.dbd-up-av{flex:none;width:44px;height:44px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:linear-gradient(150deg,var(--dbd-c1),var(--dbd-c2))}
.dbd-up-av img{width:100%;height:100%;object-fit:cover;object-position:50% 15%}
.dbd-up-av .dbd-av-ic{font-size:22px}
.dbd-up-t{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.35}
.dbd-up-t b{font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dbd-up-t small{font-size:.8em;color:var(--dbd-dim)}
.dbd-in{flex:none;padding:3px 10px;border-radius:999px;font-size:.78em;font-weight:900;background:var(--dbd-bg);color:var(--dbd-dim);box-shadow:inset 0 0 0 1px var(--dbd-line);white-space:nowrap}
.dbd-in.is-soon{color:#e0591f;box-shadow:inset 0 0 0 1px rgba(255,140,60,.5)}
.dbd-in.is-today{color:#fff;background:linear-gradient(135deg,#ffb13b,#ff5a7a);box-shadow:none;animation:dbd-pulse 1.8s ease-in-out infinite}
@keyframes dbd-pulse{50%{transform:scale(1.08)}}
.dbd-months{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.dbd-month{border-radius:16px;background:var(--dbd-bg2);border:1px solid var(--dbd-line);padding:10px 10px 8px;min-width:0}
.dbd-month.is-now{border-color:#ffb13b;box-shadow:0 0 0 2px rgba(255,177,59,.25)}
.dbd-month.is-empty{opacity:.6}
.dbd-month-h{display:flex;align-items:baseline;gap:2px;margin:0 0 6px 4px}
.dbd-month-h b{font-size:1.5em;font-weight:900;line-height:1;color:#ff5a7a}
.dbd-month-h span{font-size:.8em;font-weight:800;color:var(--dbd-dim)}
.dbd-cal .dbd-mlist{list-style:none;margin:0!important;padding:0!important;display:flex;flex-direction:column;gap:4px}
.dbd-mi,.dbd-none{margin:0!important;padding:0!important}
.dbd-mi::before,.dbd-none::before{display:none!important}
.dbd-none{color:var(--dbd-dim);padding-left:6px!important}
.dbd-mi>a,.dbd-mi-in{display:flex;align-items:center;gap:8px;padding:5px 8px 5px 6px;border-radius:10px;color:var(--dbd-text)!important;transition:background .15s}
.dbd-mi>a:hover{background:var(--dbd-bg)}
.dbd-mi.is-today>a,.dbd-mi.is-today .dbd-mi-in{background:linear-gradient(115deg,color-mix(in srgb,var(--dbd-c1) 30%,var(--dbd-bg)),color-mix(in srgb,var(--dbd-c2) 26%,var(--dbd-bg)))}
.dbd-mi-d{flex:none;min-width:2.6em;font-size:.8em;font-weight:900;color:var(--dbd-dim);font-variant-numeric:tabular-nums}
.dbd-mi-av{flex:none;width:28px;height:28px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:linear-gradient(150deg,var(--dbd-c1),var(--dbd-c2));font-size:15px}
.dbd-mi-av img{width:100%;height:100%;object-fit:cover;object-position:50% 15%}
.dbd-mi-t{min-width:0;display:flex;flex-direction:column;line-height:1.25}
.dbd-mi-t b{font-size:.9em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dbd-mi-t small{font-size:.72em;color:var(--dbd-dim)}
@media (max-width:600px){
  .dbd-cal{padding:16px 12px 18px;border-radius:18px}
  .dbd-months{grid-template-columns:1fr 1fr;gap:8px}
  .dbd-month{padding:8px 6px 6px}
  .dbd-mi-av{display:none}
  .dbd-up-date{width:50px;height:48px}
}

/* 追加調整 */
html.land-dark .dbd-tb{background:
    radial-gradient(circle at 12% 20%,rgba(255,255,255,.07) 0 2px,transparent 2.5px) 0 0/26px 26px,
    linear-gradient(115deg,color-mix(in srgb,var(--dbd-c1) 24%,var(--dbd-bg)),color-mix(in srgb,var(--dbd-c2) 20%,var(--dbd-bg)))}
@media (max-width:600px){
  .dbd-tb{gap:12px;padding:14px}
  .dbd-tb-av{width:60px;height:60px;border-radius:14px;align-self:flex-start}
  .dbd-today .dbd-tb-ttl{font-size:1.05em}
}

/* 動きを減らす設定 */
@media (prefers-reduced-motion:reduce){
  .dbd-ribbon,.dbd-ribbon span{animation:none!important}
  .dbd-banner,.dbd-banner *,.dbd-today *,.dbd-cal *{animation:none!important;transition:none!important}
  .dbd-bn-deco{display:none}
}
