/* ===== 控卡日記：清爽專業風 ===== */
:root{
  --bg:#f6f7f9;--card:#ffffff;--card2:#f3f5f8;--line:#e6e9ef;--line2:#eef1f5;
  --text:#0f172a;--ink2:#334155;--mute:#64748b;--soft:#94a3b8;
  --pri:#0e9f6e;--pri-d:#0b7f5a;--pri-l:#e8f7f0;--pri-ll:#f3fbf7;
  --blue:#2a78d6;--blue-l:#eaf2fc;--bad:#d03b3b;--bad-l:#fdeeee;--warn:#c27a00;--warn-l:#fff5e0;--good:#0ca30c;
  --r:16px;--shadow:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.06);
  --navbg:rgba(255,255,255,.94);
  --font:"Inter","Noto Sans TC",system-ui,-apple-system,"PingFang TC","Microsoft JhengHei",sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;font-size:15px}
body{min-height:100vh;padding-bottom:calc(84px + env(safe-area-inset-bottom))}
body.nonav{padding-bottom:24px}body.nonav nav{display:none}
body.noscroll{overflow:hidden}
.wrap{max-width:560px;margin:0 auto;padding:calc(12px + env(safe-area-inset-top)) 16px 16px}
button{font-family:inherit}
.ic{width:20px;height:20px;flex:none;vertical-align:-4px;display:inline-block}
.ic.s{width:16px;height:16px;vertical-align:-3px}.ic.m{width:22px;height:22px}.ic.l{width:28px;height:28px}.ic.xl{width:40px;height:40px}
.hide{display:none!important}
.row{display:flex;gap:10px;align-items:center}.wrapr{flex-wrap:wrap}.grow{flex:1;min-width:0}
.mute{color:var(--mute)}.small{font-size:12.5px}
.hint{font-size:12.5px;color:var(--mute);line-height:1.6;margin-top:8px}
.lbl,.secLbl{font-size:12.5px;font-weight:700;color:var(--mute);margin:16px 0 8px}
.ctr{justify-content:center;text-align:center}

/* 頁首 */
.phead{display:flex;align-items:center;gap:10px;margin:6px 2px 14px}
.phead h1{font-size:24px;font-weight:800;margin:0;letter-spacing:-.3px}
.psub{font-size:13px;color:var(--mute);margin-top:2px;font-weight:500}
.ibtn{width:40px;height:40px;flex:none;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--ink2);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.ibtn:disabled{opacity:.35}.ibtn:active{background:var(--card2)}

/* 卡片 */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:12px;box-shadow:var(--shadow);position:relative}
h2{font-size:15px;margin:0 0 12px;font-weight:700;display:flex;align-items:center;gap:8px;color:var(--text)}
h2 .ic{color:var(--pri)}h2 .r{margin-left:auto;font-size:12px;color:var(--mute);font-weight:500}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.grid2c{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid2c .card{margin-bottom:12px}

/* 按鈕 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:var(--card);color:var(--text);font-size:14.5px;font-weight:600;padding:11px 16px;border-radius:12px;cursor:pointer;transition:background .15s,transform .1s}
.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:default}
.btn.pri{background:var(--pri);border-color:var(--pri);color:#fff}.btn.pri:active{background:var(--pri-d)}
.btn.ai{background:var(--pri-l);border-color:#cdeedf;color:var(--pri-d)}
.btn.ghost{background:var(--card)}
.btn.sm{padding:8px 12px;font-size:13px;border-radius:10px}
.btn.gold{background:var(--pri);border-color:var(--pri);color:#fff}
.gbtn{background:var(--card);border:1px solid var(--line);font-weight:600}
.link{display:block;margin:12px auto 0;background:none;border:none;color:var(--pri-d);font-size:13.5px;font-weight:600;cursor:pointer}
.link.mute{color:var(--mute)}

/* 表單 */
input,select,textarea{background:var(--card2);border:1px solid transparent;color:var(--text);border-radius:12px;padding:11px 13px;font:inherit;font-size:15px;font-weight:500;width:100%;min-width:0;transition:border-color .15s,background .15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--pri);background:var(--card)}
input::placeholder,textarea::placeholder{color:var(--soft)}
label.f{display:block;font-size:12.5px;color:var(--mute);font-weight:600;margin-bottom:10px}label.f>input{margin-top:5px}
.search{display:flex;align-items:center;gap:8px;background:var(--card2);border-radius:12px;padding:0 12px;border:1px solid transparent}
.search:focus-within{border-color:var(--pri);background:var(--card)}.search .ic{color:var(--soft)}
.search input{background:none;border:none;padding:12px 0}.search input:focus{background:none}

