:root{
  --g:#0f3d2e;--g2:#1c6e50;--g3:#e6f2ec;--o:#f5a623;--o2:#fff4e0;--on-accent:#1d2421;
  --r:#c0392b;--r2:#fdecea;--b:#1f5fa8;--b2:#e8f0fb;--y:#b7791f;--y2:#fff8e1;
  --ink:#1d2421;--mut:#5d6b65;--bg:#f6f3ec;--card:#fff;--line:#e4e0d6;--rad:16px;
  --header:linear-gradient(135deg,#0f3d2e,#1c6e50);--hero:linear-gradient(135deg,#0f3d2e,#2a7d5c);
  --header-ink:#fff;--hero-mut:#d9efe5;--hero-tag:#ffd27a;
  --tab-bg:#fff;--input-bg:#fff;--seg-bg:#ece8de;--bar-bg:#eee;
  --toast-bg:#1d2421;--toast-ink:#fff;--disc-bg:#fff;
  --theme-color:#0f3d2e;--chart:#1c6e50;--cal-0:#ece8de;--cal-1:#9fd8b6;--cal-2:#1c6e50;
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Text",Segoe UI,Roboto,sans-serif;
  --fs:17px;--scale:1;
}
html.size-large{--scale:1.15}
html.size-xl{--scale:1.3}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink);font:calc(var(--fs)*var(--scale))/1.45 var(--font)}
header{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;padding:calc(env(safe-area-inset-top) + 10px) 14px 10px;background:var(--header);color:var(--header-ink)}
.brand{display:flex;gap:10px;align-items:center}.brand b{letter-spacing:.02em;font-size:calc(16px*var(--scale))}.brand small{display:block;font-size:calc(11px*var(--scale));opacity:.85;letter-spacing:.04em}
.logo{font-size:calc(26px*var(--scale));background:var(--o);color:var(--on-accent);border-radius:12px;width:40px;height:40px;display:grid;place-items:center;overflow:hidden;flex:none}
.logo img{width:100%;height:100%;object-fit:cover;display:block}
.icon-btn{background:var(--o);color:var(--on-accent);border:0;border-radius:999px;padding:10px 14px;font-weight:700;font-size:calc(15px*var(--scale))}
main{padding:14px 14px calc(env(safe-area-inset-bottom) + 96px);max-width:720px;margin:0 auto}
nav#tabs{position:fixed;bottom:0;left:0;right:0;z-index:6;display:grid;grid-template-columns:repeat(6,1fr);background:var(--tab-bg);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
nav#tabs button{background:none;border:0;padding:8px 0 9px;font-size:calc(11px*var(--scale));color:var(--mut);display:flex;flex-direction:column;align-items:center;gap:2px;min-height:58px}
nav#tabs button span{font-size:calc(22px*var(--scale))}nav#tabs button.on{color:var(--g);font-weight:700}
h1{font-size:calc(24px*var(--scale));margin:4px 0 10px}h2{font-size:calc(19px*var(--scale));margin:18px 0 8px}h3{font-size:calc(16px*var(--scale));margin:12px 0 6px}
.card{background:var(--card);border-radius:var(--rad);padding:14px;margin:10px 0;box-shadow:0 1px 3px rgba(0,0,0,.06);border:1px solid var(--line)}
.hero{background:var(--hero);color:var(--header-ink);border:0}.hero .mut{color:var(--hero-mut)}
.mut{color:var(--mut);font-size:calc(14px*var(--scale))}.small{font-size:calc(13px*var(--scale))}
.row{display:flex;gap:10px;align-items:center}.wrap{flex-wrap:wrap}.sp{justify-content:space-between}.grow{flex:1}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:14px;padding:14px 16px;font-size:calc(16px*var(--scale));font-weight:700;background:var(--g);color:#fff;min-height:50px;text-decoration:none}
.btn.alt{background:var(--g3);color:var(--g)}.btn.o{background:var(--o);color:var(--on-accent)}.btn.red{background:var(--r);color:#fff}.btn.ghost{background:var(--card);border:1.5px solid var(--line);color:var(--ink)}.btn.sm{min-height:40px;padding:8px 12px;font-size:calc(14px*var(--scale));border-radius:12px}.btn.full{width:100%}
.btn.lg{min-height:64px;font-size:calc(17px*var(--scale));padding:16px 14px;border-radius:16px}
.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1.5px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:10px 14px;font-size:calc(15px*var(--scale));min-height:44px}.chip.on{background:var(--g);color:#fff;border-color:var(--g)}
input,select,textarea{font:inherit;width:100%;padding:12px;border:1.5px solid var(--line);border-radius:12px;background:var(--input-bg);color:var(--ink);min-height:48px}
input.big{font-size:calc(34px*var(--scale));font-weight:800;text-align:center;letter-spacing:.02em}
input[type=color]{padding:4px;min-height:48px;cursor:pointer}
label{display:block;font-size:calc(14px*var(--scale));font-weight:600;margin:10px 0 4px;color:var(--mut)}
.stat{background:var(--g3);border-radius:14px;padding:10px;text-align:center}.stat b{display:block;font-size:calc(24px*var(--scale));color:var(--g)}.stat span{font-size:calc(12px*var(--scale));color:var(--mut)}
.hero .stat{background:rgba(255,255,255,.13)}.hero .stat b{color:var(--header-ink)}.hero .stat span{color:var(--hero-mut)}
.bar{height:10px;background:var(--bar-bg);border-radius:9px;overflow:hidden;margin:6px 0}.bar i{display:block;height:100%;background:var(--g2);border-radius:9px}
.act{border-radius:var(--rad);padding:14px;margin:10px 0;border-left:7px solid}
.act h3{margin:0 0 6px;font-size:calc(18px*var(--scale))}.act ol,.act ul{margin:6px 0 0;padding-left:22px}.act li{margin:4px 0}
.lv-red{background:var(--r2);border-color:var(--r)}.lv-org{background:var(--o2);border-color:var(--o)}.lv-grn{background:var(--g3);border-color:var(--g2)}.lv-blu{background:var(--b2);border-color:var(--b)}.lv-yel{background:var(--y2);border-color:var(--y)}
.check{display:flex;gap:12px;align-items:flex-start;padding:12px 4px;border-bottom:1px solid var(--line)}.check:last-child{border-bottom:0}
.check input{width:28px;height:28px;min-height:28px;flex:none;accent-color:var(--g2);margin-top:2px}
.check .t{flex:1}.check .t b{display:block}.done .t b{text-decoration:line-through;color:var(--mut)}
.list{list-style:none;margin:0;padding:0}.list li{padding:10px 0;border-bottom:1px solid var(--line)}.list li:last-child{border:0}
.pill{display:inline-block;border-radius:999px;padding:2px 9px;font-size:calc(12px*var(--scale));font-weight:700;background:var(--g3);color:var(--g)}
.pill.red{background:var(--r2);color:var(--r)}.pill.org{background:var(--o2);color:var(--y)}.pill.blu{background:var(--b2);color:var(--b)}
.seg{display:flex;background:var(--seg-bg);border-radius:12px;padding:4px;gap:4px;margin:8px 0;overflow-x:auto}.seg button{flex:1;border:0;background:none;border-radius:9px;padding:10px 8px;font-weight:700;color:var(--mut);font-size:calc(14px*var(--scale));white-space:nowrap;min-height:42px}.seg button.on{background:var(--card);color:var(--g);box-shadow:0 1px 2px rgba(0,0,0,.1)}
.disc{font-size:calc(12.5px*var(--scale));color:var(--mut);background:var(--disc-bg);border:1px dashed var(--line);border-radius:12px;padding:10px;margin:14px 0}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:20;display:flex;align-items:flex-end}.modal.hidden{display:none}
.sheet{background:var(--bg);width:100%;max-width:720px;margin:0 auto;max-height:92vh;overflow:auto;border-radius:20px 20px 0 0;padding:16px 16px calc(env(safe-area-inset-bottom) + 20px)}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(env(safe-area-inset-bottom) + 76px);background:var(--toast-bg);color:var(--toast-ink);padding:12px 18px;border-radius:999px;z-index:30;font-weight:600}.toast.hidden{display:none}
svg.chart{width:100%;height:auto;display:block}
table{width:100%;border-collapse:collapse;font-size:calc(14px*var(--scale))}td,th{padding:7px 5px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{font-size:calc(12px*var(--scale));color:var(--mut);text-transform:uppercase}
.x{background:none;border:0;color:var(--mut);font-size:20px;padding:4px 8px}
details{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:0 14px;margin:8px 0}details summary{padding:14px 0;font-weight:700;cursor:pointer;list-style:none}details summary::after{content:"▾";float:right;color:var(--mut)}details[open] summary::after{content:"▴"}
.tag{font-size:calc(11px*var(--scale));font-weight:800;letter-spacing:.08em;color:var(--o);text-transform:uppercase}
.hero .tag{color:var(--hero-tag)}
.motto{text-align:center;font-weight:800;color:var(--g);letter-spacing:.05em;margin:18px 0 4px;font-size:calc(14px*var(--scale))}
#report{background:var(--card)}
.theme-swatch{display:flex;gap:0;height:18px;border-radius:999px;overflow:hidden;width:72px;border:1px solid var(--line);flex:none}
.theme-swatch i{flex:1;display:block}
.order-row{display:flex;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.order-row:last-child{border-bottom:0}
.order-row b{flex:1;font-size:calc(15px*var(--scale))}
@media print{header,nav,.noprint{display:none!important}main{padding:0}body{background:#fff;color:#111;font-size:12px}.card,#report,.disc,details{box-shadow:none;break-inside:avoid;background:#fff;color:#111}}
.name-story h3{margin:2px 0 6px;font-size:calc(17px*var(--scale))}.name-story p{margin:0}

.badge-enh{display:inline-flex;align-items:center;gap:4px;background:var(--o);color:var(--on-accent);border-radius:999px;padding:3px 9px;font-size:calc(11px*var(--scale));font-weight:800;letter-spacing:.04em}
.upgrade-card{border-color:var(--o);background:var(--o2)}
.coach-thread{display:flex;flex-direction:column;gap:10px;max-height:52vh;overflow:auto;margin-top:10px;padding:2px}
.bubble{border-radius:16px;padding:10px 12px;max-width:92%;font-size:calc(15px*var(--scale))}
.bubble.me{align-self:flex-end;background:var(--g);color:#fff}
.bubble.ai{align-self:flex-start;background:var(--g3);color:var(--ink);border:1px solid var(--line)}
.bubble-time{font-size:calc(11px*var(--scale));opacity:.7;margin-top:4px}
.coach-thumb{display:block;max-width:100%;max-height:180px;border-radius:10px;margin-bottom:6px;object-fit:cover}
.meal-est{margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.08)}
.bubble.me .meal-est{border-top-color:rgba(255,255,255,.25)}
.context-pre{white-space:pre-wrap;word-break:break-word;font:calc(12px*var(--scale))/1.4 var(--font);background:var(--seg-bg);border-radius:10px;padding:10px;max-height:220px;overflow:auto;margin:0 0 8px}
.coach-privacy{margin:10px 0}
