:root{--color-green:#485148;--color-sage:#9ba192;--color-sand:#e7dfd0;--color-terracotta:#c59d7f;--color-cream:#f9f3e7;--color-ink:#2f362f;--color-ink-secondary:#6b7268;--color-surface:#fff;--color-border:#e7dfd0;--color-accent-text:#8e5f42;--color-success:#5e7d5a;--color-warning:#b9853f;--color-danger:#b5534a;--color-ink-secondary-strong:#5c635a;--color-warning-text:#946a32;--font-sans:"Noto Sans TC", -apple-system, "PingFang TC", sans-serif;--text-page-title:28px;--text-section-title:22px;--text-card-title:18px;--text-body:16px;--text-secondary:14px;--text-caption:12px;--radius-card:16px;--radius-button:12px;--radius-bar:4px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--color-cream);color:var(--color-ink);font-family:var(--font-sans);font-size:var(--text-body);margin:0;line-height:1.6}button{font:inherit;color:inherit}h1,h2,p{margin:0}.shell{max-width:640px;min-height:100dvh;margin:0 auto;padding:16px 20px 32px}.shell.with-tabs{flex-direction:column;padding-bottom:0;display:flex}.shell.with-tabs>main,.shell.with-tabs>.state{flex:1;padding-bottom:24px}.stack{flex-direction:column;gap:16px;display:flex}.page-title{font-size:var(--text-page-title);font-weight:700;line-height:1.35}.card-heading{font-size:var(--text-section-title);font-weight:700;line-height:1.4}.card-title{font-size:var(--text-card-title);font-weight:700}.body{font-size:var(--text-body);white-space:pre-wrap}.body.muted,.secondary{color:var(--color-ink-secondary)}.secondary{font-size:var(--text-secondary)}.label{font-size:var(--text-caption);color:var(--color-ink-secondary)}.caption{font-size:var(--text-caption);color:var(--color-ink-secondary-strong);letter-spacing:.04em}.num{font-variant-numeric:tabular-nums}.clamp{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.row{align-items:center;gap:8px;display:flex}.between{justify-content:space-between}.page-header{flex-direction:column;gap:12px;margin-bottom:16px;display:flex}.detail-header{flex-direction:column;gap:4px;padding:8px 0 4px;display:flex}.detail-header .secondary{color:var(--color-ink-secondary-strong)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);flex-direction:column;gap:8px;padding:20px;display:flex}.fields{gap:20px}.highlight{background:var(--color-sand);border-radius:12px;padding:12px 16px}.highlight .label{color:var(--color-ink-secondary-strong)}.btn{border-radius:var(--radius-button);cursor:pointer;width:100%;min-height:48px;margin-top:8px;padding:0 20px;font-weight:700}.btn-primary{background:var(--color-green);color:var(--color-surface);border:0}.btn-secondary{color:var(--color-green);border:1px solid var(--color-green);background:0 0}.btn:disabled{opacity:.6;cursor:default}.icon{stroke-width:1.75px;flex:none;width:22px;height:22px}.icon-btn{cursor:pointer;background:0 0;border:0;border-radius:12px;justify-content:center;align-items:center;width:44px;height:44px;margin-left:-10px;display:inline-flex}.top-bar{align-items:center;min-height:44px;display:flex}.chips{scrollbar-width:none;gap:8px;margin:0 -20px;padding:0 20px;display:flex;overflow-x:auto}.chip{white-space:nowrap;border:1px solid var(--color-border);background:var(--color-surface);min-height:44px;color:var(--color-ink);cursor:pointer;border-radius:22px;padding:0 16px}.chip-active{background:var(--color-green);border-color:var(--color-green);color:var(--color-surface);font-weight:700}.progress{flex-direction:column;gap:8px;margin-top:8px;display:flex}.progress-labels{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.progress-value{font-weight:700;font-size:var(--text-body)}.progress-value .secondary{font-weight:400}.progress-track{border-radius:var(--radius-bar);background:var(--color-sand);height:8px;overflow:hidden}.progress-fill{border-radius:var(--radius-bar);background:var(--color-terracotta);height:100%}.progress-fill.done{background:var(--color-success)}.status{font-size:var(--text-secondary);color:var(--color-ink-secondary);white-space:nowrap}.status-done{color:var(--color-success);font-weight:700}.acked{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-button);min-height:48px;color:var(--color-success);justify-content:center;align-items:center;font-weight:700;display:flex}.chart{grid-template-columns:repeat(7,1fr);gap:10px;height:88px;margin:8px 0 4px;display:grid}.chart-col{flex-direction:column;align-items:center;gap:6px;display:flex}.chart-track{background:var(--color-sand);border-radius:6px;flex:1;width:100%;max-width:22px}.chart-day{font-size:var(--text-caption);color:var(--color-ink-secondary)}.list-card{padding-bottom:8px}.history{margin:0 -20px;padding:0;list-style:none}.history li+li{border-top:1px solid var(--color-border)}.history-row{cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:1fr auto auto;grid-template-areas:"date status chevron""line line chevron";align-items:center;gap:2px 12px;width:100%;min-height:64px;padding:12px 20px;display:grid}.history-date{font-size:var(--text-secondary);color:var(--color-ink-secondary);white-space:nowrap;grid-area:date}.history-row .status{grid-area:status}.history-line{text-overflow:ellipsis;white-space:nowrap;grid-area:line;overflow:hidden}.chevron{width:18px;height:18px;color:var(--color-sage);grid-area:chevron}.video{background:var(--color-ink);aspect-ratio:16/9;border-radius:12px;width:100%}.video-placeholder{aspect-ratio:16/9;cursor:pointer;background:var(--color-sand);width:100%;color:var(--color-green);border:0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-weight:700;display:flex}.video-placeholder .icon{width:36px;height:36px}.action-area{padding-top:8px}.tab-bar{background:var(--color-surface);border-top:1px solid var(--color-border);padding:6px 12px calc(6px + env(safe-area-inset-bottom));grid-template-columns:repeat(3,1fr);margin:0 -20px;display:grid;position:sticky;bottom:0}.tab{cursor:pointer;min-height:56px;color:var(--color-ink-secondary);font-size:var(--text-caption);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.tab-active{color:var(--color-green);font-weight:700}.state{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:64px 12px;display:flex}.state.compact{padding:32px 20px}.state .secondary{max-width:300px;color:var(--color-ink-secondary-strong)}.state.card .secondary{color:var(--color-ink-secondary)}.state .btn{max-width:320px;margin-top:16px}.state-icon{background:var(--color-sand);width:56px;height:56px;color:var(--color-green);border-radius:28px;justify-content:center;align-items:center;margin-bottom:8px;display:flex}.state-icon svg{stroke-width:1.75px;width:26px;height:26px}.sk{background:var(--color-sand);border-radius:var(--radius-card);animation:1.4s ease-in-out infinite pulse}.sk-line{border-radius:8px;height:16px}@keyframes pulse{50%{opacity:.55}}@media (prefers-reduced-motion:reduce){.sk{animation:none}}
