/* GymTrack 2.2 — shared interactive primitives, all surfaces use Carbon tokens. */
:root{--control-height:48px;--radius-control:12px;--radius-card:20px;--content-gap:20px;--touch-target:44px}
body{line-height:1.5}button,input,select,textarea{font:inherit}button,a,input,select,textarea,summary{touch-action:manipulation}button,summary{cursor:pointer}button:disabled{opacity:.48;cursor:not-allowed}button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.gt-button,.secondary-button,.danger-button,.icon-button,.admin-button{display:inline-flex;justify-content:center;align-items:center;gap:8px;min-height:var(--touch-target);border:1px solid var(--border);border-radius:var(--radius-control);padding:10px 16px;background:var(--panel);color:var(--text);font-weight:650;line-height:1.3;text-decoration:none;transition:background .15s,border-color .15s}
.gt-button--primary{background:var(--color-primary);color:var(--button-text);border-color:transparent;font-weight:750}.gt-button--danger,.danger-button{color:var(--danger)}.gt-button--quiet{background:transparent;border-color:transparent}.gt-button:hover:not(:disabled){background:var(--panel-2)}.gt-button--primary:hover:not(:disabled){background:var(--color-hover)}.gt-button:active:not(:disabled){transform:translateY(1px)}
.field{min-width:0}.field input,.field select,.field textarea,.auth-screen input:not([type=checkbox]),.auth-screen select{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-soft);color:var(--text);min-height:var(--control-height);padding:12px;box-sizing:border-box;max-width:100%;min-width:0;font-size:16px}.field textarea{resize:vertical}
input[type=checkbox]{appearance:none;-webkit-appearance:none;display:inline-grid;place-content:center;flex:0 0 22px;width:22px;height:22px;min-width:22px;margin:4px;border:1.5px solid var(--muted);border-radius:6px;background:var(--bg-soft);vertical-align:middle}input[type=checkbox]:checked{background:var(--color-primary);border-color:var(--color-primary)}input[type=checkbox]:checked::after{content:'✓';font-size:16px;font-weight:800;color:var(--button-text)}label:has(>input[type=checkbox]){min-height:44px;align-content:center}
input[type=checkbox][role=switch]{width:44px;flex-basis:44px;border-radius:30px;justify-content:start;padding:3px}input[type=checkbox][role=switch]::after{content:'';height:16px;width:16px;border-radius:50%;background:var(--muted)}input[type=checkbox][role=switch]:checked::after{content:'';background:var(--button-text);transform:translateX(18px)}
.gt-disclosure{border-top:1px solid var(--border);margin-top:16px}.gt-disclosure>summary{min-height:44px;padding:12px 0;color:var(--muted);font-size:14px;list-style:none}.gt-disclosure>summary::after{content:'＋';float:right}.gt-disclosure[open]>summary::after{content:'−'}.gt-hint{font-size:13px;color:var(--muted)}.gt-eyebrow{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.gt-empty{text-align:center;border:1px dashed var(--border);border-radius:var(--radius-card);padding:32px 20px;margin:20px 0}.gt-empty>span{display:block;font-size:32px;color:var(--accent)}.gt-empty h3{margin:10px 0}.gt-empty p{color:var(--muted);max-width:34ch;margin:0 auto}
dialog{max-height:calc(100dvh - 32px);overflow:auto;overscroll-behavior:contain}dialog::backdrop{background:rgb(0 0 0 / .65)}.training-confirm{border-radius:24px;padding:24px;white-space:pre-line}.training-confirm p{font-size:17px;line-height:1.6}.training-confirm .training-actions{justify-content:flex-end}.toast{max-width:calc(100vw - 32px);padding:14px 20px;border-radius:14px}
.section-intro h2,.section-header h2{font-size:clamp(24px,4vw,34px);letter-spacing:-.03em}.section-intro p,.section-header p{max-width:62ch}.settings-card,.profile-card,.admin-kpi{border-radius:var(--radius-card)}.admin-table-wrap{overflow:auto;max-width:100%}.auth-panel{padding-bottom:max(24px,env(safe-area-inset-bottom))}
@media(max-width:600px){.training-confirm,.training-media-dialog{position:fixed;inset:auto 0 0;margin:0;width:100%;max-width:none;border-radius:24px 24px 0 0;padding-bottom:calc(24px + env(safe-area-inset-bottom))}.section-actions{gap:8px}.section-actions button{flex:1}.bottom-nav{padding-bottom:env(safe-area-inset-bottom)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
