:root {
  color-scheme: light dark;
  --ui-bg:#F7F4EA;
  --ui-surface:#FFFDF8;
  --ui-surface-muted:#EEEADC;
  --ui-text:#243129;
  --ui-text-secondary:#606C5E;
  --ui-line:#DED9C8;
  --ui-line-soft:var(--ui-line);
  --ui-surface-veil:rgba(255, 253, 248, .94);
  --ui-overlay:rgba(36, 49, 41, .4);
  --ui-overlay-strong:rgba(36, 49, 41, .58);
  --ui-accent:#0E6DC8;
  --ui-action:#2F7056;
  --ui-action-contrast:#FFFDF8;
  --ui-success:#2F7056;
  --ui-success-text:var(--ui-success);
  --ui-warning:#765719;
  --ui-danger:#AD3F2D;
  --ui-badge-info:#285F7D;
  --ui-badge-info-bg:#E5EEF1;
  --ui-badge-success-bg:#E5F0E7;
  --ui-badge-warning-bg:#F5EDD5;
  --ui-badge-danger-bg:#F7E5E0;
  --ui-font-body:-apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;
  --ui-font-display:"Songti SC", "STSong", "Noto Serif CJK SC", "Source Han Serif SC", "SimSun", serif;
  --ui-radius-control:12px;
  --ui-radius-card:18px;
  --ui-radius:var(--ui-radius-card);
  --ui-touch-min:44px;
  --ui-focus:0 0 0 3px rgba(14, 109, 200, .22);
  --ui-danger-soft-bg:var(--ui-badge-danger-bg);
  --ui-danger-soft-line:var(--ui-danger);
  --blue: var(--ui-action);
  --blue-weak: var(--ui-surface-muted);
  --green: var(--ui-success);
  --green-weak: var(--ui-surface-muted);
  --amber: var(--ui-warning);
  --amber-weak: var(--ui-surface-muted);
  --red: var(--ui-danger);
  --red-weak: var(--ui-surface-muted);
  --ink: var(--ui-text);
  --muted: var(--ui-text-secondary);
  --line: var(--ui-line);
  --bg: var(--ui-bg);
  --surface: var(--ui-surface);
  --shadow: 0 1px 3px rgba(36, 49, 41, .08);
}

@media (prefers-color-scheme: dark) {
  :root {
    --ui-bg:#111914;
    --ui-surface:#1B241E;
    --ui-surface-muted:#202A23;
    --ui-text:#EEEADD;
    --ui-text-secondary:#9CA390;
    --ui-line:rgba(238, 234, 221, .18);
    --ui-line-soft:var(--ui-line);
    --ui-surface-veil:rgba(27, 36, 30, .94);
    --ui-overlay:rgba(0, 0, 0, .56);
    --ui-overlay-strong:rgba(0, 0, 0, .7);
    --ui-accent:#8CC8FF;
    --ui-action:#A4CEB1;
    --ui-action-contrast:#111914;
    --ui-success:#A4CEB1;
    --ui-success-text:var(--ui-success);
    --ui-warning:#DCC888;
    --ui-danger:#E18872;
    --ui-badge-info:#9FC7DC;
    --ui-badge-info-bg:#1D3039;
    --ui-badge-success-bg:#203429;
    --ui-badge-warning-bg:#3A3321;
    --ui-badge-danger-bg:#3A2420;
    --ui-focus:0 0 0 3px rgba(140, 200, 255, .3);
    --ui-danger-soft-bg:var(--ui-badge-danger-bg);
    --ui-danger-soft-line:var(--ui-danger);
    --shadow:none;
  }
}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; background: var(--bg); color: var(--ink); }
body { min-height: 100vh; display: flex; flex-direction: column; font-family: var(--ui-font-body); font-size: 16px; letter-spacing: 0; }
#app { flex: 1 0 auto; }
.skip-link {
  position: fixed; top: -100px; left: 12px; z-index: 100;
  min-height: var(--ui-touch-min); display: inline-flex; align-items: center;
  padding: 9px 14px; border-radius: var(--ui-radius-control);
  background: var(--ui-action); color: var(--ui-action-contrast); font-weight: 700;
}
.skip-link:focus { top: calc(8px + env(safe-area-inset-top)); }
.site-filing {
  flex: 0 0 auto;
  min-height: 46px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 6px 12px;
  padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
  color: var(--muted);
  font-size: 12px;
  text-align: center;
}
.site-filing a { color: inherit; text-decoration: none; }
.site-filing a:hover { text-decoration: underline; }
.site-filing-link { min-height: 24px; display: inline-flex; align-items: center; gap: 4px; }
.site-filing-icon { width: 18px; height: 20px; flex: 0 0 auto; object-fit: contain; }
body:has(.bottom-nav) .site-filing {
  padding-bottom: calc(72px + env(safe-area-inset-bottom));
}
button, input, select, textarea { font: inherit; letter-spacing: 0; }
button { cursor: pointer; }
button:disabled,
button[aria-disabled="true"] { cursor: default; opacity: .55; }
:where(button, input, select, textarea):focus-visible { outline: 0; box-shadow: var(--ui-focus); }
.boot { padding: 32px 20px; color: var(--muted); text-align: center; }
.toast {
  position: fixed; top: calc(72px + env(safe-area-inset-top)); left: 50%; z-index: 60;
  transform: translateX(-50%); min-width: 108px; max-width: calc(100% - 32px);
  padding: 10px 16px; border-radius: 8px; background: var(--ink); color: var(--surface);
  box-shadow: var(--shadow); text-align: center; font-size: 14px;
}

.topbar {
  position: sticky; top: 0; z-index: 20; min-height: 62px;
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: calc(10px + env(safe-area-inset-top)) 16px 10px;
  border-bottom: 1px solid var(--line);
  background: var(--ui-surface-veil); color: var(--ink);
  -webkit-backdrop-filter: saturate(180%) blur(18px);
  backdrop-filter: saturate(180%) blur(18px);
}
.top-brand { min-width: 0; }
.auth-brand, .auth-box h1, .top-brand strong, .page-title, .page-head h2,
.section h2, .section h3, .detail-band h2, .detail-band h3 { font-family: var(--ui-font-display); }
.top-brand strong { display: block; overflow: hidden; font-size: 16px; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; }
.top-identity { display: block; margin-top: 2px; color: var(--muted); font-size: 12px; line-height: 1.25; overflow-wrap: anywhere; }
/* Route focus announces the heading; only interactive controls need a focus ring. */
#mainHeading:focus-visible { outline: none; box-shadow: none; }
.top-actions { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; }
.topbar > .top-actions:first-child { flex: 1 1 auto; min-width: 0; }
.top-account-button { min-width: 0; white-space: nowrap; }
.password-action { min-height: var(--ui-touch-min); padding: 6px 8px; border: 0; background: transparent; color: var(--ui-action); font: inherit; font-size: 13px; white-space: nowrap; }

.page { width: min(100%, 980px); margin: 0 auto; padding: 16px 14px calc(88px + env(safe-area-inset-bottom)); }
.page-intro { position: relative; isolation: isolate; min-width: 0; margin: 2px 0 24px; padding: 4px 0; overflow: hidden; }
.page-title { position: relative; z-index: 1; margin: 0; font-size: clamp(30px, 8vw, 42px); line-height: 1.2; letter-spacing: .04em; overflow-wrap: anywhere; }
.page-title em { color: var(--ui-action); font-style: normal; }
.page-eyebrow { position: relative; z-index: 1; margin: 0 0 6px; color: var(--muted); font-size: 14px; line-height: 1.4; }
.brand-watermark { position: absolute; top: 50%; right: 0; z-index: 0; transform: translateY(-50%); color: var(--ui-line); font-family: var(--ui-font-display); font-size: clamp(42px, 15vw, 76px); line-height: 1; white-space: nowrap; opacity: .34; pointer-events: none; user-select: none; }
.page-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.page-head h2 { margin: 0; font-size: 21px; }
.section { margin: 0 0 24px; }
.section-head { display: flex; align-items: end; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.section h2, .section h3 { margin: 0; font-size: 18px; }
.section-count { color: var(--muted); font-size: 13px; }
.stack { display: grid; gap: 10px; }
.empty { padding: 22px 8px; text-align: center; color: var(--muted); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }

.task-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 0 0 16px; }
.task-summary-card { min-width: 0; display: grid; place-items: center; gap: 5px; padding: 15px 12px; border: 1px solid var(--line); border-radius: var(--ui-radius-card); background: var(--surface); box-shadow: var(--shadow); text-align: center; }
.task-summary-card strong { color: var(--ui-action); font-family: var(--ui-font-display); font-size: 30px; line-height: 1; }
.task-summary-card span { color: var(--muted); font-size: 13px; }
.task-summary-error { min-height: 0; margin: -4px 0 16px; padding: 10px 12px; border: 1px solid var(--ui-danger-soft-line); border-radius: var(--ui-radius-control); background: var(--ui-danger-soft-bg); }

.task-card, .notice-row, .account-row {
  width: 100%; min-width: 0; display: block; border: 1px solid var(--line); border-radius: var(--ui-radius-card);
  background: var(--surface); box-shadow: var(--shadow); color: inherit; text-align: left;
}
.task-card { position: relative; overflow: hidden; padding: 15px 15px 15px 19px; }
.task-card::before { content: ""; position: absolute; top: 12px; bottom: 12px; left: 0; width: 4px; border-radius: 0 4px 4px 0; background: var(--ui-action); }
.task-card:active { background: var(--ui-surface-muted); }
.task-card.is-pending { border-color: var(--ui-action); }
.task-card.is-confirmed { border-color: var(--ui-success); }
.task-card.is-draft { border-style: dashed; background: var(--ui-surface-muted); }
.task-card.is-cancelled { border-color: var(--ui-danger); background: var(--ui-badge-danger-bg); color: var(--ui-danger); }
.task-card.is-archived { border-color: var(--ui-line-soft); background: var(--ui-surface-muted); color: var(--ui-text); }
.task-card.is-draft::before { background: var(--ui-warning); }
.task-card.is-cancelled::before { background: var(--ui-danger); }
.task-card.is-archived::before { background: var(--ui-line); }
.task-card.is-cancelled .task-card-category,
.task-card.is-cancelled .task-card-meta .meta-label,
.task-card.is-cancelled .task-card-meta .meta-value,
.task-card.is-cancelled .task-meta,
.task-card.is-cancelled .task-duty { color: var(--ui-danger); }
.task-card.is-archived .task-card-category,
.task-card.is-archived .task-card-meta .meta-label,
.task-card.is-archived .task-card-meta .meta-value,
.task-card.is-archived .task-meta,
.task-card.is-archived .task-duty { color: var(--ui-text); }
.task-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.task-card h3 { margin: 0; min-width: 0; font-size: 17px; line-height: 1.35; overflow-wrap: anywhere; }
.task-card-category { margin-top: 5px; color: var(--muted); font-size: 13px; }
.task-card-meta { display: grid; gap: 7px; margin-top: 12px; }
.task-card-meta .meta-item { min-width: 0; display: grid; grid-template-columns: 38px minmax(0, 1fr); align-items: baseline; gap: 8px; }
.task-card-meta .meta-label { color: var(--muted); font-size: 12px; font-weight: 700; }
.task-card-meta .meta-value { min-width: 0; color: var(--ink); overflow-wrap: anywhere; }
.task-card-meta .meta-time .meta-value { font-size: 15px; font-weight: 700; }
.task-card-meta .meta-location .meta-value { font-size: 14px; font-weight: 550; }
.task-meta { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 10px; color: var(--muted); font-size: 14px; }
.task-duty { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); color: var(--blue); font-weight: 600; }

