/* Tutoring flows share the existing palettes and app geometry. */
.b-sub { color:var(--ink-soft); font-size:13px; line-height:1.6; margin:5px 0 10px; }
.b-row { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.b-row>div,.b-grow { min-width:0; }
.b-grow { flex:1; }
.b-actions { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.b-actions .btn { min-height:38px; padding:8px 12px; font-size:13px; }
.b-toolbar { margin:12px 0; }
.b-empty { text-align:center; padding:24px 18px; margin-top:12px; }
.b-empty>b { font-size:16px; }
.b-empty p { color:var(--ink-soft); margin:8px 0 15px; font-size:14px; line-height:1.65; }
.b-status { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; }
.b-status span { display:block; font-size:12px; color:var(--ink-soft); margin-top:3px; }
.b-status-text { font-size:13px; color:var(--ink-soft); }
.b-task h3 { font-size:16px; margin-top:9px; overflow-wrap:anywhere; }
.b-task .b-actions { margin-top:10px; }
.b-form { display:flex; flex-direction:column; gap:14px; }
.b-field { display:flex; flex-direction:column; gap:7px; font-size:14px; font-weight:600; text-align:left; }
.b-field input,.b-field select,.b-field textarea { width:100%; min-width:0; max-width:100%; min-height:44px; padding:10px 12px; border:1px solid var(--line); border-radius:11px; background:var(--paper); color:var(--ink); font-size:16px; line-height:1.5; font-weight:400; font-family:inherit; }
.b-field textarea { resize:vertical; }
.b-two { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.b-fieldset { border:1px solid var(--line); border-radius:12px; padding:12px; font-size:14px; text-align:left; }
.b-fieldset legend { padding:0 5px; font-weight:600; }
.b-check-grid { display:flex; flex-wrap:wrap; gap:8px 12px; }
.b-check-grid label,.b-radio { display:flex; align-items:center; gap:8px; min-height:40px; font-size:14px; }
.b-radio { padding:6px 0; }
.b-radio input,.b-check-grid input { width:18px; height:18px; accent-color:var(--forest); flex:none; }
.b-form-error,.b-error { color:var(--danger); font-size:14px; line-height:1.6; }
.b-form-error:empty { display:none; }
.b-form>[hidden] { display:none; }
.b-mask { z-index:100; }
.b-dialog { max-width:460px; text-align:left; padding:20px; }
.b-dialog h3 { margin-bottom:16px; }
.b-dialog .b-actions { justify-content:flex-end; }
.b-dialog .b-sub { margin-bottom:0; }
.b-role-list { display:grid; gap:10px; margin:14px 0; }
.b-role-dialog { max-width:430px; text-align:left; }
.b-role-option { width:100%; min-height:66px; display:grid; grid-template-columns:42px minmax(0,1fr) 18px; align-items:center; gap:11px; padding:10px 12px; border:1px solid var(--line); border-radius:14px; color:var(--ink); background:var(--paper); text-align:left; cursor:pointer; }
.b-role-option.active { border-color:var(--forest); background:var(--forest-soft); }
.b-role-option:focus-visible { outline:3px solid color-mix(in srgb,var(--forest) 30%,transparent); outline-offset:2px; }
.b-role-option>span:nth-child(2) { min-width:0; }
.b-role-option b,.b-role-option small { display:block; }
.b-role-option b { font-size:15px; line-height:1.45; }
.b-role-option small { margin-top:2px; color:var(--ink-soft); font-size:12px; line-height:1.45; }
.b-role-icon { display:grid; place-items:center; width:42px; height:42px; border-radius:12px; color:var(--forest-dark); background:var(--forest-soft); font-size:15px; font-weight:800; }
.b-role-parent .b-role-icon,.b-role-supervisor .b-role-icon { color:var(--sun-ink); background:var(--sun-soft); }
.b-role-arrow { color:var(--ink-soft); font-size:22px; text-align:right; }
.b-staff-entry { width:100%; min-height:44px; margin:2px 0 10px; border:1px dashed var(--forest); border-radius:12px; color:var(--forest-dark); background:var(--forest-soft); font-size:14px; font-weight:700; cursor:pointer; }
.b-footnote { margin:16px 0; }
.b-conflict { border-color:var(--sun-line); background:var(--sun-soft); }
.b-conflict p { margin:8px 0 12px; }
.b-word-preview { color:var(--forest-dark); font-size:14px; line-height:1.7; margin:10px 0; overflow-wrap:anywhere; }
.b-details { margin:10px 0; font-size:14px; }
.b-details summary { color:var(--forest-dark); cursor:pointer; padding:7px 0; }
.b-details p { padding:9px 0; border-bottom:1px solid var(--line); }
.b-feedback { border-left:3px solid var(--progress); padding:10px 12px; background:var(--paper-2); border-radius:0 10px 10px 0; margin:12px 0; }
.b-feedback p { margin:5px 0; font-size:14px; line-height:1.65; white-space:pre-wrap; }
.b-feedback small { color:var(--ink-soft); font-size:12px; }
#view audio { width:100%; margin:12px 0; height:44px; }
.b-plan-item { display:flex; align-items:center; gap:10px; }
.b-plan-item>.btn { padding:8px 12px; min-width:62px; }
.b-plan-item .b-sub { margin-bottom:0; }
.b-step { display:flex; align-items:center; justify-content:center; width:32px; height:32px; flex:none; border-radius:10px; background:var(--forest-soft); color:var(--forest-dark); font-size:15px; font-weight:700; }
.b-speaking { text-align:center; }
.b-phrase { font-size:23px; line-height:1.55; color:var(--forest-dark); margin:10px 0 18px; overflow-wrap:anywhere; }
.b-record-state { font-size:14px; color:var(--ink-soft); padding:20px 0 12px; }
.b-listen-question { padding:20px 16px; }
.b-listen-question h3 { font-size:18px; margin:20px 0 12px; }
.b-option { display:block; width:100%; text-align:left; background:var(--white); }
.b-module-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.b-module-grid .card { display:flex; gap:8px; align-items:center; margin:0; min-height:66px; padding:12px; text-align:left; font-size:14px; font-weight:600; }
.b-module svg { color:var(--forest); flex:none; }
.b-small { min-height:32px!important; font-size:12px!important; padding:4px 8px!important; }
.b-inline { display:flex; align-items:center; gap:7px; }
button[data-busy] { opacity:.65; pointer-events:none; }
@media(max-width:359px){.b-plan-item { flex-wrap:wrap; }.b-plan-item>.btn { margin-left:42px; }.b-two { grid-template-columns:1fr; }.b-row { flex-wrap:wrap; }}

.b-kpis { grid-template-columns:repeat(3,minmax(0,1fr)); }
.b-retry { border-color:var(--berry); background:var(--berry-soft); }
.b-access-list { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; padding-top:10px; border-top:1px solid var(--line); }
.b-access-list>span { display:inline-flex; align-items:center; gap:4px; min-height:34px; padding:4px 8px; border-radius:10px; background:var(--paper-2); color:var(--ink-soft); font-size:13px; }
.b-invite-list>span { background:var(--sun-soft); color:var(--sun-ink); }
.b-session h3 { margin:8px 0 0; font-size:17px; }
.b-session-time { flex:none; font-size:13px; color:var(--forest-dark); text-align:right; }
.b-session-report { margin:13px 0; padding:13px; border-radius:12px; background:var(--paper-2); }
.b-session-report> b { font-size:15px; }
.b-session-report dl { margin:10px 0 0; display:grid; gap:9px; }
.b-session-report dl>div { display:grid; grid-template-columns:72px minmax(0,1fr); gap:8px; }
.b-session-report dt { color:var(--ink-soft); font-size:13px; }
.b-session-report dd { margin:0; font-size:14px; line-height:1.6; white-space:pre-wrap; overflow-wrap:anywhere; }
.b-ack { margin:10px 0 0; padding-top:9px; border-top:1px solid var(--line); color:var(--forest-dark); font-size:13px; }
.b-hours { color:var(--forest-dark); font-size:18px; white-space:nowrap; }
.b-ops-right { flex:none; max-width:105px; color:var(--forest-dark); font-size:14px; font-weight:700; text-align:right; }
.b-progress-card h3 { margin:8px 0 0; font-size:17px; }
.b-progress-card dl { margin:12px 0 0; display:grid; gap:10px; }
.b-progress-card dl>div { display:grid; grid-template-columns:76px minmax(0,1fr); gap:9px; }
.b-progress-card dt { color:var(--ink-soft); font-size:13px; }
.b-progress-card dd { margin:0; font-size:14px; line-height:1.65; white-space:pre-wrap; overflow-wrap:anywhere; }
.b-review-note { margin:11px 0; padding:9px 11px; border-radius:10px; color:var(--berry-ink); background:var(--berry-soft); font-size:13px; line-height:1.6; }
@media(max-width:399px){.b-session>.b-row { align-items:flex-start; }.b-session-time { max-width:112px; }.b-session-report dl>div { grid-template-columns:1fr; gap:2px; }}
@media(max-width:399px){.b-progress-card dl>div { grid-template-columns:1fr; gap:2px; }}
.b-notice { width:100%; display:grid; grid-template-columns:9px minmax(0,1fr) 16px; align-items:center; gap:11px; color:var(--ink); text-align:left; cursor:pointer; }
.b-notice.unread { border-color:var(--forest); background:var(--forest-soft); }
.b-notice>span:nth-child(2) { min-width:0; }
.b-notice b,.b-notice small,.b-notice time { display:block; }
.b-notice small { margin-top:5px; color:var(--ink-soft); font-size:13px; line-height:1.55; overflow-wrap:anywhere; }
.b-notice time { margin-top:6px; color:var(--ink-soft); font-size:11px; }
.b-notice-dot { width:8px; height:8px; border-radius:50%; background:var(--line); }
.b-notice.unread .b-notice-dot { background:var(--forest); box-shadow:0 0 0 4px color-mix(in srgb,var(--forest) 13%,transparent); }
#notifyTop { position:relative; overflow:visible; }
.b-notice-badge { position:absolute; right:-4px; top:-5px; min-width:17px; height:17px; padding:0 4px; display:grid; place-items:center; border:2px solid var(--paper); border-radius:10px; color:#fff; background:var(--berry); font-size:9px; line-height:1; font-weight:800; }
.b-notice-badge[hidden] { display:none; }
.b-leave-card h3 { margin:8px 0 0; font-size:17px; }
.b-leave-note { margin:9px 0; padding:7px 9px; border-radius:9px; color:var(--sun-ink); background:var(--sun-soft); font-size:13px; line-height:1.5; }
.b-month-field { max-width:190px; margin:12px 0; }
.b-payroll-card>.b-details { margin-bottom:0; }
.b-payroll-item { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 0; border-bottom:1px solid var(--line); }
.b-payroll-item:last-child { border-bottom:0; }
.b-payroll-item>div { min-width:0; }
.b-payroll-item b,.b-payroll-item small { display:block; }
.b-payroll-item small { margin-top:3px; color:var(--ink-soft); font-size:12px; line-height:1.45; }
.b-payroll-item> b { flex:none; color:var(--forest-dark); }
.b-export-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
.b-export-grid .btn { width:100%; min-height:46px; }
@media(max-width:359px){.b-export-grid { grid-template-columns:1fr; }}
