/* Tai Chi members' app — mobile-first, senior-friendly. */
:root{
  --bg:#f7f3ee; --card:#fff; --ink:#2a2319; --ink-soft:#4a3f34; --muted:#9a8f84;
  --primary:#bf7350; --primary-dark:#a85f42; --primary-soft:#f7ede8; --accent:#c4806a;
  --line:#e8e0d5; --sage:#6f9e7a; --gold:#c8944f;
  --grad:linear-gradient(135deg,#bf7350,#c4806a);
  --band-a:#f4ede5; --band-b:#eef2ee; --interim-a:#f6efe6; --interim-b:#efe5d7;
  --track:#ece3d8; --surf:#f4efe8;
  --feature-bg:#644220; --feature-border:#7a5833; --feature-hover:#74502a;
  --primary-fade:rgba(191,115,80,.14);
  --radius:16px; --shadow:0 8px 30px oklch(40% 0.03 55 / 0.10); --sidebar:240px;
  --serif:'Playfair Display',Georgia,'Times New Roman',serif;
  --sans:'DM Sans',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
}
:root[data-theme="green"]{
  --bg:#eef3ea; --ink:#1f2a24; --ink-soft:#3c4a40; --muted:#8a9585;
  --primary:#4f9d63; --primary-dark:#377a49; --primary-soft:#e6f1e6; --accent:#6f9e7a;
  --line:#dde7dc; --sage:#5f9e78; --gold:#9aa84f;
  --grad:linear-gradient(135deg,#4f9d63,#6bb37e);
  --band-a:#e9f2e6; --band-b:#e4efe0; --interim-a:#eef4ea; --interim-b:#e4efdd;
  --track:#dce8db; --surf:#eaf1e6;
  --feature-bg:#244a30; --feature-border:#356043; --feature-hover:#2c5a3a;
  --primary-fade:rgba(79,157,99,.16);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--sans);
  background:var(--bg);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased;font-size:17px}
img{max-width:100%;display:block}
button{font-family:inherit}
a{color:inherit}

/* ===== Layout ===== */
.layout{min-height:100vh}
.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar);background:#fff;border-right:1px solid var(--line);
  padding:18px 12px;display:flex;flex-direction:column;gap:4px;z-index:30}
.sidebar .brand{font-family:var(--serif);font-weight:600;color:var(--ink);font-size:22px;letter-spacing:.01em;padding:10px 12px 18px;display:flex;align-items:center;gap:9px;white-space:nowrap}
.nav a{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;color:var(--ink);
  text-decoration:none;font-weight:600;font-size:16px}
.nav a .ic{font-size:18px;width:22px;text-align:center}
.nav a:hover{background:var(--bg)}
.nav a.active{background:var(--primary-soft);color:var(--primary-dark)}
.sidebar .account{margin-top:auto;border-top:1px solid var(--line);padding-top:12px;font-size:13px;color:var(--muted);display:flex;align-items:center;gap:8px}
.sidebar .account .av{width:28px;height:28px;border-radius:50%;background:var(--primary-soft);display:grid;place-items:center;font-weight:700;color:var(--primary-dark);flex:none}

.main{margin-left:var(--sidebar);padding:28px 32px 60px;max-width:1100px}
.bottomnav{display:none}

/* ===== Shared ===== */
h1.page{font-family:var(--serif);font-size:29px;font-weight:600;letter-spacing:-.5px;margin:0 0 4px}
.page-sub{color:var(--muted);margin:0 0 20px}
.section-title{display:flex;align-items:center;justify-content:space-between;margin:26px 0 12px}
.section-title h2{font-size:19px;margin:0}
.section-title a{font-size:14px;color:var(--primary-dark);font-weight:600;text-decoration:none;cursor:pointer}
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}
.btn{display:inline-block;border:none;border-radius:14px;background:var(--grad);color:#fff;font-size:16px;font-weight:500;letter-spacing:.2px;
  padding:13px 22px;cursor:pointer;box-shadow:0 6px 16px rgba(74,138,94,.3)}