.badge { display: inline-flex; align-items: center; min-height: 24px; padding: 3px 8px; border: 1px solid currentColor; border-radius: 999px; font-size: 12px; line-height: 1.2; white-space: nowrap; }
.badge.blue { color: var(--blue); background: var(--blue-weak); }
.badge.green { color: var(--green); background: var(--green-weak); }
.badge.amber { color: var(--amber); background: var(--amber-weak); }
.badge.red { color: var(--red); background: var(--red-weak); }
.badge.status.blue { color: var(--ui-badge-info); background: var(--ui-badge-info-bg); }
.badge.status.green { color: var(--ui-success-text); background: var(--ui-badge-success-bg); }
.badge.status.amber { color: var(--ui-warning); background: var(--ui-badge-warning-bg); }
.badge.status.red { color: var(--ui-danger); background: var(--ui-badge-danger-bg); }

.page-error {
  margin: 0 16px 12px; padding: 10px 12px;
  border: 1px solid var(--ui-danger-soft-line); border-radius: var(--ui-radius);
  background: var(--ui-danger-soft-bg); color: var(--red); font-size: 14px;
}
.page-error[hidden] { display: none; }
.page-error .page-error-hint { display: block; margin-top: 4px; font-weight: 400; }

.empty-hint { padding: 12px 2px; color: var(--muted); font-size: 14px; }

.bottom-nav {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 25;
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr);
  padding: 7px 8px calc(7px + env(safe-area-inset-bottom));
  border-top: 1px solid var(--line); background: var(--ui-surface-veil);
  -webkit-backdrop-filter: saturate(180%) blur(18px);
  backdrop-filter: saturate(180%) blur(18px);
}
.nav-btn { position: relative; min-width: 0; min-height: 56px; display: grid; grid-template-rows: 24px auto; place-items: center; align-content: center; gap: 3px; border: 0; background: transparent; color: var(--muted); font-size: 13px; border-radius: var(--ui-radius-control); }
.nav-btn.active { color: var(--ui-action); background: var(--ui-surface-muted); font-weight: 700; }
.nav-btn:focus-visible { position: relative; z-index: 1; box-shadow: var(--ui-focus); }
.nav-icon-box { width: 24px; height: 24px; display: grid; place-items: center; }
.nav-icon-box svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.nav-icon-notices { transform: translateY(1px); }
.nav-icon-schedule { transform: translateY(.5px); }
.nav-icon-attendance { transform: translateY(.5px); }
.nav-icon-showScheduling { transform: translateY(1px); }
.nav-icon-manage { transform: translateY(.5px); }
.nav-label { min-width: 0; line-height: 1.2; white-space: normal; overflow-wrap: anywhere; }
.nav-count { position: absolute; top: 2px; left: calc(50% + 9px); display: inline-grid; place-items: center; min-width: 18px; height: 18px; margin: 0; padding: 0 5px; border-radius: 9px; background: var(--red); color: var(--surface); font-size: 11px; }

.btn { min-height: var(--ui-touch-min); border: 1px solid transparent; border-radius: var(--ui-radius-control); padding: 9px 14px; background: var(--ui-action); color: var(--ui-action-contrast); font-weight: 650; }
.btn.secondary { background: var(--surface); color: var(--ui-action); border-color: var(--ui-action); }
.btn.quiet { background: transparent; color: inherit; border-color: var(--line); }
.btn.danger { background: var(--red); color: var(--surface); }
.btn.small { min-height: var(--ui-touch-min); padding: 6px 10px; font-size: 14px; }
a.btn { display: inline-flex; align-items: center; justify-content: center; min-height: var(--ui-touch-min); max-width: 100%; vertical-align: middle; }
.icon-btn { width: var(--ui-touch-min); height: var(--ui-touch-min); flex: 0 0 var(--ui-touch-min); display: inline-grid; place-items: center; border: 1px solid var(--line); border-radius: var(--ui-radius-control); background: var(--surface); color: var(--ink); font-size: 22px; }
.topbar .icon-btn { border-color: var(--line); background: var(--ui-surface-muted); color: var(--ink); }
.actions { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 18px; }
.actions .btn { flex: 1 1 140px; }

.auth-shell { min-height: calc(100vh - 46px); display: grid; align-items: start; justify-items: center; padding: 13vh 16px 32px; background: var(--bg); }
.auth-box { width: min(100%, 420px); min-width: 0; padding: 22px; border: 1px solid var(--line); border-radius: var(--ui-radius-card); background: var(--surface); box-shadow: var(--shadow); }
.auth-brand { color: var(--ui-action); font-size: 25px; font-weight: 750; margin-bottom: 20px; overflow-wrap: anywhere; }
.auth-box h1 { margin: 0 0 6px; font-size: 20px; overflow-wrap: anywhere; }
.auth-copy { margin: 0 0 18px; color: var(--muted); font-size: 14px; line-height: 1.5; overflow-wrap: anywhere; }

.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.form-grid[hidden] { display: none; }
.task-scope-row { min-width: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; align-items: start; }
.task-scope-row > .field { min-width: 0; }
.field { min-width: 0; }
.field.full { grid-column: 1 / -1; }
.form-grid > .full { grid-column: 1 / -1; }
.field label { display: block; margin: 0 0 6px; color: var(--muted); font-size: 14px; }
.field-note { display: block; margin-top: 6px; color: var(--muted); font-size: 12px; line-height: 1.45; }
input, select, textarea {
  display: block; width: 100%; max-width: 100%; min-width: 0; min-height: var(--ui-touch-min);
  border: 1px solid var(--line); border-radius: var(--ui-radius-control); background: var(--surface); color: var(--ink);
  padding: 10px 11px; line-height: 1.3; outline: 0;
}
textarea { min-height: 94px; resize: vertical; }
input:focus, select:focus, textarea:focus { border-color: var(--ui-accent); box-shadow: var(--ui-focus); }
input[type="datetime-local"] { appearance: none; -webkit-appearance: none; }
input[type="datetime-local"]::-webkit-date-and-time-value { text-align: left; }
.form-error { min-height: 20px; margin-top: 10px; color: var(--red); font-size: 14px; }
.form-error p { margin: 0 0 4px; }
.form-error ul { margin: 0; padding-left: 20px; }
.known-limitation { display: grid; gap: 4px; margin-top: 10px; padding: 10px 12px; border: 1px solid var(--ui-action); border-radius: var(--ui-radius); background: var(--ui-badge-info-bg); color: var(--ui-action); font-size: 14px; line-height: 1.45; }
.known-limitation strong { color: var(--ui-action); }
.field-error { display: block; margin-top: 4px; color: var(--red); font-size: 13px; }
.account-impact-preview { display: grid; gap: 4px; color: var(--muted); font-size: 13px; line-height: 1.45; }
#appActionDescription { white-space: pre-line; }
.session-status-card { margin-bottom: 16px; padding: 18px; border: 1px solid var(--ui-action); border-radius: var(--ui-radius-card); background: var(--ui-badge-success-bg); }
.session-status-card h1 { margin: 0 0 10px; font-family: var(--ui-font-display); font-size: 24px; line-height: 1.35; }
.session-status-card p { margin: 0; line-height: 1.7; }
.session-status-card h2 { margin: 0 0 10px; font-family: var(--ui-font-display); font-size: 22px; line-height: 1.4; }
.session-status-card .record-actions { margin-top: 12px; }
.actor-leave-form fieldset[hidden] { display: none; }
.leave-progress { margin: 0; padding-left: 22px; }
.leave-progress li { padding: 0 0 18px 8px; }
.leave-progress p { margin: 6px 0 0; line-height: 1.6; color: var(--ui-text-secondary); }
.session-status-card.danger { border-color: var(--ui-danger); background: var(--ui-badge-danger-bg); }
.session-status-card.danger h1 { color: var(--ui-danger); }
.auth-page > .card { display: grid; gap: 14px; }

.management-grid { width: 100%; min-width: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.management-card { width: 100%; min-width: 0; min-height: 112px; display: grid; align-content: start; gap: 8px; padding: 14px; border: 1px solid var(--line); border-radius: var(--ui-radius-card); background: var(--surface); color: var(--ink); text-align: left; overflow-wrap: anywhere; box-shadow: var(--shadow); }
.management-card-icon { width: 32px; height: 32px; display: grid; place-items: center; color: var(--ui-action); }
.management-card-icon .nav-icon-box { width: 32px; height: 32px; }
.management-card-icon .nav-icon-box svg { width: 28px; height: 28px; }
.management-card-copy { min-width: 0; display: grid; gap: 4px; }
.management-card-copy strong { display: block; color: var(--ui-action); font-family: var(--ui-font-display); font-size: 17px; line-height: 1.35; overflow-wrap: anywhere; }
.management-card-copy small { display: block; color: var(--muted); font-size: 12px; line-height: 1.5; overflow-wrap: anywhere; }
.management-card strong { color: var(--ui-action); overflow-wrap: anywhere; }
.management-card:active { background: var(--ui-surface-muted); }

.segmented { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 4px; margin-bottom: 14px; padding: 4px; border-radius: var(--ui-radius-control); background: var(--ui-surface-muted); }
.segment { min-height: var(--ui-touch-min); border: 0; border-radius: var(--ui-radius-control); background: transparent; color: var(--muted); }
.segment.active { background: var(--surface); color: var(--blue); box-shadow: var(--shadow); font-weight: 700; }

.detail-band { padding: 16px 0; border-bottom: 1px solid var(--line); }
.detail-band:first-child { padding-top: 0; }
.detail-band h2, .detail-band h3 { margin: 0 0 10px; }
.detail-copy { white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.6; color: var(--ink); }
.own-assignment { padding: 12px; border-left: 4px solid var(--blue); background: var(--blue-weak); }
.followup-summary, .followup-preview, .manual-note { display: grid; gap: 4px; margin-top: 14px; padding: 11px 12px; border-left: 4px solid var(--ui-action); background: var(--blue-weak); }
.followup-summary span, .followup-preview span, .manual-note span { color: var(--muted); font-size: 12px; font-weight: 700; }
.followup-preview small { color: var(--muted); line-height: 1.45; }
.task-detail-page .detail-band { margin: 0 0 12px; padding: 16px; border: 1px solid var(--line); border-radius: var(--ui-radius-card); background: var(--surface); box-shadow: var(--shadow); }
.task-detail-page .detail-band:first-child { padding-top: 16px; }
.people-list { display: grid; gap: 0; border-top: 1px solid var(--line); }
.person-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(100px, .7fr); gap: 12px; padding: 11px 2px; border-bottom: 1px solid var(--line); }
.person-row.is-muted { color: var(--muted); background: var(--ui-surface-muted); }
.person-main { min-width: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 5px; }
.person-role { color: var(--muted); text-align: right; overflow-wrap: anywhere; }

