/* ============================================================
   Healthy Back 365 — prototype styles
   ============================================================ */
:root{
  --brand:#3DB7B0;          /* MAIN teal */
  --brand-dark:#2C8C86;
  --brand-deep:#1E7D76;     /* flat header / strong fills */
  --brand-soft:#E7F5F3;
  --accent:#2C8C86;         /* deeper teal (secondary) */
  --accent-dark:#1F6460;
  --accent-soft:#E0F0EF;
  /* curated accents — used sparingly & semantically to add life */
  --coral:#FF7E6B;  --coral-soft:#FFE8E2;  --coral-ink:#D1503B;   /* andullation / warmth */
  --blue:#5C8BEE;   --blue-soft:#E7EEFE;   --blue-ink:#365FBF;    /* stability / calm */
  --amber:#F4A63F;  --amber-soft:#FDEFD7;  --amber-ink:#B5730F;   /* streak / energy */
  --presc:#34568B;  --presc-soft:#E9EEF7;  --presc-ink:#2A4470;   /* prescribed by specialist (clinical navy) */
  --gold:#F4A63F;           /* alias -> amber */
  --gold-soft:#FDEFD7;
  --rose:#FF7E6B;           /* alias -> coral */
  --bg:#EAF1F0;
  --card:#FFFFFF;
  --ink:#173330;            /* dark teal-ink */
  --muted:#6F8482;
  --line:#E3ECEB;
  --good:#3DB7B0;
  --shadow:0 8px 24px rgba(20,45,75,.08);
  --shadow-lg:0 18px 50px rgba(20,45,75,.16);
  --r:18px;
  --r-sm:12px;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font-family:'Inter','Segoe UI',system-ui,-apple-system,Roboto,Arial,sans-serif;
  background:var(--bg);
  color:var(--ink);
  min-height:100vh;
  display:flex;align-items:center;justify-content:center;
  padding:24px;
}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
img{max-width:100%}

/* ---------- Phone frame ---------- */
.phone{
  position:relative;
  width:min(420px,100%);
  height:min(860px,92vh);
  background:var(--bg);
  border-radius:42px;
  box-shadow:var(--shadow-lg), 0 0 0 12px #0d1b29;
  overflow:hidden;
  display:flex;flex-direction:column;
}
.notch{
  position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:150px;height:26px;background:#0d1b29;
  border-bottom-left-radius:16px;border-bottom-right-radius:16px;z-index:60;
}

/* ---------- App shell ---------- */
.app{display:flex;flex-direction:column;height:100%;position:relative;overflow:hidden}
.screen{flex:1;overflow-y:auto;overflow-x:hidden;padding:0 0 96px;-webkit-overflow-scrolling:touch;scroll-behavior:smooth}
.screen::-webkit-scrollbar{width:0}

/* ---------- Header ---------- */
.appbar{
  position:sticky;top:0;z-index:40;
  background:var(--brand-deep);
  color:#fff;padding:34px 20px 18px;
  border-bottom-left-radius:26px;border-bottom-right-radius:26px;
}
.appbar.plain{background:#fff;color:var(--ink);border-bottom:1px solid var(--line);border-radius:0}
.appbar-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.appbar h1{font-size:19px;margin:0;font-weight:700}
.appbar .sub{opacity:.85;font-size:13px;margin-top:2px}
.logo{display:flex;align-items:center;gap:9px;font-weight:800;letter-spacing:.2px}
.logo .mark{width:30px;height:30px;display:grid;place-items:center;background:rgba(255,255,255,.18);border-radius:9px}
/* Healthy Back 365 brand logo (masked so it can be tinted white on dark, teal on light) */
.brandlogo{display:inline-block;aspect-ratio:362.6647/79.52;background:#fff;
  -webkit-mask:url("logo.svg") left center/contain no-repeat;mask:url("logo.svg") left center/contain no-repeat}
.brandlogo.brand{background:var(--brand)}
.iconbtn{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.16);position:relative;font-size:18px}
.appbar.plain .iconbtn{background:var(--brand-soft);color:var(--brand)}
.badge-dot{position:absolute;top:6px;right:7px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--rose);color:#fff;font-size:10px;font-weight:700;display:grid;place-items:center;border:2px solid var(--brand-dark)}

/* score chips in header */
.hero-stats{display:flex;gap:10px;margin-top:16px}
.hstat{flex:1;background:rgba(255,255,255,.14);border-radius:14px;padding:10px 12px}
.hstat .n{font-size:20px;font-weight:800;line-height:1}
.hstat .l{font-size:11px;opacity:.85;margin-top:3px}

/* ---------- Layout helpers ---------- */
.pad{padding:16px}
.section-title{display:flex;align-items:center;justify-content:space-between;margin:18px 16px 8px}
.section-title h2{font-size:16px;margin:0;font-weight:700}
.section-title .link{font-size:13px;color:var(--brand);font-weight:600}
.muted{color:var(--muted)}
.row{display:flex;gap:12px}
.center{display:grid;place-items:center}

