/* Daily study missions and brief victory feedback. Load after the mobile layer. */
.daily-missions,
.daily-missions *,
.victory-toast,
.victory-toast *{box-sizing:border-box}
.daily-missions[hidden],
.victory-toast[hidden]{display:none!important}

.daily-missions{
  width:100%;min-width:0;margin:18px 0 24px;padding:24px;
  border:1px solid #dce1e5;border-radius:20px;background:#fff;
  color:#111820;text-align:left;box-shadow:0 5px 18px #00000008;
}
.daily-missions-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.daily-missions-head>div{min-width:0}
.daily-kicker{margin:0 0 8px;color:#626c75;font-size:.62rem;font-weight:800;line-height:1.4;letter-spacing:.13em;text-transform:uppercase}
.daily-missions h2{margin:0;font:750 clamp(1.25rem,2.5vw,1.7rem)/1.18 var(--display,var(--sans));letter-spacing:-.04em;overflow-wrap:anywhere}
.daily-intro{margin:9px 0 0;color:#606972;font-size:.84rem;line-height:1.6}
.daily-seal{display:grid;place-items:center;flex:0 0 46px;width:46px;height:46px;border:1px solid #dce1e5;border-radius:15px;background:#f2f4f5;color:#454e57;font-size:1.4rem}
.daily-seal svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.daily-count{margin:22px 0 8px;color:#37434d;font-size:.77rem;line-height:1.5;font-weight:750;font-variant-numeric:tabular-nums}
.daily-missions progress{display:block;appearance:none;-webkit-appearance:none;width:100%;height:7px;margin:0;border:0;border-radius:99px;background:#e9edf0;overflow:hidden;color:#202931;accent-color:#202931}
.daily-missions progress::-webkit-progress-bar{border-radius:99px;background:#e9edf0}
.daily-missions progress::-webkit-progress-value{border-radius:99px;background:#202931}
.daily-missions progress::-moz-progress-bar{border-radius:99px;background:#202931}
.daily-list{display:grid;gap:0;margin:14px 0 0;padding:0;list-style:none}
.daily-task{display:grid;grid-template-columns:31px minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;padding:15px 0;border-bottom:1px solid #edf0f2}
.daily-task-mark{display:grid;place-items:center;width:31px;height:31px;border:1px solid #cfd6dc;border-radius:50%;background:#fff;color:#64717c;font-size:.8rem;font-weight:800}
.daily-task-mark svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.daily-task-copy{min-width:0}
.daily-task-copy strong{display:block;font-size:.86rem;font-weight:750;line-height:1.4;overflow-wrap:anywhere}
.daily-task-copy small{display:block;margin-top:4px;color:#606c76;font-size:.75rem;line-height:1.5;overflow-wrap:anywhere}
.daily-task-count{min-width:36px;color:#596773;font-size:.75rem;font-weight:750;line-height:1.5;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.daily-task.is-done .daily-task-mark{border-color:#202931;background:#202931;color:#fff}
.daily-task.is-done .daily-task-count{color:#202931}
.daily-missions-bottom{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:19px}
.daily-reward{flex:1;min-width:0;margin:0;color:#37434d;font-size:.8rem;line-height:1.6;overflow-wrap:anywhere}
.daily-reward strong{color:#111820}
.daily-missions #dailyAction{flex:0 1 auto;min-height:44px;max-width:260px;margin:0;padding:11px 17px;border:1px solid #202931;border-radius:12px;background:#202931;color:#fff;font:750 .8rem/1.4 var(--sans,system-ui,sans-serif);box-shadow:none;white-space:normal;cursor:pointer;transition:transform .16s,opacity .16s}
.daily-missions #dailyAction:hover{transform:translateY(-1px)}
.daily-missions #dailyAction:disabled{opacity:.6;cursor:default;transform:none}
.daily-missions #dailyAction:focus-visible,.victory-dismiss:focus-visible{outline:3px solid #607d94;outline-offset:3px}
.daily-note{margin:12px 0 0;color:#626c75;font-size:.7rem;line-height:1.6}
.daily-missions.is-complete{border-color:#aebbc5;background:#f7f9fa}
.daily-missions.is-complete .daily-seal{border-color:#202931;background:#202931;color:#fff}

/* Above fixed navigation and existing .modal layers (account gate: z-index 60).
 * The body of the toast lets pointer events through; dismissal stays interactive. */
.victory-toast{
  position:fixed;z-index:70;right:20px;bottom:calc(91px + env(safe-area-inset-bottom,0px));
  display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;gap:13px;
  width:min(380px,calc(100vw - 32px));max-height:calc(100dvh - 130px);
  padding:18px 48px 18px 16px;border:1px solid #cbd3da;border-radius:20px;
  background:#fff;color:#111820;box-shadow:0 12px 38px #08101929;
  font-family:var(--sans,system-ui,sans-serif);text-align:left;isolation:isolate;
  pointer-events:none;
}
.victory-dismiss{position:absolute;z-index:2;top:5px;right:5px;display:grid;place-items:center;width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border:0;border-radius:12px;background:transparent;color:#596773;font:400 1.4rem/1 var(--sans,system-ui,sans-serif);cursor:pointer;pointer-events:auto;box-shadow:none;transition:transform .15s,opacity .15s}
.victory-dismiss:hover{transform:scale(1.08);opacity:.8}
.victory-dismiss svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.victory-portrait{position:relative;z-index:1;display:grid;place-items:center;width:58px;height:66px;transform-origin:50% 85%}
.victory-portrait img{display:block;width:100%;height:100%;object-fit:contain}
.victory-copy{position:relative;z-index:1;min-width:0}
.victory-kicker{margin:0 0 5px;color:#626c75;font-size:.57rem;font-weight:800;line-height:1.4;letter-spacing:.1em;text-transform:uppercase;overflow-wrap:anywhere}
.victory-copy strong{display:block;font:750 1rem/1.3 var(--display,var(--sans));letter-spacing:-.025em;overflow-wrap:anywhere}
.victory-copy>p:last-child{margin:6px 0 0;color:#596773;font-size:.76rem;line-height:1.5;overflow-wrap:anywhere}
.victory-sparkles{position:absolute;inset:0;z-index:0;overflow:hidden;border-radius:inherit;pointer-events:none}
.victory-sparkles span{position:absolute;left:34px;top:50%;width:4px;height:7px;border-radius:2px;background:#8998a4;opacity:0;--spark-x:-14px;--spark-y:-26px;--spark-turn:-35deg}
.victory-sparkles span:nth-child(2){left:64px;top:36%;--spark-x:18px;--spark-y:-20px;--spark-turn:40deg}
.victory-sparkles span:nth-child(3){left:42px;top:68%;--spark-x:-18px;--spark-y:18px;--spark-turn:-90deg}
.victory-sparkles span:nth-child(4){left:76px;top:65%;--spark-x:17px;--spark-y:25px;--spark-turn:100deg}
.victory-sparkles span:nth-child(5){left:22px;top:40%;--spark-x:-10px;--spark-y:-10px;--spark-turn:90deg}
.victory-sparkles span:nth-child(6){left:85px;top:46%;--spark-x:21px;--spark-y:-6px;--spark-turn:-60deg}
.victory-toast.is-visible{animation:daily-victory-in .28s ease-out both}
.victory-toast.is-visible .victory-portrait{animation:daily-victory-wave .72s ease-out .08s both}
.victory-toast.is-visible .victory-sparkles span{animation:daily-victory-spark .8s ease-out .12s both}
.victory-toast.is-leaving{animation:daily-victory-out .2s ease-in both}
@keyframes daily-victory-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes daily-victory-out{to{opacity:0;transform:translateY(8px)}}
@keyframes daily-victory-wave{0%,100%{transform:rotate(0) scale(1)}25%{transform:rotate(-7deg) scale(1.08)}55%{transform:rotate(5deg) scale(1.04)}78%{transform:rotate(-2deg) scale(1.02)}}
@keyframes daily-victory-spark{0%{opacity:0;transform:translate(0,0) rotate(0) scale(.7)}20%{opacity:.75}100%{opacity:0;transform:translate(var(--spark-x),var(--spark-y)) rotate(var(--spark-turn)) scale(.6)}}

@media(max-width:760px){
  .daily-missions{padding:18px 16px;margin:14px 0 20px;border-radius:16px}
  .daily-missions-head{gap:12px}.daily-missions h2{font-size:1.3rem}
  .daily-intro{font-size:.79rem}.daily-seal{width:40px;height:40px;flex-basis:40px;border-radius:12px}
  .daily-seal svg{width:23px;height:23px}.daily-count{margin-top:18px}
  .daily-task{gap:10px;padding:14px 0}.daily-task-copy strong{font-size:.8rem}
  .daily-task-copy small{font-size:.72rem}.daily-task-count{font-size:.72rem}
  .daily-missions-bottom{align-items:stretch;flex-direction:column;gap:12px;margin-top:17px}
  .daily-missions #dailyAction{width:100%;max-width:none}
  .daily-note{font-size:.68rem}
  .victory-toast{right:max(12px,env(safe-area-inset-right,0px));bottom:calc(86px + env(safe-area-inset-bottom,0px));width:min(380px,calc(100vw - 24px));border-radius:17px;padding:15px 44px 15px 12px;gap:10px;grid-template-columns:48px minmax(0,1fr)}
  .victory-portrait{width:48px;height:58px}.victory-copy strong{font-size:.9rem}.victory-copy>p:last-child{font-size:.72rem}
}
@media(max-width:360px){
  .daily-missions{padding:16px 13px}.daily-task{gap:8px;grid-template-columns:27px minmax(0,1fr) auto}
  .daily-task-mark{width:27px;height:27px}.daily-task-count{min-width:29px}
  .victory-toast{gap:8px;padding-left:10px;grid-template-columns:42px minmax(0,1fr)}
  .victory-portrait{width:42px;height:52px}
}
@media(prefers-reduced-motion:reduce){
  .daily-missions,.daily-missions *,.daily-missions *::before,.daily-missions *::after,
  .victory-toast,.victory-toast *,.victory-toast *::before,.victory-toast *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .daily-missions progress::-webkit-progress-value,.daily-missions progress::-moz-progress-bar{animation:none!important;transition:none!important}
  .daily-missions #dailyAction:hover,.victory-dismiss:hover{transform:none}
  .victory-sparkles{display:none}
}

/* The daily seal gets a distinct badge only when all three missions are earned. */
.victory-medal{display:none}
.victory-toast[data-kind="daily"]{border-color:#657b8c;background:linear-gradient(125deg,#fff 45%,#eff4f7);box-shadow:0 12px 38px #08101929,0 0 0 3px #e5edf3}
.victory-toast[data-kind="daily"]::before{content:'';position:absolute;left:18px;right:18px;top:-1px;height:3px;border-radius:0 0 3px 3px;background:#263944;pointer-events:none}
.victory-toast[data-kind="daily"] .victory-kicker{color:#465f72}
.victory-toast[data-kind="daily"] .victory-medal{position:absolute;z-index:3;right:-3px;bottom:0;display:grid;place-items:center;width:28px;height:28px;border:2px solid #fff;border-radius:50%;background:#263944;color:#fff;box-shadow:0 2px 6px #0c1e3026;font:800 .96rem/1 var(--sans,system-ui,sans-serif);pointer-events:none}
.victory-toast[data-kind="daily"].is-visible .victory-portrait{animation:daily-seal-jump .65s ease-out both}
#dailyMissions[data-just-completed="true"] .daily-seal{animation:daily-seal-earned .7s ease-out both}
@keyframes daily-seal-jump{0%,100%{transform:translateY(0) rotate(0)}32%{transform:translateY(-8px) rotate(-5deg)}65%{transform:translateY(-2px) rotate(3deg)}}
@keyframes daily-seal-earned{0%{transform:scale(.9) rotate(-12deg)}40%{transform:scale(1.14) rotate(5deg)}75%{transform:scale(.98) rotate(-2deg)}100%{transform:scale(1) rotate(0)}}
@media(max-width:760px){.victory-toast[data-kind="daily"] .victory-medal{width:26px;height:26px;font-size:.88rem}}
@media(max-width:360px){.victory-toast[data-kind="daily"] .victory-medal{width:24px;height:24px;font-size:.82rem}}
@media(prefers-reduced-motion:reduce){
  .victory-toast[data-kind="daily"].is-visible .victory-portrait,
  #dailyMissions[data-just-completed="true"] .daily-seal{animation:none!important;transition:none!important;transform:none!important}
}
