/* Styles 6/8 (lines 1218–1416 of styles.css until v122) — chat dates and rewards, trophies, goal templates, decorated bubbles, shop filters, Medieval 2.0, postpone, reduced motion, account.
   Order matters (a later rule wins): index.html loads css/1-… → css/8-… in this order; see docs/REFACTOR.md step 4. */
/* ================= v46: CHAT DATES, REWARDS, OLDER MESSAGES ================= */
/* A date line where a new day starts. */
.day-sep{align-self:center; display:flex; justify-content:center; margin:4px 0; pointer-events:none;}
.day-sep span{font-size:12.5px; font-weight:600; color:var(--text); background:var(--panel-2); border:1px solid var(--line);
  border-radius:var(--r-pill); padding:4px 12px; box-shadow:0 2px 8px rgba(0,0,0,.18);}
/* "+2 🪶 for the task «Run»" */
.reward-note{align-self:center; display:flex; flex-direction:column; gap:3px; max-width:90%; padding:6px 12px; border-radius:var(--r);
  background:linear-gradient(135deg, rgba(242,194,48,.16), rgba(242,194,48,.04)), var(--panel-2); border:1px solid rgba(242,194,48,.45); font-size:13px;}
.reward-note > div{display:flex; align-items:center; gap:5px; min-width:0;}
.reward-note b{font-weight:800;}
.reward-note span{color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.reward-note.anim-in{animation:msg-in .32s cubic-bezier(.2,.9,.3,1.15);}
.chat-older{align-self:center; font:inherit; font-size:12.5px; color:var(--muted); background:none; border:1px dashed var(--line); border-radius:var(--r-pill); padding:5px 12px; cursor:pointer;}
[data-skin="retro"] .day-sep span{background:#ffffe1; border:1px solid #000; color:#000; box-shadow:none;}
[data-skin="retro"] .reward-note{background:#c0c0c0; border:none; box-shadow:var(--raised);}
[data-skin="retro"] .chat-older{color:#fff; border-color:#fff;}
[data-skin="medieval"] .day-sep span{background:#3b2817; color:#f0d28a; border-color:#b8892b; font-variant:small-caps;}
[data-skin="medieval"] .reward-note{background:#fbf4e2; border-color:#b8892b;}

/* ================= v48: TROPHIES (shop items unlocked by achievements) ================= */
.trophy-intro{margin:14px 0 0;}
.shop-item.trophy{border-color:rgba(155,92,246,.55);}
.trophy-badge{font-size:11px; color:var(--muted); line-height:1.3; text-align:center;}
.shop-item.locked{opacity:.85; border-style:dashed;}
.shop-item.locked .shop-name{color:var(--muted);}
.locked-prev{position:relative; display:block; filter:grayscale(1) blur(1.5px); opacity:.55;}
.locked-prev > *{pointer-events:none;}
.secret-prev{height:84px; border-radius:var(--r-sm); display:flex; align-items:center; justify-content:center; font-size:38px; font-weight:800; color:#fff;
  background:radial-gradient(circle at 50% 40%, rgba(217,70,239,.55), transparent 65%), #1d1428; border:1px solid rgba(217,70,239,.5);}
.shop-lock{font-size:12px; color:var(--muted); text-align:center; line-height:1.35;}
/* Trophy looks */
body[data-flame="electric"] .streak-fire, .flame-prev[data-flame="electric"]{animation:flame-electric 1.6s steps(2, end) infinite;}
@keyframes flame-electric{0%{filter:hue-rotate(170deg) saturate(1.6) brightness(1.3);} 50%{filter:hue-rotate(190deg) saturate(2) brightness(1.6) drop-shadow(0 0 6px #7cf3ff);} 100%{filter:hue-rotate(170deg) saturate(1.6) brightness(1.3);}}
body[data-flame="phoenix"] .streak-fire, .flame-prev[data-flame="phoenix"]{filter:hue-rotate(15deg) saturate(1.7) brightness(1.2) drop-shadow(0 0 8px rgba(255,200,60,.85));}
body[data-celeb="royal"] .celebrate, .celeb-prev[data-celeb="royal"]{background:radial-gradient(circle at 50% 36%, rgba(255,214,90,.55), transparent 55%), radial-gradient(circle at 50% 100%, rgba(155,92,246,.6), transparent 60%), #1a0f2e;}

/* ================= v49: GOAL TEMPLATES, CARRYING TASKS OVER ================= */
#goal-templates-btn{flex:0 0 auto;}
.tpl-cats{display:flex; gap:6px; overflow-x:auto; scrollbar-width:none; margin:0 -2px 12px; padding:0 2px;}
.tpl-cats::-webkit-scrollbar{display:none;}
.tpl-cat{flex:0 0 auto; font:inherit; font-size:13.5px; padding:6px 12px; border-radius:var(--r-pill); border:1px solid var(--line); background:var(--panel-2); color:var(--text); cursor:pointer;}
.tpl-cat.on{background:var(--accent-fill); border-color:var(--accent-fill); color:var(--on-accent); font-weight:600;}
.tpl-list{display:flex; flex-direction:column; gap:8px;}
.tpl-card{display:flex; align-items:center; gap:12px; width:100%; padding:10px 12px; text-align:left; font:inherit; color:var(--text); cursor:pointer;
  background:var(--panel-2); border:1px solid var(--line); border-radius:var(--r);}
.tpl-card:active{transform:scale(.99);}
.tpl-card.own{border-style:dashed;}
.tpl-ic{flex:0 0 auto; width:38px; height:38px; border-radius:var(--r-sm); background:var(--goal-bg); color:var(--accent); display:flex; align-items:center; justify-content:center;}
.tpl-ic .ico{width:22px; height:22px;}
.tpl-ic.big{width:52px; height:52px; background:var(--accent-fill); color:var(--on-accent);}
.tpl-ic.big .ico{width:28px; height:28px;}
.tpl-txt{flex:1; min-width:0; display:flex; flex-direction:column; gap:2px;}
.tpl-txt b{font-weight:600; font-size:15px; line-height:1.3;}
.tpl-txt small{font-size:12.5px; color:var(--muted);}
.tpl-card .chev{flex:0 0 auto; width:18px; height:18px; fill:none; stroke:var(--muted); stroke-width:2; stroke-linecap:round; stroke-linejoin:round;}
.tpl-back{padding:0 0 10px; min-width:0; text-align:left;}
.tpl-head{display:flex; align-items:center; gap:12px; margin-bottom:8px;}
.tpl-head h3{margin:0; font-size:18px; line-height:1.3;}
.tpl-ms{margin:6px 0 14px; padding-left:22px; display:flex; flex-direction:column; gap:6px; font-size:14.5px;}
.tpl-tasks{margin-bottom:8px;}
.tpl-tasks > span{display:flex; flex-direction:column; gap:3px;}
.tpl-tasks small{font-size:12.5px; color:var(--muted);}
.tpl-warn{color:var(--bad-text); background:var(--bad-bg); border-radius:var(--r-sm); padding:8px 10px;}
#tpl-go{width:100%; padding:14px 16px; font-size:16px; border-radius:14px; margin-top:6px;}
.onb .onb-tpl{width:100%; margin-top:6px; padding:13px 16px; font-size:15px; border-radius:14px; border-color:var(--chip-border); color:var(--accent); font-weight:600;}
/* Bring back yesterday's unfinished */
.return-row{width:100%; margin-top:12px; padding:11px 14px; font:inherit; font-size:14.5px; font-weight:600; text-align:left; cursor:pointer;
  color:var(--accent); background:var(--goal-bg); border:1px dashed var(--chip-border); border-radius:var(--r);}
.return-row[hidden]{display:none;}
.carried-tag{display:block; font-size:11.5px; color:var(--muted); margin-top:2px;}
.status-badge.carried{background:var(--panel); color:var(--muted); border:1px dashed var(--accent-fill);}

/* ================= v50: DECORATED CHAT BUBBLES (pictures: looks.js) ================= */
.bub-prev.deco{padding:20px 22px 18px; overflow:visible; gap:12px;}
.bub-prev.deco i{height:18px;}
.shop-item[data-cat="bubble"]{overflow:visible;}

/* ================= v54: SHOP FILTERS ================= */
.shop-filters{display:flex; gap:6px; overflow-x:auto; scrollbar-width:none; margin:12px -2px 0; padding:0 2px 2px;}
.shop-filters::-webkit-scrollbar{display:none;}
.shop-empty{margin-top:16px; text-align:center;}

/* ================= v55: MEDIEVAL 2.0 — an old book and an RPG inventory =================
   Aged parchment with burnt edges, dark tooled leather with embossed gold, ink-drawn double frames
   with filigree corners (like inventory slots), flourish dividers, a drop cap on the goal.
   Textures and ornaments are CSS variables drawn in identity.js ("MEDIEVAL SKIN ART"). */
html:root[data-skin="medieval"]{
  --bg:#ecdcb6; --panel:#f3e6c6; --panel-2:#fbf3dc; --line:#a88a55;
  --text:#2b1d0e; --muted:#6e5634; --ink:#5a3d1e;
  --gold:#b8892b; --gold-light:#e9c46a;
  --leather:var(--leather-tex), linear-gradient(#4a3020, #2a1a0d);
  --med-frame:var(--corner-tl) top 3px left 3px / 16px no-repeat, var(--corner-tr) top 3px right 3px / 16px no-repeat,
    var(--corner-bl) bottom 3px left 3px / 16px no-repeat, var(--corner-br) bottom 3px right 3px / 16px no-repeat,
    var(--parch-tex), linear-gradient(#fbf3dc, #f1e1ba);
  --med-lines:inset 0 0 0 3px rgba(251,243,220,.85), inset 0 0 0 4px rgba(138,106,58,.5), 0 1px 3px rgba(60,35,10,.2);
}
/* The page: parchment, darker towards the burnt edges */
[data-skin="medieval"] body{background:radial-gradient(ellipse at 50% 35%, transparent 50%, rgba(92,56,20,.38) 100%), var(--parch-tex), #ecdcb6;}
/* Headers and the tab bar: dark tooled leather, embossed gold title, a gold flourish under it */
[data-skin="medieval"] .page-header, [data-skin="medieval"] .chat-header, [data-skin="medieval"] .subpage-head, [data-skin="medieval"] .drawer-head{
  background:var(--leather); border-bottom:1px solid var(--gold); box-shadow:inset 0 -4px 0 -2px rgba(233,196,106,.35), 0 2px 6px rgba(40,20,5,.35);
}
[data-skin="medieval"] .page-header{padding-bottom:20px; background:var(--flourish) center bottom 4px / 150px 12px no-repeat, var(--leather);}
[data-skin="medieval"] .ph-title, [data-skin="medieval"] .hdr-name, [data-skin="medieval"] .drawer-head strong, [data-skin="medieval"] .subpage-head strong{
  color:var(--gold-light); letter-spacing:.06em; text-shadow:0 1px 0 #140a03, 0 0 10px rgba(233,196,106,.25);
}
[data-skin="medieval"] .ph-progress{bottom:-1px;}
[data-skin="medieval"] .tabbar{position:relative; background:var(--leather); border-top:1px solid var(--gold); box-shadow:0 -2px 6px rgba(40,20,5,.3);}
[data-skin="medieval"] .tabbar::before{content:""; position:absolute; left:8px; right:8px; top:4px; border-top:1px dashed rgba(233,196,106,.45); pointer-events:none;} /* a stitched seam */
[data-skin="medieval"] .tabbar button.active{color:var(--gold-light); background:radial-gradient(circle at 50% 40%, rgba(233,196,106,.22), transparent 60%);}
[data-skin="medieval"] .tabbar button.active svg{filter:drop-shadow(0 0 4px rgba(233,196,106,.6));}
/* Cards: ink-drawn double frame with filigree corners — like slots in an old inventory */
[data-skin="medieval"] .lvl-card, [data-skin="medieval"] .streak-card, [data-skin="medieval"] .egg-card, [data-skin="medieval"] .wallet,
[data-skin="medieval"] .gift-row, [data-skin="medieval"] .set-menu, [data-skin="medieval"] .shop-item, [data-skin="medieval"] .stat,
[data-skin="medieval"] .ach, [data-skin="medieval"] .soon-card, [data-skin="medieval"] .manual-form, [data-skin="medieval"] .tpl-card,
[data-skin="medieval"] .j-goal, [data-skin="medieval"] .egg-rules, [data-skin="medieval"] .danger-zone, [data-skin="medieval"] .settings-row{
  background:var(--med-frame); border:1px solid var(--ink); border-radius:3px; box-shadow:var(--med-lines);
}
[data-skin="medieval"] .set-row + .set-row{border-top:1px solid rgba(138,106,58,.35);}
[data-skin="medieval"] .set-ic{border-radius:50%; box-shadow:inset 0 0 0 2px rgba(0,0,0,.18), 0 1px 2px rgba(40,20,5,.35);} /* like wax seals */
[data-skin="medieval"] .shop-item.chosen{border-color:#8c1c13; box-shadow:var(--med-lines), 0 0 0 2px rgba(140,28,19,.35);}
[data-skin="medieval"] .shop-item.locked{opacity:.75;}
/* Section titles between flourish lines; the goal title starts with a drop cap */
[data-skin="medieval"] .prog-h, [data-skin="medieval"] .ach-h{display:flex; align-items:center; gap:10px; color:var(--ink); font-variant:small-caps; letter-spacing:.08em;}
[data-skin="medieval"] .prog-h::before, [data-skin="medieval"] .prog-h::after, [data-skin="medieval"] .ach-h::before, [data-skin="medieval"] .ach-h::after{
  content:""; flex:1; height:1px; background:linear-gradient(90deg, transparent, var(--ink));
}
[data-skin="medieval"] .prog-h::after, [data-skin="medieval"] .ach-h::after{background:linear-gradient(90deg, var(--ink), transparent);}
[data-skin="medieval"] .section-kicker, [data-skin="medieval"] .gc-kicker{color:var(--ink); letter-spacing:.1em;}
[data-skin="medieval"] .goal-card .goal-title::first-letter{font-size:1.9em; line-height:1; color:#8c1c13; font-weight:700; text-shadow:1px 1px 0 var(--gold-light);}
[data-skin="medieval"] .goal-card{background:linear-gradient(90deg, rgba(120,80,30,.18), transparent 12%, transparent 88%, rgba(120,80,30,.18)), var(--parch-tex), #fbf3dc;}
/* Buttons: crimson tooled leather with a gold edge and an inner stitch; quiet ones — ink on parchment */
[data-skin="medieval"] .primary-btn, [data-skin="medieval"] .composer button{
  background:var(--leather-tex), linear-gradient(#a3271b, #6f130b); color:#f8e7c0; border:1px solid var(--gold-light); border-radius:4px;
  box-shadow:inset 0 0 0 2px #6f130b, inset 0 0 0 3px rgba(233,196,106,.5), 0 2px 3px rgba(40,20,5,.35); text-shadow:0 1px 0 #3a0a05;
}
[data-skin="medieval"] .ghost-btn, [data-skin="medieval"] .reset-btn{background:rgba(251,243,220,.75); border:1px solid var(--ink); color:var(--ink); box-shadow:inset 0 0 0 2px rgba(251,243,220,.9), inset 0 0 0 3px rgba(138,106,58,.35);}
[data-skin="medieval"] .qr-chip{background:rgba(251,243,220,.85); border:1px solid var(--ink); color:var(--ink); font-variant:small-caps; letter-spacing:.03em;}
[data-skin="medieval"] .tpl-cat.on, [data-skin="medieval"] .bg-target.on, [data-skin="medieval"] .seg button.active{background:linear-gradient(#a3271b, #6f130b); color:#f8e7c0; border-color:var(--gold);}
[data-skin="medieval"] input[type=text], [data-skin="medieval"] textarea, [data-skin="medieval"] select{background:rgba(255,250,235,.75); border:1px solid var(--ink); box-shadow:inset 0 1px 3px rgba(60,35,10,.18);}
/* Chat: notes on parchment (the manager) and on darker vellum (you) */
[data-skin="medieval"] .msg.agent{background:var(--parch-tex), #fbf3dc; border:1px solid var(--ink); border-radius:3px 12px 12px 3px; box-shadow:inset 0 0 0 2px rgba(251,243,220,.9), inset 0 0 0 3px rgba(138,106,58,.3), 0 1px 3px rgba(60,35,10,.18);}
[data-skin="medieval"] .msg.user{background:var(--parch-tex), #e6cf9c; border:1px solid #8a6a3a; border-radius:12px 3px 3px 12px; color:#3a1608;}
[data-skin="medieval"] .composer{background:var(--leather); border-top:1px solid var(--gold);}
[data-skin="medieval"] .composer textarea{background:rgba(251,243,220,.92);}
[data-skin="medieval"] .day-sep span{background:var(--leather); color:var(--gold-light); border:1px solid var(--gold); letter-spacing:.06em;}
/* Tasks: a ledger — ink lines and a red margin line */
[data-skin="medieval"] .task-list:not(.editing){border-left:2px solid rgba(140,28,19,.45); padding-left:8px;}
[data-skin="medieval"] .task-list:not(.editing) li{border-bottom:1px solid rgba(90,61,30,.35);}
[data-skin="medieval"] .milestone-list li{background:var(--parch-tex), #fbf3dc; border:1px solid var(--ink); box-shadow:inset 0 0 0 2px rgba(251,243,220,.9), inset 0 0 0 3px rgba(138,106,58,.3);}
/* Sheets and toasts */
[data-skin="medieval"] .drawer{background:var(--parch-tex), #f3e6c6; box-shadow:0 -4px 16px rgba(40,20,5,.35);}
[data-skin="medieval"] .toast{background:var(--leather); color:#f3e2b8; border:1px solid var(--gold); box-shadow:inset 0 0 0 3px rgba(233,196,106,.15), 0 6px 18px rgba(40,20,5,.4);}
[data-skin="medieval"] .reward-note{background:var(--parch-tex), #fbf3dc; border:1px solid var(--ink);}

/* ================= v57: POSTPONE / BRING BACK A GOAL ================= */
.goal-postpone{width:100%; margin-top:4px;}
.j-badge.postponed{background:var(--panel); color:var(--accent); border:1px dashed var(--chip-border);}
.j-restore{margin:0 14px 14px; width:calc(100% - 28px);}

/* Respect "Reduce Motion" (iPhone Settings → Accessibility → Motion): no movement, instant changes. */
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{animation-duration:.01ms !important; animation-delay:0s !important; transition-duration:.01ms !important;}
  .msg .w{opacity:1;}
}

/* ================= v60: ACCOUNT ================= */
.c-account{background:#5b6ee1;}
.check-row{display:flex; gap:10px; align-items:flex-start; font-size:13.5px; color:var(--text); margin:16px 0 4px; line-height:1.45;}
.check-row input{width:20px; height:20px; flex:0 0 auto; margin:1px 0 0; accent-color:var(--accent);}
.check-row .text-link{padding:0; font-size:inherit;}
#acc-mode{margin-bottom:4px;}
.acc-note:not(:empty){color:var(--text);}
.acc-who{font-weight:600;}
.sync-choice{display:flex; flex-direction:column; align-items:stretch; gap:4px; margin-top:6px;}
.sync-choice .hint{margin:0 0 10px;}
.sync-choice .text-link{align-self:center;}


/* The data policy opened from the sign-up sheet sits above the sheet */
.subpage.over-sheet{z-index:12;}
/* v62: the field that needs attention in the sign-in form */
#acc-form input.need{border-color:var(--bad, #d9534f); box-shadow:0 0 0 2px rgba(217,83,79,.25);}

/* v64: no account — only the sign-in sheet; the rest of the app stays hidden */
body.locked > header, body.locked > main, body.locked > nav.tabbar, body.locked .gift, body.locked .celebrate,
body.locked .onb, body.locked .subpage:not(#policy-page){visibility:hidden;}
body.locked .overlay{background:var(--bg);}
body.locked #account-sheet .close-sheet{display:none;}
body.locked #account-sheet{top:calc(var(--safe-top, 0px) + 24px); height:auto; max-height:none;}.check-row[hidden]{display:none;}
#acc-brand{display:none;}
body.locked #acc-brand{display:flex; flex-direction:column; align-items:center; gap:4px; margin:6px 0 18px; text-align:center;}
body.locked #acc-brand b{font-size:22px; letter-spacing:.01em;}
body.locked #acc-brand span{color:var(--muted); font-size:13.5px;}
body.locked #acc-brand .stage-badge{font-style:normal; font-size:11.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--accent); border:1px solid var(--accent); border-radius:999px; padding:1px 10px; margin:2px 0 2px;}
/* v69: a reward line may say why it paid less or nothing — it wraps instead of being cut */
.reward-note span{white-space:normal;}
.reward-note small{font-size:12px; opacity:.85;}
.reward-note .rw-zero b{color:var(--muted);}
