@font-face { font-family: "Inter"; font-style: normal; font-weight: 400; src: url("/coach-native-assets/inter-400.ttf") format("truetype"); font-display: swap; }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 500; src: url("/coach-native-assets/inter-500.ttf") format("truetype"); font-display: swap; }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 600; src: url("/coach-native-assets/inter-600.ttf") format("truetype"); font-display: swap; }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 500; src: url("/coach-native-assets/barlow-condensed-500.ttf") format("truetype"); font-display: swap; }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 600; src: url("/coach-native-assets/barlow-condensed-600.ttf") format("truetype"); font-display: swap; }
@font-face { font-family: "JetBrains Mono"; font-style: normal; font-weight: 500; src: url("/coach-native-assets/jetbrains-mono-500.ttf") format("truetype"); font-display: swap; }
@font-face { font-family: "JetBrains Mono"; font-style: normal; font-weight: 600; src: url("/coach-native-assets/jetbrains-mono-600.ttf") format("truetype"); font-display: swap; }
@font-face { font-family: "Material Symbols Rounded"; font-style: normal; font-weight: 500; src: url("/coach-native-assets/material-symbols-rounded-500.ttf") format("truetype"); font-display: block; }

:root {
  --ink: #1d1d1f;
  --ink-soft: #6e6e73;
  --ink-muted: #a1a1a6;
  --paper: #fbfbfd;
  --paper-card: #ffffff;
  --paper-soft: #f5f5f7;
  --night: #0a0a0c;
  --red: #e53935;
  --success: #16834a;
  --green: var(--success);
  --warning: #f08a3c;
  --gold: #c9a25f;
  --hair: #00000014;
  --night-hair: #ffffff1a;
  --scrim: #00000080;
  --focus: var(--ink);
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
  --app-top: max(12px, calc(var(--safe-top) + 8px));
  --app-width: min(100vw, 430px);
  --logo-width: clamp(56px, calc(var(--app-width) - 310px), 80px);
  --font-body: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-display: "Barlow Condensed", "Roboto Condensed", system-ui, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, monospace;
}

