/* Adapted app-globals starter for a build-free app. Tokens and components load first. */
.app-panel {border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-soft)}
.app-row {display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
input,textarea,select {min-height:48px;padding:10px 14px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);min-width:0;width:100%;font-size:var(--fs-body)}
input:focus,textarea:focus,select:focus {outline:2px solid var(--accent);outline-offset:2px}
button {cursor:pointer}
button:disabled {cursor:wait;opacity:.6}
button {transition:transform .18s var(--ease-out)}
button:active {transform:translateY(1px)}
[hidden] {display:none!important}
.brand-caption {font-size:var(--fs-micro);font-weight:600;letter-spacing:0;margin-left:18px;opacity:.7}
.header-button {min-height:44px;padding:8px 12px;border:0;background:transparent;color:inherit;font-size:var(--fs-small)}
.site-header.on-ink .header-button {color:var(--on-ink)}
.site-header.is-scrolled {color:var(--ink)}
.site-header.is-scrolled .header-button {color:var(--ink)}
.challenge-hero {min-height:0;padding:calc(var(--header-height) + 54px) 0 66px;text-align:left;background:var(--ink-field);color:var(--on-ink)}
.hero-layout {display:grid;grid-template-columns:1.5fr 1fr;gap:60px;align-items:end}
.challenge-hero .display {font-weight:600;margin:24px 0;max-width:100%;line-height:.98}
.hero-description {font-size:var(--fs-lead);color:var(--on-ink-muted);line-height:1.5}
.challenge-hero .eyebrow {color:var(--accent-on-dark)}
.countdown-block {max-width:400px;padding-bottom:6px}
.countdown-block .label {color:var(--on-ink-muted)}
.countdown {font-size:var(--fs-num);font-weight:600;letter-spacing:var(--tr-h2);line-height:1.1;margin:18px 0}
.countdown span {font-size:var(--fs-h3);letter-spacing:var(--tr-h3);margin-left:10px}
.hero-note {color:var(--on-ink-muted);font-size:var(--fs-small)}
.hero-rule {display:flex;justify-content:space-between;margin-top:32px;padding-top:18px;border-top:1px solid var(--on-ink-muted);font-weight:600}
.login-section {padding-top:64px;padding-bottom:80px}
.login-section .intro-row {margin-bottom:42px}
.login-section .small {margin-top:18px;max-width:430px}
.player-choices {display:grid;grid-template-columns:1fr 1fr;gap:40px}
.player-choice {display:flex;align-items:center;gap:24px;border:0;border-top:1px solid var(--line-strong);padding:28px 0;background:transparent;text-align:left;color:var(--ink)}
.player-choice>span:last-child {margin-left:auto;font-size:var(--fs-h3)}
.choice-initial {background:var(--surface-2);border-radius:50%;width:64px;height:64px;display:grid;place-items:center;font-size:var(--fs-h3)}
.player-choice strong {display:block;font-size:var(--fs-h3);font-weight:600;letter-spacing:var(--tr-h3)}
.player-choice small {display:block;color:var(--muted);font-size:var(--fs-small);margin-top:4px}
.tabs-wrap {background:var(--bg);border-bottom:1px solid var(--line)}
.tabs {display:flex;gap:28px}
.tabs button {background:none;border:0;color:var(--muted-strong);min-height:64px;padding:12px 0;font-weight:700;font-size:var(--fs-small);white-space:nowrap}
.tabs button[aria-current] {color:var(--accent-deep);box-shadow:inset 0 -2px var(--accent)}
.app-section {padding:54px 0 64px}
.intro-grid {display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:start}
.h2 {line-height:1.06}
.h3 {font-weight:600}
.section-lead {margin-top:20px;color:var(--muted-strong);max-width:480px}
.checkin-list {margin-top:10px}
.checkin {display:flex;gap:20px;align-items:center;justify-content:space-between;text-align:left;width:100%;background:none;border:0;border-top:1px solid var(--line-strong);padding:22px 0;min-height:88px}
.checkin strong {display:block;font-weight:600;font-size:var(--fs-lead)}
.checkin small {display:block;color:var(--muted);font-size:var(--fs-small);margin-top:4px}
.checkmark {width:38px;height:38px;border-radius:50%;background:var(--surface-2);display:grid;place-items:center;font-weight:800;flex-shrink:0;color:var(--muted-strong)}
.checkin[aria-pressed=true] .checkmark {background:var(--accent-bright);color:var(--accent-ink)}
.checkin[aria-pressed=true] strong {color:var(--accent-deep)}
.checkin:disabled {opacity:1;cursor:default}
.note {font-size:var(--fs-small);color:var(--muted-strong);margin-top:18px}
.action-row {display:flex;align-items:center;gap:16px;margin-top:28px;flex-wrap:wrap}
.stats-band {background:var(--surface-2)}
.stats-grid {display:grid;grid-template-columns:1fr 1fr 1fr;gap:36px;padding:38px 0}
.stat-value {font-size:var(--fs-h2);font-weight:600;letter-spacing:var(--tr-h2);line-height:1.2}
.stat-value .small {letter-spacing:0;font-size:var(--fs-small);margin-left:8px}
.stat-label {font-size:var(--fs-small);margin-top:6px;color:var(--muted-strong)}
.xp-meter {width:100%;height:4px;accent-color:var(--accent);display:block;margin-top:16px}
.badges {display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}
.badge {padding:10px 16px;border-radius:var(--radius-sm);background:var(--surface-2);font-size:var(--fs-small);font-weight:600}
.snapshot-choices {display:flex;gap:12px;margin:28px 0}
.snapshot-choices button {min-height:48px;padding:12px 24px;border:0;border-radius:var(--radius-sm);background:var(--surface-2);font-weight:700}
.snapshot-choices button[aria-pressed=true] {background:var(--ink);color:var(--bg)}
.form-layout {display:grid;grid-template-columns:1fr 1.5fr;gap:60px}
.form-main fieldset {border:0;border-top:1px solid var(--line-strong);margin:0 0 32px;padding:24px 0 0;min-width:0}
.form-main legend {font-size:var(--fs-h3);font-weight:600;letter-spacing:var(--tr-h3);padding-right:20px}
.form-main label {display:block;font-size:var(--fs-small);font-weight:600}
.form-main label input {margin-top:8px}
.measure-grid {display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}
.exercise-row {padding:16px 0;border-bottom:1px solid var(--line)}
.exercise-inputs {display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:10px}
.photo-grid {display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin:18px 0}
.photo-field {padding:16px;background:var(--surface-2);min-width:0;border-radius:var(--radius-sm)}
.photo-field input {padding:10px 0;border:0;font-size:var(--fs-small);background:none;min-height:48px}
.photo-field input::file-selector-button {font:inherit;background:var(--surface);color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:10px;cursor:pointer}
.photo-field img {width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:var(--radius-sm);margin:12px 0}
.photo-field p {font-size:var(--fs-micro);color:var(--muted-strong)}
.empty-photo {aspect-ratio:3/4;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:var(--fs-small)}
.save-status {color:var(--accent-deep);font-weight:600;font-size:var(--fs-small);margin-bottom:18px}
.board-intro {display:flex;gap:24px;justify-content:space-between;align-items:end;margin-bottom:32px}
.score-table {border-collapse:collapse;width:100%;font-size:var(--fs-body)}
.score-table th,.score-table td {font-size:var(--fs-body);text-align:right;padding:20px 22px;border-bottom:1px solid var(--line)}
.score-table th:first-child,.score-table td:first-child {text-align:left}
.score-table thead th {font-size:var(--fs-h3);font-weight:600}
.score-table .total td {font-size:var(--fs-h2);font-weight:600;letter-spacing:var(--tr-h2);background:var(--surface-2)}
.score-table .total td:first-child {font-size:var(--fs-lead);letter-spacing:0}
.score-caption {display:block;font-size:var(--fs-small);color:var(--muted);font-weight:400}
.formulas {margin-top:42px}
.formulas details {border-top:1px solid var(--line-strong);padding:20px 0}
.formulas summary {cursor:pointer;font-size:var(--fs-lead);font-weight:600;min-height:44px}
.formulas p {color:var(--muted-strong);max-width:800px;margin-top:12px}
.vote-grid {display:grid;grid-template-columns:1fr 1fr;gap:30px;margin:28px 0}
.vote-images {display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0}
.vote-images img {width:100%;aspect-ratio:3/4;object-fit:cover}
.vote-images figcaption {font-size:var(--fs-small);margin-top:6px}
.vote-choice {border:0;background:var(--surface-2);padding:24px;text-align:left;border-radius:var(--radius);display:block}
.vote-choice input {width:24px;min-height:24px;accent-color:var(--accent)}
.vote-choice strong {font-size:var(--fs-h3);font-weight:600}
#toast {position:fixed;bottom:28px;left:50%;transform:translateX(-50%);max-width:calc(100% - 32px);background:var(--ink);color:var(--bg);padding:14px 24px;border-radius:var(--radius-sm);box-shadow:var(--shadow);z-index:100;opacity:0;pointer-events:none;transition:opacity .18s var(--ease-out)}
#toast.visible {opacity:1}
#error {padding:24px 0;color:var(--ink)}
.site-footer {margin-top:0}
.site-footer .footer-inner {gap:18px}
.plan-placeholder {max-width:650px}
@keyframes saved-pulse {from {transform:scale(.96)} to {transform:scale(1)}}
.saved-animation {animation:saved-pulse .25s var(--ease-out)}
@media(max-width:760px) {
 .brand-caption {display:none}.wordmark {font-size:var(--fs-lead)}
 .header-actions {gap:0}.header-button {padding:8px;font-size:var(--fs-small)}
 .challenge-hero {padding:calc(var(--header-height) + 32px) 0 32px}
 .hero-layout {grid-template-columns:1fr;gap:30px}.challenge-hero .display {margin:20px 0}.hero-description {font-size:var(--fs-body)}
 .countdown-block {display:grid;grid-template-columns:1fr auto;align-items:center;max-width:none;gap:0 20px;padding-top:18px;border-top:1px solid var(--on-ink-muted)}
 .countdown {margin:0;grid-column:2;grid-row:1/3;font-size:var(--fs-h2)}.countdown span {font-size:var(--fs-body)}
 .hero-note {font-size:var(--fs-micro)}.hero-rule {display:none}
 .login-section {padding:40px 0 48px}.login-section .intro-row {gap:24px;margin-bottom:28px}
 .player-choices {grid-template-columns:1fr;gap:0}.player-choice {padding:22px 0}.choice-initial {width:52px;height:52px}
 .tabs {gap:0;justify-content:space-between}.tabs button {font-size:var(--fs-micro);min-height:58px}
 .app-section {padding:36px 0 44px}.intro-grid,.form-layout {grid-template-columns:1fr;gap:28px}
 .stats-grid {gap:14px;padding:28px 0}.stat-label {font-size:var(--fs-micro)}
 .stats-grid .stat-value {font-size:var(--fs-h3)}
 .photo-grid {gap:10px;grid-template-columns:1fr}.photo-field {display:grid;grid-template-columns:100px 1fr;gap:0 16px;align-items:start}
 .photo-field img,.empty-photo {grid-column:1;grid-row:1/4;margin:0}.photo-field label,.photo-field>p {grid-column:2}
 .photo-field input {max-width:100%;width:100%;font-size:var(--fs-micro)}
 .board-intro {display:block}.board-intro p {margin-top:18px}
 .score-table th,.score-table td {padding:16px 10px}.score-table th {font-size:var(--fs-lead)}
 .score-table .total td {font-size:var(--fs-h3)}.score-table .total td:first-child {font-size:var(--fs-body)}
 .vote-grid {grid-template-columns:1fr;gap:20px}.vote-choice {padding:20px}
 .formulas {margin-top:28px}.section-lead {margin-top:16px}
}
@media(prefers-reduced-motion:reduce) {*,*::before,*::after {animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print {.site-header,.tabs-wrap,#toast {display:none} .challenge-hero {padding-top:32px}}

.photo-upload {position:relative;min-height:110px;cursor:pointer}
.photo-upload input[type=file] {position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.file-button {display:block;padding:12px 8px;margin-top:10px;border-radius:var(--radius-sm);background:var(--surface);text-align:center;font-size:var(--fs-small);min-height:44px}
.file-name {display:block;margin-top:8px;font-size:var(--fs-micro);color:var(--muted-strong);overflow-wrap:anywhere}
.photo-upload:focus-within {outline:3px solid var(--accent);outline-offset:4px}
.wordmark::before {display:none}
/* Plan uses open rows and a tinted band, no additional bordered panels. */
.week-picker {padding-top:8px}.week-picker label {display:block;font-weight:700;margin-bottom:12px}
.week-picker .text-link {display:inline-flex;min-height:44px;align-items:center;margin-top:10px}
.week-heading {display:flex;align-items:end;justify-content:space-between;gap:24px;margin:48px 0 24px}
.week-heading .muted {margin-top:8px}
.plan-days {border-bottom:1px solid var(--line-strong)}
.plan-day {border-top:1px solid var(--line-strong)}
.plan-day summary {display:flex;justify-content:space-between;align-items:center;gap:20px;cursor:pointer;min-height:68px;font-size:var(--fs-lead);font-weight:600;list-style:none}
.plan-day summary::after {content:'+';font-size:var(--fs-h3);font-weight:400}
.plan-day[open] summary::after {content:'−'}
.plan-day summary .day-volume {margin-left:auto;font-size:var(--fs-small);font-weight:400;color:var(--muted)}
.exercise-prescription {display:grid;grid-template-columns:1.3fr 1fr;gap:28px;padding:20px 0;border-top:1px solid var(--line);align-items:baseline}
.exercise-prescription h4 {font-size:var(--fs-body);font-weight:600;letter-spacing:0}
.exercise-prescription strong {font-weight:600}.exercise-prescription p {margin-top:5px}
.volume-list>div {display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:13px 0;border-top:1px solid var(--line-strong)}
.volume-list dd {font-weight:700;white-space:nowrap}.volume-list .small {font-weight:400;margin-left:6px;color:var(--muted-strong)}
.plan-rule-list {margin-top:24px}.plan-rule-list li {display:flex;gap:20px;padding:20px 0;border-top:1px solid var(--line)}
.plan-index {font-size:var(--fs-small);color:var(--muted);font-weight:700;padding-top:3px}
.plan-nutrition {margin-top:40px;max-width:760px}.plan-nutrition-list {margin-top:20px}
.plan-nutrition-list li {padding:12px 0;border-top:1px solid var(--line)}
.supplement-list article {padding:24px 0;border-top:1px solid var(--line-strong)}
.supplement-heading {display:flex;align-items:baseline;justify-content:space-between;gap:20px}
.supplement-verdict {font-size:var(--fs-small);font-weight:800;white-space:nowrap;color:var(--muted-strong)}
.supplement-dose {font-weight:700;margin:14px 0 8px}
.source-warning {background:var(--surface-2);padding:20px;margin-bottom:24px;border-radius:var(--radius-sm);font-size:var(--fs-small)}
@media(max-width:760px) {
 .week-heading {display:block;margin-top:32px}.week-heading>.small {margin-top:14px}
 .exercise-prescription {grid-template-columns:1fr;gap:10px;padding:18px 0}
 .supplement-heading {display:block}.supplement-verdict {display:block;margin-top:8px}
 .plan-day summary .day-volume {font-size:var(--fs-micro)}
 .volume-list dt {max-width:70%}
}
