:root{--bg:#f3f5f4;--surface:#fff;--fg:#16201a;--muted:#56625b;--line:#e1e7e3;--accent:#06c755;--accent-btn:#05a648;--accent-text:#037a37;--accent-soft:#e6f7ec;--accent-border:#bfe6cd;--warn-bg:#fff4e5;--warn-fg:#8a4b00;--danger:#c62f4a;--danger-soft:#fdf0f2;--font-ui:system-ui, -apple-system, "PingFang TC", "Microsoft JhengHei", "Noto Sans TC", sans-serif;--font-num:"Barlow Condensed", "Arial Narrow", var(--font-ui);--shadow:0 1px 2px #16201a0f, 0 4px 16px #16201a0d;--zone:#9aa3ad;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}body{background:var(--bg);color:var(--fg);font-family:var(--font-ui);margin:0;font-size:16px;line-height:1.5}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;letter-spacing:.01em}.error{color:var(--danger);margin:0}.sub{color:var(--muted);margin:0;font-size:14px}.with-icon{align-items:center;gap:4px;display:inline-flex}.center-text{text-align:center}main.center{text-align:center;place-items:center;min-height:100vh;padding:24px;display:grid}.app{max-width:420px;padding:8px 16px calc(104px + env(safe-area-inset-bottom,0px));margin:0 auto}.app.no-tabs{padding-bottom:40px}.screen{gap:16px;display:grid}.screen-head{justify-content:space-between;align-items:center;gap:12px;min-height:48px;display:flex}.screen-head>div{overflow-wrap:anywhere;min-width:0}h1{text-wrap:balance;margin:0;font-size:24px;line-height:1.3}h2{color:var(--muted);letter-spacing:.02em;margin:0;font-size:15px;font-weight:600}.card{background:var(--surface);box-shadow:var(--shadow);border-radius:16px;padding:20px}.skeleton{background:linear-gradient(90deg, var(--surface) 25%, #eef2ef 50%, var(--surface) 75%) 0 0 / 200% 100%;animation:1.4s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.btn{border:none;border-radius:14px;justify-content:center;align-items:center;gap:8px;width:100%;min-height:52px;padding:0 20px;font-size:18px;font-weight:700;transition:background-color .2s,opacity .2s;display:inline-flex}.btn .anticon{font-size:20px}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--accent-btn);color:#fff}.btn-primary:active{background:var(--accent-text)}.btn-ghost{border:1px solid var(--line);background:0 0;min-height:48px;font-size:16px;font-weight:600}.btn-danger{color:var(--danger);background:0 0;border:1px solid #f0c7cf;min-height:48px;font-size:16px;font-weight:600}.btn-danger-fill{background:var(--danger);color:#fff;min-height:48px;font-size:16px}.btn-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.chip-live{background:var(--accent-soft);color:var(--accent-text);border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:13px;font-weight:600;display:inline-flex}.chip-live:before{content:"";background:var(--accent);border-radius:50%;width:8px;height:8px;animation:1.6s infinite blink}@keyframes blink{50%{opacity:.3}}.chev{color:var(--muted);font-size:14px}.empty{text-align:center;justify-items:center;gap:12px;padding:28px 20px 20px;display:grid}.scan-badge{background:var(--accent-soft);width:88px;height:88px;color:var(--accent-text);border-radius:28px;place-items:center;font-size:44px;display:grid}.empty h3{margin:4px 0 0;font-size:20px}.empty p{color:var(--muted);max-width:30ch;margin:0;font-size:15px}.empty .btn{margin-top:8px}.steps{counter-reset:step;grid-template-columns:repeat(3,1fr);gap:8px;margin:0;padding:0;list-style:none;display:grid}.steps li{counter-increment:step;color:var(--muted);text-align:center;justify-items:center;gap:6px;font-size:13px;display:grid}.steps li:before{content:counter(step);background:var(--surface);border:1px solid var(--line);width:26px;height:26px;color:var(--fg);font-family:var(--font-num);border-radius:50%;place-items:center;font-size:15px;font-weight:700;display:grid}.month-strip{text-align:left;border:none;align-items:center;gap:12px;width:100%;display:flex}.strip-ic{background:var(--bg);width:40px;height:40px;color:var(--accent-text);border-radius:12px;place-items:center;font-size:20px;display:grid}.strip-txt{flex:1;min-width:0;display:grid}.strip-txt>span{color:var(--muted);font-size:13px}.strip-txt .num{font-size:20px;font-weight:600}.confirm{gap:16px;display:grid}.watch-head{align-items:center;gap:14px;display:flex}.watch-ic{background:var(--accent-soft);width:56px;height:56px;color:var(--accent-text);border-radius:16px;flex:none;place-items:center;font-size:28px;display:grid}.watch-head strong{font-size:22px;display:block}.notice{background:var(--warn-bg);color:var(--warn-fg);border-radius:12px;align-items:flex-start;gap:10px;margin:0;padding:12px 14px;font-size:14px;display:flex}.notice .anticon{margin-top:2px;font-size:18px}.live{gap:18px;padding:16px 20px 20px;display:grid;position:relative;overflow:hidden}.live:before{content:"";background:radial-gradient(closest-side, color-mix(in srgb, var(--zone) 22%, transparent), transparent);pointer-events:none;height:120%;position:absolute;inset:-40% -20% auto}.live>*{position:relative}.live-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.ring-wrap{aspect-ratio:1;width:min(100%,260px);margin:0 auto;position:relative}.ring-wrap>svg{width:100%;height:100%;display:block}.ring-track{fill:none;stroke:var(--line);stroke-width:16px}.ring-zone{fill:none;stroke-width:4px;opacity:.55}.ring-prog{fill:none;stroke:var(--zone);stroke-width:16px;stroke-linecap:round;transition:stroke-dashoffset .8s,stroke .6s}.ring-center{place-content:center;justify-items:center;padding-top:26px;display:grid;position:absolute;inset:0}.ring-hr{font-size:84px;font-weight:700;line-height:.95}.ring-below{align-items:center;gap:4px;height:22px;margin-top:4px;display:inline-flex}.ring-heart{color:var(--zone);font-size:16px;transition:color .6s}.ring-heart.beating{animation:.9s ease-in-out infinite beat}@keyframes beat{0%,to{transform:scale(1)}15%{transform:scale(1.22)}30%{transform:scale(1)}45%{transform:scale(1.12)}}.ring-unit{color:var(--muted);letter-spacing:.08em;font-size:14px;font-weight:600}.ring-waiting{color:var(--muted);font-size:18px;font-weight:600}.ring-waiting+.ring-below .ring-unit{letter-spacing:0}.zone-pill{background:var(--zone);color:#fff;border-radius:999px;justify-self:center;align-items:baseline;gap:8px;padding:6px 16px;transition:background .6s;display:inline-flex}.zone-pill .num{font-size:26px;font-weight:700;line-height:1}.zone-pill span:last-child{font-size:14px;font-weight:600}.kpis{grid-template-columns:repeat(3,1fr);display:grid}.kpis>div{align-content:start;justify-items:center;gap:2px;padding:4px 0;display:grid}.kpis>div+div{border-left:1px solid var(--line)}.kpis>div>span{color:var(--muted);font-size:13px}.kpis strong{font-size:30px;font-weight:600;line-height:1.1}.kpis small{font-family:var(--font-ui);color:var(--muted);margin-left:2px;font-size:14px;font-weight:500}.basis{text-align:center;color:var(--muted);margin:0;font-size:13px}.chart-link{border:1px solid var(--line);background:color-mix(in srgb, var(--surface) 85%, transparent);border-radius:999px;justify-self:center;align-items:center;gap:6px;min-height:44px;margin-top:-6px;padding:0 14px 0 16px;font-size:15px;font-weight:600;transition:background-color .2s;display:inline-flex}.chart-link>.anticon:first-child{color:var(--accent-text);font-size:17px}.chart-link:active{background:var(--bg)}.unbind-chip{background:var(--danger-soft);min-height:44px;color:var(--danger);border:1px solid #f0c7cf;border-radius:999px;flex:none;align-items:center;gap:8px;padding:4px 14px 4px 4px;font-size:15px;font-weight:700;transition:background-color .2s;display:inline-flex;box-shadow:0 1px 2px #c62f4a14}.unbind-chip .anticon{background:var(--danger);color:#fff;border-radius:50%;place-items:center;width:34px;height:34px;font-size:16px;display:grid}.unbind-chip:active{background:#f9dde2}.switch{appearance:none;cursor:pointer;background:#c9d1cc;border-radius:16px;flex:none;width:52px;height:32px;margin:0;transition:background-color .2s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:26px;height:26px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #16201a40}.switch:checked{background:var(--accent-btn)}.switch:checked:after{transform:translate(20px)}.switch:disabled{opacity:.45;cursor:default}.summary,.trend{gap:14px;display:grid}.summary-head{justify-content:space-between;align-items:baseline;display:flex}.summary-head strong{font-size:17px}.summary .kpis strong{font-size:32px}.delta{color:var(--muted);align-items:center;gap:2px;font-size:13px;font-style:normal;font-weight:600;display:inline-flex}.delta.up{color:var(--accent-text)}.cmp{text-align:center;color:var(--muted);margin:-4px 0 0;font-size:12px}.cal{border-top:1px solid var(--line);text-align:center;grid-template-columns:repeat(7,1fr);gap:4px;padding-top:14px;display:grid}.cal-wd{color:var(--muted);font-size:12px}.cal-d{aspect-ratio:1;width:100%;max-width:38px;font-family:var(--font-num);border-radius:50%;justify-self:center;place-items:center;font-size:16px;font-weight:600;display:grid}.cal-d.done{background:var(--accent-text);color:#fff}.cal-d.today{box-shadow:inset 0 0 0 2px var(--accent)}.cal-d.future{color:var(--muted);opacity:.45}.trend svg{width:100%;height:auto;display:block}.trend text{font-family:var(--font-num);font-size:12px}.bar{fill:var(--accent-border)}.bar-current{fill:var(--accent-btn)}.bar-value{fill:var(--fg);font-weight:600}.bar-label{fill:var(--muted);font-weight:500}.bar-label.current{fill:var(--accent-text);font-weight:700}.bar-base{stroke:var(--line)}.group{gap:8px;display:grid}.list{background:var(--surface);border-radius:16px;overflow:hidden;box-shadow:0 1px 2px #16201a0f}.row{text-align:left;background:0 0;border:none;grid-template-columns:52px minmax(0,1fr) auto 16px;align-items:center;gap:8px 12px;width:100%;min-height:72px;padding:14px 16px;transition:background-color .15s;display:grid}.row+.row{border-top:1px solid var(--line)}.row:active{background:var(--bg)}.row-date,.row .chev{grid-row:span 2}.row-date{justify-items:center;line-height:1.1;display:grid}.row-date strong{font-family:var(--font-num);font-size:26px;font-weight:700}.row-date span{color:var(--muted);font-size:12px}.row-mid{min-width:0;display:grid}.row-mid strong{font-family:var(--font-num);font-size:22px;font-weight:600;line-height:1.2}.row-mid span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.row-hr{color:var(--muted);justify-items:end;font-size:13px;display:grid}.row-hr b{font-family:var(--font-num);color:var(--fg);font-size:20px;font-weight:600}.row-zones{border-radius:3px;grid-column:2/4;gap:2px;height:6px;display:flex;overflow:hidden}.detail-bar{z-index:15;background:var(--bg);margin:-8px 0 -4px;padding:8px 0;position:sticky;top:0}.back{border:1px solid var(--accent-border);background:var(--accent-soft);min-height:44px;color:var(--accent-text);border-radius:999px;align-items:center;gap:6px;padding:0 18px 0 12px;font-size:16px;font-weight:700;transition:background-color .15s;display:inline-flex}.back:active{background:#d3f0dd}.detail-title{gap:4px;display:grid}.ended{color:var(--muted);background:#e9eeeb;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:13px;font-weight:600;display:inline-flex}.detail-meta{color:var(--muted);flex-wrap:wrap;gap:4px 14px;font-size:14px;display:flex}.detail-meta>span{align-items:center;gap:6px;display:inline-flex}.label-chip{background:var(--fg);color:#fff;border-radius:6px;place-items:center;min-width:36px;height:22px;padding:0 6px;font-size:15px;font-weight:700;line-height:1;display:inline-grid}.s-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.s-kpi{background:var(--surface);box-shadow:var(--shadow);border-radius:16px;align-content:start;gap:6px;padding:14px 16px;display:grid}.s-kpi-label{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:flex}.s-kpi-value{font-size:34px;font-weight:700;line-height:1}.s-kpi-unit{color:var(--muted);font-size:14px}.s-kpi-zone{align-items:center;gap:8px;font-size:22px;line-height:1.15;display:flex}.s-kpi-zone i{border-radius:3px;width:12px;height:12px}.s-kpi-sub{color:var(--muted);font-size:12px}.chart-card{padding:16px 12px 8px}.chart-card h2{padding:0 8px 6px}.zone-legend{color:var(--muted);flex-wrap:wrap;gap:4px 12px;padding:0 8px 4px;font-size:12px;display:flex}.zone-legend span{align-items:center;gap:5px;display:inline-flex}.zone-legend i{border-radius:3px;width:10px;height:10px}.zone-legend i.avg-key{border-top:2px dashed var(--fg);border-radius:0;width:16px;height:0}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.card-head .sub{font-size:12px}.zbar{border-radius:8px;gap:2px;height:26px;margin-top:12px;display:flex;overflow:hidden}.zbar div{min-width:0;color:var(--fg);font-family:var(--font-num);place-items:center;font-size:14px;font-weight:700;display:grid;overflow:hidden}.zrows{gap:12px;margin-top:16px;display:grid}.zrow{grid-template-columns:12px 56px minmax(0,1fr) 44px 52px;align-items:center;gap:10px;font-size:14px;display:grid}.zrow-sw{border-radius:4px;width:12px;height:12px}.zrow-name{line-height:1.25;display:grid}.zrow-name b{font-weight:600}.zrow-name small{font-family:var(--font-num);color:var(--muted);font-size:12px}.zrow-track{background:var(--bg);border-radius:3px;height:6px;overflow:hidden}.zrow-track span{border-radius:3px;height:100%;display:block}.zrow-pct{text-align:right;font-size:18px;font-weight:700}.zrow-dur{text-align:right;color:var(--muted);font-size:16px;font-weight:500}.me-head{align-items:center;gap:16px;display:flex}.me-head strong{font-size:22px;display:block}.avatar{background:var(--accent-soft);width:64px;height:64px;color:var(--accent-text);border-radius:50%;flex:none;place-items:center;font-size:26px;font-weight:700;display:grid}.form{gap:18px;display:grid}.field{gap:6px;display:grid}.field label{font-size:14px;font-weight:600}.field-row{justify-content:space-between;align-items:baseline;display:flex}.hint{color:var(--muted);font-size:13px}.input{border:1px solid var(--line);background:var(--bg);width:100%;min-height:50px;color:var(--fg);font:inherit;border-radius:12px;padding:12px 14px;font-size:17px}.consent{border:1px solid var(--line);border-radius:12px;max-height:40vh;padding:12px 14px;font-size:14px;line-height:1.7;overflow-y:auto}.consent h1,.consent-text h1{font-size:16px}.consent h2,.consent-text h2{color:var(--fg);margin:14px 0 4px;font-size:15px}label.check{align-items:center;gap:10px;font-size:15px;display:flex}label.check input{width:22px;height:22px;accent-color:var(--accent-btn);flex:none}.menu{background:var(--surface);border-radius:16px;overflow:hidden}.menu button,.menu label{text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:12px;width:100%;min-height:56px;padding:16px;display:flex}.menu>:not(:first-child){border-top:1px solid var(--line)}.menu button>span:not(.anticon),.menu-txt{flex:1}.menu-txt{gap:2px;display:grid}.menu-ic{color:var(--accent-text);font-size:20px}.tabbar{z-index:20;padding-bottom:env(safe-area-inset-bottom,0px);background:var(--surface);border-top:1px solid var(--line);position:fixed;bottom:0;left:0;right:0}.tabbar-in{grid-template-columns:repeat(3,1fr);max-width:420px;margin:0 auto;display:grid}.tab{min-height:60px;color:var(--muted);background:0 0;border:none;justify-items:center;gap:2px;padding:8px 0 10px;font-size:12px;font-weight:600;display:grid;position:relative}.tab .anticon{font-size:24px}.tab[aria-current=page]{color:var(--accent-text)}.tab[aria-current=page]:before{content:"";background:var(--accent);border-radius:0 0 3px 3px;width:32px;height:3px;position:absolute;top:0}.tab-dot{background:var(--accent);border:2px solid var(--surface);box-sizing:content-box;border-radius:50%;width:8px;height:8px;position:absolute;top:8px;left:calc(50% + 8px)}.sheet-bg{z-index:30;background:#0a100c73;align-items:end;display:grid;position:fixed;inset:0}.sheet{width:100%;max-width:420px;max-height:80vh;padding-bottom:env(safe-area-inset-bottom,0px);background:var(--surface);border-radius:20px 20px 0 0;grid-template-rows:auto minmax(0,1fr) auto;margin:0 auto;display:grid}.sheet header{justify-content:space-between;align-items:center;padding:16px 20px 8px;display:flex}.sheet header strong{font-size:17px}.sheet-body{padding:0 20px 12px;font-size:14px;line-height:1.7;overflow-y:auto}.sheet footer{border-top:1px solid var(--line);padding:12px 20px 16px}.sheet-x{background:var(--bg);border:none;border-radius:50%;place-items:center;width:40px;height:40px;display:grid}.modal-bg{z-index:30;background:#0a100c73;place-items:center;padding:24px;animation:.2s ease-out fade-in;display:grid;position:fixed;inset:0}.modal{background:var(--surface);text-align:center;border-radius:20px;justify-items:center;gap:12px;width:100%;max-width:360px;padding:28px 20px 20px;animation:.2s ease-out pop-in;display:grid;box-shadow:0 12px 40px #16201a33}.modal-ic{background:var(--danger-soft);width:56px;height:56px;color:var(--danger);border-radius:50%;place-items:center;font-size:26px;display:grid}.modal h2{color:var(--fg);letter-spacing:0;font-size:20px;font-weight:700}.modal p{margin:0;font-size:17px;line-height:1.6}.modal .btn-row{width:100%;margin-top:8px}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:scale(.96)}}.toast{left:50%;bottom:calc(84px + env(safe-area-inset-bottom,0px));z-index:40;background:var(--fg);color:#fff;border-radius:999px;align-items:center;gap:8px;max-width:calc(100% - 32px);padding:10px 18px;font-size:14px;font-weight:600;display:inline-flex;position:fixed;transform:translate(-50%)}.toast .anticon{color:var(--accent);font-size:18px}@media (prefers-reduced-motion:reduce){*,:before{transition:none!important;animation:none!important}}