.assignment-editor { grid-column: 1 / -1; display: grid; gap: 10px; }
.assignment-editor .section-head { margin-bottom: 0; }
.assignment-editor .section-head > div { min-width: 0; display: flex; align-items: baseline; justify-content: space-between; gap: 12px; width: 100%; }
.assignment-toolbar { display: flex; flex-wrap: wrap; gap: 8px; }
.assignment-toolbar .btn { flex: 1 1 132px; }
.assignment-bulk-duty { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
.assignment-people { display: grid; border: 1px solid var(--line); border-radius: var(--ui-radius-control); overflow: hidden; }
.assignment-person { min-width: 0; display: grid; grid-template-columns: minmax(130px, .8fr) minmax(0, 1fr); align-items: center; gap: 12px; padding: 10px 11px; border-bottom: 1px solid var(--line); background: var(--surface); }
.assignment-person:last-child { border-bottom: 0; }
.assignment-person.is-selected { background: var(--blue-weak); }
.assignment-person-check { min-width: 0; display: flex; align-items: center; gap: 9px; }
.assignment-person-check input { width: 20px; min-height: 20px; flex: 0 0 auto; }
.assignment-person-check > span,
.assignment-person-check > label { min-width: 0; display: grid; gap: 2px; cursor: pointer; }
.assignment-person-check strong { overflow-wrap: anywhere; }
.assignment-person-check small { color: var(--muted); font-size: 12px; }
.assignment-duty-field { min-width: 0; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 8px; }
.assignment-duty-label { color: var(--muted); font-size: 12px; font-weight: 700; }
.assignment-duty-field input:disabled { background: var(--ui-surface-muted); color: var(--muted); opacity: .72; }
.work-people-editor .assignment-person[hidden],
.work-people-editor .assignment-duty-field[hidden] { display: none; }
.work-people-editor .assignment-person-check label { min-height: var(--ui-touch-min); display: flex; align-items: center; gap: 8px; }
.visually-hidden,
#approvalActionStatus:empty,
.work-save-status:empty { position: absolute; width: 1px; min-height: 0; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.detail-band > summary, .notice-device-settings > summary { min-height: var(--ui-touch-min); padding: 10px 0; cursor: pointer; }
.rehearsal-assignment-groups { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.rehearsal-assignment-group { min-width: 0; margin: 0; padding: 12px; border: 1px solid var(--line); border-radius: var(--ui-radius-control); }
.rehearsal-assignment-group legend { padding: 0 5px; font-weight: 700; }
.rehearsal-checks { display: grid; gap: 4px; margin-top: 8px; }
.work-duty-with-attendance { row-gap: 6px; }
.work-duty-with-attendance select:disabled { background: var(--ui-surface-muted); color: var(--muted); opacity: .72; }

.preview-facts { display: grid; gap: 8px; margin-top: 14px; }
.preview-facts > div { display: grid; grid-template-columns: 38px minmax(0, 1fr); align-items: baseline; gap: 8px; }
.preview-facts span { color: var(--muted); font-size: 12px; font-weight: 700; }
.preview-people { display: grid; border-top: 1px solid var(--line); }
.preview-person { display: grid; grid-template-columns: minmax(0, 1fr) minmax(100px, .7fr); gap: 12px; padding: 11px 2px; border-bottom: 1px solid var(--line); }
.preview-person strong { text-align: right; overflow-wrap: anywhere; }
.preview-person small { display: block; margin-top: 3px; color: var(--muted); }
.preview-note { margin: 16px 0 0; color: var(--muted); font-size: 13px; line-height: 1.55; }

.notice-row { padding: 13px 14px; }
.notice-row.unread { border-left: 4px solid var(--blue); }
.notice-row h3 { margin: 0 0 5px; font-size: 16px; }
.notice-row p { margin: 0; color: var(--muted); overflow-wrap: anywhere; }
.notice-time { display: block; margin-top: 7px; color: var(--muted); font-size: 12px; }
.notices-page { max-width: 760px; }
.notice-heading { display: flex; flex-wrap: wrap; align-items: baseline; gap: 12px; margin: 8px 0 24px; }
.notice-heading .page-title { font-size: 26px; letter-spacing: 0; }
.notice-heading .section-count { font-size: 13px; }
.notices-page .notice-row { padding: 16px; border-radius: 14px; box-shadow: none; }
.notices-page .notice-row:focus-visible { outline: 2px solid var(--ui-action); outline-offset: 3px; }
.notices-page .notice-row.unread { border-left: 3px solid var(--ui-action); padding-left: 14px; }
.notices-page .notice-row h2 { font: 650 18px/1.5 var(--ui-font-body); margin: 9px 0 6px; overflow-wrap: anywhere; }
.notices-page .notice-row p { font-size: 16px; line-height: 1.65; }
.notice-row-top, .notice-row-foot { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px 12px; font-size: 13px; }
.notice-row-top .notice-time { margin: 0; font-size: 12px; }
.notice-kind { color: var(--ui-text-secondary); font-size: 12px; }
.notice-row-foot { margin-top: 13px; color: var(--ui-action); }
.notice-read-state { color: var(--ui-text-secondary); }
.notice-row.unread .notice-read-state { color: var(--ui-action); font-weight: 600; }
.notice-row.tone-danger .notice-kind { color: var(--ui-danger); background: var(--ui-badge-danger-bg); }
.notice-row.tone-warning .notice-kind { color: var(--ui-warning); background: var(--ui-badge-warning-bg); }
.notice-row.tone-danger .notice-kind, .notice-row.tone-warning .notice-kind { padding: 3px 7px; border-radius: 6px; font-weight: 600; }
.notices-page .notice-row.unread.tone-danger { border-left-color: var(--ui-danger); }
.notices-page .notice-row.unread.tone-warning { border-left-color: var(--ui-warning); }
.notices-page .notice-device-settings { margin-top: 26px; padding-top: 8px; border-top: 1px solid var(--ui-line); }
.notices-page .notice-device-settings > summary { color: var(--ui-text-secondary); font-size: 14px; }
.notice-device-settings > summary:focus-visible { outline: 2px solid var(--ui-action); outline-offset: 3px; }
.approval-list { display: grid; gap: 10px; }
.approval-card { min-width: 0; padding: 14px; border: 1px solid var(--line); border-radius: var(--ui-radius-control); background: var(--surface); }
.approval-card-top { min-width: 0; display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.approval-card-top > div { min-width: 0; display: flex; align-items: center; gap: 8px; }
.approval-card h2 { min-width: 0; margin: 0; font-size: 16px; overflow-wrap: anywhere; }
.approval-copy { margin: 10px 0 0; color: var(--muted); line-height: 1.5; overflow-wrap: anywhere; }
.approval-meta { min-width: 0; display: grid; gap: 4px; margin-top: 10px; color: var(--muted); font-size: 13px; overflow-wrap: anywhere; }
.approval-actions { min-width: 0; display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.approval-actions .btn { flex: 1 1 120px; }
.approval-batch { min-width: 0; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin: 0 0 12px; padding: 10px; border-radius: var(--ui-radius-control); background: var(--ui-surface-muted); }
.approval-batch .btn { flex: 1 1 140px; }
.surface-section { background: var(--surface); }
.manage-section { background: var(--surface); }
.surface-section, .manage-section, .my-account-section { padding: 16px; border: 1px solid var(--line); border-radius: var(--ui-radius-card); box-shadow: var(--shadow); }

.status-table { width: 100%; border-collapse: collapse; background: var(--surface); }
.status-table th, .status-table td { padding: 11px 9px; border-bottom: 1px solid var(--line); text-align: left; font-size: 14px; }
.status-table th { color: var(--muted); font-weight: 600; }
.table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 8px; }

.account-row { padding: 12px; }
.account-list-toolbar { display: grid; gap: 10px; margin: 0 0 14px; }
.account-list-toolbar .field { min-width: 0; margin: 0; }
.account-list-toolbar .actions { align-items: center; gap: 8px; margin-top: 0; }
.account-list-toolbar .actions .section-count { min-width: 0; margin-right: auto; }
.account-list-toolbar .actions .btn { flex: 0 0 auto; }
.account-short-card { width: 100%; min-width: 0; display: block; padding: 14px; border: 1px solid var(--line); border-radius: var(--ui-radius-card); background: var(--surface); color: inherit; text-align: left; box-shadow: var(--shadow); }
.account-short-card > * { min-width: 0; overflow-wrap: anywhere; }
.account-short-card:active { background: var(--ui-surface-muted); }
.account-short-card .account-name { align-items: flex-start; flex-direction: row; }
.account-short-card .account-login { display: block; margin-top: 2px; color: var(--muted); font-size: 13px; line-height: 1.35; overflow-wrap: anywhere; }
.account-role-line { display: block; margin: 10px 0 4px; font-size: 14px; line-height: 1.45; overflow-wrap: anywhere; }
.account-scope-line { display: block; margin: 0; color: var(--muted); font-size: 12px; line-height: 1.45; overflow-wrap: anywhere; }
.account-name { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.account-name > div { min-width: 0; }
.account-name strong, .account-username { display: block; overflow-wrap: anywhere; }
.account-username { margin-top: 2px; color: var(--muted); font-size: 13px; }
.account-badges { min-width: 0; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }
.account-status { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px 14px; margin: 0 0 12px; padding: 10px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.account-status > div { min-width: 0; display: grid; grid-template-columns: 92px minmax(0, 1fr); align-items: start; gap: 8px; }
.account-status dt { color: var(--muted); font-size: 13px; }
.account-status dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }
.account-status dd small { display: block; margin-top: 4px; color: var(--muted); font-size: 12px; }
.account-controls { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: end; }
.reset-password-form { display: grid; gap: 10px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }
.reset-password-form[hidden] { display: none; }
.check-label { min-width: 0; min-height: var(--ui-touch-min); display: flex; align-items: center; gap: 6px; color: var(--muted); font-size: 14px; white-space: normal; overflow-wrap: anywhere; }

.account-summary { display: grid; gap: 8px; margin: 0; }
.account-summary > div { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 8px; }
.account-summary dt { color: var(--muted); font-size: 13px; }
.account-summary dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }
.authorization-date-fields { min-width: 0; display: grid; grid-template-columns: 1fr; gap: 10px; overflow: visible; }
.app-dialog { box-sizing: border-box; width: min(calc(100% - 28px), 420px); max-width: 100%; padding: 18px; border: 1px solid var(--line); border-radius: var(--ui-radius-control); background: var(--surface); color: var(--ink); }
.app-dialog::backdrop { background: var(--ui-overlay); }
.app-dialog h2 { margin: 0; font-size: 20px; }
.app-dialog p { color: var(--muted); line-height: 1.5; }
.app-dialog-actions { display: flex; gap: 8px; margin-top: 14px; }
.app-dialog-actions .btn { flex: 1 1 0; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001s !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.001s !important;
  }
}
.check-label input { width: 20px; min-height: 20px; }

.section-copy { margin: 4px 0 12px; color: var(--muted); font-size: 14px; line-height: 1.55; }
.work-entry-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.work-entry, .record-card { width: 100%; min-width: 0; border: 1px solid var(--line); border-radius: var(--ui-radius-card); background: var(--surface); color: var(--ink); text-align: left; box-shadow: var(--shadow); }
.work-entry { min-height: 92px; display: grid; align-content: center; gap: 6px; padding: 14px; }
.work-entry strong { color: var(--ui-action); font-size: 16px; }
.work-entry span { color: var(--muted); font-size: 13px; line-height: 1.45; }
.record-card { display: block; padding: 14px; }
.record-card:active, .work-entry:active { background: var(--ui-surface-muted); }
.record-card-top { min-width: 0; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.record-card-top > div { min-width: 0; }
.record-card h3 { margin: 3px 0 0; font-size: 17px; line-height: 1.4; overflow-wrap: anywhere; }
.record-card small { color: var(--muted); }
.record-meta { display: flex; flex-wrap: wrap; gap: 5px 14px; margin-top: 9px; color: var(--muted); font-size: 13px; }
.record-brief { margin-top: 14px; }
.section-action { margin-top: 12px; }
.evidence-list { display: grid; gap: 8px; }
.evidence-entry { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; }
.evidence-row { min-width: 0; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 12px; border: 1px solid var(--line); border-radius: var(--ui-radius-control); background: var(--surface); color: var(--ui-action); text-decoration: none; }
.evidence-row small { color: var(--muted); text-align: right; }
.audit-trail { display: grid; border-top: 1px solid var(--line); }
.audit-trail > div { min-width: 0; display: grid; grid-template-columns: 78px minmax(0, 1fr); align-items: center; gap: 12px; padding: 10px 2px; border-bottom: 1px solid var(--line); }
.audit-trail span:first-child { color: var(--muted); font-size: 13px; }
.audit-trail strong { overflow-wrap: anywhere; }
.published-link { display: block; color: var(--ui-action); overflow-wrap: anywhere; }
.inline-upload { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
.inline-upload .form-error { grid-column: 1 / -1; }
.business-execution { width: 100%; max-width: 100%; min-width: 0; overflow: hidden; }
.execution-facts { display: grid; gap: 8px; margin-bottom: 14px; }
.execution-facts > div { min-width: 0; display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 8px; }
.execution-facts span { color: var(--muted); font-size: 13px; }
.execution-facts strong { overflow-wrap: anywhere; }
.execution-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 14px; }
.execution-form-grid .full { grid-column: 1 / -1; }
.actual-people { min-width: 0; display: grid; gap: 8px; margin: 0; padding: 12px; border: 1px solid var(--line); border-radius: var(--ui-radius-control); }
.actual-people legend { padding: 0 5px; color: var(--muted); font-size: 14px; }
.actual-person { min-width: 0; display: grid; grid-template-columns: minmax(120px, .7fr) minmax(0, 1fr); gap: 10px; align-items: end; }
.execution-upload { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: end; margin-top: 12px; }
.execution-upload label { grid-column: 1 / -1; color: var(--muted); font-size: 14px; }
.rollcall-list { display: grid; gap: 10px; margin-top: 14px; }
.rollcall-summary, .execution-review { display: flex; flex-wrap: wrap; gap: 8px 14px; color: var(--muted); }
.execution-review { margin-top: 10px; }
.execution-review strong { color: var(--text); }
.rollcall-list h4 { margin: 0; }
.rollcall-card { min-width: 0; display: grid; gap: 10px; padding: 12px; border: 1px solid var(--line); border-radius: var(--ui-radius-control); background: var(--surface); touch-action: pan-y; }
.rollcall-card > div:first-child { display: flex; justify-content: space-between; gap: 8px; }
.rollcall-card small { color: var(--muted); }
.rollcall-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.rollcall-actions .btn { min-width: 0; }

.attendance-page, .attendance-setup-page, .attendance-rollcall-page { padding-bottom: calc(96px + env(safe-area-inset-bottom)); }
.attendance-hero { position: relative; overflow: hidden; padding: 18px; border: 1px solid var(--line); border-radius: var(--ui-radius-card); box-shadow: var(--shadow); }
.attendance-area { margin-bottom: 16px; padding: 16px; border: 1px solid var(--line); border-radius: var(--ui-radius-card); background: var(--surface); box-shadow: var(--shadow); }
.attendance-area:last-of-type { margin-bottom: 0; }
.attendance-area .section-head { margin-bottom: 8px; }
.attendance-area .section-copy { margin: 4px 0 12px; }
.attendance-area-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.attendance-area-actions > .btn, .attendance-area-actions > a { min-width: 0; flex: 1 1 140px; }
.attendance-area-records { padding: 16px; }
.intern-rollcall-filters { display: grid; gap: 20px; margin-top: 20px; }
.intern-rollcall-filters .field { display: grid; gap: 8px; min-width: 0; }
.intern-rollcall-filters .field label { margin: 0; line-height: 1.5; }
.intern-rollcall-filters input { width: 100%; max-width: 100%; min-width: 0; min-inline-size: 0; min-height: 48px; box-sizing: border-box; }
.intern-rollcall-filters input[type="date"] { appearance: none; -webkit-appearance: none; text-align: left; }
.intern-rollcall-filters input[type="date"]::-webkit-date-and-time-value { min-height: 1.4em; text-align: left; }
.intern-rollcall-results { margin-top: 22px; }
.intern-rollcall-empty { margin: 0; padding: 20px 10px; text-align: center; background: var(--ui-surface-muted); border-radius: 12px; color: var(--muted); }
.intern-rollcall-history { margin-top: 22px; border-top: 1px solid var(--line); }
.intern-rollcall-history a { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 48px; padding: 12px 0; color: var(--muted); font-size: 14px; text-decoration: none; }
.intern-rollcall-history a span:last-child { font-size: 22px; }
.intern-rollcall-history a:focus-visible { outline: 2px solid var(--ui-accent); outline-offset: 3px; }
.attendance-hero::after { content: "点"; position: absolute; right: 12px; top: -14px; color: var(--ui-surface-muted); font-family: var(--ui-font-display); font-size: 92px; line-height: 1; pointer-events: none; }
.attendance-primary-actions { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 10px; }
.attendance-primary-actions.attendance-area-actions { display: flex; gap: 8px; }
.attendance-now { min-height: 56px; font-size: 17px; }
.attendance-timeline { margin-top: 14px; padding: 16px; border: 1px solid var(--line); border-radius: var(--ui-radius-card); box-shadow: var(--shadow); }
.attendance-timeline-row { width: 100%; min-height: 72px; display: grid; grid-template-columns: 82px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 12px 2px; border: 0; border-bottom: 1px solid var(--line); background: transparent; color: var(--ink); text-align: left; }
.attendance-timeline-row:last-child { border-bottom: 0; }
.attendance-time { color: var(--ui-action); font-weight: 700; }
.attendance-session-main { min-width: 0; display: grid; gap: 4px; }
.attendance-session-main strong, .attendance-session-main small { overflow-wrap: anywhere; }
.attendance-session-main small { color: var(--muted); }
.attendance-setup-form { display: grid; gap: 16px; padding: 16px; border: 1px solid var(--line); border-radius: var(--ui-radius-card); box-shadow: var(--shadow); }
.attendance-current-time { margin: 0; padding: 12px; border-left: 4px solid var(--ui-action); background: var(--ui-surface-muted); font-weight: 700; }
.attendance-groups { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.attendance-groups .btn { min-width: 0; }
.attendance-people { display: grid; overflow: hidden; border: 1px solid var(--line); border-radius: var(--ui-radius-control); }
.attendance-person { min-height: 58px; display: grid; grid-template-columns: 24px minmax(0, 1fr); align-items: center; gap: 10px; padding: 9px 12px; border-bottom: 1px solid var(--line); background: var(--surface); cursor: pointer; }
.attendance-person:last-child { border-bottom: 0; }
.attendance-person.is-selected { background: var(--ui-surface-muted); }
.attendance-person input { width: 20px; min-height: 20px; margin: 0; }
.attendance-person span { min-width: 0; display: grid; gap: 2px; }
.attendance-person small { color: var(--muted); }
.attendance-leave-summary { margin: 0 0 16px; padding: 0 14px; border: 1px solid var(--ui-line-soft); border-radius: var(--ui-radius-control); background: var(--ui-surface-muted); }
.attendance-leave-summary summary { min-height: 54px; padding: 14px 0; cursor: pointer; }
.attendance-leave-summary ul { margin: 0; padding: 0 0 12px; list-style: none; }
.attendance-leave-summary li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; padding: 8px 0; }
.attendance-leave-summary li span { color: var(--muted); }
.approval-intern-summary { display: grid; gap: 4px; }
.approval-intern-details > summary, .intern-rollcall-page details > summary { min-height: 44px; padding: 10px 0; cursor: pointer; }
.approval-intern-targets { margin: 0; padding: 0; list-style: none; }
.approval-intern-targets li { display: flex; justify-content: space-between; align-items: center; gap: 8px; min-height: 44px; overflow-wrap: anywhere; }
.approval-intern-reject-options .check-label { min-height: 44px; }
.attendance-start { min-height: 54px; }
.attendance-rollcall-page { min-height: calc(100vh - 148px); overflow: hidden; }
.attendance-rollcall-meta, .attendance-gesture-hints { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.attendance-rollcall-meta { margin-bottom: 14px; color: var(--muted); }
.attendance-rollcall-meta h1 { margin: 0; font: inherit; }
.attendance-rollcall-meta strong { color: var(--ink); }
.attendance-gesture-hints { margin: 0 auto 14px; color: var(--muted); font-size: 13px; }
.attendance-name-card { width: min(100%, 380px); min-height: 330px; margin: 0 auto; display: grid; place-items: center; align-content: center; gap: 14px; padding: 28px; border: 1px solid var(--line); border-radius: calc(var(--ui-radius-card) + 6px); background: var(--surface); box-shadow: var(--shadow); text-align: center; touch-action: none; will-change: transform; user-select: none; }
.attendance-name-card small, .attendance-name-card > span:last-child { color: var(--muted); }
.attendance-name-card > strong { font-family: var(--ui-font-display); font-size: clamp(34px, 11vw, 48px); letter-spacing: .08em; }
.attendance-avatar { width: 76px; height: 76px; display: grid; place-items: center; border-radius: 50%; background: var(--ui-surface-muted); color: var(--ui-action); font-family: var(--ui-font-display); font-size: 26px; }
.attendance-name-card.is-exiting { pointer-events: none; }
.attendance-instruction { margin: 14px 0; color: var(--muted); text-align: center; font-size: 13px; }
.attendance-mark-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; }
.attendance-mark-actions .btn { min-width: 0; min-height: 52px; }
.attendance-complete { min-height: 360px; display: grid; place-items: center; align-content: center; gap: 14px; padding: 28px 20px; border: 1px solid var(--line); border-radius: var(--ui-radius-card); box-shadow: var(--shadow); text-align: center; }
.attendance-complete h1, .attendance-complete p { margin: 0; }
.attendance-complete-mark { width: 72px; height: 72px; display: grid; place-items: center; border-radius: 50%; background: var(--ui-badge-success-bg); color: var(--ui-success-text); font-size: 34px; }
.intern-attendance-page { padding-bottom: calc(96px + env(safe-area-inset-bottom)); }
.intern-attendance-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0 0 14px; }
.attendance-workspace-switch { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; }
.attendance-workspace-switch .btn { background: var(--ui-surface-muted); color: var(--ui-text); border: 1px solid var(--ui-line); }
.attendance-workspace-switch .btn[aria-current="page"] { border-color: var(--ui-action); box-shadow: inset 0 -3px 0 var(--ui-action); font-weight: 700; }
.attendance-workspace-switch .btn, .intern-attendance-tabs .btn { min-width: 0; min-height: 48px; }
.intern-attendance-card { display: grid; gap: 16px; padding: 16px; border: 1px solid var(--line); border-radius: var(--ui-radius-card); box-shadow: var(--shadow); }
.intern-attendance-form { display: grid; gap: 14px; }
.intern-attendance-form input, .intern-attendance-form select { min-height: 48px; }
.intern-attendance-people { display: grid; gap: 0; margin: 0; padding: 0; overflow: hidden; border: 1px solid var(--line); border-radius: var(--ui-radius-control); }
.intern-attendance-people legend { margin-left: 10px; padding: 0 6px; font-weight: 700; }
.intern-attendance-person { min-height: 58px; display: grid; grid-template-columns: 24px minmax(0, 1fr); align-items: center; gap: 10px; padding: 9px 12px; border-bottom: 1px solid var(--line); background: var(--surface); cursor: pointer; }
.intern-attendance-person:last-child { border-bottom: 0; }
.intern-attendance-person input { width: 20px; min-height: 20px; margin: 0; }
.intern-attendance-person span, .intern-temporary-pending p { display: grid; gap: 3px; margin: 0; }
.intern-attendance-person small, .intern-temporary-pending span, .intern-temporary-pending small { color: var(--muted); }
.intern-attendance-records, .intern-attendance-pending, .intern-submission-history { display: grid; gap: 10px; }
.intern-attendance-records h3, .intern-attendance-pending h3, .intern-submission-history h3 { margin: 0; }
.intern-attendance-records ul { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.intern-attendance-records li { display: flex; justify-content: space-between; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.intern-attendance-records li span { color: var(--muted); text-align: right; }
.intern-temporary-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.intern-temporary-form .page-error, .intern-temporary-form > .btn { grid-column: 1 / -1; }
.intern-temporary-pending { display: grid; gap: 10px; padding: 12px; border: 1px solid var(--line); border-radius: var(--ui-radius-control); }
.intern-temporary-pending .field { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: end; }
.intern-temporary-pending .field label { grid-column: 1 / -1; }
.intern-temporary-pending button { min-height: 48px; }
.intern-submission { display: grid; gap: 8px; padding: 12px; border: 1px solid var(--line); border-radius: var(--ui-radius-control); }
.intern-submission p { margin: 0; }
.intern-submission > p:first-child { display: flex; justify-content: space-between; gap: 10px; }
.intern-submission small, .intern-review-reason { color: var(--muted); }
.intern-review-reason { margin: 0; }
.intern-submission .field { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: end; }
.intern-submission .field label { grid-column: 1 / -1; }
.intern-submission input, .intern-submission button { min-height: 48px; }
.intern-review-status { color: var(--muted); white-space: nowrap; }
.intern-resubmit-note { margin: 0; color: var(--muted); }

.intern-rollcall-page { min-width: 0; overflow-x: clip; padding-bottom: calc(96px + env(safe-area-inset-bottom)); }
.intern-rollcall-page > * { min-width: 0; }
.intern-rollcall-panel, .intern-rollcall-section { min-width: 0; margin: 0 0 16px; }
.intern-rollcall-panel, .intern-rollcall-form { display: grid; gap: 14px; }
.intern-rollcall-primary-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 0; }
.intern-rollcall-primary-actions .btn { min-width: 0; }
.intern-rollcall-section h2, .intern-rollcall-panel h2 { margin: 0 0 10px; font-size: 18px; }
.intern-rollcall-grid { min-width: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 10px; }
.intern-rollcall-source-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.intern-rollcall-source-list li { min-width: 0; display: grid; gap: 3px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.intern-rollcall-source-list a, .intern-rollcall-source-list small { min-width: 0; overflow-wrap: anywhere; }
.intern-rollcall-source-list small { color: var(--muted); }
.intern-rollcall-form fieldset, .intern-rollcall-participant fieldset { min-width: 0; display: grid; gap: 9px; margin: 0; padding: 12px; border: 1px solid var(--line); border-radius: var(--ui-radius-control); }
.intern-rollcall-form legend, .intern-rollcall-participant legend { padding: 0 5px; font-weight: 700; }
.intern-rollcall-form label { color: var(--muted); font-size: 14px; }
.intern-rollcall-participant h3, .intern-rollcall-participant p { margin: 0; overflow-wrap: anywhere; }
.intern-rollcall-participant.is-selected { border-color: var(--ui-action); background: var(--ui-surface-muted); }
.rollcall-current-result { color: var(--muted); }
.intern-rollcall-actions { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.intern-rollcall-actions .btn { min-width: 0; min-height: var(--ui-touch-min); padding-inline: 8px; }
.form-error-summary { margin: 0 0 14px; padding: 10px 12px; border: 1px solid var(--ui-danger-soft-line); border-radius: var(--ui-radius-control); background: var(--ui-danger-soft-bg); color: var(--red); overflow-wrap: anywhere; }
.form-error-summary[hidden] { display: none; }
#internRollcallStatus { min-height: 24px; margin: 0 0 10px; color: var(--muted); }
#internRollcallStatus:empty { min-height: 0; margin: 0; }
#internRollcallStatus[data-tone="success"] { color: var(--ui-success-text); }
#internRollcallStatus[data-tone="error"] { color: var(--red); }

@media (max-width: 390px) {
  .topbar { gap: 8px; padding-inline: 12px; }
  .top-account-button { padding-inline: 10px; }
  .business-execution { max-width: 100%; }
  .execution-form-grid, .actual-person, .execution-upload, .evidence-entry { grid-template-columns: 1fr; }
  .execution-form-grid .full, .execution-upload label { grid-column: auto; }
  .rollcall-actions { grid-template-columns: 1fr; }
  .bottom-nav { padding-inline: 4px; }
  .nav-btn { font-size: 11px; }
  .attendance-timeline-row { grid-template-columns: 70px minmax(0, 1fr); }
  .attendance-timeline-row .badge { grid-column: 2; justify-self: start; }
  .attendance-name-card { min-height: 300px; }
  .intern-temporary-form, .intern-temporary-pending .field, .intern-submission .field { grid-template-columns: minmax(0, 1fr); }
  .intern-temporary-pending .field label, .intern-submission .field label { grid-column: auto; }
  .intern-attendance-records li { display: grid; }
  .intern-attendance-records li span { text-align: left; }
  .intern-rollcall-primary-actions { grid-template-columns: minmax(0, 1fr); }
  .intern-rollcall-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .approval-card-top { display: grid; }
  .approval-card-top > .badge { justify-self: start; }
}

@media (max-width: 560px) {
  .form-grid { grid-template-columns: 1fr; }
  .field.full { grid-column: auto; }
  .form-grid > .full { grid-column: auto; }
  .assignment-editor { grid-column: auto; }
  .assignment-bulk-duty { grid-template-columns: 1fr; }
  .assignment-person { grid-template-columns: 1fr; gap: 8px; }
  .rehearsal-assignment-groups { grid-template-columns: 1fr; }
  .assignment-duty-field { margin-left: 29px; }
  .account-name { align-items: flex-start; flex-direction: column; }
  .account-badges { justify-content: flex-start; }
  .account-status { grid-template-columns: 1fr; }
  .account-controls { grid-template-columns: 1fr; }
  .person-row { grid-template-columns: minmax(0, 1fr) minmax(86px, .65fr); }
  .page-head { align-items: flex-start; }
  .page-head .btn { flex: 0 0 auto; }
  .work-entry-grid { grid-template-columns: 1fr; }
  .inline-upload { grid-template-columns: 1fr; }
  .inline-upload .form-error { grid-column: auto; }
  .evidence-row { align-items: flex-start; flex-direction: column; gap: 4px; }
  .evidence-row small { text-align: left; }
}
.route-loading-block {
  height: 4rem;
  margin-block: 1rem;
  border-radius: 0.5rem;
  background: var(--ui-surface-muted);
}
.actor-leave-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 18px;
}

/* Yesterday's published schedule is an optional source for a new draft. */
.show-reuse-card {
  margin-block: 16px;
  padding: 16px;
  border: 1px solid var(--ui-line);
  border-radius: 14px;
  background: var(--ui-surface);
  color: var(--ui-text);
  min-width: 0;
  overflow-wrap: anywhere;
}
.show-create-form .show-reuse-toggle,
.show-reuse-toggle {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  gap: 12px;
  min-height: 44px;
  margin: 0;
  cursor: pointer;
}
.show-reuse-toggle input[type="checkbox"] {
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  margin: 2px 0 0;
  accent-color: var(--ui-action);
}
.show-reuse-toggle strong { display: block; font-size: 16px; }
.show-reuse-toggle small,
.show-reuse-note { display: block; margin: 4px 0 0; color: var(--ui-text-secondary); font-size: 14px; line-height: 1.65; }
.show-reuse-exclusion { margin: 12px 0 0; padding-top: 10px; border-top: 1px solid var(--ui-line); color: var(--ui-text-secondary); font-size: 14px; }
.show-reuse-preview { margin-top: 14px; font-size: 16px; line-height: 1.6; }
.show-reuse-preview[hidden], .show-reuse-card [hidden] { display: none; }
.show-reuse-preview p { margin-block: 8px; }
.show-reuse-from span { display: block; color: var(--ui-text-secondary); font-size: 14px; }
.show-reuse-source select { width: 100%; min-height: 44px; font-size: 16px; }
.show-reuse-summary { list-style: none; margin: 12px 0; padding: 0; }
.show-reuse-summary li { display: grid; grid-template-columns: 2.5em minmax(0, 1fr); gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--ui-line); }
.show-reuse-summary li:last-child { border: 0; }
.show-reuse-entry { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
.show-reuse-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px; }
.show-reuse-card .btn { min-height: 44px; }
.show-reuse-card :focus-visible { outline: 2px solid var(--ui-action); outline-offset: 3px; }

/* Daily schedule: confirmed V4 reading order. */
.schedule-page .page-intro { margin-bottom: 18px; }
.schedule-attention { width: 100%; min-height: 56px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; margin: 0 0 18px; border: 1px solid var(--ui-line); border-radius: var(--ui-radius-control); background: var(--ui-surface); text-align: left; color: var(--ui-text); }
.schedule-attention strong { font-size: 16px; }
.schedule-attention small { margin-left: 8px; color: var(--ui-text-secondary); font-size: 13px; }
.schedule-attention.has-pending { background: var(--ui-badge-warning-bg); border-color: transparent; }
.schedule-attention.has-pending strong { color: var(--ui-warning); }
.schedule-attention-action { color: var(--ui-action); font-size: 14px; white-space: nowrap; }
.schedule-page .segmented { background: transparent; border: 0; border-bottom: 1px solid var(--ui-line); border-radius: 0; padding: 0; gap: 0; margin-bottom: 18px; }
.schedule-page .segment { position: relative; min-height: 48px; padding: 10px 4px; background: transparent; border: 0; border-radius: 0; font-size: 16px; box-shadow: none; }
.schedule-page .segment.active { color: var(--ui-text); background: transparent; font-weight: 700; }
.schedule-page .segment.active::after { content: ''; position: absolute; left: 12%; right: 12%; bottom: -1px; height: 3px; background: var(--ui-action); border-radius: 3px; }
.schedule-list-heading { margin-bottom: 12px; }
.schedule-list-heading h2 { font-size: 17px; }
.schedule-date-heading { font-size: 14px; color: var(--ui-text-secondary); margin: 12px 0 0; }
.task-card .task-card-date { color: var(--ui-text-secondary); font-size: 13px; display: block; margin-bottom: 6px; }
.schedule-page .task-card-date { display: none; }
.task-card .task-card-top { margin-bottom: 8px; align-items: baseline; }
.task-time-range { font-size: 22px; line-height: 1.35; font-weight: 700; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.task-card h3 { font-size: 18px; margin: 0; }
.task-card .task-card-category { margin: 5px 0 10px; }
.task-card .task-card-meta { margin-top: 0; }
.task-card .meta-label { font-size: 14px; font-weight: 400; }
.task-card .meta-location .meta-value { font-size: 16px; font-weight: 400; }
.task-card .task-duty { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 10px; padding: 10px 12px; margin-top: 14px; border: 0; border-radius: 10px; background: var(--ui-badge-success-bg); font-size: 16px; font-weight: 400; }
.task-duty > span { color: var(--ui-text-secondary); }
.task-duty > strong { color: var(--ui-action); }
.task-not-assigned { margin: 12px 0 0; padding-top: 10px; border-top: 1px solid var(--ui-line); color: var(--ui-text-secondary); font-size: 14px; }
.task-summary-error .btn { display: block; margin-top: 12px; }
.task-detail-page .detail-band { padding: 20px 0; margin: 0; border: 0; border-bottom: 1px solid var(--ui-line); border-radius: 0; background: transparent; box-shadow: none; }
.task-detail-category { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 18px; color: var(--ui-text-secondary); font-size: 14px; }
.task-detail-facts { border-block: 1px solid var(--ui-line); padding: 18px 0; display: grid; gap: 14px; }
.task-detail-facts > div { display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: 12px; align-items: baseline; }
.task-detail-facts > div > span { color: var(--ui-text-secondary); }
.task-detail-facts > div > strong { font-weight: 500; overflow-wrap: anywhere; }
.task-detail-facts .task-time-range { font-size: 24px; font-weight: 700; }
.task-own-role { margin-top: 18px; padding: 16px; border-radius: 12px; background: var(--ui-badge-success-bg); }
.task-own-role > span { display: block; font-size: 14px; color: var(--ui-text-secondary); }
.task-own-role > strong { display: block; font-size: 21px; margin-top: 5px; color: var(--ui-action); overflow-wrap: anywhere; }
.task-confirmation { margin: 20px 0; }
.task-confirmation .btn { width: 100%; min-height: 48px; }
.task-confirmed { margin: 20px 0; padding: 14px; border-radius: 12px; background: var(--ui-badge-success-bg); color: var(--ui-success-text); }
.task-confirmed strong, .task-confirmed span { display: block; }
.task-confirmed span { font-size: 14px; margin-top: 4px; }
.task-detail-page summary { min-height: 54px; display: flex; align-items: center; }
@media (max-width: 350px) { .schedule-attention small { display: block; margin-left: 0; } .task-card .task-card-top { flex-wrap: wrap; gap: 6px; } }
/* Management and account hierarchy — coordination suite V5. */
.manage-page:has(> .management-grid) .page-title,
.account-page .page-title,
.account-list-page .page-title,
.account-create-page .page-title,
.account-detail-page .page-title { font-size: 27px; line-height: 1.35; letter-spacing: 0; }
.manage-page .management-grid { grid-template-columns: minmax(0, 1fr); gap: 0; border: 1px solid var(--ui-line); border-radius: 16px; background: var(--ui-surface); }
.manage-page .management-card { display: flex; align-items: center; justify-content: space-between; min-height: 92px; gap: 14px; padding: 18px 16px; border: 0; border-bottom: 1px solid var(--ui-line); border-radius: 0; box-shadow: none; }
.manage-page .management-card:first-child { border-radius: 16px 16px 0 0; }
.manage-page .management-card:last-child { border-bottom: 0; border-radius: 0 0 16px 16px; }
.manage-page .management-card:only-child { border-radius: 16px; }
.manage-page .management-card-copy { flex: 1; gap: 5px; }
.manage-page .management-card-copy strong { color: var(--ui-text); font: 650 17px/1.45 var(--ui-font-body); }
.manage-page .management-card-copy small { font-size: 14px; line-height: 1.5; }
.management-card-chevron { flex: 0 0 auto; font-size: 24px; color: var(--ui-text-secondary); }
.manage-page .management-card:focus-visible { outline: 2px solid var(--ui-action); outline-offset: -3px; }
.account-page, .account-list-page, .account-create-page, .account-detail-page { max-width: 640px; }
.topbar:has(+ .account-page) #myAccountButton { display: none; }
.account-identity { margin: 6px 0 28px; }
.account-identity-role { margin: 8px 0; font-size: 16px; }
.account-identity .account-username { margin: 0; font-size: 14px; }
.account-self-section { margin-top: 26px; }
.account-self-section .section-head { margin-bottom: 12px; }
.account-self-section h2 { font: 650 18px/1.4 var(--ui-font-body); }
.account-entry { display: flex; align-items: center; justify-content: space-between; gap: 14px; width: 100%; min-height: var(--ui-touch-min); padding: 18px 16px; border: 1px solid var(--ui-line); border-radius: 16px; background: var(--ui-surface); color: var(--ui-text); text-align: left; }
.account-entry > span:first-child { min-width: 0; flex: 1; }
.account-entry strong { display: block; font-size: 16px; overflow-wrap: anywhere; }
.account-entry small { display: block; margin-top: 5px; color: var(--ui-text-secondary); font-size: 14px; line-height: 1.5; }
.account-entry > span[aria-hidden] { font-size: 24px; color: var(--ui-text-secondary); }
.account-entry:focus-visible { outline: 2px solid var(--ui-action); outline-offset: 3px; }
.account-logout { margin-top: 28px; text-align: center; }
.account-logout .btn { color: var(--ui-text-secondary); border: 1px solid var(--ui-line); }
.account-list-page .account-list-toolbar { grid-template-columns: minmax(0, 1fr) minmax(96px, .5fr); gap: 12px; margin-bottom: 18px; }
.account-list-page .account-list-toolbar > .actions { grid-column: 1 / -1; margin-top: 4px; }
.account-list-page .account-search-field { grid-column: 1 / -1; }
.account-list-page .account-open-action { color: var(--ui-action); }
.account-list-page #reloadAccountPeople { margin-bottom: 16px; }
.account-list-page .account-short-card { padding: 16px; border-radius: 14px; box-shadow: none; }
.account-list-page .account-short-card:focus-visible { outline: 2px solid var(--ui-action); outline-offset: 3px; }
.account-list-page .account-name strong { font-size: 18px; }
.account-list-page .account-role-line { font-size: 16px; }
.account-list-page .account-scope-line { font-size: 13px; }
.account-list-page .account-name { margin-bottom: 8px; }
.account-detail-page > .page-intro { margin-bottom: 6px; }
.account-detail-page > .account-username { margin: 0 0 14px; font-size: 14px; }
.account-detail-page .section-head h2 { font: 650 18px/1.4 var(--ui-font-body); }
.account-status-summary { margin: 0 0 24px; }
.account-summary-badges { display: flex; flex-wrap: wrap; gap: 8px; }
.account-attention { margin: 12px 0 0; padding: 12px 14px; border-radius: 12px; color: var(--ui-warning); background: var(--ui-badge-warning-bg); font-size: 16px; line-height: 1.6; }
.account-permission-summary { display: flex; flex-wrap: wrap; gap: 8px; }
.account-permission-summary > span { padding: 7px 10px; border-radius: 8px; color: var(--ui-text); background: var(--ui-surface-muted); font-size: 16px; }
.account-permissions .account-fold { margin-top: 20px; }
.account-fold { min-width: 0; border-bottom: 1px solid var(--ui-line); }
.account-fold > summary { display: flex; align-items: center; gap: 10px; min-height: 56px; padding: 12px 0; list-style: none; cursor: pointer; font-size: 16px; font-weight: 600; overflow-wrap: anywhere; }
.account-fold > summary::-webkit-details-marker { display: none; }
.account-fold > summary::after { content: "+"; margin-left: auto; color: var(--ui-text-secondary); font-size: 20px; font-weight: 400; }
.account-fold[open] > summary::after { content: "−"; }
.account-fold > summary:focus-visible { outline: 2px solid var(--ui-action); outline-offset: 3px; }
.account-fold-note { margin-left: auto; color: var(--ui-text-secondary); font-size: 12px; font-weight: 400; }
.account-fold > .stack { padding-bottom: 18px; gap: 14px; }
.account-detail-page .account-impact-preview { gap: 5px; font-size: 14px; line-height: 1.55; }
.account-detail-page .account-impact-preview strong { color: var(--ui-text); font-size: 16px; }
.account-detail-page .account-status { grid-template-columns: minmax(0, 1fr); padding: 4px 0 16px; border: 0; gap: 12px; }
.account-detail-page .account-status > div { grid-template-columns: 84px minmax(0, 1fr); }
.account-detail-page .account-status dt { font-size: 14px; }
.account-detail-page .account-status dd { font-size: 16px; }
.account-authorization-entry { min-height: var(--ui-touch-min); }
.account-detail-page .account-authorization .field-note,
.account-detail-page .account-security .field-note,
.account-create-page .field-note { font-size: 14px; line-height: 1.6; }
.account-detail-page .form-grid,
.account-create-page .form-grid { grid-template-columns: minmax(0, 1fr); gap: 20px; }
.account-detail-page .field label,
.account-create-page .field label { margin-bottom: 8px; color: var(--ui-text); font-size: 16px; font-weight: 600; }
.account-detail-page #authorizationForm { margin-top: 20px; }
.account-security { margin-top: 26px; }
.account-detail-page .account-high-risk .btn { justify-self: start; max-width: 100%; white-space: normal; }
@media (max-width: 350px) {
  .manage-page .management-card { padding: 16px 14px; }
  .account-list-page .account-list-toolbar { grid-template-columns: minmax(0, 1fr) 98px; gap: 10px; }
  .account-list-page .account-short-card, .account-entry { padding: 14px; }
  .account-fold > summary { flex-wrap: wrap; gap: 6px; }
  .account-detail-page .account-controls .btn { white-space: normal; }
}

/* Unified V5 approvals: compact list, full details in the existing dialog layer. */
.approval-list { gap: 14px; }
.approval-card { padding: 18px; }
.approval-card-top > div { display: block; }
.approval-kind { margin: 0 0 6px; color: var(--muted); font-size: 13px; font-weight: 600; line-height: 1.5; }
.approval-card h2 { font-size: 19px; line-height: 1.45; }
.approval-date { margin: 12px 0 0; font-size: 16px; line-height: 1.6; overflow-wrap: anywhere; }
.approval-brief { margin: 8px 0 0; color: var(--muted); font-size: 16px; line-height: 1.6; overflow-wrap: anywhere; }
.approval-submitter { margin: 10px 0 0; color: var(--muted); font-size: 14px; line-height: 1.6; }
.approval-conflict-hint { margin: 12px 0 0; color: var(--ui-warning); font-size: 14px; line-height: 1.6; }
.approval-list-actions { min-width: 0; display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 12px; margin-top: 18px; }
.approval-list-actions .check-label { min-height: 44px; margin-right: auto; }
.approval-review-open { min-height: 44px; border: 1px solid var(--ui-action); }
.approval-review-dialog { width: min(calc(100% - 28px), 520px); max-height: calc(100dvh - 32px); overflow-y: auto; overscroll-behavior: contain; padding: 20px; }
.approval-review-dialog > .stack { gap: 14px; }
.approval-review-heading { min-width: 0; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.approval-review-heading > div { min-width: 0; }
.approval-review-dialog h3 { margin: 0; font-size: 18px; line-height: 1.5; overflow-wrap: anywhere; }
.approval-review-dialog .approval-date { margin: 0; color: var(--ink); }
.approval-review-dialog .approval-copy { margin: 0; font-size: 16px; }
.approval-review-dialog .approval-meta { margin-top: 0; font-size: 14px; }
.approval-review-dialog .approval-actions { margin-top: 0; }
.approval-review-dialog .approval-actions [data-approval-detail] { flex-basis: 100%; }
.approval-review-dialog .approval-actions .section-copy { flex-basis: 100%; margin: 0; }
.approval-review-close { width: 100%; }
.approval-review-dialog .btn { min-width: 0; white-space: normal; overflow-wrap: anywhere; }
.approval-review-dialog [data-action-status]:empty { display: none; }
@media (max-width: 359px) {
  .approval-card { padding: 14px; }
  .approval-card h2 { font-size: 18px; }
  .approval-review-dialog { padding: 16px; }
  .approval-review-heading { flex-wrap: wrap; }
}


/* V5 attendance: active sessions first, quieter secondary routes. */
.attendance-active-records { margin-bottom: 20px; }
.attendance-quick-start { margin-block: 20px 24px; }
.attendance-quick-start .section-head { margin-bottom: 8px; }
.attendance-quick-start .section-copy { margin: 0 0 14px; color: var(--ui-text-secondary); }
.attendance-quick-start .attendance-primary-actions,
.attendance-quick-start .intern-rollcall-primary-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.attendance-quick-start .attendance-primary-actions > .btn,
.attendance-quick-start .intern-rollcall-primary-actions > .btn { min-width: 0; min-height: 52px; white-space: normal; }
.attendance-quick-start .intern-rollcall-entry { grid-column: 1 / -1; }
.attendance-record-list { padding: 0; border: 0; background: transparent; box-shadow: none; }
.attendance-record-list .section-copy { color: var(--ui-text-secondary); font-size: 14px; }
.attendance-page .attendance-timeline-row { grid-template-columns: minmax(0, 1fr) auto; padding: 16px; margin-bottom: 12px; border: 1px solid var(--ui-line); border-radius: var(--ui-radius-card); background: var(--ui-surface); gap: 10px; }
.attendance-page .attendance-timeline-row:last-child { border-bottom: 1px solid var(--ui-line); }
.attendance-page .attendance-timeline-row .attendance-time { grid-column: 1; grid-row: 1; font-size: 22px; font-variant-numeric: tabular-nums; color: var(--ui-text); }
.attendance-page .attendance-timeline-row .badge { grid-column: 2; grid-row: 1; justify-self: end; max-width: 160px; white-space: normal; text-align: right; }
.attendance-page .attendance-session-main { grid-column: 1 / -1; gap: 8px; }
.attendance-page .attendance-session-main strong { font-size: 17px; }
.attendance-page .attendance-session-main .attendance-progress { color: var(--ui-action); font-weight: 600; }
.attendance-page .attendance-timeline-row.is-in-progress,
.attendance-active-records .intern-rollcall-session-card { border-color: var(--ui-action); }
.attendance-secondary-nav { padding-top: 4px; border-top: 1px solid var(--ui-line); }
.attendance-secondary-nav .attendance-area-actions,
.attendance-secondary-nav > .actions { display: grid; grid-template-columns: 1fr; gap: 10px; }
.attendance-secondary-nav .btn { min-width: 0; width: 100%; justify-content: flex-start; white-space: normal; }
.attendance-slot-field { display: grid; grid-template-columns: auto minmax(100px, 1fr); align-items: center; gap: 12px; margin-bottom: 0; }
.attendance-slot-field label { margin: 0; }
.attendance-optional-settings { min-width: 0; border-top: 1px solid var(--ui-line); }
.attendance-optional-settings > summary { display: flex; align-items: center; min-height: 48px; cursor: pointer; color: var(--ui-text-secondary); }
.attendance-optional-settings > .field { margin-top: 10px; }
:is(.attendance-result-page, .attendance-rollcall-page:has(.attendance-result-state)) .attendance-complete { text-align: center; justify-items: center; }
:is(.attendance-result-page, .attendance-rollcall-page:has(.attendance-result-state)) .attendance-complete h1 { width: 100%; text-align: center; }
:is(.attendance-result-page, .attendance-rollcall-page:has(.attendance-result-state)) .attendance-complete-mark { margin-inline: auto; }
.intern-rollcall-session-card .attendance-time { font-size: 22px; font-variant-numeric: tabular-nums; color: var(--ui-text); }
.intern-rollcall-session-card h2 { margin: 12px 0 8px; font-size: 17px; }
.intern-rollcall-session-card .record-meta { margin: 6px 0; }
.intern-rollcall-session-card .intern-rollcall-reference { margin: 12px 0; font-size: 12px; color: var(--ui-text-secondary); overflow-wrap: anywhere; }
.intern-rollcall-session-card .btn { width: 100%; min-height: 44px; margin-top: 2px; }
.attendance-record-list .intern-rollcall-filters { margin-top: 16px; gap: 14px; }
.attendance-record-list .intern-rollcall-results { margin-top: 18px; }
.actor-leave-actions > .btn { width: 100%; }
.actor-leave-records { border: 0; background: transparent; box-shadow: none; padding: 0; }
.actor-leave-records > .section-head { margin-bottom: 14px; }
.actor-leave-record .record-card-top { gap: 12px; }
.actor-leave-record .record-meta { margin-top: 8px; font-size: 16px; line-height: 1.6; }
.actor-leave-reason { margin: 14px 0 0; color: var(--ui-text-secondary); line-height: 1.6; overflow-wrap: anywhere; }
.actor-leave-record .record-actions { margin-top: 18px; gap: 10px; }
.actor-leave-record .record-actions .btn { min-height: 44px; white-space: normal; }
.actor-leave-state { margin-bottom: 20px; }
.actor-leave-progress .leave-progress { margin: 20px 0 24px 8px; padding-left: 22px; border-left: 1px solid var(--ui-line); list-style: none; }
.actor-leave-progress .leave-progress li { position: relative; padding: 0 0 24px; }
.actor-leave-progress .leave-progress li:last-child { padding-bottom: 0; }
.actor-leave-progress .leave-progress li::before { content: ""; position: absolute; left: -28px; top: 6px; width: 10px; height: 10px; border-radius: 50%; background: var(--ui-action); border: 2px solid var(--ui-bg); }
.actor-leave-form { gap: 20px 16px; }
.actor-leave-form .field > label { margin-bottom: 8px; }
@media (max-width: 480px) {
  .actor-leave-form { grid-template-columns: minmax(0, 1fr); }
  .actor-leave-form > .field, .actor-leave-form > .full { grid-column: 1; }
  .attendance-slot-field { grid-template-columns: auto minmax(100px, 1fr); }
}


/* V5 page rhythm and persistent setup action for long rosters. */
.approval-page > .surface-section { padding: 0; border: 0; background: transparent; box-shadow: none; }
.approval-page .segmented { padding: 0; margin-bottom: 24px; background: transparent; border: 0; border-bottom: 1px solid var(--ui-line); border-radius: 0; }
.approval-page .segment { position: relative; min-height: 52px; background: transparent; border-radius: 0; }
.approval-page .segment.active { background: transparent; box-shadow: none; color: var(--ui-text); }
.approval-page .segment.active::after { content: ""; position: absolute; left: 18%; right: 18%; bottom: -1px; height: 3px; border-radius: 2px; background: var(--ui-action); }
.approval-page .approval-batch { padding: 0; margin: 0 0 18px; background: transparent; }
.approval-page .approval-batch .btn { flex: 0 1 auto; }
.approval-page .approval-card-top { display: flex; }
.approval-page .approval-card-top > .badge { flex: 0 0 auto; max-width: 45%; white-space: normal; }
.approval-page .approval-card h2, .attendance-setup-form h2 { font-family: var(--ui-font-body); }
.attendance-setup-form.surface-section { padding: 0; border: 0; background: transparent; box-shadow: none; }
.attendance-setup-form .attendance-current-time { padding: 0; margin: 0; border: 0; background: transparent; color: var(--ui-text-secondary); font-size: 14px; }
.attendance-setup-form .attendance-people { border-inline: 0; border-radius: 0; background: transparent; }
.attendance-setup-form .attendance-person, .attendance-setup-form .attendance-person.is-selected { background: transparent; padding: 14px 0; }
.attendance-setup-form input[type="checkbox"] { accent-color: var(--ui-action); }
.attendance-setup-page, .intern-rollcall-page:has(.attendance-setup-form) { padding-bottom: calc(178px + env(safe-area-inset-bottom)); }
.attendance-setup-actions { position: fixed; z-index: 11; bottom: calc(70px + env(safe-area-inset-bottom)); left: 50%; transform: translateX(-50%); width: min(100%, 980px); box-sizing: border-box; display: flex; gap: 10px; padding: 12px 14px; margin: 0; border-top: 1px solid var(--ui-line); background: var(--ui-bg); }
.attendance-setup-actions > .btn { flex: 1; min-height: 48px; min-width: 0; white-space: normal; }
.attendance-secondary-nav .btn.quiet { border: 1px solid var(--ui-action); color: var(--ui-action); }

/* V5 completion: separate page title, outcome, counts, roster and actions. */
:is(.attendance-result-page, .attendance-rollcall-page:has(.attendance-result-state)) .page-intro { margin-bottom: 20px; text-align: center; }
:is(.attendance-result-page, .attendance-rollcall-page:has(.attendance-result-state)) .page-title { text-align: center; }
:is(.attendance-result-page, .attendance-rollcall-page:has(.attendance-result-state)) .attendance-result-state { min-height: 0; padding: 6px 0 0; gap: 14px; border: 0; border-radius: 0; box-shadow: none; background: transparent; }
.attendance-result-state h2 { margin: 0; font-size: 23px; line-height: 1.5; }
.attendance-result-state .attendance-complete-mark { width: 58px; height: 58px; font-size: 32px; }
.attendance-result-state .attendance-result-meta { color: var(--ui-text-secondary); font-size: 16px; line-height: 1.65; overflow-wrap: anywhere; }
.attendance-result-counts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 24px 0; }
.attendance-result-counts > div { min-width: 0; padding: 15px 6px; border-radius: 12px; background: var(--ui-surface-muted); text-align: center; }
.attendance-result-counts strong { display: block; margin-bottom: 4px; font-size: 27px; line-height: 1.2; font-variant-numeric: tabular-nums; }
.attendance-result-counts span { color: var(--ui-text-secondary); font-size: 14px; }
.attendance-result-history { color: var(--ui-text-secondary); font-size: 14px; }
.attendance-result-notice { margin: 0 0 20px; padding: 14px 16px; border: 1px solid var(--ui-line); border-radius: 12px; color: var(--ui-success-text); background: var(--ui-badge-success-bg); font-size: 16px; line-height: 1.7; }
.attendance-result-notice.is-pending { color: var(--ui-warning); background: var(--ui-badge-warning-bg); }
.attendance-result-roster { border-block: 1px solid var(--ui-line); }
.attendance-result-roster > summary { min-height: 52px; display: flex; align-items: center; gap: 8px; padding: 12px 0; cursor: pointer; }
.attendance-result-roster > summary::before { content: "›"; font-size: 22px; line-height: 1; transform-origin: center; }
.attendance-result-roster[open] > summary::before { transform: rotate(90deg); }
.attendance-result-roster > summary > span { margin-left: auto; color: var(--ui-text-secondary); font-size: 14px; }
.attendance-result-roster ul { margin: 0; padding: 0; list-style: none; }
.attendance-result-roster li { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 60px; padding: 12px 0; border-top: 1px solid var(--ui-line); }
.attendance-result-roster li > span:first-child { min-width: 0; overflow-wrap: anywhere; }
.attendance-result-roster li strong { font-size: 16px; }
.attendance-result-roster li small { display: block; margin-top: 4px; color: var(--ui-text-secondary); font-size: 14px; }
.attendance-result-roster li .badge { flex-shrink: 0; }
.attendance-result-actions { display: grid; gap: 10px; margin-top: 24px; }
.attendance-result-actions .btn { width: 100%; min-height: 48px; white-space: normal; }
.attendance-result-actions .section-copy { margin: 0; line-height: 1.7; }
:is(.attendance-result-page, .attendance-rollcall-page:has(.attendance-result-state)) #attendanceRollcallActionStatus:empty { display: none; }

.attendance-setup-form > fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.attendance-setup-form > fieldset > legend { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* V6 deep forms: current work first, supporting facts on demand. */
.deep-form-section { min-width: 0; margin: 0; padding: 22px 0; border: 0; border-bottom: 1px solid var(--ui-line); }
.deep-form-section > legend { padding: 0 0 14px; font-family: var(--ui-font-body); font-size: 19px; font-weight: 650; }
.deep-form-section > .form-grid { gap: 20px; }
.deep-form-section .field > label { margin-bottom: 8px; }
.deep-form-section .field-note { line-height: 1.7; }
.deep-section-title { margin: 24px 0 10px; font-size: 18px; }
.deep-fold-content { min-width: 0; padding: 8px 0 20px; }
.ui-fold { min-width: 0; margin: 16px 0 0; border-block: 1px solid var(--ui-line); }
.ui-fold + .ui-fold { margin-top: 0; border-top: 0; }
.ui-fold > summary { display: flex; align-items: center; gap: 10px; min-height: 56px; padding: 12px 0; font-size: 16px; font-weight: 600; cursor: pointer; list-style: none; }
.ui-fold > summary::-webkit-details-marker { display: none; }
.ui-fold > summary::before { content: "›"; font-size: 23px; line-height: 1; transform-origin: center; }
.ui-fold[open] > summary::before { transform: rotate(90deg); }
.ui-fold > summary > .section-count { margin-left: auto; }
.ui-fold .detail-band { margin: 0; }
.deep-current-action { padding: 18px; border: 1px solid var(--ui-line); border-left: 4px solid var(--ui-action); border-radius: var(--ui-radius-control); background: var(--ui-surface); margin: 20px 0; }
.deep-current-action h2 { margin: 0 0 8px; font-size: 19px; }
.deep-current-action p { margin: 0; line-height: 1.7; }
.deep-action-row { margin: 0 0 24px; }
:is(.task-form-page, .preview-page, .people-case-page, .people-form-page, .account-detail-page, .account-create-page) .btn { min-height: 44px; white-space: nowrap; word-break: keep-all; overflow-wrap: normal; }
:is(.task-form-page, .preview-page, .people-case-page, .people-form-page) .actions { flex-wrap: wrap; gap: 12px; }
:is(.preview-page, .people-case-page, .people-form-page) .actions > .btn { flex: 1 1 auto; min-width: max-content; }
:is(.people-case-page, .people-form-page) .form-grid { gap: 20px; }
:is(.people-case-page, .people-form-page) .field > label { margin-bottom: 8px; }
:is(.people-case-page, .people-form-page) .record-card { padding: 18px; }
.people-case-page .record-card .form-grid { margin-top: 20px; }
.task-form-page #taskForm { gap: 8px; }
.task-form-page .assignment-editor { padding: 22px 0; border-inline: 0; border-radius: 0; background: transparent; }
.task-form-page .assignment-editor > .section-head { margin-bottom: 16px; }
.task-form-page .assignment-toolbar { gap: 10px; }
.task-form-page .assignment-toolbar .btn { flex: 1 1 auto; min-width: max-content; }
.task-form-page .assignment-bulk-duty { margin: 20px 0; gap: 12px; }
.task-form-page .assignment-people { border-inline: 0; border-radius: 0; }
.task-form-page .assignment-person { padding: 14px 12px; }
.task-form-page .assignment-person-check label { min-height: 44px; flex: 1; }
.task-form-page .assignment-person-check small, .task-form-page .assignment-duty-label { font-size: 14px; }
.task-form-page .assignment-person.is-selected { border-left: 3px solid var(--ui-action); background: var(--ui-surface-muted); }
.task-form-page .assignment-person:not(.is-selected) .assignment-duty-field { display: none; }
.task-form-page .assignment-person:not(.is-selected) { grid-template-columns: minmax(0, 1fr); }
.task-form-page .rehearsal-assignment-group { min-width: 0; margin: 24px 0 0; padding: 16px; border: 1px solid var(--ui-line); border-radius: var(--ui-radius-control); }
.task-form-page .rehearsal-checks .check-label { min-height: 44px; }
.business-execution .execution-form-grid { gap: 20px; }
.business-execution .execution-actions { flex-wrap: wrap; gap: 12px; margin: 20px 0; }
.business-execution .execution-actions .btn { min-height: 44px; white-space: nowrap; min-width: max-content; }
.business-execution .actual-people, .business-execution .actual-person { min-width: 0; }
.business-execution .check-label { min-height: 44px; }
.business-execution .execution-records .execution-facts { margin-top: 0; }
@media (max-width: 440px) {
  .deep-form-section > .form-grid, .task-form-page .task-scope-row { grid-template-columns: minmax(0, 1fr); }
  .task-form-page .assignment-bulk-duty { grid-template-columns: minmax(0, 1fr); }
  .task-form-page .assignment-person.is-selected { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .task-form-page .assignment-duty-field { margin-left: 0; }
  .preview-page .preview-facts { grid-template-columns: minmax(0, 1fr); }
}
.deep-process-actions { margin: 28px 0 24px; padding-top: 22px; border-top: 1px solid var(--ui-line); }
.deep-process-actions h2 { margin: 0 0 12px; font-size: 18px; }
.deep-process-actions .actions { margin: 0; }
.deep-process-actions .btn.danger { background: transparent; }

/* V6 intern correction and takeover: reused shell surfaces and current tokens. */
.intern-rollcall-page .deep-form-section,
.attendance-rollcall-page .deep-form-section { margin-block: 24px; }
.intern-rollcall-page .deep-form-section > h2,
.attendance-rollcall-page .deep-form-section > h2 { margin: 0 0 12px; }
.intern-rollcall-participant.record-block { min-width: 0; padding: 16px; border: 1px solid var(--ui-line); border-radius: var(--ui-radius-control); background: var(--ui-surface); }
.intern-rollcall-participant > h3 { margin: 0; font-size: 18px; }
.intern-rollcall-participant p { margin-block: 10px; }
.intern-rollcall-participant fieldset { padding: 0; border: 0; }
.intern-rollcall-participant legend { padding: 0; margin-bottom: 8px; font-size: 14px; color: var(--ui-text-secondary); }
.intern-rollcall-participant .intern-rollcall-actions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
.intern-rollcall-participant .intern-rollcall-actions .btn { min-width: 0; min-height: var(--ui-touch-min); font-size: 16px; }
.intern-rollcall-participant .intern-rollcall-actions .btn[aria-pressed="true"] { background: var(--ui-badge-success-bg); color: var(--ui-success-text); border-color: var(--ui-action); box-shadow: inset 0 0 0 1px var(--ui-action); }
.intern-correction-removal { border-top: 1px solid var(--ui-line); margin-top: 14px; }
.intern-correction-removal summary { min-height: var(--ui-touch-min); font-size: 14px; color: var(--ui-text-secondary); }
.intern-correction-removal .btn { width: 100%; white-space: normal; }
.intern-correction-diff { min-width: 0; padding: 16px; border: 1px solid var(--ui-line); border-radius: var(--ui-radius-control); background: var(--ui-surface); margin: 12px 0; }
.intern-correction-diff h3 { margin: 0 0 14px; font-size: 18px; }
.intern-correction-diff dl { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; margin: 0; }
.intern-correction-diff dt { font-size: 14px; color: var(--ui-text-secondary); }
.intern-correction-diff dd { margin: 5px 0 0; font-size: 18px; font-weight: 700; overflow-wrap: anywhere; }
.intern-rollcall-page .ui-fold > summary,
.attendance-rollcall-page .ui-fold > summary { min-height: 48px; }
.intern-rollcall-page .ui-fold > .record-card,
.attendance-rollcall-page .ui-fold > .record-card { margin-bottom: 12px; }
.intern-takeover-entry { margin-bottom: 24px; }
.intern-takeover-entry .btn { margin-top: 12px; width: 100%; }
.intern-rollcall-correction #internRollcallCorrectionForm { margin-top: 24px; }
.intern-rollcall-page .deep-action-row .btn,
.attendance-rollcall-page .deep-action-row .btn { min-height: 48px; white-space: normal; }