/* Authenticated surfaces share the approved shell; never fabricate source totals. */
.live-app .phone { min-height: 0; }
.live-app .screen-stack { min-height: 0; }
.live-app .identity-target { cursor: pointer; }
.live-app .live-session .attendance-progress { width: auto; min-width: 0; background: transparent; padding: 0; }
.live-app .live-session .attendance-progress strong { font: 500 13px/16.9px var(--font-body); }
.live-app .live-session .status-line { font: 500 13px/16.9px var(--font-body); }
.live-app .live-session .primary-cta { margin-top: auto; font-size: 14px; gap: 4px; }
.live-app .live-session.live-past { background: #ededf0; color: var(--ink); }
.live-app .live-past .role-chip { background: white; color: var(--ink); }
.live-app .live-past .primary-cta { background: var(--ink); color: white; }
.live-app .live-day-bar,.live-app .live-section-title { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.live-day-bar { min-height: 32px; font-size: 13px; }
.live-section-title { margin-bottom: 8px; font: 600 16px/24px var(--font-body); }
.live-section-title>span,.live-muted { color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.live-text-button { border: 0; background: transparent; display: inline-flex; align-items: center; gap: 4px; min-height: 44px; padding: 0 4px; font: 500 14px/19.6px var(--font-body); cursor: pointer; }
.live-sessions { display: flex; flex-direction: column; gap: 4px; }
.live-session-row { width: 100%; min-height: 56px; border: 1px solid transparent; border-radius: 8px; background: white; display: grid; grid-template-columns: 44px minmax(0,1fr) 32px 18px 18px; align-items: center; gap: 8px; padding: 8px; cursor: pointer; text-align: left; font: 500 13px/16.9px var(--font-body); }
.live-session-row>strong { font: 600 18px var(--font-display); }
.live-session-row.done { background: var(--paper-soft); color: var(--ink-soft); }
.live-session-row.active { background: var(--night); color: white; }
.live-session-row[aria-pressed="true"] { border-color: var(--ink-soft); }
.live-quicklook { margin: 4px 0 12px; padding: 0 8px; border-left: 2px solid var(--hair); }
.live-group { border-bottom: 1px solid var(--hair); }
.live-group summary { display: flex; align-items: center; gap: 8px; min-height: 56px; cursor: pointer; font: 500 14px/19.6px var(--font-body); }
.live-group summary:after { content: '⌄'; margin-left: auto; }
.live-group[open] summary:after { content: '⌃'; }
.live-group summary>span:not(.icon) { font: 500 13px/16.9px var(--font-body); color: var(--ink-soft); margin-left: auto; }
.live-group p,.live-source p { font: 400 14px/19.6px var(--font-body); color: var(--ink); margin: 0 0 12px; }
.live-empty { padding: 24px 16px; background: var(--paper-soft); border-radius: 16px; }
.live-empty>.icon { margin-bottom: 12px; }
.live-empty p { font-size: 13px; margin-bottom: 0; color: var(--ink-soft); }
.live-source { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--hair); }
.live-source summary { font: 500 13px/16.9px var(--font-body); color: var(--ink-soft); cursor: pointer; min-height: 44px; padding: 12px 0; }
.live-overview { background: var(--night); color: white; min-height: 184px; border-radius: 24px; padding: 24px 16px; display: flex; justify-content: space-between; gap: 8px; }
.live-overview strong { font: 600 48px var(--font-display); }
.live-overview span,.live-overview p { font: 500 13px/16.9px var(--font-body); color: #ffffffe0; }
.live-calendar { padding: 12px 8px; background: white; border-radius: 16px; }
.live-weekdays,.live-calendar-grid { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 2px; text-align: center; }
.live-weekdays { font: 500 13px/16.9px var(--font-body); color: var(--ink-soft); margin-bottom: 8px; }
.live-calendar-grid button { min-height: 44px; position: relative; border: 0; border-radius: 12px; background: transparent; cursor: pointer; font-size: 13px; }
.live-calendar-grid button.selected { background: var(--night); color: white; }
.live-calendar-grid i { position: absolute; bottom: 5px; left: calc(50% - 2px); width: 4px; height: 4px; border-radius: 50%; background: currentColor; }
.live-calendar>p { margin: 12px 4px 0; font: 500 13px/16.9px var(--font-body); color: var(--ink-soft); }
.live-info { padding: 16px; background: white; border-radius: 16px; font-size: 13px; }
.live-picker { width: min(358px,calc(100vw - 32px)); border: 0; border-radius: 24px; padding: 24px; color: var(--ink); }
.live-picker::backdrop { background: #0006; }
.live-picker label { display: grid; gap: 8px; font-size: 13px; margin: 16px 0; }
.live-picker input { width: 100%; min-width: 0; padding: 12px; border: 1px solid var(--hair); border-radius: 8px; }
.live-picker form>div { display: flex; gap: 8px; }
.live-picker button { flex: 1; min-height: 44px; border: 0; border-radius: 8px; cursor: pointer; }
.live-picker button[type="submit"] { background: var(--night); color: white; }
.live-skeleton { min-height: 56px; background: var(--paper-soft); border-radius: 12px; margin-bottom: 12px; }
.live-skeleton.hero { min-height: 236px; border-radius: 24px; }
.live-loading p { font-size: 13px; color: var(--ink-soft); }
* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; background: var(--paper); color: var(--ink); font-family: var(--font-body); }
body { min-height: 100dvh; display: grid; place-items: center; overflow: hidden; }
button, input, textarea, select { font: inherit; }
button { color: inherit; }
button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, summary:focus-visible, a:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }

#app { width: min(430px, 100vw); height: 100dvh; }
.phone { position: relative; width: 100%; height: 100%; min-height: 0; overflow: hidden; background: var(--paper); }
.app-scroll { position: absolute; inset: 0 0 calc(68px + var(--safe-bottom)); overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: none; padding: var(--app-top) 16px 16px; }
.app-scroll::-webkit-scrollbar { display: none; }
.app-header { width: 100%; height: 58px; padding: 0; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.app-header { position: sticky; top: 0; z-index: 5; background: var(--paper); }
.header-task-actions { display: flex; gap: 8px; }
.header-task-actions button { width: 44px; height: 44px; padding: 0; border: 0; background: transparent; display: grid; place-items: center; border-radius: 8px; cursor: pointer; }
.header-task-actions button[aria-pressed="true"] { background: var(--ink); color: white; }
.app-header::before { content: ""; position: absolute; inset: -12px -16px -14px; background: var(--paper); z-index: -1; }
.brand-logo { width: var(--logo-width); height: 34px; object-fit: contain; flex: 0 0 auto; }
.month-control { width: min(132px, calc(100% - var(--logo-width) - 60px)); height: 40px; flex: 0 1 auto; min-width: 0; border: 0; border-radius: 980px; background: var(--paper-soft); display: flex; align-items: center; justify-content: center; gap: 8px; font: 500 13px/16.9px var(--font-body); color: var(--ink-soft); cursor: pointer; }
.app-header.is-task .month-control { width: min(132px, calc(100% - var(--logo-width) - 112px)); }
.header-add-action { width: 44px; height: 44px; flex: 0 0 44px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 8px; background: transparent; cursor: pointer; }
.identity-target { width: 44px; height: 44px; flex: 0 0 44px; border: 0; border-radius: 50%; background: var(--night); color: #fff; font: 500 13px/16.9px var(--font-body); cursor: pointer; }
.back-row { position: sticky; top: 58px; z-index: 4; width: 100%; height: 40px; margin: 8px 0 8px; padding: 0; border: 0; background: var(--paper); display: flex; align-items: center; gap: 8px; font: 500 14px/19.6px var(--font-body); cursor: pointer; }
.phone:not(.personal-phone) .screen-content:has(.back-row) { margin-top: 0; }
.back-row::before { content: ""; position: absolute; inset: -8px -16px -6px; background: var(--paper); z-index: -1; }
.back-row > span:last-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.screen-content { width: 100%; min-width: 0; margin-top: 14px; }
.back-row + .screen-content { margin-top: 0; }
.screen-stack { display: flex; flex-direction: column; gap: 16px; min-height: 0; }
.attendance-screen { gap: 4px; min-height: 629px; }
.attendance-screen .session-hero { height: 176px; }

.icon { display: inline-flex; align-items: center; justify-content: center; line-height: 1; flex: 0 0 auto; overflow: visible; }
.material-symbols-rounded { font-family: "Material Symbols Rounded"; font-weight: 500; font-style: normal; font-variation-settings: "FILL" 0, "wght" 500, "GRAD" 0, "opsz" 24; font-feature-settings: "liga"; letter-spacing: normal; text-transform: none; white-space: nowrap; word-wrap: normal; direction: ltr; -webkit-font-smoothing: antialiased; }
.size-16 { font-size: 16px; width: 16px; height: 16px; }
.size-18 { font-size: 18px; width: 18px; height: 18px; }
.size-20 { font-size: 20px; width: 20px; height: 20px; }
.size-22 { font-size: 22px; width: 22px; height: 22px; }
.size-24 { font-size: 24px; width: 24px; height: 24px; }
.size-32 { font-size: 32px; width: 32px; height: 32px; }
.avatar-icon { width: 36px; height: 36px; font-size: 36px; }
.success { color: var(--success) !important; }
.danger { color: var(--red) !important; }
.warning { color: var(--warning) !important; }
.muted { color: var(--ink-muted) !important; }

.bottom-nav { position: absolute; z-index: 10; left: 16px; right: 16px; bottom: var(--safe-bottom); height: 68px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; padding: 4px; outline: 1px solid var(--hair); border-radius: 18px; background: var(--paper-card); }
.fixed-action-tray { position: absolute; z-index: 11; left: 0; right: 0; bottom: calc(68px + var(--safe-bottom)); display: grid; gap: 8px; padding: 16px; background: var(--paper); }
.fixed-action-tray > :is(.attendance-review-actions, .approval-actions, .footer-cta) { width: 100%; min-height: 48px; margin: 0; }
.phone:has(> .fixed-action-tray) .attendance-screen { padding-bottom: 96px; }
.fixed-action-tray > [data-attendance-recovery] { width: 100%; min-height: 48px; margin: 0; border-radius: 8px; background: var(--night); color: #fff; }
.phone > .attendance-save-notice { position: absolute; z-index: 12; left: 16px; right: 16px; bottom: calc(68px + var(--safe-bottom) + 80px + 16px); max-height: 120px; overflow-y: auto; margin: 0; padding: 16px; border: 1px solid var(--hair); border-radius: 8px; background: var(--paper-card); color: var(--ink); font: 400 14px/19.6px var(--font-body); box-shadow: 0 8px 24px #00000018; }
.safe-area { position: absolute; z-index: 9; inset: auto 0 0; height: var(--safe-bottom); background: var(--paper); }
.safe-area::after { content: ""; position: absolute; width: 96px; height: 4px; border-radius: 4px; background: var(--ink-muted); bottom: 12px; left: 50%; transform: translateX(-50%); }
.nav-item { min-width: 0; min-height: 44px; border: 0; border-radius: 14px; background: transparent; color: var(--ink); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; font: 500 13px/16.9px var(--font-body); cursor: pointer; }
.nav-item > span:last-child { white-space: nowrap; }
.nav-item.active { background: var(--night); color: #fff; }
.nav-icon-wrap { position: relative; display: inline-flex; }
.nav-pt-icon { width: 20px; height: 20px; object-fit: contain; filter: grayscale(1); opacity: .72; }
.nav-icon-wrap > .icon { width: 20px; height: 20px; font-size: 20px; }
.nav-item.active .nav-pt-icon { filter: brightness(0) invert(1); opacity: 1; }
.nav-badge { position: absolute; min-width: 20px; height: 20px; padding: 0 4px; left: 13px; top: -7px; border-radius: 980px; background: var(--red); color: #fff; font: 500 13px/20px var(--font-body); }

.session-hero { height: 236px; padding: 16px; border-radius: 24px; display: flex; flex-direction: column; gap: 8px; overflow: hidden; }
.session-hero.dark { color: #fff; background: var(--night); }
.session-hero.light { color: var(--ink); background: #fff; box-shadow: none; outline: 1px solid var(--hair); }
.session-hero-main { height: 112px; flex: 0 0 112px; display: flex; justify-content: space-between; }
.session-copy { position: relative; width: 190px; min-width: 0; }
.session-copy .session-time { position: absolute; top: -8px; left: 0; }
.session-copy .tag-row { position: absolute; top: 42px; left: 0; }
.session-copy .role-row { position: absolute; top: 86px; left: 0; gap: 8px; }
.session-copy .role-chip { min-width: 76px; justify-content: center; }
.session-copy .scope-coach { max-width: 190px; justify-content: flex-start; }
.session-copy .source-roles { width: min(326px, calc(100vw - 64px)); height: 32px; overflow-x: auto; overflow-y: hidden; white-space: nowrap; scrollbar-width: thin; }
.session-copy .source-roles .role-chip { flex: 0 0 auto; min-width: 0; padding: 0 8px; }
.scope-coach > span:last-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.scope-coach > .icon { flex-shrink: 0; }
.attendance-screen .session-hero { padding-bottom: 8px; }
.session-time { font: 600 32px/33.6px var(--font-display); letter-spacing: -1px; }
.session-hero[aria-label] .session-copy .session-time { position: static; }
.session-hero[aria-label] { height: auto; min-height: 124px; }
.session-hero[aria-label] .session-hero-main { min-height: 92px; height: auto; }
.session-empty-message { margin: 8px 0; line-height: 1.4; }
.session-hero[aria-label] .tag-row,
.session-hero[aria-label] .role-row,
.session-hero[aria-label] .session-status-row,
.session-hero[aria-label] .primary-cta { display: none; }
.session-art { width: 112px; height: 96px; object-fit: contain; align-self: flex-start; margin-top: -8px; }
.tag-row, .role-row { display: flex; gap: 6px; align-items: center; }
.taxonomy { width: 94px; height: 32px; padding: 0 8px; border: 1px solid var(--night-hair); border-radius: 8px; background: var(--night); color: #fff; display: inline-flex; align-items: center; justify-content: center; font: 500 13px/16.9px var(--font-body); white-space: nowrap; }
.taxonomy:last-child { width: 36px; padding-inline: 4px; }
.taxonomy.inverted { background: #fff; color: var(--ink); }
.taxonomy { min-width: 0; max-width: 100%; flex-shrink: 0; }
.taxonomy > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.attendance-progress { max-width: 100%; flex-shrink: 0; white-space: nowrap; }
.role-chip, .status-chip { min-height: 28px; padding: 0 12px; border-radius: 980px; display: inline-flex; align-items: center; gap: 4px; background: #222226; color: #fff; font: 500 13px/16.9px var(--font-body); }
.session-hero.light .role-chip { background: var(--paper-soft); color: var(--ink-soft); }
.session-hero .role-chip.main { color: inherit; }
.session-hero.dark .role-chip.main { background: #fff; color: var(--ink); }
.session-hero.dark .role-chip.main .icon { color: var(--red); }
.session-status-row { min-height: 32px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.status-line { display: inline-flex; align-items: center; gap: 8px; font: 500 13px/16.9px var(--font-body); }
.attendance-progress { min-width: 166px; height: 32px; padding: 0 10px; border-radius: 8px; background: transparent; display: flex; align-items: center; gap: 8px; font-size: 13px; }
.session-hero.light .session-status-row { justify-content: flex-end; padding-left: 0; }
.session-hero.light .session-status-row > .session-signals { display: none; }
.session-hero.light .attendance-progress { min-width: 0; width: auto; height: 28px; border-radius: 980px; font-size: 14px; color: var(--ink-soft); padding: 0 8px; gap: 4px; }
.session-hero.upcoming-tag-inline { position: relative; height: auto; }
.session-hero.upcoming-tag-inline .session-status-row { position: absolute; top: 8px; left: 88px; min-height: 28px; }
.session-hero.upcoming-tag-inline .attendance-progress { font: 500 13px/16.9px var(--font-body); min-height: 24px; }
.session-hero.light .role-chip.main { background: var(--night); color: #fff; }
.session-hero.light .role-chip.main .icon { color: var(--red); }
.attendance-progress .progress { flex: 1; }
.progress { display: block; height: 6px; border-radius: 980px; background: #ffffff33; overflow: hidden; }
.progress > span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #1f9364, #76dfb5); }
.progress.dot-progress { height: 8px; display: flex; align-items: center; gap: 3px; overflow: visible; background: transparent; }
.progress.dot-progress > i { width: 6px; height: 6px; flex: 0 0 6px; border-radius: 50%; background: var(--success); }
.progress.dot-progress > i.missing { background: var(--red); }
.session-hero.light .progress, .calendar-hero .progress, .task-hero .progress, .pt-client-hero .progress { background: #dedfe3; }
.primary-cta { width: 326px; min-height: 48px; border: 0; border-radius: 8px; padding: 0 16px; font: 500 14px/19.6px var(--font-body); cursor: pointer; }
.light-cta { background: #fff; color: var(--ink); }
.dark-cta { background: var(--night); color: #fff; }
.primary-cta:disabled { background: #d1d2d6; color: var(--ink-soft); cursor: not-allowed; }

.section-block { display: flex; flex-direction: column; gap: 8px; }
.today-screen { gap: 13px; }
.today-screen .section-block { gap: 4px; }
.today-screen .section-heading { min-height: 24px; }
.today-screen .section-heading h2 { font: 600 16px/24px var(--font-body); }
.today-screen .section-heading .status-chip { min-height: 20px; font: 500 13px/16.9px var(--font-body); padding-inline: 10px; }
.section-heading { min-height: 28px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.section-heading h2, .roster-title { margin: 0; font: 600 16px/24px var(--font-body); }
.status-chip { background: var(--paper-soft); color: var(--ink-soft); }
.status-chip.success { background: #e5f6ee; color: var(--ink) !important; }
.status-chip.warning { background: #fff0e6; color: var(--ink) !important; }
.session-list { display: flex; flex-direction: column; gap: 8px; }
.session-row { width: 100%; min-height: 56px; height: auto; border: 0; border-radius: 8px; padding: 8px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; background: var(--paper-card); text-align: left; cursor: pointer; }
.session-row.past { background: var(--paper-soft); }
.session-row.active { background: var(--night); color: #fff; }
.session-row-main { flex: 1 1 auto; min-width: min-content; display: flex; align-items: center; gap: 8px; }
.session-row-name { flex: 1 1 80px; min-width: 80px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 600 16px/24px var(--font-body); }
.session-row-branch { flex: 0 0 auto; max-width: 52px; height: 32px; padding: 0 8px; border: 1px solid var(--hair); border-radius: 8px; background: var(--night); color: #fff; display: inline-flex; align-items: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 500 13px/16.9px var(--font-body); }
.session-row.active .session-row-branch { background: #fff; color: var(--ink); }
.session-row-action { flex: 0 0 44px; width: 44px; height: 44px; margin-left: auto; display: grid; place-items: center; }
.row-time { flex: 0 0 48px; font: 500 13px/16.9px var(--font-body); }
.session-signals { justify-self: end; display: flex; align-items: center; justify-content: space-between; gap: 12px; color: var(--ink-soft); }
.session-row .session-signals { flex: 0 0 auto; width: max-content; max-width: 116px; padding: 0; gap: 4px; }
.session-hero .session-signals { width: 126px; padding-inline: 10px; color: inherit; }
.daily-progress { width: 186px; }
.daily-progress .progress.dot-progress > i.filled { background: var(--success); }
.session-row.active .session-signals { color: #fff; }
.signal-with-badge, .signal-illustration { position: relative; display: inline-flex; }
.dynamic-badge { min-width: 20px; height: 20px; padding: 0 5px; border-radius: 980px; color: #fff; background: var(--night); display: inline-flex; align-items: center; justify-content: center; font: 500 13px/20px var(--font-body); }
.signal-with-badge .dynamic-badge, .signal-illustration .dynamic-badge { position: absolute; left: 13px; top: -10px; }
.dynamic-badge.danger { background: var(--red); color: #fff !important; }
.quicklook { margin: 8px 0 0; display: flex; flex-direction: column; gap: 8px; }
.session-row.selected + .quicklook { margin-top: -8px; }
.quicklook-title + .trial-row { margin-top: -12px; }
.trial-row + .quicklook-line { margin-top: 12px; }
.quicklook-title, .quicklook-line { min-height: 56px; border: 0; background: transparent; display: grid; grid-template-columns: 56px 1fr 24px; align-items: center; gap: 8px; text-align: left; padding: 0 8px; }
.quicklook-title img, .quicklook-line img { width: 40px; height: 40px; object-fit: contain; }
.quicklook strong { display: block; font: 500 14px/19.6px var(--font-body); }
.quicklook small { display: block; margin-top: 2px; color: var(--ink); font: 400 14px/19.6px var(--font-body); }
.quicklook-line > span:last-child { font: 500 13px/16.9px var(--font-body); color: var(--ink); text-align: right; }
.trial-row { min-height: 58px; margin-inline: 18px; border-radius: 8px; background: var(--paper-soft); display: grid; grid-template-columns: 36px 1fr; gap: 10px; align-items: center; padding: 8px 10px; }
.trial-row strong { white-space: nowrap; font-weight: 600; }
.trial-row b { font-weight: 600; }
.quicklook-line { background: #fff; border-radius: 18px; grid-template-columns: 40px minmax(0, 1fr) 24px; }
.quicklook-line.has-detail { grid-template-columns: 40px minmax(0, 1fr) 24px 44px; }
.quicklook-line small { overflow-wrap: anywhere; }
.quicklook-detail { width: 44px; height: 44px; padding: 0; border: 0; background: transparent; color: var(--ink); display: grid; place-items: center; cursor: pointer; }
.quicklook-trial-state { min-height: 132px; margin-inline: 8px; padding: 16px; border-radius: 18px; background: var(--paper-soft); display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 8px; text-align: center; }
.quicklook-trial-state p { margin: 0; font: 400 14px/19.6px var(--font-body); color: var(--ink); }
.quicklook-trial-state .live-text-button { min-height: 44px; }
.quicklook-trial-row { width: 100%; min-height: 58px; padding: 8px 10px; border-radius: 8px; background: #fff; display: flex; flex-direction: column; justify-content: center; text-align: left; }
.today-no-class-hero { min-height: 124px; padding: 16px; border-radius: 24px; background: var(--night); color: #fff; display: flex; flex-direction: column; justify-content: center; gap: 4px; }
.today-no-class-hero h1 { margin: 0; font: 600 16px/24px var(--font-body); }
.today-no-class-hero p { margin: 0; color: #ffffffE0; font: 500 13px/16.9px var(--font-body); }
.today-no-class-list > p { margin: 8px 0 0; font: 400 14px/19.6px var(--font-body); }
.quicklook-title { grid-template-columns: 56px 1fr 24px; }
.trial-avatar { width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; background: var(--night); color: #fff; }
.trial-row > strong { align-self: start; white-space: nowrap; font-size: 14px; }
.pt-session-row { min-height: 60px; display: flex; align-items: center; gap: 12px; }
.time-stack { display: flex; flex-direction: column; }
.pt-session-row .time-stack { width: 60px; }
.pt-today .pill-action { align-self: flex-start; margin-left: 72px; min-height: 44px; padding-inline: 12px; }
.pt-today-item { border-bottom: 1px solid var(--hair); padding-bottom: 8px; }
.pt-today-item:last-child { border-bottom: 0; }
.pt-today-actions .pill-action { margin-left: 72px; }
.pt-today .status-chip { font: 500 13px/16.9px var(--font-body); }
.pt-status { position: relative; flex: 0 0 40px; }
.pt-status-icon { width: 44px; height: 44px; padding: 0; border: 0; background: transparent; color: var(--ink-soft); display: grid; place-items: center; cursor: pointer; }
.pt-status-icon.success { color: var(--success); }
.pt-status-icon:focus-visible { outline: 2px solid var(--ink-soft); border-radius: 8px; }
.pt-status-hint { position: absolute; right: 0; top: 44px; z-index: 5; width: max-content; max-width: 200px; padding: 6px 10px; border-radius: 8px; background: var(--paper-soft); color: var(--ink-soft); font: 400 13px/16.9px var(--font-body); box-shadow: 0 2px 8px #0002; }
.pt-confirm-popup { max-width: 240px; padding: 10px; background: #fff; }
.pt-confirm-popup .pill-action { margin: 0; white-space: nowrap; }
.time-stack strong { font: 600 20px/1 var(--font-display); }
.time-stack span, .grow span { color: var(--ink-soft); font-size: 13px; }
.grow { flex: 1; display: flex; flex-direction: column; gap: 6px; }
.grow span { display: flex; align-items: center; gap: 4px; }
.pill-action { min-height: 44px; align-self: center; padding: 0 20px; border: 0; border-radius: 980px; background: var(--night); color: #fff; display: inline-flex; align-items: center; gap: 8px; font: 500 14px/19.6px var(--font-body); }
.pill-action:disabled { background: var(--paper-soft); color: var(--ink-muted); }

.calendar-hero, .task-hero, .pt-hero, .aggregate-hero, .notes-hero, .task-detail-hero, .task-composer-hero { border-radius: 24px; background: var(--night); color: #fff; }
.calendar-hero { height: 124px; padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; }
.calendar-metric { display: flex; align-items: baseline; gap: 8px; position: relative; padding-right: 104px; }
.calendar-metric > span, .task-metric { font: 600 48px/52.8px var(--font-display); }
.calendar-metric small, .metric-unit, .pt-hero small { font: 500 13px/16.9px var(--font-body); }
.calendar-metric small { min-width: 0; line-height: 1.25; }
.calendar-metric img { position: absolute; right: 0; top: -12px; width: 88px; height: 68px; object-fit: contain; }
.calendar-meta { margin-top: auto; display: flex; justify-content: space-between; font: 500 13px/16.9px var(--font-body); }
.class-screen { gap: 8px; }
.calendar-meta span { display: flex; align-items: center; gap: 6px; }
.month-calendar { padding: 12px; border: 1px solid var(--hair); border-radius: 18px; background: #fff; }
.class-screen .month-calendar { padding: 12px 0; border: 0; outline: 1px solid var(--hair); }
.weekdays, .calendar-week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.weekdays span { text-align: center; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.day-cell { position: relative; min-width: 40px; min-height: 56px; border: 0; background: transparent; border-radius: 8px; font: 500 13px/16.9px var(--font-body); }
.day-cell.is-today > span:first-child { display: inline-grid; place-items: center; width: 28px; height: 28px; border: 2px solid var(--ink); border-radius: 50%; background: transparent; color: var(--ink); }
.day-cell.outside { color: var(--ink-soft); }
.day-cell.outside:disabled { color: var(--ink-muted); }
.day-cell.event-day > span:first-child { display: inline-grid; place-items: center; width: 28px; height: 28px; border: 1px solid var(--red); border-radius: 50%; }
.day-cell .day-rail { position: absolute; left: 50%; bottom: 0; transform: translateX(-50%); width: 18px; height: 4px; border-radius: 980px; background: #e9e9eb; }
.day-cell > span.day-rail { display: block; width: 18px; height: 3px; background: var(--ink-muted); border: 0; border-radius: 3px; box-shadow: none; }
.day-cell > span.day-rail.confirmed { background: var(--success); }
.day-cell > span.day-rail.unconfirmed { background: var(--red); }
.day-cell .day-rail.done, .day-cell i.day-done { background: var(--success); color: #fff; }
.day-cell .day-rail.alert, .day-cell i.day-alert { background: var(--red); color: #fff; }
.calendar-meta { justify-content: flex-start; gap: 24px; }
.calendar-metric { margin-top: 8px; }
.calendar-metric img { width: 88px; height: 76px; right: 16px; }
.calendar-meta .signal-with-badge { margin-right: 12px; }
.training-mark { color: var(--success); font-size: 20px; line-height: 1; }
.calendar-progress{width:180px;height:6px;flex:none;overflow:hidden;border-radius:3px;background:var(--night-hair)}
.calendar-progress>i{display:block;height:100%;border-radius:inherit;background:#fff}
.roster-empty{margin:0;padding:20px 12px;border-radius:12px;background:#f5f5f7;color:var(--ink-soft);font-size:14px;text-align:center}
.day-cell i { position: absolute; right: 2px; bottom: 1px; min-width: 13px; height: 17px; background: transparent; color: var(--ink); font: normal 500 13px/16.9px var(--font-body); }
.day-cell.future, .day-cell.future > span:first-child, .day-cell.future .icon { color: var(--ink-soft); }
.day-cell.future:disabled, .day-cell.future:disabled > span:first-child, .day-cell.future:disabled .icon { color: var(--ink-muted); }
.day-cell.future.event-day > span:first-child { border-color: var(--ink-soft); }
.day-cell.future > span.day-rail { background: var(--ink-soft); }
.day-cell.future i { background: var(--paper-soft); color: var(--ink-soft); }
.coach-month-calendar .weekdays { margin-bottom: 4px; }
.coach-month-calendar .day-cell { min-width: 0; height: 52px; min-height: 52px; padding: 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; color: var(--ink); }
.coach-month-calendar .day-cell .day-number { flex: none; display: grid; place-items: center; width: 28px; height: 28px; color: var(--ink); }
.coach-month-calendar .day-cell.is-today:not([aria-pressed="true"]) .day-number { border: 0; }
.coach-month-calendar .day-cell.event-day .day-number { border: 1px solid var(--red); border-radius: 50%; }
.coach-month-calendar .day-cell[aria-pressed="true"] .day-number { border: 2px solid var(--ink); border-radius: 50%; color: var(--ink); }
.coach-month-calendar .day-cell.outside:disabled .day-number { color: var(--ink-muted); }
.coach-month-calendar .day-status { height: 17px; display: flex; align-items: center; justify-content: center; gap: 4px; }
.coach-month-calendar .day-cell .day-count { position: static; min-width: 0; height: auto; background: transparent; color: var(--ink); font: normal 500 13px/16.9px var(--font-body); }
.coach-month-calendar .day-marker { width: 12px; height: 12px; font-size: 12px; line-height: 12px; color: var(--ink-muted); }
.coach-month-calendar .day-done .day-marker { color: var(--success); }
.coach-month-calendar .day-dot { width: 6px; height: 6px; border-radius: 50%; background: #e1e1e5; }
.coach-month-calendar .day-cell .day-rail { position: static; transform: none; flex: none; width: 18px; height: 3px; margin-top: 2px; }
.monthly-groups { display: flex; flex-direction: column; gap: 8px; }
.monthly-row { width: 100%; height: 56px; border: 0; border-radius: 8px; padding: 0 8px; background: #fff; display: grid; grid-template-columns: 40px 1fr auto 22px; align-items: center; gap: 8px; text-align: left; }
.monthly-icon { width: 40px; height: 40px; display: grid; place-items: center; }
.monthly-icon img { width: 40px; height: 40px; object-fit: contain; }
.monthly-row strong, .monthly-row small { display: block; }
.monthly-row strong { font: 600 16px/24px var(--font-body); }
.monthly-row small { color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.monthly-progress { display: flex; align-items: center; gap: 8px; color: var(--ink); font: 500 13px/16.9px var(--font-body); }
.monthly-detail { border-radius: 8px; background: #fff; overflow: hidden; }
.monthly-detail summary { cursor: pointer; list-style: none; }
.monthly-detail summary::-webkit-details-marker { display: none; }
.monthly-detail[open] summary > .icon:last-child { transform: rotate(180deg); }
.monthly-detail summary > .icon:last-child { transition: transform .18s ease; }
.monthly-items { display: flex; flex-direction: column; gap: 1px; padding: 0 8px 8px 56px; }
.monthly-items > p { margin: 0; padding: 8px 0; color: var(--ink-soft); font-size: 13px; }
.monthly-item { width: 100%; border: 0; border-top: 1px solid var(--hair); background: transparent; padding: 10px 0; text-align: left; }
.monthly-item strong,.monthly-item small { display: block; }
.monthly-item strong { color: var(--ink); font-size: 14px; }
.monthly-item small { margin-top: 2px; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.monthly-source { margin: 2px 8px 0; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.monthly-detail-link { width: 100%; min-height: 44px; padding: 0 8px; border: 0; background: transparent; text-align: left; font: 500 14px/19.6px var(--font-body); cursor: pointer; }
.class-detail-screen { gap: 8px; }
.class-detail-screen > .back-row { margin-bottom: 0; }
.class-detail-screen > h1 { margin: 0; font: 500 20px/28px var(--font-body); }
.class-detail-list { display: grid; gap: 8px; }
.class-detail-list > p { margin: 0; font: 400 14px/19.6px var(--font-body); color: var(--ink-soft); }
.class-detail-row { position: relative; width: 100%; min-height: 56px; padding: 8px 52px 8px 8px; border: 0; border-bottom: 1px solid var(--hair); background: transparent; display: flex; flex-direction: column; justify-content: center; gap: 4px; text-align: left; }
button.class-detail-row { cursor: pointer; }
.class-detail-row strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 600 16px/24px var(--font-body); }
.class-detail-row small { color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.class-detail-row > .icon { position: absolute; right: 20px; top: calc(50% - 10px); }
.class-events-screen { gap: 8px; }
.class-events-hero { margin-top: 4px; }
.class-events-section { margin: 20px 0 0; font: 600 16px/24px var(--font-body); }
.class-event-row { width: 100%; min-height: 88px; padding: 8px 4px; border: 0; background: transparent; display: grid; grid-template-columns: 64px minmax(0, 1fr) 24px; align-items: center; gap: 8px; text-align: left; cursor: pointer; }
.class-event-row img { width: 56px; height: 56px; object-fit: contain; }
.class-event-row span { min-width: 0; }
.class-event-row strong, .class-event-row small { display: block; overflow-wrap: anywhere; }
.class-event-row strong { font: 600 16px/24px var(--font-body); }
.class-event-row small { margin-top: 4px; color: var(--ink-soft); font: 500 13px/18px var(--font-body); }
.class-event-row > .icon { color: var(--ink-soft); }
.class-events-empty { margin: 16px 0 0; color: var(--ink-soft); font: 400 14px/19.6px var(--font-body); }
.class-notes-hero { min-height: 132px; padding: 16px; border-radius: 24px; background: var(--night); color: #fff; display: grid; grid-template-columns: 64px minmax(0, 1fr); align-items: center; gap: 16px; }
.class-notes-hero img { width: 64px; height: 64px; object-fit: contain; }
.class-notes-hero h1 { margin: 0; font: 500 20px/28px var(--font-body); }
.class-notes-hero strong { display: block; margin-top: 8px; font: 600 16px/24px var(--font-body); }
.class-notes-hero p { margin: 8px 0 0; color: #ffffffe0; font: 500 13px/16.9px var(--font-body); }
.class-notes-section { margin: 16px 0 0; font: 600 16px/24px var(--font-body); text-transform: uppercase; }
.class-notes-empty { margin: 16px 0 0; color: var(--ink-soft); font: 400 14px/19.6px var(--font-body); }
.class-note-row { min-height: 104px; display: grid; grid-template-columns: minmax(0, 1fr) 44px; align-items: center; gap: 8px; border-radius: 8px; background: var(--paper-soft); }
.class-note-disclosure { grid-column: 1; min-width: 0; }
.class-note-disclosure summary { position: relative; min-height: 104px; padding: 8px 28px 8px 8px; display: grid; grid-template-columns: 40px minmax(0, 1fr); align-items: center; gap: 8px; list-style: none; cursor: pointer; }
.class-note-disclosure summary::-webkit-details-marker { display: none; }
.class-note-disclosure summary::after { content: "expand_more"; position: absolute; right: 4px; top: 10px; font: 500 20px/20px "Material Symbols Rounded"; }
.class-note-disclosure[open] summary::after { content: "expand_less"; }
.class-note-avatar { width: 40px; height: 40px; border-radius: 8px; background: var(--night); color: #fff; display: grid; place-items: center; font: 500 14px/19.6px var(--font-body); }
.class-note-identity { min-width: 0; display: grid; gap: 2px; }
.class-note-identity strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 600 16px/24px var(--font-body); }
.class-note-identity small { min-width: 0; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.class-note-preview { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font: 400 14px/19.6px var(--font-body); overflow-wrap: anywhere; }
.class-note-disclosure[open] .class-note-preview { display: none; }
.class-note-disclosure .class-note-full { margin: 0; padding: 0 12px 12px 56px; font: 400 14px/19.6px var(--font-body); overflow-wrap: anywhere; }
.class-note-row > .note-task-link { position: static; grid-column: 2; grid-row: 1; width: 44px; height: 44px; padding: 0; display: grid; place-items: center; color: var(--red); cursor: pointer; }
.class-note-row:not(button):not(:has(> .note-task-link)) { grid-template-columns: minmax(0, 1fr); }
.class-note-task-only { width: 100%; grid-template-columns: 40px minmax(0, 1fr) 44px; padding: 8px; border: 0; text-align: left; cursor: pointer; }
.class-note-task-only > .icon { grid-column: 3; justify-self: center; color: var(--red); }

.aggregate-hero { height: 132px; padding: 16px; display: grid; grid-template-columns: 64px 1fr auto; align-items: center; gap: 16px; }
.aggregate-hero img { width: 56px; height: 56px; object-fit: contain; }
.aggregate-hero h1, .notes-hero h1 { margin: 0; font: 600 20px/1.05 var(--font-display); }
.aggregate-hero p { margin: 12px 0 0; color: #ffffffcc; font-size: 14px; }
.aggregate-hero > span { display: flex; align-items: center; gap: 8px; color: #ffffffcc; font-size: 14px; align-self: center; margin-top: 36px; }
.eyebrow { margin: 4px 0 0; color: var(--ink); font: 500 13px/16.9px var(--font-body); text-transform: uppercase; }
.event-row { min-height: 88px; display: grid; grid-template-columns: 80px 1fr auto; gap: 8px; align-items: center; }
.event-row { padding-inline: 16px; grid-template-columns: 64px 1fr auto; }
.event-row + .eyebrow + .event-row, .event-row + .event-row { margin-top: -8px; }
.aggregate-screen .eyebrow { font-size: 14px; text-transform: none; letter-spacing: 0; }
.event-row img { width: 56px; height: 56px; object-fit: contain; }
.event-row strong, .event-row small { display: block; }
.event-row strong { font-size: 16px; font-weight: 600; line-height: 1.3; }
.event-row small { margin-top: 6px; color: var(--ink-soft); font-size: 14px; font-weight: 500; line-height: 1.3; }
.event-time { width: 56px; text-align: right; }
.event-time strong { font-family: var(--font-mono); font-size: 14px; }
.birthday-row, .note-student-row { position: relative; min-height: 100px; }
.birthday-row { display: grid; grid-template-columns: 80px 1fr; gap: 12px; padding: 10px 8px; background: transparent; }
.birthday-identity { padding-top: 1px; font-size: 16px; font-weight: 600; }
.note-student-row > .person-row { margin: 0; }
.birthday-meta { position: absolute; left: 100px; top: 38px; display: flex; flex-direction: column; gap: 2px; color: var(--ink-soft); font-size: 14px; }
.birthday-check { position: absolute; right: 16px; top: 30px; width: 40px; height: 40px; border: 0; background: transparent; color: var(--success); }
.birthday-check:not(.done)::before { content: ""; display: block; width: 20px; height: 20px; margin: auto; border: 2px solid var(--ink-muted); }

.notes-hero { min-height: 132px; padding: 16px; display: grid; grid-template-columns: 64px 1fr; gap: 16px; align-items: center; }
.notes-hero img { width: 64px; height: 64px; object-fit: contain; }
.notes-hero strong { display: block; margin-top: 8px; font-size: 16px; }
.notes-hero p { display: flex; justify-content: space-between; margin: 16px 0 6px; font-size: 13px; color: #ffffffcc; }
.person-row { position: relative; min-height: 72px; background: var(--paper-soft); display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 8px; padding: 8px; }
.person-row:has(.presence-actions), .person-row:has(.birthday-mark) { min-height: 72px; }
.person-row:has(.presence-actions) { min-height: 100px; }
.attendance-screen.draft > .footer-cta, .attendance-screen.readonly > .footer-cta { margin-top: -4px; }
.person-row.is-absent { min-height: 72px; }
.person-row.has-actions { padding-right: 112px; }
.person-row.has-actions.one-action { padding-right: 60px; }
.person-row.compact { min-height: 72px; }
.person-avatar { width: 40px; height: 40px; border-radius: 8px; background: var(--night); color: #fff; display: grid; place-items: center; overflow: hidden; font: 500 14px/19.6px var(--font-body); }
.person-avatar .avatar-icon { width: 24px; height: 24px; }
.person-avatar.photo { background: linear-gradient(145deg, #d8b39f, #8aa8c2); }
.person-avatar.photo span { font-size: 14px; font-weight: 600; }
.person-avatar.photo img { width: 40px; height: 40px; object-fit: cover; object-position: center; }
.birthday-row + .birthday-row { margin-top: -8px; }
.person-content { min-width: 0; padding-top: 1px; }
.person-name-line { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; min-height: 20px; }
.person-name-line strong { max-width: 100%; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 600 16px/24px var(--font-body); }
.belt-badge { width: 36px; flex: 0 0 36px; height: 12px; border: 1px solid #cfd0d3; border-radius: 6px; background: #fff; display: inline-grid; grid-template-columns: 22px 5px 5px; overflow: hidden; }
.belt-badge i:nth-child(2) { background: #fff; }
.belt-badge i:nth-child(3) { background: #000; }
.belt-badge.blue i:first-child { background: #145ce0; }
.belt-badge.white-blue i:first-child, .belt-badge.white-black i:first-child { background: #fff; }
.belt-badge.white-blue i:nth-child(2) { background: #145ce0; }
.note-preview, .subnote, .attendance-result { margin: 8px 0 0; color: var(--ink-soft); font-size: 14px; line-height: 1.2; display: flex; align-items: flex-start; gap: 6px; }
.note-preview span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.expanded-note .note-preview span { -webkit-line-clamp: unset; }
.note-preview.alert .icon { color: var(--red); font-variation-settings: "FILL" 1, "wght" 700; }
.note-preview.done .icon { color: var(--warning); }
.note-preview.watch .icon { color: var(--ink-muted); }
.attendance-result span { color: inherit; }
.rating-line { margin-top: 8px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; color: var(--ink); font: 500 13px/16.9px var(--font-body); }
.rating-line > span:last-child { min-width: 0; white-space: nowrap; }
.stars { display: inline-flex; gap: 1px; color: #c9cbd0; }
.stars .filled { color: #f18639; }
.person-actions { position: absolute; top: 8px; right: 8px; display: flex; gap: 8px; }
.icon-button { width: 40px; height: 40px; border: 0; border-radius: 8px; background: transparent; display: inline-grid; place-items: center; cursor: pointer; }
.icon-button.dark { width: 28px; height: 28px; background: var(--night); color: #fff; }
.person-actions .icon-button { width: 44px; height: 44px; border: 0; background: transparent; }
.person-actions .icon-button > .icon { width: 28px; height: 28px; border: 1px solid var(--hair); border-radius: 8px; background: var(--paper-card); }
.person-actions .icon-button.dark > .icon { border-color: var(--night); background: var(--night); color: #fff; }
.icon-button.active { color: var(--success); }
.birthday-mark { position: absolute; left: 30px; top: 0; width: 44px; height: 44px; padding: 0; box-sizing: border-box; flex: none; border: 0; border-radius: 50%; background: transparent; color: #fff; display: grid; place-items: center; }
.birthday-mark > .icon { width: 22px; height: 22px; border-radius: 50%; background: var(--red); line-height: 1; }
.birthday-mark.complete > .icon { background: var(--success); }
.presence-actions { margin-top: 8px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.presence-actions .compact-action { position: relative; isolation: isolate; min-height: 44px; border: 0; background: transparent; }
.presence-actions .compact-action:is(.active, .absent.active) { background: transparent; }
.presence-actions .compact-action::before { content: ""; position: absolute; z-index: -1; inset: 2px 0; border: 1px solid var(--hair); border-radius: 8px; background: var(--paper-card); }
.presence-actions .compact-action.active::before { border-color: var(--night); background: var(--night); }
.presence-actions .compact-action.absent.active::before { border-color: var(--red); background: var(--red); }
.compact-action { min-height: 40px; border: 1px solid var(--hair); border-radius: 8px; background: #fff; font-size: 14px; font-weight: 600; }
.compact-action.active { background: var(--night); color: #fff; }
.compact-action.absent { color: var(--red); }
.compact-action.absent.active { background: var(--red); color: #fff; }
.text-control { min-height: 40px; border: 0; background: transparent; font-size: 14px; font-weight: 600; }
.note-student-row .person-row { min-height: 112px; }
.note-task-link { position: absolute; right: 4px; top: 34px; width: 40px; height: 40px; border: 0; background: transparent; }
.notes-screen .eyebrow + .note-student-row { margin-top: -2px; }
.notes-screen .note-student-row + .eyebrow { margin-top: 8px; }
.notes-screen .note-student-row + .note-student-row { margin-top: -4px; }
.notes-screen .note-student-row:last-child .person-row { min-height: 100px; }
.notes-screen .person-row { border-radius: 8px; }
.notes-screen .note-preview.watch .icon { color: var(--ink-muted); }
.notes-hero .signal-illustration .dynamic-badge { left: 40px; top: 0; }
.person-row .belt-badge.blue i:first-child { background: #fff; }
.person-row .belt-badge.blue i:nth-child(2) { background: repeating-linear-gradient(90deg, #000 0 1px, #fff 1px 2px); }
.person-row .belt-badge.blue i:nth-child(3) { background: repeating-linear-gradient(90deg, #145ce0 0 1px, #fff 1px 2px, #e53935 2px 3px); }
.roster-list { display: flex; flex-direction: column; gap: 12px; }
.note-editor-row { display: block; min-height: 288px; padding: 0; background: transparent; }
.note-editor-row > .person-row { min-height: 118px; }
.note-editor { margin: 16px 8px 0 98px; position: relative; }
.note-editor .presence-actions { margin-top: 8px; grid-template-columns: minmax(0, 1fr) auto; }
.rating-input { display: inline-flex; flex-wrap: wrap; gap: 8px; max-width: 100%; }
.rating-choice { flex: 0 0 44px; width: 44px; height: 44px; padding: 0; border: 0; background: transparent; color: var(--ink-muted); cursor: pointer; }
.rating-choice.selected { color: var(--warning); }
.rating-choice.selected .icon { fill: none; }
.presence-actions [data-present="true"].active { color: #fff; }
.presence-actions .compact-action.absent:not(.active) { color: var(--ink); }
.attendance-screen.readonly { gap: 8px; }
.attendance-screen.readonly.sub { gap: 14px; }
.attendance-screen.note-open > .roster-title { margin-top: 20px; }
.attendance-screen .session-hero .attendance-progress { width: auto; min-width: 0; border-radius: 8px; }
.attendance-screen .session-hero .session-status-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; padding-left: 0; }
.attendance-screen .status-line { min-width: 0; }
.attendance-screen .status-line .icon { flex-shrink: 0; }
.attendance-screen .attendance-progress strong { white-space: nowrap; }
.review-editor .character-count { position: static; display: block; text-align: right; }
.saved-review-note { margin: 8px 0 0; color: var(--ink); font: 400 14px/19.6px var(--font-body); overflow-wrap: anywhere; }
.note-editor label { display: block; margin-bottom: 4px; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.note-editor textarea { display: block; width: 100%; min-height: 86px; resize: vertical; border: 1px solid var(--hair); border-radius: 8px; padding: 8px 16px; background: var(--paper-soft); color: var(--ink); font: 400 14px/19.6px var(--font-body); }
.character-count { display: block; margin-top: 4px; text-align: right; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.note-editor .character-count.danger { color: var(--ink); }
.note-editor .compact-action { min-width: 44px; padding: 0 8px; font: 500 14px/19.6px var(--font-body); }
.note-editor :is(textarea, button) { scroll-margin-top: 122px; scroll-margin-bottom: 16px; }
.note-editor .compact-action:disabled { color: var(--ink-muted); }
.note-editor .compact-action:disabled::before { background: var(--paper-soft); border-color: var(--hair); }
.attendance-screen .person-row.has-actions { padding-right: 8px; }
.attendance-screen .person-row.has-actions .person-name-line { padding-right: 104px; }
.attendance-screen .person-row.has-actions.one-action .person-name-line { padding-right: 52px; }
.attendance-screen .rating-input { flex-basis: 100%; }
.footer-cta { width: 100%; margin-top: auto; }
.approval-actions { display: grid; grid-template-columns: 1fr 48px; gap: 8px; margin-top: auto; }
.approval-actions .primary-cta { width: 100%; }

.task-switcher { height: 44px; display: grid; grid-template-columns: 1fr 1fr 48px; gap: 8px; align-items: center; }
.task-switcher > button:not(.add-task) { height: 40px; border: 0; border-radius: 980px; background: var(--paper-soft); color: var(--ink-soft); font-size: 14px; }
.task-switcher > button.active { background: #fff; color: var(--ink); box-shadow: 0 0 0 1px var(--hair); font-weight: 600; }
.add-task { width: 44px; height: 44px; border: 0; border-radius: 50%; background: var(--night); color: #fff; display: grid; place-items: center; }
.scope-chip { align-self: flex-end; min-height: 40px; margin-top: -8px; padding: 0 20px; border: 1px solid var(--hair); border-radius: 980px; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; }
.task-student-back { width: 100%; min-height: 44px; margin-top: 8px; display: flex; align-items: center; gap: 8px; }
.task-student-back + .tasks-screen { margin-top: 8px; }
.task-student-back > .back-row { position: static; flex: 0 0 120px; width: 120px; height: 44px; margin: 0; padding: 0; }
.task-student-back > .back-row::before { display: none; }
.task-student-back > .scope-chip { position: relative; isolation: isolate; align-self: center; width: max-content; max-width: calc(100% - 128px); min-height: 44px; margin: 0; padding: 0 16px; border: 0; background: transparent; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 500 13px/16.9px var(--font-body); cursor: pointer; }
.task-student-back > .scope-chip::before { content: ""; position: absolute; z-index: -1; inset: 2px 0; border: 1px solid var(--hair); border-radius: 980px; background: var(--paper-soft); }
.task-hero { min-height: 124px; height: auto; padding: 16px; display: flex; flex-direction: column; justify-content: space-between; gap: 8px; overflow: visible; position: relative; }
.task-switcher + .task-hero { margin-top: -8px; }
.metric-unit { margin-left: 8px; }
.task-hero .task-metric { display: inline-block; min-width: 96px; font: 600 48px/52.8px var(--font-display); letter-spacing: -1.5px; white-space: nowrap; }
.task-hero .metric-unit { margin-left: 0; }
.task-hero-top { position: relative; min-height: 66.8px; }
.task-hero-top > div { position: relative; display: flex; flex-wrap: wrap; align-items: center; column-gap: 8px; max-width: calc(100% - 100px); min-width: 0; }
.task-hero-top img { position: absolute; right: 0; top: -8px; width: 96px; height: 88px; object-fit: cover; }
.task-hero .progress { flex: 0 0 min(180px, calc(100% - 12px)); margin-top: 8px; width: min(180px, calc(100% - 12px)); height: 6px; }
.task-scope-anchor { position: relative; display: inline-block; vertical-align: middle; }
.task-scope-trigger { min-height: 44px; display: inline-flex; align-items: center; gap: 4px; padding: 0 2px; color: #fff; font: 500 14px/19.6px var(--font-body); list-style: none; cursor: pointer; white-space: nowrap; }
.task-scope-trigger::-webkit-details-marker { display: none; }
.task-scope-trigger > .icon { width: 16px; height: 16px; font-size: 16px; }
.task-scope-menu { position: absolute; z-index: 25; top: calc(100% + 4px); right: 0; width: min(218px, calc(var(--app-width) - 48px)); padding: 8px; border: 1px solid var(--hair); border-radius: 18px; background: var(--paper-card); color: var(--ink); box-shadow: 0 8px 24px #00000024; }
.task-scope-menu button { width: 100%; min-height: 44px; padding: 0 8px; border: 0; border-radius: 8px; background: transparent; color: var(--ink); font: 500 14px/19.6px var(--font-body); text-align: left; cursor: pointer; }
.task-scope-menu button[aria-current="true"] { background: var(--paper-soft); }
.task-hero .progress, .notes-hero .progress { background: #ffffff1a; }
.task-hero .progress > span, .notes-hero .progress > span { background: #fff; }
.task-signals { display: flex; flex-wrap: wrap; gap: 8px 24px; color: #fff; font: 500 13px/16.9px var(--font-body); }
.task-signals span { display: flex; align-items: center; gap: 6px; height: 16.9px; }
.task-signals .danger { color: #fff !important; }
.task-signals .danger > .icon { color: var(--red); }
.task-signals .icon { width: 20px; height: 20px; font-size: 20px; }
.task-lenses { height: 44px; display: flex; align-items: center; gap: 8px; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; overscroll-behavior-inline: contain; }
.task-lenses::-webkit-scrollbar { display: none; }
.task-lenses > button { flex: 0 0 auto; height: 44px; padding: 0 4px; border: 0; border-radius: 8px; background: transparent; color: var(--ink-soft); display: flex; align-items: center; gap: 3px; font: 500 14px/19.6px var(--font-body); white-space: nowrap; cursor: pointer; }
.task-lenses > button:first-child { padding: 0 10px; }
.task-lenses > button.active { background: var(--night); color: #fff; }
.task-lenses .icon-button { position: sticky; right: 0; z-index: 1; width: 44px; min-width: 44px; margin-left: auto; padding: 0; justify-content: center; background: var(--paper); color: var(--ink); box-shadow: -8px 0 0 var(--paper); }
.source-lenses {display:flex;align-items:center;justify-content:space-between;min-height:44px;gap:8px}
.source-lenses strong {font:600 16px/24px var(--font-body);color:var(--ink)}
.source-lenses .icon-button {width:44px;height:44px;flex:none;border:0;background:transparent}
.source-feedback {display:grid;gap:12px;padding:16px;border:1px solid var(--hair);border-radius:16px;background:var(--paper-card);color:var(--ink)}
.source-feedback-heading {display:flex;align-items:center;gap:8px;min-width:0}
.source-feedback-heading .icon {flex:none;color:var(--red)}
.source-feedback-heading h2 {margin:0;min-width:0;font:600 16px/24px var(--font-body)}
.task-source-state .source-feedback-heading {flex-direction:column;align-items:flex-start;gap:12px}
@media (max-height: 620px) { .task-source-state { gap: 8px; padding: 12px; } .task-source-state .source-feedback-heading { gap: 8px; } }
.source-feedback p {margin:0;color:var(--ink-soft);font:400 14px/19.6px var(--font-body)}
.source-retry {width:100%;min-height:48px;padding:8px 16px;border:1px solid var(--hair);border-radius:8px;background:var(--paper-card);color:var(--ink);font:500 14px/19.6px var(--font-body)}
.pt-source-state {border-color:var(--ink)}
.pt-screen .source-lenses {min-height:40px}
.source-empty {align-content:start}
.source-empty .source-feedback-heading .icon {color:var(--ink-soft)}
.task-empty-state {min-height:184px}
.task-empty-state .source-feedback-heading {flex-direction:column;align-items:flex-start;gap:12px}
.pt-empty-state {min-height:56px;padding:8px 0;border:0;border-radius:0;background:transparent}
.task-group { border-radius: 18px; background: #fff; overflow: hidden; }
.task-group .section-heading { padding: 8px 16px; }
.task-group .section-heading span { color: var(--ink-soft); font-size: 14px; }
.task-group .section-heading { min-height: 44px; }
.task-group .section-heading h2 { display: flex; gap: 8px; align-items: center; }
.task-more { width: 100%; height: 40px; border: 0; background: transparent; display: flex; align-items: center; justify-content: center; gap: 32px; font-size: 14px; font-weight: 600; }
.tasks-screen { position: relative; }
.obligation-screen { gap: 8px; }
.obligation-heading { min-height: 48px; display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: minmax(24px, auto) minmax(17px, auto); gap: 4px 8px; }
.obligation-heading h1 { grid-column: 1; grid-row: 1; min-width: 0; margin: 0; font: 600 16px/24px var(--font-body); }
.obligation-heading > strong { grid-column: 2; grid-row: 1; justify-self: end; align-self: center; font: 500 13px/16.9px var(--font-mono); }
.obligation-heading p { grid-column: 1 / -1; grid-row: 2; margin: 0; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.obligation-list { display: grid; gap: 8px; }
.obligation-row { width: 100%; min-height: 48px; display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 8px; padding: 4px 8px; border: 0; border-bottom: 1px solid var(--hair); background: var(--paper-card); text-align: left; cursor: pointer; }
.obligation-row .task-leading { width: 40px; height: 40px; color: var(--ink); }
.obligation-identity { min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 4px; }
.obligation-identity strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 400 14px/19.6px var(--font-body); }
.obligation-identity small { color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.tasks-screen > .scope-chip { position: absolute; top: -46px; right: 0; margin: 0; width: 144px; background: var(--paper-soft); }
.task-row { min-height: 72px; position: relative; display: grid; grid-template-columns: 36px 1fr 22px; align-items: center; padding: 0 8px; border-bottom: 1px solid var(--hair); }
.task-leading { display: grid; place-items: center; color: var(--ink-muted); }
.complete-circle { display: inline-block; width: 22px; height: 22px; border: 2px solid var(--ink-muted); border-radius: 50%; cursor: pointer; }
.complete-circle { padding: 0; background: transparent; }
.complete-circle.complete { border-color: var(--success); background: var(--success); box-shadow: inset 0 0 0 4px #fff; }
.complete-circle.large { width: 24px; height: 24px; border-color: #fff; background: transparent; }
.task-open { min-height: 72px; padding: 8px 0; border: 0; background: transparent; text-align: left; min-width: 0; }
.task-open strong { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; white-space: normal; overflow-wrap: anywhere; font-size: 16px; line-height: 20px; }
.task-open span { margin-top: 8px; color: var(--ink-soft); display: flex; align-items: center; gap: 6px; font-size: 14px; }
.task-row.urgent .task-open span .icon, .task-row.overdue .task-open span .icon { color: var(--red); font-variation-settings: "FILL" 1, "wght" 700; }
.task-row.reward .task-open span .icon { color: var(--success); }
.task-detail-hero { min-height: 152px; padding: 16px; display: flex; flex-direction: column; gap: 16px; }
.task-detail-hero .inline-detail { color: #e5e5e7; }
.task-detail-hero .pill-action { background: #fff; color: var(--night); min-height: 44px; }
.review-people { border-top: 1px solid #ffffff26; }
.review-person-row { display: grid; grid-template-columns: minmax(0, 1fr) 96px; align-items: center; gap: 12px; min-height: 72px; padding: 12px 0; border-bottom: 1px solid #ffffff1a; }
.review-person-row:last-child { border-bottom: 0; }
.review-person-info { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.review-person-info strong { font-size: 14px; line-height: 1.4; font-weight: 600; overflow-wrap: anywhere; }
.review-person-info span { color: #b8b8bd; font-size: 12px; line-height: 1.45; }
.review-person-row .pill-action { width: 96px; padding: 0 8px; justify-content: center; font-size: 13px; white-space: nowrap; }
.review-person-row .pill-action:focus-visible { outline: 2px solid #fff; outline-offset: 4px; }
.training-detail-hero { gap: 12px; }
.training-detail-hero .task-detail-signal { flex-wrap: wrap; gap: 6px 12px; }
.training-cadence { color: #b8b8bd; font-size: 12px; font-weight: 400; }
.training-picker { border-top: 1px solid #ffffff26; padding-top: 12px; }
.training-picker-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 13px; margin-bottom: 10px; }
.training-picker-heading span { display: flex; gap: 10px; }
.training-picker-heading button { border: 0; background: transparent; padding: 6px 0; color: #d0d0d5; font-size: 11px; text-decoration: underline; }
.training-date-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 6px; }
.training-date-grid button { min-height: 40px; border: 1px solid #ffffff38; border-radius: 10px; background: transparent; color: #fff; font-size: 13px; }
.training-date-grid button[aria-pressed="true"] { background: #fff; color: #111; font-weight: 700; }
.training-person { display: flex; align-items: center; gap: 12px; padding: 9px 0; border-bottom: 1px solid #ffffff18; min-height: 55px; }
.training-person:last-child { border: 0; }
.training-person input { width: 20px; height: 20px; accent-color: #fff; flex: 0 0 20px; }
.training-person span { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.training-person strong { font-size: 13px; line-height: 1.4; }
.training-person small { font-size: 11px; line-height: 1.4; color: #b8b8bd; }
.training-bulk { border-top: 1px solid #ffffff26; padding-top: 12px; }
.training-bulk>span { display: block; font-size: 12px; color: #b8b8bd; margin-bottom: 10px; }
.training-bulk>div { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.training-bulk button { min-height: 44px; border-radius: 999px; border: 1px solid #fff; background: #fff; color: #111; font-size: 13px; font-weight: 600; }
.training-bulk button:last-child { background: transparent; color: #fff; }
.training-bulk button:disabled { opacity: .4; }
.training-review-row { display: grid; grid-template-columns: minmax(0,1fr) 106px; align-items: center; gap: 8px; border-bottom: 1px solid #ffffff18; }
.training-review-row .training-person { border: 0; }
.training-row-actions { display: flex; gap: 4px; }
.training-row-actions button { min-height: 40px; border: 1px solid #ffffff50; border-radius: 9px; background: #fff; color: #111; font-size: 11px; padding: 0 6px; }
.training-row-actions button:last-child { width: 30px; background: transparent; color: #fff; font-size: 20px; }
.training-row-actions button:disabled { opacity: .35; }
.training-edit { padding: 12px; background: #242426; border-radius: 10px; }
.training-edit p { margin: 0 0 10px; font-size: 12px; line-height: 1.5; color: #e5e5e7; }
.training-edit>div { display: flex; gap: 8px; }
.training-edit button { min-height: 40px; border: 1px solid #ffffff60; border-radius: 8px; padding: 0 12px; color: #fff; background: transparent; }
.training-bulk>div:has(>button:only-child) { grid-template-columns: 1fr; }
.training-status-toggle { width: 36px; height: 40px; flex: 0 0 36px; padding: 0; border: 1px solid currentColor; border-radius: 10px; background: transparent; font-size: 26px; font-weight: 700; }
.training-status-toggle.is-present { color: #3ed49a; }
.training-status-toggle.is-absent { color: #ff7179; }
.training-status-toggle.is-mixed { color: #b8b8bd; }
.training-status-toggle:disabled { opacity: 1; cursor: default; border-color: transparent; }
.training-status-toggle:not(:disabled) { background: #ffffff0c; }
.training-status-toggle.is-editing { border: 2px solid #3ed49a; box-shadow: 0 0 0 2px #3ed49a24; }
.training-edit-marker { display: inline-flex; vertical-align: middle; align-items: center; justify-content: center; margin-left: 6px; padding: 0; width: 16px; height: 16px; border: 1px solid #b8b8bd; border-radius: 50%; background: transparent; color: #d0d0d5; font-size: 11px; line-height: 1; position: relative; cursor: help; }
.training-person .training-edit-marker>span:first-child { display: inline; }
.training-person .training-editor-tooltip, .training-editor-tooltip { display: none; position: absolute; bottom: calc(100% + 8px); left: -20px; z-index: 5; width: max-content; max-width: 190px; padding: 7px 10px; border-radius: 8px; background: #fff; color: #111; font-size: 12px; font-weight: 400; line-height: 1.4; box-shadow: 0 3px 12px #0004; pointer-events: none; }
.training-edit-marker:hover .training-editor-tooltip, .training-edit-marker:focus .training-editor-tooltip { display: block; }
.training-row-actions button[aria-pressed="true"] { background: #fff; color: #111; }
.training-edit-note { margin: 0; padding: 8px 0 12px; font-size: 11px; line-height: 1.5; color: #d0d0d5; }
.training-picker-heading button:disabled { opacity: .4; text-decoration: none; }
.detail-title-line { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.detail-title-line h1 { margin: 0; color: #fff; font: 600 16px/24px var(--font-body); }
.task-composer-hero .composer-title { margin: 0; color: #fff; font: 500 20px/28px var(--font-body); }
.task-detail-signal { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; }
.detail-meta { margin-top: auto; padding-top: 14px; border-top: 1px solid #ffffff1a; display: grid; grid-template-columns: 176px 1fr; font-size: 14px; }
.detail-meta span { display: flex; align-items: center; gap: 8px; }
.action-list { border-radius: 18px; overflow: hidden; background: #fff; }
.list-action { width: 100%; height: 56px; padding: 0 16px; border: 0; border-bottom: 1px solid var(--hair); background: #fff; display: grid; grid-template-columns: 24px 1fr 20px; align-items: center; gap: 8px; text-align: left; font-size: 16px; font-weight: 600; }
.list-action:last-child { border-bottom: 0; }
.task-composer-hero { height: auto; min-height: 0; padding: 16px; display: flex; flex-direction: column; gap: 16px; }
.task-composer-hero .field-row { min-height: 48px; padding: 8px 16px; border: 1px solid var(--night-hair); border-radius: 8px; background: #222226; grid-template-columns: 20px minmax(0, 1fr) 20px; font: 400 14px/19.6px var(--font-body); }
.task-create-screen { min-height: 0; gap: 16px; }
.task-create-screen .footer-cta { width: 100%; margin: 8px 0 0; }
.task-create-screen .composer-tools { padding: 0; }
.task-student-editor{display:flex;flex-direction:column;gap:4px;padding:16px;border-radius:16px;background:var(--paper-card)}
.task-student-editor-heading{display:flex;align-items:center;justify-content:space-between;min-height:44px;margin-bottom:12px}
.task-student-editor-heading strong{font:600 14px/19.6px var(--font-body)}
.task-student-editor .field-label{margin:0}
.task-student-editor .field-row{min-height:48px;padding:8px 16px;border-radius:8px;background:var(--paper-soft)}
.task-student-editor .field-row + .field-label{margin-top:12px}
.task-student-editor .primary-cta{min-height:48px;margin-top:20px}
.composer-title { width: 100%; height: 48px; min-height: 48px; padding: 8px 0; border: 0; border-bottom: 1px solid transparent; background: transparent; }
.composer-title::placeholder { color: #fff; opacity: 1; }
.composer-title:focus { border-bottom-color: #ffffff55; }
.field-row { width: 100%; min-height: 48px; padding: 8px 0; border: 0; background: transparent; display: grid; grid-template-columns: 24px minmax(0, 1fr) 20px; align-items: center; gap: 8px; text-align: left; font: 400 14px/19.6px var(--font-body); }
.task-composer-hero .field-row { color: #fff; }
.composer-dropdowns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.composer-dropdowns label { min-height: 48px; padding: 8px 16px; border: 1px solid var(--hair); border-radius: 8px; background: var(--paper-card); display: grid; grid-template-columns: 20px minmax(0, 1fr) 18px; align-items: center; gap: 8px; }
.composer-dropdowns select { width: 100%; border: 0; appearance: none; background: transparent; font: 400 14px/19.6px var(--font-body); }
.composer-dropdowns label, .composer-dropdowns select { min-width: 0; }
.description-row { min-height: 48px; padding: 0; border: 0; background: transparent; color: var(--ink); display: flex; align-items: center; gap: 8px; text-align: left; font: 500 14px/19.6px var(--font-body); cursor: pointer; }
.composer-tools { margin-top: 0; display: flex; gap: 8px; }
.composer-tools > .icon-button { width: 44px; height: 44px; }
.chain-editor { display: flex; flex-direction: column; gap: 12px; }
.chain-editor > .text-control { align-self: flex-start; padding-left: 0; }
.chain-editor > div:first-child { display: flex; align-items: center; gap: 8px; color: var(--ink); font: 500 13px/16.9px var(--font-body); font-variant-numeric: tabular-nums; }
.chain-editor > div:first-child > span { min-width: 32px; }
.chain-editor .progress { flex: 1; background: #dedfe3; }
.child-task-input { min-width: 0; border-radius: 8px; background: var(--paper-soft); }
.child-task-row { min-height: 48px; display: grid; grid-template-columns: 20px minmax(0, 1fr) 44px; align-items: center; gap: 12px; padding: 0 4px 0 12px; }
.child-task-row > .icon { color: var(--ink-soft); }
.child-task-row > .icon-button { width: 44px; height: 44px; color: var(--ink-soft); }
.child-task-details { padding: 16px; display: grid; gap: 16px; }
.child-task-details[hidden] { display: none; }
.child-task-input label { min-width: 0; display: grid; gap: 4px; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.child-task-input label:last-child { grid-column: 1/-1; }
.child-task-input input, .child-task-input select, .child-task-input textarea { width: 100%; min-width: 0; min-height: 48px; border: 1px solid var(--hair); border-radius: 8px; background: var(--paper-card); padding: 8px 16px; color: var(--ink); font: 400 14px/19.6px var(--font-body); }
.child-task-input textarea { min-height: 64px; resize: vertical; }
.child-task-row > input { padding: 8px 0; border: 0; border-radius: 0; background: transparent; }
.child-task-row > input::placeholder { color: var(--ink-muted); }

.pt-hero { min-height: 124px; padding: 22px 16px 16px; position: relative; overflow: hidden; }
.pt-hero small { margin-left: 16px; }
.pt-hero > div:first-child { width: 190px; }
.pt-hero img { position: absolute; right: 12px; top: 4px; width: 112px; height: 96px; object-fit: contain; }
.pt-hero img { mix-blend-mode: lighten; }
.pt-hero .progress { margin-top: 8px; }
.pt-signals { position: absolute; bottom: 12px; left: 16px; display: flex; gap: 20px; font: 500 13px/16.9px var(--font-body); }
.pt-signals span { display: flex; align-items: center; gap: 6px; }
.pt-signals .success, .pt-signals .warning { color: #fff !important; }
.pt-signals .success .icon { color: #76dfb5; }
.pt-signals .warning .icon { color: #ffab74; }
.pt-toolbar { height: 40px; }
.client-list { display: flex; flex-direction: column; gap: 8px; }
.client-row { position: relative; width: 100%; min-height: 104px; padding: 8px; border: 0; border-bottom: 1px solid var(--hair); background: transparent; display: grid; grid-template-columns: 56px minmax(0, 1fr) 44px; grid-template-rows: auto auto; gap: 4px 16px; align-items: center; text-align: left; cursor: pointer; }
.client-row > .person-row { display: contents; }
.client-row .person-avatar { grid-column: 1; grid-row: 1 / 3; width: 56px; height: 56px; }
.client-row .person-avatar.photo img { width: 56px; height: 56px; }
.client-row .person-avatar.photo span { font: 500 20px/28px var(--font-body); }
.client-row .person-avatar.initials { font: 500 20px/28px var(--font-body); }
.client-row .person-avatar .avatar-icon { width: 28px; height: 28px; }
.client-info { grid-column: 2; grid-row: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.client-info strong { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font: 600 16px/24px var(--font-body); }
.client-info span:not(.icon) { color: var(--ink-soft); display: flex; align-items: center; gap: 6px; font: 500 13px/16.9px var(--font-body); }
.pt-type-icon { width: 20px; height: 20px; object-fit: contain; opacity: .72; }
.pt-type-icon.inverted { filter: brightness(0) invert(1); opacity: .9; }
.client-row .status-chip { position: static; width: max-content; max-width: 100%; min-height: 28px; justify-content: center; font: 500 13px/16.9px var(--font-body); }
.client-row > .icon { grid-column: 3; grid-row: 1 / 3; justify-self: center; margin: 0; }
.client-info { align-self: center; padding-top: 0; }
.client-info span:last-child:not(.icon) { color: var(--ink); font: 500 13px/16.9px var(--font-body); }
.client-info .pt-client-type { color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); overflow-wrap: anywhere; }
.client-info .pt-client-status { align-self: flex-start; width: max-content; max-width: 100%; padding: 0 8px; }
.client-info .pt-client-balance { color: var(--ink); font: 500 13px/16.9px var(--font-body); }
.client-info span:last-child .icon { color: var(--ink-soft); }
.pt-client-hero { height: auto; min-height: 160px; padding-bottom: 16px; border-radius: 24px; background: var(--night); color: #fff; display: flex; flex-direction: column; gap: 8px; }
.pt-client-ident { display: grid; grid-template-columns: 80px minmax(0, 1fr) 64px; column-gap: 16px; row-gap: 4px; align-items: center; padding: 16px; min-height: 112px; color: #fff; }
.pt-client-ident .person-avatar { width: 80px; height: 80px; }
.pt-client-ident .person-avatar.photo img { width: 80px; height: 80px; }
.pt-client-ident .person-avatar.photo span { font: 500 28px/39.2px var(--font-body); }
.pt-client-ident .person-avatar.initials { font: 500 28px/39.2px var(--font-body); }
.pt-client-ident .person-avatar .avatar-icon { width: 36px; height: 36px; }
.pt-client-ident .belt-toggle { grid-column: 3; grid-row: 1 / 4; min-width: 44px; min-height: 44px; justify-content: flex-end; padding: 0; }
.pt-client-ident > .person-avatar { grid-column: 1; grid-row: 1 / 4; }
.pt-client-ident > div > strong { grid-column: 2 / 4; grid-row: 1; width: 100%; padding-right: 0; white-space: normal; overflow-wrap: anywhere; font-size: 16px; line-height: 20px; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.pt-client-ident:has(.belt-toggle) > div > strong { grid-column: 2; padding-right: 0; }
.pt-client-ident > div > .pt-client-type { grid-column: 2 / 4; grid-row: 2; min-width: 0; color: #ffffffcc; font: 500 13px/16.9px var(--font-body); overflow-wrap: anywhere; }
.pt-client-ident > div > .pt-client-status { grid-column: 2 / 4; grid-row: 3; justify-self: start; width: max-content; max-width: 100%; min-width: 0; padding-inline: 8px; white-space: normal; font: 500 13px/16.9px var(--font-body); }
.pt-client-ident:has(.belt-toggle) > div > :is(.pt-client-type, .pt-client-status) { grid-column: 2; }
.pt-client-ident > .person-row { display: contents; }
.pt-client-ident > div:not(.person-avatar) { min-width: 0; display: contents; }
.pt-client-ident > div > strong { font-size: 16px; }
.belt-toggle { align-self: start; border: 0; background: transparent; color: #fff; display: flex; gap: 8px; align-items: center; }
.belt-toggle > span { max-width: 82px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 500 13px/16.9px var(--font-body); }
.pt-belt-chevron { width: 16px; height: 16px; flex: 0 0 16px; }
.pt-session-progress { display: grid; grid-template-columns: auto auto minmax(0, 1fr); gap: 8px; align-items: center; width: 100%; margin-top: auto; padding: 0 16px; color: #fff; }
.pt-session-progress > .progress { max-width: 180px; }
.pt-session-progress .progress > span { background: linear-gradient(90deg, #1f9364, #76dfb5); }
.pt-client-hero .belt-badge.blue i:nth-child(2) { background: #145ce0; }
.pt-session-progress strong { font: 500 13px/16.9px var(--font-body); }
.pt-session-progress span:not(.icon) { font: 500 13px/16.9px var(--font-body); }
.profile-disclosure { padding: 0 16px; border-radius: 8px; background: var(--paper-soft); }
.profile-disclosure .field-row { min-height: 40px; color: var(--ink-soft); font-size: 14px; }
.profile-disclosure .field-row .icon:last-child { display: none; }
.profile-field { min-height: 40px; display: grid; grid-template-columns: 20px 64px 1fr; align-items: center; gap: 8px; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.profile-field strong { color: var(--ink); font-size: 14px; font-weight: 500; }
.pt-profile-person { padding: 4px 0; }
.pt-profile-person + .pt-profile-person { border-top: 1px solid var(--hair); }
.pt-profile-person > strong { display: block; padding: 8px 0 4px; font: 600 14px/20px var(--font-body); }
.pt-detail-info { display: grid; }
.pt-info-row { min-height: 56px; padding: 8px 16px; border-bottom: 1px solid var(--hair); display: flex; align-items: center; gap: 12px; }
.pt-info-row > .icon { flex: 0 0 20px; color: var(--ink-soft); }
.pt-info-row > div { min-width: 0; display: grid; gap: 3px; }
.pt-info-row small { color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.pt-info-row strong { color: var(--ink); font: 400 14px/19.6px var(--font-body); overflow-wrap: anywhere; }
.pt-detail-screen { gap: 12px; }
.pt-detail-list { margin-top: 4px; }
.pt-detail-list > h2 { margin: 0 0 8px; font: 600 16px/24px var(--font-body); }
.pt-package-meta { margin-bottom: 8px; color: var(--ink-soft); font: 400 14px/19.6px var(--font-body); }
.pt-package-meta > summary { min-height: 44px; display: flex; align-items: center; cursor: pointer; }
.pt-package-meta > p { margin: 8px 0; }
.pt-detail-list .field-row { min-height: 56px; font-weight: 500; }
.pt-detail-list .field-row { border-bottom: 1px solid var(--hair); font-size: 14px; }
.pt-detail-list [data-action="open-pt-location"] > .icon:last-child { visibility: hidden; }
.pt-session-row-native { border-bottom: 1px solid var(--hair); }
.pt-session-summary { min-height: 72px; padding: 8px 0; display: grid; grid-template-columns: minmax(0, 1fr) 64px; gap: 8px; align-items: center; cursor: pointer; list-style: none; }
.pt-session-summary::-webkit-details-marker { display: none; }
.pt-session-summary-text { min-width: 0; display: grid; gap: 4px; }
.pt-session-summary-text small { color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.pt-session-date-line { min-width: 0; display: flex; align-items: center; gap: 8px; }
.pt-session-date { min-width: 0; font: 500 13px/16.9px var(--font-body); }
.pt-session-open-label { min-height: 44px; display: flex; align-items: center; justify-content: flex-end; gap: 2px; font: 500 13px/16.9px var(--font-body); }
.pt-session-row-native[open] .pt-session-open-label > .icon { transform: rotate(90deg); }
.pt-session-expanded { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 0 0 12px; }
.pt-session-meta { min-width: 0; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); overflow-wrap: anywhere; }
.pt-session-state { margin-left: auto; max-width: 132px; padding-inline: 8px; text-align: center; white-space: normal; }
.pt-session-actions { flex: 1 0 100%; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.pt-session-actions > button { min-height: 44px; }
.pt-session-actions > p { flex: 1 0 100%; margin: 0; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.pt-detail-list > article:not(.pt-session-row-native) { display: grid; gap: 8px; padding-block: 16px; border-bottom: 1px solid #e8e8ed; }
.pt-detail-list > article:not(.pt-session-row-native) > div { display: flex; flex-wrap: wrap; gap: 8px; }

.modal-layer { position: fixed; z-index: 30; top: 0; bottom: 0; left: calc((100vw - var(--app-width)) / 2); width: var(--app-width); display: flex; align-items: center; justify-content: center; padding: calc(var(--safe-top) + 16px) 16px calc(var(--safe-bottom) + 16px); background: var(--scrim); overflow: hidden; }
.top-panel { width: min(358px, 100%); max-height: calc(100dvh - var(--safe-top) - var(--safe-bottom) - 32px); padding: 16px; border-radius: 18px; background: var(--paper-card); box-shadow: 0 12px 48px #00000033; display: flex; flex-direction: column; gap: 16px; }
.top-panel > header { min-height: 44px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.top-panel > header > .icon-button { flex: 0 0 44px; width: 44px; height: 44px; }
.top-panel h2 { margin: 0; font: 600 16px/24px var(--font-body); }
.top-panel:focus { outline: none; }
.modal-content { min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 0; }
.attendance-return-modal, .attendance-reject-modal { --attendance-panel-max: calc(100dvh - max(var(--safe-top), var(--safe-bottom)) - max(var(--safe-top), var(--safe-bottom)) - 32px); }
.attendance-return-modal .top-panel, .attendance-reject-modal .top-panel { max-height: var(--attendance-panel-max); margin-top: calc(var(--safe-bottom) - var(--safe-top)); }
.attendance-return-modal .top-panel { min-height: min(316px, var(--attendance-panel-max)); overflow-y: auto; }
.attendance-return-modal .modal-content { flex: 1 1 auto; gap: 16px; }
.attendance-return-modal .modal-content > p { margin: 0; font: 400 14px/19.6px var(--font-body); }
.attendance-return-reason { min-height: 80px; padding: 16px; border-radius: 8px; background: var(--paper-soft); color: var(--ink-soft); overflow-wrap: anywhere; }
.attendance-reject-modal .top-panel { min-height: min(372px, var(--attendance-panel-max)); }
.attendance-reject-modal .top-panel > p { margin: 0; min-height: 42px; font: 400 14px/21px var(--font-body); }
.attendance-reject-modal #attendance-reject { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 0; gap: 0; }
.attendance-reject-modal #attendance-reject textarea { height: 102px; min-height: 102px; resize: none; margin-bottom: 16px; background: var(--paper-soft); padding: 8px 16px; color: var(--ink); font: 400 14px/19.6px var(--font-body); }
.attendance-reject-modal #attendance-reject button { min-height: 48px; width: 100%; }
.attendance-reject-modal #attendance-reject button[type="button"] { margin-bottom: 8px; border: 0; border-radius: 8px; background: var(--paper-soft); color: var(--ink); }
.task-filter .modal-content { gap: 8px; }
.task-filter .primary-cta { margin-top: 0; }
.pt-filter .top-panel,.pt-confirm .top-panel,.pt-change .top-panel{margin-top:calc(var(--safe-bottom) - var(--safe-top));max-height:calc(100dvh - max(var(--safe-top),var(--safe-bottom)) - max(var(--safe-top),var(--safe-bottom)) - 32px)}
.pt-change .modal-content{gap:8px}
.pt-change .modal-content p{margin:0;font:400 14px/19.6px var(--font-body);overflow-wrap:anywhere}
.pt-change .modal-content .pt-change-context{font:500 13px/16.9px var(--font-body);color:var(--ink-soft)}
.pt-change .modal-content .form-error{font:400 13px/18.2px var(--font-body)}
.pt-change-facts{display:grid;gap:4px;padding:12px 14px;border-radius:8px;background:var(--paper-soft)}
.pt-change .pt-change-reject{width:100%;min-height:48px;border:0;border-radius:8px;background:var(--paper-soft);color:var(--ink);font:600 14px/20px var(--font-body)}
.pt-confirm .modal-content{gap:8px}
.pt-confirm .modal-content p{margin:0;font:400 14px/19.6px var(--font-body);overflow-wrap:anywhere}
.pt-confirm .modal-content .pt-confirm-context{font:500 13px/16.9px var(--font-body);color:var(--ink-soft)}
.pt-confirm .modal-content .form-error{font:400 13px/18.2px var(--font-body)}
.pt-confirm-facts{display:grid;gap:4px;padding:12px 14px;border-radius:8px;background:var(--paper-soft)}
.pt-confirm .pt-confirm-later{width:100%;min-height:48px;border:0;border-radius:8px;background:var(--paper-soft);color:var(--ink);font:600 14px/20px var(--font-body)}
.pt-receipt .top-panel{margin-top:calc(var(--safe-bottom) - var(--safe-top));max-height:calc(100dvh - max(var(--safe-top),var(--safe-bottom)) - max(var(--safe-top),var(--safe-bottom)) - 32px)}
.pt-receipt .modal-content{gap:8px}
.pt-receipt .modal-content p{margin:0;font:400 14px/19.6px var(--font-body);overflow-wrap:anywhere}
.pt-receipt .modal-content .pt-receipt-context,.pt-receipt .modal-content .pt-receipt-meta{color:var(--ink-soft);font:500 13px/16.9px var(--font-body)}
.pt-filter .modal-content{gap:8px}
.pt-filter-field{display:grid;gap:4px}
.pt-filter-options{display:grid;gap:4px;max-height:176px;overflow:auto}
.pt-filter-options button{min-height:44px;padding:8px 16px;border:0;border-radius:8px;background:var(--paper-soft);color:var(--ink);font:400 14px/19.6px var(--font-body);text-align:left}
.pt-filter-options button[aria-pressed="true"]{background:var(--night);color:var(--paper-card)}
.pt-filter .filter-row:disabled{opacity:1;cursor:default}
.pt-filter .filter-row:disabled strong{color:var(--ink-muted)}
.student-picker .modal-content { gap: 8px; }
.profile-select { display: block; width: 100%; min-height: 44px; margin-top: 6px; border: 1px solid #dedfe3; border-radius: 8px; padding: 8px; font: inherit; background: #fff; color: var(--ink); }
.modal-layer.student-picker { background: linear-gradient(to bottom, transparent 70px, #00000060 70px, #00000060 calc(100% - 102px), transparent calc(100% - 102px)); }
.student-picker .field-label { margin: 11px 0 0; }
.student-picker .modal-content > .field-row { min-height: 48px; font-weight: 500; }
.pt-location .modal-content { margin-top: 8px; }
.top-panel > .primary-cta { width: 100%; flex: 0 0 auto; }
.month-field { display: flex; flex-direction: column; gap: 8px; color: var(--ink-soft); font-size: 14px; }
.month-field input { height: 48px; padding: 0 12px; border: 1px solid var(--hair); border-radius: 8px; background: var(--paper-soft); color: var(--ink); }
.filter-row { width: 100%; min-height: 48px; padding: 8px 16px; border: 1px solid var(--hair); border-radius: 8px; background: var(--paper-card); display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)) 20px; gap: 8px; align-items: center; text-align: left; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); cursor: pointer; }
.filter-row strong { min-width: 0; color: var(--ink); font: 400 14px/19.6px var(--font-body); overflow-wrap: anywhere; }
.check-field { min-height: 48px; padding: 0 12px; border-radius: 8px; background: var(--paper-soft); display: flex; align-items: center; gap: 12px; font-size: 14px; }
.check-field input { width: 18px; height: 18px; }
.field-label { margin: 4px 0; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); text-transform: uppercase; }
.modal-content > .field-row, .location-options .field-row { min-height: 48px; padding: 8px 16px; border-radius: 8px; background: var(--paper-soft); font: 400 14px/19.6px var(--font-body); }
.location-options { display: flex; flex-direction: column; gap: 8px; }
.location-options .field-row.selected { background: var(--night); color: #fff; }
.custom-location { min-height: 48px; padding: 0 12px; border-radius: 8px; background: var(--paper-soft); display: flex; align-items: center; gap: 8px; }
.custom-location input { min-width: 0; flex: 1; border: 0; background: transparent; }
.confirmation .top-panel { margin-top: 0; }
.confirmation .modal-content p { margin: 0; color: var(--ink-soft); font-size: 14px; }
.confirmation .top-panel { gap: 16px; padding-top: 16px; }
.confirmation .modal-content { min-height: 28px; }
.cancel-confirmation { background: #fff; border: 1px solid var(--hair); margin-top: -8px; }
.task-empty, .inline-detail { margin: 0; padding: 12px 16px; font-size: 14px; line-height: 1.6; color: var(--ink-soft); }
.description-input, .deadline-input { width: 100%; min-height: 80px; border: 1px solid var(--hair); border-radius: 8px; padding: 12px; background: var(--paper-soft); }
.deadline-input { min-height: 44px; }
.reopen-task { width: 24px; height: 24px; padding: 0; }
.other-group { background: transparent; border-radius: 0; }
.other-group .section-heading { padding-inline: 0; }
.notes-screen .person-name-line { width: 100%; }
.note-read-target { position: absolute; inset: 0; width: 100%; border: 0; background: transparent; border-radius: 8px; cursor: pointer; }
.notes-screen .note-preview.done .icon { color: var(--success); }
.notes-screen .note-preview span { -webkit-line-clamp: unset; }
.notes-screen .note-task-link { z-index: 2; }
.notes-screen .notes-hero { grid-template-columns: 64px 1fr; }
.notes-hero strong { font-family: var(--font-display); font-size: 20px; line-height: 1; }
.toast-region { position: absolute; z-index: 50; left: 24px; right: 24px; bottom: 116px; min-height: 40px; padding: 10px 16px; border-radius: 8px; background: var(--night); color: #fff; text-align: center; font-size: 13px; opacity: 0; pointer-events: none; transform: translateY(8px); transition: .2s ease; }
.toast-region.visible { opacity: 1; transform: translateY(0); }

@media (min-width: 391px) {
  .phone { border-radius: 0; }
}

.primary-cta, .top-panel > .primary-cta { max-width: 100%; }
.top-panel { max-width: calc(100vw - 32px); }
.empty-source { padding: 24px 16px; background: var(--paper-soft); border-radius: 18px; }
.empty-source h2 { margin: 0 0 12px; font-size: 16px; }
.empty-source p, .source-context p { color: var(--ink-soft); font-size: 14px; line-height: 1.5; }
.source-context { margin-bottom: 16px; font-size: 13px; }
.source-context summary { cursor: pointer; min-height: 40px; display: flex; align-items: center; }
.pilot-record { width: 100%; text-align: left; background: transparent; border: 0; display: flex; align-items: center; gap: 12px; min-height: 80px; padding: 12px 0; border-bottom: 1px solid var(--hair); }
.pilot-calendar-hero { height: auto; min-height: 156px; }
.pilot-calendar-hero p { font-size: 14px; line-height: 1.5; margin: 16px 0 0; }
.tasks-screen.assigned-tasks .task-hero .progress { width: min(312px, 100%); }
.pt-hero small { margin-left: 8px; }
.pilot-record .grow { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.pilot-record small { color: var(--ink-soft); font-size: 13px; }
.pilot-hero { height: auto; min-height: 192px; }
.pilot-hero .tag-row { margin-top: 12px; }
.pilot-hero .taxonomy { width: auto; max-width: 156px; }
.pilot-hero p { font-size: 14px; }
@media (max-width: 359px) {
  .session-copy { width: 172px; }
  .session-art { width: 96px; }
  .attendance-screen .attendance-progress { min-width: 0; width: auto; }
  .pt-hero { min-height: 156px; }
  .pt-hero small { display: block; width: max-content; max-width: 100%; margin-left: 0; }
  .pt-hero .progress { margin-top: 12px; }
  .session-row { display: grid; grid-template-columns: 48px minmax(0, 1fr) 44px; grid-template-rows: auto auto; }
  .session-row .row-time, .session-row-main, .session-row-action { grid-row: 1; }
  .session-row .session-signals { grid-row: 2; grid-column: 2 / 4; justify-self: end; width: 116px; }
}
@media (max-width: 359px) {
  .month-control > .icon { display: none; }
  .task-scope-menu { left: 0; right: auto; }
  .task-lenses { height: auto; min-height: 96px; flex-wrap: wrap; overflow: visible; row-gap: 8px; }
  .task-lenses .icon-button { position: static; box-shadow: none; }
  .class-screen .weekdays, .class-screen .calendar-week { gap: 0; }
  .coach-month-calendar .weekdays, .coach-month-calendar .calendar-week { gap: 0; }
}
.month-control { white-space: nowrap; }

@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior: auto !important; transition: none !important; }
}
/* Approved RAIZr: explicit personal/assigned view, separate create action. */
.task-view-control{display:flex;gap:8px;width:100%;height:44px;flex-shrink:0}
.task-view-switch{display:flex;flex:1;min-width:0;padding:4px;background:#eeeeef;border-radius:999px;gap:4px}
.task-view-switch button{flex:1;border:0;border-radius:999px;background:transparent;color:#68686f;font:600 14px Inter,sans-serif;cursor:pointer}
.task-view-switch button[aria-pressed="true"]{background:#fff;color:#161619}
.task-view-create{width:48px;flex-shrink:0;border:0;border-radius:999px;background:#111;color:#fff;display:grid;place-items:center;cursor:pointer}
.task-view-control button:focus-visible{outline:2px solid #555;outline-offset:2px}

.coach-pt-request{border:1px solid #ddd;border-radius:12px;padding:20px;width:min(460px,calc(100vw - 32px));box-sizing:border-box;max-height:90dvh;overflow:auto}.coach-pt-request::backdrop{background:#0006}.coach-pt-request form{display:grid;gap:16px}.coach-pt-request header{display:flex;align-items:center;justify-content:space-between}.coach-pt-request h2,.coach-pt-request p{margin:0}.coach-pt-request label{display:grid;gap:6px;font-size:13px}.coach-pt-request input,.coach-pt-request select,.coach-pt-request textarea{min-width:0;width:100%;box-sizing:border-box;padding:10px;border:1px solid #ddd;border-radius:6px;background:white;color:#222}.pt-request-time{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:8px}.pt-request-time[hidden]{display:none}.pt-request-error{color:#a02626}.pt-request-error:empty{display:none}

.coach-pt-request .primary-cta{width:100%;background:#202024;color:white;min-height:44px;border:0;border-radius:8px}.pt-request-update{font:500 13px/16.9px var(--font-body);padding:8px 0;color:var(--ink-soft)}
/* Approved 2026-09-11 personal/auth families. Shared shell remains 390 × 866. */
.personal-phone .app-scroll {inset:0;padding-bottom:32px}
.personal-phone .screen-content {padding-top:14px}
.personal-phone .back-row {margin-top:8px;height:40px}
.personal-phone:has(.personal-screen) .screen-content {padding-top:24px}
.me-header {grid-template-columns:44px 1fr 44px;padding:0}
.me-header .brand-logo {justify-self:center}
.me-header .icon-button {width:44px;height:44px}
.gkn-panel {padding:16px;border-radius:16px;background:var(--night);color:white}
.gkn-top {display:flex;align-items:baseline;gap:12px;font-family:var(--font-mono)}
.gkn-top>strong {font-size:40px;font-weight:500;letter-spacing:-2px}
.gkn-delta {margin-left:auto;font-size:16px;color:#88cbae}
.gkn-track {height:4px;background:#ffffff30;margin:16px 0 12px}
.gkn-track i {display:block;height:100%;background:#d5b477}
.gkn-milestones {display:flex;justify-content:space-between;font:500 13px/16.9px var(--font-body);color:var(--ink-soft)}
.gkn-milestones b {font:500 13px/16.9px var(--font-mono);color:var(--ink)}
.obligation-panel {height:224px;max-height:224px;position:relative;display:flex;justify-content:center;align-items:center;gap:8px}
.obligation-clock {width:min(184px,calc(100% - 112px));height:auto;aspect-ratio:1;flex:none;position:relative;border:0;padding:0;background:none;color:var(--ink)}
.obligation-clock svg {width:100%;height:100%;transform:rotate(-90deg)}
.obligation-clock circle {fill:none;stroke-width:9}
.clock-track {stroke:#e9e9e9}.clock-progress {stroke:#242426;stroke-linecap:round}
.obligation-clock>span {position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px}
.obligation-clock strong {font:600 48px/52.8px var(--font-display)}
.obligation-clock small {font-size:14px}
.reward-counter {position:static;width:48px;height:72px;flex:none;padding:0;border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:8px}
.reward-counter .icon {font-size:32px;color:#b99555;font-variation-settings:'FILL' 1}
.reward-counter strong {font:500 13px/16.9px var(--font-mono)}
.me-classes {display:flex;flex-direction:column;gap:8px}
.me-source-feedback {display:grid;grid-template-columns:20px minmax(0,1fr);gap:8px;align-items:start;padding:12px;border:1px solid var(--hair);border-radius:8px;background:var(--paper-card)}
.me-source-feedback > span {color:var(--ink-soft)}
.me-source-feedback[role="alert"] > span {color:var(--red)}
.me-source-feedback strong {display:block;font:600 14px/20px var(--font-body)}
.me-source-feedback p {margin:4px 0 0;color:var(--ink-soft);font:400 13px/18px var(--font-body)}
.me-source-feedback button {grid-column:2;justify-self:start;min-height:44px;padding:0;border:0;background:none;color:var(--ink);font:600 14px/20px var(--font-body);cursor:pointer}
.me-class {position:relative;display:flex;flex-direction:column;min-height:80px;padding:8px;border:1px solid var(--hair);border-radius:8px;background:var(--paper-card)}
.me-class.open {min-height:296px}
.me-class-toggle {min-height:56px;width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto 24px;grid-template-rows:24px 24px;align-content:center;align-items:center;gap:0 4px;border:0;background:none;padding:0;text-align:left;cursor:pointer}
.me-class-name {font:600 16px/24px var(--font-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.class-trophy {display:flex;align-items:center;gap:3px;font:500 13px/16.9px var(--font-mono)}
.class-trophy .icon {font-size:22px;color:var(--gold)}
.me-class-meta {grid-column:1/-1;display:flex;align-items:center;gap:8px;font:500 13px/16.9px var(--font-body);color:var(--ink-soft)}
.me-class-meta .icon {font-size:20px}.me-class-meta>span:first-child {margin-right:0}.main-role {color:var(--red)}
.class-history {position:static}
.semester-label {height:17px;margin:4px 0 8px;color:var(--ink-soft);font:500 13px/16.9px var(--font-body)}
.semester-months {display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.semester-month {min-width:0;height:44px;border:1px solid var(--hair);border-radius:6px;background:var(--paper-soft);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:2px;font:500 13px/16.9px var(--font-body);color:var(--ink-soft)}
.semester-month strong {max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 13px/16.9px var(--font-body);color:var(--ink)}
.class-metrics {position:static;display:grid;gap:8px;margin-top:8px}
.me-metric {position:relative;min-height:56px;font:500 13px/16.9px var(--font-body);display:flex;justify-content:space-between}
.me-bar {position:relative;min-width:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:17px 6px 17px;row-gap:6px}
.me-bar::before {content:"";position:absolute;top:23px;left:0;right:0;height:6px;border-radius:4px;background:var(--hair)}
.me-bar i {position:absolute;top:23px;left:0;display:block;height:6px;background:var(--ink);border-radius:4px}.me-bar b {position:absolute;top:20px;width:2px;height:12px;background:var(--gold)}
.me-bar > strong {grid-column:1;grid-row:1;font:500 13px/16.9px var(--font-mono);white-space:nowrap}
.me-bar > small {grid-row:3;min-width:0;font:500 13px/16.9px var(--font-mono);color:var(--ink);white-space:nowrap}
.me-bar > small:nth-last-child(2) {grid-column:2}
.me-bar > small:last-child {grid-column:3;text-align:right}
.personal-screen h1 {margin:0 0 24px;font:500 20px/28px var(--font-body)}
.personal-identity {display:flex;align-items:center;gap:8px;margin-bottom:24px}.personal-identity .icon {font-size:24px}
.personal-details {margin:0 0 24px}.personal-details>div {min-height:56px;display:flex;flex-direction:column;gap:4px;justify-content:center;padding:8px 0;border-bottom:1px solid var(--hair)}.personal-details dt {color:var(--ink-soft);font:500 13px/16.9px var(--font-body)}.personal-details dd {margin:0;text-align:left;overflow-wrap:anywhere;font:400 14px/19.6px var(--font-body)}
.personal-link {display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:0;border:0;border-bottom:1px solid var(--hair);background:none;text-align:left;font:500 14px/19.6px var(--font-body)}.personal-link>span:nth-child(2) {flex:1}
.personal-field,.auth-form>label {display:flex;flex-direction:column;gap:4px;font:500 13px/16.9px var(--font-body)}
.personal-field {margin:0}.personal-field input,.personal-field select,.auth-form input {width:100%;height:48px;min-height:48px;border:1px solid var(--hair);border-radius:8px;padding:8px 16px;font:400 14px/19.6px var(--font-body);color:var(--ink);background:var(--paper-card);min-width:0}
.form-error {font:400 13px/16.9px var(--font-body);color:var(--red);min-height:20px}
.auth-phone {min-height:0}.auth-scroll {height:100%;overflow:auto;padding:38px 16px calc(var(--safe-bottom) + 16px);scroll-padding:24px;scrollbar-width:none}.auth-scroll::-webkit-scrollbar {display:none}
.auth-logo {display:block;width:116px;height:50px;object-fit:contain;margin:0 0 24px}
.auth-art {display:block;width:min(100%,390px);height:auto;max-height:260px;aspect-ratio:3/2;object-fit:cover;margin:0 auto}
.auth-form {margin-top:32px;display:flex;flex-direction:column;gap:16px}
.auth-form>label {gap:4px;font:500 13px/16.9px var(--font-body)}
.auth-form input {height:48px;min-height:48px}
.auth-form .form-error {min-height:0;margin:0;font:400 13px/16.9px var(--font-body)}
.auth-form .form-error:empty {display:none}
.auth-form .auth-error-card {display:flex;align-items:center;gap:8px;min-height:48px;padding:12px 16px;border:1px solid var(--hair);border-radius:8px;background:var(--paper-card);color:var(--ink);font:400 14px/19.6px var(--font-body)}
.auth-form .auth-error-card[hidden] {display:none}
.auth-error-card .icon {flex:none;color:var(--red)}
.auth-error-card span:last-child {min-width:0;overflow-wrap:anywhere}
.auth-form .primary-cta {margin-top:8px;width:100%;flex:none}
.secret-field {position:relative;display:block}.secret-field input {padding-right:56px}.secret-field>button {position:absolute;right:2px;top:2px;width:44px;height:44px;border:0;background:none}
.forgot-password {height:44px;min-height:44px;align-self:flex-end;padding:0 0 0 16px;border:0;background:none;font:500 14px/19.6px var(--font-body);margin:0}
.recovery-dialog {width:min(358px,calc(100vw - 32px));max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 32px);border:0;border-radius:18px;padding:16px;background:var(--paper-card);overflow-y:auto}
.recovery-dialog form {display:flex;flex-direction:column;gap:16px}
.recovery-dialog form > p {margin:0;font:400 14px/19.6px var(--font-body)}
.recovery-dialog form > .primary-cta {width:100%;min-height:48px}
.recovery-dialog:has(#customer-account) {max-height:calc(100dvh - 32px);overflow-y:auto;box-sizing:border-box}
.recovery-dialog #customer-search,.recovery-dialog #customer-account {display:grid;grid-template-columns:minmax(0,1fr);gap:16px;margin-top:20px}
.recovery-dialog #customer-account > * {min-width:0;max-width:100%}
.recovery-dialog #customer-account .primary-cta {width:100%}
.recovery-dialog #customer-search label,.recovery-dialog #customer-account label {display:grid;gap:8px;font-size:14px;line-height:1.4}
.recovery-dialog #customer-search input,.recovery-dialog #customer-account input:not([type=checkbox]),.recovery-dialog #customer-account select {box-sizing:border-box;width:100%;min-width:0;min-height:44px;border:1px solid #c8c8ce;border-radius:8px;padding:10px;font:inherit;background:var(--paper);color:inherit}
.recovery-dialog #customer-account label:has([type=checkbox]) {display:flex;align-items:flex-start;gap:10px}
.recovery-dialog #customer-account input[type=checkbox] {width:20px;height:20px;flex:none;margin:0}
.recovery-dialog #customer-account p,.recovery-dialog:has(#customer-account) [role=alert] {font-size:14px;line-height:1.5;margin:0}
.recovery-dialog:has(#customer-account) [role=alert] {margin:16px 0}
.recovery-dialog #customer-search button,.recovery-dialog [data-close-customer] {min-height:44px;width:100%;border:1px solid #c8c8ce;border-radius:8px;background:var(--paper);color:inherit;font:inherit;font-weight:600}
.recovery-dialog::backdrop {background:var(--scrim)}.recovery-dialog header {min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:8px}.recovery-dialog h2 {font:600 16px/24px var(--font-body);margin:0}.recovery-dialog header button {width:44px;height:44px;flex:none;border:0;background:none}
@media (max-height:699px){.auth-scroll {padding-top:16px}.auth-logo {margin-bottom:16px}.auth-art {width:min(100%,144px);height:72px}.auth-form {margin-top:12px}}

/* Native component geometry read from e369 Pen: uXWU7/nx45l/dc2kb/rPA0b. */
.me-header {display:block;position:sticky;padding:0}
.me-header>.icon-button:first-child {position:absolute;left:0;top:9px;width:40px;height:40px}
.me-header>.icon-button:last-child {position:absolute;right:0;top:7px}
.me-avatar {position:absolute;left:36px;top:9px;width:40px;height:40px;border-radius:50%;background:var(--night);color:white;display:grid;place-items:center;font-size:16px}
.me-identity {position:absolute;left:84px;top:8px;right:48px;display:flex;flex-direction:column;gap:8px;font-size:14px}.me-identity strong {font-weight:500}.me-identity small {font-size:13px;color:var(--ink-soft)}
.gkn-panel {height:88px;border:1px solid var(--hair);border-radius:12px;background:#fff;color:var(--ink);padding:10px 16px;position:relative}
.gkn-top {font:500 13px/16.9px var(--font-body);color:var(--ink-soft);letter-spacing:0;justify-content:space-between}.gkn-top small {font:inherit;letter-spacing:0}
.gkn-value {position:absolute;top:26px;left:0;right:0;display:flex;justify-content:center;align-items:center;gap:8px;font:500 13px/16.9px var(--font-mono)}.gkn-value strong {font-weight:500}.gkn-delta {font:inherit;color:var(--ink);margin:0}
.gkn-track {position:absolute;left:20px;right:32px;top:50px;margin:0;height:6px;background:#e2e4e7;border-radius:5px}
.gkn-track i {background:#16834a;border-radius:5px}.gkn-track b {position:absolute;top:-3px;width:12px;height:12px;background:white;border:1px solid #aaa;border-radius:50%;transform:translateX(-50%);font:8px Inter;text-align:center}.gkn-track .passed {background:#16834a;color:white;border-color:#16834a}.gkn-track u {position:absolute;top:-4px;width:14px;height:14px;border:2px solid white;background:#36e77b;border-radius:50%;transform:translateX(-50%)}
.gkn-milestones {position:absolute;top:66px;left:0;right:0;color:var(--ink);display:grid;grid-template-columns:48px 1fr 80px 88px;text-align:center}
.gkn-source-state { margin: 12px 4px 0; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
@media (max-width: 359px) { .gkn-panel { height: 104px; } .gkn-milestones { grid-template-columns: repeat(4,minmax(0,1fr)); padding: 0 4px; } }
.obligation-panel {margin-top:16px;background:var(--night);border-radius:24px;color:white}
.obligation-clock {color:white}.obligation-clock svg {transform:none}.obligation-clock circle {stroke-width:12}.clock-track {stroke:#343438}.clock-progress {stroke:#36e77b;stroke-linecap:butt}
.obligation-clock>span {gap:0;padding-top:8px}.clock-number {display:flex;align-items:baseline;gap:4px}.obligation-clock b {font:500 13px/16.9px var(--font-body)}.obligation-clock small {font:500 13px/16.9px var(--font-body);margin-top:0}
.reward-counter {right:14px;color:white}.reward-counter .icon {color:var(--gold)}
.clock-marker {position:absolute;display:flex;align-items:center;gap:4px;font:500 13px/16.9px var(--font-body)}.clock-marker .icon {font-size:14px}.marker-left {top:18px;left:70px}.marker-left .icon {color:var(--red)}.marker-top {top:6px;left:196px;color:#ffffff99}
.me-section-title {height:56px;display:flex;justify-content:space-between;align-items:center;font:600 16px/24px var(--font-body)}.me-section-title span {font:500 13px/16.9px var(--font-body);color:var(--ink-soft)}
.class-trophy img {width:24px;height:24px;object-fit:contain}
.me-metric {display:grid;grid-template-columns:72px minmax(0,1fr);gap:8px;align-items:start}
.me-metric>span {align-self:center;font:500 13px/16.9px var(--font-body)}
.me-bar em {font-style:normal;color:var(--ink)}
@media (max-width:359px) {
  .me-class-toggle {min-height:80px;grid-template-rows:24px 24px;align-content:center;row-gap:8px}
  .me-class.open {min-height:351px}
  .semester-months {grid-template-columns:repeat(3,minmax(0,1fr))}
}
.profile-avatar {width:40px;height:40px;background:var(--night);color:white;border-radius:50%;display:grid;place-items:center;font:500 14px/19.6px var(--font-body);flex:none}.personal-identity>div {display:flex;flex-direction:column;gap:4px}.personal-identity strong {font:600 16px/24px var(--font-body)}.personal-identity small {font:500 13px/16.9px var(--font-body);color:var(--ink-soft)}
.personal-screen form {display:flex;flex-direction:column;gap:16px;padding-top:0}.personal-screen form>.primary-cta {margin-top:8px;width:100%}.personal-screen form>.form-error:empty {display:none}.current-phone strong {min-height:48px;padding:8px 16px;display:flex;align-items:center;border:1px solid var(--hair);border-radius:8px;background:var(--paper-card);font:400 14px/19.6px var(--font-body);color:var(--ink)}
.auth-phone::after,.personal-phone::after {content:'';position:absolute;bottom:15px;left:calc(50% - 48px);width:96px;height:4px;border-radius:2px;background:#d7d7db;pointer-events:none}
.personal-phone .back-row {top:0;margin-bottom:0}
.personal-field:has(input[type=password]),.personal-field:has(input[data-secret]) {position:relative}
.personal-secret-toggle {position:absolute;right:2px;top:23px;width:44px;height:44px;border:0;background:none;color:var(--ink-soft)}
.personal-field:has(.personal-secret-toggle) input {padding-right:44px}
/* Cover actions open from the existing coach chip without changing the class layout. */
button.role-chip{border:0;font-family:inherit;cursor:pointer;line-height:inherit}
button.role-chip:focus-visible{outline:2px solid var(--red);outline-offset:3px}
.identity-target{position:relative}
.cover-unread{position:absolute;top:0;right:0;width:9px;height:9px;border:2px solid var(--paper);border-radius:50%;background:var(--red)}
.cover-dialog .top-panel{overflow:auto;margin-top:calc(var(--safe-bottom) - var(--safe-top));max-height:calc(100dvh - max(var(--safe-top),var(--safe-bottom)) - max(var(--safe-top),var(--safe-bottom)) - 32px)}
.cover-dialog .modal-content{gap:12px}
.cover-dialog .personal-link{margin:0}
.cover-dialog .personal-link:disabled{color:var(--ink-muted);cursor:default}
.cover-row{display:grid;gap:6px;padding:12px 0;border-bottom:1px solid #e5e7eb}
.cover-row small{color:var(--ink-soft);font:500 13px/16.9px var(--font-body)}.cover-row p{margin:0;overflow-wrap:anywhere}
.cover-actions{display:flex;flex-wrap:wrap;gap:8px}
.cover-page{display:grid;gap:16px;padding-bottom:24px}
.cover-page h1{margin:0;font:600 20px/28px var(--font-body)}
.cover-page-group{display:grid;gap:8px}
.cover-page-group h2{margin:0;font:600 16px/24px var(--font-body)}
.cover-page .cover-row{padding:12px;border:1px solid var(--hair);border-radius:8px;background:var(--paper-card)}
.cover-page .cover-row strong{font:600 14px/20px var(--font-body)}
.cover-page .cover-row > span{font:500 13px/18px var(--font-body);color:var(--ink-soft)}
.cover-page .cover-actions > button{min-height:44px}
.cover-page-empty{margin:0;padding:12px;border:1px solid var(--hair);border-radius:8px;color:var(--ink-soft);font:400 14px/20px var(--font-body)}
#coach-cover-request,#attendance-reject{display:grid;gap:12px;padding:12px 0}
#coach-cover-request label,#attendance-reject label{display:grid;gap:6px}
#coach-cover-request select,#coach-cover-request textarea,#attendance-reject textarea{width:100%;box-sizing:border-box;border:1px solid #d0d5dd;border-radius:8px;padding:10px;font:inherit}
#coach-cover-request{display:flex;flex-direction:column;gap:16px;padding:0}
#coach-cover-request>small{font:500 13px/16.9px var(--font-body);color:var(--ink-soft)}
#coach-cover-request label{gap:4px;font:500 13px/16.9px var(--font-body);color:var(--ink-soft)}
#coach-cover-request select,#coach-cover-request textarea{min-height:48px;padding:8px 16px;border-color:var(--hair);background:var(--paper-card);color:var(--ink);font:400 14px/19.6px var(--font-body)}
#coach-cover-request textarea{min-height:64px}
#coach-cover-request>.primary-cta{min-height:48px;margin-top:8px}
#coach-cover-request>p{margin:0;color:var(--ink-soft);font:400 13px/16.9px var(--font-body)}

.attendance-review-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}
.attendance-review-actions>button{width:100%;min-width:0;min-height:48px;border-radius:8px;justify-content:center;white-space:nowrap}
.attendance-review-actions>.pill-action{border:1px solid var(--hair);background:var(--paper-card);color:var(--ink)}
.attendance-review-actions>.pill-action:disabled{color:var(--ink-muted)}
.attendance-return{display:grid;gap:12px}.attendance-return p{margin:0;padding:12px 14px;border-left:3px solid var(--red);background:var(--paper-soft);overflow-wrap:anywhere}

.progress.dot-progress > i.unmarked { background: var(--ink-muted); }
.attendance-progress .dot-progress { flex-wrap:wrap; height:auto; min-height:8px; }

/* Approved compact session / coach attendance family, 25 September 2026. */
.role-chip.has-cover { position: relative; overflow: visible; }
.role-chip .coach-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cover-corner { position: absolute; right: -4px; top: -4px; width: 16px; height: 16px; border: 1px solid var(--hair); border-radius: 50%; background: var(--paper-card); color: var(--red); display: flex; align-items: center; justify-content: center; pointer-events: none; }
.cover-corner .icon { width: 12px; height: 12px; font-size: 12px; }
.coach-directory { position: relative; z-index: 3; display: flex; align-items: center; gap: 8px; width: min(200px, 100%); min-width: 0; }
.coach-directory:has(.coach-directory-menu:not([hidden])) { z-index: 12; }
.coach-tag-hit, .coach-count-hit { height: 44px; min-height: 44px; padding: 0; border: 0; background: transparent; cursor: pointer; }
.coach-tag-hit { flex: 0 1 148px; min-width: 116px; max-width: 148px; display: flex; align-items: center; text-align: left; }
.coach-tag-hit > .role-chip { width: 100%; height: 32px; min-height: 32px; padding: 0 8px; justify-content: flex-start; min-width: 0; }
.coach-count-hit { flex: 0 0 44px; width: 44px; display: grid; place-items: center; }
.support-count { min-width: 44px; height: 32px; padding: 0 8px; border-radius: 8px; background: var(--paper-soft); color: var(--ink); display: inline-grid; place-items: center; font: 500 13px/16.9px var(--font-body); }
.session-hero.dark .support-count { background: #222226; color: #fff; }
.coach-directory-menu { position: absolute; z-index: 20; top: calc(100% + 4px); left: 0; width: min(218px, calc(var(--app-width) - 48px)); padding: 8px; border: 1px solid var(--hair); border-radius: 18px; box-sizing: border-box; background: var(--paper-card); color: var(--ink); box-shadow: 0 8px 24px #00000024; }
.coach-directory-menu[hidden] { display: none; }
.coach-directory-row { min-height: 44px; display: grid; grid-template-columns: 20px minmax(0, 1fr) 44px; grid-template-rows: repeat(2, min-content); align-content: center; align-items: center; column-gap: 8px; font: 500 13px/16.9px var(--font-body); }
.coach-directory-row:not(:has(> .icon-button)) { grid-template-columns: 20px minmax(0, 1fr); }
.coach-directory-row > span:not(.icon) { grid-column: 2; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.coach-directory-row > .coach-directory-name { grid-row: 1; }
.coach-directory-row > span.coach-directory-role { grid-row: 2; color: var(--ink-soft); }
.coach-directory-row > .icon { grid-column: 1; grid-row: 1 / 3; color: var(--ink); }
.coach-directory-row[data-coach-role="main"] > .icon { color: var(--red); }
.coach-directory-row > .icon-button { grid-column: 3; grid-row: 1 / 3; width: 44px; height: 44px; padding: 0; }
.session-hero { overflow: visible; }
@media (max-width: 359px) { .coach-tag-hit { max-width: 144px; } }
.session-hero.session-compact { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); grid-auto-rows: min-content; gap: 0; height: auto; min-height: 148px; padding: 16px; overflow: visible; }
.session-hero.session-compact.attendance-compact { min-height: 190px; }
.session-hero.session-compact.with-cta { min-height: 246px; }
.session-compact > .session-time { position: static; grid-row: 1; max-width: calc(100% - 120px); }
.session-compact > .tag-row { position: static; grid-row: 2; min-height: 32px; margin-top: 4px; max-width: calc(100% - 120px); }
.session-compact > .compact-coaches { position: static; grid-row: 3; min-height: 44px; margin-top: 16px; width: min(200px, 100%); max-width: none; }
.session-hero.session-compact > .attendance-progress { position: static; grid-row: 4; display: grid; grid-template-columns: 20px 104px minmax(0, 1fr); align-items: center; gap: 8px; width: 100%; height: auto; min-height: 20px; min-width: 0; margin-top: 8px; padding: 0; background: transparent; }
.session-compact > .attendance-progress > strong { font: 500 13px/16.9px var(--font-body); white-space: nowrap; }
.session-hero.session-compact > .session-art { position: absolute; top: 8px; right: 8px; width: 112px; height: 96px; margin: 0; }
.session-compact .role-chip { padding:0 8px; gap:4px; box-sizing:border-box; }
.session-compact .role-chip > .icon { flex:none; }
.session-compact > .primary-cta { position: static; grid-row: 5; width: 100%; height: 48px; margin: 8px 0 0; }
.attendance-progress .dot-progress { display:grid; grid-template-columns:repeat(var(--roster-count),minmax(0,1fr)); gap:min(2px,calc(36px / var(--roster-count))); width:auto; min-width:0; flex:1; overflow:hidden; }
.attendance-progress .dot-progress > i { width:auto; min-width:0; height:6px; margin:0; border-radius:2px; }
.session-compact .taxonomy:first-child { width:94px; }
.session-compact .taxonomy { height:32px; }
.coach-attendance-section { margin: 12px 0 18px; }
.coach-attendance-section h2 { margin: 0 0 8px; font: 600 16px/24px var(--font-body); }
.coach-attendance-list { display: grid; gap: 8px; }
.coach-attendance-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; min-height: 54px; padding: 5px 8px; border: 1px solid var(--hair); border-radius: 8px; background: var(--paper-card); }
.coach-person-avatar { flex: 0 0 44px; width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; color: var(--ink); }
.coach-person-avatar.main { color: var(--red); }
.coach-attendance-identity { flex: 1 1 80px; min-width: 80px; display: flex; flex-direction: column; gap: 2px; }
.coach-attendance-identity > strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 500 13px/16.9px var(--font-body); color: var(--ink); }
.coach-attendance-identity > small { font: 500 13px/16.9px var(--font-body); color: var(--ink-soft); }
.coach-attendance-status { flex: 0 1 auto; min-width: 0; max-width: 100%; font: 500 13px/16.9px var(--font-body); color: var(--ink); }
.coach-presence-options { flex: 0 0 auto; display: flex; gap: 8px; }
.coach-presence-options button { min-height: 44px; padding: 0 8px; border: 1px solid var(--hair); border-radius: 8px; background: var(--paper-card); font: 500 13px/16.9px var(--font-body); cursor: pointer; }
.coach-self-status { flex: 0 0 44px; width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; padding: 0; border: 0; border-radius: 8px; background: transparent; cursor: pointer; }
.person-presence { display: inline-flex; align-items: center; justify-content: center; flex: none; }
.person-presence.present { color: var(--success); }
.person-presence.absent { color: var(--red); font-size: 20px; }
.person-presence.unmarked { color: var(--ink-soft); }
.coach-review-compact .coach-attendance-list { display: block; border: 1px solid var(--hair); border-radius: 8px; overflow: hidden; background: var(--paper-card); }
.coach-review-compact .coach-attendance-row { min-height: 44px; padding: 0 8px; border: 0; border-radius: 0; }
.coach-review-compact .coach-attendance-row + .coach-attendance-row { border-top: 1px solid var(--hair); }
.coach-review-compact .coach-person-avatar { background: transparent; }
.coach-review-compact .person-presence { min-width: 20px; }
@media (max-width: 359px) { .coach-attendance-row:has(.coach-presence-options) .coach-presence-options { margin-left: 52px; } }
.app-header .date-stack { display: flex; align-items: center; gap: 4px; min-width: 0; white-space: nowrap; font: 500 13px/16.9px var(--font-body); }
.date-stack > span, .date-stack > strong { color: var(--ink-soft); font: inherit; }
.app-header .month-control { height: 44px; position: relative; isolation: isolate; background: transparent; }
.app-header .month-control::before { content: ""; position: absolute; inset: 2px 0; z-index: -1; border-radius: inherit; background: var(--paper-soft); }
.app-header .month-control > .icon { width: 16px; height: 16px; font-size: 16px; }
.live-picker{width:358px;max-width:calc(100vw - 32px);padding:16px;box-sizing:border-box}.calendar-dialog-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.live-picker .sw-period-filter{display:flex;align-items:center;gap:8px;margin-bottom:16px}.live-picker .sw-period-filter select{min-width:0;flex:1;height:40px;border:1px solid var(--hair);border-radius:10px;background:#fff;padding:0 8px;font:14px var(--font-body)}.live-picker .sw-icon-button{display:flex;align-items:center;justify-content:center;flex:none;width:32px;height:40px;padding:0;border:0;background:transparent}.live-picker .sw-icon{width:20px;height:20px;font-size:20px}.live-picker .month-calendar{margin:0}.live-picker .calendar-week{grid-template-columns:repeat(7,minmax(0,1fr))}.live-picker .day-cell{min-width:0}

.attendance-coach-summary{display:grid;margin:12px 0}.attendance-coach-summary>div{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:36px;border-bottom:1px solid #eee}.attendance-coach-summary strong{font-size:14px;font-weight:500}

.live-picker .coach-month-calendar { width: calc(100% + 32px); margin: 0 -16px; padding: 12px 12px 6px; border: 0; outline: 0; background: transparent; }
.live-picker { top: calc(var(--safe-top) + 16px); bottom: calc(var(--safe-bottom) + 16px); max-height: calc(100dvh - var(--safe-top) - var(--safe-bottom) - 32px); overflow-y: auto; scrollbar-width: none; border-radius: 18px; }
.live-picker::-webkit-scrollbar { display: none; }
.live-picker .calendar-dialog-top { position: sticky; top: 0; z-index: 1; background: var(--paper-card); min-height: 44px; margin-bottom: 16px; }
.live-picker .calendar-dialog-top > strong { font: 600 16px/24px var(--font-body); }
.live-picker .calendar-dialog-top .icon-button { flex: none; width: 44px; height: 44px; padding: 0; }
.live-picker .sw-icon-button { width: 44px; height: 44px; }
.live-picker .sw-period-filter select { height: 44px; }
@media (max-width: 359px) {
  .live-picker .coach-month-calendar { padding-left: 4px; padding-right: 4px; }
  .live-picker .sw-period-filter { margin-left: -16px; margin-right: -16px; gap: 4px; }
  .live-picker .sw-period-filter select { padding: 0 4px; }
}

.profile-request-receipt{border:1px solid var(--hair);border-radius:16px;padding:16px;margin:16px 0}.profile-request-receipt strong{font:600 16px/24px var(--font-body)}.profile-request-receipt p{margin:8px 0;font:400 14px/19.6px var(--font-body)}.profile-request-receipt small{font:500 13px/16.9px var(--font-body);color:var(--ink-soft)}
.birthday-live-row{display:flex;align-items:flex-start;gap:16px;padding:16px 0;border-bottom:1px solid var(--hair)}.birthday-live-row>div{flex:1;min-width:0}.birthday-live-row strong,.birthday-live-row small,.birthday-state{display:block}.birthday-live-row strong{font:600 16px/24px var(--font-body)}.birthday-live-row small{font:500 13px/16.9px var(--font-body)}.birthday-live-row small{color:var(--ink-soft);margin:4px 0}.birthday-state{font:500 13px/16.9px var(--font-body);color:var(--ink)}.birthday-live-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.birthday-dialog{box-sizing:border-box;width:min(358px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;border:0;border-radius:18px;padding:16px;font:inherit;color:var(--ink);background:var(--paper-card)}.birthday-dialog::backdrop{background:#0006}.birthday-dialog header{display:flex;gap:16px;align-items:center}.birthday-dialog h2{font-size:16px;line-height:24px;font-weight:600;margin:0;flex:1}.birthday-dialog form{display:grid;gap:16px}.birthday-dialog p{margin:16px 0}.birthday-dialog textarea{box-sizing:border-box;width:100%;min-height:88px;border:1px solid var(--hair);border-radius:8px;padding:8px 16px;font:400 14px/19.6px var(--font-body)}.birthday-dialog>p{font:400 14px/19.6px var(--font-body)}.birthday-dialog .primary-cta{min-height:48px;width:100%;margin:0}.birthday-proof{display:block;width:100%;max-height:360px;object-fit:contain;border-radius:12px}.birthday-reject{border:0;background:transparent;color:var(--ink);font:inherit;min-height:44px}.birthday-dialog [role=alert]:empty{display:none}
.birthday-dialog::backdrop{background:#00000080}.birthday-dialog>p{font:500 13px/16.9px var(--font-body)}.birthday-dialog form p{margin:0;font:400 13px/16.9px var(--font-body)}.birthday-dialog [data-preview]:empty{display:none}.birthday-reject{font:500 14px/19.6px var(--font-body);min-height:48px}

.pt-location-dialog .location-options{display:grid;gap:8px}.pt-location-dialog .field-row{padding:8px 16px;min-height:48px;width:100%;border:1px solid var(--hair);border-radius:8px;background:var(--paper-card);font:500 14px/19.6px var(--font-body)}.pt-location-dialog .field-row[aria-pressed=true]{border-color:var(--ink)}.pt-location-dialog [data-custom][hidden]{display:none}.pt-location-help{font:400 13px/16.9px var(--font-body);color:var(--ink-soft)}

.birthday-dialog form>p{font:400 13px/16.9px var(--font-body);color:var(--ink-soft)}.birthday-dialog [role=alert]{font:400 13px/16.9px var(--font-body);color:var(--red)}

.class-screen .coach-month-calendar .day-cell { height: 40px; min-height: 40px; }
.class-screen .coach-month-calendar .day-number { font: 600 16px/20px var(--font-display); }
.class-screen .coach-month-calendar .day-cell[aria-pressed="true"] .day-number { background: var(--night); color: #fff; }
.class-screen .coach-month-calendar .day-status { position: absolute; top: 0; right: 2px; height: 16px; gap: 0; }
.class-screen .coach-month-calendar .day-cell .day-count { display: grid; place-items: center; min-width: 16px; height: 16px; padding: 0 2px; border-radius: 980px; background: #e1e1e5; color: var(--ink-soft); font: normal 500 10px/16px var(--font-body); }
.class-screen .coach-month-calendar .day-status:has(.day-marker) .day-count { display: none; }
.class-screen .coach-month-calendar .day-dot { display: none; }
.class-screen .coach-month-calendar .day-marker { width: 16px; height: 16px; font-size: 16px; line-height: 16px; }
.class-screen .coach-month-calendar .day-cell .day-rail { height: 4px; background: #e9e9eb; }
.class-screen .coach-month-calendar .day-cell .day-rail.done,
.class-screen .coach-month-calendar .day-cell .day-rail.confirmed { background: var(--success); }
.class-screen .coach-month-calendar .day-cell .day-rail.alert,
.class-screen .coach-month-calendar .day-cell .day-rail.unconfirmed { background: var(--red); }
.class-screen .monthly-groups { margin-top: 8px; }

.class-screen .coach-month-calendar { height: 279px; flex: none; display: grid; grid-template-rows: auto; grid-auto-rows: minmax(40px, 1fr); align-items: center; padding: 12px 12px 6px; }
@media (max-width:359px) { .class-screen .coach-month-calendar { padding-left:4px; padding-right:4px; } }

.class-screen .coach-month-calendar .day-done .day-marker { font-variation-settings: 'FILL' 1; }

.class-screen .coach-month-calendar .day-done .day-marker { position: relative; font-size: 0; background: var(--success); border-radius: 50%; }
.class-screen .coach-month-calendar .day-done .day-marker::after { position: absolute; inset: 0; display: grid; place-items: center; content: '✓'; color: #fff; font: 700 11px/16px var(--font-body); }

.class-screen .coach-month-calendar .day-cell .day-count { background: transparent; }

.class-screen .coach-month-calendar .day-cell .day-count { background: #e1e1e5; }
.class-screen .coach-month-calendar .day-marker:is([aria-label="Đang điểm danh"], [aria-label="Đã từ chối"], [aria-label="Chưa hoàn tất điểm danh"]) { position: relative; font-size: 0; background: var(--red); border-radius: 50%; }
.class-screen .coach-month-calendar .day-marker:is([aria-label="Đang điểm danh"], [aria-label="Đã từ chối"], [aria-label="Chưa hoàn tất điểm danh"])::after { position: absolute; inset: 0; display: grid; place-items: center; content: '!'; color: #fff; font: 700 11px/16px var(--font-body); }
.class-screen .coach-month-calendar .day-cell.event-day[aria-pressed="true"] .day-number { border-color: var(--red); }

.attendance-requirements{padding:12px 16px;border:1px solid var(--hair);border-radius:8px;background:var(--paper-card);color:var(--ink-soft);font:400 13px/16.9px var(--font-body)}
.attendance-requirements p{margin:0}
.attendance-requirements p+p{margin-top:8px}

.coach-absence-modal { --attendance-panel-max: calc(100dvh - max(var(--safe-top), var(--safe-bottom)) - max(var(--safe-top), var(--safe-bottom)) - 32px); }
.coach-absence-modal .top-panel { max-height: var(--attendance-panel-max); margin-top: calc(var(--safe-bottom) - var(--safe-top)); overflow-y: auto; }
.coach-absence-modal .top-panel > p { margin: 0; font: 400 14px/21px var(--font-body); overflow-wrap: anywhere; }
.coach-absence-modal form { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
.coach-absence-modal textarea { min-height: 102px; resize: vertical; background: var(--paper-soft); padding: 8px 16px; color: var(--ink); font: 400 14px/19.6px var(--font-body); }
.coach-absence-modal form button { min-height: 48px; width: 100%; }
.coach-absence-note { margin-top: 8px; font: 400 13px/18.2px var(--font-body); white-space: normal; overflow-wrap: anywhere; }
.coach-absence-note summary { min-height: 44px; display: flex; align-items: center; cursor: pointer; }
.coach-absence-note p { margin: 4px 0; white-space: pre-wrap; }

.attendance-screen .roster-list .person-row { min-height: 118px; align-items: start; }
.attendance-screen .rating-line { display: grid; grid-template-rows: 44px 16.9px; align-items: center; gap: 8px; }
.attendance-screen .rating-input { display: flex; flex-wrap: nowrap; justify-content: space-between; gap: 0; width: min(100%, 252px); max-width: 100%; }
.attendance-screen .rating-choice { flex: 0 0 44px; }
.attendance-student-requirements { display: grid; gap: 8px; }
.attendance-requirements .attendance-student-requirements > p { min-height: 33.8px; margin: 0; }
.attendance-requirements .attendance-student-requirements > p:first-child { min-height: 16.9px; }
.attendance-student-requirements + p { margin-top: 8px; }

.calendar-month-shell { min-width: 0; }
.calendar-month-nav { display: grid; grid-template-columns: 44px minmax(0, 1fr) 44px; align-items: center; margin-bottom: 4px; }
.calendar-month-label { color: var(--ink-soft); text-align: center; font: 500 13px/16.9px var(--font-body); }
.calendar-month-step { width: 44px; height: 44px; padding: 0; display: flex; align-items: center; justify-content: center; border: 0; border-radius: 8px; color: var(--ink-soft); background: transparent; cursor: pointer; }
.calendar-month-step:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; }
.calendar-swipe-surface { touch-action: pan-y; }
.calendar-swipe-surface > .coach-month-calendar { margin-top: 0; }
.live-picker[open] { display: flex; flex-direction: column; max-height: calc(100dvh - 32px); overflow: hidden; }
.live-picker > .calendar-dialog-top, .live-picker > .sw-period-filter { flex: none; }
.live-picker > .date-picker-calendar { flex: 0 1 279px; min-height: 0; min-width: 0; width: calc(100% + 32px); margin-inline: -16px; overflow-y: auto; scrollbar-width: none; }
.live-picker .date-picker-calendar > .coach-month-calendar { width: 100%; margin: 0; }
.live-picker .date-picker-confirm { flex: 0 0 48px; width: 100%; height: 48px; min-height: 48px; margin-top: 16px; }

.live-app .safe-area::after { display: none; }
@media (display-mode: standalone), (display-mode: fullscreen) {
  .live-app { --safe-bottom: max(env(safe-area-inset-bottom, 0px), 48px); }
}

.case-fields { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; min-width: 0; padding: 16px; background: var(--paper-card); border-radius: 16px; }
.case-fields > * { min-width: 0; }
.case-fields label { display: grid; gap: 4px; min-width: 0; color: var(--ink-soft); font: 500 13px/16.9px var(--font-body); }
.case-fields input, .case-fields select, .case-fields textarea { width: 100%; min-width: 0; min-height: 48px; border: 1px solid var(--hair); border-radius: 8px; background: var(--paper-card); padding: 8px 16px; color: var(--ink); font: 400 14px/19.6px var(--font-body); }
.case-fields textarea { min-height: 80px; resize: vertical; }
.case-fields .inline-detail { margin: 0; overflow-wrap: anywhere; white-space: pre-wrap; }
.case-fields .case-confirm { display: flex; align-items: center; gap: 8px; min-height: 48px; }
.case-fields .case-confirm input { width: 24px; min-height: 24px; flex: 0 0 24px; }
.case-fields .field-row { display: flex; align-items: center; gap: 8px; min-height: 48px; overflow-wrap: anywhere; white-space: normal; }
.case-fields summary.field-row { display: flex; align-items: center; width: 100%; }
.is-case-composer > .composer-dropdowns, .is-case-composer > .description-row, .is-case-composer > .description-input, .is-case-composer > .composer-tools { display: none; }
.is-case-composer > .task-composer-hero > [data-action="edit-deadline"] { display: none; }

.weekly-entry { display:flex; align-items:center; gap:8px; width:100%; min-height:56px; padding:16px 0; border:0; border-bottom:1px solid #00000014; background:transparent; text-align:left; color:#1D1D1F; font:500 14px/19.6px Inter,sans-serif; }
.weekly-entry>span:not(.icon) { flex:1; min-width:0; }
.weekly-entry small,.weekly-meta,.weekly-item small,.weekly-group-toggle small { display:block; color:#6E6E73; font:500 13px/16.9px Inter,sans-serif; overflow-wrap:anywhere; }
.weekly-entry small { margin-top:4px; }
.weekly-checklist { color:#1D1D1F; font:400 14px/19.6px Inter,sans-serif; padding-bottom:16px; }
.weekly-checklist h2 { margin:0; font:500 20px/28px Inter,sans-serif; }
.weekly-checklist h3 { margin:0; font:600 16px/24px Inter,sans-serif; }
.weekly-checklist p { margin:8px 0; overflow-wrap:anywhere; }
.weekly-checklist button,.weekly-checklist a { color:inherit; }
.weekly-checklist button { min-height:44px; min-width:44px; padding:8px 16px; border:1px solid #00000014; border-radius:8px; background:#F5F5F7; font:500 14px/19.6px Inter,sans-serif; }
.weekly-checklist button:disabled { color:#A1A1A6; }
.weekly-checklist :focus-visible { outline:2px solid #1D1D1F; outline-offset:2px; }
.weekly-heading,.weekly-nav,.weekly-actions { display:flex; align-items:center; justify-content:space-between; gap:8px; margin:8px 0 16px; }
.weekly-heading button,.weekly-nav button { padding:8px; display:flex; align-items:center; justify-content:center; }
.weekly-note { padding:8px 0 16px; color:#6E6E73; font:400 13px/16.9px Inter,sans-serif; }
.weekly-group { border-top:1px solid #00000014; padding:8px 0; }
.weekly-checklist .weekly-group-toggle { display:flex; align-items:center; gap:8px; width:100%; padding:8px 0; border:0; background:transparent; text-align:left; }
.weekly-group-toggle>span:first-child { flex:1; min-width:0; }
.weekly-group-toggle strong { font:600 16px/24px Inter,sans-serif; }
.weekly-group-toggle small { margin-top:4px; }
.weekly-group-body { padding:8px 0 16px; }
.weekly-item { display:flex; align-items:center; gap:8px; min-height:48px; padding:8px 0; border-bottom:1px solid #00000014; text-decoration:none; }
.weekly-item>span:first-child { min-width:0; flex:1; }
.weekly-item strong { display:block; font:500 14px/19.6px Inter,sans-serif; overflow-wrap:anywhere; }
.weekly-item small { margin-top:4px; }
.weekly-month { padding-top:16px; }
.weekly-milestone { padding:16px 0; border-bottom:1px solid #00000014; }
.weekly-milestone>a { display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:44px; text-decoration:none; }
.weekly-milestone strong { font:600 16px/24px Inter,sans-serif; overflow-wrap:anywhere; }
.weekly-editor { margin-top:16px; }
.weekly-editor label { display:block; font:500 13px/16.9px Inter,sans-serif; }
.weekly-editor textarea { display:block; box-sizing:border-box; width:100%; min-height:80px; margin:8px 0 16px; padding:8px; border:1px solid #00000014; border-radius:8px; font:400 14px/19.6px Inter,sans-serif; background:#fff; color:#1D1D1F; }
.weekly-editor .weekly-confirm { display:flex; align-items:center; gap:8px; min-height:48px; }
.weekly-confirm input { flex:0 0 24px; width:24px; height:24px; accent-color:#1D1D1F; }

.weekly-compact .weekly-heading { margin-bottom:8px; }
.weekly-tools { display:flex; gap:8px; }
.weekly-columns { display:flex; justify-content:space-between; padding:8px 28px 8px 0; color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.weekly-compact .weekly-group { padding:0; }
.weekly-compact .weekly-group-toggle { min-height:56px; gap:8px; }
.weekly-compact .weekly-group-toggle strong { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font:500 14px/19.6px var(--font-body); }
.weekly-compact .weekly-group-toggle>span:first-child { flex:0 0 20px; }
.weekly-count { flex:0 0 auto; min-width:24px; text-align:right; font:500 13px/16.9px var(--font-body); }
.weekly-review-mark { display:flex; align-items:center; color:var(--ink-soft); }
.weekly-review-mark.is-checked { color:var(--success); }
.weekly-review-mark.is-stale { color:var(--warning); }
.weekly-info { padding:8px 0 16px; font:400 13px/16.9px var(--font-body); color:var(--ink-soft); }
.weekly-compact .weekly-milestone { padding:8px 0 16px; }

.weekly-attention>.icon:first-child { color:var(--warning); }
.weekly-exceptions .weekly-upcoming { color:var(--ink-soft); }
.weekly-clear { padding:16px 0; color:var(--ink-soft); }

/* Native Tasks: one source-backed queue, visible unfinished count. */
.task-remaining-label { margin:0; font-size:14px; line-height:20px; color:#fff; }
.source-task-row { color:inherit; text-decoration:none; min-height:64px; }
.source-task-row .task-open { min-width:0; }
.source-task-row .task-open>span { display:block; white-space:normal; overflow-wrap:anywhere; }
.source-task-row .task-open>small { display:block; margin-top:4px; color:#1d1d1f; font-size:13px; }
.source-task-row .task-leading { color:#ff8a34; }
.task-nav-count { display:inline-flex; min-width:18px; height:18px; padding:0 3px; align-items:center; justify-content:center; border-radius:9px; background:#1d1d1f; color:#fff; font-size:11px; font-weight:600; }
.nav-item.active .task-nav-count { background:#fff; color:#1d1d1f; }

/* Personal source work */
[data-live-tasks] a.back-row { color: inherit; text-decoration: none; }
.personal-work-screen .obligation-heading { flex-wrap: wrap; gap: 8px; }

.personal-work-screen .task-group { background: transparent; border-radius: 0; overflow: visible; }
.bottom-nav .nav-item { position: relative; }
.bottom-nav .task-nav-count { position: absolute; top: 4px; right: 4px; }

/* STATUS-01 */
.task-row[data-work-state] .task-leading,.task-row[data-work-state] .task-leading .icon,.task-row[data-work-state] .task-leading button,.task-detail-hero[data-work-state] .task-detail-signal>.icon {color:var(--work-color)!important;}
.task-row[data-work-state] .complete-circle {border-color:var(--work-color);}
.task-row[data-work-state=done] .complete-circle.complete {background:var(--work-color);}
.task-row[data-work-state=done] .complete-circle.complete::after {color:#fff;}
.coach-month-calendar .day-cell>span.day-rail.future {background:var(--ink-muted);}.coach-month-calendar .day-cell>span.day-rail.pending {background:var(--warning);}.coach-month-calendar .day-cell>span.day-rail.action {background:var(--red);}.coach-month-calendar .day-cell>span.day-rail.done {background:var(--success);}

/* Monthly management */
.compact-task-row {grid-template-columns:28px minmax(0,1fr) 28px;min-height:96px;column-gap:8px;}
.management-month-toggle {width:100%;border:0;border-bottom:1px solid var(--hair);background:transparent;color:var(--ink);text-align:left;cursor:pointer;}
.compact-task-row .task-open {padding:12px 0;}
.compact-task-row .task-open>.task-progress {display:block;font:500 13px/17px var(--font-body);margin-top:4px;}
.compact-task-row .task-open>.task-facts {display:grid;grid-template-columns:minmax(0,1fr) 100px;gap:8px;margin-top:8px;font:500 13px/17px var(--font-body);}
.task-facts>.task-owner,.task-facts>.task-deadline {display:flex;align-items:flex-start;gap:4px;margin:0;min-width:0;font:inherit;color:var(--ink-soft);}
.task-facts .task-owner>span:not(.icon) {display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;font:inherit;}
.task-facts .icon {flex:none;margin:0;}
.task-facts .task-deadline {justify-content:flex-end;white-space:nowrap;font-variant-numeric:tabular-nums;}
.task-facts time {font:inherit;}
.task-facts time small {display:block;text-align:right;font:inherit;}
.management-month-children {margin-left:16px;border-left:1px solid var(--hair);padding-left:8px;}
.management-month-children .task-row:last-child {border-bottom:0;}
.coach-month-calendar .day-cell>span.day-rail.future {background:var(--ink-muted);}.coach-month-calendar .day-cell>span.day-rail.pending {background:var(--warning);}.coach-month-calendar .day-cell>span.day-rail.action {background:var(--red);}.coach-month-calendar .day-cell>span.day-rail.done {background:var(--success);}


.birthday-dialog {max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);}
.birthday-dialog-fallback {position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);margin:0;z-index:1001;}
.birthday-backdrop {position:fixed;inset:0;background:#00000080;z-index:1000;}
.birthday-mark[data-work-state] > .icon {background:var(--work-color);}
.coach-month-calendar .day-cell>span.day-rail.future {background:var(--ink-muted);}.coach-month-calendar .day-cell>span.day-rail.pending {background:var(--warning);}.coach-month-calendar .day-cell>span.day-rail.action {background:var(--red);}.coach-month-calendar .day-cell>span.day-rail.done {background:var(--success);}

.coach-update-screen{position:fixed;inset:0;z-index:10000;background:#fbfbfd;display:grid;place-items:center;box-sizing:border-box;padding:max(24px,env(safe-area-inset-top,0px)) 24px max(24px,env(safe-area-inset-bottom,0px));font-family:Inter,sans-serif;color:#1d1d1f}
.coach-update-content{width:100%;max-width:320px;text-align:center;display:grid;justify-items:center;gap:24px}
.coach-update-content img{width:88px;height:auto}.coach-update-content h1{font-size:20px;line-height:28px;font-weight:500;margin:0;outline:none}
.coach-update-progress{height:6px;width:100%;overflow:hidden;border-radius:980px;background:#00000014}.coach-update-progress span{display:block;width:36%;height:100%;border-radius:inherit;background:#1d1d1f;animation:coach-update-travel 1.4s ease-in-out infinite}
@keyframes coach-update-travel{0%{transform:translateX(-100%)}100%{transform:translateX(380%)}}
.coach-update-notice{position:fixed;top:max(12px,env(safe-area-inset-top,0px));left:50%;transform:translateX(-50%);z-index:9000;box-sizing:border-box;width:calc(100% - 24px);max-width:420px;background:#fff;color:#1d1d1f;border:1px solid #00000014;border-radius:8px;padding:8px 16px;display:flex;align-items:center;justify-content:space-between;gap:16px;font:500 14px/20px Inter,sans-serif}
.coach-update-notice button{min-height:44px;padding:8px 16px;color:#fff;background:#0a0a0c;border:0;border-radius:8px;font:600 14px/20px Inter,sans-serif;white-space:nowrap}.coach-update-notice button:focus-visible{outline:2px solid #1d1d1f;outline-offset:2px}
body.coach-update-notified #app{margin-top:var(--coach-update-notice-space,88px);height:calc(100vh - var(--coach-update-notice-space,88px));height:calc(100dvh - var(--coach-update-notice-space,88px))}
@media(prefers-reduced-motion:reduce){.coach-update-progress span{animation:none;width:100%;background:repeating-linear-gradient(90deg,#1d1d1f 0 16px,transparent 16px 24px)}}

/* Coach culture: T01/T02/T11-T15, S8/S16/S24/S32 and R03/R04/R06-R09.
   A read-only surface; entries share the same content and preserve their origin. */
.culture-entry { display:grid; grid-template-columns:40px minmax(0,1fr) 20px; gap:16px; align-items:center; width:100%; min-height:64px; padding:8px 0; border:0; border-bottom:1px solid var(--hair); background:transparent; color:var(--ink); text-align:left; cursor:pointer; }
.culture-entry-symbol { position:relative; display:grid; place-items:center; width:40px; height:40px; border-radius:8px; background:var(--night); color:#fff; }
.culture-entry-reward { position:absolute; top:-4px; right:-4px; display:grid; place-items:center; width:20px; height:20px; border-radius:50%; background:var(--paper); color:var(--gold); }
.culture-entry-reward .icon { font-variation-settings:"FILL" 1; }
.culture-entry-copy { min-width:0; }
.culture-entry strong { display:block; font:500 14px/19.6px var(--font-body); }
.culture-entry:focus-visible { outline:2px solid var(--ink); outline-offset:2px; }
.me-screen > .culture-entry { margin-bottom:16px; }
.training-culture-panel { border-top:1px solid var(--hair); margin-top:16px; }
.training-culture-panel > summary { display:grid; grid-template-columns:20px minmax(0,1fr) 20px; gap:8px; align-items:center; min-height:56px; cursor:pointer; list-style:none; font:600 16px/24px var(--font-body); }
.training-culture-panel > summary::-webkit-details-marker,.culture-practice > summary::-webkit-details-marker,.culture-answer > summary::-webkit-details-marker { display:none; }
.training-culture-panel[open] > summary > .icon:last-child,.culture-practice[open] > summary > .icon:last-child,.culture-answer[open] > summary > .icon:last-child { transform:rotate(180deg); }
.training-culture-panel > p { margin:0 0 8px; color:var(--ink-soft); font:400 14px/19.6px var(--font-body); }
.culture-topic-links { display:grid; gap:8px; }
.culture-topic-links button { display:grid; grid-template-columns:24px minmax(0,1fr) 20px; align-items:center; gap:8px; min-height:44px; padding:8px 0; border:0; border-bottom:1px solid var(--hair); background:transparent; text-align:left; cursor:pointer; font:500 14px/19.6px var(--font-body); }
.culture-number { color:var(--ink-soft); font:500 13px/16.9px var(--font-mono); }
.coach-culture-dialog { position:fixed; margin:0; padding:0; max-width:none; max-height:none; border:0; background:var(--paper); color:var(--ink); overflow:hidden; font-family:var(--font-body); }
.coach-culture-dialog[open] { display:flex; flex-direction:column; }
.coach-culture-dialog::backdrop { background:#00000080; }
.culture-header { display:flex; align-items:center; gap:8px; flex:0 0 auto; height:58px; min-height:58px; padding:0 16px; border-bottom:1px solid var(--hair); font:500 14px/19.6px var(--font-body); }
.culture-header > span { flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.culture-header-guide { display:flex; align-items:center; gap:8px; min-height:44px; padding:0 8px; border:0; background:transparent; cursor:pointer; font:500 13px/16.9px var(--font-body); }
.culture-header .icon-button { flex:0 0 44px; width:44px; height:44px; padding:0; border:0; border-radius:8px; background:transparent; display:grid; place-items:center; cursor:pointer; }
.culture-scroll { flex:1 1 auto; min-height:0; overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain; scrollbar-width:none; padding:24px 16px calc(32px + env(safe-area-inset-bottom,0px)); }
.culture-scroll::-webkit-scrollbar { display:none; }
.coach-culture-dialog p { margin:0; font:400 14px/19.6px var(--font-body); }
.coach-culture-dialog .culture-eyebrow { color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.culture-heading h1 { margin:8px 0 16px; font:500 20px/28px var(--font-body); }
.culture-practice { border-bottom:1px solid var(--hair); scroll-margin-top:16px; }
.culture-practice > summary { display:grid; grid-template-columns:40px minmax(0,1fr) 20px; gap:8px; align-items:center; min-height:64px; padding:16px 0; list-style:none; cursor:pointer; font:600 16px/24px var(--font-body); }
.culture-practice > summary::-webkit-details-marker { display:none; }
.culture-practice[open] > summary > .icon { transform:rotate(180deg); }
.culture-practice-body { padding:0 0 24px; }
.culture-reference-emblem { display:grid; place-items:center; width:40px; height:40px; color:var(--ink); }
.culture-reference-outcome { padding:0 0 16px; }
.culture-reference-groups { display:grid; gap:16px; }
.culture-reference-group { padding:16px; border:1px solid var(--hair); border-radius:14px; background:var(--paper-card); }
.culture-reference-group.is-avoid { background:var(--paper-soft); }
.culture-reference-group-heading { display:flex; align-items:center; gap:8px; margin-bottom:16px; }
.culture-reference-group h3,.culture-reference-boundary h3 { margin:0; font:600 16px/24px var(--font-body); }
.culture-reference-sign { display:grid; place-items:center; flex:none; width:20px; height:20px; color:var(--success); }
.culture-reference-group.is-avoid .culture-reference-sign { color:var(--red); }
.culture-reference-group ul { display:grid; gap:8px; margin:0; padding-left:16px; font:400 14px/19.6px var(--font-body); }
.culture-reference-boundary { margin-top:16px; padding:16px; border:1px solid var(--hair); border-radius:14px; background:var(--paper-soft); }
.culture-reference-boundary > div { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.culture-reference-boundary .icon { color:var(--red); flex:none; }
.culture-reference-learn { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; min-height:44px; margin-top:16px; padding:8px 16px; border:1px solid var(--hair); border-radius:8px; background:transparent; color:var(--ink); cursor:pointer; font:500 14px/19.6px var(--font-body); }
.coach-culture-dialog button:focus-visible,.coach-culture-dialog summary:focus-visible { outline:2px solid var(--ink); outline-offset:2px; }

/* Guided practice uses the same Gisdio type/color/spacing tokens as the reader. */
.culture-home .culture-heading h1 { margin-bottom:8px; }
.culture-principles-overview { margin-top:16px; padding:16px; border:1px solid var(--hair); border-radius:14px; background:var(--paper-soft); }
.culture-principles-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.culture-principles-heading h2 { margin:0; font:600 16px/24px var(--font-body); }
.culture-principles-overview ol { margin:8px 0 0; padding:0; list-style:none; }
.culture-principles-overview li+li { border-top:1px solid var(--hair); }
.culture-principle-open { display:grid; grid-template-columns:24px minmax(0,1fr) 20px; align-items:center; gap:8px; width:100%; min-height:48px; padding:8px 0; border:0; background:transparent; color:var(--ink); cursor:pointer; text-align:left; }
.culture-principle-number { display:grid; place-items:center; width:24px; height:24px; border-radius:4px; background:var(--paper-card); font:500 13px/16.9px var(--font-mono); }
.culture-principle-open strong { font:500 14px/19.6px var(--font-body); overflow-wrap:break-word; }
.culture-lesson-progress.has-reference { gap:8px; }
.culture-principles-access { display:flex; align-items:center; gap:8px; flex:none; min-height:44px; padding:0; border:0; background:transparent; color:var(--ink); cursor:pointer; white-space:nowrap; font:500 14px/19.6px var(--font-body); }
.culture-reference-toolbar { display:flex; justify-content:flex-end; flex:none; padding:0 16px; }
.culture-session-progress { margin-top:16px; color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.culture-session-progress > div { display:flex; gap:4px; margin-top:8px; }
.culture-session-progress i { flex:1; height:4px; border-radius:4px; background:var(--hair); }
.culture-session-progress i.is-complete { background:#16834a; }
.culture-resume { margin-top:24px; padding:16px; border:1px solid var(--hair); border-radius:14px; background:var(--paper-card); }
.culture-resume h2 { margin:8px 0 16px; font:600 16px/24px var(--font-body); }
.culture-topics-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin:24px 0 8px; }
.culture-topics-heading h2 { margin:0; font:600 16px/24px var(--font-body); }
.culture-topics-heading > span { color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.culture-topic-list { display:grid; }
.culture-topic-row { display:grid; grid-template-columns:24px minmax(0,1fr) 20px; align-items:center; gap:16px; width:100%; min-height:56px; padding:8px 0; border:0; border-bottom:1px solid var(--hair); background:transparent; text-align:left; cursor:pointer; }
.culture-topic-row strong { font:500 14px/19.6px var(--font-body); }
.culture-topic-row small { display:block; margin-top:4px; color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.culture-topic-complete { color:#16834a; }
.culture-primary { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; min-height:48px; padding:8px 16px; border:1px solid var(--night); border-radius:14px; background:var(--night); color:#fff; cursor:pointer; font:500 14px/19.6px var(--font-body); }
.culture-primary:disabled { border-color:var(--paper-soft); background:var(--paper-soft); color:var(--ink-muted); cursor:default; }
.culture-path-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; margin:24px 0 16px; }
.culture-path-heading h2 { margin:0; font:600 16px/24px var(--font-body); }
.culture-path-heading > span { color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.culture-path { display:grid; gap:16px; }
.culture-path-step { position:relative; display:grid; grid-template-columns:48px minmax(0,1fr) 20px; align-items:center; gap:16px; min-height:64px; width:100%; padding:0; border:0; background:transparent; text-align:left; cursor:pointer; }
.culture-path-step:not(:last-child)::after { position:absolute; content:''; top:56px; bottom:-24px; left:23px; width:2px; background:var(--hair); pointer-events:none; }
.culture-path-node { display:grid; place-items:center; height:48px; border:1px solid var(--hair); border-radius:50%; background:var(--paper-soft); color:var(--ink-soft); font:500 13px/16.9px var(--font-mono); }
.culture-path-step.is-current .culture-path-node { background:var(--night); border-color:var(--night); color:#fff; }
.culture-path-step.is-complete .culture-path-node { background:var(--paper-soft); border-color:var(--hair); color:#16834a; }
.culture-path-step strong { display:block; font:600 16px/24px var(--font-body); }
.culture-path-step small { display:block; margin-top:4px; color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.culture-guide-link { display:grid; grid-template-columns:20px minmax(0,1fr) 20px; align-items:center; gap:16px; width:100%; min-height:56px; margin-top:24px; padding:8px 0; border:0; border-top:1px solid var(--hair); background:transparent; text-align:left; cursor:pointer; font:500 14px/19.6px var(--font-body); }
.culture-lesson-progress { display:flex; align-items:center; gap:16px; flex-shrink:0; padding:8px 16px 0; color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.culture-lesson-progress > div { flex:1; display:flex; gap:4px; }
.culture-lesson-progress i { flex:1; height:4px; border-radius:4px; background:var(--hair); }
.culture-lesson-progress i.is-current { background:var(--ink); }
.culture-lesson h1 { margin:8px 0 16px; font:500 20px/28px var(--font-body); }
.culture-situation { padding-left:16px; border-left:2px solid var(--ink); }
.culture-choices { display:grid; gap:8px; margin-top:16px; }
.culture-choice { display:grid; grid-template-columns:24px minmax(0,1fr) 20px; align-items:center; gap:8px; width:100%; min-height:64px; padding:16px; border:1px solid var(--hair); border-radius:14px; background:var(--paper-card); text-align:left; cursor:pointer; font:400 14px/19.6px var(--font-body); }
.culture-choice[aria-pressed="true"] { border-color:var(--ink); background:var(--paper-card); }
.culture-choice:disabled { opacity:1; color:var(--ink); cursor:default; }
.culture-choice.is-fit { box-shadow:inset 4px 0 #16834a; }
.culture-choice.is-incorrect { box-shadow:inset 4px 0 #e53935; }
.culture-choice.is-fit .culture-choice-check { color:#16834a; }
.culture-choice.is-incorrect .culture-choice-check,.culture-choice.was-incorrect .culture-choice-check { color:#e53935; }
.culture-choice.was-incorrect { border-style:dashed; }
.culture-choice-result { display:block; margin-top:8px; font:500 13px/16.9px var(--font-body); }
.culture-choice-instruction { margin-top:16px !important; color:var(--ink-soft); }
.culture-choice-letter { display:grid; place-items:center; width:24px; min-height:24px; border-radius:4px; background:var(--paper-soft); color:var(--ink-soft); font:500 13px/16.9px var(--font-mono); }
.culture-choice-check { width:20px; }
.culture-lesson-footer { flex-shrink:0; padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px)); border-top:1px solid var(--hair); background:var(--paper); }
.culture-home-link { width:100%; min-height:44px; margin-top:8px; padding:8px; border:0; background:transparent; cursor:pointer; font:500 14px/19.6px var(--font-body); }
.culture-feedback-symbol { display:grid; place-items:center; width:48px; height:48px; margin-bottom:24px; border-radius:50%; background:var(--paper-soft); }
.culture-feedback-symbol.is-fit { color:#16834a; }
.culture-feedback-symbol.needs-adjustment { color:#f08a3c; }
.culture-picked { margin:24px 0; padding:16px; border:1px solid var(--hair); border-radius:14px; background:var(--paper-card); }
.culture-picked > span,.culture-principle-note > span { display:block; margin-bottom:8px; color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.culture-principle-note { margin-top:24px; padding-top:24px; border-top:1px solid var(--hair); }
.culture-principle-note h2 { margin:0 0 8px; font:600 16px/24px var(--font-body); }
.culture-apply-card { display:flex; align-items:flex-start; gap:16px; margin:24px 0; padding:24px; border-radius:18px; background:var(--paper-soft); }
.culture-apply-card > .icon { flex-shrink:0; }
.culture-review-title { margin:24px 0 8px; font:600 16px/24px var(--font-body); }
.culture-review-prompts { margin:16px 0 0; padding-left:24px; font:400 14px/19.6px var(--font-body); }
.culture-review-prompts li + li { margin-top:8px; }
.culture-done { padding-top:24px; }
.culture-inline-practice { display:flex; align-items:center; gap:8px; min-height:44px; margin-top:24px; padding:0; border:0; background:transparent; cursor:pointer; font:500 14px/19.6px var(--font-body); }
.culture-guide .culture-practice:first-of-type { margin-top:24px; }
.culture-guide .culture-practice-body > p + section { margin-top:24px; }
.culture-learning-steps { display:grid; gap:16px; margin-top:24px; }
.culture-learning-step { display:grid; grid-template-columns:32px minmax(0,1fr); gap:16px; padding:0 0 16px; border-bottom:1px solid var(--hair); }
.culture-learning-symbol { display:grid; place-items:center; width:32px; height:32px; border-radius:8px; background:var(--paper-soft); font:500 13px/16.9px var(--font-mono); }
.culture-step-index { float:right; margin-left:8px; color:var(--ink-soft); font:500 13px/16.9px var(--font-mono); }
.culture-learning-step h2 { margin:0 0 8px; font:600 16px/24px var(--font-body); }
.culture-learning-boundary { margin-top:24px; padding:16px; border-left:2px solid var(--ink); background:var(--paper-soft); }
.culture-learning-boundary h2 { margin:0 0 8px; font:600 16px/24px var(--font-body); }
.culture-example-modes { display:flex; gap:8px; margin:24px 0 16px; }
.culture-example-modes button { display:flex; align-items:center; justify-content:center; gap:8px; flex:1; min-height:44px; padding:8px; border:1px solid var(--hair); border-radius:8px; background:var(--paper-card); cursor:pointer; font:500 14px/19.6px var(--font-body); }
.culture-example-modes button[aria-pressed="true"] { border-color:var(--night); background:var(--night); color:#fff; }
.culture-scene { margin-top:16px; }
.culture-scene-location { display:flex; align-items:center; gap:8px; margin-bottom:24px; color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.culture-speaker { display:grid; align-items:start; gap:8px; }
.culture-speaker-member { grid-template-columns:minmax(0,1fr); padding-right:24px; }
.culture-speaker-coach { grid-template-columns:minmax(0,1fr); margin-top:16px; padding-left:24px; }
.culture-speaker-avatar { display:grid; place-items:center; width:32px; height:32px; border-radius:50%; background:var(--paper-soft); }
.culture-speaker-name { display:block; margin-bottom:8px; color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.culture-speaker-coach .culture-speaker-name { text-align:right; }
.culture-speaker p { padding:16px; border-radius:14px; background:var(--paper-soft); }
.culture-speaker-coach p { background:var(--night); color:#fff; }
.culture-action-strip { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin-top:24px; padding-top:16px; border-top:1px solid var(--hair); }
.culture-action-strip > div { display:flex; flex-direction:column; gap:8px; }
.culture-action-strip span { color:var(--ink-soft); font:500 13px/16.9px var(--font-mono); }
.culture-action-strip strong { font:500 13px/16.9px var(--font-body); }
.culture-example-reason { display:grid; grid-template-columns:20px minmax(0,1fr); gap:8px; margin-top:24px; }
.culture-example-reason h2 { margin:0 0 8px; font:600 16px/24px var(--font-body); }
.culture-example-symbol.is-fit { color:#16834a; }
.culture-example-symbol.needs-adjustment { color:#e53935; }
.coach-culture-dialog .culture-primary:focus-visible { outline-color:var(--ink); }
.culture-illustration { width:100%; max-width:248px; margin:0 auto 16px; }
.culture-image-window { position:relative; padding-top:66.6667%; overflow:hidden; border-radius:14px; background:var(--paper-soft); }
.culture-image-window img { position:absolute; top:0; left:0; width:200%; max-width:none; height:auto; }
.culture-image-window.is-avoid img { left:-100%; }
.culture-illustration figcaption { margin-top:8px; color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.culture-next-preview { display:grid; grid-template-columns:88px minmax(0,1fr); align-items:center; gap:16px; margin-top:16px; }
.culture-next-preview h2 { margin-top:0; }
.culture-next .culture-illustration { width:88px; margin:0; }
.culture-question .culture-illustration { max-width:216px; margin-top:16px; }
.culture-question .culture-situation { padding:0; border:0; color:var(--ink-soft); }
.culture-question h1 { margin:16px 0 8px; }
.culture-question .culture-choices { margin-top:0; }
.culture-learning-intro { margin-top:16px !important; }
.culture-answer-explanation { margin-top:16px; border-top:1px solid var(--hair); }
.culture-answer-explanation h2 { margin:0 0 8px; font:600 16px/24px var(--font-body); }
.culture-footer-prompt { text-align:center; color:var(--ink-soft); }
.culture-result { display:grid; grid-template-columns:40px minmax(0,1fr); gap:16px; align-items:center; margin-bottom:16px; }
.culture-result-symbol { display:grid; place-items:center; width:40px; height:40px; border:2px solid currentColor; border-radius:50%; }
.culture-result.is-fit .culture-result-symbol { color:#16834a; }
.culture-result.is-incorrect .culture-result-symbol { color:#e53935; border-radius:8px; }
.culture-result h2 { margin:0 0 4px; font:600 16px/24px var(--font-body); }
.culture-result p { color:var(--ink-soft); }
.culture-lesson-footer.has-result { border-top:2px solid var(--ink); }
.culture-takeaway { padding:16px; border-radius:8px; background:var(--paper-soft); }
.culture-learning .culture-learning-steps { margin-top:16px; }
.culture-learning-step h2 { margin-bottom:4px; font:500 14px/19.6px var(--font-body); }
.culture-learning-step p { color:var(--ink-soft); }
.culture-more { margin-top:16px; border-top:1px solid var(--hair); }
.culture-more > summary { display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:48px; padding:8px 0; list-style:none; cursor:pointer; font:500 14px/19.6px var(--font-body); }
.culture-more > summary::-webkit-details-marker { display:none; }
.culture-more[open] > summary > .icon { transform:rotate(180deg); }
.culture-more > div { padding:0 0 16px; }
.culture-more h2 { margin:16px 0 8px; font:600 16px/24px var(--font-body); }
.culture-case-overview { display:grid; grid-template-columns:112px minmax(0,1fr); align-items:start; gap:16px; margin-top:16px; }
.culture-question .culture-case-overview .culture-illustration { width:112px; margin:0; }
.culture-case-overview .culture-image-window { border-radius:8px; }
.culture-lesson-footer.is-question .culture-result { height:88px; margin:0 0 8px; grid-template-columns:32px minmax(0,1fr); gap:8px; }
.culture-lesson-footer.is-question .culture-result-symbol { width:32px; height:32px; }
.culture-result-idle { display:flex !important; align-items:center; justify-content:center; }
.culture-result-idle p { color:var(--ink-soft); }

/* Coach knowledge library shares one disclosure pattern for courses and monthly reviews. */
.culture-header.is-training-home h1 { flex:1; min-width:0; margin:0; font:500 20px/28px var(--font-body); }
.culture-header.is-training-home + .culture-scroll { padding-top:16px; }
.training-hub { display:grid; gap:16px; }
.training-source-error h2 { margin:0 0 8px; font:600 16px/24px var(--font-body); }
.training-source-error .culture-primary { margin-top:16px; }
.training-overview { display:grid; grid-template-columns:minmax(0,1fr) minmax(80px,36%); align-items:center; gap:8px; min-height:124px; padding:16px; border-radius:24px; background:var(--night); color:#fff; }
.training-overview-summary { display:flex; align-items:center; gap:8px; min-width:0; }
.training-progress-art { display:block; justify-self:end; min-width:0; width:100%; max-width:128px; height:92px; object-fit:contain; object-position:right center; pointer-events:none; user-select:none; }
.training-completion { display:flex; align-items:center; flex:none; gap:8px; min-width:0; }
.training-completion-ring { position:relative; display:grid; place-items:center; flex:none; width:48px; height:48px; border-radius:50%; background:conic-gradient(var(--success) var(--completion),#ffffff1a 0); }
.training-completion-ring::before { position:absolute; content:''; inset:4px; border-radius:50%; background:var(--night); }
.training-completion-ring > strong { position:relative; color:#fff; font:500 13px/16.9px var(--font-mono); }
.training-gkn-summary { display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:4px; min-width:0; min-height:48px; padding:0; border:0; background:transparent; color:#fff; cursor:pointer; text-align:left; }
.training-gkn-summary > strong { display:flex; align-items:center; justify-content:flex-start; flex-wrap:wrap; gap:4px; }
.training-gkn-summary > strong > span:not(.icon) { font:500 13px/16.9px var(--font-mono); overflow-wrap:anywhere; }
.training-gkn-summary > strong > .icon { color:var(--gold); }
.training-summary-history { display:flex; align-items:center; gap:4px; color:#ffffffE0; font:500 13px/16.9px var(--font-body); }
.coach-culture-dialog .training-gkn-summary:focus-visible { outline-color:#fff; }
.training-text-action { display:flex; align-items:center; gap:8px; flex:none; min-height:44px; padding:8px 0 8px 8px; border:0; background:transparent; color:var(--ink); cursor:pointer; }
.training-history-label { font:500 14px/19.6px var(--font-body); }
.training-review-zone { padding:16px; border:1px solid var(--hair); border-radius:14px; background:var(--paper-soft); }
.training-review-zone .training-chain { padding-bottom:16px; border-bottom:1px solid var(--hair); }
.training-review-zone .training-month-card { padding-top:16px; }
.training-review-month-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.training-review-month-heading h3 { min-width:0; margin:0; font:500 14px/19.6px var(--font-body); }
.training-review-month-heading > .icon { flex:none; color:var(--ink-soft); }
.training-review-progress { display:flex; align-items:center; gap:8px; margin:16px 0; }
.training-review-progress > span:not(.training-segments) { flex:none; color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.training-review-zone .training-period-switch button { background:var(--paper); }
.training-review-zone .training-period-switch button[aria-pressed="true"] { background:var(--night); }
.training-review-zone .culture-primary.is-secondary { background:var(--paper); }
.training-chain-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.training-chain-heading h2 { margin:0; font:600 16px/24px var(--font-body); }
.training-chain-months { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:16px 0; }
.training-chain-month { display:flex; flex-direction:row; justify-content:center; align-items:center; gap:8px; min-height:44px; padding:8px; border:1px solid var(--hair); border-radius:8px; background:var(--paper-card); color:var(--ink); }
.training-chain-month[type="button"] { cursor:pointer; }
.training-chain-month > span { display:grid; place-items:center; flex:none; width:20px; height:20px; color:var(--ink-soft); }
.training-chain-month.is-complete > span { color:var(--success); }
.training-chain-month.is-current { border-color:var(--night); background:var(--night); color:#fff; }
.training-chain-month.is-current > span { color:#fff; }
.training-chain-month > small { color:inherit; font:500 13px/16.9px var(--font-mono); }
.training-chain-target { display:flex; align-items:center; justify-content:space-between; gap:8px; margin:0; color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.training-chain-target > span:last-child { display:flex; align-items:center; gap:4px; color:var(--ink); font:500 13px/16.9px var(--font-mono); }
.training-chain-target .icon { color:var(--gold); }
.training-library { min-width:0; }
.training-library > h2 { margin:0; font:600 16px/24px var(--font-body); }
.training-item { margin:0; border-bottom:1px solid var(--hair); scroll-margin-top:16px; }
.training-item > summary { display:grid; grid-template-columns:40px minmax(0,1fr) 20px; align-items:center; gap:8px; min-height:72px; padding:16px 0; list-style:none; cursor:pointer; }
.training-item > summary::-webkit-details-marker { display:none; }
.training-item > summary > .icon:last-child { grid-column:3; }
.training-item[open] > summary > .icon:last-child { transform:rotate(180deg); }
.training-item-symbol { display:grid; place-items:center; width:40px; height:40px; border-radius:8px; background:var(--paper-soft); }
.training-item[open] > summary .training-item-symbol { background:var(--night); color:#fff; }
.training-item-copy { min-width:0; }
.training-item-copy > strong { display:block; font:500 14px/19.6px var(--font-body); overflow-wrap:break-word; }
.training-item-progress { display:flex; align-items:center; gap:8px; margin-top:4px; }
.training-item-progress > small { flex:none; color:var(--ink-soft); font:500 13px/16.9px var(--font-mono); }
.training-segments { display:flex; flex:1; gap:4px; min-width:0; }
.training-segments i { flex:1; height:4px; border-radius:4px; background:var(--hair); }
.training-segments i.is-complete { background:var(--success); }
.training-item-award { display:flex; align-items:center; flex:none; gap:4px; white-space:nowrap; }
.training-item-award > span:not(.icon) { color:var(--ink); font:500 13px/16.9px var(--font-mono); }
.training-item-award > .icon { color:var(--gold); }
.training-item-award.is-complete > .icon { color:var(--success); }
.training-month-locked .training-item-award > .icon { color:var(--ink-soft); }
.training-item-body { padding:0 0 16px; }
.training-item-body > .culture-primary { margin-top:16px; }
.training-hub .culture-primary.is-secondary { background:transparent; color:var(--ink); border-color:var(--hair); }
.training-principles-link { display:flex; align-items:center; gap:8px; width:100%; min-height:44px; margin:0 0 8px; padding:8px; border:0; border-radius:8px; background:var(--paper-soft); color:var(--ink); cursor:pointer; text-align:left; font:500 14px/19.6px var(--font-body); }
.training-principles-link > .icon:last-child { margin-left:auto; }
.training-unit-link { display:grid; grid-template-columns:24px minmax(0,1fr) 20px; align-items:center; gap:8px; width:100%; min-height:48px; padding:8px 0; border:0; border-bottom:1px solid var(--hair); background:transparent; color:var(--ink); cursor:pointer; text-align:left; }
.training-unit-link > span:not(.training-unit-number):not(.icon) { font:500 14px/19.6px var(--font-body); }
.training-unit-number { display:grid; place-items:center; width:24px; height:24px; border-radius:4px; background:var(--paper-soft); font:500 13px/16.9px var(--font-mono); }
.training-unit-number.is-complete { color:var(--success); }
.training-unit-link:last-child { border-bottom:0; }
.coach-culture-dialog .training-unlock-note { margin-top:8px; font:400 13px/16.9px var(--font-body); color:var(--ink-soft); }
.training-period-switch { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin-bottom:16px; }
.training-period-switch button { min-height:44px; padding:8px; border:1px solid var(--hair); border-radius:8px; background:transparent; color:var(--ink); cursor:pointer; font:500 13px/16.9px var(--font-body); }
.training-period-switch button[aria-pressed="true"] { border-color:var(--night); background:var(--night); color:#fff; }
.training-hub .training-reward-action { display:grid; grid-template-columns:minmax(0,1fr) auto 20px; gap:8px; text-align:left; }
.training-action-label { min-width:0; }
.training-action-reward { display:inline-flex; align-items:center; gap:4px; padding:4px 8px; border:1px solid #ffffff1a; border-radius:8px; white-space:nowrap; }
.training-action-reward > span:not(.icon) { color:#fff; font:500 13px/16.9px var(--font-mono); }
.training-action-reward .icon { color:var(--gold); font-variation-settings:"FILL" 1; }
.training-monthly-case { margin-top:16px !important; padding:16px; border-radius:8px; background:var(--paper-soft); }
.training-earned-symbol { display:grid; place-items:center; width:48px; height:48px; margin-bottom:16px; border:2px solid var(--success); border-radius:50%; color:var(--success); }
.training-earned-value { margin:24px 0 16px; font:600 32px/38.4px var(--font-display); }
.training-earned-value > span { font:500 14px/19.6px var(--font-body); }
.training-earned ul { padding-left:24px; font:400 14px/19.6px var(--font-body); }
.training-earned li+li { margin-top:8px; }
.training-ledger { margin-top:24px; }
.training-ledger article { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 0; border-bottom:1px solid var(--hair); }
.training-ledger strong,.training-ledger article > span { font:500 14px/19.6px var(--font-body); }
.training-ledger small { display:block; margin-top:4px; color:var(--ink-soft); font:500 13px/16.9px var(--font-body); }
.training-save-error { margin-bottom:16px !important; padding:16px; border-left:2px solid var(--ink); background:var(--paper-soft); }

/* Coach task/birthday grouping 2026-10-20: scoped delta, R04/R08/R09 and hit44. */
.birthday-scope{display:block;margin-top:8px;color:#ffffffe0;font:500 13px/16.9px var(--font-body)}
.birthday-class-group{border-bottom:1px solid var(--hair)}
.birthday-class-toggle{display:flex;align-items:center;gap:8px;width:100%;min-height:64px;padding:16px 0;background:transparent;border:0;text-align:left;color:var(--ink);cursor:pointer}
.birthday-class-toggle>span:first-child{flex:1;min-width:0}
.birthday-class-toggle strong{display:block;font:600 16px/24px var(--font-body)}
.birthday-class-toggle small{display:block;margin-top:4px;color:var(--ink-soft);font:500 13px/16.9px var(--font-body)}
.birthday-class-count{flex:none;text-align:right;white-space:nowrap;font:500 13px/16.9px var(--font-body)}
.birthday-class-count>span{display:block;color:var(--ink-soft)}
.birthday-class-toggle>.icon{flex:none}
.birthday-class-toggle:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.birthday-class-group>div[hidden]{display:none}
.birthday-class-group .birthday-live-row{padding-left:8px;padding-right:8px}
.birthday-class-group .birthday-live-row:last-child{border-bottom:0}
/* End Coach task/birthday grouping 2026-10-20. */
/* Birthday check controls 2026-10-20. */
.birthday-confirm-check,.birthday-text-action{min-height:44px;border:0;background:transparent;display:inline-flex;align-items:center;gap:8px;font:500 13px/16.9px Inter,sans-serif;padding:8px 0;color:var(--ink,#1d1d1f);text-align:left}
.birthday-confirm-check:disabled{opacity:1;color:var(--muted,#6e6e73);cursor:default}.birthday-confirm-check[aria-checked="true"]{color:var(--ink,#1d1d1f)}
.birthday-live-actions{gap:16px;flex-wrap:wrap}.birthday-text-action{text-decoration:underline}.birthday-confirm-check:focus-visible,.birthday-text-action:focus-visible{outline:2px solid currentColor;outline-offset:2px}
/* End Birthday check controls 2026-10-20. */

/* Birthday shared proof 2026-10-22. */
.birthday-selection-bar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 0;background:var(--paper-card,#fff);border-bottom:1px solid var(--hair)}
.birthday-selection-bar>.pill-action{min-height:44px;gap:8px;flex:1;justify-content:center;font:500 13px/16.9px var(--font-body)}
.birthday-confirm-names{margin:0;padding-left:20px;display:grid;gap:8px;font:500 14px/19.6px var(--font-body)}
.birthday-photo-picker{position:relative;display:block;font:500 13px/16.9px var(--font-body);cursor:pointer}
.birthday-photo-picker input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;z-index:1}.birthday-photo-picker [data-preview]{display:flex;align-items:center;justify-content:center;gap:8px;min-height:64px;border:1px solid var(--hair);border-radius:12px}.birthday-photo-picker:focus-within{outline:2px solid var(--ink);outline-offset:2px;border-radius:12px}
.birthday-dialog form{margin-top:16px}
/* End Birthday shared proof 2026-10-22. */

.approval-actions .attendance-complete { display: flex; align-items: center; justify-content: center; gap: 8px; opacity: 1; cursor: default; }

/* Birthday badge sits on the avatar corner, clear of the student name (audit 04/11 U1). */
.person-row > .birthday-mark { left: 22px; }
/* Loading is not an error (Minh 05/11): neutral icon; red only for a failed read. */
.source-feedback[role="status"] .source-feedback-heading .icon {color:var(--ink-soft)}
.value-skeleton {display:inline-block;width:3.2em;max-width:100%;height:.8em;border-radius:6px;background:var(--hair);vertical-align:middle;animation:value-skeleton-pulse 1.4s ease-in-out infinite}
.task-metric .value-skeleton,.gkn-value .value-skeleton,.clock-number .value-skeleton {width:2.4em;height:.7em}
.me-refresh-status,.pt-refresh-status {margin:0 4px 8px;color:var(--ink-soft);font:400 13px/18px var(--font-body)}
@keyframes value-skeleton-pulse {50%{opacity:.45}}
@media (prefers-reduced-motion: reduce) {.value-skeleton{animation:none}}

/* coach-ui-polish-20261107 start — consistency and loading pass (Minh 07/11). Appended to the live CSS by tools/build-coach-ui-polish-release.mjs. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* Lists loading: rows shaped like the final list instead of a "loading" card. */
.source-feedback.list-skeleton{gap:0;padding:0 16px}
.skeleton-row{display:flex;align-items:center;gap:16px;min-height:72px;border-bottom:1px solid var(--hair)}
.skeleton-row:last-child{border-bottom:0}
.skeleton-avatar{flex:none;width:40px;height:40px;border-radius:12px;background:var(--hair);animation:value-skeleton-pulse 1.4s ease-in-out infinite}
.skeleton-row>span{flex:1;min-width:0;display:grid;gap:8px}
.skeleton-row .value-skeleton{display:block;width:64%;height:12px}
.skeleton-row .value-skeleton.short{width:36%}
.source-feedback.pt-source-state{border-color:var(--hair)}
.source-feedback.task-source-state .source-feedback-heading{flex-direction:row;align-items:center;gap:8px}
.source-feedback[role=alert] .source-feedback-heading .icon{color:var(--red)}
.source-feedback>p{margin:0;color:var(--ink-soft);font:400 13px/16.9px var(--font-body)}
@media (prefers-reduced-motion: reduce){.skeleton-avatar{animation:none}}
/* Placeholders stay visible on the dark heroes. */
.pt-hero .value-skeleton,.task-hero .value-skeleton,.calendar-hero .value-skeleton,.session-hero.dark .value-skeleton,.aggregate-hero .value-skeleton,.obligation-panel .value-skeleton{background:#ffffff33}
/* Empty day: one calm card, section-size title. */
.live-empty{display:grid;gap:4px;padding:24px 16px}
.live-empty h2{margin:0;font:600 16px/24px var(--font-body);color:var(--ink)}
.live-empty>.icon{margin-bottom:8px;color:var(--ink-soft)}
/* Today: Training and event rows are cards, like the class list. */
.section-block>.session-card{display:grid;gap:4px;padding:16px;border:1px solid var(--hair);border-radius:16px;background:var(--paper-card)}
.section-block>.session-card+.session-card{margin-top:8px}
.section-block>.session-card>strong{font:600 16px/24px var(--font-body)}
.section-block>.session-card>p{margin:0;color:var(--ink-soft);font:500 13px/16.9px var(--font-body)}
.section-block>.session-card>.pill-action{justify-self:start;margin-top:8px}
/* Training detail: the action keeps its whole label; metadata at the 13px floor. */
.review-person-row{grid-template-columns:minmax(0,1fr) auto}
.review-person-row .pill-action{width:auto;min-width:96px;max-width:100%;padding:0 16px}
.review-person-info span{font-size:13px}
/* Bottom nav: the PT glyph uses the same ink as the other tabs. */
.nav-pt-icon{filter:brightness(0);opacity:.9}
/* Tasks hero: the dark artwork merges into the hero instead of showing a square. */
.task-hero-top img{mix-blend-mode:lighten}
/* PT detail: held sessions are plain list rows. */
.pt-reservation-row{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:56px;padding:8px 0;border:0;border-bottom:1px solid var(--hair);background:none;color:var(--ink);text-align:left;font:500 14px/19.6px var(--font-body);cursor:pointer}
.pt-reservation-row>span{min-width:0}
.pt-reservation-row br{display:none}
.pt-reservation-row .pt-session-meta{display:block;margin-top:2px}
.pt-reservation-row>.icon{flex:none;color:var(--ink-soft)}
/* GKN ladder: end labels stay inside the card. */
.gkn-milestones{left:12px;right:12px}
.gkn-milestones span:first-child{text-align:left}
.gkn-milestones span:last-child{text-align:right}
/* Task rows: deadline on one line ("05/11 15:00"). */
.task-facts .task-deadline time{display:inline-flex;align-items:baseline;gap:4px}
.task-facts .task-deadline time small{font:inherit}
/* No painted home-indicator bar (UI contract G04: the live app draws no fake home bar). */
#app .safe-area::after,#app .auth-phone::after{display:none}
/* coach-ui-polish-20261107 end */
/* coach-ui-polish-3-20261107 start: Minh 07/11 decisions (no-class line, Training ⓘ). */
.today-no-class-line{display:flex;align-items:center;gap:8px;margin:0;min-height:24px;color:var(--ink-soft);font:500 14px/20px var(--font-body)}
.today-no-class-line .icon{color:var(--ink-muted)}
.training-detail-hero{position:relative}
.training-detail-hero .detail-title-line{padding-right:36px}
.detail-info{margin-top:-12px}
.detail-info>summary{position:absolute;top:10px;right:10px;display:grid;place-items:center;width:36px;height:36px;border-radius:18px;color:#ffffffcc;cursor:pointer;list-style:none}
.detail-info>summary::-webkit-details-marker{display:none}
.detail-info>summary:focus-visible{outline:2px solid #fff;outline-offset:0}
.detail-info[open]>summary{color:#fff;background:#ffffff1f}
.detail-info[open]{margin-top:0}
.detail-info>.inline-detail{margin:0;padding:0;font:500 13px/18px var(--font-body)}
/* coach-ui-polish-3-20261107 end */
/* coach-ui-polish-4-20261107 start: smoothness and remaining-screen pass (07/11). */
/* Birthday mark sits in the free space under the avatar: it no longer covers the initials or the name. */
.person-row > .birthday-mark{left:8px;top:48px;width:40px;height:40px}
.person-row > .birthday-mark > .icon{width:22px;height:22px;box-shadow:0 0 0 2px var(--paper-soft)}
.person-row:has(> .birthday-mark){min-height:92px}
/* Personal pages draw no fake home bar either (UI contract G04). */
#app .personal-phone::after{display:none}
/* Dạy thay: Từ chối is the secondary action. */
.pill-action[data-cover-action="reject"]{background:var(--paper-card);color:var(--ink);border:1px solid var(--hair)}
/* Khôi phục tài khoản: same field style for the reason box; the confirmation checkbox keeps its label beside it. */
#manager-recovery .personal-field textarea{width:100%;min-height:88px;border:1px solid var(--hair);border-radius:8px;padding:12px 16px;font:400 14px/19.6px var(--font-body);color:var(--ink);background:var(--paper-card);box-sizing:border-box;resize:vertical}
#manager-recovery > label:not(.personal-field){display:flex;align-items:flex-start;gap:8px;font:500 14px/20px var(--font-body);color:var(--ink)}
#manager-recovery > label:not(.personal-field) > input{flex:none;width:20px;height:20px;margin:0}
.personal-screen > h1 + p{font:400 14px/20px var(--font-body);color:var(--ink-soft)}
/* Tôi · Lớp phụ trách: the class name wraps to two lines instead of cutting the weekday. */
.me-class-toggle{grid-template-rows:auto auto;row-gap:8px;min-height:64px}
.me-class-name{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.me-class{min-height:0}
/* Empty states use one card style: Sự kiện lớp matches Hôm nay and Nhiệm vụ; the Nhiệm vụ empty card no longer reserves 184 px. */
.class-events-empty{margin:0;padding:16px;border:1px solid var(--hair);border-radius:16px;background:var(--paper-card);color:var(--ink-soft);font:500 14px/20px var(--font-body)}
.task-empty-state{min-height:0}
/* Việc đã giao · Điểm danh học viên: app chevron instead of the browser triangle. */
[data-live-tasks] details.section-block>summary{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:48px;list-style:none;cursor:pointer;font:600 16px/24px var(--font-body)}
[data-live-tasks] details.section-block>summary::-webkit-details-marker{display:none}
[data-live-tasks] details.section-block>summary::after{content:"expand_more";font:500 20px/20px "Material Symbols Rounded";color:var(--ink-soft)}
[data-live-tasks] details.section-block[open]>summary::after{transform:rotate(180deg)}
/* Count beside an obligation title reads as text; digits stay aligned. */
.obligation-heading>strong{font:500 13px/16.9px var(--font-body);font-variant-numeric:tabular-nums;color:var(--ink-soft)}
/* coach-ui-polish-4-20261107 end */
/* coach-ui-polish-5-20261107 start: Minh round 4 (07/11). */
.roster-empty-line{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;padding:12px 48px 12px 14px;border-radius:12px;background:#f5f5f7;color:var(--ink-soft);font:500 14px/20px var(--font-body)}
.roster-empty-line>.icon{flex:none}
.roster-empty-line>span:not(.icon){flex:1;min-width:0;color:var(--ink)}
.roster-empty-info>summary{position:absolute;top:4px;right:4px;display:grid;place-items:center;width:40px;height:40px;border-radius:20px;color:var(--ink-soft);cursor:pointer;list-style:none}
.roster-empty-info>summary::-webkit-details-marker{display:none}
.roster-empty-info>summary:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}
.roster-empty-info[open]{flex-basis:100%}
.roster-empty-info[open]>summary{color:var(--ink);background:#0000000f}
.roster-empty-info>p{margin:0;font:400 13px/18px var(--font-body);color:var(--ink-soft)}
/* Nhiệm vụ with 100+ rows: rows below the fold skip layout and paint until scrolled near (tab switch 142 → 58–80 ms at 4× CPU). */
.task-group>.task-row,.task-group>.management-month{content-visibility:auto;contain-intrinsic-size:auto 96px}
/* coach-ui-polish-5-20261107 end */
/* coach-ui-polish-6-20261107 start: closed month (runtime-sync release 7). */
.month-locked-line{display:flex;align-items:flex-start;gap:8px;margin:0 0 12px;padding:12px 14px;border-radius:12px;background:#f5f5f7;color:var(--ink-soft);font:500 14px/20px var(--font-body)}
.month-locked-line>.icon{flex:none;color:var(--ink)}
.month-locked-line strong{color:var(--ink);margin-right:4px}
/* coach-ui-polish-6-20261107 end */
/* coach-ui-polish-7-20261107 start: Chốt tháng sheet and closed task rows (runtime-sync release 8). */
.final-task-row .task-leading{color:var(--ink-soft)}
.final-task-row .task-progress{color:var(--ink-soft)}
.month-final-line{display:flex;align-items:flex-start;gap:8px;margin:0 0 12px;font:500 14px/20px var(--font-body);color:var(--ink)}
.month-final-line>.icon{flex:none}
.month-final-notice{margin:0 0 12px;padding:10px 12px;border-radius:10px;background:#f5f5f7;font:500 13px/18px var(--font-body);color:var(--ink)}
.month-final-blockers{list-style:none;margin:0 0 16px;padding:0;display:grid;gap:8px;max-height:46vh;overflow:auto}
.month-final-blockers a,.month-final-blockers li>div{display:flex;align-items:center;gap:10px;min-height:48px;padding:8px 12px;border-radius:12px;background:#f5f5f7;color:var(--ink);text-decoration:none}
.month-final-blockers .icon{flex:none}
.month-final-blockers span:not(.icon){flex:1;min-width:0;display:grid;text-align:left}
.month-final-row{width:100%;border:0;background:none;font:inherit;color:inherit;text-align:left}
.month-final-blockers small{color:var(--ink-soft);font:400 13px/18px var(--font-body)}
.month-final-modal .primary-cta[disabled]{opacity:.45}
/* coach-ui-polish-7-20261107 end */
/* coach-ui-polish-8-20261107 start: locked month is a tag, not a status (Minh Round 4f). */
.locked-month-row .task-leading{color:var(--ink-soft)}
.locked-month-tag{justify-self:start;display:inline-flex;align-items:center;margin-top:2px;padding:1px 8px;border-radius:999px;background:#f0f0f2;color:var(--ink-soft);font:500 12px/18px var(--font-body)}
/* coach-ui-polish-8-20261107 end */
/* coach-ui-polish-9-20261107 start: the lock alone marks a locked month (Minh "biểu tượng ổ khóa là dc rồi"). */
.locked-month-tag{display:none}
/* coach-ui-polish-9-20261107 end */
/* coach-ui-polish-10-20261107 start: birthday status derived from attendance (Minh Round 5). */
.birthday-derived{display:inline-flex;align-items:center;gap:4px;margin-left:8px;color:var(--ink-soft);font:500 12px/16px var(--font-body)}
.birthday-derived.to-organize{color:var(--ink)}
.birthday-derived .icon{flex:none}
.birthday-mark.not-attending{color:var(--ink-soft);opacity:.8}
.birthday-not-attending .birthday-confirm-check{color:var(--ink-soft)}
/* coach-ui-polish-10-20261107 end */
/* coach-ui-polish-11-20261107 start: birthdays carried to the next month (Minh Round 5b). */
.birthday-carried{display:inline-flex;align-items:center;gap:3px;margin-left:8px;color:var(--ink-soft);font:500 12px/16px var(--font-body)}
.birthday-derived.carried{color:var(--ink-soft)}
.month-final-carry{margin:0 0 16px}
.month-final-carry h3{display:flex;align-items:center;gap:8px;margin:0 0 8px;font:600 14px/20px var(--font-body);color:var(--ink)}
.month-final-carry ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.month-final-carry li{display:flex;justify-content:space-between;gap:8px;padding:6px 12px;border-radius:10px;background:#f5f5f7;font:500 13px/18px var(--font-body);color:var(--ink)}
.month-final-carry small{color:var(--ink-soft);font:400 12px/18px var(--font-body)}
/* coach-ui-polish-11-20261107 end */
/* coach-ui-polish-12-20261107 start: in-app warnings for missing data (Minh Round 6). */
.task-warnings,.attendance-warnings{display:grid;gap:4px;margin-top:4px}
.attendance-warnings{margin:0 0 12px;padding:10px 12px;border-radius:12px;background:#fff4e5}
.task-warning{display:flex;align-items:flex-start;gap:6px;color:#8a4b00;font:500 13px/18px var(--font-body)}
.task-warning .icon{flex:none;color:#d97706}
.task-warning-count{display:inline-flex;align-items:center;gap:4px;color:#8a4b00;font:500 12px/16px var(--font-body)}
.task-warning-count .icon{color:#d97706}
.month-final-warnings{margin:0 0 16px}
.month-final-warnings h3{display:flex;align-items:center;gap:8px;margin:0 0 8px;font:600 14px/20px var(--font-body);color:#8a4b00}
.month-final-warnings h3 .icon{color:#d97706}
.month-final-warnings ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.month-final-warnings li{padding:8px 12px;border-radius:10px;background:#fff4e5;color:var(--ink);font:500 13px/18px var(--font-body)}
.month-final-warnings a{color:inherit}
/* coach-ui-polish-12-20261107 end */
/* coach-inline-tasks-20261109 start */
.task-source-block { min-width:0; }
.task-source-block > .task-row { width:100%; text-align:left; }
.task-source-block > button.source-task-row { appearance:none; -webkit-appearance:none; border:0; border-bottom:1px solid var(--hair); background:transparent; color:inherit; font:inherit; cursor:pointer; }
.task-inline-panel { margin:0 0 8px 18px; padding:0 12px 8px; border-inline-start:1px solid var(--hair); min-width:0; }
.task-inline-panel[hidden] { display:none; }
.task-inline-item { display:grid; justify-items:start; gap:4px; padding:12px 0; border-bottom:1px solid var(--hair); }
.task-inline-item:last-child { border-bottom:0; }
.task-inline-item > small { color:var(--ink-soft); overflow-wrap:anywhere; }
.task-inline-item > details { font-size:13px; overflow-wrap:anywhere; }
.task-inline-action { padding:0 12px 8px 36px; }
.task-inline-link { display:inline-flex; align-items:center; gap:6px; min-height:44px; font-weight:600; color:var(--ink); }
.task-inline-panel .review-person-row { width:100%; padding:8px 0; }
.task-inline-panel .review-person-info { min-width:0; }
.task-inline-panel .review-person-row .pill-action { max-width:55%; white-space:normal; }
.task-save-notice { margin:0 0 8px; color:var(--ink-soft); }
.month-final-blockers .task-blocker-link { display:flex; align-items:center; gap:8px; width:100%; text-align:left; padding:8px 0; border:0; background:none; color:var(--ink); }
.task-blocker-link > span:nth-child(2) { flex:1; }
.birthday-task-panel { display:grid; gap:8px; }
.birthday-task-panel .birthday-live-row { gap:8px; padding-block:8px; }
.birthday-task-panel .birthday-live-actions { margin-top:6px; }
.birthday-no-class h3 { margin:8px 0 0; font-size:15px; }
/* coach-inline-tasks-20261109 end */
/* coach-inline-task-scroll-20261109 start */
/* Replacing an expanded group must not temporarily collapse its scroll area to the row estimate. */
.task-group > .management-month.is-expanded { content-visibility:visible; }
/* coach-inline-task-scroll-20261109 end */
/* coach-task-visual-20261109 start */
.task-group > .task-source-block:not(.is-expanded) { content-visibility:auto; contain-intrinsic-size:auto 96px; }
.task-connected > .task-row { grid-template-columns:minmax(0,1fr) 44px; padding:8px 12px; min-height:72px; }
.task-connected > .task-row > .task-leading { grid-area:1 / 2; }
.task-connected-body { grid-area:1 / 1; min-width:0; }
.task-connected-body > .task-open { display:flex; align-items:center; justify-content:space-between; gap:8px; width:100%; min-height:28px; padding:4px 0; color:var(--ink); }
.task-connected-body > button.task-open { min-height:44px; }
.task-connected-body > .task-open .icon { flex:none; margin:0; }
.task-connected-body > .task-open strong { font:600 15px/20px var(--font-body); }
.task-source-block > div.source-task-row > .task-inline-link { grid-column:3; justify-self:end; }
.task-source-block > div.source-task-row { grid-template-columns:28px minmax(0,1fr) auto; }
.task-source-block > div.source-task-row > .task-inline-link { padding-inline:4px; font-size:13px; white-space:nowrap; }
.task-metadata { display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px; color:var(--ink-soft); font:500 13px/18px var(--font-body); }
.task-metadata > span { display:inline-flex; align-items:center; gap:4px; white-space:nowrap; }
.task-metadata .icon { color:var(--ink-muted); }
.task-open > .task-metadata, .task-open > .task-metadata > span { gap:4px 8px; margin-top:4px; font:500 13px/18px var(--font-body); }
.task-icon-action { display:inline-grid; place-items:center; width:44px; min-width:44px; height:44px; padding:0; border:0; border-radius:8px; background:transparent; color:var(--ink); cursor:pointer; }
.task-icon-action[aria-disabled="true"] { cursor:wait; }
.task-icon-action.is-complete, .task-row[data-work-state] .task-leading .task-icon-action.is-complete, .task-row[data-work-state] .task-leading .task-icon-action.is-complete .icon, .task-work-mark.is-complete, .task-row[data-work-state] .task-leading .task-work-mark.is-complete .icon { color:var(--success) !important; }
.task-icon-action:focus-visible, .task-edit-fact:focus-visible, .task-warning-count:focus-visible { outline:2px solid var(--ink); outline-offset:2px; }
.task-work-mark { display:inline-grid; place-items:center; flex:none; min-width:24px; min-height:24px; color:var(--ink-muted); }
.task-work-mark.is-pending { color:var(--warning); }
.task-work-mark.is-needed { color:var(--red); }
.task-spin { animation:task-save-spin .85s linear infinite; }
@keyframes task-save-spin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion:reduce) { .task-spin { animation:none; } }
.task-item-head, .task-training-person { display:grid; grid-template-columns:minmax(0,1fr) 44px; align-items:center; gap:8px; width:100%; }
.task-item-head > :nth-child(2) { justify-self:center; }
.task-item-head strong { display:block; overflow-wrap:anywhere; }
.task-item-head .task-metadata { margin-top:4px; }
.task-training-person { min-height:44px; border-bottom:1px solid var(--hair); }
.task-training-person:last-child { border-bottom:0; }
.task-person-line { display:flex; justify-content:space-between; align-items:center; min-width:0; gap:8px; }
.task-person { display:inline-flex; align-items:center; gap:6px; min-width:0; color:var(--ink-soft); font:500 13px/18px var(--font-body); }
.task-person > span:last-child { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.task-person > .person-avatar { width:24px; height:24px; min-width:24px; flex:none; font-size:10px; }
.task-team-inline { display:flex; flex-wrap:wrap; align-items:center; gap:6px 8px; min-width:0; }
.task-team-inline > .task-person { max-width:132px; }
.task-team-count { flex:none; color:var(--ink-soft); font:500 13px/18px var(--font-mono); }
.task-edit-facts { display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px; }
.task-edit-fact { display:inline-flex; align-items:center; min-width:0; min-height:44px; padding:0 4px; border:0; border-radius:8px; background:transparent; color:inherit; text-align:left; cursor:pointer; }
.task-edit-fact:hover { background:var(--paper-soft); }
.task-owner-progress > div { display:flex; justify-content:space-between; align-items:center; gap:8px; padding:4px 0; }
.task-description { margin:8px 0; color:var(--ink-soft); white-space:pre-wrap; overflow-wrap:anywhere; }
.task-warning-disclosure { margin:0 8px 4px; min-width:0; }
.task-warning-disclosure > summary, .birthday-task-panel details > summary.task-warning-count { min-height:44px; padding:0 4px; cursor:pointer; list-style:none; }
.task-warning-disclosure > summary::-webkit-details-marker, .birthday-task-panel details > summary.task-warning-count::-webkit-details-marker { display:none; }
.task-warning-disclosure > .task-warnings { margin:0 0 8px 4px; }
.task-row-feedback { grid-column:1 / -1; margin:4px 12px 8px; color:var(--ink-soft); font:500 13px/18px var(--font-body); overflow-wrap:anywhere; }
.task-row-feedback[role="alert"] > .icon { margin-inline-end:4px; color:var(--red); }
.task-row-feedback.is-announcement { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }
.inline-task-editor { margin:0 8px 4px; }
.inline-task-editor-actions { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.inline-task-editor-actions > button { min-height:44px; }
.task-connected .task-inline-panel .case-fields { padding:8px 0; }
.task-unresolved-source { display:block; margin-bottom:8px; color:var(--ink-soft); }
.task-award-item .task-person { display:flex; margin-bottom:4px; }
.task-award-item .task-item-head small { display:block; margin-top:4px; color:var(--ink-soft); }
.task-award-panel button.task-inline-link { border:0; background:transparent; }
.task-award-panel .task-row-feedback { margin-inline:0; }
.birthday-selection-bar > .birthday-camera { flex:0 0 auto; }
.birthday-thumbnail { width:32px; height:32px; object-fit:cover; border-radius:6px; }
.birthday-inline-review { display:grid; gap:8px; padding:8px 0; }
.birthday-inline-review p, .birthday-inline-review ul { margin-block:0; }
.birthday-inline-review .birthday-proof { max-height:220px; }
.birthday-mark.selected { color:var(--ink); }
/* coach-task-visual-20261109 end */
/* coach-task-visual-warning-20261109 start */
.task-warning-disclosure .task-warning,
.task-warning-disclosure > summary.task-warning-count,
.birthday-task-panel details > summary.task-warning-count { color:var(--ink-soft); }
.task-warning-disclosure .task-warning a { color:inherit; }
.task-warning-disclosure .task-warning .icon,
.task-warning-disclosure > summary.task-warning-count .icon,
.birthday-task-panel details > summary.task-warning-count .icon { color:var(--warning); }
/* coach-task-visual-warning-20261109 end */
/* coach-task-compact-20261109 start */
.task-source-block > .task-compact-source,
.management-month > .management-month-toggle {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px;
  align-items:center;
  min-height:56px;
  padding:6px 12px;
  text-align:left;
}
.management-month > .management-month-toggle { background:var(--paper-soft); }
.task-compact-source .task-open strong,
.task-compact-open strong,
.task-connected-body > .task-open strong { display:block; min-width:0; overflow-wrap:anywhere; }
.task-compact-trailing { display:flex; align-items:center; gap:8px; }
.task-compact-warning { display:inline-flex; align-items:center; flex:none; gap:4px; color:var(--ink-soft); font:500 13px/18px var(--font-mono); }
.task-compact-warning .icon { color:var(--warning); }
.task-connected-body > .task-open .task-compact-warning { margin-inline-start:auto; }
.management-month-children { margin-inline-start:0; border:0; padding-inline-start:0; }
.task-compact-reasons { margin:4px 0 8px; padding-inline-start:18px; color:var(--ink-soft); overflow-wrap:anywhere; }
.task-compact-reasons > li { padding-block:2px; }
.task-inline-panel.task-compact-source-body { margin:0; padding:0 12px 8px; border:0; }
.task-compact-session { min-width:0; border-top:1px solid var(--hair); }
.task-compact-session-row { display:grid; grid-template-columns:minmax(0,1fr) 44px; align-items:center; gap:8px; }
.task-compact-open { display:flex; align-items:center; justify-content:space-between; gap:8px; width:100%; min-height:44px; padding:4px 0; border:0; border-radius:8px; background:transparent; color:var(--ink); text-align:left; cursor:pointer; }
.task-compact-open > span:first-child { min-width:0; flex:1; }
.task-compact-action { display:grid; place-items:center; min-height:44px; }
.task-compact-session-body { min-width:0; padding:2px 0 8px; }
.task-compact-session-body > p, .task-compact-source-body > p { margin:6px 0; color:var(--ink-soft); }
.task-compact-open:focus-visible, .task-compact-source:focus-visible { outline:2px solid var(--ink); outline-offset:-2px; }
.task-close-controls { display:flex; align-items:center; flex-wrap:wrap; gap:8px; padding-block:8px; color:var(--ink-soft); }
.task-close-controls button { min-height:44px; }
.task-close-result { color:var(--ink-soft); }
.task-schedule-editor input, .task-schedule-editor select, .task-schedule-editor textarea { min-height:44px; }
.task-schedule-editor fieldset { display:grid; gap:8px; margin:0; padding:0; border:0; min-inline-size:0; }
.task-inline-result, .personal-work-screen > .task-compact-session { margin-inline:12px; }
.task-training-person .task-person > span:last-child { overflow:visible; white-space:normal; overflow-wrap:anywhere; }
.task-compact-session-body [data-live-attendance] .attendance-screen { margin-inline:0; }
/* coach-task-compact-20261109 end */
/* coach-task-compact-groups-20261109 start */
.task-compact-source > .task-open,
.management-month-toggle > .task-open {
  min-height:0;
  padding:0;
}
.task-compact-source > .task-open > .task-compact-summary,
.management-month-toggle > .task-open > .task-compact-summary {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:2px 8px;
  margin-top:2px;
  color:var(--ink-soft);
  font:500 13px/18px var(--font-body);
}
.task-compact-summary span { margin:0; }
.task-compact-summary span:not(.icon) { font:inherit; }
.task-compact-summary .icon.size-16 { font-size:16px; }
.task-compact-summary > .task-progress { display:inline; overflow-wrap:anywhere; }
.task-compact-summary > .task-metadata,
.task-compact-summary > .task-facts { display:inline-flex; flex-wrap:wrap; gap:2px 8px; }
.task-compact-summary .task-metadata > span,
.task-compact-summary .task-facts > span { display:inline-flex; align-items:center; gap:4px; }
/* coach-task-compact-groups-20261109 end */
/* coach-task-group-labels-20261109 start */
.task-training-topic { min-width:0; }
.task-training-topic > h3 {
  margin:8px 0 4px;
  color:var(--ink-soft);
  font:600 13px/18px var(--font-body);
  overflow-wrap:anywhere;
}
.task-group > .task-training-topic > .task-source-block:not(.is-expanded) { content-visibility:auto; contain-intrinsic-size:auto 56px; }
.task-compact-summary > .task-compact-pending { display:inline-flex; align-items:center; gap:4px; }
.task-compact-pending > .icon { color:var(--warning); }
.task-compact-open > .task-progress,
.task-compact-trailing > .task-progress { color:var(--ink-soft); font:500 13px/18px var(--font-mono); }
[data-live-tasks] details.task-attendance-review > summary::after { content:none; }
.task-attendance-review > summary > .icon { color:var(--ink-soft); }
.task-attendance-review[open] > summary > .icon { transform:rotate(180deg); }
/* coach-task-group-labels-20261109 end */
/* coach-task-metadata-20261109 start */
.task-field-grid { display:grid; min-width:0; gap:4px; color:var(--ink-soft); font:500 13px/17px var(--font-body); text-align:start; }
.task-field-pair { display:grid; grid-template-columns:minmax(0,1fr) minmax(106px,44%); align-items:start; gap:8px; }
.task-field-owner,.task-field-places { grid-column:1; grid-row:1; min-width:0; }
.task-field-deadline,.task-field-session { grid-column:2; grid-row:1; min-width:0; }
.task-field { display:flex; align-items:flex-start; gap:4px; min-width:0; }
.task-field > .icon { flex:none; color:var(--ink-muted); }
.task-field-value { min-width:0; overflow-wrap:anywhere; }
.task-field-value time,.task-field-clock { font-variant-numeric:tabular-nums; }
.task-field-clock { white-space:nowrap; }
.task-field-grid .task-edit-fact { justify-self:stretch; padding-inline:0 4px; }
.task-field-places { display:grid; gap:2px; }
.task-inline-item > .task-field-grid { justify-self:stretch; }
.task-compact-source > .task-field-grid,
.task-compact-session-row > .task-field-grid,
.task-connected > .task-row > .task-field-grid { grid-column:1/-1; }
.task-source-block > .task-compact-source,
.task-compact-session-row,
.task-connected > .task-row { row-gap:4px; }
.task-compact-session-row > .task-field-grid { padding-bottom:6px; }
.task-connected-body > .task-open .task-title-signals { display:inline-flex; flex:none; gap:8px; margin:0; }
.task-title-signals > span { margin:0; }
.task-title-signals > .task-progress,.task-title-signals > .task-team-count { color:var(--ink-soft); font:500 13px/18px var(--font-mono); }
.task-title-signals > .task-progress > span,.task-title-signals > .task-team-count > span { margin:0; font:inherit; }
.task-detail-hero .task-field-grid,.task-detail-hero .task-field > .icon { color:var(--paper-soft); }
.task-detail-hero .task-icon-action { color:var(--paper-card); }
.task-detail-hero .task-icon-action:focus-visible { outline-color:var(--paper-card); }
.task-detail-heading { display:flex; align-items:flex-start; gap:8px; min-width:0; }
.task-detail-heading > .task-work-mark { flex:none; }
.task-detail-context { display:flex; flex-wrap:wrap; gap:4px 12px; margin:0; color:var(--paper-soft); font:500 13px/17px var(--font-body); }
.task-detail-context > span { display:inline-flex; align-items:center; gap:4px; }
.task-detail-chain-item { border-top:1px solid var(--hair); padding-block:8px; }
.task-detail-chain-item > p { margin:4px 0; }
.task-attendance-record > summary,
.birthday-task-panel .birthday-class-toggle { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:4px 8px; min-height:44px; }
.task-attendance-record > summary { list-style:none; cursor:pointer; }
.task-attendance-record > summary::-webkit-details-marker { display:none; }
.task-attendance-record[open] > summary > .icon { transform:rotate(180deg); }
.birthday-task-panel .birthday-class-toggle { grid-template-columns:minmax(0,1fr) auto 20px; min-height:56px; padding-block:8px; }
.task-attendance-record > summary > .task-field-grid,
.birthday-task-panel .birthday-class-toggle > .task-field-grid { grid-column:1/-1; }
.birthday-task-panel .birthday-class-toggle > .birthday-schedule-note { grid-column:1/-1; margin:0; }
.session-hero.session-compact.attendance-compact.task-attendance-context { min-height:148px; }
.month-final-carry li { display:grid; grid-template-columns:minmax(0,1fr); gap:4px; }
.month-final-carry li > strong { overflow-wrap:anywhere; }
.birthday-task-panel .task-field-grid,.task-award-item .task-field-grid { margin-top:4px; }
/* coach-task-metadata-20261109 end */
/* coach-task-training-reasons-20261109 start */
.task-compact-open:focus-visible { outline-offset:1px; }
/* coach-task-training-reasons-20261109 end */
/* coach-task-queue-count-20261109 start */
.task-hero .task-metric-with-icon { display:inline-flex; align-items:center; gap:8px; }
.task-metric-with-icon > .icon { flex:none; }
.task-compact-summary > .task-summary-count { display:inline-flex; align-items:center; gap:4px; }
.management-month-toggle .task-summary-count + span:not(.task-compact-pending)::before {
  content:"";
  display:inline-block;
  width:3px;
  height:3px;
  margin-inline-end:6px;
  border-radius:50%;
  background:currentColor;
  vertical-align:middle;
}
/* coach-task-queue-count-20261109 end */
/* coach-task-list-density-20261110 start */
.task-field-compact,
.source-task-row .task-open > .task-field-compact {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:2px 8px;
  min-width:0;
  margin:0;
  color:var(--ink-soft);
  font:500 13px/17px var(--font-body);
}
.task-open .task-field-compact span { margin:0; font-size:inherit; gap:4px; }
.task-field-compact .task-field { align-items:center; }
.task-field-compact .task-field-value,
.task-field-compact .task-field-clock { display:inline; }
.task-compact-source .task-field-compact .task-field-deadline .task-field-value > span { display:inline; }
.task-field-compact .icon.size-16 { font-size:16px; }
.task-field-compact .task-edit-fact { padding-inline:0 4px; }
.task-connected > .task-row > .task-field-compact { grid-column:1/-1; }
.task-connected > .task-row { padding-block:4px; row-gap:2px; }
.task-compact-session-body > .task-field-compact,
.task-compact-source-body > .task-field-compact { margin-bottom:4px; }
/* coach-task-list-density-20261110 end */
/* coach-task-training-close-20261110 start */
.task-close-controls > .pill-action[aria-disabled="true"]:not([aria-busy="true"]) { background:var(--paper-soft); color:var(--ink-muted); cursor:default; }
/* coach-task-training-close-20261110 end */

.task-training-person.has-dual-actions { grid-template-columns:minmax(0,1fr) 88px; }
.task-training-actions { display:flex; align-items:center; justify-content:flex-end; min-height:44px; }
.task-training-correction-panel { grid-column:1/-1; width:100%; padding:0 0 8px; }
.task-training-person > .task-row-feedback { grid-column:1/-1; }

.month-final-blockers li>.month-final-blocker-items{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;gap:2px;min-height:0;padding:4px 12px 8px}
.month-final-blocker-items>a,.month-final-blocker-items>button{width:100%;min-width:0;white-space:normal;overflow-wrap:anywhere;text-align:left}
.month-final-blocker-items>a{min-height:40px;padding:8px 0;background:none}
/* coach-task-quiet-controls-20261110 start */
.task-training-actions { justify-content:center; }
.task-training-status.is-pending { color:var(--warning); }
.birthday-task-panel .birthday-live-row { display:block; }
.birthday-task-head,.birthday-no-class-item > summary { display:grid; grid-template-columns:minmax(0,1fr) 44px; align-items:center; gap:8px; width:100%; min-height:44px; }
.birthday-task-toggle,.birthday-no-class-item > summary { padding:0; border:0; background:transparent; color:var(--ink); text-align:left; cursor:pointer; }
.birthday-task-toggle { display:block; width:100%; min-height:44px; }
.birthday-task-toggle:focus-visible,.birthday-task-status:focus-visible,.birthday-no-class-item > summary:focus-visible { outline:2px solid var(--ink); outline-offset:2px; }
.birthday-task-summary,.birthday-no-class-item > summary > span:first-child { display:block; min-width:0; }
.birthday-task-summary strong,.birthday-no-class-item > summary strong { display:block; font:600 14px/20px var(--font-body); overflow-wrap:anywhere; }
.birthday-task-summary small,.birthday-no-class-item > summary small { display:block; margin:0; color:var(--ink-soft); font:500 12px/16px var(--font-body); }
.birthday-task-summary .birthday-carried { margin-left:6px; vertical-align:middle; }
.birthday-task-status { display:grid; place-items:center; width:44px; height:44px; padding:0; border:0; background:transparent; color:var(--ink-muted); cursor:pointer; }
.birthday-task-status.is-complete { color:var(--success); }
.birthday-task-status.is-pending { color:var(--warning); }
.birthday-task-detail,.birthday-no-class-item > div { padding:4px 0 8px; }
.birthday-task-detail > p,.birthday-no-class-item > div > p { margin:4px 0; color:var(--ink-soft); font:500 13px/18px var(--font-body); }
.birthday-task-detail .birthday-live-actions { margin-top:4px; }
.birthday-no-class-item { border-bottom:1px solid var(--hair); }
.birthday-no-class-item > summary { list-style:none; }
.birthday-no-class-item > summary::-webkit-details-marker { display:none; }
/* coach-task-quiet-controls-20261110 end */
/* coach-task-metadata-20261110 start */
.birthday-task-panel .birthday-class-toggle > .task-field-compact { grid-column:1/-1; display:flex; flex-wrap:wrap; gap:2px 8px; min-width:0; width:100%; margin:0; }
.birthday-task-panel .birthday-class-toggle > .task-field-compact > .task-field { min-width:0; max-width:100%; }
/* coach-task-metadata-20261110 end */
