/* Gym Coach themes (the choice is forced, whatever the phone's own light/dark setting is):
   Dark = black screens, light grey text, neon green accents (default).  Green / Red / Blue = white screens with that colour as the accent and a light tint on cards.
   Font: Chakra Petch, hosted in /fonts, system fonts as fallback. */
/* Chakra Petch (SIL Open Font License), hosted on this site. Latin + Latin-extended subsets. */
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/chakra-petch-400-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/chakra-petch-400-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/chakra-petch-500-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/chakra-petch-500-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/chakra-petch-600-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/chakra-petch-600-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/chakra-petch-700-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/chakra-petch-700-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

:root{color-scheme:dark;--bg:#000;--card:#0b0b0b;--text:#d6d6d6;--mut:#8a8a8a;--line:#242424;--acc:#00e676;--ok:#00e676;--bad:#ff5252;--on-acc:#04130d;--big:#ececec;--ph:#6f6f6f;--pill:#1b1b1b;--off-bg:#2a2a2a;--off-fg:#bdbdbd;--wait-bg:#161616;--dot-ring:#3a3a3a}
:root[data-theme="green"],:root[data-theme="red"],:root[data-theme="blue"]{color-scheme:light;--bg:#fff;--text:#1c1f1d;--mut:#666c68;--bad:#d32f2f;--on-acc:#fff;--big:#111;--ph:#9aa09c;--pill:#eceeed;--off-bg:#e6e8e7;--off-fg:#555b57;--wait-bg:#f3f5f4;--dot-ring:#c4c9c6}
:root[data-theme="green"]{--acc:#00994d;--ok:#00994d;--card:#f1faf5;--line:#cfe6da}
:root[data-theme="red"]{--acc:#dc2d3f;--ok:#dc2d3f;--card:#fff4f5;--line:#f2cfd4}
:root[data-theme="blue"]{--acc:#1a6ee6;--ok:#1a6ee6;--card:#f1f6ff;--line:#cdddf5}
*{box-sizing:border-box}
body{margin:0;font:500 15px/1.4 'Chakra Petch',system-ui,sans-serif;background:var(--bg);color:var(--text)}
.wrap{max-width:720px;margin:0 auto;padding:16px}
header{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}
header h1{font-size:22px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin:0}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:14px}
.card h2{font-size:15px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin:0 0 10px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.sp{justify-content:space-between}
button,input,textarea,select{font:inherit;color:inherit}
button,.btn{background:var(--acc);color:var(--on-acc);border:0;border-radius:8px;padding:8px 12px;cursor:pointer;font-size:14px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
button.ghost{background:transparent;color:var(--acc);border:1px solid var(--line)}
button.ghost:hover{border-color:var(--acc)}
button.del{background:transparent;color:var(--mut);padding:4px 8px}
button.del:hover{color:var(--text)}
button:disabled{opacity:.45;cursor:not-allowed}
input,textarea,select{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px;color:var(--text)}
input,textarea{width:100%}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 2px color-mix(in srgb,var(--acc) 25%,transparent)}
input::placeholder,textarea::placeholder{color:var(--ph)}
input[type=checkbox]{width:auto;accent-color:var(--acc)}
.grow{flex:1;min-width:120px}
.bar{height:10px;background:var(--line);border-radius:6px;overflow:hidden;margin:8px 0}
.bar>div,.bar.ok>div{height:100%;background:var(--acc)}
.mut{color:var(--mut);font-size:13px}
.big{font-size:30px;font-weight:700;color:var(--big)}
.ex{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--line)}
.ex.done .t{text-decoration:line-through;color:var(--mut)}
.ex input{margin-top:5px;transform:scale(1.3)}
.meal{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-top:1px solid var(--line)}
.meal button{white-space:nowrap}
.meal .link{white-space:nowrap;margin-left:8px}
.center{text-align:center;padding:60px 16px}
.pill{display:inline-block;padding:2px 8px;border-radius:99px;background:var(--pill);color:var(--text);font-size:12px;font-weight:600;margin-right:4px}
.pill.warn{background:var(--acc);color:var(--on-acc)}
table{width:100%;border-collapse:collapse;font-size:13px}
td,th{text-align:left;padding:6px 4px;border-top:1px solid var(--line)}
th{color:var(--mut)}
a.link,.link{color:var(--acc);cursor:pointer;font-size:14px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
label.day{display:inline-flex;gap:4px;align-items:center;margin-right:8px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;margin-top:10px}
.grid figure{margin:0}
.grid img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:8px;display:block}
.grid figcaption{font-size:12px;color:var(--mut);display:flex;justify-content:space-between;align-items:center}
.nudge{border-color:var(--acc);background:color-mix(in srgb,var(--acc) 10%,var(--card))}
.card.ok{background:color-mix(in srgb,var(--acc) 14%,var(--card));border-color:var(--acc)}

.row3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.row3 .big{font-size:24px}
.row3 label{display:block;font-size:.8rem}
.row3 input{width:100%;min-width:0}
.row3>*{min-width:0}

.lib{border:1px solid var(--line);border-radius:10px;padding:10px;margin:8px 0}
.lib .list{max-height:280px;overflow:auto;margin-top:8px}
.lib h4{margin:12px 0 2px;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;opacity:.7}
.lib[hidden]{display:none}

.streak{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:8px 0}
.streak .sq{display:block;width:100%;min-height:36px;padding:8px 0;border:0;border-radius:8px;font-size:14px;font-weight:700;letter-spacing:0;text-transform:none;text-align:center;box-sizing:border-box}
.streak .sq.on{background:var(--acc);color:var(--on-acc)}
.streak .sq.off{background:var(--off-bg);color:var(--off-fg)}
.streak .sq.wait{background:var(--wait-bg);color:var(--off-fg);box-shadow:inset 0 0 0 1px var(--acc)}
.streak button.sq{cursor:pointer}
.streak.sm{grid-template-columns:repeat(14,1fr);gap:3px}
.streak.sm .sq{min-height:14px;padding:0;font-size:0;border-radius:4px}
.wrap>h2{font-size:18px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin:6px 0 10px}

.shields{display:flex;flex-wrap:wrap;gap:10px;margin:8px 0}
.shields .sh{width:54px;text-align:center}
.shields .sh .mut{font-size:11px;margin-top:2px}
.shields.sm{gap:4px;margin:0}
.shield{display:block;margin:0 auto;filter:drop-shadow(0 1px 2px rgba(0,0,0,.35))}

/* theme switcher */
.themes{display:flex;gap:7px;align-items:center}
.themeslot{position:fixed;top:14px;right:14px}
button.dot{width:22px;height:22px;padding:0;border-radius:50%;border:2px solid transparent;box-shadow:0 0 0 1px var(--dot-ring);font-size:0;letter-spacing:0}
button.dot.on{border-color:#fff;box-shadow:0 0 0 2px var(--text)}

header{flex-wrap:wrap;row-gap:8px}
header>.row{flex-wrap:nowrap;margin-left:auto}