.btn:hover{filter:brightness(1.05)}
.btn.block{display:block;width:100%;text-align:center}
.btn.ghost{background:#fff;color:var(--primary-dark);border:2px solid var(--primary);box-shadow:none}
.badge{font-size:11px;font-weight:700;padding:3px 9px;border-radius:20px;text-transform:uppercase;letter-spacing:.5px}
.badge.beg{background:#e7f3ea;color:#3f7a52}.badge.int{background:#fdeccf;color:#9a6b16}.badge.adv{background:#fbe0e0;color:#b23b3b}

/* greeting */
.greet{background:linear-gradient(120deg,var(--primary-soft),var(--surf));border-radius:var(--radius);padding:22px 24px;margin-bottom:18px}
.greet .day{font-size:12px;letter-spacing:1px;color:var(--muted);text-transform:uppercase;font-weight:700}
.greet h2{font-family:var(--serif);font-weight:600;font-size:28px;letter-spacing:-.5px;margin:4px 0 2px}
.greet p{margin:0;color:var(--muted)}

/* grid of dashboard widgets */
.widgets{display:grid;grid-template-columns:2fr 1fr;gap:16px}
.widgets .col{display:flex;flex-direction:column;gap:16px}

/* hero video card */
.hero-card{position:relative;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);min-height:240px;display:flex;align-items:flex-end;color:#fff}
.hero-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-card .veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.05),rgba(0,0,0,.55))}
.hero-card .meta{position:relative;padding:18px 20px;width:100%}
.hero-card .pills{display:flex;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.hero-card .pills span{background:rgba(255,255,255,.9);color:var(--ink);font-size:12px;font-weight:700;padding:4px 10px;border-radius:20px}
.hero-card .title{font-size:22px;font-weight:800}
.hero-card .play{position:absolute;right:18px;bottom:18px;width:52px;height:52px;border-radius:50%;background:var(--primary);color:#fff;border:none;font-size:22px;cursor:pointer;display:grid;place-items:center;box-shadow:0 6px 16px rgba(0,0,0,.3)}

/* tasks */
.task{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);cursor:pointer}
.task:last-child{border-bottom:none}
.task .box{width:22px;height:22px;border-radius:50%;border:2px solid var(--line);flex:none;display:grid;place-items:center;color:#fff;font-size:12px}
.task.done .box{background:var(--primary);border-color:var(--primary)}
.task.done .lab{color:var(--muted);text-decoration:line-through}

/* mini trackers */
.mini{display:flex;align-items:center;justify-content:space-between}
.mini .v{font-size:24px;font-weight:800}
.mini .v small{font-size:13px;color:var(--muted);font-weight:600}

/* workout cards */
.filters{display:flex;gap:8px;overflow-x:auto;padding:4px 0 10px;-webkit-overflow-scrolling:touch}
.filters button{border:1.5px solid var(--line);background:#fff;border-radius:20px;padding:8px 16px;font-weight:600;
  white-space:nowrap;cursor:pointer;font-size:14px;color:var(--ink)}
.filters button.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.row-scroll{display:grid;grid-auto-flow:column;grid-auto-columns:240px;gap:14px;overflow-x:auto;padding-bottom:8px;-webkit-overflow-scrolling:touch}
.wcard{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;cursor:pointer;position:relative}
.wcard .thumb{position:relative;aspect-ratio:3/2;background:var(--line)}
.wcard .thumb img{width:100%;height:100%;object-fit:cover}
.wcard .thumb .b{position:absolute;top:10px;left:10px}
.wcard .thumb .fav{position:absolute;top:8px;right:10px;font-size:20px;background:none;border:none;cursor:pointer;filter:drop-shadow(0 1px 2px rgba(0,0,0,.4))}
.wcard .thumb .lock{position:absolute;inset:0;background:rgba(20,25,22,.55);color:#fff;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:6px;text-align:center;padding:14px;font-size:13px;font-weight:600}
.wcard .body{padding:12px 14px}
.wcard .body .t{font-weight:700}
.wcard .body .m{font-size:13px;color:var(--muted);margin-top:3px}
.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}

/* tabs */
.tabs{display:flex;gap:6px;background:var(--line);border-radius:12px;padding:4px;width:max-content;margin-bottom:18px;max-width:100%;overflow:auto}
.tabs button{border:none;background:none;padding:9px 18px;border-radius:9px;font-weight:700;color:var(--muted);cursor:pointer;white-space:nowrap}
.tabs button.on{background:#fff;color:var(--ink);box-shadow:var(--shadow)}

/* plan list */
.plan-prog{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;font-weight:700}
.pbar{height:8px;background:var(--line);border-radius:6px;overflow:hidden;margin-bottom:18px}
.pbar>i{display:block;height:100%;background:var(--primary);transition:width .3s}
.plan-item{display:flex;align-items:center;gap:14px;background:var(--card);border-radius:14px;box-shadow:var(--shadow);padding:12px;margin-bottom:10px}
.plan-item img{width:64px;height:48px;border-radius:8px;object-fit:cover;flex:none}
.plan-item .pt{flex:1}.plan-item .pt .n{font-weight:700}.plan-item .pt .s{font-size:13px;color:var(--muted)}
.plan-item .chk{width:26px;height:26px;border-radius:50%;border:2px solid var(--line);background:none;cursor:pointer;color:#fff;flex:none}
.plan-item .chk.on{background:var(--primary);border-color:var(--primary)}

/* tracking */
.track-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.track-tile{display:flex;align-items:center;gap:14px;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;cursor:pointer}
.track-tile .ic{width:42px;height:42px;border-radius:12px;background:var(--primary-soft);display:grid;place-items:center;font-size:20px;flex:none}
.track-tile .tt{flex:1}.track-tile .tt .l{font-weight:700}.track-tile .tt .v{font-size:13px;color:var(--muted)}
.logger input{width:100%;border:2px solid var(--line);border-radius:12px;padding:14px;font-size:18px;outline:none}
.logger input:focus{border-color:var(--primary)}
.moodrow{display:flex;gap:10px;justify-content:space-between;margin:10px 0}
.moodrow button{flex:1;border:2px solid var(--line);background:#fff;border-radius:12px;padding:12px 0;font-size:24px;cursor:pointer}
.moodrow button.on{border-color:var(--primary);background:var(--primary-soft)}
.hist{margin-top:18px}
.hist .h{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line);font-size:15px}

/* video placeholder */
.player{position:relative;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);aspect-ratio:16/9;background:#000;margin-bottom:16px}
.player img{width:100%;height:100%;object-fit:cover;opacity:.6}
.player .ov{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;gap:8px;text-align:center;padding:18px}
.player .ov .pbtn{width:64px;height:64px;border-radius:50%;background:rgba(255,255,255,.9);color:var(--primary-dark);display:grid;place-items:center;font-size:28px}
.player .ov .note{font-size:13px;opacity:.9;background:rgba(0,0,0,.4);padding:5px 12px;border-radius:20px}

/* soon / gate */
.soon,.gate{text-align:center;padding:60px 22px;color:var(--muted)}
.soon .big,.gate .big{font-size:54px;margin-bottom:12px}
.backlink{display:inline-flex;gap:6px;align-items:center;color:var(--primary-dark);font-weight:700;cursor:pointer;margin-bottom:14px;background:none;border:none;font-size:15px}

/* ===== Mobile ===== */
@media (max-width:768px){
  .sidebar{display:none}
  .main{margin-left:0;padding:18px 16px 90px;max-width:none}
  .widgets{grid-template-columns:1fr}
  .track-grid{grid-template-columns:1fr 1fr}
  h1.page{font-size:24px}
  .greet h2{font-size:22px}
  .bottomnav{display:flex;position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);
    z-index:40;padding:6px 4px env(safe-area-inset-bottom)}
  .bottomnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 2px;color:var(--muted);
    text-decoration:none;font-size:11px;font-weight:600}
  .bottomnav a .ic{font-size:20px}
  .bottomnav a.active{color:var(--primary-dark)}
}
@media (max-width:380px){ .track-grid{grid-template-columns:1fr} }

/* Adaptive Settings entry on Home — only on mobile, where the sidebar (and its
   profile access) is hidden. Desktop reaches Profile via the sidebar avatar. */
.home-settings{display:none}
@media (max-width:768px){
  .home-settings{display:flex;align-items:center;gap:14px;margin-top:16px;background:var(--card);
    border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);
    padding:16px 18px;text-decoration:none;color:var(--ink)}
  .home-settings .hs-ic{font-size:22px;width:40px;height:40px;border-radius:12px;background:var(--primary-soft);
    display:grid;place-items:center;flex:none}
  .home-settings .hs-txt{flex:1;display:flex;flex-direction:column;line-height:1.3}
  .home-settings .hs-txt b{font-weight:700;font-size:16px}
  .home-settings .hs-txt small{color:var(--muted);font-size:13px}
  .home-settings .hs-ch{color:var(--muted);font-size:24px;font-weight:700}
}

/* Toggle switch (Profile → Mint palette) */
.row-toggle{display:flex;align-items:center;justify-content:space-between;gap:16px}
.tgl{width:52px;height:30px;border-radius:20px;border:none;background:var(--line);position:relative;
  cursor:pointer;flex:none;transition:background .2s;padding:0}
.tgl.on{background:var(--primary)}
.tgl .knob{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;
  transition:left .2s;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.tgl.on .knob{left:25px}

/* ===== Profile / settings ===== */
.prof-id{display:flex;align-items:center;gap:14px;margin-top:6px}
.prof-av{width:52px;height:52px;border-radius:50%;background:var(--primary-soft);color:var(--primary-dark);display:grid;place-items:center;font-weight:800;font-size:22px;flex:none}
.prof-name{font-weight:800;font-size:18px}
.sec-label{font-size:12px;letter-spacing:1px;color:var(--muted);font-weight:700;margin-bottom:10px}
.fl{display:block;font-size:13px;font-weight:700;color:var(--muted);margin:12px 0 6px}
.tin{width:100%;border:2px solid var(--line);border-radius:12px;padding:13px;font-size:16px;outline:none;background:#fff}
.tin:focus{border-color:var(--primary)}
.tin:disabled{background:var(--bg);color:var(--muted)}
.seg{display:flex;background:var(--bg);border-radius:12px;padding:4px;gap:4px}
.seg button{flex:1;border:none;background:none;padding:11px;border-radius:9px;font-weight:700;color:var(--muted);cursor:pointer}
.seg button.on{background:var(--primary);color:#fff}
.listcard{padding:6px 0}
.lrow{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;text-decoration:none;color:var(--ink);font-weight:600;border-bottom:1px solid var(--line)}
.lrow:last-child{border-bottom:none}
.lrow .chev{color:var(--muted)}
.lrow:hover{background:var(--bg)}
.logout{background:none;border:none;color:var(--accent);font-weight:700;font-size:16px;cursor:pointer;padding:10px}
.pill-on{background:#e7f3ea;color:#3f7a52;font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px;margin-left:6px}
.pill-off{background:#fbe0e0;color:#b23b3b;font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px;margin-left:6px}
.subbox{background:var(--primary-soft);border-radius:12px;padding:16px}
.subbox.warn{background:#fff5f5}
.steps-list{list-style:none;margin:8px 0 0;padding:0}
.steps-list li{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--line);font-weight:600}
.steps-list li:last-child{border-bottom:none}
.steps-list .sn{width:26px;height:26px;border-radius:50%;background:var(--primary-soft);color:var(--primary-dark);display:grid;place-items:center;font-weight:700;flex:none}

/* ===== Academy ===== */
.lesson{cursor:pointer}
.lesson.locked{opacity:.55;cursor:default}
.lnum{width:30px;height:30px;border-radius:50%;background:var(--primary-soft);color:var(--primary-dark);display:grid;place-items:center;font-weight:700;flex:none;margin-right:12px}
.lnum.done{background:var(--primary);color:#fff}
.ltext{flex:1}.ltext .lt{font-weight:700;display:block}.ltext .ls{font-size:13px;color:var(--muted)}
.article p{color:var(--ink-soft);margin:0 0 14px;line-height:1.6}
.article p:first-child{font-size:18px}

/* ===== Challenges ===== */
.daygrid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.daycell{aspect-ratio:1;border:none;border-radius:12px;background:var(--primary-soft);color:var(--ink);font-weight:700;font-size:15px;cursor:pointer}
.daycell.preview{cursor:default;color:var(--muted)}
.daycell.done{background:var(--primary);color:#fff}
.cta-fixed{position:sticky;bottom:0;background:linear-gradient(180deg,rgba(244,247,241,0),var(--bg) 45%);padding:16px 0 4px;margin-top:18px}
@media (max-width:480px){ .daygrid{grid-template-columns:repeat(5,1fr)} }

/* ===== Meals ===== */
.meal-row{display:flex;align-items:center;gap:14px;background:var(--card);border-radius:14px;box-shadow:var(--shadow);padding:12px;margin-bottom:10px;cursor:pointer}
.meal-row img{width:74px;height:58px;border-radius:8px;object-fit:cover;flex:none}
.meal-row .mt{flex:1}.meal-row .mt .n{font-weight:700;margin-top:3px}.meal-row .mt .s{font-size:13px;color:var(--muted)}
.meal-row .chk{width:28px;height:28px;border-radius:50%;border:2px solid var(--line);background:none;cursor:pointer;color:#fff;flex:none}
.meal-row .chk.on{background:var(--primary);border-color:var(--primary)}
.macros{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:6px}
.macros>div{background:var(--primary-soft);border-radius:12px;padding:14px;text-align:center}
.macros b{display:block;font-size:18px}.macros span{font-size:12px;color:var(--muted)}
.ing-list{margin:0;padding-left:18px}.ing-list li{padding:6px 0;color:var(--ink-soft)}
.favico{margin-left:auto;background:#fff;border:2px solid var(--line);border-radius:50%;width:40px;height:40px;font-size:18px;cursor:pointer;color:var(--primary-dark)}

/* Meals library filter + search */
.meal-tools{display:flex;flex-direction:column;gap:10px;margin:4px 0 14px}
.meal-search{width:100%;padding:12px 14px;border:1px solid var(--line,var(--surf));border-radius:12px;font-size:15px;background:#fff;outline:none}
.meal-search:focus{border-color:var(--primary,var(--primary))}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chips .chip{border:1px solid var(--line,var(--surf));background:#fff;color:var(--ink,var(--ink));border-radius:20px;padding:7px 14px;font-size:14px;font-weight:600;cursor:pointer}
.chips .chip.on{background:var(--primary,var(--primary));border-color:var(--primary,var(--primary));color:#fff}
.meal-count{color:var(--muted,#6b7a70);font-size:13px;margin:0 0 8px}

/* Brand logo (sidebar + sign-in) */
.sidebar .brand .logo{height:28px;width:auto;display:block}
.gate-logo{height:44px;width:auto;margin:0 auto 14px;display:block}

/* Free PDF download card (Home) */
.pdfcard{display:flex;align-items:center;gap:14px;background:var(--feature-bg);color:#fff;border-radius:16px;padding:16px 18px;margin:14px 0;text-decoration:none;box-shadow:var(--shadow);border:1px solid var(--feature-border)}
.pdfcard .pc-ic{width:44px;height:44px;flex:none;border-radius:12px;background:var(--primary,var(--primary));display:grid;place-items:center;font-size:22px}
.pdfcard .pc-txt{flex:1;display:flex;flex-direction:column;line-height:1.25}
.pdfcard .pc-t{font-weight:800;font-size:15px}
.pdfcard .pc-s{font-size:13px;color:var(--line)}
.pdfcard .pc-dl{width:38px;height:38px;flex:none;border-radius:10px;background:rgba(255,255,255,.10);display:grid;place-items:center;font-size:18px}
.pdfcard:hover{background:var(--feature-hover)}

/* Today's meal cards — Done / Change / Skip */
.meal-card{background:var(--card);border-radius:14px;box-shadow:var(--shadow);overflow:hidden;margin-bottom:12px}
.meal-card .mc-top{display:flex;align-items:center;gap:14px;padding:12px;cursor:pointer}
.meal-card .mc-top img{width:96px;height:76px;border-radius:10px;object-fit:cover;flex:none}
.meal-card .mc-body{flex:1}
.meal-card .mc-body .n{font-weight:700;margin-top:4px}
.meal-card .mc-body .s{font-size:13px;color:var(--muted);margin-top:2px}
.mc-actions{display:flex;border-top:1px solid var(--line)}
.mc-actions button{flex:1;border:none;background:none;padding:12px 8px;font-size:14px;font-weight:600;color:var(--primary-dark,var(--primary-dark));cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.mc-actions button+button{border-left:1px solid var(--line)}
.mc-actions button:hover{background:var(--primary-soft,var(--primary-soft))}
.mc-state{padding:12px;text-align:center;font-weight:700;font-size:14px;border-top:1px solid var(--line);cursor:pointer}
.mc-state.done{background:var(--primary-soft,var(--primary-soft));color:var(--primary-dark,var(--primary-dark))}
.mc-state.skip{background:var(--surf);color:var(--muted,#6b7a70)}
.mc-desc{font-size:13px;color:var(--muted);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.recipe-desc{font-size:15px;color:var(--ink-soft);margin:14px 2px 4px;line-height:1.45}

/* Recipe detail — two-column hero (image left, info right) */
.recipe-hero{display:flex;gap:18px;background:var(--card);border-radius:16px;box-shadow:var(--shadow);padding:14px;margin:6px 0 4px;align-items:stretch}
.rh-img{flex:0 0 40%;max-width:340px}
.rh-img img{width:100%;height:100%;min-height:220px;max-height:340px;object-fit:cover;border-radius:12px;display:block}
.rh-info{flex:1;min-width:0;display:flex;flex-direction:column}
.rh-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.rh-top .favico{margin:0;width:40px;height:40px;flex:none}
.rh-title{font-size:25px;font-weight:800;line-height:1.15;margin:10px 0 8px}
.rh-meta{color:var(--muted);font-size:14px;padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid var(--line)}
.rh-macros{margin:0}
.rh-macros>div{padding:12px 8px}
/* Done / Skip on the recipe page */
.ra-actions{display:flex;gap:10px;margin-top:14px}
.ra-done{flex:1;background:var(--primary);color:#fff;border:none;border-radius:12px;padding:14px;font-size:15px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.ra-done:hover{background:var(--primary-dark)}
.ra-skip{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 22px;font-size:15px;font-weight:700;color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.ra-skip:hover{background:var(--surf)}
.ra-state{display:flex;align-items:center;justify-content:space-between;border-radius:12px;padding:15px 16px;margin-top:14px;font-weight:700;font-size:15px}
.ra-state.done{background:var(--primary-soft);color:var(--primary-dark)}
.ra-state.skip{background:var(--surf);color:var(--muted)}
.ra-state button{background:none;border:none;color:inherit;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-size:13px;opacity:.9}
.ra-state button:hover{opacity:1}
@media (max-width:640px){
  .recipe-hero{flex-direction:column;padding:10px;gap:12px}
  .rh-img{flex:none;max-width:none}
  .rh-img img{min-height:200px;max-height:240px}
  .rh-title{font-size:22px;margin:6px 0}
  .ra-actions,.ra-state{margin-top:4px}
}

/* Meal plan — header, target, week strip, subtabs */
.mealhdr{display:flex;align-items:center;justify-content:space-between;gap:12px}
.regen{border:1px solid var(--line);background:#fff;color:var(--primary-dark,var(--primary-dark));border-radius:20px;padding:8px 14px;font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap}
.regen:hover{background:var(--primary-soft,var(--primary-soft))}
.target-card{background:var(--feature-bg);color:#fff;border-radius:14px;padding:14px 16px;margin:12px 0}
.target-card .tc-main{font-weight:800;font-size:16px}
.target-card .tc-sub{font-size:12px;color:var(--line);margin-top:3px}
.plan-note{background:#fff7e6;border:1px solid #f0dcae;color:#7a5b16;border-radius:12px;padding:10px 14px;font-size:13px;margin-bottom:12px}
.plan-note a{color:#7a5b16;font-weight:700}
.daystrip{display:flex;gap:8px;overflow-x:auto;padding:4px 0 10px;-webkit-overflow-scrolling:touch}
.daychip{flex:0 0 auto;width:60px;border:1px solid var(--line);background:#fff;border-radius:12px;padding:8px 4px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px}
.daychip .dow{font-size:11px;color:var(--muted);font-weight:700;letter-spacing:.04em}
.daychip .dnum{font-size:19px;font-weight:800;line-height:1}
.daychip .dct{font-size:11px;color:var(--muted)}
.daychip.today{border-color:var(--primary,var(--primary))}
.daychip.on{background:var(--primary-soft,var(--primary-soft));border-color:var(--primary,var(--primary))}
.daychip.on .dct{color:var(--primary-dark,var(--primary-dark));font-weight:700}
.subtabs{display:flex;background:var(--card,var(--surf));border-radius:12px;padding:4px;margin:6px 0 14px}
.subtabs button{flex:1;border:none;background:none;padding:9px;border-radius:9px;font-size:14px;font-weight:600;color:var(--muted);cursor:pointer}
.subtabs button.on{background:#fff;color:var(--ink,var(--ink));box-shadow:var(--shadow)}
.today-h{font-size:16px;margin:2px 0 10px}

/* Nutrition sub-tab */
.nutri-cards{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.card.nutri{display:flex;align-items:center;gap:16px;padding:18px}
.donut{width:88px;height:88px;flex:none}
.dnum2{font-size:17px;font-weight:800;fill:var(--ink)}
.dunit{font-size:9px;fill:var(--muted);letter-spacing:.06em}
.ninfo .nlabel{font-size:12px;color:var(--muted);letter-spacing:.07em;font-weight:700}
.ninfo .nval{font-size:16px;font-weight:700;margin-top:3px;color:var(--ink)}
.card.nutri-macros{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;margin-top:14px;padding:20px 0}
.card.nutri-macros>div+div{border-left:1px solid var(--line)}
.card.nutri-macros b{display:block;font-size:20px}
.card.nutri-macros span{font-size:12px;color:var(--muted);letter-spacing:.06em}
.nutri-note{font-size:13px;color:var(--muted);margin:12px 2px 0}
@media (max-width:640px){ .nutri-cards{grid-template-columns:1fr} }

/* Exercises — "Coming soon" inactive categories */
.coming-row{display:flex;flex-wrap:wrap;gap:10px}
.coming-chip{display:inline-flex;align-items:center;gap:9px;border:1px dashed var(--line);background:var(--card);
  border-radius:14px;padding:12px 16px;color:var(--muted);font-weight:600;font-size:15px;opacity:.9;cursor:default}
.coming-chip .cc-tag{font-size:10px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;
  background:var(--primary-soft);color:var(--primary-dark);border-radius:20px;padding:2px 9px}

/* Groceries */
.groc-lbl{font-size:12px;color:var(--muted);font-weight:700;letter-spacing:.05em;text-transform:uppercase;margin:2px 0 8px}
.groc-days{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.groc-day{display:inline-flex;align-items:center;gap:7px;border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:8px 12px;cursor:pointer;font-weight:600;font-size:13px;color:var(--ink)}
.groc-day.on{background:var(--primary-soft);border-color:var(--primary)}
.groc-day .gd-check{width:16px;height:16px;border-radius:5px;border:2px solid var(--line);display:grid;place-items:center;color:#fff;font-size:11px;flex:none}
.groc-day.on .gd-check{background:var(--primary);border-color:var(--primary)}
.groc-count{color:var(--muted);font-size:13px;margin-bottom:10px}
.groc-list{display:flex;flex-direction:column;gap:8px}
.groc-item{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--card);border-radius:12px;box-shadow:var(--shadow);cursor:pointer}
.groc-item input{width:20px;height:20px;accent-color:var(--primary);flex:none;cursor:pointer}
.groc-item .gi-amt{font-weight:700;min-width:70px;color:var(--primary-dark);font-size:14px}
.groc-item .gi-name{flex:1;text-transform:capitalize}
.groc-item.got .gi-name,.groc-item.got .gi-amt{color:var(--muted);text-decoration:line-through}

/* Groceries — print/email toolbar */
.groc-tools{display:flex;gap:10px;margin-bottom:12px}
.groc-btn{display:inline-flex;align-items:center;gap:7px;border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:9px 16px;font-weight:600;font-size:14px;color:var(--ink);cursor:pointer}
.groc-btn:hover{background:var(--primary-soft);border-color:var(--primary)}
.groc-email{display:flex;flex-wrap:wrap;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:14px;box-shadow:var(--shadow)}
.groc-email input{flex:1;min-width:180px;border:1.5px solid var(--line);border-radius:10px;padding:11px 14px;font-size:15px;font-family:var(--sans);outline:none;color:var(--ink)}
.groc-email input:focus{border-color:var(--primary)}
.groc-email .btn{padding:11px 20px;font-size:15px}
.groc-email-msg{flex-basis:100%;font-size:13px;color:var(--muted)}

/* Academy lesson article */
.lesson-eyebrow{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--primary);font-weight:700;margin:6px 0 2px}
.lesson-lead{font-family:var(--serif);font-style:italic;font-size:18px;color:var(--ink-soft);line-height:1.5;margin:0 0 16px}
.article{color:var(--ink-soft);line-height:1.7}
.article p{margin:0 0 14px;font-size:16px}
.art-h{font-family:var(--serif);font-weight:600;font-size:19px;margin:20px 0 8px;color:var(--ink)}
.art-ul{margin:0 0 14px;padding:0;list-style:none}
.art-ul li{position:relative;padding:6px 0 6px 22px;font-size:16px;color:var(--ink-soft)}
.art-ul li::before{content:"";position:absolute;left:2px;top:13px;width:7px;height:7px;border-radius:50%;background:var(--primary)}

/* ---- Home promo cards (meal / calories / academy) ---- */
.hm-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.hm-k{font-size:11px;letter-spacing:1px;color:var(--muted);font-weight:800}
.hm-more{color:var(--muted);text-decoration:none;font-size:18px}
.home-meal .hm-body{display:flex;gap:12px;text-decoration:none;color:var(--ink);align-items:center}
.home-meal .hm-body img{width:84px;height:84px;border-radius:12px;object-fit:cover;flex:none}
.hm-info{min-width:0}
.hm-title{font-weight:700;margin:6px 0 2px;line-height:1.25}
.hm-kcal{font-size:13px;color:var(--muted)}
.hm-actions{display:flex;gap:10px;margin-top:12px}
.btn.small{padding:9px 12px;font-size:13px}
.hc-body{display:flex;align-items:center;gap:16px}
.hc-body .donut{width:88px;height:88px;flex:none}
.hc-big{font-size:24px;font-weight:800;color:var(--ink)}
.hc-big small{font-size:14px;font-weight:600;color:var(--muted)}
.hc-sub{font-size:13px;color:var(--muted);margin-top:2px}
.home-acad .ha-title{font-weight:700;font-size:17px;line-height:1.3}

/* ---- Fasting ---- */
.fast-live{text-align:center}
.fl-k{font-size:11px;letter-spacing:1px;color:var(--muted);font-weight:800;margin-bottom:14px}
.fast-ring{position:relative;width:190px;height:190px;border-radius:50%;margin:0 auto 16px;display:grid;place-items:center;
  background:conic-gradient(var(--primary) calc(var(--p)*1%), var(--track) 0);}
.fast-ring::before{content:"";position:absolute;top:20px;left:20px;width:150px;height:150px;border-radius:50%;background:var(--card)}

.fl-clock{position:relative;z-index:1;font-size:30px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.fl-times{display:flex;justify-content:space-around;margin:4px 0 18px}
.fl-times span{display:block;font-size:11px;letter-spacing:.5px;color:var(--muted);font-weight:700}
.fl-times b{font-size:15px;color:var(--ink)}
.fast-presets{display:flex;flex-wrap:wrap;gap:8px}
.fast-presets button{flex:1;min-width:60px;border:2px solid var(--line);background:#fff;border-radius:12px;padding:12px 0;font-weight:700;color:var(--ink);cursor:pointer}
.fast-presets button.on{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}
.fast-hist .fast-h{display:flex;align-items:center;gap:12px;background:var(--card);border-radius:12px;box-shadow:var(--shadow);padding:12px 14px;margin-bottom:8px}
.fh-ic{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--track);color:var(--muted);flex:none;font-size:14px}
.fh-ic.ok{background:#e7f3ea;color:#3f7a52}
.fh-main{flex:1}.fh-main small{color:var(--muted)}
.fh-date{display:block;font-size:12px;color:var(--muted);margin-top:2px}
.fh-goal{font-size:11px;font-weight:800;letter-spacing:.5px;color:#3f7a52;margin-right:6px}
.fh-del{background:none;border:none;cursor:pointer;color:var(--muted);font-size:15px}

/* weight trend chart labels — space the three readouts evenly */
.chartlabels{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:6px}
.chartlabels span:nth-child(2){color:var(--primary);font-weight:700}

/* ---- Tai Chi Walking: accordion workout detail + cards ---- */
.wk-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:2px}
.wk-title{margin:0;font-size:24px}
.wacc{margin-top:16px;display:flex;flex-direction:column;gap:10px}
.wacc-item{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 1px 3px oklch(40% 0.02 55 /.04)}
.wacc-head{display:flex;align-items:center;gap:14px;width:100%;text-align:left;font:inherit;color:var(--ink);background:transparent;border:none;padding:16px 18px;cursor:pointer}
.wacc-head .ltext{flex:1}
.wacc-item.open .wacc-head{background:var(--primary-soft)}
.wacc-chev{color:var(--muted);font-size:20px;flex:none;transition:transform .18s}
.wacc-item.open .wacc-chev{transform:rotate(90deg)}
.wacc-body{display:none;border-top:1px solid var(--line);padding:18px}
.wacc-item.open .wacc-body{display:block}
.wacc-2col{display:grid;grid-template-columns:200px 1fr;gap:22px;align-items:center}
.wacc-video video{width:100%;height:auto;display:block;border-radius:12px;background:#000}
.wacc-desc.below{margin-top:14px}
.wacc-foot{display:none;margin-top:12px}
.wacc.playing .wacc-item.open .wacc-foot{display:block}
.wacc-skip{background:transparent;border:1.5px solid var(--line);border-radius:10px;padding:8px 14px;font-weight:600;color:var(--ink);cursor:pointer}
.wacc-skip:hover{border-color:var(--primary);color:var(--primary)}

.wacc-img{background:linear-gradient(135deg,var(--band-b),var(--band-a));border-radius:12px;height:200px;display:flex;align-items:center;justify-content:center;flex:none}
.wacc-img img{width:190px;height:190px;object-fit:contain;display:block}
.wacc-desc{margin:0;color:var(--ink-soft);line-height:1.55;font-size:16px}
@media(max-width:640px){
  .wacc-2col{grid-template-columns:1fr;justify-items:center;text-align:center}
  .wacc-img{height:auto;padding:14px;width:100%}
  .wacc-desc{text-align:left}
}
.wcard.walk .thumb{background:linear-gradient(135deg,var(--band-b),var(--band-a))}
.wcard.walk .thumb img{object-fit:contain;width:100%;height:100%}

/* ---- "Coming up" interstitial (video sessions) ---- */
.interim{position:fixed;inset:0;z-index:2000;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;background:linear-gradient(180deg,var(--interim-a),var(--interim-b))}
.interim-x{position:absolute;top:20px;left:20px;width:46px;height:46px;border-radius:50%;background:#fff;border:none;font-size:18px;color:var(--ink);cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.08)}
.interim-eyebrow{font-size:14px;letter-spacing:3px;color:var(--muted);font-weight:700;margin-bottom:30px}
.interim-ring{width:150px;height:150px;border-radius:50%;background:rgba(191,115,80,.14);display:grid;place-items:center;margin-bottom:26px}
.interim-ring span{font-family:'Playfair Display',Georgia,serif;font-size:66px;font-weight:600;color:var(--primary-dark)}
.interim-title{font-family:'Playfair Display',Georgia,serif;font-size:30px;font-weight:600;color:var(--ink);max-width:560px;line-height:1.15}
.interim-sub{margin-top:12px;color:var(--muted);font-size:14px}
.interim-skip{margin-top:30px;background:#fff;border:none;border-radius:999px;padding:13px 34px;font-size:16px;font-weight:600;color:var(--ink);cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.08)}
.interim-skip:hover{background:var(--primary-soft)}
