/* Shared meter geometry and planning controls. */
.handwriting-caret {width:.14em;transform:translateX(-50%);line-height:1}
.handwriting-caret::before {content:'';display:block;width:100%;height:100%;background:currentColor;-webkit-mask:url('./assets/handwriting-caret.svg') center/100% 100% no-repeat;mask:url('./assets/handwriting-caret.svg') center/100% 100% no-repeat}
.edit-task {display:inline-grid;place-items:center;flex:none;width:28px;min-height:28px;padding:5px;background:transparent;color:var(--ink);border-radius:3px}
.edit-task>.icon {width:15px;height:15px}
.edit-task:hover {background:#c5e6ff44}
.task-edit-scope {display:flex;flex-wrap:wrap;gap:8px;border:0;padding:0;margin:0 0 20px}
.task-edit-scope legend {font:700 12px var(--font-display);margin-bottom:10px}
.task-edit-scope label {position:relative;flex:1;min-width:130px;margin:0}
.task-edit-scope input {position:absolute;opacity:0}
.task-edit-scope span {display:block;padding:10px;border:1px solid var(--line);font:400 12px var(--font-ui);text-align:center}
.task-edit-scope :checked+span {background:#253f80;color:#e2f5ff;border-color:#beddf7}
.task-edit-scope :focus-visible+span {outline:2px solid #e2f5ff;outline-offset:2px}
.task-edit-scope p {width:100%;margin:2px 0 0;font:400 10px/1.5 var(--font-ui)}
.calendar-day.is-logged {background:linear-gradient(145deg,#c0e6ff55,#8db7e52b);border-color:#bedff7;box-shadow:inset 0 -3px #ccecff99,0 0 5px #c3eaff22}
.calendar-day.is-logged .calendar-date {font-weight:700;color:#102450}
.calendar-day.is-reviewed {background:linear-gradient(145deg,#c5eaff88,#92bbe533);border-color:#f0fbff;box-shadow:inset 0 0 0 1px #26477f,inset 0 -4px #e2f6ff,0 0 8px #d2f2ff55}
.calendar-day.is-logged.selected,.calendar-day.is-reviewed.selected {outline:2px solid #213869;outline-offset:-3px}
.calendar-day .calendar-complete {display:grid;place-items:center;width:16px;height:16px;top:3px;right:3px;border-radius:50%;background:#233e7c;color:#effbff;font:700 11px/1 var(--font-ui);box-shadow:0 0 3px #d4f3ff}
.calendar-logged {position:absolute;top:3px;right:4px;font-size:8px;color:#dff6ff;text-shadow:0 0 2px #203c75}
.daily-training-card .body-weight-form {border:1px solid #c4e8ff;background:linear-gradient(140deg,#c9e8ff4a,#a0c8ec26);box-shadow:inset 3px 0 #dbf3ff;padding:14px;margin:0 0 16px}
.weight-highlight {display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.weight-highlight>div {display:flex;flex-direction:column;gap:5px}
.weight-highlight span {font:700 12px var(--font-display);text-transform:uppercase}
.weight-highlight strong {font:700 34px/1.1 var(--font-display);color:#112651}
.weight-highlight strong small {font-size:14px}
.weight-highlight strong .weight-missing {font:400 19px var(--font-display);text-transform:none}
.weight-highlight .quiet-button {font-size:11px;padding:8px 10px;min-height:40px}
.weight-history-dialog {width:min(900px,calc(100% - 32px))}
.weight-chart-tools {display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px}
.weight-chart-tools>div {display:flex;gap:6px}
.weight-chart-tools button {font-size:12px;min-height:40px;padding:8px 12px}
.weight-chart-tools button[aria-pressed='true'] {background:#233e7c;color:#ecf9ff;border-color:#d4f0ff}
.weight-chart-summary {font:700 14px/1.6 var(--font-display);margin:20px 0 10px}
#weight-chart {position:relative;border:1px solid #b6d9fa;background:#29487d;padding:8px;border-radius:3px}
#weight-chart>svg {display:block;width:100%;height:auto;min-height:170px}
#weight-chart text {font:400 12px var(--font-ui);fill:#dff3ff}
.weight-gridline {stroke:#badcf54a;stroke-width:1}
.weight-line {fill:none;stroke:#d9f4ff;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}
.weight-point {fill:#f4fcff;stroke:#284477;stroke-width:1.5}
.calendar-tools {display:flex;align-items:flex-start;gap:10px;flex:none;margin-bottom:18px}
.calendar-tools #calendar-filters {min-width:0;flex:1;margin-bottom:0}
.calendar-tools #open-weight-history {margin-left:auto;background:#233e7c;color:#e2f5ff;border-color:#b6ddf7;white-space:nowrap;min-height:40px;font-size:12px}
.weight-reading {cursor:pointer;outline:none}
.weight-reading:focus-visible {outline:none}
.weight-hit-area {fill:transparent;stroke:transparent;stroke-width:40px;vector-effect:non-scaling-stroke;pointer-events:all}
.weight-reading:is(.is-active,:focus-visible) .weight-point {stroke:#d4f3ff;stroke-width:3;fill:#29487d;filter:drop-shadow(0 0 3px #c7ecff)}
.weight-day-card {position:absolute;z-index:2;width:250px;max-width:calc(100% - 16px);padding:12px;background:linear-gradient(145deg,#7fa7dc,#638ac3);border:1px solid #d6efff;border-radius:4px;box-shadow:0 4px 16px #0a1d4e88;pointer-events:none;color:#102450;text-shadow:none}
.weight-day-card>strong {display:block;font:700 12px/1.4 var(--font-display)}
.weight-day-card>span {display:block;font:400 10px/1.4 var(--font-ui);margin-top:3px}
.weight-day-scores {display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:10px}
.weight-day-scores>div {display:flex;flex-direction:column;align-items:center;gap:4px}
.weight-day-scores .score-circle {width:60px;height:60px;flex-basis:60px}
.weight-day-scores .score-circle>span {font-size:20px}
.weight-day-scores strong {font:700 11px var(--font-display)}
.weight-day-scores small {font:400 9px var(--font-ui)}
.weight-chart-empty {color:#e0f3ff;font:400 13px/1.7 var(--font-ui);padding:22px}
.weight-chart-data {margin-top:16px}
.weight-chart-data table {width:100%;border-collapse:collapse;font:400 11px/1.5 var(--font-ui);text-align:left}
.weight-chart-data td,.weight-chart-data th {padding:8px;border-bottom:1px solid var(--line)}
.filtered-training-total {font:700 15px var(--font-display)}
.recap-body-weight strong {font-size:25px}
#tasks-title,#tomorrow-title,#later-title {font:700 26px/1.25 var(--font-handwriting);letter-spacing:.015em;padding:3px 0 6px;margin:0;text-shadow:none}
.later-plan {margin-top:20px}
.later-plan .panel-heading {margin-bottom:12px}
#later-tasks,#later-tasks ul {list-style:none;padding:0;margin:0}
.planned-task {display:flex;align-items:flex-start;gap:6px}
.planned-task>span {flex:1;min-width:0;overflow-wrap:anywhere}
#later-tasks .planned-task {font:400 17px/1.15 'Kieran Handwriting Entry',var(--font-handwriting);padding:6px 0}
.planned-task small {display:block;font:400 8px var(--font-ui);margin-top:6px}
.planning-date {border-top:1px solid var(--line);padding:8px 0}
.planning-date>.text-button {font:700 11px var(--font-display);padding:4px 0;min-height:30px}
.planning-empty {font:400 10px var(--font-ui);padding:6px 0;opacity:.8}
.task-week-options {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:12px}
.task-week-options button {min-height:40px;font-size:11px;padding:8px}
.task-week-options button[aria-pressed='true'] {background:#253f80;color:#dbf2ff;border-color:#b4d7f3}
.score-circle svg>path {fill:none;stroke-width:3;stroke-linecap:round}
.score-circle .score-circle-outline {stroke-width:4.2}
#overall-meter .meter-endpoint.start,.sentiment-endpoint.start,.target-endpoint.start {left:30%;right:auto;top:auto;bottom:-21px;transform:translateX(-50%)}
#overall-meter .meter-endpoint.end,.sentiment-endpoint.end,.target-endpoint.end {left:70%;right:auto;top:auto;bottom:-21px;transform:translateX(-50%)}
.sentiment-endpoint,.target-endpoint {color:var(--ink);text-shadow:0 1px #c9e6ff}
#overall-meter {margin-bottom:36px}
#sentiments-meter,#final-sentiments-meter,.target-meter {margin-bottom:30px}
.day-tabs>button:is(#tab-today,#tab-nutrition,#tab-training,#tab-checklists,#tab-sentiments) {padding-inline:12px;display:grid;grid-template-columns:20px minmax(0,1fr) 23px;align-items:center;text-align:left;justify-items:start;gap:8px}
.day-tabs>button>small {justify-self:center;margin:0}
.day-tabs .tab-label {min-width:0;text-align:left}
.day-tabs .tab-check {justify-self:end;margin:0}
.task-card-actions {display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);margin-top:8px}
.task-card-actions .panel-link {border:0;margin:0;padding:8px 0;font-size:11px}
.task-card-actions .text-button {font-size:11px;white-space:nowrap}
.tomorrow-plan {margin-top:20px}
.tomorrow-plan .panel-heading {margin-bottom:12px}
.tomorrow-plan h3 {font-size:23px}
#tomorrow-tasks {list-style:none;margin:0;padding:0;max-height:250px;overflow:auto}
#tomorrow-tasks li {padding:10px 0;border-top:1px solid var(--line);font:400 20px/1.35 var(--font-handwriting);overflow-wrap:anywhere}
#tomorrow-tasks small {display:block;font:400 9px var(--font-ui);margin-top:7px}
#tomorrow-tasks .tomorrow-empty {font:400 12px/1.6 var(--font-ui);padding:18px 0}
.tomorrow-actions {display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:12px}
.task-date-picker {border:0;padding:0;margin:20px 0}
.task-date-picker legend {font:400 12px var(--font-ui);margin-bottom:10px}
.task-date-shortcuts {display:flex;flex-wrap:wrap;gap:8px}
.task-date-shortcuts button {min-height:42px;font-size:12px;padding:8px 12px}
.task-date-shortcuts button[aria-pressed='true'] {background:#253f80;color:#dbf2ff;border-color:#b4d7f3}
#task-date {flex:1;min-width:150px;min-height:42px;border:1px solid #29497f;border-radius:3px;background:var(--lcd-input);color:var(--ink);font:400 13px var(--font-ui);padding:8px 10px}
.mobile-calendar {display:none}
.summary-only .recap-metrics button:disabled {opacity:1;cursor:default;transform:none}
.summary-only .recap-metrics button:disabled:hover {background:transparent}
.summary-only .day-tabs {opacity:.6}
.top-row #save-status {position:static;transform:none;order:initial;width:auto;max-width:none;margin-left:auto;font-size:10px;white-space:nowrap}
.top-row .score-info-button {margin-left:0}
.score-range {font:400 10px/1.5 var(--font-ui);margin:0 0 6px;max-width:260px;color:var(--ink)}
.score-range strong {font:700 14px var(--font-display)}
.overview-tasks .task-list label>span,.editable-task-list label>span,.task-list .child-tasks label>span {font-size:16px;line-height:1.15}
.overview-tasks .task-list label,.editable-task-list label {min-height:28px;padding:3px 0;gap:9px}
.task-list .child-tasks label {min-height:26px;padding:2px 0}
.task-list input {width:18px;height:18px;flex-basis:18px;margin-top:1px}
.task-row .expand-task,.task-row .remove-task,.overview-tasks .task-row .expand-task {min-height:28px;padding-block:3px}
.task-list .recurring-label {font-size:7px;margin-left:6px}
.sentiments-editor textarea[data-notes],.final-review-sentiments textarea[data-notes],textarea[data-notes] {font-size:18px;line-height:1.3;padding-bottom:20px}
.recap-note p,.final-review-content .recap-note p {font-size:17px;line-height:1.3}
.recap-tasks li>span:last-child {font-size:16px;line-height:1.2}
.calendar-filters {display:flex;flex-wrap:wrap;gap:7px;margin:0 0 18px}
.calendar-filters button {min-height:40px;padding:9px 15px;border:1px solid #294d8b99;border-radius:3px;background:#b2d4f122;color:var(--ink);font:400 12px var(--font-display)}
.calendar-filters button[aria-pressed='true'] {background:#253f80;color:#d8f1ff;border-color:#beddf7}
.calendar-weight {font:400 9px/1.3 var(--font-ui);white-space:nowrap;color:var(--ink)}
.body-weight-form {border:1px solid var(--line);padding:14px;margin:0 0 18px;background:#b2d4f117}
.body-weight-form>label {display:block;font:400 13px var(--font-display);margin-bottom:10px}
.body-weight-form>label small {font:400 10px var(--font-ui)}
.body-weight-controls {display:flex;align-items:center;gap:9px}
#body-weight {width:110px;min-width:0;min-height:42px;padding:9px;border:1px solid #294d8b99;background:var(--lcd-input);color:var(--ink);font:400 19px var(--font-display)}
.weight-unit {display:flex;border:0;padding:0;margin:0}
.weight-unit label {cursor:pointer}
.weight-unit input {position:absolute;opacity:0;width:1px;height:1px}
.weight-unit span {display:flex;align-items:center;justify-content:center;min-height:42px;min-width:38px;font:400 12px var(--font-ui);border:1px solid #294d8b99}
.weight-unit input:checked+span {background:#253f80;color:#d8f1ff}
.weight-unit input:focus-visible+span {outline:2px solid #d8f1ff;outline-offset:2px}
.body-weight-controls .quiet-button {min-height:42px;font-size:11px;margin-left:auto;white-space:nowrap}
.body-weight-status {display:flex;align-items:center;justify-content:space-between;gap:10px}
.body-weight-status .hint {margin:10px 0 0;font-size:10px}
.body-weight-status .text-button {font-size:10px;min-height:30px}
.recap-body-weight {display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:16px;font:400 12px var(--font-ui);gap:12px}
.recap-body-weight strong {font:400 17px var(--font-display)}
.motion-preview .score-circle {width:44px;height:44px;flex-basis:44px}
.ideal-workout {padding:15px;margin:0 0 20px;border:1px solid #294d8b;background:#c6e4fa2b;box-shadow:inset 3px 0 #c7eaff80}
.ideal-workout-heading {display:flex;justify-content:space-between;align-items:center;gap:12px}
.ideal-workout h4 {font:700 13px/1.5 var(--font-display);text-transform:uppercase;margin:0}
.ideal-workout-heading>span {font:400 10px var(--font-ui)}
.ideal-workout ul {display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;list-style:none;padding:0;margin:13px 0 0}
.ideal-workout li {display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 0;border-top:1px solid var(--line);font:400 12px var(--font-ui)}
.ideal-workout strong {font:700 19px var(--font-display)}
.ideal-workout strong small {font:400 10px var(--font-ui)}
.ideal-workout p {font:400 10px/1.6 var(--font-ui);margin:12px 0 0}

.nutrition-meter,.target-meter {user-select:none;-webkit-user-select:none}
.nutrition-meter {container-type:inline-size}
:is(#nutrition-meter,#sentiments-meter,#final-sentiments-meter) .meter-out-of {left:24%;right:24%;top:64%;margin:0;font-size:clamp(9px,5.2cqw,12px);line-height:1.1;white-space:normal;text-align:center}

/* Desktop panels share the available height; long records scroll within a panel. */
@media(min-width:1001px) {
  /* Match the owner's preferred 80% browser density at normal browser zoom. */
  body {zoom:.8;height:125dvh;min-height:125dvh}
  .app-shell,.is-overview .app-shell {height:calc(125dvh - 24px)}
  .app-shell>main {display:flex;flex-direction:column;container-type:size}
  .app-shell>main>.detail-view {flex:1;min-height:0;display:flex;flex-direction:column;padding:12px 0}
  .detail-heading {flex:none;min-height:40px;margin-bottom:12px}
  .day-score {container-type:size;justify-content:safe center;overflow:auto;min-height:0}
  .day-score>* {flex-shrink:0}
  .day-score .hero-meter {width:min(100%,clamp(60px,calc(100cqh - 182px),285px));max-width:285px;container-type:inline-size}
  .day-score .hero-score .meter-number {font-size:clamp(28px,37cqw,105px)}
  .day-score .hero-score .meter-out-of {font-size:clamp(8px,6cqw,13px)}
  .nutrition-editor {flex:1;min-height:0;width:100%;display:grid;align-items:center;padding:18px;container-type:size;overflow:auto}
  .nutrition-body {width:100%;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:30px;padding:0}
  #nutrition-meter {width:min(100%,clamp(120px,calc(100cqh - 116px),300px))}
  .nutrition-meter {container-type:inline-size}
  .nutrition-score .meter-number {font-size:clamp(32px,34cqw,88px)}
  .nutrition-notes textarea[data-notes] {height:clamp(110px,50cqh,240px);min-height:110px;max-height:calc(100cqh - 110px)}
  .nutrition-body .meter-help {margin-bottom:0}
  .training-grid {flex:1;min-height:0;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr);align-items:stretch}
  .training-grid>.panel {position:relative;min-height:0;overflow:auto;overscroll-behavior:contain;padding:16px}
  .daily-training-card {display:flex;flex-direction:column}
  .daily-training-card>* {flex-shrink:0}
  .daily-training-card .gym-form {margin-bottom:16px}
  .training-choice label {min-height:48px;padding:10px 14px}
  .training-choice legend {margin-bottom:9px}
  .training-pace {padding:12px 0;margin-bottom:12px}
  .body-weight-form {padding:10px;margin-bottom:12px}
  .body-weight-form>label {margin-bottom:6px}
  .muscle-suggestions,.ideal-workout {padding:12px;margin-bottom:12px}
  .ideal-workout ul {margin-top:8px;gap:5px 14px}
  .ideal-workout li {padding:5px 0}
  .gym-form {margin-top:12px;padding-top:12px}
  .training-notes textarea[data-notes] {min-height:110px;height:110px}
  .weekly-training .gym-groups {grid-template-columns:1fr 1fr;gap:14px 20px;margin:18px 0}
  .gym-group-heading {font-size:11px;margin-bottom:7px}
  .gym-totals strong {font-size:25px}
  .gym-totals>div {padding:10px}
  .weekly-rest-credits {padding:10px;margin:12px 0}
  .weekly-rest-credits strong {font-size:28px}
  .app-shell>main>#checklists-view {display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1.1fr);grid-template-rows:auto minmax(0,1fr);gap:12px 14px}
  #checklists-view>.detail-heading {grid-column:1/-1;margin:0}
  .checklist-editor,.tomorrow-plan,.later-plan {position:relative;min-height:0;display:flex;flex-direction:column;overflow:auto;padding:18px}
  .checklist-editor .panel-heading,.checklist-editor .task-tools,.checklist-editor .routine-manager {flex:none}
  .checklist-editor .task-progress {flex:none;margin-top:12px}
  .checklist-editor .task-list {min-height:0;flex:1;overflow:auto}
  #task-summary {margin:10px 0}
  .tomorrow-plan,.later-plan {margin:0}
  #later-tasks {min-height:0;flex:1;overflow:auto;padding-right:4px}
  #tomorrow-tasks {min-height:0;flex:1;max-height:none}
  .sentiments-editor {flex:1;min-height:0;container-type:size;padding:18px;overflow:auto;grid-template-columns:minmax(0,1.65fr) minmax(220px,1fr);align-items:start}
  .sentiments-editor textarea[data-notes] {height:calc(100cqh - 80px);min-height:110px;font-size:18px;line-height:1.3}
  #sentiments-meter {width:min(100%,clamp(100px,calc(100cqh - 235px),230px))}
  .sentiments-rating .hint {font-size:10px;line-height:1.5;margin:8px 0}
  .sentiments-editor label {font-size:13px;margin-bottom:9px}
  .history-grid {flex:1;min-height:0;grid-template-columns:minmax(0,1fr) 320px;grid-template-rows:minmax(0,1fr);align-items:stretch}
  .calendar-card {min-height:0;display:flex;flex-direction:column;overflow:auto;padding:12px}
  #history-view>.detail-heading {min-height:54px}
  .monthly-score,.calendar-streak {padding:8px 12px}
  .monthly-score>.score-circle {width:44px;height:44px;flex-basis:44px}
  .calendar-filters {flex:none;margin-bottom:10px;gap:6px}
  .calendar-filters button {min-height:36px;padding:7px 12px}
  .calendar-card>.panel-heading {flex:none;min-height:32px}
  .calendar-card h3 {font-size:21px}
  .calendar-card .month-navigation .icon-button {width:34px;height:32px}
  .calendar-weekdays {flex:none;margin:8px 0 6px;font-size:9px}
  .calendar-weekdays .week-average-heading {font-size:9px}
  .calendar-weekdays .week-average-heading small {font-size:7px}
  #calendar {flex:1;min-height:0;grid-auto-rows:minmax(44px,1fr);gap:3px}
  .calendar-day {min-height:0;padding:2px 0;gap:2px}
  .calendar-date {font-size:10px}
  .calendar-day .score-circle,.calendar-week-score .score-circle {width:30px;height:30px;flex-basis:30px}
  .calendar-day .score-circle>span,.calendar-week-score .score-circle>span {font-size:10px}
  .calendar-week-score {padding:2px 0;gap:2px}
  .calendar-week-score>small {font-size:7px}
  .calendar-weight {font-size:8px}
  .calendar-legend {flex:none;margin-top:8px;padding-top:8px;font-size:9px}
  .history-detail {min-height:0;overflow:hidden;padding:16px}
  .history-detail h3 {margin-bottom:12px}
  #history-content {position:relative;min-height:0;overflow:auto;overscroll-behavior:contain}
  .history-detail>.primary-button {flex:none;margin-top:12px}
}
