/* GymFlow: hệ thiết kế. Cobalt = thương hiệu. Biểu đồ: --c-act (thực tế), --c-plan (lộ trình), đã kiểm tra tương phản và mù màu. */
@property --b1{syntax:'<color>';inherits:true;initial-value:#9fb0ff}
@property --b2{syntax:'<color>';inherits:true;initial-value:#8fe8da}
@property --b3{syntax:'<color>';inherits:true;initial-value:#ffc1b6}

:root{
  color-scheme:light dark;
  --bg:#f1f3fa;--solid:#ffffff;--ink:#13162b;--mute:#5b6180;--line:rgba(19,22,43,.1);
  --glass:rgba(255,255,255,.62);--glass2:rgba(255,255,255,.86);--chip:rgba(19,22,43,.06);
  --brand:#3d5afe;--on-brand:#fff;--c-act:#3d5afe;--c-plan:#0d9488;
  --ok:#12804a;--warn:#9a5a00;--bad:#c0302f;
  --sh:0 18px 40px -22px rgba(36,48,130,.45);
  --ease:cubic-bezier(.22,1,.36,1);--nav-h:68px;--blob:.7;
  --r-lg:28px;--r-md:22px;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0b0d1c;--solid:#161934;--ink:#eef0ff;--mute:#9ba1c4;--line:rgba(238,240,255,.12);
  --glass:rgba(30,34,64,.55);--glass2:rgba(30,34,66,.86);--chip:rgba(238,240,255,.08);
  --brand:#7d8dff;--on-brand:#0b0d1c;--c-act:#6c7ef7;--c-plan:#1fa898;
  --ok:#58d58f;--warn:#f2b45a;--bad:#ff8080;--sh:0 18px 40px -22px rgba(0,0,0,.7);--blob:.5}}
:root[data-theme="dark"]{
  color-scheme:dark;--bg:#0b0d1c;--solid:#161934;--ink:#eef0ff;--mute:#9ba1c4;--line:rgba(238,240,255,.12);
  --glass:rgba(30,34,64,.55);--glass2:rgba(30,34,66,.86);--chip:rgba(238,240,255,.08);
  --brand:#7d8dff;--on-brand:#0b0d1c;--c-act:#6c7ef7;--c-plan:#1fa898;
  --ok:#58d58f;--warn:#f2b45a;--bad:#ff8080;--sh:0 18px 40px -22px rgba(0,0,0,.7);--blob:.5}

/* Màu nền đổi theo vai trò, chuyển mượt nhờ @property */
body{--b1:#9fb0ff;--b2:#8fe8da;--b3:#ffc1b6;transition:--b1 1.4s ease,--b2 1.4s ease,--b3 1.4s ease}
body[data-role=member]{--b1:#ffc1b6;--b2:#ffe2a8;--b3:#a7b6ff}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) body{--b1:#2c3fa8;--b2:#0e6a63;--b3:#7a2f3d}
  :root:not([data-theme="light"]) body[data-role=member]{--b1:#7a2f3d;--b2:#6b4b13;--b3:#2c3fa8}}
:root[data-theme="dark"] body{--b1:#2c3fa8;--b2:#0e6a63;--b3:#7a2f3d}
:root[data-theme="dark"] body[data-role=member]{--b1:#7a2f3d;--b2:#6b4b13;--b3:#2c3fa8}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{background:var(--bg)}
body{margin:0;color:var(--ink);font:400 15.5px/1.5 'Be Vietnam Pro',system-ui,-apple-system,'Segoe UI',sans-serif;
  -webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;overscroll-behavior-y:none}
h1,h2,h3,p{margin:0}
h1{font-size:clamp(1.65rem,5.6vw,2.3rem);font-weight:800;letter-spacing:-.03em;line-height:1.12}
h2{font-size:1.12rem;font-weight:700;letter-spacing:-.01em}
h3{font-size:1rem;font-weight:700}
button{font:inherit;color:inherit}
.mu{color:var(--mute);font-size:.88rem}
:focus-visible{outline:3px solid var(--brand);outline-offset:2px}

/* Nền động */
.bg{position:fixed;inset:0;z-index:-1;overflow:hidden;background:var(--bg)}
.bg i{position:absolute;width:75vmax;height:75vmax;border-radius:50%;opacity:var(--blob);will-change:transform}
.bg i:nth-child(1){left:-30vmax;top:-34vmax;background:radial-gradient(closest-side,var(--b1),transparent);animation:d1 28s ease-in-out infinite alternate}
.bg i:nth-child(2){right:-34vmax;top:12vmax;background:radial-gradient(closest-side,var(--b2),transparent);animation:d2 34s ease-in-out infinite alternate}
.bg i:nth-child(3){left:-12vmax;bottom:-42vmax;background:radial-gradient(closest-side,var(--b3),transparent);animation:d3 31s ease-in-out infinite alternate}
@keyframes d1{to{transform:translate3d(26vmax,16vmax,0) scale(1.18)}}
@keyframes d2{to{transform:translate3d(-24vmax,22vmax,0) scale(.88)}}
@keyframes d3{to{transform:translate3d(30vmax,-18vmax,0) scale(1.12)}}

/* Khung app */
#app{max-width:760px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 14px) 16px calc(var(--nav-h) + env(safe-area-inset-bottom) + 44px)}
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.logo{display:flex;align-items:center;gap:9px;font-weight:800;font-size:1.18rem;letter-spacing:-.03em}
.logo svg{width:32px;height:32px;display:block}

/* Nút tài khoản trên đầu trang */
.acct{display:flex;align-items:center;gap:8px;padding:4px 14px 4px 4px;max-width:52vw;border-radius:99px;background:var(--glass2);border:1px solid var(--line);
  backdrop-filter:blur(14px);cursor:pointer;font-weight:600;font-size:.88rem;transition:transform .25s var(--ease)}
.acct:active{transform:scale(.95)}
.acct span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.av.sm{width:32px;height:32px;font-size:.72rem;flex:none}

/* Đăng nhập: ẩn điều hướng cho tới khi vào app */
body[data-auth=out] .nav{display:none}
.auth{max-width:420px;margin:6vh auto 0}
.auth .form{margin-top:18px}
.auth>.mu{margin-top:14px;text-align:center}
.acts{display:flex;gap:2px}
.ib.k:hover{color:var(--brand)}

/* Thanh điều hướng nổi */
.nav{position:fixed;left:50%;bottom:calc(14px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:20;
  width:min(440px,calc(100% - 24px));height:var(--nav-h);padding:6px;border-radius:26px;
  background:var(--glass2);backdrop-filter:blur(22px) saturate(1.5);-webkit-backdrop-filter:blur(22px) saturate(1.5);
  border:1px solid var(--line);box-shadow:var(--sh)}
.items{position:relative;display:grid;grid-template-columns:repeat(4,1fr);height:100%}
.pill{position:absolute;top:6px;bottom:6px;left:6px;width:calc((100% - 12px)/4);border-radius:20px;
  background:color-mix(in srgb,var(--brand) 16%,transparent);transform:translateX(calc(var(--i,0)*100%));transition:transform .55s var(--ease)}
.ni{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;background:none;
  font-size:.7rem;font-weight:600;color:var(--mute);cursor:pointer;border-radius:20px;transition:color .3s,transform .25s var(--ease)}
.ni.on{color:var(--brand)}
.ni:active{transform:scale(.9)}
.ic{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* Chuyển trang */
#view{view-transition-name:view;min-height:40vh}
::view-transition-group(root){animation:none}
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}
@keyframes vo-l{to{opacity:0;transform:translateX(-26px) scale(.99)}}
@keyframes vo-r{to{opacity:0;transform:translateX(26px) scale(.99)}}
@keyframes vi-r{from{opacity:0;transform:translateX(34px)}}
@keyframes vi-l{from{opacity:0;transform:translateX(-34px)}}
@keyframes vo-z{to{opacity:0;transform:scale(.96)}}
@keyframes vi-z{from{opacity:0;transform:scale(1.03)}}
@keyframes vo-f{to{opacity:0}}
@keyframes vi-f{from{opacity:0;transform:translateY(8px)}}
html[data-dir=fwd]::view-transition-old(view){animation:vo-l .26s ease-in both}
html[data-dir=fwd]::view-transition-new(view){animation:vi-r .5s var(--ease) both}
html[data-dir=back]::view-transition-old(view){animation:vo-r .26s ease-in both}
html[data-dir=back]::view-transition-new(view){animation:vi-l .5s var(--ease) both}
html[data-dir=role]::view-transition-old(view){animation:vo-z .26s ease-in both}
html[data-dir=role]::view-transition-new(view){animation:vi-z .55s var(--ease) both}
html[data-dir=soft]::view-transition-old(view){animation:vo-f .18s ease-in both}
html[data-dir=soft]::view-transition-new(view){animation:vi-f .4s var(--ease) both}
.in-fwd{animation:vi-r .5s var(--ease) both}.in-back{animation:vi-l .5s var(--ease) both}
.in-role{animation:vi-z .55s var(--ease) both}.in-soft{animation:vi-f .4s var(--ease) both}
.soft{animation:vi-f .35s var(--ease) both}

/* Khối nội dung */
.panel{background:var(--glass);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);
  border:1px solid var(--line);border-radius:var(--r-md);padding:16px;box-shadow:var(--sh);margin-top:12px}
.sec-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:28px 2px 0}
.sec-h:first-child{margin-top:6px}
.hero{padding:4px 2px 2px}
.strip{display:grid;grid-template-columns:repeat(4,1fr);padding:14px 4px;margin-top:16px}
.strip>div{text-align:center;padding:0 4px}
.strip>div+div{border-left:1px solid var(--line)}
.strip b{display:block;font-size:1.9rem;font-weight:800;letter-spacing:-.03em;line-height:1.15}
.strip.sm b{font-size:1.35rem;padding:3px 0 2px;line-height:1.25}
.strip span{font-size:.76rem;color:var(--mute);display:inline-flex;align-items:center;gap:5px}
.item{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:12px 2px}
.item+.item{border-top:1px solid var(--line)}
.item .tm{font-weight:800;font-size:1.05rem;min-width:46px}
.item small{display:block;color:var(--mute);font-size:.82rem}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.item.plain{grid-template-columns:1fr auto}
.av{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:.85rem;color:#13162b;
  background:hsl(var(--h) 85% 72%)}
.empty{text-align:center;padding:26px 10px;display:grid;gap:10px;justify-items:center}
.chip,.tag{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:99px;font-size:.76rem;font-weight:600;background:var(--chip)}
.chip::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c,var(--mute))}
.tag.ok{color:var(--ok);background:color-mix(in srgb,var(--ok) 14%,transparent)}
.tag.warn{color:var(--warn);background:color-mix(in srgb,var(--warn) 16%,transparent)}
.tag.bad{color:var(--bad);background:color-mix(in srgb,var(--bad) 14%,transparent)}

/* Nút */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 22px;border:0;border-radius:99px;
  background:var(--brand);color:var(--on-brand);font-weight:700;font-size:.95rem;cursor:pointer;
  transition:transform .25s var(--ease),box-shadow .35s,background .3s}
.btn:active{transform:scale(.95)}
@media (hover:hover){.btn:hover{box-shadow:0 12px 26px -12px var(--brand);transform:translateY(-1px)}.btn:active{transform:scale(.95)}}
.btn.ghost{background:var(--chip);color:var(--ink)}
.btn.light{background:#fff;color:#1b2a9e}
.btn.wide{width:100%}.btn.sm{min-height:38px;padding:0 16px;font-size:.86rem}
.btn.danger{background:var(--bad);color:#fff}
.btn:disabled{opacity:.5;pointer-events:none}
.ib{width:40px;height:40px;border-radius:50%;border:0;background:none;color:var(--mute);display:grid;place-items:center;cursor:pointer;transition:background .25s,color .25s,transform .25s var(--ease)}
.ib:hover{background:var(--chip);color:var(--bad)}.ib:active{transform:scale(.86)}
.link{background:none;border:0;color:var(--mute);text-decoration:underline;cursor:pointer;font-size:.85rem;padding:6px}

/* Form */
.fld{display:grid;gap:6px;font-size:.8rem;font-weight:500;color:var(--mute);min-width:0}
input,select{height:46px;padding:0 14px;border-radius:14px;border:1px solid var(--line);background:var(--glass2);color:var(--ink);font:inherit;font-size:1rem;width:100%;min-width:0;transition:border-color .25s,box-shadow .25s}
input:focus,select:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 22%,transparent)}
.fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}
.ctl{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 0}
.ctl+.ctl{border-top:1px solid var(--line)}
.seg2{display:inline-flex;padding:3px;border-radius:99px;background:var(--chip);gap:2px}
.seg2 label{cursor:pointer}
.seg2 input{position:absolute;opacity:0;width:0;height:0}
.seg2 span{display:block;padding:7px 14px;border-radius:99px;font-weight:600;font-size:.86rem;color:var(--mute);transition:background .3s,color .3s,transform .2s var(--ease)}
.seg2 label:active span{transform:scale(.94)}
.seg2 input:checked+span{background:var(--brand);color:var(--on-brand)}
.seg2 input:focus-visible+span{outline:3px solid var(--brand);outline-offset:2px}
.seg2 input:disabled+span{opacity:.4}
.stepper{display:inline-flex;align-items:center;gap:6px;background:var(--chip);border-radius:99px;padding:3px}
.stepper button{width:36px;height:36px;border-radius:50%;border:0;background:var(--glass2);font-size:1.2rem;font-weight:700;cursor:pointer;transition:transform .2s var(--ease)}
.stepper button:active{transform:scale(.85)}
.stepper b{min-width:62px;text-align:center}
.note{display:flex;gap:10px;align-items:flex-start;margin-top:12px;padding:12px 14px;border-radius:16px;font-size:.9rem;font-weight:500}
.note .ic{width:20px;height:20px;margin-top:1px}
.note.ok{background:color-mix(in srgb,var(--ok) 13%,transparent);color:var(--ok)}
.note.wn{background:color-mix(in srgb,var(--warn) 15%,transparent);color:var(--warn)}
.note.bad{background:color-mix(in srgb,var(--bad) 13%,transparent);color:var(--bad)}
.sugg{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.sugg .btn{min-height:40px;padding:0 14px;font-size:.84rem}

/* Buổi tiếp theo */
.next{position:relative;overflow:hidden;border-radius:var(--r-lg);padding:24px 22px;color:#fff;
  background:radial-gradient(120% 140% at 100% 0,rgba(255,255,255,.26),transparent 55%),#3d5afe;box-shadow:0 26px 44px -24px #3d5afe}
.next p{opacity:.86;font-size:.88rem;font-weight:500}
.next h1{margin:6px 0 14px;font-size:clamp(1.8rem,7vw,2.6rem)}
.next .chip{background:rgba(255,255,255,.2);color:#fff}
.nx{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.cd{display:inline-block;margin-top:16px;padding:7px 14px;border-radius:99px;background:rgba(255,255,255,.2);font-weight:600;font-size:.88rem}

/* Chọn ngày và khung giờ */
.days{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:12px}
.dchip{border:0;background:var(--glass);border:1px solid var(--line);border-radius:16px;padding:9px 0 7px;cursor:pointer;font-weight:700;font-size:.86rem;
  transition:transform .25s var(--ease),background .3s,color .3s}
.dchip:active{transform:scale(.92)}
.dchip.today{box-shadow:inset 0 0 0 1.5px var(--brand)}
.dchip.on{background:var(--brand);color:var(--on-brand);box-shadow:none;border-color:transparent}
.dchip small{display:block;margin-top:2px;font-size:.7rem;font-weight:700;color:var(--mute);line-height:1.2}
.dchip small.on{color:var(--brand)}
.dchip.on small{color:inherit;opacity:.9}
.hint{display:flex;gap:8px;align-items:center;margin-top:12px}
.hint .ic{width:18px;height:18px}
.daybar{align-items:center}
.daybar .btn{margin-left:auto;flex:none}
.tgh{display:flex;align-items:baseline;gap:8px;margin:16px 2px 8px;font-weight:700;font-size:.92rem}
.tgh span{color:var(--mute);font-weight:500;font-size:.78rem}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px}
.tile{display:grid;gap:1px;justify-items:start;text-align:left;padding:10px 10px 9px;border-radius:16px;border:1px solid var(--line);background:var(--glass);
  cursor:pointer;transition:transform .25s var(--ease),background .3s,border-color .3s}
.tile b{font-size:1rem;font-weight:800;letter-spacing:-.01em}
.tile small{font-size:.74rem;font-weight:600;color:var(--mute)}
.tile.free small{color:var(--ok)}
.tile.mine{background:var(--brand);border-color:transparent;color:var(--on-brand);box-shadow:0 10px 22px -12px var(--brand)}
.tile.mine small{color:inherit;opacity:.88}
.tile.full{opacity:.42;cursor:not-allowed}
.tile:active:not(:disabled){transform:scale(.93)}
@media (hover:hover){.tile:not(:disabled):not(.mine):hover{border-color:var(--brand)}}
.sw.mine,.sw.on{background:var(--brand)}.sw.clash{background:var(--bad)}.sw.full{background:var(--chip);opacity:.5;box-shadow:inset 0 0 0 1px var(--line)}
.item.bk b{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.item.bk .acts{gap:6px}
@media (max-width:520px){.item.bk{align-items:start}.item.bk .tm{padding-top:2px}.item.bk .acts{grid-column:2/-1;margin-top:-4px}}
.btn.soft-bad{background:color-mix(in srgb,var(--bad) 13%,transparent);color:var(--bad)}
.pop{animation:pop .55s var(--ease)}
@keyframes pop{0%{transform:scale(.9)}55%{transform:scale(1.05)}100%{transform:scale(1)}}

/* Lưới tuần */
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:.8rem;color:var(--mute);margin-top:10px}
.legend span{display:inline-flex;align-items:center;gap:7px}
.sw{width:14px;height:14px;border-radius:5px;background:var(--chip)}
.gridwrap{padding:12px 10px}
.grid{display:grid;grid-template-columns:30px repeat(7,1fr);gap:5px;align-items:center}
.gh{text-align:center;font-weight:700;font-size:.8rem;color:var(--mute);padding-bottom:4px}
.gh.today{color:var(--brand)}
.gt{font-size:.72rem;color:var(--mute);text-align:right;padding-right:3px}
.cell{height:34px;border:0;border-radius:10px;background:var(--chip);font-weight:700;font-size:.72rem;color:var(--ink);cursor:pointer;padding:0;
  transition:transform .25s var(--ease),background .3s}
.cell.on{background:var(--brand);color:var(--on-brand)}.cell.clash{background:var(--bad);color:#fff}
.cell:active{transform:scale(.8)}
@media (hover:hover){.cell:hover{transform:scale(1.1)}}
.wave .cell{animation:cin .6s var(--ease) both;animation-delay:calc(var(--i)*20ms)}
@keyframes cin{from{opacity:0;transform:scale(.5)}}

/* Calories và thực đơn */
.kcal{display:flex;align-items:baseline;gap:8px;margin-top:4px}
.kcal b{font-size:clamp(3.6rem,17vw,5.4rem);font-weight:800;letter-spacing:-.05em;line-height:1;color:var(--brand)}
.kcal span{font-weight:600;color:var(--mute)}
.macro+.macro{margin-top:14px}
.macro div:first-child{display:flex;justify-content:space-between;font-weight:600;font-size:.92rem}
.bar{height:8px;border-radius:99px;background:var(--chip);margin-top:7px;overflow:hidden}
.bar i{display:block;height:100%;border-radius:99px;background:var(--brand);transform-origin:left;animation:grow .9s var(--ease) both}
@keyframes grow{from{transform:scaleX(0)}}
.meal+.meal{margin-top:18px;padding-top:6px;border-top:1px solid var(--line)}
.meal-h{display:flex;justify-content:space-between;align-items:baseline;margin:12px 0 2px}
.total{display:flex;justify-content:space-between;margin-top:16px;padding:14px 16px;border-radius:18px;background:var(--brand);color:var(--on-brand);font-weight:700}
.swap{animation:vi-f .45s var(--ease) both}

/* Đánh giá */
.stars{display:flex;gap:6px}
.star{border:0;background:none;padding:2px;cursor:pointer;color:var(--chip);transition:transform .25s var(--ease),color .25s}
.star .ic{width:38px;height:38px;fill:currentColor;stroke:none}
.star.on{color:#f5b301}
.star:active{transform:scale(.8)}
.avg{display:flex;align-items:baseline;gap:8px}
.avg b{font-size:3.4rem;font-weight:800;letter-spacing:-.04em;line-height:1}
.dist{display:grid;grid-template-columns:18px 1fr 22px;gap:10px;align-items:center;font-size:.84rem;margin-top:8px}

/* Sheet và hộp thoại */
dialog{border:0;padding:0;color:var(--ink)}
dialog::backdrop{background:rgba(8,10,28,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:fade .3s both}
@keyframes fade{from{opacity:0}}@keyframes fadeo{to{opacity:0}}
#sheet{width:min(560px,100%);max-width:100%;margin:auto auto 0;border-radius:28px 28px 0 0;background:var(--solid);
  max-height:90dvh;overflow:auto;padding:12px 20px calc(24px + env(safe-area-inset-bottom));box-shadow:0 -24px 60px -24px rgba(0,0,0,.4)}
#sheet[open]{animation:sin .55s var(--ease)}
#sheet.out{animation:sout .28s ease-in forwards}
#sheet.out::backdrop{animation:fadeo .28s forwards}
@keyframes sin{from{transform:translateY(100%)}}@keyframes sout{to{transform:translateY(100%)}}
.grab{width:40px;height:5px;border-radius:9px;background:var(--line);margin:0 auto 14px}
.sh-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:6px}
.sh-h h2{font-size:1.4rem;font-weight:800;letter-spacing:-.02em}
.form{display:grid;gap:14px;margin-top:16px}
#dlg{width:min(380px,calc(100% - 32px));border-radius:26px;background:var(--solid);padding:24px}
#dlg[open]{animation:pop .45s var(--ease)}
#dlg p{margin-top:6px}
.dlg-b{display:flex;gap:10px;margin-top:22px;justify-content:flex-end}

/* Thông báo nổi */
.toasts{position:fixed;inset:auto auto calc(var(--nav-h) + 32px + env(safe-area-inset-bottom)) 50%;transform:translateX(-50%);margin:0;padding:0;border:0;background:none;
  overflow:visible;width:min(440px,calc(100% - 24px));display:grid;gap:8px;color:inherit}
.toasts:not(:popover-open){display:none}
@supports not selector(:popover-open){.toasts:not(:popover-open){display:grid}}
.toast{display:flex;justify-content:space-between;align-items:center;gap:14px;background:var(--ink);color:var(--bg);padding:13px 14px 13px 18px;border-radius:18px;font-weight:500;font-size:.92rem;
  box-shadow:0 18px 36px -16px rgba(0,0,0,.55);animation:tin .5s var(--ease) both}
.toast.bad{background:var(--bad);color:#fff}
.toast.out{animation:tout .25s ease-in both}
.toast button{border:0;background:none;color:inherit;font-weight:800;cursor:pointer;padding:4px 6px;text-decoration:underline}
@keyframes tin{from{opacity:0;transform:translateY(18px) scale(.96)}}
@keyframes tout{to{opacity:0;transform:translateY(10px) scale(.97)}}

.foot{margin-top:34px;display:grid;gap:8px;justify-items:center;text-align:center}
.foot .row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:center}
.small{font-size:.78rem}

@media (min-width:700px){.strip b{font-size:2.3rem}.grid{gap:6px}.cell{height:38px}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .bg i{animation:none}}

/* Cân nặng, mục tiêu, lộ trình */
.wtop{display:grid;gap:2px}
.wbig{font-size:2.4rem;font-weight:800;letter-spacing:-.03em;line-height:1.1}
.wbig small{font-size:1rem;font-weight:600;color:var(--mute)}
.wrow{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end;margin-top:14px}
@media (max-width:420px){.wrow{grid-template-columns:1fr 1fr}.wrow .btn{grid-column:1/-1}}
.wchart{margin-top:16px;min-height:120px}
.wlegend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.8rem;color:var(--mute);margin-bottom:6px}
.wlegend span,.wtip span{display:inline-flex;align-items:center;gap:6px}
.lk{display:inline-block;width:16px;height:0;border-top:2px solid var(--c-act)}
.lk.plan{border-top:2px dashed var(--c-plan)}
.lk.tg{border-top:1px solid var(--mute)}
.wc-box{position:relative}
.wc{display:block;max-width:100%;overflow:visible;touch-action:pan-y}
.wc .gl{stroke:var(--line);stroke-width:1}
.wc .ax{fill:var(--mute);font-size:11px}
.wc .lb{fill:var(--ink);font-size:11.5px;font-weight:600}
.wc .val{font-size:12.5px;font-weight:700}
.wc .today{stroke:var(--mute);stroke-width:1;opacity:.35}
.wc .tg{stroke:var(--mute);stroke-width:1;opacity:.75}
.wc .plan{fill:none;stroke:var(--c-plan);stroke-width:2;stroke-dasharray:6 5;stroke-linecap:round}
.wc .act{fill:none;stroke:var(--c-act);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.wc .dot{fill:var(--c-act);stroke:var(--solid);stroke-width:2}
.wc .xh{stroke:var(--mute);stroke-width:1}
.wc .hd{fill:var(--c-act);stroke:var(--solid);stroke-width:2}
.wc .hit{fill:transparent;cursor:crosshair}
.wtip{position:absolute;pointer-events:none;display:grid;gap:2px;padding:8px 10px;border-radius:12px;background:var(--solid);border:1px solid var(--line);
  box-shadow:var(--sh);font-size:.8rem;white-space:nowrap;z-index:2}
.wlist{margin-top:12px}
.wlist summary,.tgt summary{cursor:pointer;font-weight:600;font-size:.9rem;color:var(--brand)}
.wlist .item{padding:8px 2px}
.tgt .form{margin-top:12px}
.gsum{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.gsum>div{display:grid;gap:1px;padding:10px 12px;border-radius:16px;background:var(--chip)}
.gsum b{font-size:1.05rem;font-weight:800}
.gsum small{color:var(--mute);font-size:.78rem}
@media (max-width:480px){.gsum{grid-template-columns:1fr 1fr}.gsum>div:last-child{grid-column:1/-1}}
.road{list-style:none;margin:12px 0 0;padding:0 0 0 18px;border-left:2px solid var(--line);display:grid;gap:14px}
.ph{position:relative;padding:12px 14px;border-radius:16px;background:var(--glass2);border:1px solid var(--line)}
.ph.now{background:color-mix(in srgb,var(--brand) 9%,var(--solid));border-color:color-mix(in srgb,var(--brand) 35%,transparent)}
.ph.goal{background:color-mix(in srgb,var(--c-plan) 9%,var(--solid));border-color:color-mix(in srgb,var(--c-plan) 30%,transparent)}
.ph::before{content:"";position:absolute;left:-26px;top:17px;width:12px;height:12px;border-radius:50%;background:var(--solid);box-shadow:inset 0 0 0 2px var(--line)}
.ph.done::before{background:var(--mute);box-shadow:none}
.ph.now::before{background:var(--brand);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 22%,transparent)}
.ph.done{opacity:.72}
.ph.goal::before{background:var(--c-plan);box-shadow:none}
.ph-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ph small{display:block;color:var(--mute);font-size:.8rem;margin-top:2px}
.ph p{font-size:.9rem;margin:4px 0 0;color:var(--ink)}


/* Thực đơn: mục tiêu và chỉ số dinh dưỡng */
.nstat{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}
.nstat>div{padding:10px 6px;border-radius:14px;background:var(--chip);text-align:center}
.nstat b{display:block;font-size:1.05rem;font-weight:800;letter-spacing:-.02em}
.nstat span{font-size:.72rem;color:var(--mute)}
.nrow+.nrow{margin-top:12px}
.nrow-h{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;font-size:.9rem}
.nrow-h>span:first-child{font-weight:600}
.nrow-h>span:nth-child(2){color:var(--mute);font-size:.82rem}
.nrow-h>span:nth-child(2) b{color:var(--ink)}
.nrow .bar{height:6px;margin-top:6px}
.nrow.ok .bar i{background:var(--ok)}
.nrow.low .bar i{background:var(--warn)}
.nrow.hi .bar i{background:var(--bad)}
.meal .small{font-size:.8rem;margin:0 0 4px}
@media (max-width:380px){.nstat{grid-template-columns:repeat(2,1fr)}}

/* Trang giới thiệu (mở bằng trình duyệt, chưa cài app) */
body[data-web] .nav{display:none}
body[data-web] #app{padding-bottom:calc(env(safe-area-inset-bottom) + 96px)}
.lp-hero{padding:18px 2px 4px}
.lp-kick{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:99px;background:var(--glass2);border:1px solid var(--line);font-size:.82rem;font-weight:600}
.lp-kick .ic{width:16px;height:16px;color:var(--brand)}
.lp-hero h1{font-size:clamp(2rem,8.5vw,3rem);line-height:1.1;letter-spacing:-.03em;margin:14px 0 10px}
.lp-hero>.mu{font-size:1rem;max-width:34em}
.lp-cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.lp-cta .btn{flex:1 1 150px}
a.btn{text-decoration:none}
.lp-feat{display:grid;gap:12px;margin-top:22px}
@media (min-width:640px){.lp-feat{grid-template-columns:repeat(3,1fr)}}
.lp-feat .panel{margin-top:0}
.lp-feat h3{margin:10px 0 4px}
.lp-feat p{font-size:.9rem;margin:0}
.lp-ic{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:14px;color:var(--brand);background:color-mix(in srgb,var(--brand) 12%,transparent)}
.lp-map iframe{display:block;width:100%;aspect-ratio:4/3;border:0;border-radius:16px;background:var(--chip)}
.lp-map .item{padding:12px 2px 14px}
.lp-app .btn{margin:12px 0 8px}
.lp-steps{margin:12px 0 0;padding-left:22px;display:grid;gap:10px;font-size:.95rem}
.lp-bar{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 12px);transform:translateX(-50%);z-index:20;
  width:min(440px,calc(100% - 24px));padding:6px;border-radius:26px;background:var(--glass2);
  backdrop-filter:blur(22px) saturate(1.5);-webkit-backdrop-filter:blur(22px) saturate(1.5);border:1px solid var(--line);box-shadow:var(--sh)}
.lp-cta .btn{white-space:nowrap;padding:0 16px}
@media (max-width:639px){.lp-feat .panel{display:grid;grid-template-columns:auto 1fr;column-gap:14px;align-items:start}
  .lp-feat .lp-ic{grid-row:span 2}.lp-feat h3{margin:2px 0 2px}}
.lp-admin{text-align:center;margin:26px 0 0;font-size:.72rem}
.lp-admin a{color:var(--mute);opacity:.55;text-decoration:none;padding:6px 10px}
.lp-admin a:hover,.lp-admin a:focus-visible{opacity:1;text-decoration:underline}

/* Nhập lịch từ Google Calendar */
.imp-list{display:grid;margin-top:8px}
.imp-row{display:grid;grid-template-columns:1fr minmax(120px,46%);gap:10px;align-items:center;padding:10px 0}
.imp-row+.imp-row{border-top:1px solid var(--line)}
.imp-row small{display:block;color:var(--mute);font-size:.8rem;margin:2px 0 4px}
.imp-row select{height:42px;font-size:.9rem;min-width:0}
.chk{display:flex;gap:10px;align-items:flex-start;margin-top:12px;font-size:.9rem;cursor:pointer}
.chk input{width:20px;height:20px;padding:0;margin:1px 0 0;flex:none;accent-color:var(--brand)}
.imp-row.res{grid-template-columns:1fr auto}
.imp-row code{font:600 .9rem ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--ink)}
