/* Screen readability targets informed by WCAG 2.2. Paper templates keep their own sizing. */
@media screen {
  :root {
    --ui-body: 1rem;
    --ui-small: .875rem;
    --ui-label: .9375rem;
    --ui-ink: #292b31;
    --ui-muted: #565d69;
    --ui-control-border: #79818f;
    --ui-focus: #a92a35;
    --ui-red-text: #a92a35;
    --ui-red-bg: #fff0ef;
    --ui-green-text: #36572b;
    --ui-green-bg: #edf4ea;
    --ui-orange-text: #74440c;
    --ui-orange-bg: #faf1e4;
    --ui-blue-text: #345675;
    --ui-blue-bg: #ecf1f8;
    --ui-gray-text: #565d69;
    --ui-gray-bg: #f2f2f3;
    --ui-notice-text: #62503c;
    --ui-notice-bg: #f1eee8;
    --muted: var(--ui-muted);
    --label: var(--ui-muted);
  }
  [data-theme="dark"] {
    --ui-ink: #e8e7ed;
    --ui-muted: #c3c4d0;
    --ui-control-border: #85889b;
    --ui-focus: #f598a1;
    --ui-red-text: #f09a9f;
    --ui-red-bg: #422b31;
    --ui-green-text: #aad0a2;
    --ui-green-bg: #2b3a30;
    --ui-orange-text: #dfbe8a;
    --ui-orange-bg: #403628;
    --ui-blue-text: #adbeda;
    --ui-blue-bg: #2b3749;
    --ui-gray-text: #c3c4d0;
    --ui-gray-bg: #35353e;
    --ui-notice-text: #ead2ad;
    --ui-notice-bg: #343126;
  }
  body { font-size: var(--ui-body); line-height: 1.65; }
  :is(#app,#modal) :is(p,li,td,strong,label,input,select,textarea) { font-size: var(--ui-body); line-height: 1.6; }
  :is(#app,#modal) :is(h1,h2,h3) { color: var(--ui-ink); overflow-wrap: anywhere; }
  :is(#app,#modal) h1 { font-size: clamp(1.75rem,1.3rem + 1vw,2.25rem); line-height: 1.35; letter-spacing: -.025em; }
  :is(#app,#modal) h2 { font-size: clamp(1.25rem,1.1rem + .4vw,1.5rem); line-height: 1.45; }
  :is(#app,#modal) h3 { font-size: 1.125rem; line-height: 1.5; }
  :is(#app,#modal) :is(small,.tiny,.subtle,.form-help,.status-help,.eyebrow,.brand-sub,.nav-count,.tag,.stat-label,.stat-foot,.stat-num span,.weekday,.slot-mini small,.slot-mini .seat-mini,.schedule-legend,.footer-caption,.hero-foot,.hero-board-top small,.hero-floating small,.seat-count span,.public-slot small,.public-slot p,.public-notice time,.public-footer,.public-sample-banner,.module-card .meta,.header-workspace-label,.header-profile small,.teacher-header-tools .date,.report-context span,.vocab-selection-word small,.search-button,.breadcrumb,.top-actions .date,.profile small,.sidebar-caption) {
    font-size: var(--ui-small); line-height: 1.6;
  }
  :is(#app,#modal) :is(.muted,.subtle,.tiny,.form-help,.status-help,.brand-sub,.stat-label,.stat-foot,.stat-num span,.weekday,.slot-mini small,.slot-mini .seat-mini,.schedule-legend,.footer-caption,.hero-foot,.hero-board-top small,.seat-count span,.public-slot small,.public-slot p,.public-notice time,.public-footer,.module-card .meta,.header-workspace-label,.header-profile small,.teacher-header-tools .date,.report-context span,.vocab-selection-word small,.data-table small,.card-head p,.request-item p,.list-row p,.public-request-row p,.public-hero p,.section-head p,.public-shortcut p,.guide-card p,.next-card p,.report-preview p,.module-card p,.modal-body p) {
    color: var(--ui-muted);
  }
  :is(#app,#modal) .eyebrow { letter-spacing: .08em; color: var(--ui-red-text); }
  :is(#app,#modal) :is(.tabs button,.public-nav-links,.search-button,.breadcrumb,.reset-button,.sidebar-caption) { color: var(--ui-muted); }
  :is(#app,#modal) :is(.tabs button.active,.avatar,.letter-avatar) { color: var(--ui-ink); }
  :is(#app,#modal) :is(.btn,.tabs button,.primary-nav a,.public-nav-links,.public-nav-links a,.text-link,.report-month-filter,.session-options label,.check-row,.field label) { font-size: var(--ui-label); line-height: 1.5; }
  :is(#app,#modal) :is(.btn,.tabs button,.primary-nav a,.public-nav-links a,.text-link,button:not(.btn)) { min-height: 44px; min-width: 44px; }
  :is(#app,#modal) .btn { padding: .625rem .875rem; white-space: normal; text-align: center; }
  :is(#app,#modal) :is(.btn.small,.staff-tools .btn,.heading-actions .btn,.public-slot .btn) { font-size: var(--ui-label); min-height: 44px; }
  :is(#app,#modal) .text-link { color: var(--ui-red-text); text-decoration: underline; text-underline-offset: .2em; white-space: normal; }
  :is(#app,#modal) :is(.field input,.field select,.field textarea,.search-field,.report-month-filter select) { border-color: var(--ui-control-border); }
  :is(#app,#modal) :is(.field input,.field select,.field textarea,.report-month-filter select) { min-height: 44px; padding: .625rem .75rem; max-width: 100%; }
  :is(#app,#modal) :is(.field label,.check-row,.session-options label) { color: var(--ui-ink); }
  :is(#app,#modal) ::placeholder { color: var(--ui-muted); opacity: 1; }
  :is(#app,#modal) :is(button,a,input,select,textarea,[tabindex]):focus-visible { outline: 3px solid var(--ui-focus); outline-offset: 3px; }
  :is(#app,#modal) :is(input[type="checkbox"],input[type="radio"]) { width: 20px; height: 20px; min-height: 20px; flex-shrink: 0; }
  :is(#app,#modal) .check-row { min-height: 44px; padding-block: .375rem; align-items: flex-start; }
  :is(#app,#modal) .tag { white-space: normal; padding: .25rem .5rem; }
  :is(#app,#modal) .tag.red { color: var(--ui-red-text); background: var(--ui-red-bg); }
  :is(#app,#modal) .tag.green { color: var(--ui-green-text); background: var(--ui-green-bg); }
  :is(#app,#modal) .tag.orange { color: var(--ui-orange-text); background: var(--ui-orange-bg); }
  :is(#app,#modal) .tag.blue { color: var(--ui-blue-text); background: var(--ui-blue-bg); }
  :is(#app,#modal) .tag.gray { color: var(--ui-gray-text); background: var(--ui-gray-bg); }
  :is(#app,#modal) :is(.notice-banner,.public-sample-banner,.vocab-warning) { font-size: var(--ui-label); line-height: 1.65; color: var(--ui-notice-text); background: var(--ui-notice-bg); }
  :is(#app,#modal) .notice-banner.red { color: var(--ui-red-text); background: var(--ui-red-bg); }
  :is(#app,#modal) .data-table { font-size: var(--ui-body); }
  :is(#app,#modal) .data-table th { font-size: var(--ui-small); font-weight: 700; color: var(--ui-ink); }
  :is(#app,#modal) .data-table :is(td,th) { padding: .625rem .75rem; line-height: 1.6; }
  :is(#app,#modal) .table-wrap { max-width: 100%; overscroll-behavior-inline: contain; }
  :is(#app,#modal) .table-wrap:focus-visible { outline: 3px solid var(--ui-focus); outline-offset: 3px; }
  :is(#app,#modal) :is(.stats,.capacity-grid,.public-slots) { grid-template-columns: repeat(auto-fit,minmax(min(100%,13rem),1fr)); }
  :is(#app,#modal) :is(.stat-num,.seat-count) { font-size: 2rem; line-height: 1.3; }
  :is(#app,#modal) :is(.avatar,.letter-avatar,.guide-step b) { font-size: var(--ui-small); }
  :is(#app,#modal) .weekday b { font-size: var(--ui-body); width: 2.25rem; height: 2.25rem; }
  :is(#app,#modal) .hero-board .line { font-size: var(--ui-body); }
  :is(#app,#modal) .public-footer b { font-size: var(--ui-body); color: var(--ui-ink); }
  :is(#app,#modal) .stat-foot.accent { color: var(--ui-red-text); }
  :is(#app,#modal) :is(.stat.feature .stat-label,.stat.feature .stat-foot,.stat.feature .stat-num span,.hero-floating small) { color: #fff; }
  :is(#app,#modal) .hero-floating { font-size: var(--ui-body); }
  :is(#app,#modal) :is(.brand-name,.header-profile strong) { font-size: 1.0625rem; line-height: 1.4; }
  :is(#app,#modal) :is(.brand-sub,.brand-name) { white-space: normal; overflow-wrap: anywhere; }
  :is(#app,#modal) :is(.brand,.brand>div,.header-profile>div,.page-heading>div,.request-item>div,.list-row>div,.vocab-selection-word>div) { min-width: 0; }
  :is(#app,#modal) :is(.page-heading,.card-head,.heading-actions,.toolbar,.staff-tools,.modal-actions,.bottom-shortcuts,.vocab-round-tab,.footer-caption,.public-nav-links,.public-notice,.list-row,.report-month-filter) { flex-wrap: wrap; }
  :is(#app,#modal) :is(.heading-actions,.staff-tools,.modal-actions,.bottom-shortcuts,.vocab-round-tab) { gap: .625rem; }
  :is(#app,#modal) .field { min-width: 0; }
  :is(#app,#modal) .public-hero h1 { font-size: clamp(2rem,1.5rem + 2vw,3.25rem); }
  :is(#app,#modal) .login-hero h1 { font-size: clamp(2rem,1.5rem + 2.5vw,3.625rem); }
  :is(#app,#modal) :is(.report-preview p,.module-card p,.login-card p,.guide-card p,#course-preview) { line-height: 1.8; }
  :is(#app,#modal) :is(.public-hero p,.login-card p,.guide-card p) { max-width: 65ch; }
  :is(#app,#modal) .week-strip { grid-template-columns: repeat(5,minmax(7rem,1fr)); overflow-x: auto; overscroll-behavior-inline: contain; gap: .5rem; }
  :is(#app,#modal) .slot-mini { padding: .5rem; height: auto; min-height: 4.5rem; }
  :is(#app,#modal) .slot-mini strong { font-size: var(--ui-label); }
  :is(#app,#modal) .schedule-legend { flex-wrap: wrap; }
  :is(#app,#modal) .detail-layout { grid-template-columns: minmax(0,1.65fr) minmax(20rem,1fr); }
  :is(#app,#modal) .word-list { grid-template-columns: repeat(auto-fit,minmax(min(100%,16rem),1fr)); }
  :is(#app,#modal) .word-item { flex-wrap: wrap; font-size: var(--ui-body); }
  :is(#app,#modal) .word-item span { font-size: var(--ui-small); color: var(--ui-muted); }
  .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
  .header-tools-menu { position: relative; }
  .header-tools-menu>summary,.settings-view>summary { display: flex; align-items: center; justify-content: center; gap: .5rem; min-height: 44px; padding: .375rem .625rem; border: 1px solid var(--ui-control-border); border-radius: 7px; font-size: var(--ui-label); line-height: 1.5; cursor: pointer; list-style: none; white-space: nowrap; }
  .header-tools-menu>summary::-webkit-details-marker,.settings-view>summary::-webkit-details-marker { display: none; }
  .header-tools-menu>summary::after,.settings-view>summary::after { content: none; }
  .header-tools-menu[open]>summary .menu-chevron,.settings-view[open]>summary .menu-chevron { transform: rotate(180deg); }
  :is(#app,#modal) summary:focus-visible { outline: 3px solid var(--ui-focus); outline-offset: 3px; }
  .header-tools-panel { position: absolute; right: 0; top: calc(100% + .375rem); z-index: 50; min-width: 16rem; max-width: calc(100vw - 2rem); padding: .75rem; border: 1px solid var(--ui-control-border); border-radius: 10px; box-shadow: 0 8px 24px #0002; }
  .header-tools-menu:not([open]) .header-tools-panel,.settings-view:not([open]) .view-switch { display: none; }
  .workspace-settings { display: grid; gap: .5rem; padding-bottom: .75rem; border-bottom: 1px solid var(--line); }
  .workspace-settings .view-switch { display: flex; flex-direction: column; gap: .375rem; padding-top: .5rem; }
  :is(#app,#modal) .workspace-settings :is(.btn,.view-switch button) { background: var(--surface-raised); color: var(--ui-ink); border: 1px solid var(--ui-control-border); border-radius: 7px; padding: .5rem .625rem; font-size: var(--ui-label); }
  :is(#app,#modal) .workspace-settings .view-switch button.active { color: var(--ui-red-text); background: var(--ui-red-bg); }
  .teacher-identity-bar { background: var(--header-bg); border-bottom: 1px solid var(--line); }
  .teacher-header { top: 0; }
  .teacher-header-inner { height: auto; flex-wrap: wrap; gap: .75rem; padding-block: .375rem; }
  .teacher-header-inner .brand-logo { width: 96px; }
  .teacher-header-tools { gap: .375rem; }
  .header-tools-panel { display: grid; gap: .75rem; background: var(--header-bg); color: var(--ui-ink); max-height: calc(100dvh - 6rem); overflow: auto; }
  .header-tools-panel .staff-tools { flex-direction: column; align-items: stretch; }
  .header-tools-panel :is(.search-button,.reset-button) { display: flex; align-items: center; gap: .5rem; margin: 0; padding: .5rem; text-align: left; }
  .header-tools-panel .header-profile>div,.header-tools-panel .date { display: block; }
  .primary-nav { flex-wrap: wrap; overflow: visible; padding-block: 0; gap: .125rem; }
  :is(#app,#modal) .primary-nav a { min-height: 44px; padding: .375rem .625rem; gap: .375rem; }
  .top-layout .content { padding-top: 1rem; }
  :is(#app,#modal) .page-heading { margin-bottom: 1rem; gap: 1rem; }
  :is(#app,#modal) .page-heading p { margin-top: .375rem; }
  .top-layout .shell,.shell,.public { min-height: 100dvh; }
  .topbar { height: auto; min-height: 4.75rem; flex-wrap: wrap; gap: 1rem; padding-block: .75rem; }
  .toast { font-size: var(--ui-label); line-height: 1.65; }
  #modal { max-width: 62rem; max-height: calc(100dvh - 2rem); width: calc(100% - 2rem); }
  #modal .modal-body { max-height: 65dvh; overflow: auto; }
  #modal .modal-head { gap: 1rem; align-items: flex-start; }
  #modal .modal-head button { color: var(--ui-ink); padding: .5rem; }
  /* Preview text can wrap and rows grow. Only #modal changes, never #print-area. */
  #modal .voca-sheet { font-size: var(--ui-body); line-height: 1.5; padding: .75rem; }
  #modal .voca-sheet-layout { grid-template-columns: minmax(24rem,1fr); width: 100%; min-width: 24rem; gap: 1rem; }
  #modal .voca-middle.with-key .voca-sheet-layout { grid-template-columns: minmax(24rem,2fr) minmax(18rem,1fr); min-width: 43rem; }
  #modal .voca-high .voca-sheet-layout { grid-template-columns: minmax(36rem,1fr); min-width: 36rem; }
  #modal .voca-high.with-key .voca-sheet-layout { grid-template-columns: minmax(36rem,2fr) minmax(20rem,1fr); min-width: 57rem; }
  #modal .voca-sheet :is(table,.key-table,.sheet-meta,.sheet-meta-grid>span,.sheet-footer) { font-size: var(--ui-small); color: #111; }
  #modal .voca-sheet :is(td,th) { height: auto; padding: .5rem .625rem; color: #111; }
  #modal .voca-sheet .number-col { width: 3rem; }
  #modal .voca-sheet :is(.question-table tbody tr,.key-table tr,.sheet-title,.sheet-meta,.sheet-meta-grid,.voca-cell-text) { height: auto; min-height: 0; }
  #modal .voca-sheet .voca-cell-text { font-size: var(--ui-body); line-height: 1.5; }
  #modal .voca-sheet .voca-cell-text strong { font-size: inherit; line-height: inherit; }
  #modal .voca-sheet h2 { font-size: 1.375rem; color: #111; }
  #modal .voca-sheet p { color: #111; }
  #modal .voca-sheet .sheet-meta-grid>* { padding-block: .5rem; }
  #modal .voca-middle .voca-key { padding-top: 0; }
  /* Preserve readable type; recover overview density through hierarchy and spacing. */
  :is(#app,#modal) .top-layout .page-heading .eyebrow { display: none; }
  :is(#app,#modal) .top-layout .page-heading h1 { font-size: clamp(1.75rem,1.5rem + .5vw,2rem); }
  :is(#app,#modal) .top-layout h2 { font-size: 1.25rem; }
  :is(#app,#modal) .top-layout :is(.page-heading p,.card-head p,.request-item p,.list-row p,.next-card p) { font-size: var(--ui-small); }
  :is(#app,#modal) .top-layout .card-pad { padding: 1rem; }
  :is(#app,#modal) .top-layout .card-head { margin-bottom: .75rem; gap: .5rem; }
  :is(#app,#modal) .top-layout .stat { padding: .875rem 1rem; }
  :is(#app,#modal) .top-layout .stats { grid-template-columns: repeat(4,minmax(0,1fr)); gap: .75rem; margin-bottom: 1rem; }
  .top-layout .dashboard-grid { grid-template-columns: minmax(0,1.65fr) minmax(18rem,1fr); gap: 1rem; }
  .top-layout .dashboard-grid>.stack { display: grid; grid-template-columns: minmax(0,1fr); gap: 1rem; }
  .top-layout .dashboard-bottom { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; margin-top: 1rem; }
  :is(#app,#modal) .top-layout .notice-banner { font-size: var(--ui-small); padding: .5rem .75rem; margin-bottom: 1rem; }
  .schedule-calendar { min-width: 0; }
  .schedule-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1rem; margin-bottom: 1rem; }
  .calendar-period { flex: 1 1 18rem; min-width: 0; }
  :is(#app,#modal) .calendar-period p { font-size: var(--ui-small); color: var(--ui-muted); margin-top: .25rem; }
  .schedule-controls { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: .375rem; }
  .calendar-jump { display: flex; align-items: center; gap: .5rem; }
  :is(#app,#modal) .calendar-jump span { font-size: var(--ui-small); color: var(--ui-muted); }
  :is(#app,#modal) .calendar-jump input { font-size: var(--ui-label); min-height: 44px; width: 10rem; padding: .375rem .5rem; border: 1px solid var(--ui-control-border); border-radius: 7px; background: var(--surface-raised); color: var(--ui-ink); }
  .schedule-week { display: grid; grid-template-columns: repeat(7,minmax(7rem,1fr)); gap: .5rem; overflow-x: auto; overscroll-behavior-inline: contain; padding-bottom: .25rem; }
  .schedule-week-day { min-width: 0; }
  .schedule-week .slot-mini { margin-top: .375rem; }
  .schedule-month-scroll { overflow-x: auto; overscroll-behavior-inline: contain; }
  .schedule-month { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); min-width: 42rem; gap: 1px; padding: 1px; background: var(--line); border-radius: 8px; }
  .calendar-weekday,.calendar-month-cell { background: var(--surface-raised); }
  .calendar-weekday.weekend,.calendar-month-cell.weekend { background: var(--surface-soft); }
  :is(#app,#modal) .calendar-weekday { font-size: var(--ui-small); color: var(--ui-muted); text-align: center; padding: .375rem; }
  :is(#app,#modal) .calendar-day-button { display: flex; flex-direction: column; align-items: stretch; width: 100%; padding: .5rem; gap: .25rem; background: transparent; color: var(--ui-ink); text-align: left; border: 2px solid transparent; border-radius: 7px; font-size: var(--ui-label); line-height: 1.5; }
  .calendar-month-cell .calendar-day-button { min-height: 6.25rem; height: 100%; border-radius: 0; }
  :is(#app,#modal) .calendar-day-button:hover { background: var(--ui-gray-bg); }
  :is(#app,#modal) .calendar-day-button.is-selected { border-color: var(--ui-focus); background: var(--ui-red-bg); }
  :is(#app,#modal) .calendar-day-button.is-today time { color: var(--ui-red-text); font-weight: 800; }
  :is(#app,#modal) .calendar-day-button.outside-month { color: var(--ui-muted); }
  .calendar-date { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; }
  :is(#app,#modal) .calendar-date time { font-size: 1.125rem; font-weight: 700; }
  :is(#app,#modal) :is(.calendar-today,.calendar-day-summary,.calendar-makeup,.calendar-closed,.schedule-calendar-foot,.calendar-scroll-hint) { font-size: var(--ui-small); line-height: 1.6; }
  :is(#app,#modal) .calendar-day-summary { color: var(--ui-muted); }
  :is(#app,#modal) :is(.calendar-today,.calendar-makeup) { color: var(--ui-red-text); font-weight: 700; }
  .calendar-closed { color: var(--ui-muted); padding: 1rem .5rem; }
  .schedule-calendar-foot { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .5rem 1rem; margin-top: .5rem; color: var(--ui-muted); }
  .schedule-calendar-foot>span { flex: 1 1 25rem; }
  .calendar-scroll-hint { display: none; margin-top: .5rem; color: var(--ui-muted); }
  .schedule-detail-layout { display: grid; grid-template-columns: minmax(0,1.65fr) minmax(18rem,1fr); gap: 1rem; margin-top: 1rem; }
  .schedule-detail-layout>section { min-width: 0; }
  .schedule-seats { min-width: 31rem; }
  .schedule-month-scroll:focus-visible,.schedule-week:focus-visible { outline: 3px solid var(--ui-focus); outline-offset: 3px; }
  :is(#app,#modal) .week-strip.uses-operational { grid-template-columns: repeat(6,minmax(7rem,1fr)); }
  .ops-source-notes { margin-top: .75rem; }
  :is(#app,#modal) .ops-source-notes summary { font-size: var(--ui-label); min-height: 44px; cursor: pointer; }
  :is(#app,#modal) .ops-source-notes p { white-space: pre-wrap; font-size: var(--ui-small); color: var(--ui-muted); }
  .ops-event-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; padding: .75rem 0; border-bottom: 1px solid var(--line); }
  .ops-event-row>div:first-child { flex: 1 1 20rem; }
  .ops-event-row strong { margin-inline-start: .5rem; }
  :is(#app,#modal) .ops-event-row p { font-size: var(--ui-small); color: var(--ui-muted); margin-top: .375rem; }
  .ops-row-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem; }
  .ops-todo { margin-top: 1rem; }
  .ops-calendar-day { min-height: 7rem; min-width: 0; background: var(--surface-raised); padding: .25rem; }
  .ops-calendar-day.is-today { box-shadow: inset 0 0 0 2px var(--ui-focus); }
  :is(#app,#modal) .ops-calendar-event { display: flex; flex-direction: column; width: 100%; text-align: left; padding: .375rem .5rem; margin-bottom: .25rem; border-radius: 5px; background: var(--ui-gray-bg); color: var(--ui-gray-text); font-size: var(--ui-small); line-height: 1.5; overflow-wrap: anywhere; }
  :is(#app,#modal) .ops-calendar-event.consultation { background: var(--ui-blue-bg); color: var(--ui-blue-text); }
  :is(#app,#modal) .ops-calendar-event.report { background: var(--ui-orange-bg); color: var(--ui-orange-text); }
  :is(#app,#modal) .ops-calendar-event.special { background: var(--ui-red-bg); color: var(--ui-red-text); }
  :is(#app,#modal) .weekday-options { display: flex; flex-wrap: wrap; align-items: center; gap: .625rem; }
  :is(#app,#modal) .weekday-options label { display: flex; align-items: center; gap: .25rem; min-height: 44px; font-size: var(--ui-label); }
  .ops-time-window { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; padding: .625rem 0; border-bottom: 1px solid var(--line); }
  :is(#app,#modal) .ops-time-window label { font-size: var(--ui-label); }
  :is(#app,#modal) .ops-time-window input[type="time"],:is(#app,#modal) #ops-date { font-size: var(--ui-label); color: var(--ui-ink); background: var(--surface-raised); border: 1px solid var(--ui-control-border); padding: .375rem; border-radius: 7px; min-height: 44px; }
  .ops-redirect { display: block; overflow-wrap: anywhere; padding: .75rem; background: var(--surface-soft); color: var(--ui-ink); margin-block: .75rem; }
  @media (max-width: 64rem) {
    .schedule-detail-layout,:is(#app,#modal) .detail-layout { grid-template-columns: minmax(0,1fr); }
  }
  @media (max-width: 60rem) {
    .top-layout .dashboard-grid,.top-layout .dashboard-bottom { grid-template-columns: minmax(0,1fr); }
    .top-layout .dashboard-grid>.stack { grid-template-columns: repeat(2,minmax(0,1fr)); }
  }
  @media (max-width: 55rem) {
    :is(#app,#modal) .top-layout .stats { grid-template-columns: repeat(2,minmax(0,1fr)); }
  }
  @media (max-width: 48rem) {
    .teacher-header { position: static; }
    .schedule-controls { justify-content: flex-start; }
    .calendar-scroll-hint { display: block; }
    .teacher-header-inner { padding-inline: 1rem; }
    .primary-nav { padding-inline: .75rem; }
    .top-layout .content,.content,.public-main { padding-inline: 1rem; }
    :is(#app,#modal) .page-heading { flex-direction: column; align-items: stretch; }
    :is(#app,#modal) .heading-actions { width: 100%; }
    :is(#app,#modal) .heading-actions .btn { flex: 1 1 auto; }
    .public-nav { flex-wrap: wrap; padding-inline: 1rem; }
    .public-nav-links { width: 100%; }
    .public-shortcuts,.module-grid,.module-grid.three,.dashboard-grid>.stack { grid-template-columns: minmax(0,1fr); }
    .public-slot:last-child { display: block; grid-column: auto; }
    .public-slot:last-child .seat-count { text-align: left; margin-top: 1rem; }
    .public-slot:last-child .seat-dots { justify-content: flex-start; }
    .public-form-layout,.form-grid { grid-template-columns: minmax(0,1fr); }
    .top-layout .dashboard-grid>.stack { grid-template-columns: minmax(0,1fr); }
    .view-switch { flex-wrap: wrap; }
    #modal .modal-actions .btn { flex: 1 1 auto; }
  }
  @media (max-width: 34rem) {
    :is(#app,#modal) .top-layout .stats { grid-template-columns: minmax(0,1fr); }
  }

.ops-completeness{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:16px 0}.ops-completeness strong{font-size:1.625rem}.ops-completeness progress{display:block;width:100%;height:10px;margin-top:10px}.vocab-day-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:10px}.vocab-day-card{padding:14px;border:1px solid var(--border);border-radius:12px}.vocab-day-card p{margin:8px 0}.vocab-day-card .actions{flex-wrap:wrap}


  /* Match the original calm header, flat navigation and restrained rose accents. */
  :is(#app,#modal) .account-menu>summary{border-color:transparent;background:transparent;border-radius:999px;gap:.5rem;padding:.375rem .75rem}
  .account-menu>summary:hover,.account-menu[open]>summary{background:var(--surface-raised)}
  .account-menu>summary svg{width:18px;height:18px}
  .account-menu .header-tools-panel{width:18rem;min-width:0;padding:.625rem;border-color:var(--line);border-radius:16px;background:var(--surface);box-shadow:0 16px 48px #0003;gap:.375rem}
  .account-heading{display:flex;align-items:center;gap:.75rem;padding:.625rem .625rem .875rem;border-bottom:1px solid var(--line);margin-bottom:.25rem}
  .account-heading small{display:block;color:var(--ui-muted);font-size:.875rem;margin-top:.125rem}
  :is(#app,#modal) .account-menu .account-item,:is(#app,#modal) .account-menu .settings-view>summary{display:flex;align-items:center;justify-content:flex-start;width:100%;min-height:44px;gap:.75rem;padding:.625rem .75rem;border:0;border-radius:10px;box-shadow:none;background:transparent;color:var(--ui-ink);font-size:1rem;font-weight:500;text-align:left;text-decoration:none}
  :is(#app,#modal) .account-menu .account-item:hover,.account-menu .settings-view>summary:hover{background:var(--surface-raised)}
  .account-menu .account-item svg,.account-menu .settings-view svg{width:19px;height:19px;flex:none;color:var(--ui-muted)}
  .account-menu .workspace-settings{padding-bottom:.375rem;gap:.125rem}
  .account-menu .settings-view>summary::after{margin-left:auto}
  .account-menu .account-section{padding-top:.25rem;border-top:1px solid var(--line)}
  :is(#app,#modal) .account-menu .account-signout{color:var(--ui-muted)}
  .account-menu .settings-view .view-switch{padding:.125rem .625rem .5rem}
  :is(#app,#modal) .account-menu .view-switch button{border:0;background:transparent;text-align:left}
  .vocab-workspace{overflow:hidden}
  .vocab-workspace [hidden]{display:none!important}
  .vocab-student-board{margin-top:1rem;overflow:hidden}
  .vocab-board-toolbar,.vocab-selected-context{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.25rem 1.5rem;background:var(--surface)}
  .vocab-board-toolbar p,.vocab-selected-context p,.vocab-common-context,.vocab-board-note{color:var(--ui-muted);font-size:.875rem}
  .vocab-board-filters{display:flex;gap:.75rem}.vocab-board-filters .field{margin:0}
  .vocab-board-filters input,.vocab-board-filters select{min-height:44px;max-width:12rem}
  .vocab-student-row{display:grid;grid-template-columns:minmax(5rem,.7fr) minmax(10rem,2fr) minmax(10rem,1.3fr) auto;align-items:center;gap:1rem;padding:1rem 1.5rem;border-top:1px solid var(--line)}
  .vocab-student-row:hover{background:var(--surface-raised)}
  .vocab-student-row>div{min-width:0;overflow-wrap:anywhere}.vocab-student-row strong{display:block}
  .vocab-student-row span{display:block;color:var(--ui-muted);font-size:.875rem}
  .vocab-roster-name strong{font-size:1.125rem}.vocab-roster-actions{display:flex;gap:.5rem;flex-wrap:wrap}
  .vocab-board-note{padding:1rem 1.5rem;border-top:1px solid var(--line)}
  .vocab-selected-context{border-bottom:1px solid var(--line)}.vocab-selected-context h2{font-size:1.375rem}.vocab-selected-context h2 span{font-weight:500}
  .vocab-common-context{padding:.75rem 1.5rem;background:var(--surface-raised)}
  .vocab-student-days{padding:0 1.5rem 1rem}.vocab-day-legend{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.vocab-day-legend p{font-size:.875rem;color:var(--ui-muted)}
  .vocab-student-day-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem;max-height:21rem;overflow:auto;padding:.25rem}
  .vocab-student-day{min-width:0;padding:.75rem;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
  .vocab-student-day.is-selected{border:2px solid var(--ui-red-text);padding:calc(.75rem - 1px)}
  .vocab-student-day>div{display:grid;gap:.375rem;margin-top:.5rem}
  :is(#app,#modal) .vocab-day-status{white-space:normal;min-height:44px;font-size:.875rem;justify-content:flex-start;text-align:left}
  :is(#app,#modal) .vocab-day-status.printed{color:var(--ui-green-text);background:var(--ui-green-bg);border-color:currentColor}
  :is(#app,#modal) .vocab-day-status.ready{color:var(--ui-blue-text);background:var(--ui-blue-bg);border-color:currentColor}
  :is(#app,#modal) .vocab-day-status[aria-pressed="true"]{outline:2px solid var(--ui-red-text);outline-offset:1px}
  #vocab-student-setting-form{display:grid;gap:1rem}
  .vocab-roster-select{display:flex;align-items:center;gap:.625rem;min-height:44px;cursor:pointer}
  .vocab-roster-select input,.vocab-roster-select-all input{width:20px;height:20px;min-height:20px;flex:0 0 20px;accent-color:var(--ui-red-text)}
  .vocab-roster-select-all{padding:.5rem 1.5rem;border-top:1px solid var(--line)}.vocab-roster-select-all label{display:flex;align-items:center;gap:.625rem;min-height:44px;cursor:pointer}
  .vocab-task-dock{position:sticky;bottom:0;z-index:12;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;margin-top:1rem;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:0 -4px 16px #00000012}
  .vocab-task-dock p,.vocab-task-dock summary{font-size:.875rem;color:var(--ui-muted)}.vocab-task-dock details>p{max-height:6rem;overflow:auto;max-width:40rem}.vocab-task-dock summary{cursor:pointer;min-height:28px}
  .vocab-task-dock>.actions{flex-wrap:wrap;justify-content:flex-end}.vocab-task-dock>div{min-width:0}
  .vocab-batch-help{margin-bottom:1rem;color:var(--ui-muted);font-size:.875rem}
  .vocab-batch-rows{display:grid;gap:1rem}.vocab-batch-row{padding:1.25rem}.vocab-batch-row-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.vocab-batch-row-head p{font-size:.875rem;color:var(--ui-muted)}
  .vocab-batch-range{display:flex;align-items:center;gap:1rem;margin-block:1rem}.vocab-batch-range label{display:grid;gap:.375rem;min-width:7rem;font-size:.875rem}.vocab-batch-range select{min-height:44px}
  .vocab-batch-questions{margin-block:1rem;border-top:1px solid var(--line)}.vocab-batch-questions>summary{min-height:44px;cursor:pointer;display:flex;align-items:center}.vocab-batch-questions p{font-size:.875rem;color:var(--ui-muted)}
  .vocab-batch-questions ol{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem 2rem;padding-left:1.5rem}.vocab-batch-questions li{padding:.375rem;overflow-wrap:anywhere}.vocab-batch-questions li span{display:block;font-size:.875rem;color:var(--ui-muted)}
  @media(max-width:42rem){.vocab-task-dock{flex-wrap:wrap;padding:.75rem}.vocab-task-dock>.actions{width:100%}.vocab-batch-row{padding:1rem}.vocab-batch-range{gap:.75rem}.vocab-batch-questions ol{grid-template-columns:1fr}.vocab-roster-select-all{padding-inline:1rem}}
  @media(max-width:68rem){.vocab-student-row{grid-template-columns:5rem minmax(9rem,1fr) minmax(9rem,1fr)}.vocab-roster-actions{grid-column:2/-1}.vocab-board-toolbar{align-items:flex-start;flex-wrap:wrap}}
  @media(max-width:42rem){.vocab-student-row{grid-template-columns:4.5rem minmax(0,1fr);padding:1rem;gap:.5rem 1rem}.vocab-roster-history,.vocab-roster-actions{grid-column:2}.vocab-board-toolbar,.vocab-selected-context{padding:1rem;align-items:flex-start;flex-direction:column}.vocab-board-filters{width:100%}.vocab-board-filters .field{min-width:0;flex:1}.vocab-board-filters :is(input,select){width:100%;max-width:none}.vocab-student-days{padding:0 1rem 1rem}.vocab-student-day-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}
  .vocab-workspace-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.25rem 1.5rem;background:var(--surface)}
  .vocab-book-picker{display:flex;align-items:center;gap:1rem;flex:1}
  .vocab-book-picker>label{display:grid;gap:.375rem;color:var(--ui-muted);font-size:.875rem}
  .vocab-book-picker>label:last-child{min-width:0;flex:1;max-width:30rem}
  .vocab-book-picker select{min-height:44px;border-color:var(--line);border-radius:10px;background:var(--surface-raised)}
  .vocab-ready-summary{display:flex;gap:.375rem;flex-wrap:wrap}
  .vocab-workspace-tabs{display:flex;gap:1.5rem;padding:0 1.5rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
  :is(#app,#modal) .vocab-workspace-tabs .btn{min-height:48px;border:0;border-bottom:2px solid transparent;border-radius:0;padding:.625rem .125rem;background:transparent;color:var(--ui-muted);box-shadow:none}
  :is(#app,#modal) .vocab-workspace-tabs .btn.active{color:var(--ui-red-text);border-bottom-color:var(--ui-red-text)}
  .vocab-exam-workbench{max-width:54rem;margin:auto;padding:1.5rem}
  .vocab-exam-choices{display:grid;grid-template-columns:2fr 1fr 1fr;gap:1rem}
  .vocab-exam-choices select{min-height:48px;border-color:var(--line);border-radius:10px}
  .vocab-student-progress{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-radius:10px;background:var(--surface-raised);margin-top:1rem;gap:.75rem}
  .vocab-student-progress span{margin-left:.75rem;color:var(--ui-muted)}
  .vocab-exam-preview-state{display:flex;align-items:center;gap:1rem;padding:1.75rem 0 1.25rem}
  .vocab-state-symbol{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:16px;background:var(--ui-red-bg);color:var(--ui-red-text);font-size:1.75rem}
  .vocab-exam-preview-state h2{font-size:1.75rem;margin:.25rem 0}.vocab-exam-preview-state h2>span{font-size:1.125rem;font-weight:500;color:var(--ui-muted)}
  .vocab-exam-preview-state p{margin:.375rem 0 0;color:var(--ui-muted)}
  .vocab-exam-settings,.vocab-word-inspection,.vocab-progress-history{border-top:1px solid var(--line);margin-top:1.25rem;padding-top:.75rem}
  :is(.vocab-exam-settings,.vocab-word-inspection,.vocab-progress-history)>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;justify-content:space-between;color:var(--ui-muted)}
  :is(.vocab-exam-settings,.vocab-word-inspection,.vocab-progress-history)>summary::after{content:'＋'}
  :is(.vocab-exam-settings,.vocab-word-inspection,.vocab-progress-history)[open]>summary::after{transform:rotate(90deg)}
  .vocab-readonly-words{display:grid;grid-template-columns:1fr 1fr;gap:0 1.5rem}.vocab-readonly-words>div{display:flex;justify-content:space-between;gap:.75rem;padding:.625rem 0;border-bottom:1px solid var(--line)}.vocab-readonly-words span{color:var(--ui-muted);text-align:right}
  .vocab-history-list{display:flex;gap:.75rem;flex-wrap:wrap}.vocab-history-list>span{padding:.5rem .75rem;background:var(--surface-raised);border-radius:8px}.vocab-history-list small{color:var(--ui-muted)}
  .vocab-archive{padding:1.5rem}.vocab-workspace>.card{box-shadow:none;border:0}
  :is(#app,#modal) .seat-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.375rem .625rem;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ui-green-text);font-size:.875rem;white-space:nowrap}
  :is(#app,#modal) .seat-link:hover{background:var(--ui-green-bg)}:is(#app,#modal) .seat-link.is-full{color:var(--ui-red-text)}
  .slot-mini .seat-link{display:block;width:100%;margin-top:.375rem;background:transparent;white-space:normal;color:inherit}
  .ops-seat-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem}.ops-seat-heading>strong{font-size:2rem}.ops-seat-heading>strong>span{font-size:1rem;color:var(--ui-muted);font-weight:400}.ops-class-seats{display:flex;flex-wrap:wrap;gap:.375rem;margin-top:.75rem}.ops-filter-banner{display:flex;justify-content:space-between;align-items:center;padding:.625rem 1rem;border-radius:10px;background:var(--surface-raised);margin-bottom:1rem}
  .floating-guide{position:fixed;bottom:1rem;right:1.25rem;z-index:45}
  body:has(.vocab-task-dock) .floating-guide{bottom:9rem}
  @media(max-width:42rem){body:has(.vocab-task-dock) .floating-guide{bottom:12rem}}
  .floating-guide>summary{display:flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;padding:.625rem 1rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);box-shadow:0 4px 18px #0002;color:var(--ui-muted);cursor:pointer;list-style:none;font-size:.875rem}
  .floating-guide>summary::-webkit-details-marker{display:none}.floating-guide svg{width:18px;height:18px}
  .floating-guide-panel{position:absolute;right:0;bottom:calc(100% + .625rem);width:21rem;max-width:calc(100vw - 2rem);padding:1.25rem;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 12px 40px #0003}.floating-guide-panel p{margin:.625rem 0 0;line-height:1.7;color:var(--ui-muted)}
  .floating-guide:not([open]) .floating-guide-panel{display:none}.top-layout .content{padding-bottom:5rem}
  @media(max-width:42rem){.vocab-workspace-top,.vocab-book-picker{align-items:stretch;flex-direction:column}.vocab-ready-summary{display:none}.vocab-exam-choices{grid-template-columns:1fr 1fr}.vocab-exam-choices>label:first-child{grid-column:1/-1}.vocab-workspace-tabs{gap:1rem;padding-inline:1rem}.vocab-exam-workbench,.vocab-archive{padding:1rem}.vocab-readonly-words{grid-template-columns:1fr}.floating-guide{right:1rem}.vocab-student-progress{align-items:flex-start;flex-direction:column}.vocab-student-progress span{display:block;margin:.25rem 0 0}}


  .slot-interactive{width:100%;border:0;font-family:inherit;text-align:left;cursor:pointer;transition:box-shadow .15s}.slot-interactive:hover{box-shadow:inset 0 0 0 1px var(--ui-control-border)}.slot-available{font-size:.875rem;margin-top:.375rem}

  .public-form-layout{grid-template-columns:minmax(0,44rem);justify-content:center}

  .menu-chevron{width:16px;height:16px;flex:none;margin-left:auto;transition:transform .16s ease}
  :is(#app,#modal) .account-menu .header-tools-panel{background:var(--surface,#fff);isolation:isolate;opacity:1}
  .floating-guide-panel,.floating-guide>summary{background:var(--surface,#fff)}
  [data-theme="light"]{color-scheme:light;--bg:#f7f6f3;--ink:#292b31;--white:#fff;--surface:#fff;--header-bg:#fff;--surface-soft:#f7f5f2;--surface-raised:#f7f5f2;--line:#e7e5e2;--border:#e7e5e2;--shadow:0 10px 30px #26232808}
  [data-theme="light"] .account-menu .header-tools-panel{box-shadow:0 14px 40px #292b3120}
  [data-theme="light"] :is(dialog,.header-tools-panel){background:var(--surface);color:var(--ui-ink)}
  [data-theme="light"] .teacher-identity-bar,[data-theme="light"] .teacher-header{background:var(--header-bg)}
  @media(prefers-reduced-motion:reduce){.menu-chevron{transition:none}}

  .calendar-window{padding:1rem;min-height:100vh;background:var(--bg)}.calendar-window-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:0 .25rem 1rem;flex-wrap:wrap}.calendar-window-brand{display:flex;align-items:center;gap:.625rem}.calendar-window>.toolbar{margin-bottom:.75rem}.calendar-window .schedule-toolbar{margin-bottom:.75rem}.calendar-window .card-pad{padding:1rem}.calendar-window .ops-calendar-day{min-height:112px}
  @media(max-width:42rem){.calendar-window{padding:.5rem}.calendar-window-header{gap:.5rem}.calendar-window-header>.text-link{margin-left:auto}}

 .holiday-label{display:block;color:var(--ui-red-text);font-weight:600;font-size:.875rem;line-height:1.4;margin:.2rem 0;overflow-wrap:anywhere}
 .is-holiday{background:var(--ui-red-bg);border-color:var(--border)}
 .ops-calendar-event small{display:block;font-size:.875rem;line-height:1.4}
 .holiday-edit-row{display:grid;grid-template-columns:minmax(140px,1.5fr) minmax(125px,1fr) minmax(125px,1fr) auto;gap:.6rem;padding:.75rem 0;border-bottom:1px solid var(--border);align-items:end}
 .holiday-edit-row label{display:grid;gap:.3rem;font-size:.875rem}
 .holiday-edit-row input{width:100%;min-width:0}
 @media(max-width:42rem){.holiday-edit-row{grid-template-columns:1fr 1fr}.holiday-edit-row label:first-child{grid-column:1/-1}}
 .slot-seat-row{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;width:100%;flex-wrap:wrap}
 .slot-seat-row .slot-available{margin-left:auto;text-align:right;white-space:nowrap}
 .payment-options{display:flex;gap:1rem;flex-wrap:wrap}

 .ops-directory-toolbar{align-items:center;gap:1rem}
 .ops-directory-actions{display:flex;align-items:center;gap:.75rem;margin-left:auto;flex-wrap:wrap}
 .ops-filter-control{display:flex;align-items:center;gap:.625rem;white-space:nowrap;font-size:var(--ui-label)}
 .select-control{position:relative;display:inline-flex;align-items:center;min-width:9rem}
 :is(#app,#modal) .select-control select{appearance:none;width:100%;min-height:44px;border:1px solid var(--ui-control-border);border-radius:10px;background:var(--surface);color:var(--ui-ink);padding:.625rem 2.5rem .625rem .875rem;font-size:var(--ui-label);line-height:1.5}
 .select-control svg{position:absolute;right:.75rem;pointer-events:none;width:18px;height:18px}
 .ops-linked-value{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;padding:.75rem 1rem;border:1px solid var(--border);border-radius:10px;background:var(--surface-soft)}
 .ops-linked-value span{color:var(--ui-muted)}
 .field-label{font-size:var(--ui-label);font-weight:600}
 .form-error-summary{padding:1rem;margin-bottom:1rem;background:var(--ui-red-bg);color:var(--ui-red-text);border:1px solid currentColor;border-radius:10px}
 .form-error-summary ul{margin:.5rem 0 0;padding-left:1.25rem}
 .form-error-summary .text-link{color:inherit;text-decoration:underline;text-align:left}
 @media(max-width:42rem){.ops-directory-actions{width:100%;margin-left:0;justify-content:space-between}.ops-filter-control{flex:1}.select-control{flex:1;min-width:0}.ops-directory-toolbar>.tabs{width:100%}}

 :is(#app,#modal) .dashboard-home .card-pad{padding:.875rem}
 .dashboard-home .stats{margin-bottom:.75rem}
 .dashboard-home .dashboard-grid,.dashboard-home .dashboard-bottom{gap:.75rem}
 .dashboard-home .dashboard-bottom{margin-top:.75rem}
 .dashboard-home .dashboard-grid>.stack{gap:.75rem;grid-template-rows:auto 1fr}
 .dashboard-home .card-head{margin-bottom:.5rem}
 .dashboard-home .dashboard-card-actions{display:flex;align-items:center;gap:.5rem}
 .dashboard-home .next-card{min-height:0}
 .dashboard-home .next-card p{margin:.375rem 0 .625rem}
 .dashboard-home .request-item,.dashboard-home .list-row{padding:.5rem 0}
 .dashboard-home .report-preview{padding:.75rem;margin-bottom:.5rem}
 .dashboard-home .week-strip{gap:.375rem;padding-top:.5rem}
 .dashboard-home .weekday{padding-bottom:.375rem}
 .dashboard-home .weekday b{margin-top:.125rem}
 .dashboard-home .slot-mini{min-height:0;padding:.375rem .5rem;margin-bottom:.375rem}
 .dashboard-slot-heading{display:flex;align-items:baseline;justify-content:space-between;gap:.25rem}
 :is(#app,#modal) .dashboard-home .dashboard-slot-heading strong{font-size:var(--ui-small);margin:0}
 .dashboard-home .slot-seat-row{gap:.25rem}
 :is(#app,#modal) .dashboard-home .slot-available{font-size:var(--ui-small)}
 .dashboard-home .schedule-legend{margin-top:.5rem;flex-wrap:wrap;gap:.25rem .75rem}
 .ops-calendar-toolbar{align-items:center;gap:.75rem}
 .ops-calendar-toolbar>.btn{margin-left:auto}
 .ops-setting-options{display:grid;gap:.75rem}
 .ops-setting-options>.btn{display:flex;justify-content:space-between;text-align:left;white-space:normal;gap:1rem;padding:1rem}
 .ops-setting-options small{display:block;margin-top:.25rem;color:var(--ui-muted);font-weight:400}
 @media(max-width:42rem){.ops-calendar-toolbar>.tabs{width:100%}.ops-calendar-toolbar>.btn{margin-left:0}}


/* Integrated date selection and book management share the existing screen theme. */

  .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
  :is(#app,#modal) .calendar-date-trigger{gap:.625rem;border-radius:10px;background:var(--surface-raised);color:var(--ui-ink);min-height:44px;padding:.5rem .75rem}
  .calendar-date-trigger svg{width:18px;height:18px;flex-shrink:0}.calendar-date-trigger svg:last-child{width:14px}
  #modal.date-picker-dialog{max-width:440px}.date-picker-dialog .modal-head{padding:1rem 1.25rem}.date-picker-dialog .modal-body{padding:1rem 1.25rem}.date-picker-dialog .modal-actions{padding:.75rem 1.25rem}
  .date-picker-month{display:flex;align-items:center;gap:.375rem;margin-bottom:1rem}.date-picker-month-form{display:flex;align-items:center;justify-content:center;gap:.25rem;flex:1;min-width:0}
  :is(#app,#modal) .date-picker-month-form :is(input,select){min-height:44px;background:var(--surface-raised);color:var(--ui-ink);border:1px solid var(--line);border-radius:8px;padding:.375rem;font-size:.9375rem}
  .date-picker-month-form input{width:4.5rem}.date-picker-month-form select{width:4.5rem}
  :is(#app,#modal) .date-picker-nav{padding:.375rem;width:44px;min-width:44px;height:44px}.date-picker-nav svg{width:20px;height:20px}
  .date-picker-weekdays,.date-picker-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.125rem}.date-picker-weekdays{font-size:.875rem;text-align:center;color:var(--ui-muted);margin-bottom:.375rem}
  :is(#app,#modal) .date-picker-day{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:44px;border-radius:10px;border:1px solid transparent;background:var(--surface);color:var(--ui-ink);font-size:1rem;padding:.25rem;line-height:1.3}
  .date-picker-day i{height:.375rem;font-size:.875rem;line-height:.375rem;color:var(--ui-red-text);font-style:normal}.date-picker-day.outside-month{background:var(--surface-soft);color:var(--ui-muted)}
  :is(#app,#modal) .date-picker-day:hover{background:var(--surface-raised);border-color:var(--line)}:is(#app,#modal) .date-picker-day.is-today{border-color:var(--ui-red-text)}:is(#app,#modal) .date-picker-day[aria-pressed="true"]{background:var(--ui-red-bg);color:var(--ui-red-text);border-color:var(--ui-red-text);font-weight:700}
  .date-picker-legend{display:flex;justify-content:space-between;gap:.5rem;font-size:.875rem;color:var(--ui-muted);margin-top:1rem;flex-wrap:wrap}
  .vocab-book-list{display:grid;gap:.625rem}.vocab-book-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem;border:1px solid var(--line);border-radius:12px;background:var(--surface-raised)}.vocab-book-row>div:first-child{min-width:0}.vocab-book-row strong{overflow-wrap:anywhere}
  :is(#app,#modal) .vocab-book-row p{font-size:.875rem;margin:.25rem 0 0;line-height:1.5}.vocab-book-actions{display:flex;align-items:center;gap:.375rem;flex-wrap:wrap;justify-content:flex-end;flex-shrink:0}.vocab-book-trash{margin-top:1rem}.vocab-book-trash>summary{cursor:pointer;color:var(--ui-muted);padding:.75rem 0;font-size:.9375rem}.vocab-book-exams{display:grid;gap:.625rem}
  @media(max-width:480px){.vocab-book-row{flex-direction:column;align-items:stretch;gap:.75rem}.vocab-book-actions{justify-content:flex-start}.date-picker-dialog .modal-body{padding:.75rem}.date-picker-month-form .btn{padding:.375rem}.date-picker-month{gap:.125rem}.date-picker-month-form input{width:4rem}}

  .message-mode{margin-bottom:1rem}.message-composer form{display:grid;gap:1rem}.message-composer textarea{min-height:10rem}.message-compose-foot,.message-recipient-toolbar,.message-draft-summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.message-compose-foot>span,.message-recipient-toolbar>span,.message-draft-summary>span{font-size:.875rem;color:var(--ui-muted)}
  .message-recipient-list{max-height:18rem;overflow:auto;display:grid;gap:.375rem}.message-recipient{display:flex;align-items:center;gap:.75rem;min-height:56px;border:1px solid var(--line);padding:.625rem .75rem;border-radius:10px;background:var(--surface-raised);cursor:pointer}.message-recipient input{width:20px;height:20px;accent-color:var(--ui-red-text);flex-shrink:0}.message-recipient span{display:grid}.message-recipient small{color:var(--ui-muted)}.message-recipient.unavailable{background:var(--surface-soft);cursor:default}
  .message-draft-summary{margin-bottom:1rem}.message-draft-actions{display:flex;justify-content:flex-end;margin:.625rem 0 1rem}.message-send-list,.message-history{display:grid;gap:.75rem}.message-send-row{display:grid;gap:.75rem;padding:1rem;border:1px solid var(--line);border-radius:12px;background:var(--surface-raised)}.message-send-row strong{overflow-wrap:anywhere}.message-send-row p{margin-top:.25rem}.message-send-actions{display:flex;gap:.5rem;flex-wrap:wrap}.message-device-help{margin-top:1rem}.message-device-help summary{cursor:pointer;padding:.75rem 0;color:var(--ui-muted);font-size:.9375rem}.message-device-help p{margin:.75rem 0}
  .message-connection{display:flex;align-items:center;gap:.75rem;padding:.875rem;margin-bottom:1rem;border:1px solid var(--line);border-radius:12px;background:var(--surface-raised)}.message-connection-icon{display:grid;place-items:center;width:40px;height:40px;flex-shrink:0;background:var(--surface-soft);border-radius:10px;color:var(--ui-red-text)}.message-connection>div{display:grid;gap:.25rem;flex:1;min-width:0}.message-connection strong{overflow-wrap:anywhere}.message-connection small{color:var(--ui-muted);font-size:.875rem}
  .message-setup-intro{display:flex;gap:.875rem;align-items:flex-start;padding:1rem;border:1px solid var(--line);background:var(--surface-raised);border-radius:12px}.message-setup-intro>span{color:var(--ui-red-text)}.message-setup-intro p{margin:.375rem 0 0}.message-gateway-form{display:grid;gap:1rem;margin-top:1rem}.message-setup-tools{display:flex;justify-content:flex-end}.message-device-help ol{padding-left:1.5rem;display:grid;gap:.75rem;line-height:1.65}.message-device-help a{color:var(--ui-red-text)}.message-disconnect{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--line);flex-wrap:wrap}.message-state{font-weight:600}.message-state.needs-attention{color:var(--ui-red-text)}.message-draft-actions{gap:.625rem;flex-wrap:wrap}
  @media(max-width:480px){.message-connection{flex-wrap:wrap}.message-connection>.btn{margin-left:auto}.message-draft-actions>.primary{width:100%;justify-content:center}}
  #phone-panel #phone-body{min-height:5.5rem}#phone-status>.message-send-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;margin-top:1rem}
  .family-foundation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin:1rem 0}.family-foundation-grid>div{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:var(--surface-raised);border:1px solid var(--line);border-radius:10px}.family-foundation-grid strong{font-size:1.5rem}.family-foundation-grid span{font-size:.875rem}

  .vocab-print-context{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}.vocab-print-context>span{font-size:.875rem;color:var(--ui-muted)}

  #modal .voca-sheet-layout{column-gap:2rem}#modal .voca-key-heading{height:19mm;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:.375rem;color:#111;font-size:1.125rem}#modal .voca-key-heading small{font-size:.875rem;color:#444}#modal .voca-key{padding-top:0}

/* PC SMS: shared theme surfaces, compact modes and readable recipient roster. */
.phone-live{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;font-size:.9rem;margin:.25rem 0 1rem}.phone-link-state{display:inline-flex;gap:.4rem;align-items:center;color:var(--muted)}.phone-link-state.is-live{color:var(--ui-red-text)}.phone-link-state svg{width:18px;height:18px}.phone-modes{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.phone-recipients{max-height:14rem;overflow:auto;border:1px solid var(--ui-control-border);border-radius:12px;padding:.25rem;margin:.6rem 0}.phone-recipient-row{display:flex;align-items:center;gap:.75rem;min-height:52px;padding:.5rem .75rem;border-radius:8px;cursor:pointer}.phone-recipient-row:hover{background:var(--surface)}.phone-recipient-row input{width:18px;height:18px;flex-shrink:0}.phone-recipient-row span{display:grid;gap:.15rem}.phone-recipient-row small,.phone-history p,#phone-setup small{display:block;font-size:.875rem;color:var(--muted)}.phone-history .message-send-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1rem}.phone-history .message-draft-actions{margin:0}.phone-history p{margin:.25rem 0}.phone-history{margin-top:1rem}
@media(max-width:600px){.phone-history .message-send-row{grid-template-columns:1fr}.phone-modes .btn{flex:1}.phone-live{align-items:flex-start}}

  /* Dense calendar controls retain clear names, keyboard focus and theme contrast. */
  .ops-event-range{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:.75rem;align-items:end}.ops-event-range>span{padding-bottom:.75rem}.ops-event-note>summary{cursor:pointer;padding:.625rem 0;color:var(--ui-muted)}
  .ops-linked-guardian .ops-linked-value{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;padding:.625rem .875rem}.ops-linked-guardian{margin-bottom:0}.ops-linked-guardian>.field-label{font-size:.875rem}
  .ops-day-events{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.375rem}.ops-event-tile{display:flex;align-items:flex-start;min-width:0;padding:.25rem;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft);color:var(--ui-ink);gap:.125rem}.ops-event-tile.consultation{background:var(--ui-blue-bg);color:var(--ui-blue-text)}.ops-event-tile.report{background:var(--ui-orange-bg);color:var(--ui-orange-text)}
  :is(#app,#modal) .ops-completion{display:grid;place-items:center;flex:none;width:28px;height:28px;min-height:28px;padding:3px;border:0;border-radius:5px;box-shadow:none;background:transparent;color:inherit}.ops-completion svg{width:22px;height:22px}.ops-completion.is-done{color:var(--ui-green-text)}
  :is(#app,#modal) .ops-event-open{display:block;min-width:0;min-height:44px;padding:.125rem;border:0;background:transparent;color:inherit;text-align:left;box-shadow:none}.ops-event-open span{display:block;font-size:.875rem;white-space:nowrap}.ops-event-open strong{font-size:.875rem;line-height:1.4;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
  .ops-event-tile.is-done{background:var(--ui-green-bg);color:var(--ui-green-text)}.ops-event-tile.is-done strong,.ops-event-row.is-done strong{text-decoration:line-through}.ops-event-row.is-done{background:var(--ui-green-bg)}.ops-event-copy{flex:1;min-width:0}.ops-event-row{display:flex;align-items:center;gap:.625rem}.ops-event-row .ops-row-actions{flex-wrap:wrap}
  :is(#app,#modal) .ops-more-events{min-height:32px;padding:.25rem .5rem;margin-top:.375rem;font-size:.875rem}.ops-completion:focus-visible,.ops-event-open:focus-visible{outline:2px solid var(--ui-focus);outline-offset:2px}.slot-available.is-over-capacity{color:var(--ui-red-text);background:var(--ui-red-bg)}
  .phone-workspace{display:grid;grid-template-columns:minmax(0,1fr) 18rem;gap:1.5rem;align-items:start}.phone-main{min-width:0}.phone-history-side{min-width:0;border-left:1px solid var(--line);padding-left:1.25rem}.phone-history-side .card-head{margin:0 0 .75rem}.phone-history-side h3{font-size:1rem}.phone-history-side .phone-history{margin-top:0}.phone-history-side .message-send-row{padding:.75rem;grid-template-columns:1fr;gap:.375rem;margin-bottom:.5rem}.phone-history-side .message-draft-actions{justify-content:flex-start;gap:.375rem}.phone-history-side p{line-height:1.5}.phone-history-side #phone-status{max-height:36rem;overflow:auto}.phone-main #phone-body{min-height:9rem}
  @media(max-width:1100px){.phone-workspace{grid-template-columns:minmax(0,1fr) 15rem;gap:1rem}.phone-history-side{padding-left:.75rem}}
  @media(max-width:800px){.phone-workspace{grid-template-columns:1fr}.phone-history-side{border-left:0;border-top:1px solid var(--line);padding:1rem 0 0}.ops-event-range{grid-template-columns:1fr}.ops-event-range>span{display:none}.ops-event-row{flex-wrap:wrap}.ops-event-row .ops-row-actions{margin-left:auto}}
  /* Weekly work is the primary surface; the month is a compact orientation aid. */
  .ops-work-top,.ops-work-views{display:flex;align-items:center;justify-content:space-between;gap:.625rem;flex-wrap:wrap}.ops-work-top{margin-bottom:.875rem}.ops-work-top h2{font-size:1.125rem;margin:0}.ops-work-filter{justify-content:space-between;gap:.75rem}.ops-workspace{display:grid;grid-template-columns:minmax(0,1fr) 18rem;gap:1.25rem;align-items:start}.ops-work-main,.ops-work-sidebar{display:grid;gap:1rem;min-width:0}.ops-work-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.ops-work-columns.single{grid-template-columns:1fr}.ops-work-group{min-width:0;overflow:hidden}.ops-work-group-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;padding:1rem;border-bottom:1px solid var(--line)}.ops-work-group-head>div{display:flex;align-items:center;gap:.625rem}.ops-work-group-head h2{margin:0;font-size:1.125rem}.ops-work-group-head>span{color:var(--ui-muted);font-size:.875rem}.ops-work-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--ui-blue-bg);color:var(--ui-blue-text)}.ops-work-icon svg{width:22px;height:22px}.ops-work-group.report .ops-work-icon{background:var(--ui-orange-bg);color:var(--ui-orange-text)}.ops-work-row{display:flex;align-items:center;gap:.375rem;padding:.75rem .625rem;border-bottom:1px solid var(--line);min-height:72px}.ops-work-copy{flex:1;min-width:0}.ops-work-copy strong{font-size:1rem;overflow-wrap:anywhere}.ops-work-copy p{margin:.25rem 0 0;color:var(--ui-muted);font-size:.875rem;line-height:1.5}.ops-work-row.is-done{background:var(--ui-green-bg)}.ops-work-row.is-done strong{text-decoration:line-through;color:var(--ui-green-text)}:is(#app,#modal) .ops-work-row .ops-completion{width:44px;height:44px;min-height:44px;padding:10px}.ops-work-edit svg{width:18px;height:18px}.ops-work-group-footer{padding:.5rem 1rem}.ops-work-empty{padding:1.5rem 1rem}.ops-work-empty p{font-size:.875rem;color:var(--ui-muted);margin:.5rem 0 0}.ops-work-overdue>summary,.ops-work-waiting>summary{padding:1rem;cursor:pointer;font-weight:600}.ops-work-overdue>summary{color:var(--ui-red-text)}.ops-work-overdue summary strong,.ops-work-waiting summary strong{margin-left:.375rem}.ops-overdue-label{color:var(--ui-red-text);font-weight:600}.ops-work-waiting>div>p{padding:0 1rem 1rem}.ops-mini-calendar .card-head h2,.ops-week-summary h2{font-size:1rem;margin:0}.ops-mini-calendar .card-head>div{display:flex;gap:.25rem}.ops-mini-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}.ops-mini-weekday{text-align:center;color:var(--ui-muted);font-size:.875rem;padding:.25rem 0}.ops-mini-date{display:grid;place-items:center;align-content:center;gap:3px;min-height:40px;min-width:24px;padding:3px;border:1px solid transparent;border-radius:8px;color:var(--ui-ink);background:transparent;font-size:.875rem;cursor:pointer}.ops-mini-date.is-outside{color:var(--ui-muted)}.ops-mini-date.is-selected-week{background:var(--surface-soft);border-color:var(--line)}.ops-mini-date.is-today{border-color:var(--ui-focus);font-weight:700}.ops-mini-date.is-holiday{color:var(--ui-red-text)}.ops-mini-date:focus-visible{outline:2px solid var(--ui-focus);outline-offset:1px}.ops-mini-dots{display:flex;justify-content:center;gap:2px;height:4px}.ops-mini-dots i,.ops-mini-legend i{display:inline-block;width:4px;height:4px;border-radius:50%;background:var(--ui-muted)}.ops-mini-dots .consultation,.ops-mini-legend .consultation{background:var(--ui-blue-text)}.ops-mini-dots .report,.ops-mini-legend .report{background:var(--ui-orange-text)}.ops-mini-dots .done,.ops-mini-legend .done{background:var(--ui-green-text)}.ops-mini-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:.625rem;margin:.75rem 0;font-size:.875rem;color:var(--ui-muted)}.ops-mini-legend span{display:flex;align-items:center;gap:.25rem}.ops-week-summary>div{display:grid;grid-template-columns:1fr auto;gap:.5rem;margin-top:1rem;font-size:.875rem}.ops-week-summary progress{grid-column:1/-1;width:100%;height:6px;accent-color:var(--ui-green-text)}.ops-event-range[hidden],.ops-task-month[hidden]{display:none}.ops-profile-summary{margin-top:1rem}.ops-profile-summary dl{display:grid;grid-template-columns:auto 1fr;gap:.5rem 1rem;font-size:.875rem}.ops-profile-summary dt{color:var(--ui-muted)}.ops-profile-summary dd{margin:0;overflow-wrap:anywhere}
  @media(max-width:1200px){.ops-workspace{grid-template-columns:minmax(0,1fr) 16rem}.ops-work-columns{grid-template-columns:1fr}}
  @media(max-width:800px){.ops-workspace{grid-template-columns:1fr}.ops-work-sidebar{grid-template-columns:1fr 1fr}.ops-work-top .schedule-controls{flex-wrap:wrap}.ops-work-filter>.tabs{flex-wrap:wrap}}
  @media(max-width:520px){.ops-work-sidebar{grid-template-columns:1fr}.ops-work-row{padding:.625rem .375rem}.ops-work-views{width:100%}}
 .notice-library{margin-top:1rem}.notice-library>summary,.cur-inventory>summary,.cur-history>summary{font-weight:700;cursor:pointer;min-height:44px;display:flex;align-items:center;gap:.5rem}.notice-library>summary::before,.cur-inventory>summary::before,.cur-history>summary::before{content:'';width:18px;height:18px;display:inline-block;background:currentColor;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m8 4 8 8-8 8' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E") center/contain no-repeat;color:var(--ui-muted)}.notice-library[open]>summary::before,.cur-inventory[open]>summary::before,.cur-history[open]>summary::before{transform:rotate(90deg)}
 .message-composer{width:100%}.phone-workspace{grid-template-columns:minmax(0,1fr) 15rem;gap:1.75rem}.phone-main #phone-body{min-height:16rem}.phone-history-side #phone-status{max-height:38rem}.phone-history-side strong{font-size:.9rem}.phone-history-side p{font-size:.875rem}
 .curriculum-page{display:grid;gap:1.25rem}.cur-intro{display:flex;justify-content:space-between;align-items:center;gap:2rem}.cur-intro h2{margin:.35rem 0}.cur-intro p{color:var(--ui-muted);margin:.35rem 0}.cur-summary{display:flex;gap:2rem;flex:none}.cur-summary strong{display:grid;gap:.25rem;font-size:2rem;color:var(--ui-blue-text)}.cur-summary small{font-size:.875rem;color:var(--ui-muted);font-weight:500}
 .cur-phonics{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.cur-phonics .card{border-top:3px solid var(--ui-blue-text)}.cur-phonics .card:first-child{border-top-color:var(--ui-green-text)}.cur-phonics p{color:var(--ui-muted);font-size:.875rem}.cur-phonics .btn{float:right}.cur-roadmap{position:relative;display:grid;gap:1.25rem}.cur-roadmap::before{content:'';position:absolute;left:1.25rem;top:2rem;bottom:2rem;border-left:2px solid var(--line);z-index:0}.cur-milestone{position:relative;display:grid;grid-template-columns:12rem minmax(0,1fr) 3rem;gap:1.25rem;align-items:center}.cur-step-label{align-self:start;display:grid;gap:.35rem;padding:1rem 0 0 2.5rem;position:relative}.cur-step-label::before{content:'';position:absolute;left:.85rem;top:1.4rem;width:.85rem;height:.85rem;border:3px solid var(--ui-blue-text);border-radius:50%;background:var(--surface)}.cur-step-label span{font-weight:700}.cur-step-label small,.cur-lane-total{font-size:.875rem;color:var(--ui-muted)}.cur-lane-total{text-align:right}.cur-stage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr));gap:.75rem}.cur-stage{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;padding:1rem;border:1px solid var(--line);border-radius:16px;background:var(--surface);color:var(--ui-ink);cursor:pointer;text-align:left;min-height:150px;transition:transform .15s,border-color .15s}.cur-stage:hover{transform:translateY(-2px);border-color:var(--ui-blue-text)}.cur-stage>strong{font-size:1.1rem}.cur-stage>span:not(.cur-stage-icon):not(.cur-book-bars),.cur-stage>small{font-size:.875rem;color:var(--ui-muted)}.cur-stage-icon{color:var(--ui-blue-text)}.cur-stage-icon svg{width:22px;height:22px}.cur-stage small{display:flex;align-items:center;margin-top:auto}.cur-stage small svg{width:14px;height:14px}.cur-book-bars{display:flex;gap:2px;width:100%;height:6px;margin:.35rem 0}.cur-book-bars i{background:var(--ui-blue-text);opacity:.65;border-radius:2px;min-width:2px}.cur-book-bars i:nth-child(3n+2){opacity:.35}.cur-book-bars i:nth-child(3n+3){opacity:.85}
 .cur-series-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.cur-series{padding:1.1rem;border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.cur-series h3{font-size:1.05rem;margin:.25rem 0}.cur-series p{font-size:.875rem;color:var(--ui-muted);margin:.25rem 0}.cur-series>.btn{margin-top:auto}.cur-volume-dots{display:flex;flex-wrap:wrap;gap:.25rem}.cur-volume-dots span{display:grid;place-items:center;min-width:1.5rem;height:1.5rem;border-radius:6px;background:var(--ui-blue-bg);color:var(--ui-blue-text);font-size:.875rem}.cur-next,.cur-source-note{display:flex;align-items:flex-start;gap:.4rem}.cur-next svg,.cur-source-note svg{width:16px;height:16px;flex:none}.cur-source-note{color:var(--ui-orange-text)!important}.cur-series.is-disabled{opacity:.65}
 .cur-student-row{display:grid;grid-template-columns:12rem minmax(0,1fr) auto;align-items:center;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--line)}.cur-student-row:last-child{border:0}.cur-student-name{display:flex;gap:.75rem;align-items:center}.cur-student-name small,.cur-student-book p{display:block;color:var(--ui-muted);font-size:.875rem;margin:.25rem 0}.cur-student-book p svg{width:14px;height:14px;vertical-align:middle}.cur-row-actions{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.cur-search{max-width:12rem}.cur-history .list-row{justify-content:space-between}.cur-history .list-row>div{flex:1}
 .cur-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin:1rem 0}.cur-stat-grid>div{padding:.9rem 1rem;border:1px solid var(--line);border-radius:12px;display:grid;gap:.25rem}.cur-stat-grid small{font-size:.875rem;color:var(--ui-muted)}.cur-stat-grid strong{font-size:1.5rem}.cur-table{width:100%;border-collapse:collapse}.cur-table th{text-align:left;font-size:.875rem;color:var(--ui-muted);padding:.75rem;border-bottom:1px solid var(--line);white-space:nowrap}.cur-table td{padding:.85rem .75rem;border-bottom:1px solid var(--line)}.cur-table td small{display:block;font-size:.875rem;color:var(--ui-muted);margin-top:.25rem}.cur-table td:first-child{min-width:200px}.cur-inventory .field{margin-top:1rem;max-width:32rem}.cur-stock-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.75rem;margin-top:1rem}.cur-stock-chip{border:1px solid var(--line);border-radius:12px;padding:.8rem;background:var(--surface);color:var(--ui-ink);display:grid;gap:.4rem;text-align:left;cursor:pointer}.cur-stock-chip span,.cur-stock-chip small{font-size:.875rem;color:var(--ui-muted)}.cur-order-row{display:flex;align-items:center;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--line)}.cur-order-row>div:first-child{min-width:0;flex:1}.cur-order-row p{font-size:.875rem;color:var(--ui-muted);margin:.25rem 0}.cur-order-edit{display:grid;gap:1rem;max-height:45vh;overflow:auto}.cur-order-edit .field{display:grid;grid-template-columns:minmax(0,1fr) 6rem;gap:1rem;align-items:center}#cur-error{grid-column:1/-1}#cur-form>p svg{width:18px;height:18px;vertical-align:middle}
 @media(max-width:1100px){.phone-workspace{grid-template-columns:minmax(0,1fr) 13rem}.cur-milestone{grid-template-columns:9.5rem minmax(0,1fr)}.cur-lane-total{display:none}.cur-student-row{grid-template-columns:10rem minmax(0,1fr)}.cur-row-actions{grid-column:2}.cur-student-row .cur-row-actions{justify-content:flex-start}.cur-stage-grid{grid-template-columns:repeat(auto-fit,minmax(7.5rem,1fr))}}
 @media(max-width:800px){.phone-workspace{grid-template-columns:1fr}.phone-main #phone-body{min-height:13rem}.cur-intro{align-items:flex-start;flex-direction:column;gap:1rem}.cur-summary{gap:2rem}.cur-phonics{grid-template-columns:1fr}.cur-milestone{grid-template-columns:1fr;gap:.75rem}.cur-step-label{padding-top:0}.cur-step-label::before{top:.4rem}.cur-stage-grid{margin-left:2.5rem;grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.cur-stat-grid{grid-template-columns:1fr 1fr}.cur-student-row{grid-template-columns:1fr}.cur-row-actions{grid-column:auto}.cur-order-row{flex-wrap:wrap}.cur-order-row>div:first-child{flex-basis:100%}.cur-order-edit .field{grid-template-columns:1fr 5rem}.cur-series-grid{grid-template-columns:1fr}}

  .vocab-paper-scroll{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:8px}.vocab-paper-preview{display:block;width:1123px;height:794px;border:0;background:#fff}
  .cur-skip>summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-weight:600}.cur-skip .field{margin-top:.75rem}.cur-table{min-width:650px}.curriculum-page .table-wrap{overflow:auto}
}

/* Textbook tasks share the weekly checklist and calendar frame. */
.ops-work-group.textbook .ops-work-icon,.ops-event-tile.textbook{background:var(--ui-green-bg);color:var(--ui-green-text)}
.ops-mini-dots .textbook,.ops-mini-legend .textbook{background:var(--ui-green-text)}

.ops-month-weeks{margin-bottom:1rem}.ops-month-weeks .toolbar{margin-bottom:.75rem}.ops-month-weeks label{display:flex;align-items:center;gap:.625rem;font-weight:600}.ops-month-weeks input{max-width:12rem}.ops-month-week-buttons{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.5rem}.ops-month-week-buttons .btn{display:flex;flex-direction:column;gap:.3rem;min-width:0;white-space:normal;padding:.75rem .5rem}.ops-month-week-buttons span{font-size:.875rem;font-weight:400}.ops-month-week-buttons .active{background:var(--ui-blue-bg);color:var(--ui-blue-text);border-color:var(--ui-blue-text)}.ops-week-context{display:block;font-size:.875rem;color:var(--ui-muted);margin-bottom:.375rem}.ops-work-row-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:.25rem;flex-shrink:0}.ops-work-row-actions .btn{min-height:44px}
@media(max-width:700px){.ops-month-week-buttons{grid-template-columns:repeat(2,minmax(0,1fr))}.ops-work-row-actions{max-width:6.5rem}}

.guardian-consultation-periods{border:0;padding:0;margin:0}.guardian-consultation-periods legend{font-weight:600;margin-bottom:.625rem}.ops-consultation-preference{overflow-wrap:anywhere}.ops-work-row-actions{max-width:12rem}@media(max-width:700px){.ops-work-row-actions{max-width:6.5rem}}

/* Source connection status remains readable beside account controls. */
.teacher-header-tools>[data-action="learning-connection-status"]{white-space:normal;font-size:13px;max-width:210px}
@media(max-width:600px){.teacher-header-inner{flex-wrap:wrap}.teacher-header-tools{flex-wrap:wrap}}