/* ---------- Cards ---------- */
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:16px;margin:0 16px 14px;border:1px solid rgba(230,236,243,.7)}
.card.tight{padding:13px}
button.card{width:calc(100% - 32px)}  /* button cards fill width like div cards */
.card-head{display:flex;align-items:center;gap:12px}
.card h3{margin:0;font-size:15px;font-weight:700}
.tag{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;padding:4px 9px;border-radius:999px;background:var(--brand-soft);color:var(--brand)}
.tag.teal{background:var(--accent-soft);color:var(--accent-dark)}
.tag.gold{background:var(--amber-soft);color:var(--amber-ink)}
.tag.rose{background:var(--coral-soft);color:var(--coral-ink)}
.tag.blue{background:var(--blue-soft);color:var(--blue-ink)}
.tag.rx{background:var(--presc-soft);color:var(--presc-ink)}
.tag.gray{background:#EDF2F1;color:var(--muted)}

/* create-a-plan button + my-plan cards */
.newplan-btn{display:flex;align-items:center;justify-content:center;gap:9px;width:calc(100% - 32px);margin:6px 16px 4px;
  padding:14px;border-radius:16px;border:1.5px dashed var(--brand);background:var(--brand-soft);color:var(--brand);font-weight:700;font-size:14.5px;transition:transform .08s}
.newplan-btn:active{transform:scale(.99)}
.newplan-btn .np-ic{width:24px;height:24px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:15px}
.addplan-btn{background:var(--brand);color:#fff;border-style:solid;border-color:var(--brand)}
.addplan-btn .np-ic{background:#fff;color:var(--brand)}
.myplan{display:flex;align-items:center;gap:13px;text-align:left}
.myplan-t{flex:1;min-width:0}
.myplan-t b{display:block;font-size:14.5px}
.myplan-t span{font-size:12px;color:var(--muted)}
.myplan-sched{display:flex;align-items:center;gap:4px;color:var(--brand);font-weight:600;margin:1px 0}
.myplan-sched .icon{font-size:13px}
.myplan-go{color:var(--muted);font-size:20px;flex:none}
.plan-sched{display:flex;align-items:center;gap:6px;margin:0 16px;font-size:12.5px;font-weight:600;color:var(--brand);background:var(--brand-soft);padding:9px 12px;border-radius:11px}

/* prescribed card accent (violet) */
.card.rx{border-left:4px solid var(--presc)}

/* collapsible prescribed group header */
.plan-group{display:flex;align-items:center;gap:12px;width:calc(100% - 32px);margin:0 16px 12px;text-align:left;
  background:var(--presc-soft);border:1px solid #D2DCEE;border-radius:16px;padding:13px 14px;transition:transform .08s}
.plan-group:active{transform:scale(.99)}
.plan-group .pg-ic{width:38px;height:38px;border-radius:11px;background:#fff;color:var(--presc);display:grid;place-items:center;font-size:18px;flex:none}
.pg-t{flex:1;min-width:0}
.pg-t b{display:block;font-size:14px;color:var(--presc-ink)}
.pg-t span{font-size:12px;color:var(--presc)}
.pg-count{font-weight:800;font-size:14px;color:var(--presc-ink);background:#fff;border-radius:999px;padding:3px 11px;flex:none}
.pg-chev{color:var(--presc);font-size:20px;flex:none;transition:transform .2s}
.pg-chev.open{transform:rotate(90deg)}
.pb-presc-group{margin:6px 0 10px;width:auto}
.pb-presc-list{margin-bottom:6px}

/* builder: when / schedule */
.pb-rep-row{display:flex;gap:6px;background:#E3ECEB;border-radius:13px;padding:4px}
.pb-rep{flex:1;padding:10px 4px;border-radius:10px;font-weight:700;font-size:12.5px;color:var(--muted)}
.pb-rep.on{background:var(--brand);color:#fff;box-shadow:0 4px 10px rgba(61,183,176,.35)}
.pb-days{display:flex;gap:6px;margin-top:9px}
.pb-day{flex:1;aspect-ratio:1;border-radius:11px;background:#EEF3F2;color:var(--muted);font-weight:700;font-size:13px;border:1.5px solid transparent}
.pb-day.on{background:var(--brand-soft);color:var(--brand);border-color:var(--brand)}
.pb-field{display:flex;align-items:center;justify-content:space-between;margin-top:10px;font-size:13.5px;font-weight:600}
.pb-field span{display:flex;align-items:center;gap:6px;color:var(--ink)}
.pb-field .icon{color:var(--brand)}
.pb-inp{border:1.5px solid var(--line);border-radius:11px;padding:9px 12px;font-family:inherit;font-size:14px;outline:none}
.pb-inp:focus{border-color:var(--brand)}

/* builder: search + filter picker */
.pb-search{width:100%;border:1.5px solid var(--line);border-radius:13px;padding:12px 15px;font-family:inherit;font-size:14.5px;outline:none;margin-bottom:8px}
.pb-search:focus{border-color:var(--brand)}
.pb-chips{padding:2px 0 6px;margin:0}
.pb-selnote{font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;margin:2px 0 8px}
.pb-cat{display:block;font-size:11px;font-weight:600;color:var(--muted);text-transform:none;letter-spacing:0;margin-top:1px}

/* plan builder sheet */
.pb-name{width:100%;border:1.5px solid var(--line);border-radius:13px;padding:13px 15px;font-family:inherit;font-size:15px;outline:none;margin-bottom:8px}
.pb-name:focus{border-color:var(--brand)}
.pb-sec-h{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);margin:14px 0 8px}
.pb-sec-h .icon{color:var(--brand)}
.pb-items{display:flex;flex-direction:column;gap:7px}
.pb-item{display:flex;align-items:center;gap:11px;text-align:left;background:#fff;border:1.5px solid var(--line);border-radius:13px;padding:11px 12px;transition:.12s}
.pb-item.on{border-color:var(--brand);background:var(--brand-soft)}
.pb-ic{width:34px;height:34px;border-radius:10px;background:#EEF3F2;color:var(--muted);display:grid;place-items:center;font-size:17px;flex:none}
.pb-item.on .pb-ic{background:#fff;color:var(--brand)}
.pb-t{flex:1;min-width:0;font-size:13.5px;font-weight:600}
.pb-add{width:26px;height:26px;border-radius:50%;background:#EEF3F2;color:var(--muted);display:grid;place-items:center;font-size:15px;flex:none}
.pb-item.on .pb-add{background:var(--brand);color:#fff}
.pb-item.locked{background:#F5F8F7;border-color:#E3ECEB;opacity:.92}
.pb-item.locked .pb-ic{background:var(--brand-soft);color:var(--brand)}
.pb-lock{width:26px;height:26px;border-radius:50%;background:#E3ECEB;color:var(--muted);display:grid;place-items:center;font-size:13px;flex:none}
.pb-locked-note{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);margin:-2px 0 8px}
.pb-locked-note .icon{color:var(--brand)}
.pb-save{margin-top:16px;position:sticky;bottom:0}

/* exercise / therapy card */
.task{display:flex;gap:13px;align-items:flex-start}
.thumb{width:74px;height:74px;border-radius:14px;flex:none;display:grid;place-items:center;font-size:30px;background:var(--brand-soft);color:var(--brand);position:relative;overflow:hidden}
.thumb.play::after{content:"▶";position:absolute;font-size:16px;background:rgba(0,0,0,.35);width:30px;height:30px;border-radius:50%;display:grid;place-items:center;border:2px solid rgba(255,255,255,.9)}
.task .meta{flex:1;min-width:0}
.task .meta h3{margin:0 0 3px}
.task .meta .desc{font-size:12.5px;color:var(--muted);line-height:1.45}
.task .chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}

.task-foot{display:flex;gap:8px;margin-top:13px}
.btn{border-radius:12px;padding:11px 14px;font-weight:700;font-size:13.5px;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:transform .08s ease, filter .15s}
.btn:active{transform:scale(.97)}
.btn.primary{background:var(--brand);color:#fff;flex:1}
.btn.teal{background:var(--accent);color:#fff;flex:1}
.btn.ghost{background:#EDF2F1;color:var(--ink)}
.btn.gold{background:var(--gold);color:#fff}
.btn.block{width:100%}
.btn.sm{padding:9px 12px;font-size:12.5px}
.btn.done{background:var(--accent-soft);color:var(--accent-dark)}
.btn:disabled{opacity:.6}
.btn .ic{font-size:15px}

/* progress ring */
.ring{--p:0;--c:var(--accent);width:84px;height:84px;border-radius:50%;display:grid;place-items:center;
  background:conic-gradient(var(--c) calc(var(--p)*1%), #E3ECEB 0);flex:none}
.ring .inner{width:66px;height:66px;border-radius:50%;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-align:center;line-height:1}
.ring .inner b{font-size:19px}
.ring .inner span{font-size:10px;color:var(--muted)}

.progress{height:9px;background:#E3ECEB;border-radius:99px;overflow:hidden}
.progress > i{display:block;height:100%;border-radius:99px;background:var(--brand)}

/* points / streak banner */
.gamebar{display:flex;gap:12px;margin:0 16px 14px}
.gamebar .g{flex:1;border-radius:16px;padding:13px;color:#fff;display:flex;align-items:center;gap:10px}
.gamebar .g.pts{background:var(--brand)}
.gamebar .g.streak{background:var(--amber)}
.gamebar .g .ic{font-size:24px}
.gamebar .g .n{font-size:21px;font-weight:800;line-height:1}
.gamebar .g .l{font-size:11px;opacity:.92}

/* home "create a plan" call-to-action (no active plan today) */
.createplan-cta{text-align:center;padding:22px 18px 18px}
.createplan-cta .cpc-ic{position:relative;width:58px;height:58px;border-radius:17px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:27px;margin:0 auto 12px}
.createplan-cta .cpc-plus{position:absolute;bottom:-4px;right:-4px;width:24px;height:24px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:14px;border:3px solid #fff}
.createplan-cta h3{margin:0 0 4px;font-size:16px}
.createplan-cta p{margin:0 0 14px;font-size:13px;color:var(--muted);line-height:1.45}

/* home "today's plan" = active scheduled plan */
.todayplan{display:flex;align-items:center;gap:14px;text-align:left}
.tp-body{flex:1;min-width:0}
.tp-active{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#fff;background:var(--brand);border-radius:999px;padding:3px 9px}
.tp-active .icon{font-size:12px}
.tp-body h3{margin:6px 0 2px;font-size:16px}
.tp-sched{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--muted);margin:0 0 9px}
.tp-sched .icon{color:var(--brand)}

/* home category gauge cards */
.cat-row{display:flex;gap:10px;margin:0 16px 14px}
.cat-card{flex:1;min-width:0;background:var(--card);border:1px solid rgba(230,236,243,.7);border-radius:18px;
  box-shadow:var(--shadow);padding:13px 6px 12px;display:flex;flex-direction:column;align-items:center;gap:4px;transition:transform .08s}
.cat-card:active{transform:scale(.97)}
.cat-card .ring{margin:0 auto 2px;position:relative}
.cat-card.empty{opacity:.5}
.cat-lock{position:absolute;top:-3px;right:-3px;width:19px;height:19px;border-radius:50%;background:var(--presc);color:#fff;display:grid;place-items:center;font-size:10px;border:2px solid #fff}
.cat-lock .icon{font-size:10px}
.cat-ic{font-size:16px;display:grid;place-items:center;margin-top:2px}
.cat-label{font-size:12px;font-weight:700;color:var(--ink);line-height:1.15;text-align:center}
.cat-sub{font-size:10px;color:var(--muted)}

/* badges */
.badges{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.badge{text-align:center;font-size:11px;color:var(--muted)}
.badge .b{width:54px;height:54px;border-radius:50%;margin:0 auto 5px;display:grid;place-items:center;font-size:24px;background:#EDF2F1;filter:grayscale(1);opacity:.45}
.badge.on .b{filter:none;opacity:1;background:var(--brand-soft);box-shadow:0 4px 12px rgba(61,183,176,.3)}
.badge.on{color:var(--ink);font-weight:600}

/* scans — animated BackCare gauges */
.gauge-hero{display:flex;align-items:center;gap:16px;margin-top:14px}
.gauge-big{width:172px;flex:none;margin:-6px -8px -6px -10px}
.gauge-caption{flex:1}
.gc-title{font-size:15px;font-weight:700;margin-bottom:8px}
.gc-leg{display:flex;align-items:center;font-size:13px;color:var(--muted);margin-bottom:5px}
.gc-leg b{color:var(--ink);margin-left:5px}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:8px;flex:none}
.dot-out{background:#F39200}
.dot-in{background:#F8B24D}
.gauge-row{display:flex;gap:10px;margin-top:16px}
.gauge-cell{flex:1;text-align:center}
.gauge-mid{width:108px;margin:0 auto}
.gc-label{font-size:12.5px;font-weight:700;margin-top:4px}
.gc-mh{font-size:11.5px;color:var(--muted);margin-top:3px;display:flex;align-items:center;justify-content:center}
.gauge-svg{width:100%;height:auto;display:block;overflow:visible}
.g-track{fill:none;stroke:#EEEAE3;stroke-linecap:round}
.gauge-val{fill:none;stroke-linecap:round;transition:stroke-dashoffset 1.4s cubic-bezier(.25,.8,.25,1)}
.g-out{stroke:#F39200}
.g-in{stroke:#F8B24D}
.g-score{fill:var(--ink);font-weight:800;text-anchor:middle;dominant-baseline:middle}
.g-sub{fill:var(--muted);font-size:8px;text-anchor:middle;letter-spacing:.5px}
.g-tick{fill:var(--muted);font-size:8.5px;text-anchor:middle;font-weight:700}

/* progress curve chart */
.curve{width:100%;height:auto;display:block;overflow:visible}
.cv-area{opacity:0;animation:cvfade .8s ease forwards .8s}
.cv-line{fill:none;stroke:var(--brand);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:1;stroke-dashoffset:1;animation:cvdraw 1.3s cubic-bezier(.4,.6,.3,1) forwards .1s}
.cv-dot{fill:#fff;stroke:var(--brand);stroke-width:2.5;opacity:0;animation:cvfade .4s ease forwards 1.1s}
.cv-val{fill:var(--ink);font-size:10px;font-weight:800;text-anchor:middle;opacity:0;animation:cvfade .4s ease forwards 1.2s}
.cv-x{fill:var(--muted);font-size:8.5px;font-weight:600;text-anchor:middle}
@keyframes cvdraw{to{stroke-dashoffset:0}}
@keyframes cvfade{to{opacity:1}}

/* scan report PDF rows */
.report-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 10px;border-radius:12px;background:#fff;transition:.12s}
.report-row:active{transform:scale(.99)}
.report-row + .report-row{border-top:1px solid var(--line)}
.rep-ic{width:40px;height:40px;border-radius:11px;background:var(--coral-soft);color:var(--coral-ink);display:grid;place-items:center;font-size:19px;flex:none}
.rep-t{flex:1;min-width:0}
.rep-t b{display:block;font-size:14px}
.rep-t span{font-size:12px;color:var(--muted)}
.rep-go{color:var(--brand);font-size:20px;flex:none}

/* scans */
.scan-score{display:flex;align-items:center;gap:16px}
.scan-list .card{margin-bottom:12px}
.spark{display:flex;align-items:flex-end;gap:6px;height:64px;margin-top:6px}
.spark .bar{flex:1;background:var(--brand);border-radius:6px 6px 3px 3px;position:relative;min-height:8px;transition:height .6s}
.spark .bar span{position:absolute;top:-17px;left:50%;transform:translateX(-50%);font-size:10px;font-weight:700;color:var(--brand)}
.spark .bar small{position:absolute;bottom:-18px;left:50%;transform:translateX(-50%);font-size:9px;color:var(--muted)}

.codecard{background:var(--brand-deep);color:#fff;border:none}
.codebox{margin-top:10px;background:rgba(255,255,255,.14);border:1.5px dashed rgba(255,255,255,.55);border-radius:14px;padding:14px;text-align:center}
.codebox .code{font-size:26px;font-weight:800;letter-spacing:4px;font-family:'SFMono-Regular',Consolas,monospace}

/* extra scan codes (locked / unlocked) */
.lockedcodes .lc-head{display:flex;align-items:center;gap:11px;margin-bottom:10px}
.lockedcodes .lc-ic{width:40px;height:40px;border-radius:11px;background:var(--presc-soft);color:var(--presc);display:grid;place-items:center;font-size:18px;flex:none}
.lockedcodes .lc-head b{display:block;font-size:14.5px}
.lockedcodes .lc-head span{font-size:12px;color:var(--muted)}
.codelist{display:flex;flex-direction:column;gap:8px}
.codelist-row{display:flex;align-items:center;gap:11px;padding:11px 13px;border-radius:12px;background:#F4F8F7;border:1px solid var(--line)}
.codelist-row.locked{background:#F4F6FA;border-style:dashed}
.clr-ic{color:var(--muted);font-size:17px;flex:none;display:grid;place-items:center}
.clr-ic.ok{color:var(--brand)}
.codelist-row.locked .clr-ic{color:var(--presc)}
.clr-code{flex:1;min-width:0;font-family:'SFMono-Regular',Consolas,monospace;font-weight:700;letter-spacing:1.5px;font-size:14px;color:var(--ink)}
.codelist-row.locked .clr-code{color:var(--muted);letter-spacing:3px}
.clr-lbl{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--presc);background:var(--presc-soft);padding:3px 9px;border-radius:999px;flex:none}
.clr-copy{width:34px;height:34px;border-radius:9px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:16px;flex:none}

/* location filter chips */
.chips-scroll{display:flex;gap:8px;overflow-x:auto;padding:4px 16px 6px;scrollbar-width:none}
.chips-scroll::-webkit-scrollbar{display:none}
.chips-wrap{display:flex;flex-wrap:wrap;gap:7px;padding:4px 16px 6px}
.chips-wrap .chip{flex:none;padding:8px 13px;font-size:12.5px}
.chip{flex:none;padding:9px 14px;border-radius:999px;background:#fff;border:1.5px solid var(--line);font-size:13px;font-weight:600;color:var(--muted);display:inline-flex;gap:6px;align-items:center}
.chip.active{background:var(--brand);border-color:var(--brand);color:#fff}

/* illustrated thumbnails */
.life-art{position:relative;flex:none;border-radius:14px;overflow:hidden;display:grid;place-items:center}
.life-art-bg{position:absolute;inset:0;width:100%;height:100%}
.life-art-ic{position:relative;color:#fff;display:grid;place-items:center;font-size:30px}
.life-art.sm{width:48px;height:48px;border-radius:12px}
.life-art.sm .life-art-ic{font-size:22px}
.lifetip-art{width:84px;height:84px}
.lifetip-art .life-art-ic{font-size:34px}

/* home healthy-living tip card */
.lifetip{display:flex;align-items:center;gap:13px;text-align:left}
.lifetip-body{flex:1;min-width:0}
.lifetip-body h3{margin:5px 0 2px;font-size:15px}
.lifetip-body p{margin:0;font-size:12px;color:var(--muted);line-height:1.35}
.lifetip-go{color:var(--muted);font-size:20px;flex:none}

/* lifestyle content list */
.life-item{display:flex;align-items:flex-start;gap:12px;text-align:left;width:auto;padding:14px}
.li-t{flex:1;min-width:0}
.li-t b{display:block;font-size:14px;color:var(--ink);line-height:1.3}
.li-t span{display:block;font-size:12px;color:var(--muted);margin-top:2px;line-height:1.35}
.li-t .li-loc{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:700;color:var(--blue-ink);background:var(--blue-soft);padding:3px 8px;border-radius:999px;margin-top:5px;white-space:nowrap}
.li-t .li-loc .icon{font-size:12px}
.li-t .li-code{color:var(--coral-ink);background:var(--coral-soft);font-weight:800;letter-spacing:.2px}
.li-tag{flex:none;align-self:flex-start;font-size:10.5px;font-weight:800;padding:4px 9px;border-radius:999px;text-transform:uppercase;letter-spacing:.3px}
.li-add{flex:none;align-self:flex-end;display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:var(--brand);background:var(--brand-soft);border:1px solid transparent;border-radius:999px;padding:7px 11px}
.li-add .icon{font-size:13px}
.li-add.on{color:var(--accent-dark);background:var(--accent-soft)}
.li-actions{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:7px}
.li-star{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#EEF2F1;color:var(--muted);font-size:17px;transition:.12s}
.li-star.on{background:var(--amber-soft);color:var(--amber)}
.li-star:active{transform:scale(.9)}

/* add-to-plan picker */
.atp-list{display:flex;flex-direction:column;gap:8px}
.atp-row{display:flex;align-items:center;gap:11px;text-align:left;background:#fff;border:1.5px solid var(--line);border-radius:13px;padding:11px 12px}
.atp-row.on{border-color:var(--brand);background:var(--brand-soft)}
.atp-ic{width:36px;height:36px;border-radius:10px;background:#EEF3F2;color:var(--muted);display:grid;place-items:center;font-size:17px;flex:none}
.atp-row.on .atp-ic{background:#fff;color:var(--brand)}
.atp-t{flex:1;min-width:0}
.atp-t b{display:block;font-size:14px}
.atp-t span{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}
.atp-add{width:28px;height:28px;border-radius:50%;background:#EEF3F2;color:var(--muted);display:grid;place-items:center;font-size:15px;flex:none}
.atp-row.on .atp-add{background:var(--brand);color:#fff}
.atp-empty{display:flex;align-items:center;gap:10px;background:#F4F8F7;border-radius:13px;padding:14px;font-size:13px;color:var(--muted)}
.atp-empty .icon{font-size:22px;color:var(--muted);flex:none}

/* lifestyle (legacy grid) */
.life-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:0 16px}
.life{border-radius:18px;padding:16px;color:#fff;min-height:120px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:var(--shadow)}
.life .ic{font-size:28px}
.life h3{margin:0;font-size:15px;color:#fff}
.life p{margin:3px 0 0;font-size:11.5px;opacity:.92;line-height:1.4}

/* ---------- Tab bar ---------- */
.tabbar{
  position:absolute;left:0;right:0;bottom:0;z-index:50;
  background:rgba(255,255,255,.93);backdrop-filter:blur(12px);
  border-top:1px solid var(--line);
  display:flex;justify-content:space-around;padding:9px 6px calc(9px + env(safe-area-inset-bottom));
}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--muted);font-size:10.5px;font-weight:600;padding:4px 0;border-radius:12px}
.tab .ic{font-size:21px;line-height:1}
.tab.active{color:var(--brand)}
.tab.active .ic{transform:translateY(-1px)}

/* elevated centre "Plan" tab — stands out from the rest */
.tab.tab-cta{color:var(--accent-dark);font-weight:700}
.tab.tab-cta .ic{width:54px;height:54px;margin-top:-28px;border-radius:50%;
  background:var(--brand);color:#fff;
  display:grid;place-items:center;border:4px solid #fff;
  box-shadow:0 8px 18px rgba(61,183,176,.5)}
.tab.tab-cta .ic .icon{font-size:25px}
.tab.tab-cta.active .ic{transform:translateY(-2px) scale(1.04)}

/* ---------- Wizard ---------- */
.wiz{position:absolute;inset:0;z-index:70;background:var(--brand-deep);color:#fff;display:flex;flex-direction:column;padding:40px 24px 24px}
.wiz .wbar{height:6px;background:rgba(255,255,255,.25);border-radius:99px;margin-bottom:22px}
.wiz .wbar > i{display:block;height:100%;background:#fff;border-radius:99px;transition:width .35s}
.wiz .wbody{flex:1;overflow-y:auto;overflow-x:hidden}
.wiz .slider{display:block}
.wiz h2{font-size:23px;margin:6px 0 6px;font-weight:800}
.wiz .lead{opacity:.9;font-size:14px;margin-bottom:22px;line-height:1.5}
.wiz .opts{display:flex;flex-direction:column;gap:11px}
.opt{background:rgba(255,255,255,.12);border:1.5px solid rgba(255,255,255,.25);border-radius:14px;padding:15px 16px;font-size:15px;font-weight:600;display:flex;align-items:center;gap:12px;text-align:left;color:#fff}
.opt .e{font-size:22px}
.opt.sel{background:#fff;color:var(--brand-dark);border-color:#fff}
.opt.sel .check{margin-left:auto;color:var(--accent-dark);font-weight:800}
.wiz input[type=text],.wiz input[type=number]{width:100%;padding:15px 16px;border-radius:14px;border:none;font-size:16px;color:var(--ink)}
/* Date-of-birth trigger field */
.wiz .dobtrigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:15px 16px;border-radius:14px;border:none;background:#fff;font-size:16px;font-family:inherit;font-weight:500;color:var(--muted);text-align:left;cursor:pointer}
.wiz .dobtrigger.has{color:var(--ink);font-weight:600}
.wiz .dobtrigger .icon{font-size:20px;color:var(--brand);flex:none}
/* Date-of-birth calendar popup */
.dp-overlay{position:absolute;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;padding:18px}
.dp-backdrop{position:absolute;inset:0;border:none;background:rgba(13,27,41,.55)}
.dp-card{position:relative;z-index:1;width:100%;max-width:330px;max-height:88%;display:flex;flex-direction:column;background:#fff;color:var(--ink);border-radius:20px;padding:14px;box-shadow:0 18px 50px rgba(0,0,0,.32)}
.dp-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.dp-bar b{font-size:15px;color:var(--ink)}
.dp-x{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#EEF2F1;color:var(--muted)}
.dp-x .icon{font-size:16px}
.dp-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.dp-title{flex:1;text-align:center;font-size:15px;font-weight:800;color:var(--brand-dark)}
.dp-title-btn{border:none;cursor:pointer;background:var(--brand-soft);padding:7px 14px;border-radius:999px;flex:0 1 auto}
.dp-back,.dp-spacer{flex:none;width:32px;height:32px}
.dp-back{border-radius:50%;display:grid;place-items:center;background:#EEF2F1;color:var(--ink);cursor:pointer}
.dp-back .icon{font-size:18px}
.dp-grid{display:grid;gap:6px}
.dp-years{grid-template-columns:repeat(4,minmax(0,1fr));max-height:270px;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:2px}
.dp-year{padding:13px 0;border-radius:12px;border:none;background:#F4F7F6;color:var(--ink);font-size:15px;font-weight:600;cursor:pointer}
.dp-year.on{background:var(--brand);color:#fff;font-weight:800}
.dp-months{grid-template-columns:repeat(3,minmax(0,1fr))}
.dp-month{padding:16px 0;border-radius:12px;border:none;background:#F4F7F6;color:var(--ink);font-size:14px;font-weight:700;cursor:pointer}
.dp-month.on{background:var(--brand);color:#fff}
.dp-wd{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-bottom:4px}
.dp-wd span{text-align:center;font-size:11px;font-weight:700;color:var(--muted)}
.dp-days{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.dp-day{height:38px;min-width:0;border:none;border-radius:50%;display:flex;align-items:center;justify-content:center;background:none;color:var(--ink);font-size:14px;font-weight:600;cursor:pointer}
.dp-day.empty{pointer-events:none}
.dp-day.on{background:var(--brand);color:#fff;font-weight:800}
.wiz .slider{width:100%;margin-top:18px;accent-color:#fff}
.wiz .slval{font-size:46px;font-weight:800;text-align:center}
.wiz .wfoot{display:flex;gap:10px;margin-top:18px}
.wiz .wfoot .btn.primary{background:#fff;color:var(--brand-dark)}
.wiz .wfoot .btn.ghost{background:rgba(255,255,255,.16);color:#fff}
.wiz-skip{display:block;margin:14px auto 0;padding:8px 14px;background:none;color:rgba(255,255,255,.85);font-size:13.5px;font-weight:600;text-decoration:underline;text-underline-offset:3px}
.painmap{display:flex;justify-content:center;margin:6px 0 14px}

/* ---------- Modal / sheet ---------- */
.scrim{position:absolute;inset:0;z-index:80;background:rgba(13,27,41,.5);backdrop-filter:blur(2px);display:none;align-items:flex-end}
.scrim.show{display:flex;animation:fade .2s}
.sheet{background:#fff;width:100%;border-radius:26px 26px 0 0;padding:8px 18px 24px;max-height:88%;overflow-y:auto;animation:up .28s cubic-bezier(.2,.8,.2,1)}
.grip{width:42px;height:5px;border-radius:99px;background:#D7DEE7;margin:6px auto 12px}
.sheet h2{margin:4px 0 2px;font-size:19px}
.video{aspect-ratio:16/10;border-radius:16px;background:var(--brand-deep);display:grid;place-items:center;color:#fff;position:relative;margin:8px 0 14px;overflow:hidden}
.video .playbtn{width:64px;height:64px;border-radius:50%;background:rgba(255,255,255,.92);color:var(--brand);display:grid;place-items:center;font-size:24px;box-shadow:var(--shadow)}
.video .lbl{position:absolute;bottom:10px;left:12px;font-size:11px;background:rgba(0,0,0,.35);padding:4px 8px;border-radius:8px}
.video.has-img{background-color:#cfe3e1;background-size:cover;background-position:center 35%}
.video.has-img::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.04),rgba(0,0,0,.26))}
.video.has-img .playbtn{position:relative;z-index:1}
.steps{counter-reset:s;padding:0;margin:6px 0;list-style:none}
.steps li{position:relative;padding:9px 0 9px 38px;border-bottom:1px solid var(--line);font-size:13.5px}
.steps li:last-child{border:none}
.steps li::before{counter-increment:s;content:counter(s);position:absolute;left:0;top:8px;width:26px;height:26px;border-radius:50%;background:var(--brand-soft);color:var(--brand);font-weight:800;display:grid;place-items:center;font-size:13px}

/* feedback */
.faces{display:flex;justify-content:space-between;margin:10px 0 4px}
.face{font-size:30px;color:var(--muted);opacity:.6;transition:.15s;background:none;padding:6px;border-radius:12px;display:flex;flex-direction:column;align-items:center;gap:3px}
.face div{font-size:10px}
.face.sel{opacity:1;color:var(--brand);background:var(--brand-soft);transform:scale(1.06)}
.stars{display:flex;gap:8px;justify-content:center;font-size:30px;margin:6px 0}
.star{color:#D2DEDD;opacity:.9;padding:2px}
.star.on{color:var(--brand);opacity:1}
textarea{width:100%;border:1.5px solid var(--line);border-radius:14px;padding:12px;font-family:inherit;font-size:14px;resize:none;min-height:74px}

/* profile rows */
.prow{display:flex;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid var(--line)}
.prow:last-child{border:none}
.prow .ic{width:40px;height:40px;border-radius:11px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:18px;flex:none}
.prow .t{flex:1}
.prow .t b{font-size:14px;display:block}
.prow .t span{font-size:12px;color:var(--muted);display:block;margin-top:1px}
.switch{width:48px;height:28px;border-radius:99px;background:#D7DEE7;position:relative;transition:.2s;flex:none}
.switch.on{background:var(--accent)}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.switch.on::after{left:23px}

.avatar{width:64px;height:64px;border-radius:50%;background:var(--brand);display:grid;place-items:center;color:#fff;font-size:26px;font-weight:800}

/* notifications inbox */
.notif{display:flex;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);background:#fff}
.notif.unread{background:var(--brand-soft)}
.notif .ic{width:38px;height:38px;border-radius:11px;background:var(--brand-soft);color:var(--accent-dark);display:grid;place-items:center;font-size:17px;flex:none}
.notif .t b{font-size:13.5px;display:block}
.notif .t span{font-size:12px;color:var(--muted)}
.notif .time{font-size:10.5px;color:var(--muted);margin-left:auto;white-space:nowrap}

/* ============================================================
   Andu help chat
   ============================================================ */
.chat-ava{position:relative;width:46px;height:46px;border-radius:50%;background:var(--brand);display:grid;place-items:center;flex:none}
.chat-ava .andu{height:27px}
.chat-q{position:absolute;bottom:-2px;right:-3px;width:19px;height:19px;border-radius:50%;background:#fff;color:var(--brand);font-size:12px;font-weight:800;display:grid;place-items:center;border:2px solid var(--brand)}

/* home banner */
.chat-banner{display:flex;align-items:center;gap:13px;text-align:left;width:auto}
.chat-bt{flex:1;min-width:0}
.chat-bt b{display:block;font-size:14.5px}
.chat-bt span{font-size:12px;color:var(--muted)}
.chat-go{color:var(--brand);font-size:20px;flex:none}

/* chat sheet */
.chat{display:flex;flex-direction:column;height:72vh;max-height:580px}
.chat-head{display:flex;align-items:center;gap:11px;padding:0 0 12px;border-bottom:1px solid var(--line)}
.chat-head b{font-size:15px;display:block;line-height:1.1}
.chat-status{font-size:12px;color:var(--good);display:flex;align-items:center;gap:5px;margin-top:2px}
.chat-status i{width:7px;height:7px;border-radius:50%;background:var(--good);display:inline-block}
.chat-x{color:var(--muted);font-size:20px;flex:none}
.chat-body{flex:1;overflow-y:auto;padding:14px 2px;display:flex;flex-direction:column;gap:9px}
.msg{max-width:82%;padding:10px 13px;border-radius:16px;font-size:13.5px;line-height:1.45;word-wrap:break-word}
.msg.bot{background:#EEF3F2;color:var(--ink);border-bottom-left-radius:5px;align-self:flex-start}
.msg.user{background:var(--brand);color:#fff;border-bottom-right-radius:5px;align-self:flex-end}
.msg.typing{display:flex;gap:4px;align-items:center}
.msg.typing span{width:6px;height:6px;border-radius:50%;background:var(--muted);opacity:.4;animation:typing 1s infinite}
.msg.typing span:nth-child(2){animation-delay:.18s}
.msg.typing span:nth-child(3){animation-delay:.36s}
@keyframes typing{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
.chat-quick{display:flex;gap:7px;flex-wrap:wrap;padding:8px 0 4px}
.chat-chip{font-size:12px;font-weight:600;color:var(--brand);background:var(--brand-soft);border-radius:999px;padding:8px 12px;text-align:left}
.chat-input{display:flex;align-items:center;gap:8px;padding-top:10px;border-top:1px solid var(--line)}
.chat-input input{flex:1;min-width:0;border:1.5px solid var(--line);border-radius:999px;padding:11px 16px;font-family:inherit;font-size:14px;outline:none}
.chat-input input:focus{border-color:var(--brand)}
.chat-send{width:44px;height:44px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;flex:none}

/* toast */
.toasts{position:absolute;top:14px;left:14px;right:14px;z-index:95;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{background:#173330;color:#fff;border-radius:14px;padding:12px 14px;box-shadow:var(--shadow-lg);display:flex;gap:10px;align-items:center;animation:drop .3s;font-size:13.5px}
.toast .ic{font-size:20px}
.toast.win{background:var(--brand)}

/* confetti */
.confetti{position:absolute;inset:0;z-index:90;pointer-events:none;overflow:hidden}
.confetti i{position:absolute;top:-12px;width:9px;height:14px;border-radius:2px;animation:fall linear forwards}

/* misc */
.empty{text-align:center;color:var(--muted);padding:40px 24px}
.empty .e{font-size:46px;margin-bottom:8px}
.pill-toggle{display:flex;gap:6px;background:#E3ECEB;border-radius:15px;padding:5px;margin:2px 16px 10px}
.pill-toggle button{flex:1;padding:13px 6px;border-radius:11px;font-weight:700;font-size:13.5px;color:var(--muted);
  display:flex;align-items:center;justify-content:center;gap:6px;transition:.15s}
.pill-toggle button .icon{font-size:16px}
.pill-toggle button.on{background:var(--brand);color:#fff;
  box-shadow:0 6px 14px rgba(61,183,176,.4)}
.pill-toggle.four{gap:4px}
.pill-toggle.four button{font-size:11.5px;padding:11px 2px;gap:4px;white-space:nowrap;min-width:0}
.pill-toggle.four button .icon{font-size:14px;flex:none}
.intensity{display:flex;gap:5px;align-items:center}
.intensity .dot{width:9px;height:9px;border-radius:50%;background:#D7DEE7}
.intensity .dot.on{background:var(--coral)}

/* ============================================================
   Icons (rounded outline, svgrepo/Lucide style) — teal via currentColor
   ============================================================ */
.icon{width:1em;height:1em;display:inline-block;vertical-align:-.125em;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.icon.fill{fill:currentColor;stroke:none}
.iconbtn .icon{font-size:20px}
.tab .ic .icon{font-size:22px}
.thumb .icon{font-size:30px}
.prow .ic .icon, .notif .ic .icon{font-size:19px}
.tag .icon{font-size:13px;stroke-width:2.2}
.btn .icon{font-size:16px}
.section-title .link .icon{font-size:13px}

/* AnduSmiles icon (recolored from the brand SVG via mask, keeps native aspect ratio) */
.andu{display:inline-block;aspect-ratio:117/226;height:1.15em;background:var(--brand);
  -webkit-mask:url("SVG/ANDUSMILE.svg") center/contain no-repeat;mask:url("SVG/ANDUSMILE.svg") center/contain no-repeat;vertical-align:-.22em}
.andu.white{background:#fff}
.hstat .andu,.gamebar .andu{height:24px}

/* ============================================================
   ANDUMEDIC Bluetooth device panel
   ============================================================ */
.dev-status{display:flex;align-items:center;gap:11px;background:#EEF2F1;border-radius:14px;padding:11px 13px;margin-bottom:10px}
.dev-status.on{background:var(--brand-soft)}
.dev-status .ds-ic{width:38px;height:38px;border-radius:11px;background:#fff;color:var(--muted);display:grid;place-items:center;font-size:18px;flex:none}
.dev-status.on .ds-ic{color:var(--brand)}
.ds-t{flex:1;min-width:0}
.ds-t b{display:block;font-size:14px}
.ds-t span{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}
.ds-t span .icon{font-size:13px}
.ds-dot{width:11px;height:11px;border-radius:50%;background:var(--good);flex:none;box-shadow:0 0 0 4px rgba(61,183,176,.22)}
.dev-note{font-size:12.5px;color:var(--muted);text-align:center;line-height:1.45;margin:6px 4px 12px}
.dev-grid{display:flex;flex-direction:column;background:#F7FAF9;border:1px solid var(--line);border-radius:14px;padding:2px 13px;margin-bottom:14px}
.dev-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);min-height:46px}
.dev-row:last-child{border-bottom:none}
.dev-row.col{flex-direction:column;align-items:stretch;gap:9px}
.dr-l{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--ink)}
.dr-l .icon{color:var(--brand)}
.dr-v{font-size:13px;font-weight:700;text-align:right;min-width:0}
.seg2{display:flex;gap:5px;background:#E3ECEB;border-radius:10px;padding:3px}
.seg2 button{padding:7px 13px;border-radius:8px;font-size:12.5px;font-weight:700;color:var(--muted)}
.seg2 button.on{background:var(--brand);color:#fff}
.seg2 button:disabled{opacity:.45}
.stepper{display:flex;align-items:center;gap:11px}
.stepper button{width:30px;height:30px;border-radius:9px;background:var(--brand-soft);color:var(--brand);font-size:18px;font-weight:800;display:grid;place-items:center}
.stepper b{font-size:16px;min-width:36px;text-align:center}
.stepper b small{font-size:11px;color:var(--muted);font-weight:600}
.ir-seg{display:flex;gap:6px}
.ir-seg button{flex:1;padding:8px 2px;border-radius:9px;background:#EEF2F1;color:var(--muted);font-size:12px;font-weight:700;border:1.5px solid transparent}
.ir-seg button.on{background:var(--amber-soft);color:var(--amber-ink);border-color:var(--amber)}
/* connection chip (lifestyle Home Therapy) */
.dev-chip{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:#EEF2F1;border:1px solid var(--line);border-radius:14px;padding:10px 12px}
.dev-chip.on{background:var(--brand-soft);border-color:var(--brand-soft)}
.dev-chip .dc-ic{width:36px;height:36px;border-radius:10px;background:#fff;color:var(--muted);display:grid;place-items:center;font-size:17px;flex:none}
.dev-chip.on .dc-ic{color:var(--brand)}
.dc-t{flex:1;min-width:0}
.dc-t b{display:block;font-size:13.5px}
.dc-t span{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}
.dc-go{color:var(--muted);font-size:18px;flex:none}
.dev-big-ic{width:64px;height:64px;border-radius:18px;background:#EEF2F1;color:var(--muted);display:grid;place-items:center;font-size:30px}
.dev-big-ic.on{background:var(--brand-soft);color:var(--brand)}

/* ============================================================
   Exercise timer
   ============================================================ */
.timer-wrap{display:flex;flex-direction:column;align-items:center;gap:12px;margin:8px 0 14px}
.bigring{--p:0;--c:var(--brand);width:168px;height:168px;border-radius:50%;display:grid;place-items:center;
  background:conic-gradient(var(--c) calc(var(--p)*1%), #E3ECEB 0)}
.bigring .inner{width:140px;height:140px;border-radius:50%;background:#fff;display:grid;place-items:center;text-align:center}
.bigring .t{font-size:38px;font-weight:800;letter-spacing:1px;font-variant-numeric:tabular-nums;line-height:1}
.bigring .s{font-size:11px;color:var(--muted);margin-top:4px}
.timer-hint{font-size:12.5px;color:var(--muted);text-align:center;display:flex;align-items:center;gap:6px;justify-content:center}
.timer-skip{font-size:12px;color:var(--muted);text-decoration:underline;text-underline-offset:2px;opacity:.75;padding:4px 8px;margin-top:2px}
.timer-skip:active{opacity:1}
.timer-ctrls{display:flex;gap:10px;width:100%}

/* ============================================================
   Streak calendar
   ============================================================ */
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.cal-head b{font-size:15px}
.cal-nav{display:flex;gap:6px}
.cal-nav button{width:32px;height:32px;border-radius:9px;background:#EDF2F1;color:var(--ink);display:grid;place-items:center}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.cal .h{font-size:10px;color:var(--muted);text-align:center;font-weight:700;padding-bottom:2px}
.cal .d{aspect-ratio:1;min-width:0;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:12px;position:relative;background:#EDF2F1;color:var(--muted);gap:2px}
.cal .d.empty{background:transparent}
.cal .d.part{background:var(--brand-soft);color:var(--accent-dark);font-weight:600}
.cal .d.done{background:var(--brand);color:#fff;font-weight:700}
.cal .d.full{background:var(--accent-dark);color:#fff;font-weight:700}
.cal .d.today{box-shadow:inset 0 0 0 2px var(--ink)}
.cal .d .mood{font-size:9px;line-height:1}
.cal .d.clickable{cursor:pointer}
.cal-legend{display:flex;gap:14px;justify-content:center;margin-top:12px;font-size:11px;color:var(--muted);flex-wrap:wrap}
.cal-legend i{width:11px;height:11px;border-radius:4px;display:inline-block;vertical-align:-1px;margin-right:4px}

/* ============================================================
   Body pain map (wizard)
   ============================================================ */
.bodymap-wrap{display:flex;flex-direction:column;align-items:center}
.bodytoggle{display:flex;background:rgba(255,255,255,.16);border-radius:11px;padding:4px;margin-bottom:6px}
.bodytoggle button{padding:7px 18px;border-radius:8px;font-weight:700;font-size:13px;color:#fff;opacity:.8}
.bodytoggle button.on{background:#fff;color:var(--accent-dark);opacity:1}
.bodymap svg{height:300px;width:auto;display:block}
.bodymap image{filter:brightness(0) invert(1)}
.body-silhouette{fill:rgba(255,255,255,.16);stroke:rgba(255,255,255,.45);stroke-width:1.5}
.hot{fill:rgba(255,255,255,.05);stroke:rgba(255,255,255,.55);stroke-width:1.5;cursor:pointer;transition:.12s}
.hot:hover{fill:rgba(255,255,255,.35)}
.hot.sel{fill:#fff;stroke:#fff}
.bodymap-legend{font-size:12px;opacity:.9;margin-top:4px;min-height:18px;text-align:center}

/* ============================================================
   Practice finder map
   ============================================================ */
.finder-map{height:280px;border-radius:16px;overflow:hidden;margin:6px 0 14px;border:1px solid var(--line);background:#dfeae8;position:relative;z-index:0}
.finder-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:8px;color:var(--muted);font-size:13px;text-align:center;padding:0 24px}
.finder-search{display:flex;align-items:center;gap:8px;background:#fff;border:1.5px solid var(--line);border-radius:14px;padding:6px 6px 6px 12px;margin-bottom:10px}
.finder-search .fs-ic{color:var(--brand);font-size:18px;display:grid;place-items:center;flex:none}
.finder-search input{flex:1;min-width:0;border:none;outline:none;font-family:inherit;font-size:14px;color:var(--ink);background:none;padding:6px 0}
.finder-search .btn{flex:none}
.finder-geo{margin:0 0 12px;gap:7px}
.finder-list{display:flex;flex-direction:column;gap:8px}
.finder-item.closest{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-soft)}
.fi-t .closest-badge, .map-pop .closest-badge{display:inline-block;margin-left:7px;font-size:10px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:#fff;background:var(--accent-dark);border-radius:7px;padding:3px 9px;vertical-align:2px;line-height:1.35;white-space:nowrap}
.hb-userpin{display:grid;place-items:center}
.hb-userdot{width:16px;height:16px;border-radius:50%;background:var(--blue);border:3px solid #fff;box-shadow:0 0 0 2px var(--blue);display:block}
.hb-userpin::before{content:"";position:absolute;width:16px;height:16px;border-radius:50%;background:var(--blue);opacity:.4;animation:pulse 1.8s ease-out infinite}
@keyframes pulse{0%{transform:scale(1);opacity:.4}100%{transform:scale(3);opacity:0}}
.finder-item{display:flex;align-items:center;gap:13px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:16px;padding:13px 14px;transition:.12s}
.finder-item:active{transform:scale(.99)}
.finder-pin{width:42px;height:42px;border-radius:12px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;flex:none;font-size:20px;align-self:flex-start}
.fi-t{flex:1;min-width:0}
.fi-t .fi-name{font-size:15px;font-weight:700;color:var(--ink);display:block;line-height:1.25}
.fi-t .fi-addr{font-size:12px;color:var(--muted);display:block;margin-top:3px;line-height:1.3}
.fi-t .fi-dist{font-size:12.5px;color:var(--brand);font-weight:700;display:block;margin-top:6px}
.fi-book{flex:none;align-self:center}
.hb-pin{filter:drop-shadow(0 2px 3px rgba(0,0,0,.35))}
.leaflet-popup-content-wrapper{border-radius:13px;box-shadow:var(--shadow-lg)}
.leaflet-popup-content{margin:12px 14px}
.map-pop{display:flex;flex-direction:column;gap:2px;font-family:inherit}
.map-pop b{font-size:14px;color:var(--ink)}
.map-pop span{font-size:12px;color:var(--muted)}
.map-pop .btn{margin-top:8px}
.leaflet-container{font-family:inherit}

/* Partner contact page */
.sheet-back{color:var(--brand);font-weight:700;display:inline-flex;align-items:center;gap:2px;font-size:13.5px;margin:2px 0 10px}
.contact-head{display:flex;align-items:center;gap:13px;margin-bottom:12px}
.contact-pin{width:48px;height:48px;border-radius:14px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:22px;flex:none}
.contact-head h2{margin:0 0 2px;font-size:19px}
.contact-note{display:flex;gap:9px;align-items:flex-start;background:var(--brand-soft);border-radius:14px;padding:12px 13px;font-size:12.5px;color:var(--accent-dark);margin-bottom:14px;line-height:1.45}
.contact-note .icon{flex:none;font-size:18px;margin-top:1px}
.contact-row{display:flex;align-items:center;gap:13px;padding:14px;border:1px solid var(--line);border-radius:14px;margin-bottom:9px;text-decoration:none;color:var(--ink);transition:.12s}
.contact-row:active{transform:scale(.99)}
.cr-ic{width:42px;height:42px;border-radius:12px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:19px;flex:none}
.cr-t{flex:1;min-width:0}
.cr-t b{display:block;font-size:14px}
.cr-t span{font-size:12.5px;color:var(--muted);word-break:break-word}
.cr-go{color:var(--muted);font-size:18px;flex:none}

@keyframes up{from{transform:translateY(100%)}to{transform:translateY(0)}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes drop{from{transform:translateY(-16px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes fall{to{transform:translateY(900px) rotate(720deg);opacity:.9}}
@keyframes pop{0%{transform:scale(.6)}60%{transform:scale(1.12)}100%{transform:scale(1)}}
.pop{animation:pop .35s}

/* ============================================================
   AnduSmiles — levels & rewards
   ============================================================ */
/* tappable hero stat + gamebar pts button reset */
.hstat.tap,.gamebar .g.pts{border:none;font:inherit;text-align:left;cursor:pointer;width:100%}
.hstat.tap{display:block}
.hstat .l .dc-go,.gamebar .g .l .dc-go{font-size:13px;opacity:.8;vertical-align:-.18em;color:currentColor}

/* level card (Profile) */
.level-card{display:flex;flex-direction:column;gap:11px}
.lvl-top{display:flex;align-items:center;gap:12px}
.lvl-ic{width:48px;height:48px;border-radius:14px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:24px;flex:none}
.lvl-name{font-size:17px;font-weight:800;color:var(--ink)}
.lvl-bar{height:9px;border-radius:99px;background:#EDF2F1;overflow:hidden}
.lvl-bar>span{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--brand),var(--brand-dark));transition:width .5s}
.lvl-bar.light{background:rgba(255,255,255,.28)}
.lvl-bar.light>span{background:#fff}
.lvl-foot{font-size:12.5px}

/* achievements entry row (Profile) */
.rewards-entry{display:flex;align-items:center;gap:12px;width:calc(100% - 32px);text-align:left;cursor:pointer}
.re-ic{width:44px;height:44px;border-radius:13px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:22px;flex:none}
.re-t{flex:1;min-width:0}
.re-t b{display:block;font-size:14.5px;color:var(--ink)}
.re-t span{font-size:12px;color:var(--muted)}
.re-go{color:var(--muted);font-size:19px;flex:none}

/* achievements screen hero */
.reward-hero{background:linear-gradient(150deg,var(--brand),var(--brand-deep));color:#fff;text-align:center;border:none;padding:22px 16px 18px}
.rh-lvl-ic{width:62px;height:62px;border-radius:20px;background:rgba(255,255,255,.18);display:grid;place-items:center;font-size:32px;margin:0 auto 8px}
.rh-n{font-size:25px;font-weight:800;line-height:1}
.rh-bal{display:flex;align-items:center;justify-content:center;gap:6px;font-size:13px;font-weight:600;opacity:.95;margin:5px 0 13px}
.rh-bal .andu{height:18px}
.rh-next{font-size:11.5px;opacity:.9;margin-top:7px}

/* level ladder */
.lvl-row{display:flex;align-items:center;gap:13px;padding:11px 16px}
.lvl-row+.lvl-row{border-top:1px solid var(--line)}
.lvl-row-ic{width:42px;height:42px;border-radius:12px;background:#EDF2F1;color:var(--muted);display:grid;place-items:center;font-size:21px;flex:none;filter:grayscale(1);opacity:.55}
.lvl-row.done .lvl-row-ic{filter:none;opacity:1;background:var(--brand-soft);color:var(--brand)}
.lvl-row.cur{background:var(--brand-soft)}
.lvl-row.cur .lvl-row-ic{background:var(--brand);color:#fff;box-shadow:0 4px 12px rgba(61,183,176,.35)}
.lvl-row-t{flex:1;min-width:0}
.lvl-row-t b{display:flex;align-items:center;gap:7px;font-size:14.5px;color:var(--ink)}
.lvl-row-t span{display:block;font-size:11.5px;color:var(--muted);margin-top:1px}
.lvl-tag{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#fff;background:var(--brand);padding:2px 7px;border-radius:99px}
.lvl-row-r{flex:none}
.lvl-chk{color:var(--brand);font-size:22px}
.lvl-min{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;font-weight:700;color:var(--muted)}
.lvl-min .andu{height:14px;opacity:.6}

/* AnduSmiles reward tags on activities */
.tag.smile-tag{background:var(--brand-soft);color:var(--brand);font-weight:800}
.tag.smile-tag .andu{height:13px;vertical-align:-.13em;margin-right:1px}
.earn-line{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--muted);background:var(--brand-soft);border-radius:11px;padding:9px 12px;margin:2px 0 10px}
.earn-line .andu{height:17px}
.earn-line b{color:var(--brand)}
.li-t .li-smiles{display:inline-flex;align-items:center;gap:4px;width:fit-content;font-size:11px;font-weight:700;color:var(--brand);margin-top:3px;white-space:nowrap}
.li-smiles .andu{height:12px}

/* Perfect-day celebration sheet */
.perfect-day{text-align:center;padding:4px 2px 0}
.pd-burst{position:relative;width:104px;height:104px;margin:6px auto 6px;display:grid;place-items:center}
.pd-burst .andu{height:58px;position:relative;z-index:1;animation:pop .5s}
.pd-rays{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,var(--brand-soft) 35%,transparent 70%);animation:pdpulse 1.7s ease-in-out infinite}
.pd-rays::before{content:"";position:absolute;inset:-10px;border-radius:50%;background:repeating-conic-gradient(var(--brand-soft) 0deg 12deg,transparent 12deg 24deg);-webkit-mask:radial-gradient(circle,transparent 46px,#000 47px,#000 53px,transparent 54px);mask:radial-gradient(circle,transparent 46px,#000 47px,#000 53px,transparent 54px);opacity:.7;animation:pdspin 9s linear infinite}
.perfect-day h2{font-size:24px;margin:2px 0 4px}
.pd-sub{color:var(--muted);font-size:13.5px;margin:0 12px 15px;line-height:1.45}
.pd-stats{display:flex;gap:12px;margin:0 2px 14px}
.pd-stat{flex:1;background:#F4F8F7;border-radius:15px;padding:14px 8px;display:flex;flex-direction:column;gap:4px;align-items:center}
.pd-stat.bonus{background:var(--brand-soft)}
.pd-n{font-size:19px;font-weight:800;color:var(--ink);display:inline-flex;align-items:center;gap:5px;line-height:1}
.pd-stat.bonus .pd-n{color:var(--brand)}
.pd-n .andu{height:18px}
.pd-n .icon{color:var(--amber);font-size:19px}
.pd-l{font-size:11px;color:var(--muted)}
.pd-note{font-size:12px;color:var(--muted);margin:0 10px 13px;line-height:1.45}
@keyframes pdpulse{0%,100%{transform:scale(1);opacity:.85}50%{transform:scale(1.1);opacity:1}}
@keyframes pdspin{to{transform:rotate(360deg)}}

/* streak achievement badges */
.badges.streaks{grid-template-columns:repeat(4,1fr);gap:12px 10px}
.badge .b{position:relative}
.strk-d{position:absolute;inset:0;display:grid;place-items:center;font-size:14px;font-weight:800;color:var(--brand)}
.badge:not(.on) .strk-d{color:var(--muted)}
.badges.streaks .badge.on .b .icon{color:var(--gold)}

/* ============================================================
   Plan tab — day navigator, task list, schedule editor
   ============================================================ */
.day-nav{display:flex;align-items:center;gap:10px;margin:2px 16px 12px}
.dn-arrow{width:42px;height:42px;border-radius:12px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:20px;flex:none}
.dn-c{flex:1;text-align:center}
.dn-c b{display:block;font-size:16px;color:var(--ink)}
.dn-c span{font-size:12px;color:var(--muted)}
.dn-today-btn{display:flex;align-items:center;justify-content:center;gap:6px;width:calc(100% - 32px);margin:-4px 16px 12px;padding:9px;border-radius:11px;background:var(--brand-soft);color:var(--brand);font-weight:700;font-size:13px}
.dn-today-btn .icon{font-size:15px}

.day-progress{display:flex;align-items:center;gap:13px;margin:0 16px 14px;background:var(--card);border:1px solid rgba(230,236,243,.7);border-radius:16px;box-shadow:var(--shadow);padding:13px 15px}
.dp-t{flex:1;min-width:0}
.dp-t b{display:block;font-size:14.5px;color:var(--ink)}
.dp-t span{font-size:12px;color:var(--muted)}

.plan-card.is-skip{opacity:.7}
.plan-card.is-skip .task h3,.plan-card.is-done .task h3{text-decoration:none}
.plan-sched-row{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;margin:0 0 11px;padding:9px 12px;border-radius:11px;background:#F4F8F7;text-align:left}
.psr-days{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--ink)}
.psr-days .icon{color:var(--brand);font-size:15px}
.psr-edit{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:var(--brand);flex:none}
.psr-edit .icon{font-size:13px}
.plan-card.rx .psr-days .icon,.plan-card.rx .psr-edit{color:var(--presc)}
.plan-future{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--muted)}
.plan-future .icon{font-size:15px}

/* schedule editor sheet */
.sched-every{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:13px;border-radius:13px;border:1.5px solid var(--line);font-weight:700;font-size:14px;color:var(--ink)}
.sched-every.on{background:var(--brand);color:#fff;border-color:var(--brand);box-shadow:0 6px 14px rgba(61,183,176,.35)}
.sched-every .icon{font-size:18px}
.sched-or{text-align:center;font-size:12px;color:var(--muted);margin:11px 0}
.sched-days{display:flex;gap:7px}
.sched-day{flex:1;aspect-ratio:1;border-radius:12px;background:#EEF3F2;color:var(--muted);font-weight:700;font-size:14px;border:1.5px solid transparent}
.sched-day.on{background:var(--brand-soft);color:var(--brand);border-color:var(--brand)}
.sched-lock{display:flex;gap:9px;font-size:13px;background:var(--presc-soft);color:var(--presc);border-radius:12px;padding:13px;line-height:1.45}
.sched-lock .icon{flex:none;margin-top:1px}

/* Lifestyle catalog — level filter + equipment/level chips */
.level-seg{display:flex;gap:6px;margin:2px 16px 6px;background:#EEF3F2;padding:4px;border-radius:12px}
.level-seg button{flex:1;padding:7px 4px;border-radius:9px;font-size:11.5px;font-weight:700;color:var(--muted);background:none}
.level-seg button.on{background:#fff;color:var(--brand);box-shadow:0 1px 4px rgba(20,45,75,.12)}
.li-t .li-meta{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px;width:fit-content;max-width:100%}
.li-meta .li-tagm{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:99px;background:#EDF2F1;color:var(--muted);white-space:nowrap}
.li-meta .li-tagm .icon{font-size:11px}
.li-meta .li-loc2{color:var(--brand);background:var(--brand-soft)}
.li-meta .lvl-Beginner{background:var(--brand-soft);color:var(--brand-deep)}
.li-meta .lvl-Intermediate{background:var(--gold-soft);color:#9A6A16}
.li-meta .lvl-Advanced{background:var(--coral-soft);color:var(--coral-ink)}

/* physiotherapy exercises — view-only for patients */
.li-add.physio-lock{background:var(--presc-soft);color:var(--presc);cursor:default;border:none}
.li-add.physio-lock .icon{font-size:14px}

/* Settings page */
.set-row{padding:12px 16px}
.set-row+.set-row{border-top:1px solid var(--line)}
.set-l{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--ink);margin-bottom:10px}
.set-l .icon{color:var(--brand);font-size:17px}
.set-seg{margin:0}
.prow.prow-btn{width:100%;text-align:left;background:none;border:none;font:inherit;cursor:pointer}

/* collapsible section header (Profile health profile) */
.section-title.sec-toggle{width:calc(100% - 32px);cursor:pointer;background:none}
.sec-chev{color:var(--muted);font-size:20px;transition:transform .2s}
.sec-chev.open{transform:rotate(90deg)}
.section-title .sec-meta{margin-left:auto;margin-right:8px;font-size:12px;color:var(--muted);font-weight:600}

/* language picker (wrapping chips) */
.lang-seg{display:flex;flex-wrap:wrap;gap:6px}
.lang-seg button{padding:8px 13px;border-radius:10px;background:#EEF3F2;color:var(--muted);font-size:12.5px;font-weight:700}
.lang-seg button.on{background:var(--brand);color:#fff}
