html { -webkit-text-size-adjust: 100%; }
      * { box-sizing: border-box; }
      /* The palette lives only in edu-theme.css. This file used to redeclare
         :root with the old warm-orange scheme, and because it loads after
         edu-theme.css those values won every cascade, so the deep-green tokens
         were defined but never actually used. Only the aliases this file still
         references are kept, pointing at the canonical tokens. */
      :root {
        --edu-bg-warm: var(--edu-bg);
        --edu-surface-warm: var(--edu-surface);
        --edu-border-warm: var(--edu-border);
        --edu-shadow: 0 1px 2px rgba(8, 42, 34, 0.06);
      }
      body { margin:0; font-family:'Inter','Noto Sans SC','Microsoft YaHei UI',sans-serif; background:var(--edu-bg); color:var(--edu-text); line-height:1.6; font-size:var(--text-xl); }
      .app { display:flex; min-height:100vh; }
      .sidebar { width:260px; background:var(--edu-surface); color:var(--edu-text); padding:var(--space-6) var(--space-5); flex-shrink:0; border-right:1px solid var(--edu-border); box-shadow:none; }
      .sidebar-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:24px; }
      .brand { margin-bottom:24px; color:var(--edu-primary); }
      .brand-mark { font-size:var(--text-2xl); font-weight:800; letter-spacing:-0.03em; }
      .brand-subtitle { display:block; margin-top:4px; font-size:var(--text-sm); font-weight:600; letter-spacing:0.08em; text-transform:uppercase; color:var(--edu-text-muted); }
      .sidebar-close { display:none; }
      .sidebar-backdrop { display:none; }
      a, a:visited, a:hover, a:active { color:var(--edu-primary); }
      .nav-link, .nav-link:visited { display:flex; align-items:center; color:var(--edu-text); text-decoration:none; padding:12px 14px; border-radius:var(--radius-lg); margin-bottom:8px; font-weight:600; letter-spacing:-0.01em; transition:all .18s ease; }
      .nav-link:hover { background:rgba(232, 100, 65, 0.08); color:var(--edu-primary); transform:translateX(2px); }
      .nav-link.active { background:linear-gradient(135deg, var(--edu-primary), var(--edu-primary-dark)); color:white; box-shadow:none; }
      a.btn, a.btn:visited, .btn a, .btn a:visited { color:white; }
      th a, th a:visited, th a:hover, th a:active, .table-wrap th a, .table-wrap th a:visited, .table-wrap th a:hover, .table-wrap th a:active { color:#1f2937; }
      .admin-action-link:visited { color:inherit; }
      .mini-link, .mini-link:visited, .picker-link, .picker-link:visited { color:#1e3a8a; }
      .main { flex:1; min-width:0; padding:28px 28px 40px; }
      .page-container { max-width:1480px; margin:0 auto; }
      .topbar { position:relative; z-index:1; background:rgba(255,255,255,0.9); backdrop-filter:blur(14px); border:1px solid var(--edu-border); border-radius:var(--radius-lg); padding:14px 18px; display:flex; justify-content:space-between; align-items:center; gap:16px; margin-bottom:18px; box-shadow:none; }
      .topbar-primary { display:flex; align-items:center; gap:12px; min-width:0; }
      .topbar-user { display:flex; flex-direction:column; gap:2px; }
      .topbar-kicker { font-size:var(--text-sm); font-weight:700; text-transform:uppercase; letter-spacing:0.08em; color:var(--edu-text-muted); }
      .topbar-identity { font-size:var(--text-2xl); font-weight:800; letter-spacing:-0.03em; color:var(--edu-text); }
      .topbar-actions { display:flex; align-items:center; justify-content:flex-end; gap:10px; flex-wrap:wrap; }
      .topbar-action-group { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
      .topbar-mini-field { display:inline-flex; align-items:center; gap:8px; padding:6px 10px; border-radius:var(--radius-md); background:rgba(241,245,249,0.95); border:1px solid var(--edu-border); }
      .topbar-mini-label { font-size:var(--text-xs); font-weight:800; text-transform:uppercase; letter-spacing:0.08em; color:var(--edu-text-muted); white-space:nowrap; }
      .topbar-status-chip { display:inline-flex; align-items:center; gap:6px; padding:7px 10px; border-radius:var(--radius-xs); background:var(--edu-bg); border:1px solid rgba(59,130,246,0.18); color:#1e3a8a; font-size:var(--text-sm); font-weight:800; white-space:nowrap; }
      .topbar-status-chip strong { color:var(--edu-text); }
      .topbar-actions .compact-btn,
      .topbar-actions .inline-form .compact-btn { min-height:32px; padding:6px 10px; border-radius:var(--radius-sm); font-size:var(--text-sm); box-shadow:none; }
      .topbar-actions .inline-form { display:inline-flex; align-items:center; gap:8px; margin:0; }
      .topbar-actions .inline-form select { min-width:108px; min-height:32px; padding:6px 9px; border-radius:var(--radius-sm); font-size:var(--text-sm); }
      .topbar-actions .topbar-mini-field select { min-width:90px; min-height:32px; padding:6px 28px 6px 8px; border-radius:var(--radius-sm); font-size:var(--text-sm); margin:0; }
      .page-title { margin:0 0 16px 0; font-size:var(--text-2xl); line-height:1.12; letter-spacing:-0.045em; overflow-wrap:anywhere; color:var(--edu-text); }
      .page-subtitle { margin:-8px 0 18px; color:var(--edu-text-muted); font-size:var(--text-lg); }
      .card { background:rgba(255,255,255,0.88); border:1px solid var(--edu-border); border-radius:var(--radius-lg); padding:18px; margin-bottom:18px; overflow:hidden; box-shadow:none; }
      .card h3, .card h4 { margin:0 0 12px 0; overflow-wrap:anywhere; font-size:var(--text-2xl); letter-spacing:-0.03em; color:var(--edu-text); }
      .card-header-row { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; }
      .card-header-row h4 { margin:0; }
      .hero-panel { background:linear-gradient(135deg,#ffffff 0%,#eef6ff 52%,var(--edu-surface) 100%); border:1px solid rgba(96,165,250,0.24); box-shadow:none; }
      .hero-grid { display:grid; grid-template-columns:1.5fr 1fr; gap:16px; align-items:stretch; }
      .hero-title { font-size:var(--text-2xl); font-weight:900; line-height:1.05; letter-spacing:-0.05em; margin:0 0 8px; }
      .hero-copy { font-size:var(--text-xl); color:var(--edu-text-muted); max-width:720px; }
      .hero-chip-row { display:flex; gap:8px; flex-wrap:wrap; margin-top:14px; }
      .hero-chip { padding:8px 12px; border-radius:var(--radius-xs); background:#e0edff; color:var(--edu-primary); font-size:var(--text-sm); font-weight:800; letter-spacing:0.02em; }
      .section-kicker { display:inline-flex; align-items:center; gap:8px; padding:6px 10px; border-radius:var(--radius-xs); background:#e4ebe3; color:var(--edu-primary); font-size:var(--text-xs); font-weight:800; text-transform:uppercase; letter-spacing:0.08em; margin-bottom:10px; }
      .section-note { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; margin:0; }
      .stat-grid { display:grid; grid-template-columns:repeat(4,minmax(180px,1fr)); gap:12px; }
      .stat-card { background:linear-gradient(180deg,#ffffff 0%,var(--edu-surface) 100%); border:1px solid var(--edu-border); border-radius:var(--radius-lg); padding:16px; }
      .stat-label { font-size:var(--text-sm); color:var(--edu-text-muted); font-weight:700; text-transform:uppercase; letter-spacing:0.07em; margin-bottom:8px; }
      .stat-value { font-size:var(--text-2xl); font-weight:900; letter-spacing:-0.04em; color:var(--edu-text); line-height:1; }
      .stat-note { margin-top:8px; color:var(--edu-text-muted); font-size:var(--text-md); }
      .quick-action-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:12px; }
      .quick-action { background:#fff; border:1px solid var(--edu-border); border-radius:var(--radius-lg); padding:16px; text-decoration:none; box-shadow:none; transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
      .quick-action:hover { transform:translateY(-2px); box-shadow:none; border-color:rgba(59,130,246,0.28); }
      .quick-action-title { display:block; font-size:var(--text-xl); font-weight:800; letter-spacing:-0.02em; color:var(--edu-text); margin-bottom:6px; }
      .quick-action-copy { display:block; font-size:var(--text-md); color:var(--edu-text-muted); }
      .mobile-stack { display:flex; flex-direction:column; gap:10px; }
      .form-row { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
      .form-row label { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
      .filter-grid { display:grid; grid-template-columns:repeat(4,minmax(200px,1fr)); gap:12px; }
      .filter-grid > label, .filter-grid > div { display:flex; flex-direction:column; gap:6px; }
      .filter-grid > label.date-field-compact, .filter-grid > div.date-field-compact { max-width:180px; }
      .query-form input[type='date'], .query-form input[type='text'].date-compact { width:170px; max-width:100%; }
      .btn-row { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
      .table-actions { display:flex; gap:8px; align-items:center; flex-wrap:nowrap; }
      .table-actions form { margin:0; display:inline-flex; }
      .filter-row { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
      .filter-row label { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
      .inline-form { display:inline-flex; margin:0; }
      .form-grid { display:grid; gap:12px; align-items:end; }
      .form-grid-3 { grid-template-columns:repeat(3, minmax(180px, 1fr)); }
      .span-2 { grid-column:span 2; }
      .form-actions { margin-top:12px; display:flex; justify-content:flex-end; }
      .resource-upload-form { margin-top:10px; }
      .resource-section-grid { display:grid; grid-template-columns:1.1fr 1fr; gap:14px; }
      .resource-kpi-grid { display:grid; grid-template-columns:repeat(3,minmax(140px,1fr)); gap:10px; margin-bottom:12px; }
      .resource-kpi { background:linear-gradient(180deg,#ffffff 0%,var(--edu-surface) 100%); border:1px solid var(--edu-border); border-radius:var(--radius-lg); padding:14px 16px; }
      .resource-kpi-label { font-size:var(--text-sm); color:#6b7280; margin-bottom:4px; }
      .resource-kpi-value { font-size:var(--text-2xl); font-weight:900; letter-spacing:-0.03em; }
      .ops-stats-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px; margin-top:14px; }
      .ops-stat { background:linear-gradient(180deg,#ffffff 0%,var(--edu-surface) 100%); border:1px solid var(--edu-border); border-radius:var(--radius-lg); padding:14px 16px; }
      .ops-stat-label { font-size:var(--text-sm); color:#6b7280; font-weight:800; letter-spacing:0.07em; text-transform:uppercase; margin-bottom:6px; }
      .ops-stat-value { font-size:var(--text-2xl); font-weight:900; letter-spacing:-0.04em; color:var(--edu-text); }
      .ops-stat-copy { margin-top:6px; color:var(--edu-text-muted); font-size:var(--text-md); }
      /* Operational admin compression rules live in /static/ops-ui.css. */
      .section-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:12px; }
      .section-copy { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.5; }
      .picker-shell { margin-bottom:12px; border:1px solid var(--edu-border); border-radius:var(--radius-lg); background:rgba(255,255,255,0.94); overflow:visible; position:relative; box-shadow:none; }
      .picker-shell-form { display:flex; align-items:end; gap:10px; padding:12px; }
      .picker-shell-field { display:grid; gap:5px; flex:1; min-width:0; font-weight:800; color:var(--edu-text-muted); }
      .picker-shell-field input { width:100%; min-height:var(--control-h-lg); border:1px solid var(--edu-border); border-radius:var(--radius-sm); padding:8px 10px; background:#fff; color:var(--edu-text); }
      .picker-live-wrap { position:relative; display:block; }
      .picker-live-panel { position:absolute; z-index:99999; top:calc(100% + 4px); left:0; right:0; max-height:280px; overflow:auto; padding:4px; border:1px solid var(--edu-border); border-radius:8px; background:#fff; box-shadow:0 12px 28px -4px rgba(15,23,42,.16); }
      .picker-live-item { display:flex; flex-direction:column; justify-content:center; gap:2px; width:100%; min-height:30px; padding:5px 8px; border:0; border-radius:5px; background:transparent; text-align:left; cursor:pointer; color:var(--edu-text); transition:all 0.12s ease; }
      .picker-live-item:hover, .picker-live-item.is-active { background:var(--edu-bg); color:var(--edu-primary); }
      .picker-live-item strong, .picker-live-item .picker-live-title { font-size:var(--text-sm); font-weight:600; line-height:1.25; margin-bottom:0; color:var(--edu-text); }
      .picker-live-item:hover strong, .picker-live-item.is-active strong, .picker-live-item:hover .picker-live-title, .picker-live-item.is-active .picker-live-title { color:var(--edu-primary); }
      .picker-live-item span, .picker-live-item .picker-live-meta { color:var(--edu-text-muted); font-size:var(--text-xs); font-weight:400; line-height:1.25; }
      .picker-live-item mark { padding:0 2px; border-radius:2px; background:#e4ebe3; color:#1e40af; font-weight:700; }
      .picker-live-empty { padding:8px 10px; color:var(--edu-text-muted); font-size:var(--text-sm); }
      .picker-shell-selected { padding:0 12px 12px; color:var(--edu-text); font-weight:800; }
      .picker-shell-summary { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 12px; list-style:none; }
      .picker-shell-summary h4 { margin:0; font-size:var(--text-lg); line-height:1.2; letter-spacing:-0.02em; }
      .picker-shell-summary-copy { display:flex; flex-direction:column; gap:3px; min-width:0; flex:1; }
      .picker-shell-summary-meta { color:var(--edu-text-muted); font-size:var(--text-sm); line-height:1.35; overflow-wrap:anywhere; }
      .picker-shell-caret { min-height:32px; padding:6px 10px; border-radius:var(--radius-sm); box-shadow:none; font-size:var(--text-sm); }
      .picker-shell-body { display:none; }
      .picker-toolbar { gap:10px; margin-top:8px; }
      .picker-summary { margin:0 0 10px; padding:8px 10px; border-radius:var(--radius-md); border:1px solid var(--edu-border); background:linear-gradient(180deg,#ffffff 0%,var(--edu-surface) 100%); font-size:var(--text-md); }
      .picker-sort-bar { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 12px; }
      .picker-sort-link { min-height:34px; padding:7px 12px; border-radius:var(--radius-xs); font-size:var(--text-sm); box-shadow:none; }
      .picker-result-list { display:flex; flex-direction:column; gap:8px; }
      .picker-result-row { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 12px; border:1px solid var(--edu-border); border-radius:var(--radius-md); background:linear-gradient(180deg,#ffffff 0%,var(--edu-surface) 100%); }
      .picker-result-body { min-width:0; display:flex; flex-direction:column; gap:4px; }
      .picker-result-title { font-size:var(--text-md); font-weight:800; letter-spacing:-0.02em; text-decoration:none; }
      .picker-result-meta { color:var(--edu-text-muted); font-size:var(--text-sm); line-height:1.35; overflow-wrap:anywhere; }
      .picker-result-row .btn { min-height:32px; min-width:64px; padding:6px 10px; border-radius:var(--radius-sm); font-size:var(--text-sm); box-shadow:none; flex-shrink:0; }
      .picker-close-btn { min-height:var(--control-h-lg); padding:8px 12px; border-radius:var(--radius-md); box-shadow:none; }
      .notice-list { display:flex; flex-direction:column; gap:10px; }
      .notice-item { border:1px solid var(--edu-border); border-radius:var(--radius-md); padding:12px; background:#fff; }
      .notice-item.personal { border-color:#93c5fd; background:var(--edu-bg); }
      .notice-item h5 { margin:0 0 4px 0; font-size:var(--text-xl); }
      .notice-meta { font-size:var(--text-sm); color:#6b7280; margin-bottom:6px; }
      .notice-body { white-space:pre-wrap; line-height:1.45; }
      .schedule-day-hero { background:var(--edu-bg); border:1px solid #93c5fd; border-radius:var(--radius-md); padding:10px 12px; }
      .schedule-day-hero select { min-height:56px; min-width:150px; border:2px solid var(--edu-primary); font-size:var(--text-2xl); font-weight:700; }
      .schedule-filter-actions .btn, .schedule-filter-actions button { min-height:var(--control-h-lg); padding:8px 12px; font-size:var(--text-md); }
      .schedule-filter-actions .btn.primary-compact, .schedule-filter-actions button.primary-compact { min-height:var(--control-h-lg); padding:8px 14px; font-size:var(--text-md); }
      .schedule-filter-shell { background:linear-gradient(180deg,#ffffff 0%,var(--edu-surface) 100%); padding:14px 16px; }
      .schedule-summary-bar { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; margin-bottom:12px; }
      .schedule-summary-main { display:flex; align-items:center; gap:10px; flex-wrap:wrap; min-width:0; }
      .schedule-summary-chip { display:inline-flex; align-items:center; gap:6px; padding:8px 12px; border-radius:var(--radius-xs); background:var(--edu-bg); border:1px solid rgba(59,130,246,0.16); color:#1e3a8a; font-size:var(--text-md); font-weight:800; }
      .schedule-summary-chip strong { color:var(--edu-text); }
      .schedule-priority-grid { display:flex; align-items:end; justify-content:space-between; gap:14px; flex-wrap:wrap; margin-bottom:0; }
      .schedule-day-panel { display:flex; align-items:center; gap:10px; padding:0; background:none; border:none; box-shadow:none; }
      .schedule-day-panel .muted { font-size:var(--text-sm); font-weight:700; letter-spacing:0.06em; text-transform:uppercase; color:var(--edu-text-muted); }
      .schedule-day-panel select { min-height:var(--control-h-lg); min-width:160px; border:1px solid var(--edu-border); border-radius:var(--radius-md); padding:8px 12px; font-size:var(--text-xl); font-weight:800; background:#fff; color:var(--edu-text); margin:0; }
      .schedule-context-grid { display:none; }
      .schedule-secondary-grid { display:grid; grid-template-columns:repeat(2,minmax(220px,1fr)); gap:12px; margin-bottom:0; }
      .schedule-field { display:flex; flex-direction:column; gap:6px; }
      .schedule-field label, .schedule-field .label { font-size:var(--text-sm); font-weight:800; text-transform:uppercase; letter-spacing:0.06em; color:var(--edu-text-muted); }
      .schedule-action-bar { display:flex; flex-wrap:wrap; gap:10px; align-items:center; justify-content:space-between; margin-top:6px; }
      .schedule-action-group { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
      .schedule-mobile-advanced { margin-top:10px; }
      .schedule-mobile-advanced summary { list-style:none; cursor:pointer; font-weight:800; color:var(--edu-text); }
      .schedule-mobile-advanced summary::-webkit-details-marker { display:none; }
      .schedule-mobile-advanced-toggle { display:none; }
      .schedule-mobile-advanced-body { display:grid; gap:12px; }
      .schedule-filter-meta { display:grid; gap:8px; }
      .btn.ghost { background:#fff; color:var(--edu-primary); border:1px solid rgba(59,130,246,0.22); box-shadow:none; }
      .btn.ghost:hover { box-shadow:none; }
      .schedule-nav-btn { min-height:var(--control-h-lg); padding:8px 14px; border-radius:var(--radius-xs); font-size:var(--text-md); }
      .schedule-primary-btn { min-height:var(--control-h-lg); padding:10px 16px; border-radius:var(--radius-md); }
      .copy-week-panel { margin-top:14px; padding:14px 16px; border:1px solid rgba(37,99,235,0.16); border-radius:var(--radius-lg); background:var(--edu-surface); }
      .copy-week-panel .btn { align-self:flex-start; }
      .schedule-advanced-tools { margin-top:16px; }
      input, select, textarea { max-width:100%; border:1px solid var(--edu-border); border-radius:var(--radius-md); padding:12px 14px; min-height:var(--control-h-lg); font-size:var(--text-xl); line-height:1.4; background:rgba(255,255,255,0.92); box-shadow:none; transition:border-color .16s ease, box-shadow .16s ease, background .16s ease; }
      input:focus, select:focus, textarea:focus { outline:none; border-color:var(--edu-primary); box-shadow:0 0 0 4px rgba(59,130,246,0.16); background:#fff; }
      textarea { width:100%; }
      button, .btn { background:linear-gradient(135deg,var(--edu-primary),var(--edu-primary)); color:white; border:none; border-radius:var(--radius-md); padding:12px 16px; min-height:var(--control-h-lg); line-height:1.3; text-decoration:none; display:inline-flex; align-items:center; justify-content:center; font-weight:800; letter-spacing:-0.01em; box-shadow:none; transition:transform .14s ease, box-shadow .14s ease, filter .14s ease; }
      button:hover, .btn:hover { transform:translateY(-1px); box-shadow:none; filter:saturate(1.03); }
      button:active, .btn:active, .quick-action:active { transform:scale(0.985); }
      .btn.secondary { background:linear-gradient(135deg,var(--edu-text-muted),var(--edu-text-muted)); box-shadow:none; }
      .table-wrap { width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; border:1px solid var(--edu-border); border-radius:var(--radius-lg); background:rgba(255,255,255,0.96); box-shadow:none; }
      table { width:100%; border-collapse:collapse; background:white; }
      th, td { border:1px solid var(--edu-border); padding:12px 12px; text-align:left; vertical-align:top; word-break:normal; overflow-wrap:normal; white-space:normal; }
      th { background:var(--edu-surface); font-size:var(--text-sm); font-weight:800; text-transform:uppercase; letter-spacing:0.05em; color:var(--edu-text-muted); }
      .card > table, .card > .admin-table { display:block; width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; border:1px solid var(--edu-border); border-radius:var(--radius-md); }
      .card > table > tbody, .card > table > thead, .card > table > tfoot { width:100%; }
      .table-wrap table, .card > table { table-layout:auto; min-width:100%; }
      .table-wrap table th, .table-wrap table td, .card > table th, .card > table td { min-width:0; }
      .table-wrap table th:first-child, .table-wrap table td:first-child, .card > table th:first-child, .card > table td:first-child { min-width:0; }
      .table-wrap td select { min-width:clamp(96px, 12ch, 220px); max-width:100%; }
      .col-class { min-width:160px; }
      .col-course { min-width:140px; }
      .col-level { min-width:120px; }
      .col-teacher { min-width:150px; }
      .col-students { min-width:220px; }
      .badge { display:inline-block; padding:3px 8px; border-radius:var(--radius-xs); font-size:var(--text-sm); background:var(--edu-border); }
      .badge.active { background:#dcfce7; color:#166534; }
      .badge.leave { background:#fef3c7; color:#92400e; }
      .badge.ended { background:#fee2e2; color:#991b1b; }
      .empty-msg { color:#6b7280; font-style:italic; }
      .flash { border-radius:var(--radius-sm); padding:10px 12px; margin-bottom:12px; }
      .flash.success { background:#ecfdf5; color:#065f46; border:1px solid #a7f3d0; }
      .flash.error { background:#fef2f2; color:#991b1b; border:1px solid #fecaca; }
      .flash.warn { background:#fffbeb; color:#92400e; border:1px solid #fde68a; }
      .reading-scope-notice p { margin:6px 0 0; font-size:var(--text-sm); line-height:1.55; }
      .reading-scope-list { margin:8px 0 0; padding-left:18px; font-size:var(--text-sm); line-height:1.6; }
      .reading-scope-list li { margin-bottom:4px; }
      .reading-scope-meta { color:#a16207; }
      .reading-scope-reason { font-style:normal; font-weight:700; }
      .timetable-wrap { overflow:visible; border:1px solid var(--edu-border); border-radius:var(--radius-md); background:white; width:100%; }
      .timetable-grid { --schedule-row-width:128px; --schedule-col-min:0px; min-width:0; width:100%; display:grid; gap:0; }
      .desktop-timetable { display:block; }
      .mobile-timetable-board { display:none; }
      .mobile-slot-section { margin-top:12px; padding:14px; border:1px solid var(--edu-border); border-radius:var(--radius-lg); background:linear-gradient(180deg,#ffffff 0%,var(--edu-surface) 100%); }
      .mobile-slot-title { font-size:var(--text-xl); font-weight:800; letter-spacing:-0.02em; color:var(--edu-text); margin-bottom:10px; }
      .mobile-slot-list { display:flex; flex-direction:column; gap:10px; }
      .mobile-slot-card { border:1px solid var(--edu-border); border-radius:var(--radius-lg); background:#fff; padding:12px; box-shadow:none; }
      .mobile-slot-teacher { font-size:var(--text-lg); font-weight:800; color:var(--edu-text); margin-bottom:4px; }
      .mobile-slot-room { color:var(--edu-text-muted); font-size:var(--text-md); margin-bottom:8px; }
      .tt-head { background:#f3f4f6; font-weight:600; padding:8px 10px; border-bottom:1px solid var(--edu-border); border-right:1px solid var(--edu-border); font-size:var(--text-md); }
      .tt-cell { min-height:92px; border-right:1px solid var(--edu-border); border-bottom:1px solid var(--edu-border); padding:4px; background:#fff; min-width:0; }
      .tt-rowhead { background:#f9fafb; padding:8px 10px; border-right:1px solid var(--edu-border); border-bottom:1px solid var(--edu-border); min-width:0; font-size:var(--text-md); }
      .tt-rowhead strong { display:block; font-size:var(--text-lg); line-height:1.2; }
      .lesson-block { border:1px solid #bfdbfe; background:var(--edu-surface); border-radius:8px; padding:6px; margin-bottom:4px; font-size:var(--text-sm); line-height:1.25; }
      .lesson-title { font-size:var(--text-xs); font-weight:800; line-height:1.2; margin-bottom:2px; word-break:break-word; }
      .lesson-meta { color:var(--edu-text-muted); font-size:var(--text-xs); line-height:1.2; word-break:break-word; }
      .student-line { color:var(--edu-text); font-size:var(--text-xs); line-height:1.25; margin-top:4px; display:flex; flex-wrap:wrap; gap:4px; }
      .lesson-student-item { display:inline-flex; align-items:center; gap:5px; padding:2px 6px; border-radius:var(--radius-xs); border:1px solid var(--edu-border); background:#fff; font-size:var(--text-xs); }
      .lesson-student-item.is-override { border-color:var(--edu-primary); background:#e0ecff; }
      .lesson-student-item.is-makeup { border-color:#f59e0b; background:#fff7ed; color:#7c2d12; }
      .lesson-student-home { display:inline-flex; min-width:18px; justify-content:center; padding:1px 4px; border-radius:var(--radius-xs); background:var(--edu-border); color:#111827; font-size:var(--text-xs); font-weight:700; }
      .lesson-actions { display:flex; flex-wrap:wrap; gap:4px; margin-top:6px; align-items:center; }
      .lesson-main-actions, .lesson-sub-actions { display:flex; flex-wrap:wrap; gap:4px; margin-top:6px; }
      .lesson-main-actions .btn, .lesson-sub-actions .mini-link { min-height:24px; padding:4px 6px; border-radius:6px; font-size:var(--text-xs); }
      .mini-link { font-size:var(--text-xs); padding:4px 6px; border-radius:6px; text-decoration:none; background:#e4ebe3; color:#1e3a8a; display:inline-block; }
      .lesson-overflow { position:relative; margin-left:auto; }
      .lesson-overflow summary { list-style:none; cursor:pointer; }
      .lesson-overflow summary::-webkit-details-marker { display:none; }
      .lesson-overflow-trigger { font-size:var(--text-xs); padding:4px 8px; border-radius:6px; text-decoration:none; background:#e4ebe3; color:#1e3a8a; display:inline-block; min-height:28px; line-height:18px; }
      .lesson-overflow[open] .lesson-overflow-menu { display:flex; }
      .lesson-overflow-menu { display:none; position:absolute; right:0; top:calc(100% + 4px); min-width:138px; z-index:20; flex-direction:column; gap:4px; padding:6px; background:#fff; border:1px solid var(--edu-border); border-radius:8px; box-shadow:0 8px 20px rgba(15,23,42,0.12); }
      .lesson-overflow-menu .mini-link, .lesson-overflow-menu form { width:100%; }
      .lesson-overflow-menu .mini-link, .lesson-overflow-menu button.mini-link { display:block; text-align:left; width:100%; }
      .lesson-actions .btn, .lesson-actions .btn.secondary, .lesson-actions .mini-link { min-height:24px; padding:4px 8px; font-size:var(--text-xs); border-radius:7px; }
      .student-lesson-card { border-color:#e4ebe3; background:linear-gradient(180deg,#ffffff 0%,var(--edu-surface) 100%); border-radius:var(--radius-md); padding:10px; box-shadow:none; }
      .student-lesson-card .lesson-title { font-size:var(--text-md); margin-bottom:4px; color:var(--edu-text); }
      .student-lesson-card .lesson-meta { font-size:var(--text-xs); color:var(--edu-text-muted); }
      .student-lesson-status { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
      .student-lesson-pill { display:inline-flex; align-items:center; min-height:26px; padding:0 10px; border-radius:var(--radius-xs); font-size:var(--text-xs); font-weight:800; background:var(--edu-bg); color:var(--edu-primary); }
      .student-lesson-pill.good { background:#dcfce7; color:#166534; }
      .student-lesson-pill.warn { background:#fef3c7; color:#92400e; }
      .student-lesson-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; margin-top:10px; }
      .student-lesson-actions .btn, .student-lesson-actions .btn.secondary { min-height:30px; padding:6px 8px; font-size:var(--text-xs); border-radius:var(--radius-sm); justify-content:center; }
      .roster-popup-backdrop { position:fixed; inset:0; background:rgba(15,23,42,0.45); z-index:2000; display:flex; align-items:flex-start; justify-content:center; padding:24px 16px; overflow:auto; }
      .roster-popup-card { width:min(1120px, 100%); max-height:calc(100vh - 48px); max-height:calc(100dvh - 48px); overflow:auto; background:#fff; border:1px solid var(--edu-border); border-radius:var(--radius-md); box-shadow:0 20px 40px rgba(15,23,42,0.25); padding:14px; }
      .schedule-form-compact select { min-width:0; width:auto; max-width:160px; }
      .schedule-editor-grid { display:grid; grid-template-columns:1fr; gap:10px; }
      .print-only { display:none; }
      .schedule-print-head { margin-bottom:12px; padding:10px 12px; border:1px solid var(--edu-border); border-radius:var(--radius-lg); background:linear-gradient(180deg,#ffffff 0%,var(--edu-surface) 100%); }
      .schedule-print-title { font-size:var(--text-2xl); font-weight:800; margin-bottom:6px; letter-spacing:-0.02em; }
      .schedule-print-meta { display:flex; flex-wrap:wrap; gap:10px; font-size:var(--text-sm); color:var(--edu-text-muted); }
      .schedule-print-meta span { padding:4px 8px; border-radius:var(--radius-xs); background:var(--edu-bg); color:#1e3a8a; font-weight:600; }
      .print-room-grid { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:12px; }
      .print-room-card { border:1px solid var(--edu-border); border-radius:var(--radius-md); overflow:hidden; background:#fff; break-inside:avoid; page-break-inside:avoid; box-shadow:none; }
      .print-room-title { padding:8px 10px; border-bottom:1px solid var(--edu-border); background:linear-gradient(135deg,#d9f99d 0%,#ecfccb 100%); }
      .print-room-title-row { display:flex; justify-content:space-between; align-items:flex-end; gap:10px; }
      .print-room-teacher { font-size:var(--text-md); font-weight:800; letter-spacing:-0.02em; }
      .print-room-meta { font-size:var(--text-xs); color:var(--edu-text-muted); text-align:right; }
      .print-room-table { width:100%; border-collapse:collapse; table-layout:fixed; }
      .print-room-table th, .print-room-table td { border:1px solid #d7e0ea; padding:5px; vertical-align:top; font-size:var(--text-xs); }
      .print-room-table th { background:#edf6ff; text-align:center; font-weight:800; color:var(--edu-text); }
      .print-lesson-cell { min-height:54px; display:flex; flex-direction:column; gap:4px; }
      .print-lesson-head { display:flex; justify-content:space-between; gap:6px; align-items:flex-start; }
      .print-class-name { font-weight:800; font-size:var(--text-xs); line-height:1.15; letter-spacing:-0.01em; }
      .print-class-meta { font-size:var(--text-xs); color:var(--edu-text-muted); line-height:1.2; }
      .print-lesson-sub { display:grid; grid-template-columns:1fr; gap:2px; padding:4px 6px; border-radius:8px; background:var(--edu-bg); }
      .print-students { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:5px; margin-top:3px; }
      .print-student-entry { display:flex; flex-direction:column; align-items:flex-start; gap:2px; min-height:28px; padding:4px 6px; border-radius:8px; background:#eef2ff; color:#1f2937; }
      .print-student-name { font-size:var(--text-xs); font-weight:800; line-height:1.18; }
      .print-student-home { font-size:9px; color:var(--edu-text-muted); line-height:1.22; text-align:left; }
      .workflow-report-page { display:grid; gap:16px; min-width:0; }
      .report-filter-row { margin-bottom:14px; display:flex; gap:10px; align-items:end; flex-wrap:wrap; }
      .report-filter-row label { display:flex; flex-direction:column; gap:6px; max-width:180px; min-width:0; }
      .report-shell { min-width:0; box-sizing:border-box; padding:18px 20px; }
      .report-shell .section-head { align-items:flex-start; }
      .report-shell .section-head > div:first-child { flex:1; min-width:0; }
      .report-shell-title { margin:0; font-size:var(--text-2xl); font-weight:900; letter-spacing:-0.03em; color:var(--edu-text); }
      .report-toolbar { display:flex; flex-wrap:wrap; gap:10px; justify-content:flex-end; align-items:center; min-width:0; }
      .report-toolbar .btn, .report-toolbar button { min-height:var(--control-h-lg); padding:9px 14px; font-size:var(--text-md); border-radius:var(--radius-md); }
      .report-cache-bar { margin:10px 0 14px; display:flex; justify-content:flex-end; }
      .report-cache-bar label { display:flex; flex-direction:column; gap:6px; min-width:260px; max-width:340px; }
      .student-list-actions { display:flex; gap:8px; align-items:center; justify-content:flex-end; flex-wrap:wrap; }
      .student-list-actions .btn { min-height:34px; min-width:76px; padding:8px 12px; font-size:var(--text-md); border-radius:var(--radius-md); white-space:nowrap; box-shadow:none; }
      .report-meta-grid, .report-summary-grid, .report-two-col { display:grid; gap:12px; min-width:0; }
      .report-meta-grid { grid-template-columns:repeat(4,minmax(180px,1fr)); margin-top:12px; }
      .report-meta-card, .report-summary-card { min-width:0; box-sizing:border-box; background:linear-gradient(180deg,#ffffff 0%,var(--edu-surface) 100%); border:1px solid var(--edu-border); border-radius:var(--radius-lg); padding:14px 16px; }
      .report-summary-grid { grid-template-columns:repeat(2,minmax(220px,1fr)); margin-top:14px; align-items:start; }
      .report-two-col { grid-template-columns:repeat(3,minmax(220px,1fr)); }
      .report-overall-badge { display:inline-flex; align-items:center; gap:8px; padding:8px 12px; border-radius:var(--radius-xs); background:#eef6ff; color:var(--edu-primary); font-weight:800; flex-wrap:wrap; max-width:100%; }
      .report-plain { font-size:var(--text-2xl); font-weight:900; letter-spacing:-0.03em; color:var(--edu-text); overflow-wrap:anywhere; }
      .report-narrative-grid { display:grid; grid-template-columns:repeat(2,minmax(260px,1fr)); gap:12px; margin-top:14px; min-width:0; align-items:start; }
      .report-narrative-card { min-width:0; box-sizing:border-box; background:linear-gradient(180deg,#ffffff 0%,var(--edu-surface) 100%); border:1px solid var(--edu-border); border-radius:var(--radius-lg); padding:16px 18px; break-inside:avoid; page-break-inside:avoid; }
      .report-narrative-copy { color:var(--edu-text); line-height:1.7; font-size:var(--text-lg); overflow-wrap:anywhere; }
      .report-bullet-list { margin:0; padding-left:18px; }
      .report-bullet-list li { margin:0 0 6px; overflow-wrap:anywhere; break-inside:avoid; page-break-inside:avoid; }
      .report-bullet-list li:last-child { margin-bottom:0; }
      .report-note-list { display:grid; gap:8px; margin-top:12px; }
      .report-note-item { padding:10px 12px; border-radius:var(--radius-md); background:var(--edu-bg); border:1px solid var(--edu-border); color:var(--edu-text); }
      .report-chart-card { margin-top:14px; }
      .report-chart-grid { display:grid; gap:10px; }
      .report-chart-row { display:grid; grid-template-columns:minmax(160px,220px) minmax(140px,1fr) 54px; gap:12px; align-items:center; }
      .report-chart-label { font-weight:700; color:var(--edu-text); font-size:var(--text-md); }
      .report-chart-track { position:relative; height:14px; border-radius:var(--radius-xs); background:#e5eef8; overflow:hidden; }
      .report-chart-fill { height:100%; border-radius:var(--radius-xs); background:linear-gradient(90deg,var(--edu-primary) 0%,var(--edu-primary) 100%); }
      .report-chart-score { text-align:right; font-weight:800; color:var(--edu-text); }
      .screen-chart-only { display:block; }
      .print-chart-only { display:none; }
      .report-chart-svg { width:100%; height:auto; display:block; }
      .report-page-break { break-before:page; page-break-before:always; height:0; margin:0; border:0; }
      .report-print-page { break-inside:avoid; page-break-inside:avoid; }
      .report-performance-table th,
      .report-performance-table td,
      .workflow-mobile-table th,
      .workflow-mobile-table td { white-space:normal; overflow-wrap:anywhere; }
      .report-lesson-card { min-width:0; box-sizing:border-box; border:1px solid var(--edu-border); border-radius:var(--radius-lg); padding:14px 16px; background:#fff; margin-bottom:10px; }
      .report-lesson-head { display:flex; justify-content:space-between; gap:10px; margin-bottom:8px; font-size:var(--text-md); }
      .report-lesson-body { display:grid; gap:6px; color:var(--edu-text); overflow-wrap:anywhere; }
      .report-photo-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:10px; margin-top:10px; }
      .report-photo-thumb { display:block; border-radius:var(--radius-md); overflow:hidden; border:1px solid var(--edu-border); background:var(--edu-bg); }
      .report-photo-thumb img { display:block; width:100%; height:120px; object-fit:cover; }
      .student-media-stack { display:grid; gap:4px; min-width:104px; align-content:start; }
      .student-media-input { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
      .student-media-trigger { padding:6px 8px; font-size:var(--text-xs); width:fit-content; border-radius:var(--radius-sm); }
      .student-media-summary { font-size:var(--text-xs); color:var(--edu-text-muted); line-height:1.3; }
      .student-media-grid { display:flex; flex-wrap:wrap; gap:6px; }
      .student-media-thumb { display:block; width:36px; height:36px; border-radius:8px; overflow:hidden; border:1px solid var(--edu-border); background:var(--edu-bg); }
      .student-media-thumb img { display:block; width:100%; height:100%; object-fit:cover; }
      .student-media-chip { display:inline-flex; align-items:center; justify-content:center; min-width:36px; height:36px; padding:0 6px; border-radius:8px; border:1px solid var(--edu-border); background:#eef2ff; color:#1e3a8a; font-size:var(--text-xs); font-weight:700; text-decoration:none; }
      .student-media-chip.video { background:#ecfeff; color:#155e75; }
      .report-print-compact .table-wrap { margin-top:8px !important; }
      .report-print-compact .report-performance-table th,
      .report-print-compact .report-performance-table td { padding:7px 10px; font-size:var(--text-sm); line-height:1.3; }
      .report-print-compact .report-meta-grid { gap:8px; margin-top:8px; }
      .report-print-compact .report-meta-card,
      .report-print-compact .report-summary-card,
      .report-print-compact .report-narrative-card,
      .report-print-compact .report-lesson-card { padding:10px 12px; border-radius:var(--radius-md); }
      .report-print-compact .report-summary-grid,
      .report-print-compact .report-narrative-grid,
      .report-print-compact .report-two-col { gap:8px; margin-top:10px; }
      .report-print-compact .report-narrative-copy { font-size:var(--text-md); line-height:1.45; }
      .report-print-compact .report-plain { font-size:var(--text-xl); }
      .report-print-compact .report-note-list { gap:6px; margin-top:8px; }
      .report-print-compact .report-note-item { padding:7px 9px; font-size:var(--text-sm); line-height:1.35; border-radius:var(--radius-md); }
      .report-print-compact .report-chart-card { margin-top:10px; }
      .report-print-compact .report-chart-card h3,
      .report-print-compact .report-print-lessons h3 { margin-bottom:8px; }
      .report-print-lessons.report-hidden { display:none !important; }
      .report-print-lessons .empty-msg { display:none !important; }
      .score-input { width:64px; min-width:64px; }
      .memo-input { min-width:320px; }
      .btn.small { min-height:32px; padding:7px 10px; font-size:var(--text-md); }
      .mobile-record-table { width:100%; }
      .mobile-record-table input, .mobile-record-table select, .mobile-record-table textarea { width:100%; }
      .mobile-record-table td.status-cell, .mobile-record-table td.charge-cell { min-width:140px; }
      .mobile-record-table td.status-cell select, .mobile-record-table td.charge-cell select { min-width:clamp(110px, 14ch, 180px); }
      .mobile-record-table td.student-no-cell,
      .mobile-record-table td.student-name-cell,
      .mobile-record-table td.memo-cell,
      .mobile-record-table td.photo-cell { min-width:0; }
      .mobile-record-table td.score-cell { min-width:74px; }
      .mobile-record-table td.memo-cell { min-width:220px; width:220px; }
      .mobile-record-table td.photo-cell { min-width:120px; width:120px; }
      .mobile-record-table td.memo-cell input { min-width:200px; }
      .lesson-attendance-table { width:100%; table-layout:fixed; }
      .lesson-attendance-table th,
      .lesson-attendance-table td { font-size:var(--text-md); line-height:1.3; }
      .lesson-attendance-table th { padding:10px 8px; white-space:normal; word-break:keep-all; }
      .lesson-attendance-table td { padding:8px 8px; vertical-align:top; }
      .lesson-attendance-table td.student-name-cell { min-width:160px !important; width:160px; }
      .lesson-attendance-table td.student-name-cell strong { display:block; font-size:var(--text-lg); line-height:1.25; }
      .lesson-attendance-table td.status-cell,
      .lesson-attendance-table td.charge-cell { min-width:82px !important; width:82px; }
      .lesson-attendance-table td.status-cell select,
      .lesson-attendance-table td.charge-cell select,
      .lesson-attendance-table select.compact-select { min-width:0; width:100%; padding:8px 10px; font-size:var(--text-xl); }
      .lesson-attendance-table td.score-cell { min-width:58px !important; width:58px; }
      .lesson-attendance-table .score-input.lesson-score-input { width:54px; min-width:54px; padding:8px 8px; text-align:center; font-size:var(--text-xl); }
      .lesson-attendance-table td.memo-cell { min-width:140px !important; width:140px; }
      .lesson-attendance-table .memo-input { width:100%; min-width:0; padding:8px 10px; font-size:var(--text-xl); }
      .lesson-attendance-table td.photo-cell { min-width:100px !important; width:100px; }
      .lesson-attendance-table .student-media-trigger { min-height:32px; padding:6px 8px; font-size:var(--text-sm); }
      .lesson-attendance-table .student-media-summary { font-size:var(--text-xs); }
      .lesson-attendance-table .student-media-grid { gap:4px; }
      .lesson-attendance-table .student-media-thumb,
      .lesson-attendance-table .student-media-chip { width:32px; height:32px; min-width:32px; }
      .wf-shell { display:grid; gap:16px; }
      .wf-shell.wf-shell-teacher { gap:14px; }
      .wf-shell.wf-shell-ops { gap:14px; }
      .wf-ops-topline { display:flex; justify-content:space-between; align-items:flex-end; gap:16px; padding:2px 2px 16px; border-bottom:1px solid var(--edu-border); }
      .wf-ops-title { display:grid; gap:7px; min-width:0; }
      .wf-ops-title h2 { margin:0; color:var(--edu-text); font-size:var(--text-2xl); line-height:1.08; letter-spacing:-0.045em; }
      .wf-ops-title p { margin:0; color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.5; }
      .wf-ops-actions { display:flex; justify-content:flex-end; align-items:center; gap:8px; flex-wrap:wrap; }
      .wf-hero,
      .wf-live-panel { background:rgba(251,249,245,0.96); border:1px solid #e4e2de; border-radius:var(--radius-lg); box-shadow:none; }
      .wf-hero { display:flex; justify-content:space-between; align-items:flex-start; gap:18px; padding:22px 24px; }
      .wf-hero.wf-hero-compact { padding:var(--space-5) var(--space-6); }
      .wf-hero-copy { display:grid; gap:10px; min-width:0; }
      .wf-hero-kicker,
      .wf-panel-kicker,
      .wf-focus-kicker { display:inline-flex; align-items:center; width:fit-content; min-height:28px; padding:0 10px; border-radius:var(--radius-xs); background:var(--edu-bg); color:var(--edu-primary); font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; }
      .wf-hero-copy h2 { margin:0; font-size:var(--text-2xl); line-height:1.04; letter-spacing:-0.04em; color:var(--edu-text); }
      .wf-hero-copy p { margin:0; max-width:68ch; color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.65; }
      .wf-hero-actions { display:flex; align-items:flex-start; justify-content:flex-end; gap:10px; flex-wrap:wrap; }
      .wf-inline-note { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; }
      .wf-stage-rail { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
      .wf-stage-chip { display:flex; gap:12px; align-items:flex-start; padding:14px 16px; border-radius:var(--radius-lg); background:var(--edu-bg); border:1px solid rgba(190,200,202,0.5); }
      .wf-stage-index { display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px; border-radius:var(--radius-lg); background:var(--edu-primary); color:#fff; font-size:var(--text-xs); font-weight:800; flex-shrink:0; }
      .wf-stage-chip strong { display:block; color:var(--edu-text); font-size:var(--text-md); letter-spacing:-0.02em; }
      .wf-stage-chip span:last-child { display:block; margin-top:4px; color:var(--edu-text-muted); font-size:var(--text-sm); line-height:1.5; }
      .wf-stat-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
      .wf-stat-card { display:grid; gap:8px; padding:14px 16px; border-radius:var(--radius-lg); background:#fff; border:1px solid rgba(190,200,202,0.55); }
      .wf-stat-label { font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; color:#6f797a; }
      .wf-stat-value { font-size:var(--text-2xl); line-height:1; font-weight:900; letter-spacing:-0.03em; color:var(--edu-text); }
      .wf-stat-copy { color:var(--edu-text-muted); font-size:var(--text-sm); line-height:1.5; }
      .wf-shell-ops .wf-stat-grid { gap:8px; }
      .wf-shell-ops .wf-stat-card { gap:5px; padding:12px 14px; border-radius:var(--radius-md); box-shadow:none; }
      .wf-shell-ops .wf-stat-label { font-size:var(--text-xs); letter-spacing:0.05em; }
      .wf-shell-ops .wf-stat-value { font-size:var(--text-2xl); }
      .wf-shell-ops .wf-stat-copy { font-size:var(--text-xs); }
      .wf-focus-grid,
      .wf-live-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
      .wf-focus-card { display:grid; gap:10px; padding:18px; border-radius:var(--radius-lg); background:rgba(251,249,245,0.96); border:1px solid #e4e2de; box-shadow:none; }
      .wf-focus-card h3 { margin:0; font-size:var(--text-2xl); line-height:1.08; letter-spacing:-0.03em; color:var(--edu-text); }
      .wf-focus-card p { margin:0; color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.6; }
      .wf-focus-meta { color:var(--edu-primary); font-size:var(--text-md); font-weight:700; }
      .wf-focus-actions { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
      .wf-live-panel { display:grid; gap:14px; padding:20px 22px; }
      .wf-shell-ops .wf-live-grid { gap:12px; }
      .wf-shell-ops .wf-live-panel { gap:12px; padding:16px; border-radius:var(--radius-lg); background:#fff; box-shadow:none; }
      .wf-shell-ops .wf-live-grid { align-items:start; }
      .wf-shell-ops .wf-live-panel { align-content:start; }
      .wf-shell-ops .wf-panel-head h3 { margin-top:4px; font-size:var(--text-2xl); }
      .wf-shell-ops .wf-panel-copy { font-size:var(--text-sm); }
      .wf-panel-head { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; }
      .wf-panel-head h3 { margin:6px 0 0; font-size:var(--text-2xl); line-height:1.08; letter-spacing:-0.03em; color:var(--edu-text); }
      .wf-panel-copy { max-width:54ch; color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; }
      .wf-live-list { display:grid; gap:10px; }
      .wf-live-item { display:grid; gap:8px; padding:14px 16px; border-radius:var(--radius-lg); background:#fff; border:1px solid rgba(190,200,202,0.62); text-decoration:none; color:inherit; transition:border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
      .wf-live-item:hover { border-color:#8cc4cc; box-shadow:none; transform:translateY(-1px); }
      .wf-teacher-action-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
      .wf-teacher-action-card { display:grid; gap:6px; min-width:0; padding:16px 18px; border-radius:var(--radius-lg); background:#fff; border:1px solid rgba(190,200,202,0.62); text-decoration:none; color:inherit; transition:border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
      .wf-teacher-action-card:hover { border-color:#8cc4cc; box-shadow:none; transform:translateY(-1px); }
      .wf-teacher-action-title { font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; color:#6f797a; }
      .wf-teacher-action-value { font-size:var(--text-2xl); line-height:1; font-weight:900; letter-spacing:-0.04em; color:var(--edu-text); }
      .wf-teacher-action-copy { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.5; }
      .wf-teacher-action-link { color:var(--edu-primary); font-size:var(--text-sm); font-weight:800; }
      .wf-teacher-lesson-card { gap:10px; }
      .wf-teacher-lesson-note { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; }
      .wf-teacher-lesson-footer { display:flex; justify-content:flex-end; color:var(--edu-primary); font-size:var(--text-sm); font-weight:800; }
      .wf-live-head { display:flex; justify-content:space-between; gap:10px; align-items:flex-start; }
      .wf-live-head strong { font-size:var(--text-xl); line-height:1.3; color:var(--edu-text); }
      .wf-live-meta { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; }
      .wf-item-badge { display:inline-flex; align-items:center; min-height:28px; padding:0 10px; border-radius:var(--radius-xs); font-size:var(--text-xs); font-weight:800; white-space:nowrap; }
      .wf-item-badge.info { background:var(--edu-bg); color:var(--edu-primary); }
      .wf-item-badge.good { background:#d8efe0; color:#215c34; }
      .wf-item-badge.warn { background:#ffeddc; color:#7a4212; }
      .wf-empty { padding:16px; border-radius:var(--radius-lg); background:#fff; border:1px dashed rgba(190,200,202,0.8); color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.6; }
      .wf-manage-panel { background:linear-gradient(180deg,#ffffff 0%,#f7fbfb 100%); }
      .wf-manage-grid { display:grid; gap:12px; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); }
      .wf-manage-card { display:grid; gap:10px; align-content:start; min-height:168px; padding:18px; border-radius:var(--radius-lg); border:1px solid rgba(190,200,202,0.72); background:#fff; color:var(--edu-text); text-decoration:none; box-shadow:none; transition:border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
      .wf-manage-card:hover { border-color:#8cc4cc; box-shadow:none; transform:translateY(-1px); }
      .wf-manage-icon { display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:var(--radius-lg); background:var(--edu-bg); color:var(--edu-primary); font-size:var(--text-2xl); font-weight:900; }
      .wf-manage-card strong { font-size:var(--text-2xl); line-height:1.12; letter-spacing:-0.03em; color:var(--edu-text); }
      .wf-manage-copy { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; }
      .app-body.role-student {
        --student-bg:#f5fbff;
        --student-bg-alt:#fff8ed;
        --student-bg-soft:#f7fff8;
        --student-sidebar-start:#256f8c;
        --student-sidebar-mid:#27837f;
        --student-sidebar-end:#5d5fa4;
        --student-accent:#0d8aa6;
        --student-accent-strong:#075f73;
        --student-accent-soft:#e9f8fb;
        --student-accent-soft-2:#d7f0f5;
        --student-border:rgba(13,138,166,0.16);
        --student-border-strong:rgba(13,138,166,0.30);
        --student-shadow:rgba(31,95,119,0.10);
        --student-shadow-strong:rgba(31,95,119,0.18);
        --student-ink:#172b35;
        --student-copy:#526977;
        --student-hero-start:#c7efff;
        --student-hero-mid:#d7f6e6;
        --student-hero-end:#fff0c7;
        --student-hero-text:#16313c;
        --student-reading-bg:#dff4ff;
        --student-reading-text:#12627c;
        --student-writing-bg:#ffedd5;
        --student-writing-text:#9a5b16;
        --student-audio-bg:#dcfce7;
        --student-audio-text:#246b45;
        --student-quiz-bg:#ece7ff;
        --student-quiz-text:#6750a4;
        --student-success-bg:#e7f7df;
        --student-success-text:#3b6d26;
        --student-review-bg:#eaf2ff;
        --student-review-text:#3860a8;
        --student-done-bg:#eef7ef;
        --student-done-text:#486b4c;
        --student-warn-bg:#ffe4df;
        --student-warn-text:#a44432;
        background:linear-gradient(180deg,var(--student-bg) 0%,var(--student-bg-alt) 44%,var(--student-bg-soft) 100%);
      }
      .app-body.role-student .main { padding:24px 24px 38px; }
      .app-body.role-student .page-container { max-width:1180px; }
      .app-body.role-student .page-title { display:none; }
      .app-body.role-student .sidebar { background:linear-gradient(180deg,var(--student-sidebar-start) 0%,var(--student-sidebar-mid) 38%,var(--student-sidebar-end) 100%); border-right:none; box-shadow:none; }
      .app-body.role-student .brand { margin-bottom:18px; }
      .app-body.role-student .brand-mark { font-size:var(--text-2xl); line-height:1.04; letter-spacing:-0.04em; }
      .app-body.role-student .brand-subtitle { display:block; color:#dff7ff; letter-spacing:0.08em; }
      .app-body.role-student .nav-link,
      .app-body.role-student .nav-link:visited { gap:12px; margin-bottom:10px; padding:13px 14px; border-radius:var(--radius-lg); color:rgba(255,255,255,0.82); font-size:var(--text-lg); font-weight:800; }
      .app-body.role-student .nav-link-icon { display:inline-flex; align-items:center; justify-content:center; width:36px; height:var(--control-h-lg); border-radius:var(--radius-md); background:rgba(255,255,255,0.16); color:#fff; font-size:var(--text-md); font-weight:900; flex-shrink:0; }
      .app-body.role-student .nav-link-label { min-width:0; overflow-wrap:anywhere; }
      .app-body.role-student .nav-link:hover { background:rgba(255,255,255,0.15); color:#fff; transform:none; }
      .app-body.role-student .nav-link:hover .nav-link-icon { background:rgba(255,255,255,0.24); }
      .app-body.role-student .nav-link.active { background:rgba(255,255,255,0.22); color:#fff; box-shadow:none; }
      .app-body.role-student .nav-link.active .nav-link-icon { background:#fff; color:var(--student-accent-strong); }
      .app-body.role-student .topbar { background:rgba(255,255,255,0.86); border-color:var(--student-border); box-shadow:none; }
      .app-body.role-student .topbar-primary { gap:14px; }
      .app-body.role-student .topbar-kicker { color:var(--student-accent); }
      .app-body.role-student .topbar-identity { font-size:var(--text-2xl); line-height:1.08; }
      .app-body.role-student .topbar-mini-field { background:var(--student-accent-soft); border-color:var(--student-border); }
      .app-body.role-student .topbar-mini-label { color:var(--student-accent); }
      .app-body.role-student .topbar-status-chip { background:var(--student-accent-soft); border-color:var(--student-border); color:var(--student-accent-strong); }
      .app-body.role-student .mobile-nav-toggle { background:var(--student-accent-soft); color:var(--student-accent-strong); border-color:var(--student-border); }
      .app-body.role-student .card { background:rgba(255,255,255,0.9); border:1px solid var(--student-border); border-radius:var(--radius-lg); box-shadow:none; }
      .app-body.role-student .card h3,
      .app-body.role-student .card h4 { font-size:var(--text-2xl); letter-spacing:-0.04em; color:var(--student-ink); }
      .app-body.role-student .hero-panel { display:block !important; position:relative; overflow:hidden; padding:26px 28px; border:none; border-radius:var(--radius-lg); background:linear-gradient(135deg,var(--student-hero-start) 0%,var(--student-hero-mid) 48%,var(--student-hero-end) 100%); color:var(--student-hero-text); box-shadow:none; }
      .app-body.role-student .hero-panel::before,
      .app-body.role-student .hero-panel::after { display:none; }
      .app-body.role-student .hero-panel > * { position:relative; z-index:1; }
      .app-body.role-student .hero-title { position:relative; margin:0 0 10px; font-size:var(--text-2xl); font-weight:900; line-height:1.03; letter-spacing:-0.05em; color:var(--student-hero-text); }
      .app-body.role-student .hero-copy { position:relative; max-width:38rem; color:rgba(36,52,59,0.82); font-size:var(--text-lg); line-height:1.7; }
      .app-body.role-student .hero-chip-row { position:relative; }
      .app-body.role-student .hero-chip { background:rgba(255,255,255,0.34); border:1px solid rgba(255,255,255,0.26); color:var(--student-accent-strong); }
      .app-body.role-student .section-kicker { display:inline-flex !important; background:var(--student-accent-soft); color:var(--student-accent-strong); }
      .app-body.role-student .hero-panel .section-kicker { position:relative; background:rgba(255,255,255,0.34); color:var(--student-accent-strong); }
      .app-body.role-student .section-copy,
      .app-body.role-student .section-note { display:block !important; color:var(--student-copy); }
      .app-body.role-student .hero-panel .section-copy,
      .app-body.role-student .hero-panel .section-note { position:relative; color:rgba(36,52,59,0.78); }
      .app-body.role-student .stat-grid,
      .app-body.role-student .ops-stats-grid { display:grid !important; }
      .app-body.role-student .stat-card,
      .app-body.role-student .ops-stat { background:linear-gradient(180deg,#ffffff 0%,#f7f8f3 100%); border:1px solid var(--student-border); border-radius:var(--radius-lg); box-shadow:none; }
      .app-body.role-student .stat-label,
      .app-body.role-student .ops-stat-label { color:var(--student-accent); }
      .app-body.role-student .stat-note,
      .app-body.role-student .ops-stat-copy,
      .app-body.role-student .muted { color:var(--student-copy); }
      .app-body.role-student .quick-action { border-radius:var(--radius-lg); border-color:var(--student-border); box-shadow:none; }
      .app-body.role-student .quick-action:hover { border-color:var(--student-border-strong); }
      .app-body.role-student input,
      .app-body.role-student select,
      .app-body.role-student textarea { border-color:var(--student-border); border-radius:var(--radius-lg); background:rgba(255,255,255,0.96); }
      .app-body.role-student input:focus,
      .app-body.role-student select:focus,
      .app-body.role-student textarea:focus { border-color:var(--student-accent); box-shadow:0 0 0 4px rgba(97,121,133,0.16); }
      .app-body.role-student button,
      .app-body.role-student .btn { border-radius:var(--radius-lg); font-weight:900; background:linear-gradient(135deg,#0d8aa6 0%,#287c85 100%); color:#fff; box-shadow:none; }
      .app-body.role-student .btn.secondary { background:linear-gradient(135deg,#6b73b7,#417f97); box-shadow:none; }
      .app-body.role-student .table-wrap { border-radius:var(--radius-lg); border:1px solid var(--student-border); box-shadow:none; }
      .app-body.role-student th { background:var(--student-accent-soft); color:var(--student-accent-strong); font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; }
      .app-body.role-student td { border-color:var(--student-accent-soft-2); }
      .app-body.role-student .empty-msg { color:var(--edu-text-muted); }
      .app-body.role-student .mini-link,
      .app-body.role-student .picker-link { display:inline-flex; align-items:center; justify-content:center; min-height:34px; padding:7px 12px; border-radius:var(--radius-md); background:var(--student-accent-soft); color:var(--student-accent-strong); font-weight:800; text-decoration:none; }
      .app-body.role-student .mini-link:hover,
      .app-body.role-student .picker-link:hover { background:var(--student-accent-soft-2); }
      @media (max-width: 900px) {
        .app-body.role-student .main { padding:12px; }
        .app-body.role-student .sidebar { width:min(84vw,320px); padding:20px 14px; }
        .app-body.role-student .nav-link,
        .app-body.role-student .nav-link:visited { margin-bottom:8px; padding:12px; border-radius:var(--radius-lg); }
        .app-body.role-student .nav-link-icon { width:34px; height:34px; border-radius:var(--radius-md); }
        .app-body.role-student .hero-panel { padding:20px 22px; border-radius:var(--radius-lg); }
        .app-body.role-student .hero-title { font-size:var(--text-2xl); }
        .app-body.role-student .card { border-radius:var(--radius-lg); }
        .app-body.role-student .student-task-inbox { padding:18px; border-radius:var(--radius-lg); }
        .app-body.role-student .student-task-detail { padding:18px; border-radius:var(--radius-lg); }
      }
      @media (max-width: 768px) {
        .app-body.role-student .topbar { padding:12px; border-radius:var(--radius-lg); }
        .app-body.role-student .topbar-primary { align-items:flex-start; }
        .app-body.role-student .topbar-identity { font-size:var(--text-xl); }
        .app-body.role-student .topbar-action-group { width:100%; }
        .app-body.role-student .topbar-mini-field { width:100%; justify-content:space-between; }
        .app-body.role-student .topbar-tools-group { justify-content:flex-end; }
        .app-body.role-student .mobile-nav-toggle { min-height:40px; border-radius:var(--radius-md); }
        .app-body.role-student .hero-title { font-size:var(--text-2xl); }
        .app-body.role-student .hero-copy { font-size:var(--text-md); line-height:1.6; }
        .app-body.role-student .table-wrap { border-radius:var(--radius-lg); }
      }
      .student-shell { display:grid; gap:18px; padding-bottom:20px; }
      .student-shell.student-shell-minimal { gap:14px; }
      .student-shell-launchpad { display:grid; grid-template-columns:minmax(220px,1.1fr) minmax(0,1.9fr); gap:12px; }
      .student-shell-start-card { display:grid; gap:10px; min-height:158px; padding:18px; border-radius:var(--radius-lg); border:1px solid var(--student-border); background:linear-gradient(135deg,#c4d3ce 0%,#b8cac4 100%); color:var(--student-hero-text); text-decoration:none; box-shadow:none; }
      .student-shell-start-top { display:flex; align-items:center; justify-content:space-between; gap:12px; }
      .student-shell-start-kicker { display:inline-flex; align-items:center; min-height:30px; padding:0 12px; border-radius:var(--radius-xs); background:rgba(255,255,255,0.32); color:var(--student-accent-strong); font-size:var(--text-xs); font-weight:900; letter-spacing:0.08em; text-transform:uppercase; }
      .student-shell-start-count { display:inline-flex; align-items:center; justify-content:center; min-width:48px; height:48px; padding:0 10px; border-radius:var(--radius-xs); background:rgba(255,255,255,0.62); color:var(--student-accent-strong); font-size:var(--text-2xl); font-weight:900; letter-spacing:-0.04em; }
      .student-shell-start-card strong { font-size:var(--text-2xl); line-height:1; letter-spacing:-0.05em; color:var(--student-hero-text); }
      .student-shell-start-card span:last-child { color:rgba(36,52,59,0.74); font-size:var(--text-md); line-height:1.45; }
      .student-shell-mini-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
      .student-shell-section.student-shell-section-minimal { padding:18px; }
      .student-shell-hero,
      .student-shell-section,
      .student-shell-submit { position:relative; overflow:hidden; border-radius:var(--radius-lg); border:1px solid var(--student-border); background:rgba(255,255,255,0.9); box-shadow:none; }
      .student-shell-hero { display:grid; grid-template-columns:minmax(0,1.45fr) minmax(180px,220px); gap:18px; padding:28px; background:linear-gradient(135deg,var(--student-hero-start) 0%,var(--student-hero-mid) 50%,var(--student-hero-end) 100%); border:none; color:var(--student-hero-text); box-shadow:none; }
      .student-shell-hero.student-shell-hero-compact { grid-template-columns:minmax(0,1fr) auto; align-items:center; padding:22px 24px; }
      .student-shell-hero.student-shell-hero-compact .student-shell-kicker,
      .student-shell-hero.student-shell-hero-compact p { display:none; }
      .student-shell-hero.student-shell-hero-compact .student-shell-hero-copy { gap:4px; }
      .student-shell-hero.student-shell-hero-compact .student-shell-hero-copy h2 { font-size:var(--text-2xl); }
      .student-shell-hero::after,
      .student-shell-hero::before { display:none; }
      .student-shell-hero-copy { position:relative; z-index:1; display:grid; gap:12px; }
      .student-shell-kicker { display:inline-flex; width:fit-content; align-items:center; min-height:30px; padding:0 12px; border-radius:var(--radius-xs); background:rgba(255,255,255,0.34); color:var(--student-accent-strong); font-size:var(--text-xs); font-weight:900; letter-spacing:0.08em; text-transform:uppercase; }
      .student-shell-hero-copy h2 { margin:0; font-size:var(--text-2xl); line-height:1; letter-spacing:-0.05em; color:var(--student-hero-text); }
      .student-shell-hero-copy p { margin:0; max-width:28rem; color:rgba(36,52,59,0.80); font-size:var(--text-lg); line-height:1.65; }
      .student-shell-hero-actions { display:flex; flex-wrap:wrap; gap:10px; }
      .student-shell-primary-btn { background:linear-gradient(135deg,#0d8aa6 0%,#287c85 100%); color:#fff; box-shadow:none; }
      .student-shell-primary-btn:hover { color:#fff; filter:none; background:linear-gradient(135deg,#0a7892 0%,#216f76 100%); }
      .student-shell-score { position:relative; z-index:1; display:grid; align-content:center; justify-items:center; gap:6px; padding:18px; border-radius:var(--radius-lg); background:rgba(255,255,255,0.34); backdrop-filter:blur(8px); text-align:center; color:var(--student-hero-text); }
      .student-shell-score-label { display:inline-flex; align-items:center; justify-content:center; min-width:74px; min-height:74px; padding:0 12px; border-radius:var(--radius-xs); background:rgba(255,255,255,0.52); color:var(--student-accent-strong); font-size:var(--text-2xl); font-weight:900; letter-spacing:-0.04em; }
      .student-shell-score strong { font-size:var(--text-2xl); line-height:1; letter-spacing:-0.04em; }
      .student-shell-score span:last-child { font-size:var(--text-sm); font-weight:700; color:rgba(36,52,59,0.78); }
      .student-shell-section,
      .student-shell-submit { padding:22px; }
      .student-shell-section-head { display:flex; justify-content:space-between; gap:14px; align-items:flex-start; margin-bottom:14px; }
      .student-shell-section-head h3 { margin:0; font-size:var(--text-2xl); line-height:1.05; letter-spacing:-0.04em; color:#111827; }
      .student-shell-section-head p { margin:6px 0 0; color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.6; }
      .student-shell-app-grid { display:grid; gap:12px; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); }
      .student-shell-app-card { display:grid; gap:12px; align-content:space-between; min-height:156px; padding:18px; border-radius:var(--radius-lg); border:1px solid rgba(226,232,240,0.9); background:#fff; text-decoration:none; color:#111827; box-shadow:none; transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
      .student-shell-app-card:hover { transform:translateY(-1px); border-color:var(--student-border-strong); box-shadow:none; }
      .student-shell-app-icon { display:inline-flex; align-items:center; justify-content:center; width:58px; height:58px; border-radius:var(--radius-lg); font-size:var(--text-2xl); font-weight:900; background:var(--student-accent-soft); color:var(--student-accent-strong); }
      .student-shell-app-card.tone-reading .student-shell-app-icon { background:var(--student-reading-bg); color:var(--student-reading-text); }
      .student-shell-app-card.tone-writing .student-shell-app-icon { background:var(--student-writing-bg); color:var(--student-writing-text); }
      .student-shell-app-card.tone-audio .student-shell-app-icon { background:var(--student-audio-bg); color:var(--student-audio-text); }
      .student-shell-app-card.tone-quiz .student-shell-app-icon { background:var(--student-quiz-bg); color:var(--student-quiz-text); }
      .student-shell-app-card strong { font-size:var(--text-2xl); line-height:1.05; letter-spacing:-0.04em; color:#111827; }
      .student-shell-app-badge { display:inline-flex; align-items:center; justify-content:center; min-height:34px; width:fit-content; padding:0 12px; border-radius:var(--radius-xs); background:var(--student-accent-soft); color:var(--student-accent-strong); font-size:var(--text-sm); font-weight:900; letter-spacing:0.04em; text-transform:uppercase; }
      .student-shell-app-card.student-shell-mini-card { min-height:168px; justify-items:start; align-content:center; }
      .student-shell-app-card.student-shell-mini-card .student-shell-app-badge { display:none; }
      .student-shell-app-card.student-shell-mini-card strong { font-size:var(--text-2xl); }
      .student-shell-pocket-grid { display:grid; gap:12px; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); }
      .student-shell-pocket-card { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:12px; align-items:center; min-height:92px; padding:16px 18px; border-radius:var(--radius-lg); border:1px solid rgba(226,232,240,0.88); background:#fff; text-decoration:none; color:#111827; box-shadow:none; transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
      .student-shell-pocket-card:hover { transform:translateY(-1px); border-color:var(--student-border-strong); box-shadow:none; }
      .student-shell-pocket-card.is-priority { border-color:rgba(97,121,133,0.26); box-shadow:none; }
      .student-shell-pocket-card.student-shell-pocket-card-minimal { min-height:84px; padding:14px 16px; }
      .student-shell-pocket-icon { display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:var(--radius-lg); font-size:var(--text-2xl); font-weight:900; color:#1f2937; }
      .student-shell-pocket-copy { min-width:0; display:grid; gap:4px; }
      .student-shell-pocket-copy em { font-style:normal; font-size:var(--text-xs); font-weight:900; letter-spacing:0.08em; text-transform:uppercase; color:var(--edu-text-muted); }
      .student-shell-pocket-copy strong { font-size:var(--text-xl); line-height:1.2; letter-spacing:-0.03em; color:#111827; overflow-wrap:anywhere; }
      .student-shell-pocket-copy span:last-child { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.45; }
      .student-shell-pocket-badge { display:inline-flex; align-items:center; justify-content:center; min-height:30px; padding:0 10px; border-radius:var(--radius-xs); font-size:var(--text-xs); font-weight:900; letter-spacing:0.04em; text-transform:uppercase; }
      .student-shell-pocket-badge.tone-todo { background:var(--student-reading-bg); color:var(--student-reading-text); }
      .student-shell-pocket-badge.tone-retry { background:var(--student-warn-bg); color:var(--student-warn-text); }
      .student-shell-pocket-badge.tone-waiting { background:var(--student-review-bg); color:var(--student-review-text); }
      .student-shell-pocket-badge.tone-done { background:var(--student-done-bg); color:var(--student-done-text); }
      .student-shell-task-list { display:grid; gap:12px; }
      .student-shell-task-card { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:14px; align-items:center; padding:16px 18px; border-radius:var(--radius-lg); border:2px solid rgba(226,232,240,0.88); background:#fff; text-decoration:none; color:inherit; transition:border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
      .student-shell-task-card:hover { transform:translateY(-1px); border-color:var(--student-border-strong); box-shadow:none; }
      .student-shell-task-card.is-priority { border-color:rgba(97,121,133,0.34); box-shadow:none; }
      .student-shell-task-icon { display:inline-flex; align-items:center; justify-content:center; width:56px; height:56px; border-radius:var(--radius-lg); font-size:var(--text-2xl); font-weight:900; color:#1f2937; }
      .student-shell-task-icon.tone-reading,
      .student-shell-learning-card.tone-reading .student-shell-learning-icon,
      .student-shell-submit-action.tone-reading { background:var(--student-reading-bg); color:var(--student-reading-text); }
      .student-shell-task-icon.tone-writing,
      .student-shell-learning-card.tone-writing .student-shell-learning-icon,
      .student-shell-submit-action.tone-writing { background:var(--student-writing-bg); color:var(--student-writing-text); }
      .student-shell-task-icon.tone-audio,
      .student-shell-learning-card.tone-audio .student-shell-learning-icon,
      .student-shell-submit-action.tone-audio { background:var(--student-audio-bg); color:var(--student-audio-text); }
      .student-shell-task-icon.tone-quiz { background:var(--student-quiz-bg); color:var(--student-quiz-text); }
      .student-shell-task-copy { min-width:0; display:grid; gap:6px; }
      .student-shell-task-topline { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
      .student-shell-task-kind { display:inline-flex; align-items:center; min-height:24px; padding:0 10px; border-radius:var(--radius-xs); background:var(--edu-bg); color:var(--edu-text-muted); font-size:var(--text-xs); font-weight:800; letter-spacing:0.06em; text-transform:uppercase; }
      .student-shell-task-status { display:inline-flex; align-items:center; min-height:24px; padding:0 10px; border-radius:var(--radius-xs); font-size:var(--text-xs); font-weight:900; letter-spacing:0.04em; text-transform:uppercase; }
      .student-shell-task-status.tone-todo { background:var(--student-reading-bg); color:var(--student-reading-text); }
      .student-shell-task-status.tone-retry { background:var(--student-warn-bg); color:var(--student-warn-text); }
      .student-shell-task-status.tone-waiting { background:var(--student-review-bg); color:var(--student-review-text); }
      .student-shell-task-status.tone-done { background:var(--student-done-bg); color:var(--student-done-text); }
      .student-shell-task-copy strong { font-size:var(--text-2xl); line-height:1.2; letter-spacing:-0.03em; color:#111827; overflow-wrap:anywhere; }
      .student-shell-task-meta { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.45; }
      .student-shell-task-note { color:var(--student-warn-text); font-size:var(--text-md); font-weight:700; line-height:1.45; }
      .student-shell-task-open { display:inline-flex; align-items:center; justify-content:center; min-height:46px; padding:0 16px; border-radius:var(--radius-lg); background:var(--student-accent-soft); color:var(--student-accent-strong); font-size:var(--text-md); font-weight:900; }
      .student-shell-learning-grid,
      .student-shell-submit-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
      .student-shell-learning-card,
      .student-shell-submit-action { display:grid; gap:10px; justify-items:start; align-content:start; min-height:152px; padding:18px; border-radius:var(--radius-lg); border:1px solid rgba(226,232,240,0.9); background:#fff; text-decoration:none; color:#111827; box-shadow:none; transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
      .student-shell-learning-card:hover,
      .student-shell-submit-action:hover { transform:translateY(-1px); box-shadow:none; border-color:var(--student-border-strong); }
      .student-shell-learning-icon { display:inline-flex; align-items:center; justify-content:center; width:56px; height:56px; border-radius:var(--radius-lg); font-size:var(--text-2xl); font-weight:900; }
      .student-shell-learning-card strong,
      .student-shell-submit-action { font-size:var(--text-2xl); font-weight:900; letter-spacing:-0.03em; }
      .student-shell-submit-action { min-height:116px; align-content:center; justify-items:center; text-align:center; }
      .student-shell-empty { display:grid; gap:8px; padding:18px; border-radius:var(--radius-lg); border:1px dashed var(--student-border-strong); background:linear-gradient(180deg,#ffffff 0%,#f7f8f3 100%); color:var(--edu-text-muted); }
      .student-shell-empty strong { font-size:var(--text-2xl); color:#111827; letter-spacing:-0.03em; }
      .student-v0-home,
      .student-v0-task-shell,
      .family-v0-home { display:grid; gap:18px; min-width:0; }
      .student-v0-home-grid { display:grid; grid-template-columns:minmax(0,1.16fr) minmax(360px,0.84fr); gap:16px; align-items:stretch; }
      .student-v0-main-card,
      .family-v0-main-card { display:grid; gap:12px; min-width:0; padding:22px; border-radius:var(--radius-lg); text-decoration:none; box-shadow:none; }
      .student-v0-main-card { min-height:208px; background:linear-gradient(135deg,#c8d6d0 0%,#baccc5 100%); color:var(--student-hero-text); border:1px solid rgba(97,121,133,0.16); }
      .family-v0-main-card { min-height:208px; background:linear-gradient(135deg,#d6e1dc 0%,#c6d3ce 52%,#eef2f0 100%); color:var(--family-ink); border:1px solid var(--family-border); box-shadow:none; }
      .student-v0-main-top,
      .family-v0-main-top { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
      .student-v0-main-kicker,
      .family-v0-main-kicker { display:inline-flex; align-items:center; min-height:32px; width:fit-content; padding:0 12px; border-radius:var(--radius-xs); font-size:var(--text-xs); font-weight:900; letter-spacing:0.08em; text-transform:uppercase; }
      .student-v0-main-kicker { background:rgba(255,255,255,0.34); color:var(--student-accent-strong); }
      .family-v0-main-kicker { background:#fff; color:var(--family-accent-strong); border:1px solid var(--family-border); }
      .student-v0-main-count,
      .family-v0-main-count { display:inline-flex; align-items:center; justify-content:center; min-width:56px; height:56px; padding:0 12px; border-radius:var(--radius-xs); font-size:var(--text-2xl); font-weight:900; letter-spacing:-0.04em; }
      .student-v0-main-count { background:rgba(255,255,255,0.62); color:var(--student-accent-strong); }
      .family-v0-main-count { background:var(--family-accent-soft); color:var(--family-accent-strong); }
      .student-v0-main-card strong,
      .family-v0-main-card strong { font-size:var(--text-2xl); line-height:1; letter-spacing:-0.05em; }
      .student-v0-main-card strong { color:var(--student-hero-text); }
      .family-v0-main-card strong { color:var(--family-ink); }
      .student-v0-main-card > span:last-child,
      .family-v0-main-card > span:last-child,
      .family-v0-main-card em { font-style:normal; color:rgba(36,52,59,0.76); font-size:var(--text-md); line-height:1.55; }
      .student-v0-meter-grid,
      .family-v0-meter-grid { display:grid; gap:10px; grid-template-columns:repeat(4,minmax(0,1fr)); }
      .student-v0-meter,
      .family-v0-meter { display:grid; gap:4px; min-width:0; padding:12px 14px; border-radius:var(--radius-lg); background:#fff; box-shadow:none; }
      .student-v0-meter { border:1px solid var(--student-border); }
      .family-v0-meter { border:1px solid var(--family-border); }
      .student-v0-meter strong,
      .family-v0-meter strong { font-size:var(--text-2xl); line-height:1; letter-spacing:-0.04em; color:#111827; }
      .family-v0-meter strong { color:var(--family-ink); }
      .student-v0-meter span,
      .family-v0-meter span { color:var(--edu-text-muted); font-size:var(--text-sm); font-weight:800; line-height:1.25; }
      .student-v0-meter.is-action { background:var(--student-writing-bg); }
      .student-v0-meter.is-review { background:var(--student-review-bg); }
      .student-v0-meter.is-done { background:var(--student-done-bg); }
      .student-v0-meter.is-retry { background:var(--student-warn-bg); }
      .family-v0-meter.is-action { background:#e9f8fb; }
      .family-v0-meter.is-report { background:#ece7ff; }
      .family-v0-meter.is-homework { background:#fff0d6; }
      .family-v0-meter.is-update { background:#e7f8e8; }
      .family-v0-children { display:flex; flex-wrap:wrap; gap:8px; margin-top:auto; }
      .family-v0-child-chip { display:inline-flex; align-items:center; min-height:30px; padding:0 12px; border-radius:var(--radius-xs); background:#fff; border:1px solid var(--family-border); color:var(--family-accent-strong); font-size:var(--text-sm); font-weight:800; }
      .student-v0-app-grid { display:grid; gap:12px; grid-template-columns:repeat(3,minmax(0,1fr)); }
      .family-v0-home-grid { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(320px,0.9fr); gap:16px; align-items:stretch; }
      .family-v0-app-grid { display:grid; gap:12px; grid-template-columns:repeat(2,minmax(0,1fr)); }
      .student-v0-app-card,
      .family-v0-app-card { display:grid; gap:12px; align-content:space-between; min-width:0; min-height:208px; padding:20px; border-radius:var(--radius-lg); text-decoration:none; transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
      .student-v0-app-card { background:#fff; border:1px solid var(--student-border); box-shadow:none; color:#111827; }
      .family-v0-app-card { background:#fff; border:1px solid var(--family-border); box-shadow:none; color:var(--family-ink); }
      .student-v0-app-card:hover,
      .family-v0-app-card:hover { transform:translateY(-2px); }
      .student-v0-app-card:hover { border-color:var(--student-border-strong); box-shadow:none; }
      .family-v0-app-card:hover { border-color:var(--family-border-strong); box-shadow:none; }
      .student-v0-app-icon,
      .family-v0-app-icon { display:inline-flex; align-items:center; justify-content:center; width:64px; height:64px; border-radius:var(--radius-lg); font-size:var(--text-2xl); font-weight:900; }
      .student-v0-app-icon { background:var(--student-accent-soft); color:var(--student-accent-strong); }
      .student-v0-app-card.tone-reading .student-v0-app-icon { background:var(--student-reading-bg); color:var(--student-reading-text); }
      .student-v0-app-card.tone-audio .student-v0-app-icon { background:var(--student-audio-bg); color:var(--student-audio-text); }
      .student-v0-app-card.tone-quiz .student-v0-app-icon { background:var(--student-quiz-bg); color:var(--student-quiz-text); }
      .family-v0-app-icon { background:var(--family-accent-soft); color:var(--family-accent-strong); }
      .student-v0-app-card strong,
      .family-v0-app-card strong { font-size:var(--text-2xl); line-height:1.08; letter-spacing:-0.04em; overflow-wrap:anywhere; }
      .family-v0-app-card strong { color:var(--family-ink); }
      .family-v0-app-badge { display:inline-flex; align-items:center; justify-content:center; min-height:32px; width:fit-content; padding:0 12px; border-radius:var(--radius-xs); background:var(--family-accent-soft); color:var(--family-accent-strong); font-size:var(--text-xs); font-weight:900; letter-spacing:0.08em; text-transform:uppercase; }
      .student-v0-list-shell,
      .family-v0-feed-shell { display:grid; gap:14px; padding:20px; border-radius:var(--radius-lg); background:rgba(255,255,255,0.9); box-shadow:none; }
      .student-v0-list-shell { border:1px solid var(--student-border); }
      .family-v0-feed-shell { border:1px solid var(--family-border); }
      .student-v0-section-head,
      .family-v0-section-head { display:flex; justify-content:space-between; gap:14px; align-items:flex-start; }
      .student-v0-section-head h3,
      .family-v0-section-head h3 { margin:0; font-size:var(--text-2xl); line-height:1.08; letter-spacing:-0.04em; }
      .student-v0-section-head p,
      .family-v0-section-head p { margin:6px 0 0; font-size:var(--text-md); line-height:1.55; color:var(--edu-text-muted); }
      .student-v0-section-head-muted { margin-top:4px; padding-top:12px; border-top:1px solid var(--edu-border); }
      .student-v0-list-stack,
      .family-v0-feed-list { display:grid; gap:12px; }
      .student-v0-task-card,
      .family-v0-feed-item { display:grid; align-items:center; min-width:0; text-decoration:none; transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
      .student-v0-task-card { grid-template-columns:auto minmax(0,1fr) auto; gap:16px; min-height:96px; padding:16px 18px; border-radius:var(--radius-lg); background:#fff; border:1px solid var(--student-border); box-shadow:none; color:#111827; }
      .student-v0-task-card:hover { transform:translateY(-1px); border-color:var(--student-border-strong); box-shadow:none; }
      .student-v0-task-card.is-priority,
      .student-v0-task-card.is-active { border-color:rgba(97,121,133,0.34); box-shadow:none; }
      .student-v0-task-card.is-done { background:linear-gradient(180deg,#f7f8f9 0%,#eef1f3 100%); border-color:rgba(132,146,155,0.24); }
      .student-v0-task-icon { display:inline-flex; align-items:center; justify-content:center; width:58px; height:58px; border-radius:var(--radius-lg); font-size:var(--text-2xl); font-weight:900; color:#21303a; }
      .student-v0-task-icon.tone-reading { background:var(--student-reading-bg); color:var(--student-reading-text); }
      .student-v0-task-icon.tone-writing { background:var(--student-writing-bg); color:var(--student-writing-text); }
      .student-v0-task-icon.tone-audio { background:var(--student-audio-bg); color:var(--student-audio-text); }
      .student-v0-task-icon.tone-quiz { background:var(--student-quiz-bg); color:var(--student-quiz-text); }
      .student-v0-task-copy { min-width:0; display:grid; gap:5px; }
      .student-v0-task-copy strong { font-size:var(--text-xl); line-height:1.15; letter-spacing:-0.03em; overflow-wrap:anywhere; }
      .student-v0-task-copy span { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.45; }
      .student-v0-task-badge { display:inline-flex; align-items:center; justify-content:center; min-height:30px; width:fit-content; padding:0 12px; border-radius:var(--radius-xs); font-size:var(--text-xs); font-weight:900; letter-spacing:0.06em; text-transform:uppercase; }
      .student-v0-task-badge.tone-todo { background:var(--student-reading-bg); color:var(--student-reading-text); }
      .student-v0-task-badge.tone-retry { background:var(--student-warn-bg); color:var(--student-warn-text); }
      .student-v0-task-badge.tone-waiting { background:var(--student-review-bg); color:var(--student-review-text); }
      .student-v0-task-badge.tone-done { background:var(--student-done-bg); color:var(--student-done-text); }
      .student-v0-empty { display:grid; gap:8px; padding:18px; border-radius:var(--radius-lg); border:1px dashed rgba(97,121,133,0.3); background:linear-gradient(180deg,#ffffff 0%,#f5f7f6 100%); color:#5a6b72; }
      .student-v0-empty strong { font-size:var(--text-xl); line-height:1.2; color:#1f2937; }
      .student-v0-task-shell { padding:0; }
      .student-v0-task-split { display:grid; grid-template-columns:minmax(300px,360px) minmax(0,1fr); gap:18px; align-items:start; }
      .student-v0-task-list-col,
      .student-v0-task-detail-col { min-width:0; }
      .student-v0-task-list-col { display:grid; gap:12px; padding:18px; border-radius:var(--radius-lg); border:1px solid var(--student-border); background:rgba(255,255,255,0.92); box-shadow:none; }
      .student-v0-task-detail-col { display:grid; }
      .student-v0-task-panel { display:grid; gap:16px; min-width:0; padding:22px; border-radius:var(--radius-lg); border:1px solid var(--student-border); background:rgba(255,255,255,0.94); box-shadow:none; }
      .student-v0-task-hero { display:grid; grid-template-columns:auto minmax(0,1fr); gap:14px; align-items:start; }
      .student-v0-task-hero-icon { display:inline-flex; align-items:center; justify-content:center; width:72px; height:72px; border-radius:var(--radius-lg); font-size:var(--text-2xl); font-weight:900; color:#21303a; }
      .student-v0-task-hero-icon.tone-reading { background:var(--student-reading-bg); color:var(--student-reading-text); }
      .student-v0-task-hero-icon.tone-writing { background:var(--student-writing-bg); color:var(--student-writing-text); }
      .student-v0-task-hero-icon.tone-audio { background:var(--student-audio-bg); color:var(--student-audio-text); }
      .student-v0-task-hero-icon.tone-quiz { background:var(--student-quiz-bg); color:var(--student-quiz-text); }
      .student-v0-task-hero-copy { display:grid; gap:10px; min-width:0; }
      .student-v0-task-hero-copy h4 { margin:0; font-size:var(--text-2xl); line-height:1.05; letter-spacing:-0.05em; color:#111827; overflow-wrap:anywhere; }
      .student-v0-chip-row { display:flex; flex-wrap:wrap; gap:8px; }
      .student-v0-date-chip { display:inline-flex; align-items:center; min-height:30px; padding:0 12px; border-radius:var(--radius-xs); background:#edf2f4; color:#5c6d75; font-size:var(--text-sm); font-weight:800; }
      .student-v0-panel-block { display:grid; gap:8px; padding:18px; border-radius:var(--radius-lg); border:1px solid var(--edu-border); background:#fff; }
      .student-v0-panel-label { font-size:var(--text-xs); font-weight:900; letter-spacing:0.08em; text-transform:uppercase; color:#66767e; }
      .student-v0-task-panel .student-task-body { margin:0; color:var(--edu-text); font-size:var(--text-xl); line-height:1.7; white-space:pre-line; }
      .student-v0-compose-card textarea { width:100%; min-height:190px; padding:16px 18px; border-radius:var(--radius-lg); border:1px solid var(--edu-border); background:#fff; color:#111827; font-size:16px; /* iOS Safari zooms a focused field under 16px; platform guard, not density. */ line-height:1.7; resize:vertical; }
      .student-v0-upload-panel { gap:14px; }
      .student-v0-upload-grid { display:grid; gap:12px; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); }
      .student-v0-upload-field { position:relative; display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:14px; align-items:center; min-width:0; min-height:112px; padding:18px; border-radius:var(--radius-lg); border:2px dashed rgba(148,163,184,0.28); background:linear-gradient(180deg,#ffffff 0%,#f7f8f9 100%); cursor:pointer; transition:border-color .18s ease, box-shadow .18s ease, transform .18s ease, background .18s ease; }
      .student-v0-upload-field:hover { transform:translateY(-1px); border-color:rgba(97,121,133,0.38); box-shadow:none; }
      .student-v0-upload-field.has-file { border-style:solid; background:linear-gradient(180deg,#ffffff 0%,#edf5f1 100%); border-color:rgba(97,121,133,0.34); }
      .student-v0-upload-field.tone-audio { border-color:rgba(111,170,159,0.26); }
      .student-v0-upload-field.tone-camera { border-color:rgba(136,168,193,0.28); }
      .student-v0-upload-field.tone-file { border-color:rgba(132,146,155,0.26); }
      .student-v0-upload-symbol { display:inline-flex; align-items:center; justify-content:center; width:56px; height:56px; border-radius:var(--radius-lg); font-size:var(--text-2xl); font-weight:900; color:#21303a; background:#edf2f4; }
      .student-v0-upload-field.tone-audio .student-v0-upload-symbol { background:var(--student-audio-bg); color:var(--student-audio-text); }
      .student-v0-upload-field.tone-camera .student-v0-upload-symbol { background:var(--student-reading-bg); color:var(--student-reading-text); }
      .student-v0-upload-field.tone-file .student-v0-upload-symbol { background:var(--student-done-bg); color:var(--student-done-text); }
      .student-v0-upload-copy { min-width:0; display:grid; gap:4px; }
      .student-v0-upload-copy strong { font-size:var(--text-xl); line-height:1.15; letter-spacing:-0.03em; color:#111827; overflow-wrap:anywhere; }
      .student-v0-upload-copy span { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.45; }
      .student-v0-upload-meta { font-size:var(--text-sm); line-height:1.45; color:var(--edu-text-muted); text-align:right; overflow-wrap:anywhere; max-width:140px; }
      .student-v0-upload-input { position:absolute; inset:0; opacity:0; cursor:pointer; }
      .student-v0-add-row { display:flex; flex-wrap:wrap; gap:10px; }
      .student-v0-note-card { display:grid; gap:8px; padding:16px 18px; border-radius:var(--radius-lg); border:1px solid rgba(244,180,116,0.42); background:#fff7ed; }
      .student-v0-note-card strong { font-size:var(--text-md); font-weight:900; color:#c25d16; }
      .student-v0-note-copy { color:#7c4320; font-size:var(--text-lg); line-height:1.65; }
      .student-v0-meta-line { color:#8d654a; font-size:var(--text-sm); line-height:1.45; }
      .student-v0-submit-form { display:grid; gap:14px; }
      .student-v0-submit-form label { display:grid; gap:8px; color:var(--edu-text); font-size:var(--text-md); font-weight:800; }
      .student-v0-submit-form textarea,
      .student-v0-submit-form input[type='text'],
      .student-v0-submit-form input[type='file'] { width:100%; }
      .student-v0-files-card { display:grid; gap:10px; padding:18px; border-radius:var(--radius-lg); border:1px solid var(--edu-border); background:#fff; }
      .student-v0-action-row { display:flex; flex-wrap:wrap; gap:10px; }
      .student-v0-action-row .btn,
      .student-v0-action-row button { min-height:var(--control-h-lg); padding:0 18px; border-radius:var(--radius-lg); }
      .student-v0-submit-bar { justify-content:flex-end; }
      .student-v0-file-list { display:grid; gap:10px; }
      .student-v0-file-item { display:flex; justify-content:space-between; gap:14px; align-items:center; min-width:0; padding:14px 16px; border-radius:var(--radius-lg); border:1px solid var(--edu-border); background:#fff; color:var(--edu-text); text-decoration:none; box-shadow:none; }
      .student-v0-file-item span:first-child { min-width:0; overflow-wrap:anywhere; }
      .student-v0-file-item span:last-child { color:var(--student-accent-strong); font-size:var(--text-sm); font-weight:900; letter-spacing:0.06em; text-transform:uppercase; }
      .student-v0-file-item.homework-file-row { flex-wrap:wrap; gap:10px 14px; }
      .student-v0-file-item.homework-file-row .homework-file-name { flex:1 1 160px; min-width:0; overflow-wrap:anywhere; color:var(--edu-text); font-weight:800; text-decoration:none; }
      .student-v0-file-item.homework-file-row .homework-file-size { color:var(--edu-text-muted); font-size:var(--text-md); font-weight:700; letter-spacing:0; text-transform:none; white-space:nowrap; }
      .homework-file-delete-form { margin:0; margin-left:auto; }
      .homework-file-delete-btn { min-height:var(--control-h-lg); padding:0 12px; border-radius:var(--radius-md); }
      .homework-file-group { display:grid; gap:6px; }
      .homework-file-group-label { color:var(--edu-text-muted); font-size:var(--text-sm); font-weight:800; }
      .family-v0-feed-item { grid-template-columns:auto minmax(0,1fr); gap:14px; min-height:92px; padding:16px 18px; border-radius:var(--radius-lg); border:1px solid var(--family-border); background:#fff; box-shadow:none; color:var(--family-ink); }
      .family-v0-feed-item:hover { transform:translateY(-1px); border-color:var(--family-border-strong); box-shadow:none; }
      .family-v0-feed-icon { display:inline-flex; align-items:center; justify-content:center; width:54px; height:54px; border-radius:var(--radius-lg); background:var(--family-accent-soft); color:var(--family-accent-strong); font-size:var(--text-2xl); font-weight:900; }
      .family-v0-feed-copy { min-width:0; display:grid; gap:4px; }
      .family-v0-feed-copy strong { font-size:var(--text-xl); line-height:1.15; letter-spacing:-0.03em; color:var(--family-ink); overflow-wrap:anywhere; }
      .family-v0-feed-copy span { color:var(--family-copy); font-size:var(--text-md); line-height:1.45; }
      .family-v0-empty { display:grid; gap:8px; place-items:center; min-height:120px; padding:18px; border-radius:var(--radius-lg); border:1px dashed var(--family-border-strong); background:linear-gradient(180deg,#ffffff 0%,#f6f8f7 100%); color:var(--family-copy); text-align:center; }
      .portal-home { --portal-border:rgba(148,163,184,0.22); --portal-muted:var(--edu-text-muted); --portal-ink:var(--edu-text); --portal-blue:var(--edu-primary); --portal-teal:var(--edu-primary); --portal-amber:#b45309; }
      .portal-overview-grid { display:grid; grid-template-columns:minmax(260px,1.35fr) repeat(3,minmax(150px,1fr)); gap:10px; align-items:stretch; }
      .portal-focus-card,
      .portal-stat-tile,
      .portal-panel { min-width:0; border:1px solid var(--portal-border); border-radius:8px; background:#fff; box-shadow:none; color:var(--portal-ink); }
      .portal-focus-card,
      .portal-stat-tile { display:grid; align-content:space-between; gap:10px; min-height:132px; padding:16px; text-decoration:none; }
      .portal-focus-card { border-left:4px solid var(--portal-blue); }
      .portal-focus-card.is-empty { border-left-color:var(--edu-text-muted); }
      .portal-focus-card span,
      .portal-stat-tile span { color:var(--portal-muted); font-size:var(--text-xs); font-weight:900; letter-spacing:0.06em; text-transform:uppercase; }
      .portal-focus-card strong { font-size:var(--text-2xl); line-height:1.08; letter-spacing:-0.03em; color:var(--portal-ink); overflow-wrap:anywhere; }
      .portal-focus-card em,
      .portal-focus-card small,
      .portal-stat-tile em { color:var(--portal-muted); font-size:var(--text-md); line-height:1.45; font-style:normal; overflow-wrap:anywhere; }
      .portal-stat-tile strong { font-size:var(--text-2xl); line-height:1; letter-spacing:-0.04em; color:var(--portal-ink); }
      .portal-stat-tile:nth-child(3) { border-left:4px solid var(--portal-amber); }
      .portal-stat-tile:nth-child(4) { border-left:4px solid var(--portal-teal); }
      .portal-panel-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
      .portal-panel-grid-parent { grid-template-columns:repeat(2,minmax(0,1fr)); }
      .portal-panel { display:grid; gap:12px; padding:14px; align-content:start; }
      .portal-panel-head { display:flex; align-items:center; justify-content:space-between; gap:10px; min-width:0; }
      .portal-panel-head h3 { margin:0; font-size:var(--text-xl); line-height:1.15; letter-spacing:-0.02em; color:var(--portal-ink); }
      .portal-panel-head a,
      .portal-panel-head span { color:var(--portal-blue); font-size:var(--text-sm); font-weight:900; text-decoration:none; white-space:nowrap; }
      .portal-row-list { display:grid; gap:8px; min-width:0; }
      .portal-row { display:grid; grid-template-columns:auto minmax(0,1fr) minmax(96px,auto); gap:10px; align-items:center; min-width:0; min-height:58px; padding:10px; border:1px solid var(--edu-border); border-radius:8px; background:var(--edu-bg); color:var(--portal-ink); text-decoration:none; }
      .portal-row:hover { border-color:rgba(29,78,216,0.24); background:#fff; }
      .portal-row-mark { display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; border-radius:8px; background:#e4ebe3; color:#075985; font-size:var(--text-md); font-weight:900; }
      .portal-row-main { display:grid; gap:3px; min-width:0; }
      .portal-row-main strong { font-size:var(--text-md); line-height:1.2; color:var(--portal-ink); overflow-wrap:anywhere; }
      .portal-row-main em,
      .portal-row-meta { color:var(--portal-muted); font-size:var(--text-sm); line-height:1.35; font-style:normal; overflow-wrap:anywhere; }
      .portal-row-meta { text-align:right; }
      .portal-empty { padding:12px; border:1px dashed rgba(148,163,184,0.28); border-radius:8px; color:var(--portal-muted); background:var(--edu-bg); font-size:var(--text-md); line-height:1.45; }
      @media (max-width: 1100px) {
        .student-v0-home-grid,
        .student-v0-task-split,
        .family-v0-home-grid,
        .portal-overview-grid,
        .portal-panel-grid,
        .portal-panel-grid-parent { grid-template-columns:1fr; }
      }
      @media (max-width: 900px) {
        .student-v0-main-card,
        .family-v0-main-card,
        .student-v0-list-shell,
        .family-v0-feed-shell,
        .student-v0-task-list-col,
        .student-v0-task-panel { padding:18px; border-radius:var(--radius-lg); }
        .student-v0-app-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
        .family-v0-app-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
        .student-v0-task-card { grid-template-columns:auto minmax(0,1fr); }
        .student-v0-task-card .student-v0-task-badge { grid-column:1 / -1; justify-self:start; }
        .student-v0-meter-grid,
        .family-v0-meter-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
      }
      @media (max-width: 768px) {
        .student-v0-home,
        .student-v0-task-shell,
        .family-v0-home { gap:14px; }
        .student-v0-main-card strong,
        .family-v0-main-card strong,
        .student-v0-task-hero-copy h4 { font-size:var(--text-2xl); }
        .student-v0-main-count,
        .family-v0-main-count { min-width:48px; height:48px; font-size:var(--text-2xl); }
        .student-v0-app-card,
        .family-v0-app-card { min-height:148px; padding:16px; border-radius:var(--radius-lg); }
        .student-v0-app-icon,
        .family-v0-app-icon { width:56px; height:56px; border-radius:var(--radius-lg); font-size:var(--text-2xl); }
        .student-v0-app-card strong,
        .family-v0-app-card strong { font-size:var(--text-2xl); }
        .student-v0-list-shell,
        .family-v0-feed-shell,
        .student-v0-task-list-col,
        .student-v0-task-panel { padding:16px; border-radius:var(--radius-lg); }
        .student-v0-task-card { padding:14px 16px; min-height:84px; border-radius:var(--radius-lg); }
        .student-v0-task-icon { width:52px; height:52px; border-radius:var(--radius-lg); font-size:var(--text-2xl); }
        .student-v0-task-copy strong,
        .family-v0-feed-copy strong { font-size:var(--text-xl); }
        .student-v0-task-hero { grid-template-columns:1fr; }
        .student-v0-task-hero-icon { width:64px; height:64px; border-radius:var(--radius-lg); font-size:var(--text-2xl); }
        .student-v0-panel-block,
        .student-v0-note-card,
        .student-v0-files-card,
        .student-v0-file-item,
        .family-v0-feed-item { border-radius:var(--radius-lg); }
        .student-v0-action-row > * { flex:1 1 calc(50% - 5px); }
        .student-v0-upload-grid { grid-template-columns:1fr; }
        .student-v0-upload-field { grid-template-columns:auto minmax(0,1fr); }
        .student-v0-upload-meta { grid-column:1 / -1; text-align:left; max-width:none; }
        .portal-row { grid-template-columns:auto minmax(0,1fr); }
        .portal-row-meta { grid-column:2; text-align:left; }
      }
      @media (max-width: 540px) {
        .student-v0-app-grid,
        .family-v0-app-grid,
        .student-v0-meter-grid,
        .family-v0-meter-grid { grid-template-columns:1fr; }
        .student-v0-action-row > * { flex:1 1 100%; }
      }
      .student-library-shell,
      .student-reader-shell { display:grid; gap:18px; }
      .student-library-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:12px; }
      .student-book-card,
      .student-reader-panel,
      .student-chapter-card { display:grid; gap:12px; min-width:0; padding:20px; border-radius:var(--radius-lg); border:1px solid var(--student-border); background:rgba(255,255,255,0.92); box-shadow:none; }
      .student-book-card { grid-template-columns:72px minmax(0,1fr); align-items:center; gap:12px; padding:12px; border-radius:var(--radius-lg); }
      .student-book-preview { position:relative; display:block; width:72px; text-decoration:none; }
      .student-book-page { position:relative; overflow:hidden; aspect-ratio:4 / 5.45; border-radius:var(--radius-lg); background:linear-gradient(180deg,#f8f7f2 0%,#e7ede9 100%); box-shadow:none; }
      .student-book-page::before { content:''; position:absolute; inset:0 auto 0 0; width:8px; background:linear-gradient(180deg,rgba(255,255,255,0.9) 0%,rgba(230,236,233,0.92) 100%); box-shadow:none; z-index:2; }
      .student-book-page::after { content:''; position:absolute; inset:10px 10px auto auto; width:52px; height:52px; border-radius:var(--radius-lg); background:rgba(255,255,255,0.18); z-index:2; }
      .student-book-page img { position:relative; z-index:1; display:block; width:100%; height:100%; object-fit:cover; }
      .student-book-page-fallback { display:grid; place-items:center; width:100%; height:100%; background:linear-gradient(135deg,#97ada6 0%,#aac1b9 48%,#c7d9d4 100%); color:var(--student-hero-text); font-size:var(--text-2xl); font-weight:900; letter-spacing:-0.03em; }
      .student-book-page-fallback span { padding:0 20px; text-align:center; }
      .student-book-preview-badge { display:none; }
      .student-book-body,
      .student-reader-copy { display:grid; gap:10px; min-width:0; }
      .student-book-kicker { display:inline-flex; width:fit-content; align-items:center; min-height:26px; padding:0 10px; border-radius:var(--radius-xs); background:var(--student-accent-soft); color:var(--student-accent-strong); font-size:var(--text-xs); font-weight:900; letter-spacing:0.08em; text-transform:uppercase; }
      .student-book-title,
      .student-reader-copy h3 { margin:0; font-size:var(--text-2xl); line-height:1.05; letter-spacing:-0.05em; color:#111827; }
      .student-book-meta,
      .student-reader-copy p { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.6; }
      .student-book-card .student-book-title { font-size:var(--text-xl); line-height:1.12; }
      .student-book-card .student-book-meta { font-size:var(--text-sm); line-height:1.45; }
      .student-book-pill-row { display:flex; flex-wrap:wrap; gap:8px; }
      .student-book-pill { display:inline-flex; align-items:center; min-height:28px; padding:0 12px; border-radius:var(--radius-xs); background:#f7f8f3; border:1px solid var(--student-border); color:var(--student-accent-strong); font-size:var(--text-sm); font-weight:800; }
      .student-book-note { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; }
      .student-book-actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:4px; }
      .student-book-actions .btn { flex:0 0 auto; min-height:var(--control-h-lg); padding:0 14px; }
      .student-book-card .student-book-pill-row,
      .student-book-card .student-book-note,
      .student-book-card .btn.secondary { display:none; }
      .student-book-card .student-book-actions { margin-top:0; }
      .student-reader-hero { display:grid; grid-template-columns:minmax(0,1fr) 136px; gap:14px; align-items:center; padding:18px 20px; border-radius:var(--radius-lg); background:linear-gradient(180deg,rgba(255,255,255,0.94) 0%,rgba(242,245,241,0.96) 100%); border:1px solid var(--student-border); box-shadow:none; }
      .student-reader-preview { justify-self:end; width:min(100%,136px); }
      .student-reader-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
      .student-reader-panel h4,
      .student-chapter-card h4 { margin:0; font-size:var(--text-2xl); line-height:1.08; letter-spacing:-0.04em; color:#111827; }
      .student-reader-chapter-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:16px; }
      .student-chapter-card { align-content:start; }
      .student-chapter-card audio { width:100%; border-radius:var(--radius-md); }
      .workflow-lesson-page { display:grid; gap:16px; }
      .workflow-lesson-header,
      .workflow-panel { background:rgba(251,249,245,0.96); border:1px solid #e4e2de; border-radius:var(--radius-lg); box-shadow:none; }
      .workflow-lesson-header { padding:22px 24px; }
      .workflow-kicker { display:inline-flex; align-items:center; min-height:28px; padding:0 10px; border-radius:var(--radius-xs); background:var(--edu-bg); color:var(--edu-primary); font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; }
      .workflow-header-row { display:flex; justify-content:space-between; align-items:flex-start; gap:18px; margin-top:12px; }
      .workflow-title { margin:0; font-size:var(--text-2xl); line-height:1.04; letter-spacing:-0.04em; color:var(--edu-text); }
      .workflow-copy { margin-top:8px; max-width:62ch; color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.6; }
      .workflow-meta-row { display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
      .workflow-meta-pill { display:inline-flex; align-items:center; min-height:32px; padding:0 12px; border-radius:var(--radius-xs); background:var(--edu-bg); color:#3e494a; font-size:var(--text-sm); font-weight:700; }
      .workflow-header-side { position:relative; display:grid; gap:10px; justify-items:end; align-content:start; }
      .workflow-status-badge { display:inline-flex; align-items:center; min-height:34px; padding:0 14px; border-radius:var(--radius-xs); background:var(--edu-bg); color:var(--edu-primary); font-size:var(--text-sm); font-weight:800; letter-spacing:0.05em; text-transform:uppercase; }
      .workflow-status-badge.is-finished { background:#d8efe0; color:#215c34; }
      .workflow-stat-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-top:18px; }
      .workflow-stat { padding:14px 16px; border-radius:var(--radius-lg); background:#fff; border:1px solid rgba(190,200,202,0.55); }
      .workflow-stat-label { display:block; font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; color:#6f797a; }
      .workflow-stat-value { display:block; margin-top:8px; font-size:var(--text-2xl); line-height:1; font-weight:900; letter-spacing:-0.03em; color:var(--edu-text); }
      .workflow-meta-grid-single { grid-template-columns:1fr; }
      .workflow-step-strip { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
      .workflow-step { display:flex; gap:12px; align-items:flex-start; padding:14px 16px; border-radius:var(--radius-lg); background:var(--edu-bg); border:1px solid rgba(190,200,202,0.5); }
      .workflow-step.is-active { background:#ffffff; border-color:#9fcfd6; box-shadow:none; }
      .workflow-step-index { display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px; border-radius:var(--radius-lg); background:var(--edu-primary); color:#fff; font-size:var(--text-xs); font-weight:800; flex-shrink:0; }
      .workflow-step strong { display:block; color:var(--edu-text); font-size:var(--text-md); letter-spacing:-0.02em; }
      .workflow-step span:last-child { display:block; margin-top:4px; color:var(--edu-text-muted); font-size:var(--text-sm); line-height:1.5; }
      .workflow-lesson-shell { display:grid; grid-template-columns:minmax(0,1fr); gap:16px; align-items:start; min-width:0; }
      .workflow-main-column { display:grid; gap:16px; min-width:0; }
      .workflow-lesson-header,
      .workflow-panel,
      .workflow-panel-head,
      .workflow-panel-head > div,
      .workflow-panel-copy,
      .workflow-meta-form,
      .workflow-roster-form,
      .workflow-meta-grid,
      .workflow-roster-wrap,
      .workflow-action-bar,
      .workflow-action-copy { min-width:0; }
      .workflow-lesson-header,
      .workflow-panel { width:100%; }
      .workflow-panel { padding:18px; }
      .workflow-panel.workflow-panel-quiet { background:var(--edu-bg); }
      .workflow-panel-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; margin-bottom:12px; }
      .workflow-panel-head h4 { margin:0; font-size:var(--text-2xl); line-height:1.15; color:var(--edu-text); }
      .workflow-panel-copy { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; max-width:52ch; }
      .workflow-panel.workflow-meta-collapsible { padding:0; overflow:hidden; }
      .workflow-meta-toggle { align-items:center; margin:0; padding:18px; list-style:none; cursor:pointer; }
      .workflow-meta-toggle::-webkit-details-marker { display:none; }
      .workflow-meta-toggle::marker { content:""; }
      .workflow-meta-toggle:focus-visible { outline:3px solid rgba(0,109,119,0.36); outline-offset:-3px; }
      .workflow-meta-toggle-actions { display:flex; align-items:center; gap:8px; margin-left:auto; color:var(--edu-text-muted); }
      .workflow-meta-toggle-state { font-size:var(--text-sm); font-weight:800; white-space:nowrap; }
      .workflow-meta-toggle-state.is-open { display:none; }
      .workflow-meta-collapsible[open] .workflow-meta-toggle-state.is-open { display:inline; }
      .workflow-meta-collapsible[open] .workflow-meta-toggle-state.is-closed { display:none; }
      .workflow-meta-collapsible[open] .workflow-student-toggle-icon svg { transform:rotate(180deg); }
      .workflow-meta-collapsible[open] > .workflow-meta-toggle { border-bottom:1px solid rgba(190,200,202,0.62); }
      .workflow-meta-collapsible:not([open]) .workflow-panel-copy { display:none; }
      .workflow-meta-collapsible-body { min-width:0; padding:12px 18px 18px; }
      .workflow-checklist-callout { display:grid; gap:6px; margin-bottom:14px; padding:14px 16px; border-radius:var(--radius-lg); background:#fff; border:1px solid rgba(190,200,202,0.6); }
      .workflow-checklist-callout strong { font-size:var(--text-md); font-weight:800; color:var(--edu-text); }
      .workflow-checklist-callout p { margin:0; color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; }
      .workflow-checklist-callout-compact { margin-bottom:12px; background:#f7f6f2; }
      .workflow-checklist-callout-live > p { display:none; }
      .workflow-checklist-callout-live > p.workflow-checklist-copy-live { display:block; }
      .workflow-meta-optional { border:1px solid rgba(190,200,202,0.6); border-radius:var(--radius-lg); background:#fff; }
      .workflow-meta-optional-summary { display:flex; align-items:center; justify-content:space-between; gap:12px; list-style:none; cursor:pointer; padding:14px 16px; }
      .workflow-meta-optional-summary::-webkit-details-marker { display:none; }
      .workflow-meta-optional-summary strong { font-size:var(--text-md); font-weight:800; color:var(--edu-text); }
      .workflow-meta-optional-summary span { color:var(--edu-text-muted); font-size:var(--text-sm); line-height:1.45; }
      .workflow-meta-optional-body { display:grid; gap:10px; padding:0 16px 16px; border-top:1px solid rgba(190,200,202,0.5); }
      .workflow-meta-grid-optional { margin-top:12px; }
      .workflow-field-help { color:#6f797a; font-size:var(--text-xs); font-weight:700; letter-spacing:0.04em; text-transform:uppercase; overflow-wrap:anywhere; }
      .workflow-utility-menu { position:relative; width:min(360px, 100%); }
      .workflow-utility-menu[open] { z-index:8; }
      .workflow-utility-trigger { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:46px; padding:10px 14px; border-radius:var(--radius-lg); background:#fff; border:1px solid rgba(190,200,202,0.7); box-shadow:none; cursor:pointer; list-style:none; }
      .workflow-utility-trigger::-webkit-details-marker { display:none; }
      .workflow-utility-trigger-text { display:grid; gap:3px; min-width:0; }
      .workflow-utility-trigger-text strong { font-size:var(--text-md); line-height:1.15; color:var(--edu-text); }
      .workflow-utility-trigger-text span:last-child { font-size:var(--text-sm); line-height:1.45; color:var(--edu-text-muted); }
      .workflow-utility-trigger-meta { display:inline-flex; align-items:center; justify-content:center; min-width:32px; height:32px; padding:0 10px; border-radius:var(--radius-xs); background:var(--edu-bg); color:var(--edu-primary); font-size:var(--text-sm); font-weight:900; }
      .workflow-utility-panel { position:absolute; top:calc(100% + 10px); right:0; width:min(460px, calc(100vw - 72px)); display:grid; gap:12px; padding:16px; border-radius:var(--radius-lg); background:rgba(251,249,245,0.98); border:1px solid #e4e2de; box-shadow:0 22px 52px rgba(15,23,42,0.14); }
      .workflow-utility-summary { display:flex; align-items:center; gap:12px; padding:12px 14px; border-radius:var(--radius-lg); background:#fff; border:1px solid rgba(190,200,202,0.6); }
      .workflow-utility-summary strong { font-size:var(--text-2xl); line-height:1; font-weight:900; color:var(--edu-primary); }
      .workflow-utility-summary span { font-size:var(--text-md); line-height:1.45; color:var(--edu-text-muted); }
      .workflow-utility-summary.is-empty strong { color:#6f797a; }
      .workflow-utility-section { display:grid; gap:10px; padding:14px; border-radius:var(--radius-lg); background:var(--edu-bg); border:1px solid rgba(190,200,202,0.55); }
      .workflow-utility-section-head { display:grid; gap:4px; }
      .workflow-utility-section-head h4 { margin:0; font-size:var(--text-xl); line-height:1.15; color:var(--edu-text); }
      .workflow-utility-section-head p { margin:0; font-size:var(--text-sm); line-height:1.55; color:var(--edu-text-muted); }
      .workflow-file-table { border-color:rgba(190,200,202,0.6); box-shadow:none; }
      .workflow-roster-wrap { width:100%; min-width:0; overflow:visible; border:0; background:transparent; box-shadow:none; }
      .workflow-roster-list { display:grid; gap:14px; width:100%; min-width:0; }
      .workflow-student-card { min-width:0; overflow:hidden; border:1px solid rgba(190,200,202,0.7); border-radius:var(--radius-lg); background:#fffdfa; box-shadow:none; }
      .workflow-student-header { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 16px; list-style:none; cursor:pointer; background:var(--edu-bg); border-bottom:0; }
      .workflow-student-header::-webkit-details-marker { display:none; }
      .workflow-student-header::marker { content:""; }
      .workflow-student-header:focus-visible { outline:3px solid rgba(0,109,119,0.36); outline-offset:-3px; }
      .workflow-student-card[open] .workflow-student-header { border-bottom:1px solid rgba(190,200,202,0.62); }
      .workflow-student-header strong { display:block; color:var(--edu-text); font-size:var(--text-xl); line-height:1.2; }
      .workflow-student-card:not([open]) .workflow-student-identity > .workflow-field-label,
      .workflow-student-card:not([open]) .workflow-student-identity > .workflow-student-meta,
      .workflow-student-card:not([open]) .workflow-student-identity > .workflow-student-extra { display:none; }
      .workflow-student-header-actions { display:flex; align-items:center; gap:8px; margin-left:auto; }
      .workflow-evaluation-complete { display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; flex:0 0 26px; border-radius:var(--radius-lg); color:#fff; background:#2f8f46; }
      .workflow-evaluation-complete[hidden] { display:none; }
      .workflow-evaluation-complete svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }
      .workflow-student-toggle-icon { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; flex:0 0 28px; color:var(--edu-text-muted); }
      .workflow-student-toggle-icon svg { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; transition:transform .16s ease; }
      .workflow-student-card[open] .workflow-student-toggle-icon svg { transform:rotate(180deg); }
      .workflow-field-label { display:block; margin-bottom:7px; color:var(--edu-text-muted); font-size:var(--text-xs); font-weight:900; letter-spacing:0.07em; line-height:1.25; text-transform:uppercase; overflow-wrap:anywhere; }
      .workflow-attendance-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 12px; padding:14px 16px 0; }
      .workflow-score-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px 12px; padding:14px 16px 16px; }
      .workflow-signal-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px 12px; padding:0 16px 16px; }
      .workflow-attendance-field, .workflow-score-field, .workflow-signal-field { min-width:0; padding:11px 12px; border:1px solid rgba(190,200,202,0.55); border-radius:var(--radius-lg); background:#fff; }
      .workflow-private-comment-field { grid-column:1 / -1; }
      .workflow-private-comment-input { width:100%; min-width:0; }
      .workflow-private-comment-preview { display:inline-block; min-width:0; max-width:32ch; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; padding:3px 8px; border:1px solid var(--edu-border); border-radius:var(--radius-sm); background:#fff; color:var(--edu-text-muted); font-size:var(--text-xs); font-weight:700; }
      .workflow-private-comment-preview[hidden] { display:none; }
      .workflow-student-detail-row { min-width:0; padding:16px; border-top:1px solid rgba(190,200,202,0.62); background:#fffdfa; }
      .workflow-roster-empty { padding:24px; border:1px dashed rgba(190,200,202,0.8); border-radius:var(--radius-lg); background:#fff; }
      .workflow-student-meta { margin-top:6px; color:#6f797a; font-size:var(--text-sm); font-weight:700; }
      .workflow-attendance-field select, .workflow-signal-field select { width:100%; min-width:0; background:#fff; }
      .workflow-inline-stack { display:grid; gap:6px; }
      .workflow-chip-group { display:flex; flex-wrap:wrap; gap:6px; }
      .workflow-choice { position:relative; display:inline-flex; }
      .workflow-choice input { position:absolute; opacity:0; inset:0; pointer-events:none; }
      .workflow-choice label { display:inline-flex; align-items:center; justify-content:center; min-width:34px; min-height:34px; padding:0 10px; border-radius:var(--radius-xs); background:var(--edu-bg); border:1px solid transparent; color:#3e494a; font-size:var(--text-sm); font-weight:800; cursor:pointer; transition:all .16s ease; }
      .workflow-choice input:checked + label { background:#006d77; border-color:#006d77; color:#fff; box-shadow:none; }
      .workflow-choice label:hover { border-color:#a9c9ce; background:#ffffff; }
      .workflow-choice.workflow-choice-clear label { color:#6f797a; background:#fff; border-color:#d7d4cf; }
      .workflow-score-choice-group { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:5px; width:100%; min-width:0; }
      .workflow-score-choice-group .workflow-choice { width:100%; }
      .workflow-score-choice-group .workflow-choice label { width:100%; min-width:0; min-height:36px; padding:0; }
      .workflow-score-choice-group.is-readonly .workflow-choice label { cursor:default; opacity:.72; }
      .workflow-score-choice-group.is-readonly .workflow-choice input:checked + label { opacity:1; box-shadow:none; }
      .workflow-memo-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
      .workflow-memo-grid > :only-child { grid-column:1 / -1; }
      .workflow-memo-field { min-width:0; }
      .workflow-memo-grid label { display:block; margin-bottom:6px; }
      .workflow-memo-field .workflow-student-memo { display:block; width:100%; min-height:132px; resize:vertical; }
      .workflow-readonly-memo { min-height:132px; padding:14px 16px; border-radius:var(--radius-lg); background:var(--edu-bg); border:1px solid rgba(190,200,202,.65); }
      .workflow-readonly-memo strong { display:block; margin-bottom:8px; color:var(--edu-text); }
      .workflow-readonly-memo div { color:var(--edu-text-muted); white-space:pre-wrap; line-height:1.6; }
      .workflow-student-file-panel { margin-top:12px; padding-top:12px; border-top:1px solid rgba(190,200,202,.65); }
      .workflow-student-file-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:8px; }
      .workflow-student-file-heading span { color:#6a7677; font-size:var(--text-sm); }
      .workflow-student-file-panel .student-media-stack { display:grid; grid-template-columns:max-content minmax(120px,1fr); align-items:center; gap:8px 12px; }
      .workflow-student-file-panel .student-media-grid { grid-column:1 / -1; }
      .workflow-flag-group { display:flex; flex-wrap:wrap; gap:6px; }
      .workflow-flag-choice { position:relative; display:inline-flex; }
      .workflow-flag-choice input { position:absolute; opacity:0; inset:0; pointer-events:none; }
      .workflow-flag-choice label { display:inline-flex; align-items:center; justify-content:center; min-height:32px; padding:0 10px; border-radius:var(--radius-xs); background:#fff; border:1px solid rgba(190,200,202,0.7); color:var(--edu-text-muted); font-size:var(--text-xs); font-weight:800; cursor:pointer; transition:all .16s ease; }
      .workflow-flag-choice input:checked + label { background:#fff3ea; border-color:#ffb783; color:#6d390c; box-shadow:none; }
      .workflow-flag-choice label:hover { border-color:#ffb783; background:#fffaf6; }
      .workflow-signal-cell { vertical-align:middle; }
      .workflow-signal-chip { display:inline-flex; align-items:center; min-height:28px; padding:0 10px; border-radius:var(--radius-xs); margin:0 6px 6px 0; font-size:var(--text-xs); font-weight:800; line-height:1; }
      .workflow-signal-chip.warn { background:#ffdcc5; color:#6d390c; }
      .workflow-signal-chip.soft { background:var(--edu-bg); color:var(--edu-primary); }
      .workflow-signal-chip.neutral { background:#efeeea; color:#3e494a; }
      .workflow-signal-empty { color:#6f797a; font-size:var(--text-sm); line-height:1.45; }
      .workflow-action-bar { display:flex; justify-content:space-between; align-items:center; gap:16px; margin-top:14px; padding-top:14px; border-top:1px solid rgba(190,200,202,0.7); }
      .workflow-action-copy { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; max-width:54ch; }
      .workflow-lesson-page .workflow-action-bar > .workflow-action-copy { display:none; }
      .workflow-lesson-page .workflow-action-bar > .workflow-action-copy.workflow-action-copy-live { display:block; }
      .workflow-auto-list { display:grid; gap:10px; }
      .workflow-auto-item { padding:12px 14px; border-radius:var(--radius-lg); background:#fff; border:1px solid rgba(190,200,202,0.6); }
      .workflow-auto-item-title { font-size:var(--text-md); font-weight:800; color:var(--edu-text); }
      .workflow-auto-item-copy { margin-top:4px; color:var(--edu-text-muted); font-size:var(--text-sm); line-height:1.5; }
      .workflow-auto-item-meta { margin-top:8px; color:var(--edu-primary); font-size:var(--text-sm); font-weight:700; }
      .workflow-auto-empty { padding:12px 14px; border-radius:var(--radius-lg); background:#fff; border:1px dashed rgba(190,200,202,0.8); color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.6; }
      .workflow-guide-grid { display:grid; gap:10px; grid-template-columns:repeat(auto-fit,minmax(110px,1fr)); }
      .workflow-guide-chip { padding:12px 14px; border-radius:var(--radius-lg); background:#fff; border:1px solid rgba(190,200,202,0.6); }
      .workflow-guide-chip strong { display:block; font-size:var(--text-xl); font-weight:900; color:var(--edu-text); }
      .workflow-guide-chip span { display:block; margin-top:4px; color:var(--edu-text-muted); font-size:var(--text-sm); }
      .review-queue-page { display:grid; gap:16px; min-width:0; }
      .review-queue-header,
      .review-queue-filters,
      .review-queue-list,
      .review-queue-inspector { min-width:0; width:100%; box-sizing:border-box; background:rgba(251,249,245,0.96); border:1px solid #e4e2de; border-radius:var(--radius-lg); box-shadow:none; }
      .review-queue-header,
      .review-queue-filters,
      .review-queue-list,
      .review-queue-inspector { padding:20px 22px; }
      .review-queue-header { display:grid; gap:16px; }
      .review-queue-headline { display:flex; justify-content:space-between; align-items:flex-start; gap:18px; }
      .review-queue-headline h3 { margin:0; font-size:var(--text-2xl); line-height:1.05; letter-spacing:-0.04em; color:var(--edu-text); }
      .review-queue-copy { margin-top:8px; max-width:64ch; color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.6; }
      .review-queue-kicker { display:inline-flex; align-items:center; min-height:28px; padding:0 10px; border-radius:var(--radius-xs); background:var(--edu-bg); color:var(--edu-primary); font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; }
      .review-queue-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
      .review-app-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
      .review-app-card { display:grid; gap:8px; min-width:0; padding:16px 18px; border-radius:var(--radius-lg); background:#fff; border:1px solid rgba(190,200,202,0.62); box-shadow:none; }
      .review-app-icon { display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:var(--radius-md); background:var(--edu-bg); color:var(--edu-primary); font-size:var(--text-xl); font-weight:900; }
      .review-app-card strong { font-size:var(--text-2xl); line-height:1.1; letter-spacing:-0.03em; color:var(--edu-text); }
      .review-app-badge { display:inline-flex; align-items:center; justify-content:center; min-height:30px; width:fit-content; padding:0 12px; border-radius:var(--radius-xs); background:var(--edu-bg); color:#3e494a; font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; }
      .review-app-badge.good { background:#d8efe0; color:#215c34; }
      .review-app-badge.warn { background:#fff3ea; color:#8a490f; }
      .review-queue-stat { padding:14px 16px; border-radius:var(--radius-lg); background:#fff; border:1px solid rgba(190,200,202,0.55); }
      .review-queue-stat-label { display:block; font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; color:#6f797a; }
      .review-queue-stat-value { display:block; margin-top:8px; font-size:var(--text-2xl); line-height:1; font-weight:900; letter-spacing:-0.03em; color:var(--edu-text); }
      .review-filter-form { display:grid; gap:12px; min-width:0; }
      .review-filter-grid { display:grid; grid-template-columns:2fr 1fr 1fr auto; gap:10px; align-items:end; min-width:0; }
      .review-queue-layout { display:grid; grid-template-columns:minmax(320px,0.78fr) minmax(0,1.22fr); gap:16px; align-items:start; min-width:0; }
      .review-queue-list { display:grid; gap:10px; min-width:0; }
      .review-queue-list-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
      .review-queue-list-items { display:grid; gap:10px; min-width:0; }
      .review-queue-item { display:grid; gap:10px; min-width:0; padding:14px 16px; border-radius:var(--radius-lg); border:1px solid rgba(190,200,202,0.62); background:#fff; text-decoration:none; color:inherit; transition:border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
      .review-queue-item:hover { border-color:#8cc4cc; box-shadow:none; transform:translateY(-1px); }
      .review-queue-item.is-active { border-color:#006d77; box-shadow:none; background:#fdfefe; }
      .review-item-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
      .review-item-title { margin:0; font-size:var(--text-xl); line-height:1.2; color:var(--edu-text); }
      .review-item-meta,
      .review-item-copy { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; }
      .review-item-chip-row,
      .review-inspector-chip-row { display:flex; flex-wrap:wrap; gap:6px; }
      .review-chip { display:inline-flex; align-items:center; min-height:28px; padding:0 10px; border-radius:var(--radius-xs); background:var(--edu-bg); color:#3e494a; font-size:var(--text-xs); font-weight:800; letter-spacing:0.04em; text-transform:uppercase; }
      .review-chip.pending { background:#fff3ea; color:#8a490f; }
      .review-chip.approved { background:#d8efe0; color:#215c34; }
      .review-chip.rejected { background:#f4dddd; color:#7a1f28; }
      .review-chip.needs_resubmission { background:#f4dddd; color:#7a1f28; }
      .review-chip.low { background:#f4dddd; color:#7a1f28; }
      .review-chip.medium { background:#fff3ea; color:#8a490f; }
      .review-chip.high { background:#d8efe0; color:#215c34; }
      .review-queue-inspector { display:grid; gap:16px; position:sticky; top:24px; max-height:calc(100vh - 48px); overflow-y:auto; padding-bottom:16px; }
      .review-inspector-head { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; }
      .review-inspector-head h4 { margin:0; font-size:var(--text-2xl); line-height:1.1; color:var(--edu-text); }
      .review-inspector-copy { margin-top:8px; color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.6; }
      .review-evidence-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
      .review-evidence-card,
      .review-draft-card { padding:16px 18px; border-radius:var(--radius-lg); background:#fff; border:1px solid rgba(190,200,202,0.6); }
      .review-evidence-card strong,
      .review-draft-card strong { display:block; font-size:var(--text-md); font-weight:800; color:var(--edu-text); letter-spacing:0.02em; }
      .review-evidence-card span { display:block; margin-top:6px; color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.5; }
      .review-draft-text { margin-top:10px; padding:14px 16px; border-radius:var(--radius-lg); background:#f7f6f2; color:#1f2a2b; font-size:var(--text-lg); line-height:1.7; white-space:pre-wrap; }
      .review-task-meta-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-top:12px; }
      .review-target-grid,
      .student-task-support-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:12px; }
      .review-target-card,
      .student-task-support-card { padding:14px 16px; border-radius:var(--radius-lg); background:#f7f6f2; border:1px solid rgba(190,200,202,0.56); }
      .review-target-card strong,
      .student-task-support-card strong { display:block; font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; color:#6f797a; }
      .review-target-list,
      .student-task-support-list { display:grid; gap:8px; margin-top:10px; }
      .review-target-item,
      .student-task-support-item { padding:10px 12px; border-radius:var(--radius-md); background:#fff; border:1px solid rgba(190,200,202,0.52); }
      .review-target-item-title,
      .student-task-support-item-title { display:block; color:var(--edu-text); font-size:var(--text-md); font-weight:800; }
      .review-target-item-copy,
      .student-task-support-item-copy { display:block; margin-top:4px; color:var(--edu-text-muted); font-size:var(--text-sm); line-height:1.5; }
      .review-note-card { padding:16px 18px; border-radius:var(--radius-lg); background:#fff8f0; border:1px solid rgba(245,158,11,0.28); }
      .review-note-card strong { display:block; font-size:var(--text-md); font-weight:800; color:#92400e; letter-spacing:0.02em; }
      .review-file-table { margin-top:12px; }
      .review-action-stack { display:grid; gap:12px; }
      .review-action-bar { display:flex; justify-content:space-between; align-items:center; gap:14px; padding-top:14px; border-top:1px solid rgba(190,200,202,0.68); }
      .review-action-copy { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; max-width:56ch; }
      .review-note-field { display:grid; gap:8px; }
      .review-note-field span { font-size:var(--text-sm); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; color:#6f797a; }
      .review-note-field textarea { min-height:92px; }
      .review-collapse { border:1px solid rgba(190,200,202,0.6); border-radius:var(--radius-lg); background:#fff; }
      .review-collapse summary { display:flex; align-items:center; justify-content:space-between; gap:12px; list-style:none; cursor:pointer; padding:14px 16px; font-size:var(--text-md); font-weight:800; color:var(--edu-text); }
      .review-collapse summary::-webkit-details-marker { display:none; }
      .review-collapse-body { display:grid; gap:12px; padding:0 16px 16px; border-top:1px solid rgba(190,200,202,0.5); }
      .review-empty { padding:20px; border-radius:var(--radius-lg); border:1px dashed rgba(190,200,202,0.8); background:#fff; color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.65; }
      .app-body.role-student .review-empty { border-color:var(--student-border-strong); background:linear-gradient(180deg,#ffffff 0%,#f7f8f3 100%); color:var(--student-copy); }
      .student-task-inbox { display:grid; gap:16px; min-width:0; box-sizing:border-box; background:rgba(251,249,245,0.96); border:1px solid #e4e2de; border-radius:var(--radius-lg); box-shadow:none; }
      .student-task-grid { display:grid; grid-template-columns:minmax(280px,0.9fr) minmax(0,1.1fr); gap:16px; align-items:start; min-width:0; }
      .student-task-list { display:grid; gap:10px; min-width:0; }
      .student-task-item { display:grid; gap:8px; min-width:0; padding:14px 16px; border-radius:var(--radius-lg); background:#fff; border:1px solid rgba(190,200,202,0.62); text-decoration:none; color:inherit; transition:border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
      .student-task-item:hover { border-color:#b7c5ca; box-shadow:none; transform:translateY(-1px); }
      .student-task-item.is-active { border-color:#8fa2a9; box-shadow:none; background:#fdfefe; }
      .student-task-title-row { display:flex; justify-content:space-between; align-items:flex-start; gap:10px; min-width:0; }
      .student-task-title { margin:0; font-size:var(--text-xl); line-height:1.2; color:var(--edu-text); }
      .student-task-status { display:inline-flex; align-items:center; min-height:28px; padding:0 10px; border-radius:var(--radius-xs); background:var(--edu-bg); color:#3e494a; font-size:var(--text-xs); font-weight:800; letter-spacing:0.04em; text-transform:uppercase; }
      .student-task-status.is-open { background:#e7eef2; color:#5b7280; }
      .student-task-status.is-submitted { background:#eef1f3; color:#66757d; }
      .student-task-status.is-revision { background:#f4dddd; color:#7a1f28; }
      .student-task-status.is-file { background:#eef1f3; color:#66757d; }
      .student-task-meta, .student-task-copy { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; overflow-wrap:anywhere; }
      .student-task-detail { display:grid; gap:16px; min-width:0; box-sizing:border-box; padding:18px; border-radius:var(--radius-lg); background:#fff; border:1px solid rgba(190,200,202,0.62); }
      .student-task-detail h4 { margin:0; font-size:var(--text-2xl); line-height:1.08; color:var(--edu-text); letter-spacing:-0.03em; }
      .student-task-kicker { display:inline-flex; align-items:center; min-height:28px; padding:0 10px; border-radius:var(--radius-xs); background:var(--edu-bg); color:var(--edu-primary); font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; }
      .student-task-detail-copy { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.6; overflow-wrap:anywhere; }
      .student-task-meta-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
      .student-task-meta-card { min-width:0; box-sizing:border-box; padding:14px 16px; border-radius:var(--radius-lg); background:#f7f6f2; border:1px solid rgba(190,200,202,0.56); }
      .student-task-meta-card strong { display:block; font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; color:#6f797a; }
      .student-task-meta-card span { display:block; margin-top:8px; font-size:var(--text-lg); font-weight:800; color:var(--edu-text); overflow-wrap:anywhere; }
      .student-task-signal-row { display:flex; flex-wrap:wrap; gap:6px; }
      .student-task-signal { display:inline-flex; align-items:center; min-height:28px; padding:0 10px; border-radius:var(--radius-xs); background:var(--edu-bg); color:#3e494a; font-size:var(--text-xs); font-weight:800; letter-spacing:0.04em; text-transform:uppercase; }
      .student-task-submit-form { display:grid; gap:12px; }
      .student-task-submit-form .filter-grid { grid-template-columns:1fr 1fr; }
      .student-task-note { padding:12px 14px; border-radius:var(--radius-lg); background:#f7f6f2; color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.6; overflow-wrap:anywhere; }
      .student-task-review-card { padding:16px 18px; border-radius:var(--radius-lg); background:#fff8f0; border:1px solid rgba(245,158,11,0.28); }
      .student-task-review-card strong { display:block; font-size:var(--text-md); font-weight:800; color:#92400e; letter-spacing:0.02em; }
      .app-body.role-student .student-task-inbox { gap:14px; padding:18px; background:rgba(255,255,255,0.84); border:1px solid var(--student-border); border-radius:var(--radius-lg); box-shadow:none; }
      .app-body.role-student .student-task-grid { gap:14px; }
      .app-body.role-student .student-task-list { gap:8px; }
      .app-body.role-student .student-task-item { gap:6px; padding:12px 14px; border-radius:var(--radius-lg); border:2px solid rgba(226,232,240,0.88); box-shadow:none; }
      .app-body.role-student .student-task-item:hover { border-color:var(--student-border-strong); box-shadow:none; }
      .app-body.role-student .student-task-item.is-active { border-color:rgba(97,121,133,0.26); box-shadow:none; background:linear-gradient(180deg,#ffffff 0%,#f5f7f5 100%); }
      .app-body.role-student .student-task-title { font-size:var(--text-xl); line-height:1.18; letter-spacing:-0.03em; color:#111827; }
      .app-body.role-student .student-task-status { background:var(--student-accent-soft); color:var(--student-accent-strong); }
      .app-body.role-student .student-task-status.is-open { background:var(--student-reading-bg); color:var(--student-reading-text); }
      .app-body.role-student .student-task-status.is-submitted { background:var(--student-review-bg); color:var(--student-review-text); }
      .app-body.role-student .student-task-status.is-revision { background:var(--student-warn-bg); color:var(--student-warn-text); }
      .app-body.role-student .student-task-status.is-file { background:var(--student-done-bg); color:var(--student-done-text); }
      .app-body.role-student .student-task-meta,
      .app-body.role-student .student-task-copy,
      .app-body.role-student .student-task-detail-copy { color:var(--edu-text-muted); }
      .app-body.role-student .student-task-detail { gap:14px; padding:16px; border-radius:var(--radius-lg); border:1px solid var(--student-border); background:linear-gradient(180deg,#ffffff 0%,#f7f8f3 100%); box-shadow:none; }
      .app-body.role-student .student-task-detail h4 { font-size:var(--text-2xl); line-height:1.1; letter-spacing:-0.04em; color:#111827; }
      .app-body.role-student .student-task-kicker { background:var(--student-accent-soft); color:var(--student-accent-strong); }
      .app-body.role-student .student-task-meta-card { background:#ffffff; border:1px solid var(--student-border); box-shadow:none; }
      .app-body.role-student .student-task-meta-card strong,
      .app-body.role-student .student-task-support-card strong { color:var(--student-accent); }
      .app-body.role-student .student-task-meta-card span { color:#111827; }
      .app-body.role-student .student-task-signal { background:var(--student-accent-soft); color:var(--student-accent-strong); }
      .app-body.role-student .student-task-submit-form { gap:14px; }
      .app-body.role-student .student-task-note { padding:14px 16px; border-radius:var(--radius-lg); background:var(--student-accent-soft); color:var(--student-accent-strong); }
      .app-body.role-student .student-task-support-grid { gap:12px; }
      .app-body.role-student .student-task-support-card { background:#ffffff; border:1px solid var(--student-border); box-shadow:none; }
      .app-body.role-student .student-task-support-item { border-color:var(--student-accent-soft-2); }
      .app-body.role-student .student-task-review-card { background:#fff7ed; border-color:rgba(251,146,60,0.30); }
      .app-body.role-student .student-task-review-card strong { color:#c2410c; }
      .student-task-headline { display:grid; gap:4px; }
      .student-task-headline.student-task-headline-minimal { gap:8px; }
      .student-task-date-row { display:flex; flex-wrap:wrap; gap:8px; margin-top:-4px; }
      .student-task-date-chip { display:inline-flex; align-items:center; min-height:30px; padding:0 12px; border-radius:var(--radius-xs); background:#edf1f2; color:#66757d; font-size:var(--text-sm); font-weight:800; }
      .student-task-body { color:#44545b; font-size:var(--text-xl); line-height:1.68; white-space:pre-wrap; padding:15px 16px; border-radius:var(--radius-lg); background:#fff; border:1px solid var(--student-border); }
      .student-task-form-row { display:grid; gap:12px; }
      .student-task-upload-stack { display:grid; gap:10px; }
      .student-task-upload-field { display:grid; gap:6px; }
      .student-task-upload-field span { font-size:var(--text-sm); font-weight:800; color:#6f797a; }
      .student-task-action-row { display:flex; flex-wrap:wrap; gap:10px; align-items:stretch; }
      .student-task-file-list { display:grid; gap:8px; }
      .student-task-file-link { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 14px; border-radius:var(--radius-lg); background:#fff; border:1px solid var(--student-border); color:var(--edu-text); text-decoration:none; }
      .student-task-file-link:hover { border-color:var(--student-border-strong); }
      .student-task-file-link span:last-child { color:var(--student-accent-strong); font-weight:800; }
      .student-task-item.student-task-item-compact .student-task-copy { display:none; }
      .student-task-item.student-task-item-compact .student-task-meta { font-size:var(--text-sm); color:#6b7280; }
      .attendance-edit details { min-width:220px; width:240px; }
      .attendance-edit summary { font-weight:600; }
      .attendance-edit .filter-grid { grid-template-columns:1fr; gap:8px; }
      .attendance-edit input, .attendance-edit select { min-height:var(--control-h-lg); padding:8px 10px; }
      .attendance-edit .btn-row { margin-top:4px; }
      .external-embed-wrap { border:1px solid var(--edu-border); border-radius:var(--radius-md); overflow:hidden; background:#fff; }
      .external-embed-frame { width:100%; min-height:760px; border:0; background:#fff; }
      .sticky-head thead th { position:sticky; top:0; z-index:2; background:#f9fafb; }
      .student-summary-grid { display:grid; grid-template-columns:repeat(2,minmax(220px,1fr)); gap:10px; }
      .student-summary-item { background:linear-gradient(180deg,#ffffff 0%,var(--edu-surface) 100%); border:1px solid var(--edu-border); border-radius:var(--radius-lg); padding:14px; }
      .student-summary-label { font-size:var(--text-sm); color:#6b7280; margin-bottom:4px; }
      .student-summary-value { font-size:var(--text-xl); font-weight:800; overflow-wrap:anywhere; letter-spacing:-0.02em; }
      .two-col { display:grid; grid-template-columns:2fr 1fr; gap:14px; }
      .muted { color:#6b7280; font-size:var(--text-sm); overflow-wrap:anywhere; }
      .app-body.role-parent {
        --family-bg:#f7fbff;
        --family-bg-alt:#fff7ed;
        --family-bg-soft:#fbfff7;
        --family-sidebar-start:#2d6f8b;
        --family-sidebar-mid:#3d7b85;
        --family-sidebar-end:#5c6f9f;
        --family-accent:#23758e;
        --family-accent-strong:#14586e;
        --family-accent-soft:#eaf7fb;
        --family-accent-soft-2:#d9eef5;
        --family-border:rgba(35,117,142,0.16);
        --family-border-strong:rgba(35,117,142,0.28);
        --family-shadow:rgba(31,95,119,0.08);
        --family-shadow-strong:rgba(31,95,119,0.13);
        --family-ink:#1f3340;
        --family-copy:#586c77;
        background:linear-gradient(180deg,var(--family-bg) 0%,var(--family-bg-alt) 44%,var(--family-bg-soft) 100%);
      }
      .app-body.role-parent .main { padding:24px 24px 38px; }
      .app-body.role-parent .sidebar { background:linear-gradient(180deg,var(--family-sidebar-start) 0%,var(--family-sidebar-mid) 42%,var(--family-sidebar-end) 100%); border-right:none; box-shadow:none; }
      .app-body.role-parent .nav-link,
      .app-body.role-parent .nav-link:visited { color:rgba(255,255,255,0.84); font-weight:800; border-radius:var(--radius-lg); }
      .app-body.role-parent .nav-link:hover { background:rgba(255,255,255,0.14); color:#fff; transform:none; }
      .app-body.role-parent .nav-link.active { background:rgba(255,255,255,0.2); color:#fff; box-shadow:none; }
      .app-body.role-parent .topbar { background:rgba(255,255,255,0.88); border-color:var(--family-border); box-shadow:none; }
      .app-body.role-parent .topbar-kicker { color:var(--family-accent); }
      .app-body.role-parent .topbar-mini-field { background:var(--family-accent-soft); border-color:var(--family-border); }
      .app-body.role-parent .topbar-mini-label { color:var(--family-accent); }
      .app-body.role-parent .topbar-status-chip { background:var(--family-accent-soft); border-color:var(--family-border); color:var(--family-accent-strong); }
      .app-body.role-parent .mobile-nav-toggle { background:var(--family-accent-soft); color:var(--family-accent-strong); border-color:var(--family-border); }
      .app-body.role-parent .btn { border-radius:var(--radius-lg); font-weight:900; background:linear-gradient(135deg,#23758e 0%,#396fa0 100%); color:#fff; box-shadow:none; }
      .app-body.role-parent .btn.secondary { background:linear-gradient(135deg,#6b73b7,#417f97); box-shadow:none; }
      .family-shell { display:grid; gap:18px; }
      .family-hero-compact { padding:20px 22px; }
      .family-hero { position:relative; overflow:hidden; padding:24px; border-radius:var(--radius-lg); background:linear-gradient(135deg,#0f2f63 0%,var(--edu-primary) 48%,#e4ebe3 100%); color:var(--edu-bg); box-shadow:none; }
      .family-hero::after { display:none; }
      .family-hero-grid { position:relative; display:grid; grid-template-columns:minmax(0,1.5fr) minmax(280px,0.9fr); gap:18px; align-items:stretch; }
      .family-subpage-hero { background:linear-gradient(180deg,var(--edu-surface) 0%,var(--edu-bg) 100%); color:var(--edu-text); box-shadow:none; }
      .family-subpage-hero::after { display:none; }
      .family-subpage-hero .family-kicker,
      .family-subpage-hero .family-title,
      .family-subpage-hero .family-spotlight-title { color:var(--edu-text); }
      .family-subpage-hero .family-pill { background:#ffffff; color:var(--edu-text); border:1px solid var(--edu-border); }
      .family-subpage-hero .family-spotlight { background:#ffffff; border:1px solid var(--edu-border); }
      .family-subpage-hero .family-spotlight-label { color:var(--edu-primary); }
      .family-subpage-hero .family-spotlight-copy,
      .family-subpage-hero .family-spotlight-meta div { color:var(--edu-text-muted); }
      .family-kicker { font-size:var(--text-sm); font-weight:800; letter-spacing:0.14em; text-transform:uppercase; color:rgba(224,242,254,0.84); }
      .family-title { margin:8px 0 10px; font-size:var(--text-2xl); line-height:1.04; letter-spacing:-0.04em; color:#fff; }
      .family-copy { max-width:54ch; font-size:var(--text-lg); line-height:1.65; color:rgba(239,246,255,0.86); }
      .family-meta-row { display:flex; flex-wrap:wrap; gap:10px; margin-top:18px; }
      .family-pill { display:inline-flex; align-items:center; gap:8px; min-height:36px; padding:8px 14px; border-radius:var(--radius-xs); background:rgba(15,23,42,0.22); color:#fff; font-size:var(--text-md); font-weight:700; backdrop-filter:blur(10px); }
      .family-pill strong { font-size:var(--text-md); }
      .family-switcher { display:flex; flex-wrap:wrap; gap:10px; margin-top:16px; }
      .family-switcher .btn { min-height:var(--control-h-lg); padding:8px 14px; border-radius:var(--radius-xs); box-shadow:none; border:1px solid rgba(255,255,255,0.24); background:rgba(255,255,255,0.14); color:#fff; }
      .family-switcher .btn.secondary { background:rgba(15,23,42,0.2); color:#e4ebe3; }
      .family-hero-side { display:grid; gap:12px; }
      .family-spotlight { padding:18px 18px 16px; border-radius:var(--radius-lg); background:rgba(255,255,255,0.16); border:1px solid rgba(255,255,255,0.18); backdrop-filter:blur(16px); }
      .family-spotlight-label { font-size:var(--text-xs); font-weight:800; letter-spacing:0.12em; text-transform:uppercase; color:rgba(224,242,254,0.82); }
      .family-spotlight-title { margin:10px 0 8px; font-size:var(--text-2xl); line-height:1.12; font-weight:900; letter-spacing:-0.03em; color:#fff; }
      .family-spotlight-copy { color:rgba(239,246,255,0.84); font-size:var(--text-md); line-height:1.55; }
      .family-spotlight-meta { display:grid; gap:8px; margin-top:14px; }
      .family-spotlight-meta div { display:flex; justify-content:space-between; gap:12px; font-size:var(--text-md); color:var(--edu-bg); }
      .family-grid { display:grid; gap:16px; grid-template-columns:minmax(0,1.25fr) minmax(320px,0.95fr); }
      .family-card { background:var(--edu-surface); border:1px solid var(--edu-border); border-radius:var(--radius-lg); padding:20px; box-shadow:none; }
      .family-card.soft { background:var(--edu-bg); }
      .family-card-header { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; margin-bottom:14px; }
      .family-card-header h3, .family-card-header h4 { margin:4px 0 0; font-size:var(--text-2xl); line-height:1.18; }
      .family-card-kicker { font-size:var(--text-xs); font-weight:800; letter-spacing:0.12em; text-transform:uppercase; color:var(--edu-primary); }
      .family-card-copy { max-width:38ch; color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.6; }
      .family-stat-row { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
      .family-stat { padding:14px 16px; border-radius:var(--radius-lg); background:#fff; border:1px solid var(--edu-border); }
      .family-stat-label { font-size:var(--text-xs); font-weight:800; letter-spacing:0.1em; text-transform:uppercase; color:var(--edu-text-muted); }
      .family-stat-value { margin-top:6px; font-size:var(--text-2xl); line-height:1; font-weight:900; letter-spacing:-0.04em; color:var(--edu-text); }
      .family-stat-copy { margin-top:6px; font-size:var(--text-sm); color:var(--edu-text-muted); line-height:1.5; }
      .family-app-grid { display:grid; gap:12px; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); }
      .family-app-card { display:grid; gap:12px; align-content:space-between; min-height:164px; padding:18px; border-radius:var(--radius-lg); border:1px solid var(--edu-border); background:#fff; color:var(--edu-text); text-decoration:none; box-shadow:none; transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
      .family-app-card:hover { transform:translateY(-2px); box-shadow:none; border-color:rgba(59,130,246,0.32); }
      .family-app-icon { display:inline-flex; align-items:center; justify-content:center; width:56px; height:56px; border-radius:var(--radius-lg); background:var(--edu-bg); color:var(--edu-primary); font-size:var(--text-2xl); font-weight:900; }
      .family-app-card strong { font-size:var(--text-2xl); line-height:1.08; letter-spacing:-0.03em; color:var(--edu-text); }
      .family-app-badge { display:inline-flex; align-items:center; justify-content:center; min-height:32px; width:fit-content; padding:0 12px; border-radius:var(--radius-xs); background:var(--edu-bg); color:var(--edu-primary); font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; }
      .family-app-badge.good { background:#dcfce7; color:#166534; }
      .family-homework-grid { display:grid; gap:12px; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); }
      .family-homework-card { display:grid; gap:10px; min-height:170px; padding:18px; border-radius:var(--radius-lg); background:linear-gradient(180deg,#ffffff 0%,var(--edu-surface) 100%); border:1px solid var(--edu-border); color:var(--edu-text); text-decoration:none; box-shadow:none; transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
      .family-homework-card:hover { transform:translateY(-2px); box-shadow:none; border-color:rgba(59,130,246,0.32); }
      .family-homework-card.is-selected { background:linear-gradient(180deg,var(--edu-bg) 0%,#e4ebe3 100%); border-color:rgba(37,99,235,0.3); }
      .family-homework-card.is-complete { background:linear-gradient(180deg,var(--edu-bg) 0%,var(--edu-bg) 100%); }
      .family-homework-top { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; }
      .family-homework-title { font-size:var(--text-2xl); line-height:1.15; font-weight:900; letter-spacing:-0.03em; }
      .family-homework-status { display:inline-flex; align-items:center; min-height:28px; padding:4px 10px; border-radius:var(--radius-xs); font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; background:#e4ebe3; color:var(--edu-primary); }
      .family-homework-status.complete { background:#dcfce7; color:#166534; }
      .family-homework-meta { display:grid; gap:6px; color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; }
      .family-homework-note { margin-top:auto; font-size:var(--text-md); color:var(--edu-text); }
      .family-detail-stack { display:grid; gap:14px; }
      .family-detail-panel { padding:18px; border-radius:var(--radius-lg); background:#fff; border:1px solid var(--edu-border); }
      .family-detail-meta { display:grid; gap:8px; margin-top:12px; }
      .family-detail-meta div { display:flex; justify-content:space-between; gap:12px; font-size:var(--text-md); color:var(--edu-text); }
      .family-list { display:grid; gap:10px; }
      .family-list-item { display:grid; gap:4px; padding:14px 16px; border-radius:var(--radius-lg); background:#fff; border:1px solid var(--edu-border); }
      .family-list-head { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; }
      .family-list-title { font-size:var(--text-xl); font-weight:800; color:var(--edu-text); }
      .family-list-meta { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.55; }
      .family-pocket-grid { display:grid; gap:12px; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); }
      .family-pocket-card { display:grid; grid-template-columns:auto minmax(0,1fr); gap:12px; align-items:center; min-height:96px; padding:16px 18px; border-radius:var(--radius-lg); background:#fff; border:1px solid var(--edu-border); color:var(--edu-text); text-decoration:none; box-shadow:none; transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
      .family-pocket-card:hover { transform:translateY(-1px); box-shadow:none; border-color:rgba(59,130,246,0.24); }
      .family-pocket-icon { display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:var(--radius-lg); background:var(--edu-bg); color:var(--edu-primary); font-size:var(--text-2xl); font-weight:900; }
      .family-pocket-copy { min-width:0; display:grid; gap:4px; }
      .family-pocket-copy strong { font-size:var(--text-xl); line-height:1.2; letter-spacing:-0.02em; color:var(--edu-text); overflow-wrap:anywhere; }
      .family-pocket-copy span { color:var(--edu-text-muted); font-size:var(--text-md); line-height:1.45; }
      .family-empty { display:grid; place-items:center; min-height:120px; padding:18px; text-align:center; border-radius:var(--radius-lg); background:var(--edu-bg); border:1px dashed rgba(148,163,184,0.34); color:var(--edu-text-muted); }
      .family-mini-table { display:grid; gap:10px; }
      .family-mini-row { display:grid; grid-template-columns:96px 1fr auto; gap:12px; align-items:center; padding:12px 14px; border-radius:var(--radius-lg); background:#fff; border:1px solid var(--edu-border); }
      .family-mini-label { font-size:var(--text-sm); font-weight:800; color:var(--edu-primary); }
      .family-mini-main { color:var(--edu-text); font-size:var(--text-md); font-weight:700; }
      .family-mini-sub { color:var(--edu-text-muted); font-size:var(--text-sm); line-height:1.45; }
      .family-dense-grid { display:grid; gap:14px; grid-template-columns:minmax(0,1.2fr) minmax(320px,0.88fr); }
      .family-dashboard-header { display:grid; gap:14px; grid-template-columns:minmax(0,1.3fr) minmax(300px,0.9fr); align-items:stretch; }
      .family-schedule-stack { display:grid; gap:10px; }
      .family-schedule-item { display:grid; gap:6px; padding:14px 16px; border-radius:var(--radius-lg); border:1px solid var(--edu-border); background:#fff; }
      .family-schedule-topline { display:flex; justify-content:space-between; gap:12px; align-items:center; }
      .family-schedule-title { font-size:var(--text-xl); font-weight:800; color:var(--edu-text); }
      .family-schedule-meta { display:flex; flex-wrap:wrap; gap:8px 14px; color:var(--edu-text-muted); font-size:var(--text-md); }
      .family-summary-grid { display:grid; gap:10px; grid-template-columns:repeat(3,minmax(0,1fr)); }
      .family-summary-cell { padding:14px 16px; border-radius:var(--radius-lg); background:#fff; border:1px solid var(--edu-border); }
      .family-summary-label { font-size:var(--text-sm); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; color:var(--edu-text-muted); }
      .family-summary-value { margin-top:8px; font-size:var(--text-2xl); font-weight:900; line-height:1; color:var(--edu-text); }
      .family-summary-copy { margin-top:6px; font-size:var(--text-md); color:var(--edu-text-muted); }
      .family-compact-actions { display:grid; gap:10px; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); }
      .family-compact-action { display:grid; gap:6px; padding:14px 16px; border-radius:var(--radius-lg); border:1px solid var(--edu-border); background:#fff; color:var(--edu-text); text-decoration:none; transition:transform .18s ease, box-shadow .18s ease; }
      .family-compact-action:hover { transform:translateY(-1px); box-shadow:none; }
      .family-compact-action strong { font-size:var(--text-lg); }
      .family-compact-action span { font-size:var(--text-md); color:var(--edu-text-muted); }
      .family-compact-action em { font-style:normal; font-size:var(--text-sm); font-weight:800; color:var(--edu-primary); }
      .family-badge-link { display:inline-flex; align-items:center; min-height:28px; padding:0 10px; border-radius:var(--radius-xs); background:var(--edu-bg); color:var(--edu-primary); font-size:var(--text-sm); font-weight:800; text-decoration:none; }
      .family-badge-link.good { background:#dcfce7; color:#166534; }
      .family-badge-link.warn { background:#fef3c7; color:#92400e; }
      .family-card.compact { padding:var(--space-5) var(--space-6); border-radius:var(--radius-lg); }
      .family-card.compact .family-card-header { margin-bottom:10px; }
      .family-card.compact .family-card-header h3,
      .family-card.compact .family-card-header h4 { font-size:var(--text-2xl); }
      .family-inline-note { font-size:var(--text-sm); color:var(--edu-text-muted); }
      .family-badge { display:inline-flex; align-items:center; padding:4px 10px; border-radius:var(--radius-xs); background:var(--edu-bg); color:var(--edu-primary); font-size:var(--text-xs); font-weight:800; letter-spacing:0.08em; text-transform:uppercase; }
      .family-badge.good { background:#dcfce7; color:#166534; }
      .family-badge.warn { background:#fef3c7; color:#92400e; }
      .app-body.role-parent .family-hero { background:linear-gradient(135deg,#dff4ff 0%,#e7f8e8 52%,#fff0d6 100%); color:var(--family-ink); box-shadow:none; }
      .app-body.role-parent .family-hero::after { display:none; }
      .app-body.role-parent .family-subpage-hero { background:linear-gradient(180deg,#f7fbff 0%,#fff7ed 100%); color:var(--family-ink); box-shadow:none; }
      .app-body.role-parent .family-kicker,
      .app-body.role-parent .family-card-kicker,
      .app-body.role-parent .family-spotlight-label,
      .app-body.role-parent .family-mini-label { color:var(--family-accent); }
      .app-body.role-parent .family-title,
      .app-body.role-parent .family-card-header h3,
      .app-body.role-parent .family-card-header h4,
      .app-body.role-parent .family-spotlight-title,
      .app-body.role-parent .family-list-title,
      .app-body.role-parent .family-homework-title,
      .app-body.role-parent .family-app-card strong,
      .app-body.role-parent .family-pocket-copy strong,
      .app-body.role-parent .family-mini-main { color:var(--family-ink); }
      .app-body.role-parent .family-copy,
      .app-body.role-parent .family-card-copy,
      .app-body.role-parent .family-spotlight-copy,
      .app-body.role-parent .family-spotlight-meta div,
      .app-body.role-parent .family-list-meta,
      .app-body.role-parent .family-homework-meta,
      .app-body.role-parent .family-homework-note,
      .app-body.role-parent .family-pocket-copy span,
      .app-body.role-parent .family-mini-sub,
      .app-body.role-parent .family-inline-note { color:var(--family-copy); }
      .app-body.role-parent .family-pill { background:#fff; color:var(--family-accent-strong); border:1px solid var(--family-border); }
      .app-body.role-parent .family-switcher .btn { border:1px solid var(--family-border); background:#fff; color:var(--family-accent-strong); box-shadow:none; }
      .app-body.role-parent .family-switcher .btn.secondary { background:var(--family-accent-soft); color:var(--family-accent-strong); }
      .app-body.role-parent .family-card { background:rgba(255,255,255,0.9); border:1px solid var(--family-border); box-shadow:none; }
      .app-body.role-parent .family-card.soft { background:var(--edu-bg); }
      .app-body.role-parent .family-app-card,
      .app-body.role-parent .family-pocket-card,
      .app-body.role-parent .family-homework-card,
      .app-body.role-parent .family-detail-panel,
      .app-body.role-parent .family-list-item,
      .app-body.role-parent .family-mini-row,
      .app-body.role-parent .family-summary-cell,
      .app-body.role-parent .family-stat,
      .app-body.role-parent .family-spotlight { border:1px solid var(--family-border); box-shadow:none; background:#fff; }
      .app-body.role-parent .family-app-card:hover,
      .app-body.role-parent .family-pocket-card:hover,
      .app-body.role-parent .family-homework-card:hover,
      .app-body.role-parent .family-compact-action:hover { border-color:var(--family-border-strong); box-shadow:none; }
      .app-body.role-parent .family-app-icon,
      .app-body.role-parent .family-pocket-icon { background:var(--family-accent-soft); color:var(--family-accent-strong); }
      .app-body.role-parent .family-app-badge,
      .app-body.role-parent .family-badge,
      .app-body.role-parent .family-badge-link { background:var(--family-accent-soft); color:var(--family-accent-strong); }
      .app-body.role-parent .family-app-badge.good,
      .app-body.role-parent .family-badge.good,
      .app-body.role-parent .family-badge-link.good { background:#eceff1; color:#5f6b74; }
      .app-body.role-parent .family-badge.warn,
      .app-body.role-parent .family-badge-link.warn { background:#f7eed8; color:#96691f; }
      .app-body.role-parent .family-homework-card.is-selected { background:linear-gradient(180deg,#f7faf9 0%,#edf2ef 100%); border-color:var(--family-border-strong); }
      .app-body.role-parent .family-homework-card.is-complete { background:linear-gradient(180deg,#f5f6f7 0%,#eceff1 100%); border-color:rgba(132,146,155,0.22); }
      .app-body.role-parent .family-homework-status { background:var(--family-accent-soft); color:var(--family-accent-strong); }
      .app-body.role-parent .family-homework-status.complete { background:#eceff1; color:#5f6b74; }
      .app-body.role-parent .family-empty { background:linear-gradient(180deg,#ffffff 0%,#f6f8f7 100%); border-color:var(--family-border-strong); color:var(--family-copy); }
      @media (min-width: 901px) {
        body { font-size:var(--text-lg); line-height:1.5; }
        .nav-link, .nav-link:visited { padding:10px 12px; margin-bottom:6px; font-size:var(--text-md); }
        .main { padding:24px 24px 34px; }
        .page-title { font-size:var(--text-2xl); margin-bottom:14px; }
        .card { padding:16px; margin-bottom:16px; }
        .card h3, .card h4 { font-size:var(--text-2xl); margin-bottom:10px; }
        .section-copy, .section-note, .picker-summary, .picker-result-meta { font-size:var(--text-md); }
        .hero-copy { font-size:var(--text-lg); }
        input, select, textarea { min-height:var(--control-h-lg); padding:10px 12px; }
        button, .btn { min-height:var(--control-h-lg); padding:10px 14px; }
        th, td { padding:10px 10px; font-size:var(--text-md); }
        .lesson-title { font-size:var(--text-sm); }
        .lesson-meta, .student-line { font-size:var(--text-xs); }
        .schedule-mobile-advanced-toggle { display:none !important; }
        .schedule-mobile-advanced > .schedule-mobile-advanced-body { display:grid !important; }
      }
      @media (max-width: 1100px) {
        .two-col { grid-template-columns:1fr; }
        .family-hero-grid, .family-grid, .family-dense-grid, .family-dashboard-header { grid-template-columns:1fr; }
        .family-summary-grid { grid-template-columns:1fr; }
        .family-stat-row { grid-template-columns:repeat(2,minmax(0,1fr)); }
        .student-shell-launchpad { grid-template-columns:1fr; }
        .student-shell-mini-grid,
        .student-shell-hero,
        .student-shell-learning-grid,
        .student-shell-submit-grid { grid-template-columns:1fr; }
        .student-reader-hero,
        .student-reader-grid { grid-template-columns:1fr; }
        .student-reader-preview { justify-self:start; width:min(100%,150px); }
        .wf-stage-rail, .wf-stat-grid, .wf-focus-grid, .wf-live-grid, .wf-teacher-action-grid { grid-template-columns:1fr; }
        .wf-hero, .wf-ops-topline, .wf-panel-head { flex-direction:column; align-items:flex-start; }
        .wf-ops-actions { justify-content:flex-start; }
        .workflow-lesson-shell, .workflow-stat-grid, .workflow-step-strip { grid-template-columns:1fr; }
        .review-queue-layout, .review-queue-stats, .review-app-grid, .review-evidence-grid, .review-task-meta-grid, .review-target-grid, .student-task-grid, .student-task-meta-grid, .student-task-support-grid { grid-template-columns:1fr; }
        .report-meta-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
        .report-two-col { grid-template-columns:1fr; }
        .workflow-header-row, .workflow-action-bar { flex-direction:column; align-items:flex-start; }
        .review-queue-headline, .review-action-bar { flex-direction:column; align-items:flex-start; }
        .workflow-header-side { width:100%; justify-items:start; }
        .workflow-utility-menu { width:100%; }
        .workflow-utility-panel { position:static; width:100%; margin-top:10px; }
        .review-filter-grid { grid-template-columns:1fr; }
        .schedule-editor-grid { grid-template-columns:1fr; }
        .resource-section-grid { grid-template-columns:1fr; }
        .hero-grid { grid-template-columns:1fr; }
        .stat-grid { grid-template-columns:repeat(2,minmax(180px,1fr)); }
        .schedule-priority-grid, .schedule-secondary-grid { grid-template-columns:1fr; }
        .schedule-context-grid { grid-template-columns:1fr; }
      }
      @media (max-width: 1280px) {
        .lesson-attendance-table thead { display:none; }
        .lesson-attendance-table tbody { display:block; width:100%; }
        .lesson-attendance-table tr { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 12px; border:1px solid var(--edu-border); border-radius:var(--radius-lg); padding:14px; margin-bottom:12px; background:#fff; box-shadow:none; }
        .lesson-attendance-table td { display:block; width:100%; border:none; padding:0; min-width:0 !important; }
        .lesson-attendance-table td::before { content:attr(data-label); display:block; font-size:var(--text-xs); font-weight:800; color:var(--edu-text-muted); text-transform:uppercase; letter-spacing:0.07em; margin-bottom:4px; }
        .lesson-attendance-table td.student-name-cell,
        .lesson-attendance-table td.memo-cell,
        .lesson-attendance-table td.photo-cell { grid-column:1 / -1; }
        .lesson-attendance-table td.score-cell input { max-width:none; width:100%; min-width:0; }
        .lesson-attendance-table td.memo-cell input,
        .lesson-attendance-table td.memo-cell textarea { min-height:var(--control-h-lg); }
      }
      @media (max-width: 900px) {
        body { font-size:var(--text-lg); line-height:1.5; }
        body.app-body input:not([type='hidden']),
        body.app-body select,
        body.app-body textarea { font-size:16px !important; /* iOS Safari zooms a focused field under 16px; platform guard, not density. */ }
        .app { display:block; }
        .sidebar { position:fixed; top:0; left:0; bottom:0; width:min(82vw,320px); padding:18px 14px; display:block; overflow:auto; z-index:1002; transform:translateX(-100%); transition:transform .22s ease; }
        .sidebar-head { margin-bottom:16px; }
        .brand { margin:0; width:auto; }
        .brand-mark { font-size:var(--text-2xl); }
        .nav-link { display:flex; margin:0 0 6px; font-size:var(--text-md); padding:10px 12px; }
        .app.mobile-nav-open .sidebar { transform:translateX(0); }
        .app-body.role-parent .main { padding:12px; }
        .app-body.role-parent .sidebar { width:min(84vw,320px); padding:20px 14px; }
        .app-body.role-parent .nav-link,
        .app-body.role-parent .nav-link:visited { margin-bottom:8px; padding:12px; border-radius:var(--radius-lg); }
        .app-body.role-parent .topbar { padding:12px; border-radius:var(--radius-lg); }
        .app-body.role-parent .topbar-primary { align-items:flex-start; }
        .app-body.role-parent .topbar-action-group,
        .app-body.role-parent .topbar-tools-group { width:100%; }
        .app-body.role-parent .topbar-mini-field { width:100%; justify-content:space-between; }
        .app-body.role-parent .family-card,
        .app-body.role-parent .family-hero,
        .app-body.role-parent .family-spotlight { border-radius:var(--radius-lg); }
        .sidebar-backdrop { position:fixed; inset:0; background:rgba(15,23,42,0.42); z-index:1001; }
        .app.mobile-nav-open .sidebar-backdrop { display:block; }
        .main { padding:12px; }
        .topbar { flex-direction:row; align-items:center; gap:12px; }
        .topbar-primary { min-width:0; flex:1; }
        .topbar, .topbar .btn { font-size:var(--text-md); }
        .card { padding:16px; }
        /* Mobile operational card/table rules live in /static/ops-ui.css. */
        .hero-title { font-size:var(--text-2xl); }
        .student-shell-launchpad { gap:10px; }
        .student-shell-start-card,
        .student-shell-hero,
        .student-shell-section,
        .student-shell-submit { padding:18px; border-radius:var(--radius-lg); }
        .student-shell-mini-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
        .student-shell-start-card strong { font-size:var(--text-2xl); }
        .student-shell-hero-copy h2 { font-size:var(--text-2xl); }
        .student-shell-score { justify-items:start; }
        .student-shell-task-card { grid-template-columns:auto 1fr; }
        .student-shell-task-open { grid-column:1 / -1; width:100%; }
        .student-shell-learning-card,
        .student-shell-submit-action { min-height:120px; }
        .student-book-card,
        .student-reader-panel,
        .student-chapter-card { padding:18px; border-radius:var(--radius-lg); }
        .student-book-title,
        .student-reader-copy h3 { font-size:var(--text-2xl); }
        .student-book-actions .btn { flex:1 1 100%; }
        .wf-hero, .wf-live-panel, .wf-focus-card { padding:16px; border-radius:var(--radius-lg); }
        .wf-hero-copy h2 { font-size:var(--text-2xl); }
        .wf-panel-head h3, .wf-focus-card h3 { font-size:var(--text-2xl); }
        .wf-live-item { padding:12px 14px; border-radius:var(--radius-lg); }
        .workflow-lesson-header, .workflow-panel { padding:16px; border-radius:var(--radius-lg); }
        .workflow-title { font-size:var(--text-2xl); }
        .workflow-meta-row { gap:6px; }
        .workflow-meta-pill { min-height:30px; padding:0 10px; font-size:var(--text-xs); }
        .workflow-stat { padding:12px 14px; }
        .workflow-panel-head h4 { font-size:var(--text-2xl); }
        .workflow-panel-head { width:100%; }
        .workflow-panel-head > div { width:100%; }
        .workflow-panel-copy, .workflow-copy, .workflow-action-copy { max-width:none; }
        .workflow-head-action-row { width:100%; justify-content:flex-start; margin-top:8px; gap:8px; }
        .mark-all-present-btn { min-height:var(--control-h-lg); padding:8px 14px; font-size:var(--text-md); font-weight:700; border-radius:var(--radius-md); background:linear-gradient(135deg, #eef6ff, #e4ebe3); color:var(--edu-primary); border:1px solid rgba(59,130,246,0.3); }
        .workflow-action-bar { position:sticky; bottom:0; z-index:100; background:rgba(255,255,255,0.96); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); padding:14px 16px; margin:16px -16px -16px; border-top:1px solid rgba(232,100,65,0.22); border-radius:0 0 22px 22px; box-shadow:0 -8px 24px rgba(15,23,42,0.08); }
        .workflow-utility-trigger { width:100%; min-height:42px; padding:10px 12px; border-radius:var(--radius-lg); }
        .workflow-utility-trigger-text strong { font-size:var(--text-md); }
        .workflow-utility-trigger-text span:last-child { font-size:var(--text-xs); }
        .workflow-utility-panel { padding:14px; border-radius:var(--radius-lg); }
        .workflow-utility-section { padding:12px; border-radius:var(--radius-lg); }
        .workflow-header-side { width:100%; justify-items:stretch; }
        .workflow-header-side > .btn { width:100%; }
        .workflow-meta-grid { grid-template-columns:1fr; }
        .workflow-meta-form .btn-row,
        .workflow-action-buttons { width:100%; }
        .workflow-meta-form .btn-row > *,
        .workflow-action-buttons > * { flex:1 1 100%; width:100%; min-height:var(--control-h-lg); }
        .workflow-roster-wrap { overflow:visible; }
        .workflow-student-file-panel .student-media-stack { grid-template-columns:1fr; }
        .workflow-student-file-panel .student-media-trigger { width:100%; }
        .workflow-student-file-panel .student-media-grid { grid-column:auto; }
        .workflow-chip-group { gap:4px; }
        .workflow-choice label { min-width:32px; min-height:36px; padding:0 10px; font-size:var(--text-sm); }
        .workflow-flag-group { gap:4px; }
        .workflow-flag-choice label { min-height:34px; padding:0 10px; font-size:var(--text-xs); }
        .workflow-signal-cell { display:flex !important; flex-wrap:wrap; gap:6px; align-items:flex-start; }
        .workflow-signal-cell::before { flex-basis:100%; }
        .workflow-signal-chip { margin:0 !important; white-space:normal; line-height:1.35; padding:6px 10px; overflow-wrap:anywhere; }
        .workflow-guide-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
        .review-queue-page { overflow-x:clip; }
        .review-queue-header, .review-queue-filters, .review-queue-list, .review-queue-inspector { padding:16px; border-radius:var(--radius-lg); width:100%; }
        .review-queue-headline h3 { font-size:var(--text-2xl); }
        .review-item-title { font-size:var(--text-xl); }
        .review-inspector-head h4 { font-size:var(--text-2xl); }
        .review-filter-grid .btn-row { width:100%; }
        .review-filter-grid .btn-row > * { flex:1 1 100%; width:100%; }
        .student-task-inbox { padding:14px; border-radius:var(--radius-lg); }
        .student-task-item { padding:12px; border-radius:var(--radius-lg); }
        .student-task-title-row { flex-direction:column; }
        .student-task-status { align-self:flex-start; }
        .student-task-detail { padding:14px; }
        .student-task-detail h4 { font-size:var(--text-2xl); }
        .student-task-body { padding:14px; font-size:var(--text-lg); }
        .student-task-submit-form .filter-grid { grid-template-columns:1fr; }
        .student-task-submit-form .btn-row,
        .student-task-submit-form .btn-row > * { width:100%; }
        .report-shell .section-head { flex-direction:column; align-items:stretch; gap:12px; }
        .report-shell-title { font-size:var(--text-2xl); }
        .report-toolbar { width:100%; justify-content:stretch; }
        .report-toolbar .btn, .report-toolbar button { flex:1 1 100%; width:100%; }
        .report-filter-row { display:grid; grid-template-columns:1fr; align-items:stretch; }
        .report-filter-row label { max-width:none; }
        .report-filter-row > button,
        .report-filter-row > .btn { width:100%; }
        .report-meta-grid, .report-summary-grid, .report-two-col, .report-narrative-grid { grid-template-columns:1fr; }
        .report-plain { font-size:var(--text-xl); line-height:1.2; }
        .report-lesson-head { flex-direction:column; align-items:flex-start; }
        .report-photo-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
        .report-draft-form .btn-row,
        .report-draft-form .btn-row > * { width:100%; }
        .report-performance-wrap { overflow:visible; }
        .report-performance-table thead,
        .app-body .workflow-mobile-table thead { display:none; }
        .report-performance-table,
        .report-performance-table tbody,
        .app-body .workflow-mobile-table,
        .app-body .workflow-mobile-table tbody { display:block; width:100%; }
        .report-performance-table tbody,
        .app-body .workflow-mobile-table tbody { display:grid; gap:10px; }
        .report-performance-table tr,
        .app-body .workflow-mobile-table tr { display:grid; grid-template-columns:1fr; gap:8px; border:1px solid var(--edu-border); border-radius:var(--radius-lg); padding:14px; margin-bottom:0; background:#fff; box-shadow:none; }
        .report-performance-table td,
        .app-body .workflow-mobile-table td { display:block; width:100%; border:none; padding:0; min-width:0 !important; font-size:var(--text-md); line-height:1.5; }
        .report-performance-table td::before,
        .app-body .workflow-mobile-table td::before { content:attr(data-label); display:block; font-size:var(--text-xs); font-weight:800; color:var(--edu-text-muted); text-transform:uppercase; letter-spacing:0.07em; margin-bottom:4px; }
        .report-performance-table td.empty-msg::before,
        .app-body .workflow-mobile-table td.empty-msg::before { display:none; }
        .app-body .workflow-mobile-table .mini-link { width:100%; justify-content:center; }
        .stat-grid { grid-template-columns:repeat(2,minmax(160px,1fr)); }
        .form-grid-3 { grid-template-columns:1fr; }
        .span-2 { grid-column:span 1; }
        .card h3, .card h4 { font-size:var(--text-2xl); line-height:1.35; }
        th, td { font-size:var(--text-md); line-height:1.45; }
        button, .btn { font-size:var(--text-lg); }
        .tt-cell { min-height:110px; }
        .desktop-timetable { display:none; }
        .mobile-timetable-board { display:block; }
        .schedule-summary-bar { align-items:flex-start; }
        .schedule-summary-main { width:100%; }
        .schedule-priority-grid { flex-direction:column; align-items:stretch; }
        .schedule-day-panel { width:100%; flex-direction:column; align-items:stretch; }
        .schedule-filter-actions .schedule-action-group { width:100%; }
        .schedule-filter-actions .schedule-nav-btn,
        .schedule-filter-actions .schedule-primary-btn { min-height:34px; padding:8px 10px; font-size:var(--text-sm); }
        .schedule-filter-actions .schedule-desktop-extra { display:none !important; }
        .schedule-summary-bar { margin-bottom:6px; }
        .schedule-filter-meta .muted,
        .schedule-filter-meta .schedule-summary-chip:last-child,
        .schedule-mobile-advanced .schedule-secondary-grid,
        .schedule-mobile-advanced .schedule-action-group .schedule-desktop-extra { display:none; }
        .schedule-mobile-advanced { border:1px solid var(--edu-border); border-radius:var(--radius-lg); background:#fff; overflow:hidden; }
        .schedule-mobile-advanced-toggle { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:12px 14px; background:var(--edu-surface); }
        .schedule-mobile-advanced-toggle::after { content:'▼'; font-size:var(--text-sm); color:var(--edu-primary); }
        .schedule-mobile-advanced[open] .schedule-mobile-advanced-toggle::after { content:'▲'; }
        .schedule-mobile-advanced-body { display:none; padding:0 14px 14px; }
        .schedule-mobile-advanced[open] .schedule-mobile-advanced-body { display:grid; }
        .schedule-mobile-advanced[open] .schedule-secondary-grid { display:grid; }
        .schedule-mobile-advanced[open] .schedule-filter-meta .muted,
        .schedule-mobile-advanced[open] .schedule-filter-meta .schedule-summary-chip:last-child { display:inline-flex; }
        .schedule-mobile-advanced .schedule-action-bar { margin-top:0; }
        .schedule-mobile-advanced .schedule-action-group { width:100%; }
        .mobile-record-table thead { display:none; }
        .mobile-record-table tbody { display:block; width:100%; }
        .mobile-record-table tr { display:grid; grid-template-columns:1fr; gap:10px; border:1px solid var(--edu-border); border-radius:var(--radius-lg); padding:14px; margin-bottom:12px; background:#fff; box-shadow:none; }
        .mobile-record-table td { display:block; width:100%; border:none; padding:0; min-width:0 !important; }
        .mobile-record-table td::before { content:attr(data-label); display:block; font-size:var(--text-xs); font-weight:800; color:var(--edu-text-muted); text-transform:uppercase; letter-spacing:0.07em; margin-bottom:4px; }
        .mobile-record-table td.student-no-cell,
        .mobile-record-table td.student-name-cell,
        .mobile-record-table td.memo-cell { grid-column:1 / -1; }
        .mobile-record-table td.student-name-cell { padding-bottom:2px; }
        .mobile-record-table td.student-no-cell { display:none; }
        .mobile-record-table td.score-cell input { max-width:none; }
        .mobile-record-table td.memo-cell input,
        .mobile-record-table td.memo-cell textarea { min-height:var(--control-h-lg); }
        .attendance-edit details { width:100%; min-width:0; }
        .attendance-edit summary { display:inline-flex; padding:8px 10px; border-radius:var(--radius-md); background:var(--edu-bg); }
      }
      @media (max-width: 768px) {
        body { font-size:var(--text-xl); line-height:1.55; }
        .family-hero { padding:18px; border-radius:var(--radius-lg); }
        .family-title { font-size:var(--text-2xl); }
        .family-copy { font-size:var(--text-md); }
        .family-card { padding:16px; border-radius:var(--radius-lg); }
        .family-card-header h3, .family-card-header h4 { font-size:var(--text-2xl); }
        .family-stat-row { grid-template-columns:1fr; }
        .family-app-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
        .family-pocket-grid { grid-template-columns:1fr; }
        .family-homework-grid { grid-template-columns:1fr; }
        .family-homework-title { font-size:var(--text-2xl); }
        .family-mini-row { grid-template-columns:1fr; }
        .page-title { font-size:var(--text-2xl); line-height:1.3; margin-bottom:16px; }
        h1, h2, h3 { line-height:1.3; }
        h1 { font-size:var(--text-2xl); }
        h2 { font-size:var(--text-2xl); }
        h3 { font-size:var(--text-2xl); }
        .card { padding:16px; margin-bottom:16px; }
        .card h3, .card h4 { font-size:var(--text-2xl); line-height:1.35; margin-bottom:12px; }
        .muted { font-size:var(--text-md); line-height:1.5; }
        .filter-row, .form-row { flex-direction:column; align-items:stretch; gap:12px; }
        .filter-row > *, .form-row > * { width:100%; }
        .filter-row label, .form-row label { width:100%; display:flex; flex-direction:column; align-items:stretch; gap:6px; font-size:var(--text-lg); line-height:1.45; margin-bottom:2px; }
        .filter-grid { grid-template-columns:1fr; }
        .btn-row { flex-wrap:wrap; gap:8px; }
        .btn-row .btn, .btn-row button { flex:1 1 152px; }
        .picker-shell-form { flex-direction:column; align-items:stretch; }
        .picker-shell-summary { padding:10px 12px; align-items:center; }
        .picker-shell-caret { min-width:58px; justify-content:center; text-align:center; }
        .picker-result-row { flex-direction:row; align-items:center; }
        .picker-result-row .btn { width:auto; }
        .topbar { display:grid; grid-template-columns:1fr; width:100%; max-width:100%; margin:0 0 12px; padding:8px 10px; border-radius:var(--radius-lg); gap:8px; align-items:stretch; justify-content:stretch; }
        .topbar-primary { width:100%; min-width:0; display:grid; grid-template-columns:auto 1fr; align-items:center; gap:8px; justify-content:stretch; }
        .topbar-user { display:flex; flex-direction:column; align-items:flex-start; gap:2px; min-width:0; }
        .topbar-kicker { display:none; }
        .topbar-identity { font-size:var(--text-md); line-height:1.2; }
        .topbar-identity .muted { font-size:var(--text-sm) !important; margin-left:4px !important; }
        .topbar-actions { width:100%; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; justify-content:stretch; gap:8px; }
        .topbar-action-group { width:auto; min-width:0; }
        .topbar-action-group.topbar-tools-group { justify-content:flex-end; min-width:0; }
        .topbar-actions .compact-btn { min-height:30px; padding:6px 9px; font-size:var(--text-xs); border-radius:var(--radius-sm); }
        .topbar-actions .inline-form { width:auto; gap:6px; }
        .topbar-actions .inline-form select,
        .topbar-actions .topbar-mini-field select { min-width:84px; min-height:30px; padding:5px 8px; font-size:16px; /* iOS Safari zooms a focused field under 16px; platform guard, not density. */ }
        .topbar-mini-field { padding:5px 8px; gap:6px; }
        .topbar-mini-label { display:inline-block; font-size:var(--text-xs); }
        .topbar-status-chip { padding:6px 8px; font-size:var(--text-xs); }
        .app-body.role-student .topbar-actions,
        .app-body.role-teacher .topbar-actions,
        .app-body.role-parent .topbar-actions { gap:6px; }
        .app-body.role-student .topbar-actions .btn,
        .app-body.role-teacher .topbar-actions .btn,
        .app-body.role-parent .topbar-actions .btn { min-height:34px; padding:7px 10px; font-size:var(--text-sm); border-radius:var(--radius-sm); }
        .app-body.role-student .topbar-actions select,
        .app-body.role-teacher .topbar-actions select,
        .app-body.role-parent .topbar-actions select { min-height:34px; min-width:82px; padding:7px 8px; font-size:16px; /* iOS Safari zooms a focused field under 16px; platform guard, not density. */ }
        .app-body.role-student .card,
        .app-body.role-teacher .card,
        .app-body.role-parent .card { padding:14px; border-radius:var(--radius-lg); }
        .app-body.role-student .card h3,
        .app-body.role-student .card h4,
        .app-body.role-teacher .card h3,
        .app-body.role-teacher .card h4,
        .app-body.role-parent .card h3,
        .app-body.role-parent .card h4 { font-size:var(--text-xl); margin-bottom:10px; }
        .app-body.role-student button, .app-body.role-student .btn,
        .app-body.role-teacher button, .app-body.role-teacher .btn,
        .app-body.role-parent button, .app-body.role-parent .btn { min-height:var(--control-h-lg); padding:8px 12px; font-size:var(--text-md); border-radius:var(--radius-md); }
        .app-body.role-student .btn-row .btn, .app-body.role-student .btn-row button,
        .app-body.role-teacher .btn-row .btn, .app-body.role-teacher .btn-row button,
        .app-body.role-parent .btn-row .btn, .app-body.role-parent .btn-row button { flex:0 1 auto; min-width:120px; }
        .app-body.role-student .filter-row input, .app-body.role-student .filter-row select, .app-body.role-student .filter-row textarea,
        .app-body.role-student .form-row input, .app-body.role-student .form-row select, .app-body.role-student .form-row textarea,
        .app-body.role-teacher .filter-row input, .app-body.role-teacher .filter-row select, .app-body.role-teacher .filter-row textarea,
        .app-body.role-teacher .form-row input, .app-body.role-teacher .form-row select, .app-body.role-teacher .form-row textarea { min-height:var(--control-h-lg); font-size:16px; /* iOS Safari zooms a focused field under 16px; platform guard, not density. */ }
        .app-body.role-student .student-list-actions,
        .app-body.role-teacher .student-list-actions { justify-content:flex-start; gap:6px; }
        .app-body.role-student .student-list-actions .btn,
        .app-body.role-teacher .student-list-actions .btn { min-width:0; flex:0 1 auto; font-size:var(--text-sm); padding:7px 10px; min-height:32px; }
        .app-body.role-student .report-toolbar,
        .app-body.role-teacher .report-toolbar { gap:8px; }
        .app-body.role-student .report-toolbar .btn,
        .app-body.role-student .report-toolbar button,
        .app-body.role-teacher .report-toolbar .btn,
        .app-body.role-teacher .report-toolbar button { min-height:34px; padding:7px 10px; font-size:var(--text-sm); }
        .hero-grid { grid-template-columns:1fr; }
        .hero-title { font-size:var(--text-2xl); }
        .stat-grid { grid-template-columns:1fr; }
        .quick-action-grid { grid-template-columns:1fr; }
        .schedule-action-bar { flex-direction:column; align-items:stretch; }
        .schedule-action-group { width:100%; }
        .schedule-action-group .btn, .schedule-action-group button { flex:1 1 160px; }
        .schedule-summary-chip { width:100%; justify-content:flex-start; }
        .schedule-day-panel select { font-size:18px; /* iOS Safari zooms a focused field under 16px; platform guard, not density. */ min-height:var(--control-h-lg); width:100%; }
        .filter-row input, .filter-row select, .filter-row textarea, .filter-row button, .filter-row .btn,
        .form-row input, .form-row select, .form-row textarea, .form-row button, .form-row .btn { width:100%; min-height:var(--control-h-lg); font-size:16px; /* iOS Safari zooms a focused field under 16px; platform guard, not density. */ line-height:1.35; }
        th, td { white-space:nowrap; font-size:var(--text-lg); line-height:1.5; padding:11px 9px; }
        .lesson-block { font-size:var(--text-lg); line-height:1.5; padding:12px; }
        .lesson-main-actions .btn { min-width:140px; }
        .mini-link { font-size:var(--text-md); padding:7px 9px; }
        .flash { font-size:var(--text-lg); line-height:1.45; }
        .timetable-wrap { overflow-x:auto; }
        .student-summary-grid { grid-template-columns:1fr; }
        .print-room-grid { grid-template-columns:1fr; }
        .report-narrative-grid { grid-template-columns:1fr; }
        .report-chart-row { grid-template-columns:1fr; gap:6px; }
        .report-chart-score { text-align:left; }
        .report-toolbar { justify-content:flex-start; }
        .report-cache-bar { justify-content:stretch; }
        .report-cache-bar label { min-width:0; max-width:none; width:100%; }
        .student-library-grid,
        .student-reader-chapter-grid { grid-template-columns:1fr; }
        .student-shell-app-grid,
        .student-shell-mini-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
        .student-shell-pocket-grid { grid-template-columns:1fr; }
        .student-reader-hero { padding:18px; border-radius:var(--radius-lg); }
        .student-reader-preview { width:min(100%,136px); }
        .student-book-page { border-radius:var(--radius-lg); }
      }
      @page { size:A4 landscape; margin:6mm; }
      @media print {
        body { background:#fff; color:#111827; font-size:9px; }
        .app, .main, .page-container { display:block; padding:0; margin:0; max-width:none; }
        .sidebar, .topbar, .page-title, .filter-print-hide, .schedule-editor-grid, .flash, .screen-only, details.card, .lesson-main-actions, .lesson-sub-actions, .lesson-actions, button, .btn { display:none !important; }
        .card { border:none; border-radius:0; padding:0; margin:0 0 5px 0; background:#fff; }
        .screen-chart-only { display:none !important; }
        .print-chart-only { display:block !important; }
        .report-filter-row { display:none !important; }
        .report-cache-bar { display:none !important; }
        .report-print-page { min-height:0; }
        .card-header-row { margin-bottom:4px; }
        .print-only { display:block !important; }
        .timetable-wrap, .table-wrap { overflow:visible; border:none; border-radius:0; }
        .timetable-grid { --schedule-row-width:64px; --schedule-col-min:54px; min-width:0; width:100%; page-break-inside:auto; }
        .schedule-print-head { margin-bottom:6px; padding:6px 8px; border-radius:0; border:1px solid var(--edu-border); }
        .schedule-print-title { font-size:var(--text-md); margin-bottom:2px; }
        .schedule-print-meta { gap:5px; font-size:8px; }
        .schedule-print-meta span { padding:1px 4px; }
        .print-room-grid { grid-template-columns:repeat(2, minmax(0,1fr)); gap:5px; }
        .print-room-card { border:1px solid var(--edu-text-muted); border-radius:0; box-shadow:none; }
        .print-room-title { padding:3px 4px; }
        .print-room-teacher { font-size:9px; }
        .print-room-meta { font-size:7px; }
        .print-room-table th, .print-room-table td { padding:2px; font-size:7px; }
        .print-lesson-cell { min-height:28px; }
        .print-class-name { font-size:7px; }
        .print-class-meta { font-size:6px; line-height:1.05; }
        .print-lesson-sub { padding:2px 3px; border-radius:0; }
        .print-students { gap:2px; }
        .print-student-entry { min-height:14px; padding:2px 3px; border-radius:0; gap:1px; }
        .print-student-name { font-size:6px; line-height:1.12; }
        .print-student-home { font-size:5px; line-height:1.12; }
        .report-print-page { margin:0; padding:0; }
        .report-print-page h2 { font-size:var(--text-xl); margin:0 0 4px; }
        .report-print-page h3 { font-size:var(--text-sm); margin:0 0 6px; }
        .report-print-page .section-copy,
        .report-print-page .student-summary-label,
        .report-print-page .muted { font-size:8px; line-height:1.2; }
        .report-print-page .student-summary-value { font-size:var(--text-md); line-height:1.2; }
        .report-print-page .report-overall-badge { padding:5px 8px; font-size:9px; }
        .report-print-page .report-summary-card .student-summary-value { font-size:var(--text-xs); }
        .report-print-page .report-two-col { grid-template-columns:repeat(3,minmax(0,1fr)); }
        .report-print-page .report-chart-svg { max-height:170px; }
        .report-print-page .report-lesson-head { margin-bottom:4px; font-size:var(--text-xs); }
        .report-print-page .report-lesson-body { gap:3px; font-size:var(--text-xs); line-height:1.25; }
        .report-print-page .report-photo-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; margin-top:6px; }
        .report-print-page .report-photo-thumb img { height:74px; }
        .tt-head { padding:4px 5px; font-size:9px; }
        .tt-cell { min-height:52px; padding:2px; page-break-inside:auto; }
        .tt-rowhead { min-width:78px; padding:4px 5px; font-size:9px; page-break-inside:avoid; }
        .tt-rowhead strong { font-size:var(--text-xs); }
        .muted { font-size:8px; }
        .lesson-block { background:#fff; border:1px solid var(--edu-border); padding:3px 4px; margin-bottom:2px; break-inside:avoid; page-break-inside:avoid; }
        .lesson-title { font-size:9px; margin-bottom:1px; }
        .lesson-meta, .student-line { font-size:7px; line-height:1.1; }
        .student-line { margin-top:2px; }
        .badge { padding:1px 4px; font-size:7px; }
      }
      @media (max-width: 640px) {
        .workflow-score-grid, .workflow-signal-grid { grid-template-columns:repeat(2,minmax(0,1fr)); padding:12px; }
        .workflow-attendance-grid { padding:12px 12px 0; }
        .workflow-student-header, .workflow-student-detail-row { padding:12px; }
        .workflow-memo-grid { grid-template-columns:1fr; }
      }
      @media (max-width: 420px) {
        .workflow-attendance-grid, .workflow-score-grid, .workflow-signal-grid { grid-template-columns:1fr; }
      }
      @media (prefers-reduced-motion: reduce) {
        *, *::before, *::after { animation-duration:0.001ms !important; animation-iteration-count:1 !important; scroll-behavior:auto !important; transition-duration:0.001ms !important; }
      }


/* Shared shell accessibility safeguards. JS also applies inert/ARIA state. */
body.app-body :focus-visible {
  outline: 3px solid var(--edu-primary);
  outline-offset: 3px;
}

@media (max-width: 900px) {
  body.app-body .sidebar {
    visibility: hidden;
    transition: transform .22s ease, visibility 0s linear .22s;
  }

  body.app-body .app.mobile-nav-open .sidebar {
    visibility: visible;
    transition-delay: 0s;
  }

  body.app-body .sidebar-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 44px;
    width: 44px;
    min-width: 44px;
    min-height: 44px;
    padding: 0;
    border: 1px solid var(--edu-border);
    border-radius: var(--radius-md);
    background: #fff;
    color: var(--edu-text);
    cursor: pointer;
  }

  body.mobile-nav-open {
    overflow: hidden;
  }
}


/* Explicit mobile-layout preview remains operable on tablet/desktop widths. */
@media (min-width: 901px) and (max-width: 1180px) {
  html[data-layout-mode="mobile"] body.app-body .sidebar {
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    width: min(82vw, 320px);
    padding: 18px 14px;
    display: block;
    overflow: auto;
    z-index: 1002;
    transform: translateX(-100%);
    visibility: hidden;
    transition: transform .22s ease, visibility 0s linear .22s;
  }

  html[data-layout-mode="mobile"] body.app-body .app.mobile-nav-open .sidebar {
    transform: translateX(0);
    visibility: visible;
    transition-delay: 0s;
  }

  html[data-layout-mode="mobile"] body.app-body .sidebar-head {
    margin-bottom: 16px;
  }

  html[data-layout-mode="mobile"] body.app-body .sidebar-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 44px;
    width: 44px;
    min-width: 44px;
    min-height: 44px;
    padding: 0;
    border: 1px solid var(--edu-border);
    border-radius: var(--radius-md);
    background: #fff;
    color: var(--edu-text);
    cursor: pointer;
  }

  html[data-layout-mode="mobile"] body.app-body .sidebar-backdrop {
    position: fixed;
    inset: 0;
    display: none;
    background: rgba(15, 23, 42, 0.42);
    z-index: 1001;
  }

  html[data-layout-mode="mobile"] body.app-body .app.mobile-nav-open .sidebar-backdrop {
    display: block;
  }

  html[data-layout-mode="mobile"] body.app-body.mobile-nav-open {
    overflow: hidden;
  }
}
