/* ═══════════════════════════════════════════════════════════════════════════
   SURF-TUTOR — the authenticated tutor register.
   Source: Mini Mentor (§6.M, M.1–M.22) is CANONICAL for product structure.
   Register: productive, medium density — the tutor is at work, not browsing.

   §17.4 GOVERNANCE IN THIS FILE
     The legacy rendered `LV.4` + `72%` progress + `距 LV.5 还差 6 节`. The
     ruling keeps the LEVEL LABEL and the BEHAVIOURAL gap and forbids the bare
     percentage. The legacy rendered `续课意向 86%` + `预计 ¥2,800`. The ruling
     replaces both with a three-tier label plus factual signals. Neither is
     reproduced here — the surfaces render the ruled form.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Dashboard hero — the tutor's primary identity + income band ────────── */
.tut-hero { background: var(--grad-primary); color: #fff; border-radius: var(--r-lg);
  padding: var(--sp-5); box-shadow: var(--sh-primary); }
.tut-hero .th-top { display: flex; gap: var(--sp-3); align-items: center; }
.tut-hero .th-name { font-size: var(--fs-h3); font-weight: var(--fw-semibold); color: #fff;
  display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.tut-hero .th-sub { font-size: var(--fs-sm); color: rgba(255, 255, 255, 0.85); margin-top: 3px; }
.tut-hero .th-greet { font-size: var(--fs-sm); color: rgba(255, 255, 255, 0.9); margin-top: var(--sp-4); }
.tut-stat-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-2); margin-top: var(--sp-4); }
.tut-stat { text-align: center; position: relative; }
.tut-stat + .tut-stat::before { content: ''; position: absolute; left: 0; top: 6px; bottom: 6px;
  width: 1px; background: rgba(255, 255, 255, 0.22); }
.tut-stat .ts-num { font-size: var(--fs-h3); font-weight: var(--fw-bold); color: #fff;
  font-variant-numeric: tabular-nums; }
.tut-stat .ts-label { font-size: 10px; color: rgba(255, 255, 255, 0.78); margin-top: 2px; }

/* ── Income snapshot ────────────────────────────────────────────────────── */
.income-card { background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--r-lg);
  padding: var(--sp-4); }
.income-card .ic-row { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--sp-4); }
.income-card .ic-label { font-size: var(--fs-xs); color: var(--c-mute); }
.income-card .ic-amt { font-size: var(--fs-h1); font-weight: var(--fw-bold); color: var(--c-ink);
  font-variant-numeric: tabular-nums; }
.income-card .ic-amt.is-ok { color: var(--c-success-ink); }

/* ── Growth band (ruled form — no percentage) ───────────────────────────── */
.growth-band { background: var(--grad-primary); color: #fff; border-radius: var(--r-lg); padding: var(--sp-4); }
.growth-band .gb-title { font-size: var(--fs-md); font-weight: var(--fw-semibold); color: #fff; }
.growth-band .gb-sub { font-size: var(--fs-sm); color: rgba(255, 255, 255, 0.86); margin-top: 3px; }
.growth-band .gb-note { font-size: var(--fs-xs); color: rgba(255, 255, 255, 0.72); margin-top: var(--sp-3); }

/* ── Lesson timeline (Mini's lesson-time 54px + vertical rule) ──────────── */
.sched-day { font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--c-ink);
  padding: var(--sp-4) var(--sp-4) var(--sp-2); }
.lesson-card { display: flex; gap: var(--sp-4); padding: var(--sp-4); align-items: stretch;
  background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--r-md); }
.lesson-card .lc-time { width: 54px; flex: none; border-right: 1px solid var(--c-line); padding-right: var(--sp-3); }
.lesson-card .lc-time .t-h { font-size: var(--fs-h3); font-weight: var(--fw-bold); color: var(--c-ink);
  font-variant-numeric: tabular-nums; }
.lesson-card .lc-time .t-m { font-size: var(--fs-xs); color: var(--c-mute); }
.lesson-card .lc-main { flex: 1; min-width: 0; }
.lesson-card .lc-title { font-size: var(--fs-md); font-weight: var(--fw-semibold); color: var(--c-ink); margin-top: 5px; }
.lesson-card .lc-meta { font-size: var(--fs-xs); color: var(--c-mute); margin-top: 3px; }

/* ── Booking request cards (accept / reject is the conversion core) ─────── */
.booking-card { background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--r-md);
  padding: var(--sp-4); }
.booking-card .bk-head { display: flex; align-items: center; gap: var(--sp-3); }
.booking-card .bk-kv { display: flex; flex-direction: column; gap: 0; margin: var(--sp-3) 0; }
.booking-card .bk-actions { display: flex; gap: var(--sp-2); }
.booking-card .bk-actions .btn { flex: 1; }

/* ── Course rows + all seven statuses ───────────────────────────────────── */
.course-row { display: flex; gap: var(--sp-3); padding: var(--sp-3) var(--sp-4); align-items: center;
  background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--r-md); }
.course-row .cr-thumb { width: 86px; height: 64px; border-radius: var(--r-sm); background: var(--grad-hero);
  flex: none; display: inline-flex; align-items: center; justify-content: center; color: var(--c-primary-200); }

/* ── Earnings hero ─────────────────────────────────────────────────────── */
.earn-hero { background: var(--grad-primary); color: #fff; border-radius: var(--r-lg); padding: var(--sp-5); }
.earn-hero .eh-label { font-size: var(--fs-sm); color: rgba(255, 255, 255, 0.82); }
.earn-hero .eh-balance { font-size: clamp(28px, 3.4vw, 40px); font-weight: var(--fw-bold); color: #fff;
  font-variant-numeric: tabular-nums; line-height: 1.2; margin-top: 6px; }
.earn-hero .eh-split { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--sp-4);
  margin-top: var(--sp-4); padding-top: var(--sp-4); border-top: 1px solid rgba(255, 255, 255, 0.2); }
.income-row { display: flex; gap: var(--sp-3); padding: var(--sp-4); align-items: center; }
.income-row + .income-row { border-top: 1px solid var(--c-line-soft); }
.income-row .ir-amt { font-size: var(--fs-md); font-weight: var(--fw-bold); font-variant-numeric: tabular-nums;
  margin-left: auto; flex: none; }
.income-row .ir-amt.is-in { color: var(--c-success-ink); }
.income-row .ir-amt.is-out { color: var(--c-mute); }

/* ── Review cards ──────────────────────────────────────────────────────── */
.rating-summary { display: flex; gap: var(--sp-6); align-items: center; flex-wrap: wrap; }
.rating-big { text-align: center; }
.rating-big .rb-num { font-size: 44px; font-weight: var(--fw-bold); color: var(--c-warning-ink);
  line-height: 1; font-variant-numeric: tabular-nums; }
.rating-dist { flex: 1; min-width: 220px; display: flex; flex-direction: column; gap: 6px; }

/* ── Student roster ────────────────────────────────────────────────────── */
.student-row { display: flex; gap: var(--sp-3); padding: var(--sp-4); align-items: center;
  background: var(--c-surface); border-bottom: 1px solid var(--c-line-soft); }
.intent-chip { display: inline-flex; align-items: center; gap: 5px; padding: 3px 9px; border-radius: var(--r-xs);
  font-size: var(--fs-xs); font-weight: var(--fw-semibold); }