/* 載入、橫幅、提示、對話框 */
.loading{display:flex;flex-direction:column;align-items:center;gap:10px;padding:120px 0;color:var(--mute);font-weight:600}.loading .ic{color:var(--pri)}
.banner:empty{display:none}.banner{background:var(--warn-l);color:#8a5a00;border-radius:12px;padding:9px 12px;font-size:13px;margin-bottom:10px;font-weight:600}
#toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(10px);background:#0f172a;color:#fff;padding:10px 16px;border-radius:12px;font-size:14px;font-weight:600;opacity:0;pointer-events:none;transition:all .25s;z-index:90;max-width:88vw;text-align:center}
#toast.show{opacity:1;transform:translateX(-50%)}
.modal{position:fixed;inset:0;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;z-index:95;padding:20px}
.modal .box{background:var(--card);border-radius:20px;padding:22px 20px;width:100%;max-width:380px;text-align:center}
.modal .big{display:flex;justify-content:center;margin-bottom:6px}.modal h3{font-size:18px;margin:6px 0 8px}
.modal input{margin-top:6px}

/* 導覽列 */
nav{position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--navbg);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
nav .in{max-width:560px;margin:0 auto;display:flex}
nav button{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;background:none;border:none;color:var(--soft);font-size:11px;font-weight:600;padding:9px 0 8px;cursor:pointer}
nav button .ic{width:22px;height:22px}nav button.on{color:var(--pri)}

/* 歡迎、登入 */
.welcome{text-align:center;margin:28px 0 18px}.welcome h1{font-size:24px;margin:12px 0 4px;font-weight:800}
.logo{display:inline-flex;width:64px;height:64px;border-radius:18px;background:linear-gradient(145deg,#19c37d,#0e9f6e 55%,#0b7f5a);color:#fff;align-items:center;justify-content:center;box-shadow:0 8px 20px rgba(14,159,110,.3)}
.logo .ic{width:34px;height:34px;stroke-width:2.4}
.orline{display:flex;align-items:center;gap:10px;margin:16px 0 10px;color:var(--soft);font-size:12.5px}
.orline::before,.orline::after{content:"";flex:1;height:1px;background:var(--line)}
.feat{display:grid;gap:8px;margin:14px 4px 0}.feat div{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink2)}.feat .ic{color:var(--pri)}

/* 今天 */
.duebar{display:flex;align-items:center;flex-wrap:wrap;gap:6px;background:var(--warn-l);color:#8a5a00;border-radius:12px;padding:8px 12px;font-size:13px;font-weight:600;margin-bottom:12px}
.duebar button{border:none;background:var(--card);color:#8a5a00;font-size:12.5px;font-weight:700;padding:4px 10px;border-radius:999px;cursor:pointer}
.today{display:grid;grid-template-columns:132px 1fr;gap:14px;align-items:center}
.tring{position:relative;width:132px;height:132px}
.tring svg{width:100%;height:100%}.tring .bg{fill:none;stroke:var(--card2);stroke-width:11}
.tring .fg{fill:none;stroke:var(--pri);stroke-width:11;stroke-linecap:round;transition:stroke-dashoffset .8s}
.tring .fg.over{stroke:var(--bad)}
.tc{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.tc b{font-size:28px;font-weight:800;letter-spacing:-.5px}.tc b.bad{color:var(--bad)}.tc small{font-size:11.5px;color:var(--mute);font-weight:600}
.tstats{display:grid;gap:8px}
.tstats div{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--line2);padding-bottom:6px}
.tstats div:last-child{border:none}
.tstats small{font-size:12.5px;color:var(--mute);font-weight:600}.tstats b{font-size:17px;font-weight:700}
.qadd{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.qadd button{display:flex;flex-direction:column;align-items:center;gap:4px;border:1px solid var(--line);background:var(--card);border-radius:12px;padding:10px 0 8px;font-size:12.5px;font-weight:600;color:var(--ink2);cursor:pointer}
.qadd button .ic{color:var(--pri)}.qadd button:active{background:var(--pri-ll)}
.mini{cursor:pointer;margin-bottom:12px}
.mh{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--mute);font-weight:600}
.mh .ic{color:var(--pri)}
.mv{display:block;font-size:24px;font-weight:800;margin:6px 0 2px;letter-spacing:-.3px}.mv small{font-size:12px;color:var(--mute);font-weight:600}
.msub{font-size:12px;color:var(--mute);font-weight:600;display:flex;align-items:center;gap:3px}.msub.good{color:var(--pri-d)}.msub.bad{color:var(--bad)}
.spark{width:100%;height:34px;margin-top:6px;overflow:visible}.spark polyline{fill:none;stroke:var(--blue);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.spark circle{fill:var(--blue)}
.pbar{height:8px;background:var(--card2);border-radius:99px;overflow:hidden;margin-top:10px}
.pbar i{display:block;height:100%;background:var(--pri);border-radius:99px;transition:width .6s}
.pbar.over i{background:var(--bad)}.pbar.sm{height:6px}.pbar.lg{height:12px}
.wk{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:10px}
.wd{display:flex;flex-direction:column;align-items:center;gap:5px}.wd small{font-size:11.5px;color:var(--mute);font-weight:600}
.wd i{width:34px;height:34px;border-radius:50%;background:var(--card2);display:flex;align-items:center;justify-content:center;font-style:normal;font-weight:800;color:#fff;font-size:14px}
.wd.ok i{background:var(--good)}.wd.near i{background:#e3a300}.wd.over i{background:var(--bad)}.wd.fut i{background:none;border:1.5px dashed var(--line)}
.wd.td i{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--pri)}
.cmini .csum{margin:10px 0 0}
.cav{display:inline-flex;align-items:center;justify-content:center;flex:none;width:36px;height:36px;border-radius:12px;background:linear-gradient(145deg,#19c37d,#0e9f6e);color:#fff}
.cav.m{width:40px;height:40px}.cav.l{width:52px;height:52px;border-radius:16px}.cav.l .ic{width:26px;height:26px}
.ctag{font-size:12px;color:var(--mute);font-weight:600}

/* 紀錄 */
.datebar{display:flex;align-items:center;gap:10px;margin:6px 0 12px;text-align:center}
.datebar b{display:block;font-size:18px;font-weight:800}.datebar small{font-size:12px;color:var(--mute);font-weight:500}
.sumbar{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.sb{flex:1;text-align:center}.sb small{display:block;font-size:12px;color:var(--mute);font-weight:600}.sb b{font-size:19px;font-weight:800}
.sb.good b{color:var(--pri-d)}.sb.bad b{color:var(--bad)}.op{color:var(--soft);font-weight:700}
.sumbar .pbar{flex-basis:100%;margin-top:6px}
.seg4{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:12px}
.act{display:flex;flex-direction:column;align-items:center;gap:2px;border:1px solid var(--line);background:var(--card);border-radius:14px;padding:10px 2px 8px;cursor:pointer;color:var(--ink2)}
.act span{font-size:13px;font-weight:700}.act small{font-size:11px;color:var(--mute);font-weight:500}
.act .ic{color:var(--soft)}.act.on{border-color:var(--pri);background:var(--pri-ll);box-shadow:0 0 0 1px var(--pri) inset}.act.on .ic{color:var(--pri)}
.sugg{margin-top:8px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--card)}
.sugg:empty{display:none}
.sugg button{display:flex;width:100%;align-items:center;gap:8px;background:none;border:none;border-top:1px solid var(--line2);color:var(--text);font-size:14px;font-weight:500;padding:11px 13px;cursor:pointer;text-align:left}
.sugg button:first-child{border-top:none}.sugg button:active{background:var(--card2)}
.sugg .k{margin-left:auto;font-weight:700;white-space:nowrap}.sugg .u{font-size:11.5px;color:var(--mute)}
.sugg .aiopt{background:var(--pri-ll)}.sugg .aiopt span:first-child{color:var(--pri-d);font-weight:700;display:flex;align-items:center;gap:5px}
.picked{display:none;margin-top:10px;background:var(--pri-ll);border:1px solid #cdeedf;border-radius:12px;padding:12px}
.kbig{font-size:24px;font-weight:800;color:var(--pri-d)}
.portions{display:flex;gap:6px;margin-top:10px}
.portions button{flex:1;border:1px solid var(--line);background:var(--card);border-radius:10px;padding:7px 0;font-size:13px;font-weight:600;cursor:pointer;color:var(--ink2)}
.portions button.on{border-color:var(--pri);color:var(--pri-d);background:var(--card);box-shadow:0 0 0 1px var(--pri) inset}
.preview{display:none;position:relative;margin-top:10px}.preview img{width:100%;max-height:220px;object-fit:cover;border-radius:12px}
.preview .x{position:absolute;top:8px;right:8px}
.x{width:28px;height:28px;border-radius:8px;border:none;background:var(--card2);color:var(--mute);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.tiles3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
.tiles2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.tile{display:flex;flex-direction:column;align-items:center;gap:3px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:11px 4px 9px;cursor:pointer;font:inherit;color:var(--text)}
.tile .ic{color:var(--pri)}.tile span{font-size:13px;font-weight:700}.tile small{font-size:11px;color:var(--mute);text-align:center}
.tile:active{background:var(--card2)}.tile:disabled{opacity:.5}
.addbar{display:flex;gap:8px;margin-top:12px}
.kin{display:flex;align-items:center;background:var(--card2);border-radius:12px;padding-right:12px;width:124px;flex:none;border:1px solid transparent}
.kin:focus-within{border-color:var(--pri);background:var(--card)}
.kin input{background:none;border:none;padding:11px 4px 11px 13px;font-size:16px;font-weight:700}.kin input:focus{background:none}
.kin span{font-size:12px;font-weight:600;color:var(--mute);white-space:nowrap}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.qchip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card);border-radius:999px;padding:7px 12px;font-size:13px;font-weight:600;color:var(--ink2);cursor:pointer}
.qchip span{color:var(--mute);font-weight:600}.qchip:active{background:var(--card2)}
.mgrp{border:1px solid var(--line);border-radius:12px;padding:2px 12px;margin-top:8px}
.mgh{display:flex;align-items:center;gap:6px;padding:9px 0 7px;font-size:13px;color:var(--ink2)}
.mgh .ic{color:var(--soft)}.mgh span{margin-left:auto;font-weight:700;color:var(--text)}
.mrow{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line2)}
.mrow>.ic{color:var(--pri)}
.mrow img{width:38px;height:38px;border-radius:10px;object-fit:cover}
.mn{font-size:14px;font-weight:600}.md{font-size:12px;color:var(--mute);margin-top:2px;line-height:1.45}
.mk{font-weight:700;font-size:14.5px}

/* 元件：選項、滑桿、加減 */
.cp{display:flex;gap:6px}
.cp button{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;gap:5px;border:1px solid var(--line);background:var(--card);color:var(--ink2);font-size:13px;font-weight:600;padding:9px 6px;border-radius:10px;cursor:pointer}
.cp button.on{border-color:var(--pri);color:var(--pri-d);background:var(--pri-ll);box-shadow:0 0 0 1px var(--pri) inset}
.cp button .ic{color:currentColor}
.cp.big3 button{flex-direction:column;gap:3px;padding:12px 4px}.cp.big3 button .ic{width:22px;height:22px}
.cp.big3 small{font-size:11px;color:var(--mute);font-weight:500}
.cp.mini{flex:none;margin-left:auto}.cp.mini button{flex:none;padding:6px 14px}
.cp.seg3,.cp.seg2{background:var(--card2);padding:3px;border-radius:12px;gap:3px;border:none}
.cp.seg3 button,.cp.seg2 button{border:none;background:none;padding:8px;color:var(--mute)}
.cp.seg3 button.on,.cp.seg2 button.on{background:var(--card);color:var(--text);box-shadow:0 1px 3px rgba(16,24,40,.1)}
.sl{margin:14px 0 4px}
.slh{display:flex;align-items:center;gap:6px;font-size:13.5px;font-weight:600;color:var(--ink2);margin-bottom:8px}
.slh b{margin-left:auto;font-size:14px;color:var(--text)}.slh b output{font-size:20px;font-weight:800}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:9px;padding:0;border:none;background:linear-gradient(90deg,var(--pri) var(--p,50%),var(--line) var(--p,50%))}
input[type=range]:focus{background:linear-gradient(90deg,var(--pri) var(--p,50%),var(--line) var(--p,50%));border:none}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;background:var(--card);border:2px solid var(--pri);box-shadow:0 1px 4px rgba(16,24,40,.2);cursor:pointer}
input[type=range]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:var(--card);border:2px solid var(--pri)}
.stp{display:flex;align-items:center;gap:10px}
.stp>button{width:52px;height:56px;flex:none;border-radius:14px;border:1px solid var(--line);background:var(--card);color:var(--pri-d);font-size:24px;font-weight:600;cursor:pointer}
.stp>button:active{background:var(--card2)}
.stpv{flex:1;display:flex;align-items:baseline;justify-content:center;gap:4px;background:var(--card2);border-radius:14px;padding:4px 10px}
.stpv input{background:none;text-align:center;font-size:30px;font-weight:800;padding:7px 0;width:100%;border:none}.stpv input:focus{background:none}
.stpv span{font-weight:600;color:var(--mute)}

/* 喝水 */
.water{grid-column:1/-1;flex-basis:100%;display:flex;align-items:center;gap:8px;background:var(--blue-l);border-radius:12px;padding:8px 8px 8px 12px;margin-top:10px}
.water .wl{display:flex;align-items:center;gap:5px;font-size:13px;flex:none;color:var(--blue)}.water .wl b{color:var(--text);font-weight:700}
.water .wl span{font-weight:700;color:var(--blue)}
.cups{flex:1;display:flex;gap:3px;align-items:center;min-width:0;overflow:hidden}
.cups i{flex:1;max-width:13px;height:16px;border-radius:3px 3px 5px 5px;background:#cfe0f6}
.cups i.f{background:var(--blue)}.cups em{font-style:normal;font-size:11px;font-weight:700;color:var(--blue)}
.wb{width:32px;height:32px;flex:none;border-radius:10px;border:none;background:var(--card);color:var(--blue);font-size:18px;font-weight:700;cursor:pointer}
.wb.plus{background:var(--blue);color:#fff}.wb:active{transform:scale(.94)}

/* 教練 */
.ctabs{margin-bottom:14px}
.cempty{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px}.cempty b{display:block;margin-bottom:4px}
.chead{display:flex;gap:14px;align-items:center}
.sring{position:relative;width:64px;height:64px;flex:none}.sring svg{width:100%;height:100%}
.sring .bg{fill:none;stroke:var(--card2);stroke-width:6}.sring .fg{fill:none;stroke:var(--pri);stroke-width:6;stroke-linecap:round}
.sring.g-C .fg{stroke:#e3a300}.sring.g-D .fg{stroke:var(--bad)}
.sring b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:800}
.ctitle{font-size:16px;font-weight:700;margin:3px 0}
.csum{font-size:13.5px;line-height:1.6;color:var(--ink2);margin-top:3px}
.cbars{display:grid;gap:9px;margin:16px 0 4px}
.cbar{display:grid;grid-template-columns:78px 1fr 28px;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:var(--ink2)}
.cbar>span{display:flex;align-items:center;gap:5px}.cbar>span .ic{color:var(--soft)}
.cbar i{height:8px;border-radius:9px;background:var(--card2);overflow:hidden}
.cbar em{display:block;height:100%;border-radius:9px;background:var(--pri);transition:width .6s}
.cbar em.mid{background:#e3a300}.cbar em.lo{background:var(--bad)}.cbar>b{text-align:right;font-size:12px;color:var(--mute)}
.clist{margin-top:12px;border-radius:12px;padding:11px 13px;font-size:13.5px;line-height:1.6}
.clist .clh{font-weight:700;display:flex;align-items:center;gap:6px;margin-bottom:5px;font-size:13px}
.clist.good{background:var(--pri-ll)}.clist.good .clh{color:var(--pri-d)}
.clist.imp{background:var(--warn-l)}.clist.imp .clh{color:#8a5a00}
.clist.imp div b{font-weight:700}.clist.imp div span{display:block;color:var(--ink2);margin:1px 0 4px}
.clist.tom{background:var(--blue-l)}.clist.tom .clh{color:var(--blue)}
.clist>div:not(.clh){padding-left:22px;position:relative}
.clist>div:not(.clh)::before{content:"";position:absolute;left:7px;top:.7em;width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.35}
.cbtns{display:flex;gap:8px;margin-top:14px}
.chprev{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
/* 聊天室 */
.chatSheet{position:fixed;inset:0;z-index:80;background:var(--bg);display:flex;flex-direction:column;max-width:560px;margin:0 auto;animation:chUp .2s ease}
@keyframes chUp{from{transform:translateY(20px);opacity:0}to{transform:none;opacity:1}}
.chHead{display:flex;align-items:center;gap:10px;padding:12px 14px;padding-top:max(12px,env(safe-area-inset-top));background:var(--card);border-bottom:1px solid var(--line)}
.chHead b{display:block;font-size:15.5px}.chHead small{font-size:12px;color:var(--mute)}
.chBody{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px}
.msg{max-width:85%;padding:10px 13px;border-radius:16px;font-size:14.5px;line-height:1.6;word-break:break-word}
.msg.c{background:var(--card);border:1px solid var(--line);align-self:flex-start;border-top-left-radius:6px}
.msg.c b{color:var(--pri-d)}
.msg.u{background:var(--pri);color:#fff;align-self:flex-end;border-top-right-radius:6px}
.msg.err{background:var(--bad-l);border-color:#f6d0d0;color:#9b2c2c}
.msg.typing{display:flex;gap:4px;padding:14px 16px}.msg.typing i{width:7px;height:7px;border-radius:50%;background:var(--soft);animation:tp 1s infinite}
.msg.typing i:nth-child(2){animation-delay:.15s}.msg.typing i:nth-child(3){animation-delay:.3s}
@keyframes tp{0%,60%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-4px);opacity:1}}
.chChips{display:flex;gap:6px;overflow-x:auto;padding:0 14px 8px;scrollbar-width:none}.chChips::-webkit-scrollbar{display:none}
.chChips button{flex:none;border:1px solid var(--line);background:var(--card);color:var(--pri-d);font-size:13px;font-weight:600;padding:7px 12px;border-radius:999px;cursor:pointer}
.chIn{display:flex;gap:8px;padding:10px 12px;padding-bottom:max(10px,env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--line)}
.chIn input{flex:1}.chIn .btn{width:48px;padding:0}

/* 團隊 */
.pintro{text-align:center;padding:22px 18px}.pic{display:inline-flex;width:56px;height:56px;border-radius:16px;background:var(--pri-l);color:var(--pri);align-items:center;justify-content:center}
.pintro h2{margin:12px 0 6px;font-size:18px}
.privacy{display:flex;gap:8px;align-items:flex-start;text-align:left;background:var(--card2);border-radius:12px;padding:10px 12px;font-size:12.5px;line-height:1.6;margin-top:14px;color:var(--ink2)}
.privacy .ic{color:var(--mute);margin-top:2px}
.codein{display:flex;gap:8px}.codein input{text-transform:uppercase;letter-spacing:4px;font-size:18px;font-weight:700;text-align:center}
.chal .chb{display:block;font-size:17px;margin:4px 0 0}.chal .pbar i{background:var(--pri)}
.chal.done{border-color:#bfe8d5;background:var(--pri-ll)}
.cp.brd{margin:0 0 12px}.cp.brd button{gap:5px}
.board{display:grid;gap:2px}
.member{display:flex;align-items:center;gap:10px;padding:10px 4px;border-bottom:1px solid var(--line2)}
.member:last-child{border:none}.member.me{background:var(--pri-ll);border-radius:12px;padding:10px 8px;border-bottom-color:transparent}
.rk{width:22px;text-align:center;font-weight:800;color:var(--soft);flex:none;font-size:14px}.rk.t1{color:#c99400}.rk.t2{color:#8b95a5}.rk.t3{color:#b87333}
.av{width:36px;height:36px;border-radius:50%;flex:none;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:15px}
.mnm{display:flex;align-items:center;gap:6px}.mnm b{font-weight:700;font-size:14.5px}
.mnm .you{background:var(--pri);color:#fff;border-radius:6px;padding:0 6px;font-size:11px;font-weight:600}
.gotc{color:var(--pri-d);font-weight:600}
.mval{text-align:right;flex:none}.mval b{font-size:15px;font-weight:700}
.cheer{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--pri);cursor:pointer;flex:none;display:inline-flex;align-items:center;justify-content:center}
.cheer.on{background:var(--pri-l);border-color:#cdeedf;opacity:.8}.cheer.ph{border:none;background:none;cursor:default}
.pcode{font-size:24px;font-weight:800;letter-spacing:5px;color:var(--text);margin-top:2px}

/* 設定 */
.setup h2{margin-bottom:6px}
.lgroup{background:var(--card2);border-radius:12px;margin-top:10px;overflow:hidden}
.lrow{display:flex;align-items:center;gap:10px;padding:8px 12px;font-size:14px;font-weight:600;border-top:1px solid var(--line);min-height:50px;margin:0;color:var(--ink2)}
.lrow:first-child{border-top:none}.lrow>span{flex:none}.lrow>.ic{color:var(--soft)}
.lin{margin-left:auto;display:flex;align-items:center;gap:4px;min-width:0}
.lin input{background:none;border:none;text-align:right;padding:6px 0;font-size:15.5px;font-weight:700;width:130px;color:var(--text)}.lin input:focus{background:none;color:var(--pri-d)}
.lin input[type=date]{width:150px;font-size:14px}.lin input[type=time]{width:110px;font-size:15px}.lin em{font-style:normal;font-size:12px;color:var(--mute);font-weight:600}
.rmx{border:none;background:none;color:var(--soft);font-size:13px;width:22px;cursor:pointer;flex:none}
.credits{font-size:12.5px;color:var(--mute);line-height:1.8}.credits a{color:var(--pri-d)}

/* 數據儀表板 */
.rangeSeg{margin:0 0 12px}
.kpis{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.kpis.k3{grid-template-columns:repeat(3,1fr);margin:6px 0 0}.kpis.inner{margin:12px 0 0}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;box-shadow:var(--shadow)}
.card .kpi{background:var(--card2);border:none;box-shadow:none;padding:10px 12px}
.kpi small{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--mute)}.kpi small .ic{color:var(--soft)}
.kpi b{display:block;font-size:22px;font-weight:800;margin:4px 0 1px;letter-spacing:-.3px}.kpi b i{font-style:normal;font-size:12px;color:var(--mute);margin-left:3px;font-weight:600}
.kpi b.dim{color:var(--soft)}.card .kpi b{font-size:18px}
.kpi em{display:block;font-style:normal;font-size:11.5px;color:var(--mute);font-weight:500;line-height:1.4}
.kpi.hl{background:var(--pri);border-color:var(--pri);color:#fff}.kpi.hl small,.kpi.hl em,.kpi.hl b i,.kpi.hl small .ic{color:rgba(255,255,255,.85)}
.vc h2{margin:0}.vh{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.vbig{font-size:20px;font-weight:800}.vbig small{font-size:11.5px;color:var(--mute);font-weight:600}
.cv{position:relative;width:100%}
.lgd{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;font-weight:600;color:var(--ink2);margin:4px 0 8px}
.lgd span{display:flex;align-items:center;gap:5px}
.lgd i{display:inline-block;width:14px;height:3px;border-radius:2px;background:var(--c)}
.lgd i.dot{width:8px;height:8px;border-radius:50%;opacity:.5}.lgd i.bar,.lgd i.sq{width:10px;height:10px;border-radius:3px}
.lgd i.dash{background:repeating-linear-gradient(90deg,var(--c) 0 4px,transparent 4px 7px)}
.vnote{font-size:13px;color:var(--ink2);background:var(--card2);border-radius:12px;padding:10px 12px;margin-top:10px;line-height:1.6}.vnote b{color:var(--text)}
.calh{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:6px;font-size:11.5px;font-weight:600;color:var(--mute);text-align:center}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:6px 0 4px}
.cd{aspect-ratio:1;border-radius:10px;background:var(--card2);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;color:#fff;position:relative}
.cd em{position:absolute;right:4px;bottom:2px;font-size:9px;font-style:normal;font-weight:600;opacity:.9}
.cd.none em{color:var(--soft)}.cd.ok{background:var(--good)}.cd.near{background:#e3a300}.cd.over{background:var(--bad)}.cd.pad{background:none}
.cd.today{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--pri)}
.segbar{display:flex;gap:2px;height:14px;border-radius:8px;overflow:hidden;margin:8px 0 12px}.segbar i{display:block;min-width:4px}
.mleg{display:grid;gap:7px}
.mleg>div{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600}
.mleg>div>i{width:10px;height:10px;border-radius:3px;flex:none}.mleg>div>.ic{color:var(--soft)}
.mleg b{margin-left:auto;font-weight:700}.mleg em{font-style:normal;color:var(--mute);font-size:12px;width:76px;text-align:right}
.hbars{display:grid;gap:9px}
.hb{display:grid;grid-template-columns:110px 1fr 50px 34px;align-items:center;gap:8px;font-size:12.5px;font-weight:600}
.hb .hn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hb i{height:8px;background:var(--card2);border-radius:9px;overflow:hidden}.hb em{display:block;height:100%;background:#eb6834;border-radius:9px}
.hb b{text-align:right}.hb small{color:var(--mute);font-size:11px;text-align:right}
details.tbl summary{cursor:pointer;font-weight:700;font-size:14px;display:flex;align-items:center;gap:6px;list-style:none}
details.tbl summary::-webkit-details-marker{display:none}
details.tbl summary::after{content:"";margin-left:auto;width:8px;height:8px;border-right:2px solid var(--soft);border-bottom:2px solid var(--soft);transform:rotate(45deg)}
details.tbl[open] summary::after{transform:rotate(-135deg)}
.tscroll{overflow-x:auto;margin-top:10px}
.tscroll table{width:100%;border-collapse:collapse;font-size:12.5px;white-space:nowrap}
.tscroll th{color:var(--mute);font-weight:600;text-align:right;padding:7px 6px;border-bottom:1px solid var(--line)}
.tscroll td{text-align:right;padding:8px 6px;border-bottom:1px solid var(--line2)}
.tscroll th:first-child,.tscroll td:first-child{text-align:left}.tscroll td.pos{color:var(--pri-d)}.tscroll td.neg{color:var(--bad)}
/* 健康連動 */
.hrow{display:flex;gap:10px;align-items:flex-start}.hrow>.ic{color:var(--pri);margin-top:2px}.hrow b{font-size:14px}
details.guide{margin-top:12px;background:var(--card2);border-radius:12px;padding:10px 12px}
details.guide summary{cursor:pointer;font-weight:700;font-size:13.5px;color:var(--pri-d)}
details.guide ol{margin:10px 0 4px;padding-left:20px;font-size:13px;line-height:1.7;color:var(--ink2)}
details.guide li{margin-bottom:6px}details.guide code{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:0 5px;font-size:12px}
a.btn{text-decoration:none}
/* 營養素 */
.mbars{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.mbars.home{grid-column:1/-1}.mbars.log{flex-basis:100%;margin-top:10px}
.mb .mbh{display:flex;flex-direction:column;gap:1px;margin-bottom:5px}
.mb .mbh span{font-size:11.5px;color:var(--mute);font-weight:600}.mb .mbh b{font-size:14px;font-weight:700}.mb .mbh small{font-size:11px;color:var(--soft);font-weight:600}
.mb i{display:block;height:6px;border-radius:9px;background:var(--card2);overflow:hidden}
.mb em{display:block;height:100%;border-radius:9px;transition:width .6s}
.mb.p em{background:#2a78d6}.mb.c em{background:#eda100}.mb.f em{background:#eb6834}.mb em.over{background:var(--bad)}
.mtag{display:inline-block;font-size:11px;font-weight:600;padding:1px 6px;border-radius:6px;margin-right:4px;background:var(--card2);color:var(--ink2)}
.mtag.p{color:#1f5fae;background:#eaf2fc}.mtag.c{color:#8a5a00;background:#fff5e0}.mtag.f{color:#a8431a;background:#fdeee6}.mtag.e{color:var(--mute)}
.md.mm{margin-top:4px}.pkmac{margin-top:8px}
.pcmp{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px}
.pcmp>div{display:flex;flex-direction:column;gap:6px}
.pcmp img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:12px;background:var(--card2)}
.pcmp select{padding:7px 10px;font-size:13px}.pcmp b{font-size:14px;text-align:center}
label.btn{cursor:pointer}
/* AI 推薦、一週菜單 */
.sglist{display:grid;gap:8px;margin-top:12px}
.sgi{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.sgk{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:none}.sgk b{font-size:16px}.sgk small{font-size:11px;color:var(--mute)}.sgk .btn{margin-top:4px}
.pdays{display:flex;gap:4px;overflow-x:auto;margin-bottom:8px;scrollbar-width:none}.pdays::-webkit-scrollbar{display:none}
.pdays button{flex:none;border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:600;color:var(--ink2);cursor:pointer}
.pdays button.on{background:var(--pri);border-color:var(--pri);color:#fff}
.pm{flex:none;width:36px;font-size:12px;font-weight:700;color:var(--pri-d)}

/* ===== 深色模式 ===== */
:root[data-theme=dark]{
  --bg:#0f141a;--card:#171e26;--card2:#1f2731;--line:#2a3441;--line2:#232c37;
  --text:#e8edf3;--ink2:#c3ccd7;--mute:#8d99a8;--soft:#6b7787;
  --pri:#22b883;--pri-d:#4fd4a2;--pri-l:#17362b;--pri-ll:#14291f;
  --blue:#4c95ea;--blue-l:#16273b;--bad:#ef6b6b;--bad-l:#3a1d1f;--warn:#f0b340;--warn-l:#352a14;--good:#2fc46a;
  --navbg:rgba(23,30,38,.94);--shadow:0 1px 2px rgba(0,0,0,.3);color-scheme:dark}
:root[data-theme=dark] .clist.imp .clh,:root[data-theme=dark] .duebar,:root[data-theme=dark] .duebar button,:root[data-theme=dark] .banner{color:#f0c56a}
:root[data-theme=dark] .clist.imp div span{color:var(--ink2)}
:root[data-theme=dark] .mtag.p{background:#16273b;color:#8dbdf5}:root[data-theme=dark] .mtag.c{background:#352a14;color:#f0c56a}:root[data-theme=dark] .mtag.f{background:#3a2316;color:#f3a37c}
:root[data-theme=dark] #toast{background:#e8edf3;color:#0f141a}
:root[data-theme=dark] .cups i{background:#24384f}
:root[data-theme=dark] .msg.err{border-color:#5a2a2c;color:#f4a6a6}
:root[data-theme=dark] .modal{background:rgba(0,0,0,.6)}
:root[data-theme=dark] .tscroll td.pos{color:var(--pri-d)}
/* 新手引導、空狀態 */
.ob .pbar{margin:10px 0 6px}.obl{display:grid;gap:2px;margin-top:4px}
.obi{display:flex;align-items:center;gap:10px;border:none;background:none;padding:10px 4px;font:inherit;font-size:14px;font-weight:600;color:var(--text);cursor:pointer;text-align:left;border-bottom:1px solid var(--line2)}
.obi:last-child{border:none}.obi>span{flex:1}.obi .ic{color:var(--pri)}.obi.ok{color:var(--mute);text-decoration:line-through}.obi.ok .ic{color:var(--good)}
.intro .box{padding:28px 22px 20px}.intro h3{font-size:19px;margin:14px 0 8px}
.dots{display:flex;gap:6px;justify-content:center;margin-top:16px}.dots i{width:7px;height:7px;border-radius:50%;background:var(--line)}.dots i.on{background:var(--pri);width:18px;border-radius:9px}
.empty{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:24px 10px 10px;color:var(--mute)}.empty .ic{color:var(--soft)}.empty b{color:var(--ink2)}.empty span{font-size:13px;line-height:1.6}
.mh .link{margin:0 0 0 auto;display:inline-flex;align-items:center;gap:4px;font-size:12.5px}
/* 纖維／糖／鈉 */
.micro{flex-basis:100%;display:flex;align-items:center;gap:6px;margin-top:10px;flex-wrap:wrap}
.micro .mi{flex:1;min-width:0;background:var(--card2);border-radius:10px;padding:6px 8px;display:flex;flex-direction:column;gap:1px}
.micro .mi span{font-size:11px;color:var(--mute);font-weight:600}.micro .mi b{font-size:13.5px;font-weight:700;white-space:nowrap}.micro .mi small{font-size:10.5px;color:var(--soft);font-weight:600}
.micro .mi.bad{background:var(--bad-l)}.micro .mi.bad b{color:var(--bad)}.micro .mi.good b{color:var(--pri-d)}
/* 語音 */
.search .mic{flex:none;width:34px;height:34px;border-radius:50%;border:none;background:none;color:var(--pri-d);display:grid;place-items:center;cursor:pointer;margin-right:-6px}
.search .mic.rec{background:var(--bad);color:#fff;animation:micp 1.2s infinite}
@keyframes micp{0%{box-shadow:0 0 0 0 rgba(208,59,59,.45)}70%{box-shadow:0 0 0 10px rgba(208,59,59,0)}100%{box-shadow:0 0 0 0 rgba(208,59,59,0)}}
.vtext{background:var(--card2);border-radius:10px;padding:8px 10px;font-size:13.5px;color:var(--ink2)}
.vrows{margin-top:12px;max-height:46vh;overflow:auto}
.vrow{display:flex;align-items:center;gap:6px;margin-bottom:8px}
.vrow .vn{flex:1;min-width:0;padding:9px 10px;font-size:14px}
.vrow .vk{display:flex;align-items:center;gap:4px;flex:none}.vrow .vk input{width:76px;padding:9px 8px;font-size:14px;text-align:right}.vrow .vk em{font-style:normal;font-size:12px;color:var(--mute)}
.qchip.on{background:var(--pri);color:#fff;border-color:var(--pri)}
textarea{resize:vertical;line-height:1.5}
/* 我的組合 */
.mgsave{border:none;background:none;color:var(--soft);padding:2px 0 2px 6px;cursor:pointer;display:grid;place-items:center}.mgsave:hover{color:var(--pri-d)}
.qchip.combo{padding:0;gap:0;overflow:hidden}.qchip.combo button{border:none;background:none;font:inherit;color:inherit;display:inline-flex;align-items:center;gap:6px;padding:7px 4px 7px 12px;cursor:pointer}
.qchip.combo .ic{color:var(--pri-d)}.qchip.combo .cbx{padding:7px 10px 7px 4px;color:var(--soft)}
/* 斷食 */
.card.fast .fring{position:relative;width:64px;height:64px;flex:none;display:grid;place-items:center;color:var(--pri-d)}
.card.fast .fring svg{position:absolute;inset:0;width:100%;height:100%}
.card.fast .fring .bg{fill:none;stroke:var(--card2);stroke-width:7}.card.fast .fring .fg{fill:none;stroke:#6250d6;stroke-width:7;stroke-linecap:round;transition:stroke-dashoffset .6s}
.card.fast .fring .fg.done{stroke:var(--pri)}
.card.fast .fbig{font-size:26px;font-weight:800;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.card.fast .row{gap:12px}
.ibtn.sm{width:32px;height:32px;border-radius:10px;margin-right:6px}
/* 食譜 */
.box.rcp{max-height:86vh;overflow:auto}
.ingr{display:grid;grid-template-columns:1fr 1fr;gap:4px 14px;font-size:13.5px}.ingr div{display:flex;justify-content:space-between;gap:6px;border-bottom:1px dashed var(--line);padding:4px 0}.ingr b{font-weight:600;color:var(--ink2)}
.steps{margin:4px 0 0;padding-left:20px;font-size:13.5px;line-height:1.65}.steps li{margin-bottom:5px}
/* 採買清單 */
.shg{margin-top:10px}.shh{font-size:12px;font-weight:700;color:var(--mute);margin-bottom:2px}
.shi{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line);font-size:14px;cursor:pointer}
.shi input{width:18px;height:18px;padding:0;flex:none;accent-color:var(--pri)}.shi em{font-style:normal;font-size:12.5px;color:var(--mute)}
.shi.ok span{text-decoration:line-through;color:var(--soft)}.shi .x{margin-left:2px}
.search .mic .ic{color:var(--pri-d)}.search .mic.rec .ic{color:#fff}
.vtot{text-align:right;font-size:13px;color:var(--mute);margin-top:2px}.vtot b{color:var(--text);font-size:15px}
.card.fast .fbig small{font-size:13px;font-weight:600;color:var(--mute)}

/* ================================================================
   淺色漸層活力風（v6）：漸層主色、各類別專屬色、大圓角、彩色圖示泡泡
   ================================================================ */
:root{
  --r:20px;--g1:#22c55e;--g2:#14b8a6;--g3:#3b82f6;
  --grad:linear-gradient(135deg,#22c55e 0%,#14b8a6 52%,#3b82f6 100%);
  --grad-s:linear-gradient(135deg,#e9fbf1 0%,#e6f8f8 50%,#eaf1ff 100%);
  --c-food:#ff7a45;--c-food-l:#fff1ea;--c-ex:#3b82f6;--c-ex-l:#eaf2ff;--c-wt:#8b5cf6;--c-wt-l:#f3edff;--c-sl:#6366f1;--c-sl-l:#eef0ff;--c-wa:#06b6d4;--c-wa-l:#e6f9fc;
  --shadow:0 2px 6px rgba(30,60,90,.05),0 8px 24px rgba(30,60,90,.06);
}
:root[data-theme=dark]{--grad-s:linear-gradient(135deg,#123326 0%,#11302f 50%,#152647 100%);--c-food-l:#3a2418;--c-ex-l:#172a47;--c-wt-l:#2a1f45;--c-sl-l:#1f2247;--c-wa-l:#11343b}
:root[data-theme=light]{--bg:#f4f8fb}
:root[data-theme=light] body{background:radial-gradient(900px 420px at 110% -80px,rgba(59,130,246,.14),transparent 60%),radial-gradient(700px 380px at -20% -40px,rgba(34,197,94,.16),transparent 60%),radial-gradient(600px 500px at 50% 120%,rgba(20,184,166,.08),transparent 60%),var(--bg);background-attachment:fixed}
.card{border-color:transparent;border-radius:var(--r);box-shadow:var(--shadow)}
:root[data-theme=dark] .card{border-color:var(--line)}
h2 .ic,.mh .ic{color:var(--g2)}
/* 頁首：名字漸層字 */
.phead h1{font-size:26px}
.phead h1,.welcome h1{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.phead .ibtn{border:none;box-shadow:var(--shadow)}
/* 按鈕 */
.btn{border-radius:14px}
.btn.pri,.btn.gold{background:var(--grad);border:none;box-shadow:0 6px 16px rgba(20,184,166,.28)}
.btn.pri:active,.btn.gold:active{filter:brightness(.95)}
.btn.ai{background:var(--grad-s);border:1px solid rgba(20,184,166,.25);color:#0b7f6f}
:root[data-theme=dark] .btn.ai{color:#7ee8d3}
.btn.ghost{border-color:var(--line)}
/* 今日圓環：漸層 */
.tring .fg{stroke:url(#gPri)}.tring .fg.over{stroke:var(--bad)}
.tring .bg{stroke:var(--line2)}
.ring .rfg{stroke:url(#gPri)}
.pbar i{background:var(--grad)}.pbar.over i{background:var(--bad)}
/* 主卡：淡漸層底 */
.card.today{background:linear-gradient(160deg,#ffffff 40%,#f0fbf6 75%,#eef4ff 100%)}
:root[data-theme=dark] .card.today{background:linear-gradient(160deg,var(--card) 45%,#12261f 80%,#141f36 100%)}
/* 彩色圖示泡泡：快速記錄、記錄頁分頁、拍照/標示/條碼 */
.qadd button,.act,.tile{border:none;background:var(--card2);border-radius:16px}
.qadd button .ic,.act .ic,.tile .ic{width:38px;height:38px;padding:9px;border-radius:13px;color:#fff;box-sizing:border-box}
.qadd button[data-go=food] .ic,.act[data-sec=food] .ic{background:linear-gradient(135deg,#ffb36b,#ff7a45)}
.qadd button[data-go=ex] .ic,.act[data-sec=ex] .ic{background:linear-gradient(135deg,#60a5fa,#3b82f6)}
.qadd button[data-go=weight] .ic,.act[data-sec=weight] .ic{background:linear-gradient(135deg,#c084fc,#8b5cf6)}
.qadd button[data-go=sleep] .ic,.act[data-sec=sleep] .ic{background:linear-gradient(135deg,#818cf8,#6366f1)}
.act{padding:10px 2px 9px;gap:4px}.act .ic{filter:saturate(.55) opacity(.75)}
.act.on{background:var(--card);box-shadow:0 0 0 2px rgba(20,184,166,.55) inset,var(--shadow);border:none}.act.on .ic{filter:none}
.act[data-sec=food].on{box-shadow:0 0 0 2px var(--c-food) inset,var(--shadow)}.act[data-sec=ex].on{box-shadow:0 0 0 2px var(--c-ex) inset,var(--shadow)}
.act[data-sec=weight].on{box-shadow:0 0 0 2px var(--c-wt) inset,var(--shadow)}.act[data-sec=sleep].on{box-shadow:0 0 0 2px var(--c-sl) inset,var(--shadow)}
.tile:nth-child(1) .ic{background:linear-gradient(135deg,#34d399,#14b8a6)}
.tile:nth-child(2) .ic{background:linear-gradient(135deg,#fbbf24,#f59e0b)}
.tile:nth-child(3) .ic{background:linear-gradient(135deg,#60a5fa,#6366f1)}
.qadd button:active,.tile:active{filter:brightness(.97)}
/* 喝水列 */
.water,.wrow{border-radius:16px}
/* 營養素條：漸層 */
.mb.p em{background:linear-gradient(90deg,#60a5fa,#2563eb)}.mb.c em{background:linear-gradient(90deg,#fcd34d,#f59e0b)}.mb.f em{background:linear-gradient(90deg,#fdba74,#f97316)}.mb em.over{background:var(--bad)}
.micro .mi{border-radius:12px}
/* 教練、推薦、斷食卡：各自的淡色調 */
.card.cmini{background:linear-gradient(150deg,#f5f0ff 0%,#eef4ff 60%,#ffffff 100%)}
.card.sugg2{background:linear-gradient(150deg,#fff5ec 0%,#fffaf4 60%,#ffffff 100%)}
.card.fast{background:linear-gradient(150deg,#f3efff 0%,#fbf0ff 60%,#ffffff 100%)}
:root[data-theme=dark] .card.cmini{background:linear-gradient(150deg,#221c3d,var(--card) 70%)}
:root[data-theme=dark] .card.sugg2{background:linear-gradient(150deg,#33231a,var(--card) 70%)}
:root[data-theme=dark] .card.fast{background:linear-gradient(150deg,#271d40,var(--card) 70%)}
.cav{background:linear-gradient(135deg,#a78bfa,#6366f1);border-radius:14px;box-shadow:0 6px 14px rgba(99,102,241,.28)}
.card.sugg2 .cav{background:linear-gradient(135deg,#ffb36b,#ff7a45);box-shadow:0 6px 14px rgba(255,122,69,.28)}
.card.fast .cav{background:linear-gradient(135deg,#c084fc,#8b5cf6)}
.card.fast .fring .fg{stroke:url(#gFast)}.card.fast .fring .fg.done{stroke:url(#gPri)}.card.fast .fring{color:#8b5cf6}
.card.mini .mv{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
/* 本週格子 */
.wd.ok i{background:var(--grad)}
/* 膠囊、選項 */
.qchip{border:none;background:var(--card);box-shadow:0 1px 2px rgba(30,60,90,.06),0 0 0 1px var(--line) inset}
.qchip.on,.cp button.on:not(.seg3 button):not(.seg2 button){background:var(--grad);color:#fff;box-shadow:none}
.cp.seg3,.cp.seg2{border-radius:14px}.cp.seg3 button.on,.cp.seg2 button.on{color:var(--g2);font-weight:700}
input:focus,select:focus,textarea:focus{border-color:var(--g2);box-shadow:0 0 0 3px rgba(20,184,166,.15)}
.search{border-radius:16px}.search:focus-within{border-color:var(--g2);box-shadow:0 0 0 3px rgba(20,184,166,.15)}
.search .mic{background:var(--grad);margin-right:-6px}.search .mic .ic{color:#fff}
/* 底部導覽：選中的分頁漸層泡泡 */
nav{border-top:none;box-shadow:0 -6px 24px rgba(30,60,90,.07)}
nav button i{display:grid;place-items:center;width:46px;height:30px;border-radius:15px;transition:background .2s}
nav button.on{color:var(--g2)}nav button.on i{background:var(--grad)}nav button.on .ic{color:#fff}
/* 彈窗 */
.modal .box{border-radius:24px}
/* 登入／歡迎頁 */
.welcome .logo{background:var(--grad);box-shadow:0 12px 30px rgba(20,184,166,.35)}

/* ===== v7：首頁滿版漸層主卡、減少框中框、統一色彩 ===== */
.phead h1{background:none;-webkit-background-clip:initial;background-clip:initial;color:var(--text)}
.welcome h1{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
/* 主卡 */
.card.today,:root[data-theme=dark] .card.today{background:linear-gradient(140deg,#16c172 0%,#12b5a6 48%,#3b82f6 100%);color:#fff;border:none;
  box-shadow:0 14px 34px rgba(20,160,150,.32);overflow:hidden;padding:18px}
:root[data-theme=dark] .card.today{background:linear-gradient(140deg,#13854f 0%,#0f766e 50%,#1d4ed8 100%);box-shadow:none}
.card.today::before{content:"";position:absolute;width:260px;height:260px;right:-90px;top:-110px;border-radius:50%;background:rgba(255,255,255,.12);pointer-events:none}
.card.today::after{content:"";position:absolute;width:180px;height:180px;left:-70px;bottom:-90px;border-radius:50%;background:rgba(255,255,255,.08);pointer-events:none}
.card.today>*{position:relative;z-index:1}
.card.today .tring .bg{stroke:rgba(255,255,255,.22)}
.card.today .tring .fg{stroke:#fff;filter:drop-shadow(0 0 6px rgba(255,255,255,.55))}
.card.today .tring .fg.over{stroke:#ffd0c7}
.card.today .tc b,.card.today .tc b.bad{color:#fff;font-size:30px}.card.today .tc small{color:rgba(255,255,255,.85)}
.card.today .tstats div{border-color:rgba(255,255,255,.2)}
.card.today .tstats small{color:rgba(255,255,255,.8)}.card.today .tstats b{color:#fff}
.card.today .mb .mbh span{color:rgba(255,255,255,.82)}.card.today .mb .mbh b{color:#fff}.card.today .mb .mbh small{color:rgba(255,255,255,.7)}
.card.today .mb i{background:rgba(255,255,255,.22)}.card.today .mb em,.card.today .mb.p em,.card.today .mb.c em,.card.today .mb.f em{background:#fff}
.card.today .mb em.over{background:#ffd0c7}
/* 主卡裡的快速記錄：半透明白泡泡 */
.card.today .qadd button{background:rgba(255,255,255,.16);color:#fff;border:none;backdrop-filter:blur(4px)}
.card.today .qadd button .ic,.card.today .qadd button[data-go] .ic{background:rgba(255,255,255,.95);color:#0f9f8f;width:36px;height:36px;padding:8px;box-shadow:0 4px 10px rgba(0,0,0,.08)}
.card.today .qadd button[data-go=food] .ic{color:#f26a2e}.card.today .qadd button[data-go=ex] .ic{color:#2563eb}
.card.today .qadd button[data-go=weight] .ic{color:#7c3aed}.card.today .qadd button[data-go=sleep] .ic{color:#4f46e5}
.card.today .qadd button:active{background:rgba(255,255,255,.26)}
.card.today .water{background:rgba(255,255,255,.16)}.card.today .water .wl,.card.today .water .wl b,.card.today .water .wl span{color:#fff}
.card.today .cups i{background:rgba(255,255,255,.3)}.card.today .cups i.f{background:#fff}.card.today .cups em{color:#fff}
.card.today .wb{background:rgba(255,255,255,.22);color:#fff}.card.today .wb.plus{background:#fff;color:#0f9f8f}
/* 喝水（記錄頁）改成青色系，跟主色一致 */
.water{background:var(--c-wa-l)}.water .wl,.water .wl span,.cups em{color:#0891b2}.cups i{background:#bfeef6}.cups i.f{background:linear-gradient(180deg,#22d3ee,#0891b2)}
.wb{color:#0891b2}.wb.plus{background:linear-gradient(135deg,#22d3ee,#0891b2);color:#fff}
:root[data-theme=dark] .cups i{background:#1f4650}
/* 減少框中框：記錄頁分頁、拍照按鈕改白卡＋陰影 */
.act,.tile{background:var(--card);box-shadow:var(--shadow)}
.sec .tile{box-shadow:none;background:var(--card2)}
/* 開始使用清單：精簡 */
.card.ob{padding:14px 16px}.card.ob .obi{padding:9px 0}
/* 首頁小卡數字不用漸層，避免太花 */
.card.mini .mv{background:none;-webkit-background-clip:initial;background-clip:initial;color:var(--text)}
:root[data-theme=dark] .card.today .cups i{background:rgba(255,255,255,.25)}:root[data-theme=dark] .card.today .cups i.f{background:#fff}
/* 數據頁分頁 */
.dtabs{display:flex;gap:6px;margin-bottom:10px;overflow-x:auto}
.dtabs button{flex:1;white-space:nowrap;border:none;background:var(--card);box-shadow:var(--shadow);border-radius:999px;padding:9px 12px;font:inherit;font-size:13.5px;font-weight:700;color:var(--ink2);cursor:pointer}
.dtabs button.on{background:var(--grad);color:#fff;box-shadow:0 6px 14px rgba(20,184,166,.25)}
.datebar .ibtn[data-setgo]{margin-left:6px}
/* 數據頁：精簡高度 */
.cal{gap:4px}.calh{gap:4px}
.cd{aspect-ratio:auto;height:30px;border-radius:8px;font-size:12px}.cd em{font-size:8.5px;right:3px;bottom:1px}
.cd.ok{background:linear-gradient(135deg,#22c55e,#14b8a6)}
.kpi.hl{background:var(--grad);border:none}
/* 照片拆解 */
.box.plate{max-height:88vh;overflow:auto}
.plist{margin-top:10px;border-top:1px solid var(--line)}
.pl{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);cursor:pointer}
.pl input{width:18px;height:18px;padding:0;flex:none;accent-color:var(--g2)}
.pl b{display:block;font-size:14px;font-weight:600;line-height:1.35}.pl em{font-style:normal;font-size:12px;color:var(--mute)}
.pl .pk{flex:none;font-size:13.5px;font-weight:700;white-space:nowrap}.pl .pk small{font-weight:500;color:var(--mute);font-size:11.5px}
.pl.off b,.pl.off .pk{color:var(--soft);text-decoration:line-through}
.ptot{display:flex;justify-content:space-between;align-items:baseline;padding:10px 0 2px}.ptot span{font-size:13px;color:var(--mute);font-weight:600}.ptot b{font-size:18px;font-weight:800}
.aifail{display:flex;align-items:flex-start;gap:10px;background:var(--c-food-l);border-radius:14px;padding:10px 12px;margin-top:8px}
.aifail>.ic{color:#e0661f;flex:none;margin-top:2px}.aifail b{display:block;font-size:13.5px}.aifail small{display:block;font-size:12px;color:var(--ink2);line-height:1.5;margin-top:2px}
.aifail .btn{flex:none;align-self:center}
.sugg .aifail{margin:0;border-radius:inherit}
.sugg .aifail button.btn{width:auto;flex:none;background:var(--grad);color:#fff;border:none;padding:8px 14px;border-radius:12px;font-size:13px;font-weight:700;white-space:nowrap}
/* v10：拍菜單、自動校正、平台期、回饋、份量調整 */
.tiles4{grid-template-columns:repeat(4,1fr)!important}.tiles4 .tile small{font-size:10.5px}.tiles4 .tile span{font-size:13px}
.tile:nth-child(4) .ic{background:linear-gradient(135deg,#f472b6,#e11d48)}
.box.menu{max-height:88vh;overflow:auto}
.mpick{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:14px;background:var(--card2);margin-top:8px}
.mpick.top{background:var(--grad-s);box-shadow:0 0 0 1.5px rgba(20,184,166,.35) inset}
.mpick .mrk{font-size:11px;font-weight:700;color:var(--g2)}.mpick b{display:block;font-size:14.5px}.mpick small{display:block;font-size:12px;color:var(--ink2);margin-top:2px}.mpick .md{font-size:12px;color:var(--mute);margin-top:3px}
.mavoid div{padding:7px 0;border-bottom:1px solid var(--line);font-size:13.5px}.mavoid span{color:var(--bad);font-weight:700;font-size:12.5px}.mavoid small{display:block;font-size:12px;color:var(--mute)}
.card.adapt .vh{align-items:center}.cp.mini{width:auto;min-width:96px}.cp.mini button{padding:5px 10px;font-size:12.5px}
.adrow{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:4px}.adrow>div{background:var(--card2);border-radius:12px;padding:8px 10px}
.adrow small{display:block;font-size:11.5px;color:var(--mute);font-weight:600}.adrow b{font-size:20px;font-weight:800}.adrow em{font-style:normal;font-size:11px;color:var(--mute);font-weight:600}
.adrow>div:first-child b{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.card.plat{background:linear-gradient(150deg,#fff7e6 0%,#fffbf3 60%,#fff 100%)}:root[data-theme=dark] .card.plat{background:linear-gradient(150deg,#33281a,var(--card) 70%)}
.card.plat .cav{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.card.plat .row{gap:12px;align-items:center}
.platr{margin:10px 0 0;padding-left:20px;font-size:13.5px;line-height:1.6}.platr li{margin-bottom:3px}
.card.fbcard .row{gap:12px;align-items:center}.card.fbcard .cav{background:linear-gradient(135deg,#f472b6,#e11d48)}
.linkbtn{display:block;margin:6px auto 2px;background:none;border:none;color:var(--mute);font-size:12px;text-decoration:underline;cursor:pointer}
.sugg .linkbtn{width:auto;border:none;padding:6px;display:block;margin:0 auto}
.box.fbadm{max-height:88vh;overflow:auto}.fbi{padding:10px 0;border-bottom:1px solid var(--line)}
.fbh{display:flex;align-items:center;gap:8px}.fbh b{font-size:13.5px}.fbh small{color:var(--mute);font-size:11.5px;margin-left:auto}
.tg{font-size:11px;font-weight:700;padding:2px 8px;border-radius:99px;background:var(--card2)}.tg.bug{background:#ffe4e1;color:#c2410c}.tg.idea{background:#e0f2fe;color:#0369a1}
.fbt{font-size:13.5px;margin-top:6px;white-space:pre-wrap;line-height:1.55}.fbimg{max-width:100%;border-radius:10px;margin-top:6px}.fbm{font-size:11px;color:var(--soft);margin-top:4px;word-break:break-all}
/* 拆解：份量加減 */
.pl .pr{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:none}
.pq{display:flex;align-items:center;gap:2px;background:var(--card2);border-radius:99px;padding:2px}
.pq button{width:26px;height:26px;border-radius:50%;border:none;background:var(--card);display:grid;place-items:center;cursor:pointer;color:var(--ink2);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.pq em{font-style:normal;font-size:12px;font-weight:700;min-width:34px;text-align:center}
.pl.off .pq em{color:var(--bad)}.pl{cursor:default}.myt{font-style:normal;color:var(--g2);font-weight:700}
.pedit{border:none;background:none;padding:0 0 0 6px;color:var(--soft);cursor:pointer;vertical-align:-2px}.pedit .ic{width:14px;height:14px}
.pl.ed{gap:8px;align-items:center}.pl.ed .grow{display:flex;flex-direction:column;gap:6px}
.pl.ed .pen{padding:8px 10px;font-size:14px}.pek{display:flex;align-items:center;gap:6px}.pek input{width:96px;padding:8px 10px;font-size:14px}.pek em{font-style:normal;font-size:12px;color:var(--mute)}
/* 查餐廳 */
.sugg .aiopt.rs{background:var(--c-ex-l)}.sugg .aiopt.rs span:first-child{color:#2563eb}
.box.rsbox{max-height:88vh;overflow:auto}.rslist{margin-top:8px}
.rsi{display:flex;width:100%;align-items:center;gap:10px;padding:10px 4px;border:none;border-bottom:1px solid var(--line);background:none;text-align:left;font:inherit;color:var(--text);cursor:pointer}
.rsi:active{background:var(--card2)}.rsi b{display:block;font-size:14px;font-weight:600}.rsi small{font-size:12px;color:var(--mute)}
.rk{display:flex;flex-direction:column;align-items:flex-end;flex:none}.rk b{font-size:15px;font-weight:800}
.sb{font-style:normal;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:99px;margin-top:2px}
.sb.off{background:#dcfce7;color:#15803d}.sb.web{background:#e0f2fe;color:#0369a1}.sb.est{background:var(--card2);color:var(--mute)}
.rsi .rk{min-width:72px;white-space:nowrap;gap:2px}.rsi .rk b{display:inline;color:var(--text);font-size:15px}.rsi .rk small{display:inline;margin-left:2px}
.rsi .rk>b+small{display:inline}.rsi .rk{flex-direction:row;flex-wrap:wrap;justify-content:flex-end;align-items:baseline}.rsi .rk .sb{flex-basis:auto;margin-left:0}
.rsi .rk .sb{display:block;width:fit-content;margin-left:auto}
.refs a{display:block;padding:7px 0;border-bottom:1px solid var(--line);font-size:13px;color:var(--text);text-decoration:none;line-height:1.4}
.refs a small{display:block;font-size:11px;color:var(--mute)}.refs a:active{background:var(--card2)}
.rsi.foc{background:var(--grad-s);border-radius:12px;padding-left:10px;padding-right:10px;border-bottom-color:transparent;margin-bottom:2px}
.sb.crowd{background:#fef3c7;color:#b45309}
/* AI 教練回覆的段落標題 */
.msg .chH{display:block;margin:8px 0 2px;color:var(--pri,#0d9488);font-weight:700}
.msg .chH:first-child{margin-top:0}

/* =====================================================================
   v19：營養標示風 —— 去掉漸層與 AI 感，安靜的紙白底、墨色字、一個葉綠主色。
   唯一的大動作：首頁今日熱量卡做成「營養標示」框（粗黑線＋大號數字）。
   ===================================================================== */
:root,:root[data-theme=light]{
  --bg:#f3f4f1;--card:#ffffff;--card2:#eff1ec;--line:#dfe3dc;--line2:#ebeee8;
  --text:#18211d;--ink2:#4b5650;--mute:#737d77;--soft:#a3aba6;
  --pri:#1e6b47;--pri-d:#16543a;--pri-l:#e6f0ea;--pri-ll:#f1f6f2;
  --bad:#b3352b;--bad-l:#f8e9e7;--warn:#a86b12;--warn-l:#f7efdf;--good:#1e6b47;
  --g1:#1e6b47;--g2:#1e6b47;--g3:#1e6b47;--grad:var(--pri);--grad-s:var(--pri-ll);
  --mp:#355e9e;--mc:#b5892a;--mf:#a2552f;
  --c-food:#a2552f;--c-food-l:#f5ece7;--c-ex:#355e9e;--c-ex-l:#e9eef6;--c-wt:#4b5650;--c-wt-l:#eff1ec;--c-sl:#4b5650;--c-sl-l:#eff1ec;
  --r:14px;--shadow:none;--navbg:#ffffff;
  --font:"Noto Sans TC",system-ui,-apple-system,"PingFang TC","Microsoft JhengHei",sans-serif;
  --num:"Archivo","Noto Sans TC",system-ui,sans-serif;
}
:root[data-theme=dark]{
  --bg:#121614;--card:#1a1f1c;--card2:#222825;--line:#2c3430;--line2:#262d29;
  --text:#e8ece9;--ink2:#c0c8c3;--mute:#8d9792;--soft:#66706b;
  --pri:#4cb07d;--pri-d:#3d9467;--pri-l:#1e3328;--pri-ll:#19271f;--bad:#e2685d;--bad-l:#3a201d;
  --grad:var(--pri);--grad-s:var(--pri-ll);--c-food-l:#2c221d;--c-ex-l:#1d2533;--c-wt-l:#222825;--c-sl-l:#222825;--navbg:#1a1f1c;
}
:root[data-theme=light] body,body{background:var(--bg)}
/* 數字：營養標示那種粗、窄的字 */
.tl-big b,.tl-rows b,.tstats b,.tc b,.mv,.kpi b,.adrow b,.ptot b,.rk b,.pl .pk,.mbh b,.wv,.fbig,.vh b,.scoreN{font-family:var(--num);font-variation-settings:"wdth" 75;font-feature-settings:"tnum"}
/* 卡片：平的，細線，不要陰影 */
.card,:root[data-theme=dark] .card{border:1px solid var(--line);box-shadow:none;border-radius:var(--r)}
.card.cmini,.card.sugg2,.card.fast,.card.plat,.card.fbcard,.card.today,
:root[data-theme=dark] .card.cmini,:root[data-theme=dark] .card.sugg2,:root[data-theme=dark] .card.fast,:root[data-theme=dark] .card.plat{background:var(--card)}
.card.today::before,.card.today::after{display:none}
h2 .ic,.mh .ic{color:var(--ink2)}
.phead h1,.welcome h1{background:none;-webkit-background-clip:initial;background-clip:initial;color:var(--text);font-weight:900;letter-spacing:-.02em}
.phead .ibtn{border:1px solid var(--line);box-shadow:none}
/* 按鈕 */
.btn{border-radius:10px}
.btn.pri,.btn.gold{background:var(--pri);border:1px solid var(--pri);color:#fff;box-shadow:none}
.btn.pri:active,.btn.gold:active{background:var(--pri-d);filter:none}
.btn.ai,:root[data-theme=dark] .btn.ai{background:var(--card);border:1px solid var(--text);color:var(--text)}
.btn.ai:active{background:var(--card2)}
.sugg .aifail button.btn{background:var(--pri)}
/* 圖示方塊：同一種安靜的做法，墨色圖示放在淺底上 */
.cav,.card.sugg2 .cav,.card.fast .cav,.card.plat .cav,.card.fbcard .cav{background:var(--card2);color:var(--text);box-shadow:none;border-radius:10px;border:1px solid var(--line)}
.qadd button .ic,.act .ic,.tile .ic,.qadd button[data-go] .ic,.act[data-sec] .ic,.tile:nth-child(n) .ic{background:none;color:var(--text);filter:none;padding:0;width:24px;height:24px;border-radius:0;box-shadow:none}
.qadd button,.act,.tile,.sec .tile{background:var(--card);border:1px solid var(--line);box-shadow:none;border-radius:12px;color:var(--text)}
.act.on,.act[data-sec].on{background:var(--text);border-color:var(--text);box-shadow:none;color:var(--card)}
.act.on .ic{color:var(--card)}
/* ===== 首頁今日熱量：營養標示框 ===== */
.card.today,:root[data-theme=dark] .card.today{color:var(--text);border:2px solid var(--text);border-radius:6px;padding:14px 16px 16px;box-shadow:none;overflow:visible}
.tl-h{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;font-weight:700;padding-bottom:6px;border-bottom:8px solid var(--text)}
.tl-h span:first-child{font-size:17px;font-weight:900}
.tl-h span:last-child{color:var(--ink2);font-weight:600}
.tl-big{display:flex;align-items:baseline;gap:8px;padding:8px 0 4px}
.tl-big b{font-size:68px;line-height:1;font-weight:900;letter-spacing:-.01em}
.tl-big small{font-size:15px;font-weight:700;color:var(--ink2)}
.tl-big.over b{color:var(--bad)}
.tl-bar{height:10px;background:var(--card2);border:1px solid var(--text);border-radius:2px;overflow:hidden;margin:4px 0 2px}
.tl-bar i{display:block;height:100%;background:var(--text)}
.tl-bar.over i{background:var(--bad)}
.tl-rows{border-top:3px solid var(--text);margin-top:10px}
.tl-rows div{display:flex;justify-content:space-between;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--line);font-size:14px}
.tl-rows span{font-weight:600}.tl-rows b{font-size:19px;font-weight:800}
.card.today .mb .mbh span,.card.today .mb .mbh small{color:var(--ink2)}.card.today .mb .mbh b{color:var(--text)}
.card.today .mb i,.mb i{background:var(--card2)}
.card.today .mb.p em,.mb.p em{background:var(--mp)}.card.today .mb.c em,.mb.c em{background:var(--mc)}.card.today .mb.f em,.mb.f em{background:var(--mf)}
.card.today .mb em.over,.mb em.over{background:var(--bad)}
.card.today .qadd button,:root[data-theme=dark] .card.today .qadd button{background:var(--card);color:var(--text);border:1px solid var(--line);backdrop-filter:none}
.card.today .qadd button .ic,.card.today .qadd button[data-go] .ic{background:none;color:var(--text);box-shadow:none;width:24px;height:24px;padding:0}
.card.today .qadd button:active{background:var(--card2)}
/* 圓環、進度條 */
.tring .fg,.ring .rfg,.card.fast .fring .fg,.card.fast .fring .fg.done{stroke:var(--pri)}
.tring .fg.over{stroke:var(--bad)}
.pbar i,.wd.ok i,.cd.ok,.kpi.hl{background:var(--pri)}
.card.fast .fring{color:var(--pri)}
.card.mini .mv,.adrow>div:first-child b{background:none;-webkit-background-clip:initial;background-clip:initial;color:var(--text)}
/* 膠囊、選項、輸入框 */
.qchip{background:var(--card);box-shadow:none;border:1px solid var(--line)}
.qchip.on,.cp button.on:not(.seg3 button):not(.seg2 button){background:var(--text);color:var(--card);border-color:var(--text)}
.cp.seg3 button.on,.cp.seg2 button.on{color:var(--text)}
input:focus,select:focus,textarea:focus,.search:focus-within{border-color:var(--text);box-shadow:0 0 0 3px rgba(24,33,29,.08)}
.search .mic{background:var(--text)}
.mpick.top,.rsi.foc{background:var(--pri-ll);box-shadow:0 0 0 1.5px var(--pri) inset}
.mpick .mrk,.myt{color:var(--pri)}
.sb.off{background:var(--pri-l);color:var(--pri-d)}
/* 底部導覽：白底細線，選中的分頁用墨色＋上方短線 */
nav{background:var(--navbg);border-top:1px solid var(--line);box-shadow:none;backdrop-filter:none}
nav button i{width:auto;height:auto;border-radius:0;background:none!important}
nav button{color:var(--mute);position:relative}
nav button.on{color:var(--text);font-weight:700}nav button.on .ic{color:var(--text)}
nav button.on::before{content:"";position:absolute;top:0;left:50%;width:24px;height:3px;margin-left:-12px;background:var(--text);border-radius:0 0 2px 2px}
/* 數據頁分頁 */
.dtabs button{box-shadow:none;border:1px solid var(--line);background:var(--card);border-radius:10px}
.dtabs button.on{background:var(--text);color:var(--card);border-color:var(--text);box-shadow:none}
/* 彈窗、登入頁 */
.modal .box{border-radius:16px}
.welcome .logo,.logo{background:var(--text);box-shadow:none;border-radius:14px}
/* 教練對話 */
.msg .chH{color:var(--text)}
.msg.u{background:var(--text);color:var(--card)}
/* 喝水（舊版殘留） */
.water,.wb.plus,.cups i.f{background:var(--card2)}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
:focus-visible{outline:2px solid var(--pri);outline-offset:2px}
.today{display:block}
.spark polyline{stroke:var(--text)}.spark circle{fill:var(--text)}
.trend.up,.wtr.up{color:var(--bad)}
/* 教練評鑑：三段改成同一種寫法，左邊一條色線區分，不用彩色底 */
.cbar em{background:var(--text)}.cbar em.mid{background:var(--mc)}.cbar em.lo{background:var(--bad)}
.clist,.clist.good,.clist.imp,.clist.tom{background:none;border-radius:0;border-left:3px solid var(--line);padding:4px 0 4px 12px;margin-top:14px}
.clist.good{border-left-color:var(--pri)}.clist.imp{border-left-color:var(--mc)}.clist.tom{border-left-color:var(--text)}
.clist .clh,.clist.good .clh,.clist.imp .clh,.clist.tom .clh,:root[data-theme=dark] .clist.imp .clh{color:var(--text)}
.sb.crowd{background:var(--card2);color:var(--ink2)}
.tl-rows+.mbs,.card.today .mbars,.card.today .mb:first-child{margin-top:12px}
.card.today .mbars{margin:12px 0 12px}

/* =====================================================================
   v20：深色運動風 —— 黑底、三色進度環、每個類別一個鮮明的顏色。
   飲食＝珊瑚紅、運動＝螢光綠、蛋白質＝亮藍、碳水＝橘黃、脂肪／體重＝紫、睡眠＝靛藍
   ===================================================================== */
:root[data-theme=dark]{
  --bg:#0e1116;--card:#181c23;--card2:#222833;--line:#2a303b;--line2:#232934;
  --text:#f2f4f7;--ink2:#c4cad4;--mute:#8b93a1;--soft:#5f6774;
  --pri:#3ddc84;--pri-d:#2fc271;--pri-l:#17301f;--pri-ll:#14241a;--on-pri:#06210f;
  --bad:#ff6b57;--bad-l:#3a1d19;--warn:#ffb547;--warn-l:#33270f;
  --food:#ff4d6d;--food-t:#3a1e24;--ex:#3ddc84;--ex-t:#1b3324;--pro:#3ea8ff;--pro-t:#1b2a40;
  --carb:#ffb547;--fat:#b98cff;--wt:#b98cff;--sl:#7c8cff;
  --mp:var(--pro);--mc:var(--carb);--mf:var(--fat);
  --c-food:var(--food);--c-food-l:#2a1a1f;--c-ex:var(--ex);--c-ex-l:#16261c;--c-wt:var(--wt);--c-wt-l:#241d33;--c-sl:var(--sl);--c-sl-l:#1c1f38;
  --navbg:#12151b;--r:18px;
}
:root[data-theme=light]{
  --bg:#f4f6f9;--card:#ffffff;--card2:#eef1f5;--line:#e3e7ee;--line2:#edf0f4;
  --text:#11151c;--ink2:#3d4552;--mute:#6b7380;--soft:#a2a9b4;
  --pri:#14b866;--pri-d:#0f9a55;--pri-l:#e3f7ec;--pri-ll:#f0faf4;--on-pri:#ffffff;
  --bad:#e5484d;--bad-l:#fdecec;
  --food:#f03e5e;--food-t:#fde4e9;--ex:#14b866;--ex-t:#dcf5e7;--pro:#1e88e5;--pro-t:#e0edfb;
  --carb:#f59e0b;--fat:#8b5cf6;--wt:#8b5cf6;--sl:#5b6cf0;
  --mp:var(--pro);--mc:var(--carb);--mf:var(--fat);
  --c-food:var(--food);--c-food-l:#fdecef;--c-ex:var(--ex);--c-ex-l:#e6f7ee;--c-wt:var(--wt);--c-wt-l:#f1ecff;--c-sl:var(--sl);--c-sl-l:#ecefff;
  --navbg:#ffffff;--r:18px;
}
/* 卡片：深色面板，不要框線 */
.card,:root[data-theme=dark] .card,:root[data-theme=light] .card{border:none;border-radius:var(--r);background:var(--card)}
:root[data-theme=light] .card{box-shadow:0 1px 2px rgba(17,21,28,.04)}
.card.today,:root[data-theme=dark] .card.today{border:none;border-radius:22px;padding:18px;background:var(--card)}
/* 首頁三色環 */
.hx{display:flex;align-items:center;gap:16px}
.hx-r{width:132px;height:132px;flex:none}
.hx-r .rb{fill:none}.hx-r .rf{fill:none;stroke-linecap:round;transition:stroke-dashoffset .8s cubic-bezier(.2,.8,.2,1)}
.hx-r .rb.food,.hx-r .rb.bad{stroke:var(--food-t)}.hx-r .rf.food{stroke:var(--food)}.hx-r .rf.bad{stroke:var(--bad)}
.hx-r .rb.ex{stroke:var(--ex-t)}.hx-r .rf.ex{stroke:var(--ex)}
.hx-r .rb.pro{stroke:var(--pro-t)}.hx-r .rf.pro{stroke:var(--pro)}
.hx-n small{display:block;font-size:13px;color:var(--mute);font-weight:600}
.hx-n b{display:block;font-family:var(--num);font-variation-settings:"wdth" 80;font-size:54px;line-height:1;font-weight:800;letter-spacing:-.01em;color:var(--text);margin:2px 0 4px}
.hx-n b.bad{color:var(--bad)}
.hx-n em{font-style:normal;font-size:12px;color:var(--mute)}
.hx-l{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px}
.hx-l>div{background:var(--card2);border-radius:14px;padding:10px 10px 9px}
.hx-l i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:1px}
.hx-l .food i{background:var(--food)}.hx-l .ex i{background:var(--ex)}.hx-l .pro i{background:var(--pro)}
.hx-l span{font-size:12px;font-weight:700;color:var(--ink2)}
.hx-l .food span{color:var(--food)}.hx-l .ex span{color:var(--ex)}.hx-l .pro span{color:var(--pro)}
.hx-l b{display:block;font-family:var(--num);font-variation-settings:"wdth" 80;font-size:20px;font-weight:800;margin-top:3px;color:var(--text);white-space:nowrap}
.hx-l b small{font-size:11px;font-weight:600;color:var(--mute);font-family:var(--font)}
.card.today .mbars{margin:14px 0 12px}
.card.today .mb.p{display:none}
/* 快速記錄：每類自己的顏色 */
.card.today .qadd button,:root[data-theme=dark] .card.today .qadd button,.qadd button{background:var(--card2);border:none;color:var(--text);border-radius:14px}
.card.today .qadd button .ic,.qadd button[data-go] .ic{width:24px;height:24px;padding:0;background:none}
.qadd button[data-go=food] .ic,.card.today .qadd button[data-go=food] .ic,.act[data-sec=food] .ic{color:var(--food)}
.qadd button[data-go=ex] .ic,.card.today .qadd button[data-go=ex] .ic,.act[data-sec=ex] .ic{color:var(--ex)}
.qadd button[data-go=weight] .ic,.card.today .qadd button[data-go=weight] .ic,.act[data-sec=weight] .ic{color:var(--wt)}
.qadd button[data-go=sleep] .ic,.card.today .qadd button[data-go=sleep] .ic,.act[data-sec=sleep] .ic{color:var(--sl)}
.act,.tile,.sec .tile{background:var(--card2);border:none;border-radius:14px}
.card .act,.card .tile{background:var(--card2)}
.act.on,.act[data-sec].on{background:var(--card);color:var(--text);box-shadow:0 0 0 2px var(--pri) inset}
.act[data-sec=food].on{box-shadow:0 0 0 2px var(--food) inset}.act[data-sec=ex].on{box-shadow:0 0 0 2px var(--ex) inset}
.act[data-sec=weight].on{box-shadow:0 0 0 2px var(--wt) inset}.act[data-sec=sleep].on{box-shadow:0 0 0 2px var(--sl) inset}
.act.on .ic{color:inherit}.act[data-sec=food].on .ic{color:var(--food)}.act[data-sec=ex].on .ic{color:var(--ex)}.act[data-sec=weight].on .ic{color:var(--wt)}.act[data-sec=sleep].on .ic{color:var(--sl)}
.tile:nth-child(1) .ic{color:var(--food)}.tile:nth-child(2) .ic{color:var(--carb)}.tile:nth-child(3) .ic{color:var(--pro)}.tile:nth-child(4) .ic{color:var(--fat)}
/* 圖示方塊 */
.cav,.card.sugg2 .cav,.card.fast .cav,.card.plat .cav,.card.fbcard .cav{border:none;border-radius:12px;background:var(--card2);color:var(--pri)}
.card.cmini .cav{color:var(--pro)}.card.sugg2 .cav{color:var(--carb)}.card.fast .cav{color:var(--fat)}.card.plat .cav{color:var(--warn)}.card.fbcard .cav{color:var(--food)}
.ctag{color:var(--mute)}
/* 按鈕：主要動作用螢光綠 */
.btn{border-radius:12px;border:none;background:var(--card2);color:var(--text)}
.btn.pri,.btn.gold{background:var(--pri);border:none;color:var(--on-pri);font-weight:700}
.btn.pri:active,.btn.gold:active{background:var(--pri-d)}
.btn.ai,:root[data-theme=dark] .btn.ai,.btn.ghost{background:var(--card2);border:none;color:var(--text)}
.btn.ai .ic{color:var(--pri)}
.sugg .aifail button.btn{background:var(--pri);color:var(--on-pri)}
/* 進度條、環 */
.tring .fg,.ring .rfg,.card.fast .fring .fg,.card.fast .fring .fg.done{stroke:var(--pri)}
.card.fast .fring .fg{stroke:var(--fat)}.card.fast .fring{color:var(--fat)}
.pbar i,.wd.ok i,.cd.ok,.kpi.hl{background:var(--pri)}
.kpi.hl,.kpi.hl *{color:var(--on-pri)}
.mb i,.card.today .mb i{background:var(--card2)}
.cbar em{background:var(--pri)}.cbar em.mid{background:var(--carb)}.cbar em.lo{background:var(--bad)}
.tl-bar i{background:var(--pri)}
.clist.good{border-left-color:var(--pri)}.clist.imp{border-left-color:var(--carb)}.clist.tom{border-left-color:var(--pro)}
.spark polyline{stroke:var(--wt)}.spark circle{fill:var(--wt)}
/* 膠囊、選項、輸入 */
.qchip{background:var(--card2);border:none}
.qchip.on,.cp button.on:not(.seg3 button):not(.seg2 button){background:var(--pri);color:var(--on-pri);border:none}
.cp.seg3 button.on,.cp.seg2 button.on{color:var(--text)}
input,select,textarea{background:var(--card2);border-color:transparent;color:var(--text)}
input:focus,select:focus,textarea:focus,.search:focus-within{border-color:var(--pri);box-shadow:0 0 0 3px color-mix(in srgb,var(--pri) 22%,transparent)}
.search{background:var(--card2);border-color:transparent}.search .mic{background:var(--pri)}.search .mic .ic{color:var(--on-pri)}
.mpick.top,.rsi.foc{background:var(--pri-ll);box-shadow:0 0 0 1.5px var(--pri) inset}
/* 底部導覽 */
nav{background:var(--navbg);border-top:1px solid var(--line)}
nav button.on,nav button.on .ic{color:var(--pri)}
nav button.on::before{background:var(--pri)}
/* 數據頁分頁 */
.dtabs button{background:var(--card);border:none}
.dtabs button.on{background:var(--pri);color:var(--on-pri)}
/* 登入頁、彈窗、教練對話 */
.welcome .logo,.logo{background:var(--pri);color:var(--on-pri)}
.modal .box{border-radius:22px;background:var(--card)}
.msg.u{background:var(--pri);color:var(--on-pri)}
.msg.c{background:var(--card2)}
.msg .chH{color:var(--pri)}

/* =====================================================================
   v21：極簡分組清單風 —— 淺灰底、白色圓角區塊、細分隔線、系統字、一個品牌綠。
   不用三色同心環、不用蘋果的藍與圖示；顏色只出現在小圓點、細進度條和按鈕。
   ===================================================================== */
:root,:root[data-theme=light]{
  --bg:#f2f2f7;--card:#ffffff;--card2:#f2f2f7;--line:#e5e5ea;--line2:#ececf0;
  --text:#1c1c1e;--ink2:#3a3a3c;--mute:#8e8e93;--soft:#c7c7cc;
  --pri:#12a46b;--pri-d:#0e8a59;--pri-l:#e3f5ec;--pri-ll:#f0faf5;--on-pri:#ffffff;
  --bad:#e0483e;--bad-l:#fdeceb;--warn:#d9a21b;--warn-l:#fbf3df;
  --food:#e07a3f;--ex:#12a46b;--pro:#3478c6;--carb:#d9a21b;--fat:#7c68c9;--wt:#7c68c9;--sl:#5a67c9;
  --mp:var(--pro);--mc:var(--carb);--mf:var(--fat);
  --c-food:var(--food);--c-food-l:#fcefe6;--c-ex:var(--ex);--c-ex-l:#e3f5ec;--c-wt:var(--wt);--c-wt-l:#efecf9;--c-sl:var(--sl);--c-sl-l:#eceefa;
  --navbg:rgba(249,249,251,.94);--r:14px;
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,"PingFang TC","Noto Sans TC","Microsoft JhengHei",sans-serif;
  --num:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",Roboto,"Noto Sans TC",sans-serif;
}
:root[data-theme=dark]{
  --bg:#000000;--card:#1c1c1e;--card2:#2c2c2e;--line:#38383a;--line2:#2c2c2e;
  --text:#f2f2f7;--ink2:#d1d1d6;--mute:#8e8e93;--soft:#48484a;
  --pri:#2fc787;--pri-d:#24ad73;--pri-l:#16301f;--pri-ll:#112418;--on-pri:#00140b;
  --bad:#ff6961;--bad-l:#3a1a18;--warn:#f0b93a;
  --food:#f0915a;--ex:#2fc787;--pro:#5b9ee6;--carb:#f0b93a;--fat:#9d8ce0;--wt:#9d8ce0;--sl:#7f8ae0;
  --c-food-l:#2c211b;--c-ex-l:#16261d;--c-wt-l:#231f33;--c-sl-l:#1e2033;
  --navbg:rgba(22,22,24,.94);--r:14px;
}
body{font-family:var(--font);-webkit-font-smoothing:antialiased}
.tl-big b,.tl-rows b,.tstats b,.tc b,.mv,.kpi b,.adrow b,.ptot b,.rk b,.pl .pk,.mbh b,.wv,.fbig,.vh b,.scoreN,.hx-n b,.hx-l b{font-family:var(--num);font-variation-settings:normal;font-feature-settings:"tnum"}
/* 大標題 */
.phead h1,.welcome h1{font-size:30px;font-weight:800;letter-spacing:-.02em;color:var(--text)}
.phead .ibtn{background:var(--card);border:none;box-shadow:none}
/* 分組區塊：白、圓角、無陰影 */
.card,:root[data-theme=dark] .card,:root[data-theme=light] .card{background:var(--card);border:none;border-radius:var(--r);box-shadow:none}
.card.today,:root[data-theme=dark] .card.today{border-radius:var(--r);padding:18px 18px 16px}
/* 首頁：一個大數字＋細進度條＋四欄數字 */
.hm-k{font-size:15px;font-weight:600;color:var(--mute)}
.hm-n{display:flex;align-items:baseline;gap:6px;margin:2px 0 12px}
.hm-n b{font-family:var(--num);font-size:56px;font-weight:700;line-height:1;letter-spacing:-.03em;color:var(--text)}
.hm-n span{font-size:17px;font-weight:600;color:var(--mute)}
.hm-n.bad b{color:var(--bad)}
.hm-bar{height:6px;border-radius:3px;background:var(--card2);overflow:hidden}
.hm-bar i{display:block;height:100%;border-radius:3px;background:var(--pri);transition:width .6s ease}
.hm-bar.over i{background:var(--bad)}
.hm-l{display:grid;grid-template-columns:repeat(3,1fr);margin-top:14px;border-top:.5px solid var(--line);padding-top:12px}
.hm-l>div+div{border-left:.5px solid var(--line);padding-left:10px}
.hm-l span{display:block;font-size:12px;color:var(--mute);font-weight:500}
.hm-l b{display:block;font-family:var(--num);font-size:19px;font-weight:700;margin-top:2px;letter-spacing:-.01em;white-space:nowrap}
.hm-l b small{font-size:11px;font-weight:500;color:var(--mute)}
.card.today .mbars{margin:14px 0 14px}
.card.today .mb.p{display:block}
/* 快速記錄、分類按鈕：灰底、圖示用該類別的顏色 */
.card.today .qadd button,.qadd button,.act,.tile,.sec .tile,.card .act,.card .tile{background:var(--card2);border:none;border-radius:12px;box-shadow:none;color:var(--text)}
.act.on,.act[data-sec].on,.act[data-sec=food].on,.act[data-sec=ex].on,.act[data-sec=weight].on,.act[data-sec=sleep].on{background:var(--card);box-shadow:0 0 0 1.5px var(--text) inset;color:var(--text)}
.tile:nth-child(n) .ic{color:var(--text)}
/* 圖示方塊 */
.cav,.card.sugg2 .cav,.card.fast .cav,.card.plat .cav,.card.fbcard .cav,.card.cmini .cav{background:var(--card2);border:none;border-radius:10px;color:var(--pri)}
/* 按鈕 */
.btn{border-radius:12px;border:none;background:var(--card2);color:var(--text);font-weight:600}
.btn.pri,.btn.gold{background:var(--pri);color:var(--on-pri)}
.btn.ai,:root[data-theme=dark] .btn.ai,.btn.ghost{background:var(--card2);color:var(--pri)}
.btn.ai .ic{color:var(--pri)}
/* 進度、評分 */
.tring .fg,.ring .rfg{stroke:var(--pri)}
.card.fast .fring .fg{stroke:var(--pri)}.card.fast .fring{color:var(--pri)}
.cbar em{background:var(--pri)}.cbar em.mid{background:var(--carb)}.cbar em.lo{background:var(--bad)}
.clist.good{border-left-color:var(--pri)}.clist.imp{border-left-color:var(--carb)}.clist.tom{border-left-color:var(--soft)}
.kpi.hl{background:var(--pri)}.kpi.hl,.kpi.hl *{color:var(--on-pri)}
.spark polyline{stroke:var(--pri)}.spark circle{fill:var(--pri)}
/* 膠囊、分段選擇 */
.qchip{background:var(--card2);border:none}
.qchip.on,.cp button.on:not(.seg3 button):not(.seg2 button){background:var(--text);color:var(--card)}
.dtabs button{background:var(--card2);border:none;box-shadow:none}
.dtabs button.on{background:var(--card);color:var(--text);box-shadow:0 1px 3px rgba(0,0,0,.12)}
:root[data-theme=dark] .dtabs button.on{background:var(--soft)}
/* 輸入框 */
input,select,textarea{background:var(--card2);border-color:transparent;color:var(--text)}
input:focus,select:focus,textarea:focus,.search:focus-within{border-color:var(--pri);box-shadow:none}
.search{background:var(--card2);border-color:transparent}.search .mic{background:var(--pri)}.search .mic .ic{color:var(--on-pri)}
/* 底部導覽：半透明、細線，選中用品牌綠，不加上方短線 */
nav{background:var(--navbg);border-top:.5px solid var(--line);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}
nav button.on,nav button.on .ic{color:var(--pri)}
nav button.on::before{display:none}
/* 登入、彈窗、對話 */
.welcome .logo,.logo{background:var(--pri);color:var(--on-pri);border-radius:16px}
.modal .box{border-radius:16px;background:var(--card)}
.msg.u{background:var(--pri);color:var(--on-pri)}
.msg.c{background:var(--card);border:none}
.msg .chH{color:var(--text)}
/* 拍照／相簿選單：底部彈出 */
.modal.sheet{align-items:flex-end;padding:0}
.modal.sheet .box{width:100%;max-width:480px;border-radius:18px 18px 0 0;padding:14px 14px calc(14px + env(safe-area-inset-bottom));display:grid;gap:10px}
.modal.sheet .btn{height:52px;font-size:16px;justify-content:center}
/* 刪除帳號（危險動作）、Apple 登入按鈕（依 Apple 規範：黑底白字，深色模式白底黑字） */
.btn.danger{background:var(--bad-l);color:var(--bad)}
.btn.danger:disabled{opacity:.45}
.modal .btn.danger:not(:disabled){background:var(--bad);color:#fff}
.btn.abtn{background:#000;color:#fff;display:flex;align-items:center;justify-content:center;gap:8px;height:46px;font-size:15.5px}
:root[data-theme=dark] .btn.abtn{background:#fff;color:#000}
.vfbar{display:flex;align-items:center;gap:8px;background:var(--warn-l,#fbf3df);color:var(--text);border-radius:12px;padding:10px 12px;margin:0 0 10px;font-size:13.5px}
.vfbar .ic{color:var(--warn)}

/* ===== v30 品牌 Logo：控卡日記（被咬一口的日記本） ===== */
.logo.brand,.welcome .logo.brand{background:none;color:inherit;width:84px;height:84px;border-radius:22px;padding:0;overflow:visible;box-shadow:0 12px 28px rgba(15,154,94,.30)}
.logo.brand svg{width:100%;height:100%;display:block}
.welcome .enname{font-size:15px;font-weight:600;letter-spacing:.06em;color:var(--pri);margin:-4px 0 6px}
.loading .logo.brand{width:64px;height:64px;border-radius:17px;margin-bottom:6px}
.brandline{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--text);margin-bottom:2px}
.brandline .bmark{width:20px;height:20px;flex:none;display:inline-flex}
.brandline .bmark svg{width:100%;height:100%}
.brandline .bdot{width:3px;height:3px;border-radius:50%;background:var(--mute,#8e8e93);margin:0 2px}
.brandline .psub{font-weight:400;margin:0}