.intent-high { background: var(--c-success-bg); color: var(--c-success-ink); }
.intent-mid { background: var(--c-warning-bg); color: var(--c-warning-ink-deep); }
.intent-low { background: var(--c-surface-2); color: var(--c-mute); }
.signal-list { display: flex; gap: 6px; flex-wrap: wrap; margin-top: var(--sp-2); }
.signal { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: var(--r-xs);
  background: var(--c-surface-2); border: 1px solid var(--c-line-soft); font-size: 10px; color: var(--c-mute); }

/* ── Payout / bank cards ───────────────────────────────────────────────── */
.payout-rule { display: flex; justify-content: space-between; gap: var(--sp-4); padding: 10px 0;
  font-size: var(--fs-sm); border-bottom: 1px solid var(--c-line-soft); }
.payout-rule .pr-k { color: var(--c-mute); }
.payout-rule .pr-v { color: var(--c-ink); font-weight: var(--fw-medium); text-align: right; }
.cycle-chips { display: flex; gap: var(--sp-2); flex-wrap: wrap; }

/* ── Certification status (per-document, backing-driven) ───────────────── */
.cert-row { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3);
  padding: 9px 0; font-size: var(--fs-sm); }
.cert-row + .cert-row { border-top: 1px solid var(--c-line-soft); }
.cert-note { font-size: var(--fs-xs); color: var(--c-mute); margin-top: var(--sp-2); line-height: 1.6; }

/* ── Onboarding stepper ────────────────────────────────────────────────── */
.ob-step-head { margin-bottom: var(--sp-5); }
.ob-step-head .osh-eyebrow { font-size: var(--fs-xs); font-weight: var(--fw-semibold);
  letter-spacing: 0.08em; color: var(--c-primary-600); text-transform: uppercase; }
.ob-step-head h2 { font-size: var(--fs-h2); font-weight: var(--fw-bold); color: var(--c-ink); margin-top: 6px; }
.ob-step-head p { font-size: var(--fs-sm); color: var(--c-mute); margin-top: 6px; line-height: 1.6; }
.preview-row { display: flex; justify-content: space-between; gap: var(--sp-4); padding: 10px 0;
  font-size: var(--fs-sm); border-bottom: 1px solid var(--c-line-soft); }

/* ── Tutor wide-container composition ──────────────────────────────────────
   The dashboard is a workspace: a main column (today's work) plus a rail (money
   summary, prep, renewal). The current DQX candidate had this as `.dash-grid`
   1.35fr / 1fr, and M3 says preserve it. The query is a CONTAINER query, so a
   pinned 390 frame collapses even in a wide browser window. */
.tut-workspace { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--sp-5); align-items: start; }
.tw-main { display: flex; flex-direction: column; min-width: 0; }
.tw-rail { display: flex; flex-direction: column; gap: var(--sp-4); min-width: 0; }
@container (min-width: 900px) {
  .tut-workspace { grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); }
  .tw-rail { position: sticky; top: var(--sp-5); }
}

/* The 5-pane lessons hub keeps the TAB axis at every width — patch §3 names this
   surface as the example of what NOT to refactor, and Mini's five panes are the
   product's structure rather than a narrow-viewport accommodation.

   An earlier draft declared a `.lessons-panes` side rail here. It was removed
   rather than implemented: the class had zero consumers, so the rule described a
   layout nothing rendered, and a stylesheet that documents a composition the
   product does not have is a defect in the same family as the ones this runtime
   exists to correct. An adversarial pass found it by grepping for consumers. */

/* Lane B: one source-ordered workspace at every container width. */
.dashboard-root .tut-hero { padding: 18px; border-radius: 24px; }
.dashboard-root .th-name { font-size: 16px; }
.dashboard-root .th-sub { margin-top: 4px; color: rgba(255,255,255,.85); }
.dashboard-root .tut-stat-cols { margin-top: 16px; }
.dashboard-root .tut-hero .badge { background: rgba(255,255,255,.22); color: #fff; }
.dashboard-root .card-pad { padding: 16px; }
.dashboard-root .ai-card { padding: 18px; }
.dashboard-root .ai-card h3 { color: #fff; }
.dashboard-root .ai-card > .badge { background: rgba(255,255,255,.22); color: #fff; }
.dashboard-root .growth-band { background: var(--grad-primary); }
.mini-block { width: 100%; text-align: left; }
.mini-flex { flex: 1; min-width: 0; }
.mini-actions { display: flex; align-items: center; gap: 8px; }
.mini-actions > .btn { flex: 1; }
.mini-todo-row { display: flex; align-items: center; gap: 12px; padding: 13px 0; border-bottom: 1px solid var(--c-line-soft); cursor: pointer; }
.mini-todo-row:last-child { border-bottom: none; }
.tutor-me-root.me-hero { padding: 8px 16px 20px; }
.tutor-me-root .mh-bar { padding: 6px 0 14px; margin-bottom: 0; }
.mini-tutor-identity { display: block; }
.mini-tutor-identity .uc-name { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.mini-tutor-identity .uc-desc { color: var(--c-mute); font-size: 13px; margin-top: 4px; }
.tutor-me-root .stat-col .sc-num { font-size: 15px; }
.mini-grid-three { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 0; }
.mini-grid-three .grid-entry { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 14px 4px; }
.mini-grid-three .ge-ico { width: 44px; height: 44px; border-radius: 12px; }
.tutor-me-root .cert-note { font-size: 11px; }

/* Repair wave: mentor-dashboard / mentor-me source hierarchy. */
.dashboard-root .th-name { font-weight: var(--fw-bold); }
.dashboard-root .ts-num { font-size: 16px; }
.dashboard-root .ts-label { font-size: var(--fs-xs); }
.dashboard-root .tut-stat + .tut-stat::before { top: 4px; bottom: 4px; background: rgba(255,255,255,.25); }
.dashboard-root .ai-card { padding: 16px; }
.dashboard-root .growth-band .gb-sub { font-size: var(--fs-xs); margin-top: 0; }
.dashboard-root .growth-band .gb-note { margin-top: 8px; }
.tutor-me-root .mini-tutor-stats { padding: 12px; }
.tutor-me-root .cert-note { margin-top: 0; }
.tutor-me-root .mini-settings .list-row { padding: 13px 0; }

/* Mini settings use regular sm, not generic medium md. */
.tutor-me-root .mini-settings .lr-title { font-size: 13px; font-weight: 400; }
.dashboard-root .ai-card .btn-white { color: #6b3fb8; }

/* Mini dashboard source hero spacing; other tutor roots unchanged. */
.dashboard-root .tut-stat-cols { gap: 0; }
.dashboard-root .th-name { gap: 8px; }

/* Lane B confirmed source repairs: Mini mentor-dashboard .pad (16px),
   ds.scss:1538 live foreground. Scope excludes gradient student today card. */
.dashboard-root.mini-root { padding-top: 16px; }
.dashboard-root .status-live { color: var(--c-danger); }

/* Source .badge (TT ds.scss:382–390) on these two canonical pages only. */
.app-shell-mini .dashboard-root .badge-sm,
.app-shell-mini .tutor-me-root .badge-sm { font-size: 11px; padding: 3px 8px; }

/* SPECDERIVED tutor-course-family · Mini 2c0998cd scoped geometry only. */
.tc5-root .tc5-field { margin: 16px 0; }
.tc5-root .tc5-field > label { display: block; margin-bottom: 8px; font-size: var(--fs-sm); }
.tc5-root .tc5-field .input, .tc5-root .tc5-field .textarea { width: 100%; box-sizing: border-box; }
.tc5-root .tc5-upload { border: 1.5px dashed var(--c-line); border-radius: var(--r-md); padding: 20px; text-align: center; color: var(--c-muted); background: var(--c-surface-2); }
.tc5-root .tc5-cover-small { width: 100%; height: 96px; object-fit: cover; border-radius: var(--r-sm); }
.tc5-root .tc5-stepper { margin-bottom: 20px; }
.tc5-root .tc5-stepper-bar { display: flex; gap: 6px; margin: 16px 0; }
.tc5-root .tc5-stepper-bar span { flex: 1; height: 4px; background: var(--c-line); border-radius: 2px; }
.tc5-root .tc5-stepper-bar .active, .tc5-root .tc5-stepper-bar .done { background: var(--c-primary); }
.tc5-root [data-act="tc5-type"] { width: 100%; display: flex; gap: 12px; padding: 14px; margin-top: 8px; border: 1.5px solid var(--c-line); border-radius: var(--r-md); white-space: normal; text-align: left; }
.tc5-root [aria-pressed="true"] { border-color: var(--c-primary); background: var(--c-primary-soft); }
.tc5-root .tc5-price-card { background: var(--c-surface-2); }
.tc5-root .tc5-preview-row { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--c-line); }
.tc5-root .tc5-outline-item { display: flex; align-items: flex-start; gap: 10px; padding: 11px; border-bottom: 1px solid var(--c-line); }
.tc5-root .tc5-outline-item > div { flex: 1; min-width: 0; }
.tc5-root .tc5-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; }
.tc5-root .tc5-slot-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.tc5-root .tc5-commit { display: flex; align-items: flex-start; gap: 10px; margin-top: 16px; }
.tc5-root .tc5-course-cover { width: 100%; height: 180px; object-fit: cover; }
.tc5-root .tc5-course-mini { display: flex; gap: 12px; padding: 12px; margin-bottom: 12px; }
.tc5-root .tc5-course-mini > div:last-child { flex: 1; min-width: 0; }
.tc5-root .tc5-thumb { width: 88px; height: 66px; flex-shrink: 0; background: var(--c-surface-2); border-radius: var(--r-sm); overflow: hidden; }
.tc5-root .tc5-thumb img { width: 100%; height: 100%; object-fit: cover; }
.tc5-root .tc5-intro { line-height: 1.7; white-space: pre-wrap; }
.tc5-root [data-tc5-status]:not(:empty) { padding: 12px; margin: 12px 0; background: var(--c-surface-2); color: var(--c-danger-ink); }
.tc5-root button:disabled { cursor: not-allowed; }

/* Tutor-course remediation only: original 13,821-character CSS baseline frozen. */
.tc5-root .tc5-stepper-bar .active,.tc5-root .tc5-stepper-bar .done{background:var(--c-primary-500)}
.tc5-root{padding-bottom:90px}
.tc5-root .tc5-actions{position:sticky;bottom:0;z-index:2;display:flex;flex-wrap:nowrap;gap:8px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:var(--c-surface);border-top:1px solid var(--c-line);margin:16px -16px -16px}
.tc5-root .tc5-expand{flex:1;min-width:0}
.tc5-root .tc5-actions .btn-primary{flex:1}
.tc5-root .tc5-types{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.tc5-root .tc5-type{display:flex;align-items:center;gap:12px;padding:14px;border:1.5px solid var(--c-line);border-radius:var(--r-md);background:#fff;text-align:left;cursor:pointer}
.tc5-root .tc5-type[aria-pressed="true"]{border-color:var(--c-primary-500);background:var(--c-primary-50)}
.tc5-root .tc5-type-copy{flex:1}.tc5-root .tc5-type-copy small,.tc5-root .tc5-nav-row small{display:block;font-size:var(--fs-xs)}
.tc5-root .tc5-check{width:20px;height:20px;border-radius:50%;border:2px solid var(--c-line);display:flex;align-items:center;justify-content:center;box-sizing:border-box;flex-shrink:0}
.tc5-root .tc5-check svg{visibility:hidden}.tc5-root [aria-pressed="true"] .tc5-check{background:var(--c-primary-500);border-color:var(--c-primary-500);color:#fff}.tc5-root [aria-pressed="true"] .tc5-check svg{visibility:visible}
.tc5-root .tc5-tone-info{background:var(--c-info-bg);color:var(--c-primary-600)}.tc5-root .tc5-tone-accent{background:var(--c-accent-100);color:var(--c-accent-600)}.tc5-root .tc5-tone-ai{background:var(--c-ai-bg);color:var(--c-ai)}.tc5-root .tc5-tone-success{background:var(--c-success-bg);color:var(--c-success)}
.tc5-root .tc5-nav-row{display:flex;align-items:center;gap:10px;padding:13px 0;width:100%;border:0;border-bottom:1px solid var(--c-line-soft);background:transparent;text-align:left}.tc5-root .tc5-nav-row:last-child{border-bottom:0}
.tc5-root .tc5-upload{color:var(--c-mute)}.tc5-root .tc5-cover-small{width:100%;height:96px;object-fit:cover;border-radius:var(--r-sm)}.tc5-root .tc5-cover-small[hidden]{display:none}
.tc5-root .tc5-input-row,.tc5-root .tc5-select-row{display:flex;align-items:center;gap:8px}.tc5-root .tc5-input-row .input,.tc5-root .tc5-select-row .input{flex:1;min-width:0}.tc5-root .unit{color:var(--c-mute);padding:0 4px}
.tc5-root .tc5-price-card{background:var(--c-surface-2)}.tc5-root .tc5-preview-row{display:flex;justify-content:space-between;gap:12px;padding:9px 0;font-size:var(--fs-sm);border-bottom:1px solid var(--c-line-soft)}.tc5-root .tc5-preview-row.no-line{border-bottom:0}
.tc5-root .tc5-outline-item{display:flex;gap:10px;padding:11px;border:1px solid var(--c-line);border-radius:var(--r-sm);background:#fff;margin-top:8px}
.tc5-root .tc5-slot-grid .chip{padding:9px 4px;border:1.5px solid var(--c-line);border-radius:var(--r-sm)}.tc5-root .tc5-slot-grid .chip[aria-pressed="true"]{background:var(--c-primary-500);border-color:var(--c-primary-500);color:#fff}
.tc5-root .tc5-conv{display:flex}.tc5-root .tc5-conv-cell{flex:1;text-align:center;padding:12px 4px;position:relative}.tc5-root .tc5-conv-cell+.tc5-conv-cell:before{content:'';position:absolute;left:0;top:12px;bottom:12px;width:1px;background:var(--c-line)}
.tc5-root .tc5-more-rows{padding:0 0 8px}.tc5-root .tc5-more-rows>button{display:block;width:100%;padding:16px;border:0;border-bottom:1px solid var(--c-line-soft);border-radius:0;text-align:center;background:transparent}.tc5-root .tc5-more-rows>.btn-danger-soft{color:var(--c-danger)}
.tc5-hub .tc5-hub-tabs{background:#fff;padding:4px 16px 0}.tc5-hub .tc5-hub-content{overflow:auto}.tc5-hub .tc5-lesson{display:flex;gap:12px;padding:14px;text-align:left;width:100%;background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-md)}
.tc5-hub .lc-time{width:54px;flex-shrink:0;text-align:center}.tc5-hub .lc-time .t-h{font-size:var(--fs-sm)}.tc5-hub .lc-time .t-m{font-size:var(--fs-xs)}.tc5-hub .tc5-v-line{width:1px;background:var(--c-line);flex-shrink:0}.tc5-hub .lc-title{font-size:var(--fs-sm)}.tc5-hub .lc-meta{font-size:var(--fs-xs)}
.tc5-hub .bk-kv{background:var(--c-surface-2);padding:10px}.tc5-hub .bk-kv .kv{padding:3px 0}.tc5-hub .rec-card{text-align:left;width:100%}.tc5-hub .tc5-folder-icon{display:inline-flex}
.tc5-root .tc5-reasons{display:flex;flex-direction:column;gap:8px}.tc5-root .tc5-reasons button{padding:11px;border:1.5px solid var(--c-line);border-radius:var(--r-md);background:#fff;text-align:left}.tc5-root .tc5-reasons button[aria-pressed="true"]{background:var(--c-primary-50);border-color:var(--c-primary-500)}
.tc5-root [aria-pressed="true"]{border-color:var(--c-primary-500);background:var(--c-primary-50)}
.sheet.tc5-outline-sheet{height:calc(100% - 24px);max-height:calc(100% - 24px)}
.tc5-root .tc5-conv-cell:nth-child(2) b{color:var(--c-accent-600)}.tc5-root .tc5-conv-cell:nth-child(4) b{color:var(--c-warning)}

/* Recovery checkpoint: consume only EXISTING runtime .action-bar hoist selector.
   Fixed top/bottom frame slots are NOT present in current runtime; sticky host
   placement is an explicit integration gap, not fg-action-bar acceptance. */
.tc5-source-actionbar{display:flex;align-items:center;gap:8px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));box-sizing:border-box;background:var(--c-surface);border-top:1px solid var(--c-line);margin:0;width:100%;flex-wrap:nowrap}
.tc5-source-actionbar .btn-block,.tc5-source-actionbar .tc5-expand{flex:1;min-width:0}.tc5-source-actionbar .btn-ghost,.tc5-source-actionbar .btn-soft{flex:0 0 auto;white-space:nowrap}.tc5-source-actionbar .tc5-more-icon{padding:0;width:44px;flex:0 0 44px}
.tc5-root .tc5-leave-row{margin-top:16px}.tc5-root .tc5-actions{position:static;bottom:auto}
.tc5-hub .lc-time{border-right:0;padding-right:0}.tc5-hub .sched-day{font-size:var(--fs-xs);font-weight:400;padding:0}.tc5-hub .tc5-hub-content>.sched-day:not(:first-child){margin-top:16px}
.tc5-root .tc5-detail-outline .tc5-outline-item{border:0;border-bottom:1px solid var(--c-line-soft);border-radius:0;margin:0;padding:11px 0}.tc5-root .tc5-detail-outline .tc5-outline-item:last-child{border-bottom:0}
/* Finite negative/source repair; original CSS prefix untouched. */
.tc5-source-actionbar{gap:12px}.tc5-source-actionbar[data-tc5-source-bar="detail"]>.btn:not(.tc5-more-icon){flex:1;min-width:0}.tc5-source-actionbar .tc5-more-icon{flex:0 0 44px}
.tc5-root .tc5-source-claim{display:block;font-size:var(--fs-xs);margin-top:8px}.tc5-root .tc5-inline-net{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;margin-top:8px}.tc5-root .tc5-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.tc5-root .tc5-analysis-entry{border:0;background:transparent;color:var(--c-mute);font-size:var(--fs-xs)}
/* Accepted Task30 binding: source slots allocate their own flex height. */
.dq-source-frame .tc5-frame-body{padding-bottom:16px}.dq-source-frame .tc5-frame-body .tc5-hub-content{overflow:visible}
.tc5-source-top{width:100%;background:var(--c-surface)}.tc5-source-top .tc5-stepper{padding:12px 16px;margin:0}.tc5-source-top .tc5-stepper-bar{display:flex;gap:6px;margin:16px 0 0}.tc5-source-top .tc5-stepper-bar span{flex:1;height:4px;background:var(--c-line);border-radius:2px}.tc5-source-top .tc5-stepper-bar .active,.tc5-source-top .tc5-stepper-bar .done{background:var(--c-primary-500)}
.tc5-source-top .tc5-hub-tabs{background:#fff;padding:4px 16px 0}.tc5-source-top .line-tabs{display:flex}.tc5-source-top .line-tab{background:transparent;border:0;cursor:pointer}
/* Finite source header repair; only owned create/detail source tops. */
.tc5-source-top .tc5-stepper{padding:8px 16px;padding-top:calc(8px + env(safe-area-inset-top));border-bottom:1px solid var(--c-line)}
.tc5-source-top .tc5-stepper-row{display:flex;justify-content:space-between;align-items:center}.tc5-source-top .tc5-stepper-back{width:40px;height:40px;flex:0 0 40px}.tc5-source-top .tc5-stepper-bar{margin:10px 0 0;gap:6px}.tc5-source-top .tc5-stepper-bar span{height:4px}
.tc5-source-top .tc5-profile-preview-boundary{display:flex;align-items:center;gap:6px}.tc5-source-top .tc5-profile-preview-boundary small{font-size:var(--fs-xs)}

/* Finite Tutor source white/navbar repair. Owned marker census: TUT-LESSONS,
   TUT-COURSES, TUT-COURSE-CREATE, TUT-COURSE-EDIT, TUT-COURSE + private PREVIEW.
   The marker is hoisted to the source top slot; paint the actual shell negative
   space, not c-bg tokens, card backgrounds, scroll clipping or other app roots. */
.dq-source-frame:has(> .dq-source-top > .tc5-source-top) > .dq-scroll > .app-shell { background: #fff; }
.tc5-source-top > .tc5-source-navbar { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); height: calc(50px + env(safe-area-inset-top, 0px)); min-height: calc(50px + env(safe-area-inset-top, 0px)); padding: env(safe-area-inset-top, 0px) 8px 0; gap: 8px; box-sizing: border-box; background: rgba(255,255,255,.92); }
.tc5-source-top > .tc5-source-navbar > .tb-title { text-align: center; font-size: 17px; font-weight: 600; }
.tc5-source-navbar > .tc5-source-nav-left, .tc5-source-navbar > .tc5-source-nav-right { display: flex; align-items: center; min-width: 0; gap: 8px; }
.tc5-source-navbar > .tc5-source-nav-right { justify-content: flex-end; }
.tc5-source-navbar .tc5-source-back { width: 36px; height: 36px; border-radius: 12px; padding: 0; border: 0; background: transparent; color: var(--c-ink); }
.tc5-source-navbar .tc5-source-back:hover { background: transparent; color: var(--c-ink); }
.tc5-source-navbar .tc5-profile-preview-boundary { flex-direction: column; gap: 0; align-items: flex-end; }
.tc5-source-navbar .tc5-profile-preview-boundary > .icon-btn { height: 28px; }
.tc5-source-navbar .tc5-profile-preview-boundary > small { font-size: 11px; line-height: 1.5; white-space: nowrap; }

/* TW4: owned roots travel with hoisted top and overlay bodies/feet.
   Original CSS prefix frozen; no shell/foundation selectors. */
.tw4-root { --tw4-line:#ebecf3; --tw4-muted:#8b8fa3; --tw4-ink:#1a1c2e; --tw4-primary:#4c3fd6; background:#fff; color:#4a4d63; font-size:13px; line-height:1.5; font-family:inherit; }
.tw4-root button,.tw4-root textarea { font-family:inherit; }
.tw4-root button { cursor:pointer; }
.tw4-root p,.tw4-root h1,.tw4-root h2 { margin:0; }
.tw4-root b { color:var(--tw4-ink); font-size:13px; font-weight:700; }
.tw4-root small { display:block; font-size:11px; color:var(--tw4-muted); }
.tw4-root .tw4-faint { color:#aeb1c4; }
.tw4-root .tw4-muted { display:block; color:var(--tw4-muted); }
.tw4-root .tw4-flex { flex:1; min-width:0; }
.tw4-root .tw4-row,.tw4-root .tw4-between { display:flex; align-items:center; gap:12px; }
.tw4-root .tw4-between { justify-content:space-between; gap:8px; }
.tw4-root .tw4-gap2 { gap:8px; }
.tw4-root .tw4-pad { padding:16px; }
.tw4-root .tw4-pad-x { padding:0 16px; }
.tw4-root .tw4-mt1 { margin-top:4px; }
.tw4-root .tw4-mt2 { margin-top:8px; }
.tw4-root .tw4-mt3 { margin-top:12px; }
.tw4-root .tw4-mt4 { margin-top:16px; }
.tw4-root .tw4-nav { height:calc(50px + env(safe-area-inset-top,0px)); display:flex; align-items:center; gap:8px; padding:env(safe-area-inset-top,0px) 8px 0; box-sizing:border-box; background:rgba(255,255,255,.92); backdrop-filter:blur(14px); border-bottom:1px solid var(--tw4-line); }
.tw4-root .tw4-nav h1 { font-size:17px; font-weight:600; color:var(--tw4-ink); flex:1; text-align:center; }
.tw4-root .tw4-back { width:36px; height:36px; border:0; padding:0; border-radius:12px; background:transparent; color:var(--tw4-ink); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.tw4-root .tw4-tab-pad { padding:4px 16px 0; background:#fff; }
.tw4-root .tw4-line-tabs { display:flex; gap:18px; border-bottom:1px solid var(--tw4-line); overflow-x:auto; }
.tw4-root .tw4-line-tab { padding:11px 0; font-size:15px; font-weight:500; color:var(--tw4-muted); border:0; border-bottom:2px solid transparent; white-space:nowrap; background:transparent; flex-shrink:0; }
.tw4-root .tw4-line-tab.active { color:var(--tw4-primary); border-bottom-color:#5b54ec; }
.tw4-root .tw4-seg-tabs { display:flex; gap:4px; background:#f7f8fc; padding:4px; border-radius:999px; overflow:hidden; }
.tw4-root .tw4-seg-tab { flex:1 1 0; min-width:0; text-align:center; padding:9px 4px; border:0; border-radius:999px; font-size:13px; font-weight:500; color:var(--tw4-muted); background:transparent; white-space:nowrap; }
.tw4-root .tw4-seg-tab.active { background:#fff; color:var(--tw4-primary); box-shadow:0 1px 3px rgba(26,28,46,.05); }
.tw4-root .tw4-avatar { border-radius:50%; object-fit:cover; flex-shrink:0; }
.tw4-root .tw4-av-md { width:52px; height:52px; }
.tw4-root .tw4-av-sm { width:38px; height:38px; }
.tw4-root .tw4-row-button { width:100%; display:block; border:0; padding:0; background:transparent; text-align:left; font-size:13px; color:#4a4d63; }
.tw4-root .tw4-msg-row { display:flex; gap:12px; padding:14px 0; border-bottom:1px solid #f3f4f9; }
.tw4-root .tw4-thumb { position:relative; flex-shrink:0; }
.tw4-root .tw4-unread { position:absolute; top:-2px; right:-2px; min-width:18px; height:18px; padding:0 5px; background:#ef4d6a; color:#fff; font-size:10px; font-weight:600; border-radius:9px; display:flex; align-items:center; justify-content:center; border:2px solid #fff; box-sizing:border-box; }
.tw4-root .tw4-last { display:block; margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--tw4-muted); }
.tw4-root .tw4-badge { display:inline-flex; padding:3px 8px; font-size:11px; font-weight:600; border-radius:999px; margin-top:4px; }
.tw4-root .tw4-card { background:#fff; border:1px solid var(--tw4-line); border-radius:18px; box-shadow:0 1px 3px rgba(26,28,46,.05); padding:16px; }
.tw4-root .tw4-notice { display:flex; gap:9px; align-items:flex-start; padding:12px 14px; border-radius:10px; font-size:13px; }
.tw4-root .tw4-notice svg,.tw4-root .tw4-notice .dq-wot-icon { flex-shrink:0; }
.tw4-root .tw4-notice.tw4-tone-info { color:#4133b3; }
.tw4-root .tw4-notice.tw4-tone-warn { color:#8a5a00; }
.tw4-root .tw4-notice.tw4-tone-ai { color:#6b3fb8; }
.tw4-root .tw4-tone-info,.tw4-root .tw4-tone-primary { background:#eef1ff; color:#4c3fd6; }
.tw4-root .tw4-tone-success { background:#e8fbf6; color:#16b896; }
.tw4-root .tw4-tone-danger { background:#ffecef; color:#ef4d6a; }
.tw4-root .tw4-tone-warning,.tw4-root .tw4-tone-warn { background:#fff5e3; color:#b8791a; }
.tw4-root .tw4-tone-ai { background:#f3eefe; color:#9b6df5; }
.tw4-root .tw4-tone-accent { background:#ffe6d4; color:#f15f1f; }
.tw4-root .tw4-tone-mute { background:#f3f4f9; color:var(--tw4-muted); }
.tw4-root .tw4-btn { display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:13px 22px; font-size:15px; font-weight:600; border-radius:999px; border:1.5px solid transparent; background:#fff; color:var(--tw4-ink); }
.tw4-root .tw4-primary { background:linear-gradient(135deg,#5b54ec 0%,#7079f8 100%); color:#fff; box-shadow:0 8px 22px rgba(91,84,236,.32); }
.tw4-root .tw4-accent { background:linear-gradient(135deg,#ff7a3d 0%,#f15f1f 100%); color:#fff; }
.tw4-root .tw4-soft { background:#eef1ff; color:#4c3fd6; }
.tw4-root .tw4-ghost { border-color:var(--tw4-line); }
.tw4-root .tw4-sm { padding:8px 15px; font-size:13px; }
.tw4-root .tw4-block { width:100%; }
.tw4-root .tw4-icon-tile,.tw4-root .tw4-noti-icon { width:42px; height:42px; border-radius:14px; flex-shrink:0; display:flex; align-items:center; justify-content:center; }
.tw4-root .tw4-noti-row { display:flex; gap:12px; padding:14px 0; width:100%; border:0; border-bottom:1px solid #f3f4f9; position:relative; text-align:left; background:transparent; font-size:13px; }
.tw4-root .tw4-noti-row:last-child { border-bottom:0; }
.tw4-root .tw4-noti-row.unread::after { content:''; position:absolute; left:-2px; top:18px; width:7px; height:7px; border-radius:50%; background:#ef4d6a; }
.tw4-root .tw4-empty > img { display:block; margin-left:auto; margin-right:auto; }
.tw4-root .tw4-empty { padding:64px 24px; text-align:center; color:var(--tw4-muted); }
.tw4-root .tw4-asset-missing { display:inline-flex; align-items:center; justify-content:center; font-size:8px; color:var(--tw4-muted); overflow-wrap:anywhere; }
.tw4-root .tw4-score-row { display:flex; gap:16px; align-items:center; }
.tw4-root .tw4-score-col { text-align:center; flex-shrink:0; }
.tw4-root .tw4-score { font-size:28px; font-weight:700; color:#f5a623; }
.tw4-root .tw4-stars { display:flex; justify-content:center; color:#f5a623; }
.tw4-root .tw4-bar-row { display:flex; align-items:center; gap:8px; font-size:11px; }
.tw4-root .tw4-bar-row + .tw4-bar-row { margin-top:4px; }
.tw4-root .tw4-bar-track { flex:1; height:6px; background:#f3f4f9; border-radius:3px; overflow:hidden; }
.tw4-root .tw4-bar-track i { display:block; height:100%; background:#f5a623; border-radius:3px; }
.tw4-root .tw4-review-card { padding:14px 0; border-bottom:1px solid #f3f4f9; }
.tw4-root .tw4-review-card:last-child { border-bottom:0; }
.tw4-root .tw4-reply-box { background:#f7f8fc; border-radius:10px; padding:10px 12px; }
.tw4-root .tw4-reply-box b { font-size:11px; color:var(--tw4-primary); }
.tw4-root .tw4-textarea { display:block; width:100%; height:100px; min-height:100px; box-sizing:border-box; padding:13px 14px; font-size:15px; line-height:1.5; border:1.5px solid var(--tw4-line); border-radius:10px; background:#fff; color:var(--tw4-ink); }
.tw4-root .tw4-field { display:block; margin-bottom:16px; font-size:13px; }
.tw4-root .tw4-field .tw4-textarea { margin-top:8px; }
.tw4-root .tw4-upload { display:flex; flex-direction:column; align-items:center; gap:4px; width:100%; border:1.5px dashed var(--tw4-line); border-radius:14px; padding:18px; color:var(--tw4-muted); background:#f7f8fc; margin-top:8px; }
.tw4-root .tw4-sheet-foot,.tw4-root .tw4-actions { display:flex; gap:8px; }
.tw4-root .tw4-sheet-foot > button,.tw4-root .tw4-actions > button { flex:1; }
.tw4-root .tw4-reason { padding:10px; background:#f7f8fc; border-radius:10px; }
.tw4-root h2 { font-size:17px; font-weight:600; color:var(--tw4-ink); }
.tw4-root .tw4-timeline { margin-left:22px; }
.tw4-root .tw4-timeline-step { position:relative; padding-bottom:16px; }
.tw4-root .tw4-timeline-step::before { content:''; position:absolute; left:-22px; top:2px; width:11px; height:11px; background:#5b54ec; border-radius:50%; border:2.5px solid #fff; box-shadow:0 0 0 1px #ebecf3; }
.tw4-root .tw4-timeline-step::after { content:''; position:absolute; left:-17px; top:13px; bottom:0; width:2px; background:#ebecf3; }
.tw4-root .tw4-timeline-step.done::after { background:#16b896; }
.tw4-root .tw4-timeline-step.done::before { background:#16b896; box-shadow:0 0 0 1px #16b896; }
.tw4-root .tw4-timeline-step.active::before { box-shadow:0 0 0 1px #5b54ec; }
.tw4-root .tw4-timeline-step:last-child::after { display:none; }
.tw4-root .tw4-end-gap { height:8px; }
.tw4-root .tw4-provenance { margin-top:4px; }
.tw4-root .tw4-detail-boundary { display:block; padding:0; border:0; background:transparent; font-size:11px; color:var(--tw4-muted); margin-top:8px; text-align:left; }
.tw4-root .tw4-thread-row { display:block; width:100%; text-align:left; padding:14px; border:0; border-bottom:1px solid #f3f4f9; background:transparent; }

.tw4-root .tw4-nav.is-scrolled { box-shadow:0 3px 14px rgba(26,28,46,.07); transition:box-shadow .2s ease; }
.tw4-root .sheet-grab { margin:9px auto 4px; }
.tw4-root .sheet-head { padding:8px 18px 12px; }
.tw4-root .sheet-body { padding:4px 18px 16px; }
.tw4-root .sheet-foot { padding:12px 18px; padding-bottom:calc(12px + env(safe-area-inset-bottom,0px)); }
.tw4-root .tw4-sheet-close { width:32px; height:32px; flex:0 0 32px; padding:0; border:0; border-radius:10px; display:flex; align-items:center; justify-content:center; color:var(--tw4-muted); background:#f7f8fc; cursor:pointer; }
.tw4-root .tw4-sheet-foot { width:100%; }
.tw4-root .tw4-sheet-foot > .tw4-btn { flex:1 1 0; width:0; min-width:0; box-sizing:border-box; white-space:nowrap; padding:13px 12px; }
.tw4-root .tw4-sheet-foot > .tw4-ghost { border-color:var(--tw4-line); }
.tw4-root .tw4-sheet-foot { gap:10px; }

/* SPEC_DERIVED product supplements, subordinate to retained source row geometry. */
.tw4-root .tw4-product-kpi { padding:10px 12px; margin:0 0 12px; background:#f7f8fc; border-radius:10px; }
.tw4-root .tw4-product-filter { display:flex; flex-wrap:wrap; gap:6px; padding:10px 0; }
.tw4-root .tw4-filter { border:1px solid var(--tw4-line); border-radius:999px; padding:6px 10px; background:#fff; color:var(--tw4-muted); font-size:12px; }
.tw4-root .tw4-filter.active { color:var(--tw4-primary); background:#eef1ff; border-color:#d8d5fb; }
.tw4-root .tw4-binding-boundary { padding:12px; margin:12px 0; border:1px dashed var(--tw4-line); border-radius:10px; }
.tw4-root .tw4-binding-boundary button:disabled { opacity:.6; cursor:not-allowed; }

/* TSW6 roots are self-owned across source top/bottom extraction. */
.tsw-root { font-family:inherit; font-size:13px; line-height:1.5; color:#4a4d63; background:#fff; --tsw-line:#ebecf3; }
.tsw-root button,.tsw-root input,.tsw-root textarea { font-family:inherit; box-sizing:border-box; }
.tsw-root button { cursor:pointer; }
.tsw-root button:disabled { cursor:not-allowed; opacity:.5; }
.tsw-root h1,.tsw-root h2,.tsw-root p { margin:0; }
.tsw-root h2 { font-size:17px; font-weight:600; color:#1a1c2e; margin-bottom:10px; }
.tsw-root b { font-size:13px; color:#1a1c2e; }
.tsw-root small { display:block; font-size:11px; color:#8b8fa3; }
.tsw-root .tsw-pad { padding:16px; }
.tsw-root .tsw-mt3 { margin-top:12px; }
.tsw-root .tsw-mt4 { margin-top:16px; }
.tsw-root .tsw-mt5 { margin-top:20px; }
.tsw-root .tsw-flex { flex:1; min-width:0; }
.tsw-root .tsw-row,.tsw-root .tsw-between { display:flex; gap:12px; align-items:center; }
.tsw-root .tsw-between { justify-content:space-between; }
.tsw-root .tsw-actions { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
.tsw-root .tsw-nav { height:calc(50px + env(safe-area-inset-top,0px)); padding:env(safe-area-inset-top,0px) 8px 0; display:grid; grid-template-columns:36px minmax(0,1fr) 36px; align-items:center; gap:8px; box-sizing:border-box; border-bottom:1px solid #ebecf3; }
.tsw-root .tsw-nav h1 { text-align:center; font-size:17px; font-weight:600; color:#1a1c2e; }
.tsw-root .tsw-nav-right { width:36px; display:flex; justify-content:center; white-space:nowrap; }
.tsw-root.tsw-top { box-shadow:none; }
.tsw-root.tsw-top.tsw-scrolled { box-shadow:0 3px 14px rgba(26,28,46,.07); }
.tsw-root .tsw-back { display:flex; align-items:center; justify-content:center; width:36px; height:36px; padding:0; border:0; border-radius:12px; background:transparent; color:inherit; }
.tsw-root.tsw-dark { background:linear-gradient(135deg,#5b54ec,#7079f8); color:#fff; }
.tsw-root.tsw-dark .tsw-nav { border:0; }
.tsw-root.tsw-dark h1 { color:#fff; }
.tsw-root .tsw-bar { display:flex; gap:12px; padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px)); border-top:1px solid #ebecf3; background:#fff; }
.tsw-root.tsw-bar { display:flex; gap:12px; padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px)); border-top:1px solid #ebecf3; background:#fff; }
.tsw-root.tsw-bar > button { flex:1; }
.tsw-root .tsw-btn { display:inline-flex; align-items:center; justify-content:center; gap:6px; border:1.5px solid transparent; border-radius:999px; padding:13px 22px; background:#fff; color:#1a1c2e; font-size:15px; font-weight:600; }
.tsw-root .tsw-primary { background:linear-gradient(135deg,#5b54ec,#7079f8); color:#fff; }
.tsw-root .tsw-accent { background:linear-gradient(135deg,#ff7a3d,#f15f1f); color:#fff; }
.tsw-root .tsw-ghost { border-color:#ebecf3; }
.tsw-root .tsw-soft { background:#eef1ff; color:#4c3fd6; }
.tsw-root .tsw-sm { padding:8px 15px; font-size:13px; }
.tsw-root .tsw-block { width:100%; }
.tsw-root .tsw-card { padding:16px; border:1px solid #ebecf3; border-radius:18px; background:#fff; box-shadow:0 1px 3px #1a1c2e0d; }
.tsw-root .tsw-center { text-align:center; }
.tsw-root .tsw-center .tsw-btn { display:flex; margin-left:auto; margin-right:auto; }
.tsw-root .tsw-avatar { border-radius:50%; object-fit:cover; flex-shrink:0; border:3px solid #fff; }
.tsw-root .tsw-av-xl { width:92px; height:92px; box-shadow:0 2px 10px #1a1c2e0f; }
.tsw-root .tsw-av-lg { width:72px; height:72px; }
.tsw-root .tsw-av-sm { width:38px; height:38px; border:0; }
.tsw-root .tsw-field { display:block; margin:16px 0; }
.tsw-root .tsw-field > span { display:block; margin-bottom:8px; font-size:13px; font-weight:500; color:#1a1c2e; }
.tsw-root .tsw-input,.tsw-root .tsw-textarea { display:block; width:100%; border:1.5px solid #ebecf3; border-radius:10px; font-size:15px; background:#fff; color:#1a1c2e; }
.tsw-root .tsw-input { height:48px; padding:0 14px; }
.tsw-root .tsw-textarea { height:100px; min-height:100px; padding:13px 14px; line-height:1.5; }
.tsw-root .tsw-kv { display:flex; justify-content:space-between; gap:12px; padding:9px 0; border-bottom:1px solid #f3f4f9; }
.tsw-root .tsw-kv:last-child { border:0; }
.tsw-root .tsw-chip { display:inline-flex; align-items:center; gap:5px; padding:7px 13px; border:1.5px solid #ebecf3; border-radius:999px; background:#fff; color:#3d4159; font-size:13px; }
.tsw-root .tsw-chip.active,.tsw-root .tsw-slot.active { background:#5b54ec; color:#fff; border-color:#5b54ec; }
.tsw-root .tsw-slots { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
.tsw-root .tsw-slot { padding:9px 4px; text-align:center; border:1.5px solid #ebecf3; border-radius:10px; background:#fff; font-size:11px; }
.tsw-root .tsw-earn-hero { padding:16px; background:linear-gradient(135deg,#5b54ec,#7079f8); color:#fff; }
.tsw-root .tsw-earn-hero small { color:#ffffffb3; }
.tsw-root .tsw-money { display:flex; align-items:baseline; gap:2px; font-size:28px; line-height:1.25; font-weight:700; margin-top:4px; }
.tsw-root .tsw-currency { font-size:16px; }
.tsw-root .tsw-hero-stats { display:flex; gap:0; margin:12px 0 16px; }
.tsw-root .tsw-hero-stats > div { flex:1; }
.tsw-root .tsw-hero-stats b { color:#fff; font-size:16px; }
.tsw-root .tsw-v-divider { width:1px; margin-right:16px; background:#ffffff40; }
.tsw-root .tsw-earn-hero .tsw-actions { margin:12px 0 16px; }
.tsw-root .tsw-earn-hero .tsw-actions > div { flex:1; }
.tsw-root .tsw-chart { height:140px; display:flex; align-items:flex-end; gap:8px; padding:0 4px; }
.tsw-root .tsw-chart i { flex:1; background:linear-gradient(135deg,#5b54ec,#7079f8); border-radius:5px 5px 0 0; opacity:.85; }
.tsw-root .tsw-chart i.peak { opacity:1; }
.tsw-root .tsw-days { display:flex; justify-content:space-between; margin-top:8px; font-size:11px; color:#aeb1c4; }
.tsw-root .tsw-ledger { display:flex; align-items:center; gap:12px; width:100%; padding:13px 0; border:0; border-bottom:1px solid #f3f4f9; background:transparent; text-align:left; font-size:13px; }
.tsw-root .tsw-ledger:last-child { border:0; }
.tsw-root .tsw-asset { display:flex; align-items:center; justify-content:center; width:42px; height:42px; flex-shrink:0; font-size:9px; color:#8b8fa3; border-radius:14px; background:#f3f4f9; }
.tsw-root .tsw-bank { padding:16px; border-radius:18px; color:#fff; margin-bottom:12px; }
.tsw-root .tsw-bank.cmb { background:linear-gradient(135deg,#c0392b,#8e2418); }
.tsw-root .tsw-bank.ali { background:linear-gradient(135deg,#1296db,#0a78b8); }
.tsw-root .tsw-bank b,.tsw-root .tsw-bank h2,.tsw-root .tsw-bank small { color:#fff; }
.tsw-root .tsw-bank h2 { letter-spacing:.12em; margin-top:12px; }
.tsw-root .tsw-profile-hero { padding:6px 16px 18px; background:linear-gradient(165deg,#eef1ff,#f6f4ff 50%,#fff4ed); }
.tsw-root .tsw-preview-banner { display:flex; align-items:center; gap:8px; background:linear-gradient(135deg,#6a5cf0,#9b6df5 50%,#c66ff0); color:#fff; padding:9px 16px; }
.tsw-root .tsw-offering { display:flex; gap:12px; padding:12px 0; }
.tsw-root .tsw-offering img { width:88px; height:66px; flex-shrink:0; border-radius:10px; object-fit:cover; }
.tsw-root .tsw-review { padding:13px 0; border-bottom:1px solid #f3f4f9; }
.tsw-root .tsw-stepper { padding:8px 16px; padding-top:calc(8px + env(safe-area-inset-top,0px)); border-bottom:1px solid #ebecf3; }
.tsw-root .tsw-stepper-row { display:grid; grid-template-columns:36px minmax(0,1fr) 36px; align-items:center; height:36px; }
.tsw-root .tsw-stepper-row h1 { text-align:center; font-size:13px; font-weight:700; }
.tsw-root .tsw-profile-hero h2,.tsw-root .tsw-wizard-title { font-size:19px; font-weight:700; }
.tsw-root .tsw-bio { line-height:1.7; }
.tsw-root .tsw-primary-badge { background:#eef1ff; color:#5146cf; }
.tsw-root .tsw-segments { display:flex; gap:6px; margin-top:10px; }
.tsw-root .tsw-segments i { flex:1; height:4px; background:#ebecf3; border-radius:2px; }
.tsw-root .tsw-segments i.active { background:#5b54ec; }
.tsw-root .tsw-upload { display:flex; align-items:center; justify-content:center; flex-direction:column; gap:4px; width:100%; border:1.5px dashed #ebecf3; border-radius:14px; padding:20px; background:#f7f8fc; color:#8b8fa3; }
.tsw-root .tsw-types { display:flex; flex-direction:column; gap:8px; }
.tsw-root .tsw-type { display:flex; align-items:center; gap:11px; padding:13px; border:1.5px solid #ebecf3; border-radius:14px; background:#fff; text-align:left; }
.tsw-root .tsw-type.active { border-color:#5b54ec; background:#eef1ff; }
.tsw-root .tsw-ai { background:linear-gradient(135deg,#6a5cf0,#9b6df5 50%,#c66ff0); padding:16px; border-radius:18px; color:#fff; }
.tsw-root .tsw-ai-seg { padding:11px 0; border-bottom:1px solid #ffffff2e; }
.tsw-root .tsw-ai-seg b { color:#ffd9c4; font-size:11px; }
.tsw-root .tsw-ai-seg:last-child { border-bottom:none; }
.tsw-root .tsw-renew { background:linear-gradient(135deg,#5b54ec,#7079f8); padding:16px; border-radius:18px; color:#fff; }
.tsw-root .tsw-renew b { color:#fff; }
.tsw-root .tsw-demo { margin:8px 0; }
.tsw-root .tsw-fields { border:0; padding:0; margin:0; min-width:0; }
.tsw-root .tsw-fields:disabled { opacity:.7; }
.tsw-root .tsw-badge { display:inline-flex; align-items:center; border-radius:6px; padding:3px 6px; font-size:11px; background:#eef1ff; color:#5146cf; }
.tsw-root .tsw-success { color:#229b68; background:#e8f8ef; }
.tsw-root .tsw-warning { color:#ad720d; background:#fff3dc; }
.tsw-root .tsw-white-badge { color:#fff; background:#ffffff38; }
.tsw-root .tsw-tile { width:42px; height:42px; border-radius:14px; display:inline-flex; justify-content:center; align-items:center; flex:0 0 42px; background:#eef1ff; }
.tsw-root .tsw-tone-success,.tsw-root .tsw-tone-done { background:#e8f8ef; color:#229b68; }
.tsw-root .tsw-tone-mute { background:#f3f4f9; color:#8b8fa3; }
.tsw-root .tsw-tone-info,.tsw-root .tsw-tone-wait { background:#eef1ff; color:#5146cf; }
.tsw-root b.tsw-positive { color:#229b68; }
.tsw-root b.tsw-negative { color:#8b8fa3; }
.tsw-root .tsw-input-row { display:flex; align-items:center; flex-wrap:nowrap; gap:8px; }
.tsw-root .tsw-input-row > .tsw-input,.tsw-root .tsw-input-row > .tsw-field { flex:1; min-width:0; }
.tsw-root .tsw-input-row > button,.tsw-root .tsw-input-row > span { flex-shrink:0; white-space:nowrap; }
.tsw-root .tsw-account { width:100%; text-align:left; padding:12px; }
.tsw-root .tsw-notice { display:flex; gap:8px; padding:12px; margin:12px 0; border-radius:10px; background:#eef1ff; color:#5146cf; align-items:flex-start; }
.tsw-root .tsw-notice > svg { flex-shrink:0; }
.tsw-root .tsw-notice-ai { background:#f4edff; color:#8254b5; }
.tsw-root .tsw-select-row,.tsw-root .tsw-search { display:flex; align-items:center; gap:8px; }
.tsw-root .tsw-select-row select { flex:1; min-width:0; appearance:none; }
.tsw-root .tsw-switch { border:0; width:42px; height:24px; border-radius:999px; background:#d6d9e5; padding:3px; flex:0 0 42px; }
.tsw-root .tsw-switch span { display:block; width:18px; height:18px; border-radius:50%; background:#fff; transition:transform .15s; }
.tsw-root .tsw-switch.active { background:#5b54ec; }
.tsw-root .tsw-switch.active span { transform:translateX(18px); }
.tsw-root .tsw-divider { height:1px; background:#ebecf3; margin:12px 0; }
.tsw-root .tsw-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); padding:12px; }
.tsw-root .tsw-stats > div { text-align:center; padding:0 4px; }
.tsw-root .tsw-stats > div + div { border-left:1px solid #ebecf3; }
.tsw-root .tsw-link { border:0; background:none; color:inherit; padding:0; font-size:13px; }
.tsw-root .tsw-preview-banner .tsw-link { text-decoration:underline; color:#fff; font-weight:600; }
.tsw-root .tsw-skill { background:#eef1ff; color:#5146cf; border-color:transparent; }
.tsw-root .tsw-offering { padding:12px; margin-top:12px; }
.tsw-root .tsw-price { display:flex; gap:2px; align-items:baseline; color:#f15f1f; }
.tsw-root .tsw-price strong { font-size:20px; }
.tsw-root .tsw-review:last-child { border-bottom:0; }
.tsw-root .tsw-segments i.done { background:#b9b4fa; }
.tsw-root .tsw-description { color:#8b8fa3; margin:4px 0 16px; }
.tsw-root .tsw-eyebrow { color:#5146cf; }
.tsw-root .tsw-type-check { width:16px; flex:0 0 16px; }
.tsw-root .tsw-checkbox { display:flex; gap:10px; align-items:flex-start; width:100%; border:0; background:transparent; text-align:left; padding:0; color:#4a4d63; }
.tsw-root .tsw-checkbox-box { width:18px; height:18px; flex:0 0 18px; border:1px solid #d6d9e5; border-radius:4px; }
.tsw-root .tsw-checkbox[aria-checked="true"] .tsw-checkbox-box { background:#5b54ec; color:#fff; border-color:#5b54ec; }
.tsw-root .tsw-split { display:block; }
.tsw-root .tsw-summary,.tsw-root .tsw-content { min-width:0; }
@media (min-width:1024px) {
  .tsw-root .tsw-split { display:grid; grid-template-columns:minmax(280px,360px) minmax(0,1fr); align-items:start; gap:24px; padding:24px; }
  .tsw-root .tsw-summary { position:sticky; top:16px; }
  .tsw-root .tsw-summary .tsw-earn-hero { border-radius:18px; }
  .tsw-root .tsw-summary .tsw-profile-hero { border-radius:18px; }
  .tsw-root .tsw-content { padding:0; }
}
