.toantin-tool-3d { height:100dvh; min-height:100vh; display:flex; flex-direction:column; overflow:hidden; background:var(--tt-bg); color:var(--tt-text); font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif; }
.toantin-tool-3d .min-w-0 { min-width:0; }
.toantin-tool-3d .tt-header { flex:0 0 var(--tt-header-height); height:var(--tt-header-height); z-index:1020; background:rgba(255,255,255,.97); border-bottom:1px solid var(--tt-border); box-shadow:0 2px 12px rgba(24,72,120,.055); backdrop-filter:saturate(140%) blur(10px); }
.toantin-tool-3d .tt-header-row { display:grid; grid-template-columns:minmax(220px,1fr) auto minmax(300px,1fr); align-items:center; gap:1rem; }
.toantin-tool-3d .tt-brand-copy { display:flex; align-items:center; gap:.65rem; }
.toantin-tool-3d .tt-brand-logo { width:70px; height:46px; flex:0 0 70px; object-fit:contain; border-radius:8px; filter:drop-shadow(0 3px 7px rgba(23,105,211,.10)); }
.toantin-tool-3d .tt-brand-copy strong { font-size:.96rem; letter-spacing:-.01em; }
.toantin-tool-3d .tt-brand-copy small { font-size:.73rem; }
.toantin-tool-3d .tt-current-model { min-width:190px; flex-direction:column; align-items:center; line-height:1.15; }
.toantin-tool-3d .tt-current-model-label { color:var(--tt-muted); font-size:.68rem; text-transform:uppercase; letter-spacing:.06em; }
.toantin-tool-3d .tt-current-model strong { margin-top:.18rem; font-size:.9rem; }
.toantin-tool-3d .tt-header-actions { display:flex; align-items:center; justify-content:flex-end; gap:.45rem; min-width:0; }
.toantin-tool-3d .tt-header-actions .btn { min-height:38px; border-radius:8px; font-weight:600; white-space:nowrap; }
.toantin-tool-3d .tt-square-action { width:40px; min-width:40px; padding-left:0; padding-right:0; }

.toantin-tool-3d .tt-app-main { flex:1 1 auto; min-height:0; overflow:hidden; }
.toantin-tool-3d .tt-shell-grid { height:100%; min-height:0; display:grid; grid-template-columns:minmax(0,1fr); gap:.7rem; }
.toantin-tool-3d .tt-stage-col { min-width:0; min-height:0; }
.toantin-tool-3d .tt-side-panel { background:var(--tt-surface); border:1px solid var(--tt-border); border-radius:var(--tt-radius); overflow:hidden; }
.toantin-tool-3d .tt-panel-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:.65rem; padding:.85rem .9rem .75rem; border-bottom:1px solid var(--tt-border); background:linear-gradient(180deg,#fff,#fbfdff); }
.toantin-tool-3d .tt-eyebrow { display:block; margin-bottom:.18rem; color:var(--tt-primary); font-size:.65rem; font-weight:800; letter-spacing:.08em; }
.toantin-tool-3d .tt-version-chip { display:inline-flex; align-items:center; min-height:24px; padding:.15rem .45rem; border:1px solid var(--tt-border); border-radius:999px; color:var(--tt-muted); background:#fff; font-size:.7rem; font-weight:700; }

/* Thư viện compact, scale tốt khi tăng số model. */
.toantin-tool-3d .tt-library-panel .tt-side-panel { display:flex; flex-direction:column; }
.toantin-tool-3d .tt-model-list { display:grid; gap:.42rem; padding:.65rem; overflow-y:auto; min-height:0; scrollbar-width:thin; }
.toantin-tool-3d .tt-model-card { width:100%; min-height:64px; display:grid; grid-template-columns:66px minmax(0,1fr) 20px; align-items:center; gap:.6rem; padding:.36rem .45rem; text-align:left; border:1px solid transparent; border-radius:9px; background:var(--tt-surface-soft); color:var(--tt-text); transition:border-color .14s ease,background .14s ease,box-shadow .14s ease,transform .14s ease; }
.toantin-tool-3d .tt-model-card:hover { border-color:color-mix(in srgb,var(--tt-primary) 38%,var(--tt-border)); background:var(--tt-primary-softer); transform:translateY(-1px); }
.toantin-tool-3d .tt-model-card.active { border-color:var(--tt-primary); background:var(--tt-primary-soft); box-shadow:0 0 0 2px rgba(23,105,211,.08); }
.toantin-tool-3d .tt-model-card img { width:66px; height:48px; object-fit:cover; border-radius:7px; border:1px solid var(--tt-border); background:#fff; }
.toantin-tool-3d .tt-model-card strong,.toantin-tool-3d .tt-model-card small { display:block; }
.toantin-tool-3d .tt-model-card strong { font-size:.84rem; line-height:1.18; }
.toantin-tool-3d .tt-model-card small { margin-top:.12rem; color:var(--tt-muted); font-size:.7rem; line-height:1.1; }
.toantin-tool-3d .tt-model-card .tt-model-category { display:none; }
.toantin-tool-3d .tt-model-check { color:var(--tt-primary); font-weight:900; opacity:0; }
.toantin-tool-3d .tt-model-card.active .tt-model-check { opacity:1; }
.toantin-tool-3d .tt-empty-state { margin:.7rem; padding:1rem; border:1px dashed var(--tt-border-strong); border-radius:8px; text-align:center; color:var(--tt-muted); background:#fbfdff; }
.toantin-tool-3d .tt-empty-state strong,.toantin-tool-3d .tt-empty-state span { display:block; }

/* Workspace: Canvas-first, chiếm toàn bộ chiều cao còn lại. */
.toantin-tool-3d .tt-workspace-shell { height:100%; min-height:0; display:flex; flex-direction:column; overflow:hidden; border:1px solid var(--tt-border); border-radius:var(--tt-radius); background:var(--tt-surface); box-shadow:var(--tt-shadow); }
.toantin-tool-3d .tt-workspace-toolbar { flex:0 0 auto; min-height:52px; display:flex; align-items:center; gap:.45rem; padding:.42rem .55rem; border-bottom:1px solid var(--tt-border); background:linear-gradient(180deg,#fff,#fbfdff); overflow-x:auto; scrollbar-width:thin; }
.toantin-tool-3d .tt-toolbar-zone { display:flex; align-items:center; gap:.35rem; flex:0 0 auto; }
.toantin-tool-3d .tt-toolbar-divider { width:1px; height:27px; flex:0 0 1px; background:var(--tt-border); margin:0 .1rem; }
.toantin-tool-3d .tt-tool-btn,.toantin-tool-3d .tt-mode-btn { min-height:36px; border-radius:8px; font-weight:650; white-space:nowrap; }
.toantin-tool-3d .tt-mode-btn { border:1px solid var(--tt-border-strong); background:#fff; color:var(--tt-text); }
.toantin-tool-3d .tt-mode-btn[aria-pressed="true"] { border-color:var(--tt-primary); background:var(--tt-primary); color:#fff; box-shadow:0 0 0 2px rgba(23,105,211,.10); }
.toantin-tool-3d .core-host { position:relative; flex:1 1 auto; min-height:260px; overflow:hidden; isolation:isolate; background:radial-gradient(circle at 50% 38%,#fff 0,#f6faff 48%,#eaf3ff 100%); }
.toantin-tool-3d .core-host::before,.toantin-tool-3d .core-host::after { content:""; position:absolute; border-radius:50%; pointer-events:none; z-index:0; }
.toantin-tool-3d .core-host::before { width:360px; height:360px; left:-190px; bottom:-235px; background:rgba(23,105,211,.045); }
.toantin-tool-3d .core-host::after { width:280px; height:280px; right:-150px; top:-175px; background:rgba(24,160,168,.045); }
.toantin-tool-3d .tt-canvas-hint { position:absolute; left:50%; bottom:.55rem; transform:translateX(-50%); z-index:4; display:flex; gap:.35rem; flex-wrap:wrap; justify-content:center; width:min(94%,760px); pointer-events:none; }
.toantin-tool-3d .tt-canvas-hint span { padding:.25rem .48rem; border:1px solid rgba(220,229,240,.9); border-radius:999px; background:rgba(255,255,255,.88); color:var(--tt-muted); font-size:.68rem; box-shadow:0 2px 9px rgba(24,72,120,.05); backdrop-filter:blur(4px); }
.toantin-tool-3d .tt-hint-select { display:none; }
.toantin-tool-3d[data-interaction-mode="select"] .tt-hint-orbit { display:none; }
.toantin-tool-3d[data-interaction-mode="select"] .tt-hint-select { display:flex; }

/* Runtime DOM thuộc 3D Core đã tách sang css/core.css để arbitrary mount không phụ thuộc Standalone Shell. */
.toantin-tool-3d .tt-stage-footer { flex:0 0 auto; border-top:1px solid var(--tt-border); background:#fff; }
.toantin-tool-3d .tt-stage-status-row { min-height:34px; display:flex; align-items:center; gap:.55rem; padding:.28rem .55rem; }
.toantin-tool-3d .tt-runtime-pill { display:inline-flex; align-items:center; gap:.38rem; padding:.24rem .45rem; border:1px solid var(--tt-border); border-radius:999px; background:#fff; font-size:.7rem; color:var(--tt-muted); white-space:nowrap; }
.toantin-tool-3d .tt-runtime-dot { width:.43rem; height:.43rem; border-radius:50%; background:var(--tt-warning); box-shadow:0 0 0 2px rgba(240,173,78,.13); }
.toantin-tool-3d[data-ui-state="ready"] .tt-runtime-dot { background:var(--tt-success); box-shadow:0 0 0 2px rgba(25,135,84,.11); }
.toantin-tool-3d[data-ui-state="error"] .tt-runtime-dot { background:var(--tt-danger); box-shadow:0 0 0 2px rgba(220,53,69,.11); }
.toantin-tool-3d .tt-status-text { min-width:0; flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--tt-muted); font-size:.75rem; }
.toantin-tool-3d .tt-size-readout { color:var(--tt-muted); font-size:.7rem; white-space:nowrap; }
.toantin-tool-3d .tt-core-diagnostics { border-top:1px solid var(--tt-border); }
.toantin-tool-3d .tt-diagnostics-toggle { min-height:30px; padding:.32rem .55rem; color:var(--tt-muted); background:#fbfdff; box-shadow:none; font-size:.72rem; }
.toantin-tool-3d .tt-diagnostics-toggle:not(.collapsed) { color:var(--tt-primary); background:var(--tt-primary-soft); }

/* Inspector thống nhất */
.toantin-tool-3d .tt-inspector-shell { overflow-y:auto; scrollbar-width:thin; }
.toantin-tool-3d .tt-inspector-heading { position:sticky; top:0; z-index:2; }
.toantin-tool-3d .tt-inspector-section { padding:.78rem .85rem; border-bottom:1px solid var(--tt-border); }
.toantin-tool-3d .tt-section-title-row { display:flex; align-items:center; justify-content:space-between; gap:.5rem; margin-bottom:.55rem; }
.toantin-tool-3d .tt-section-title { margin:0; font-size:.83rem; font-weight:750; }
.toantin-tool-3d .tt-shape-summary { display:grid; gap:.38rem; }
.toantin-tool-3d .tt-shape-title { padding:.55rem .6rem; border-radius:8px; background:var(--tt-primary-soft); }
.toantin-tool-3d .tt-shape-title strong { display:block; font-size:.9rem; }
.toantin-tool-3d .tt-shape-title span { display:block; margin-top:.1rem; color:var(--tt-muted); font-size:.7rem; }
.toantin-tool-3d .tt-semantic-row { display:grid; grid-template-columns:72px minmax(0,1fr); gap:.5rem; align-items:start; padding:.38rem .1rem; border-bottom:1px dashed var(--tt-border); font-size:.75rem; }
.toantin-tool-3d .tt-semantic-row:last-child { border-bottom:0; }
.toantin-tool-3d .tt-semantic-row strong { font-weight:700; }
.toantin-tool-3d .tt-semantic-row span { min-width:0; overflow-wrap:anywhere; color:var(--tt-muted); line-height:1.4; }
.toantin-tool-3d .tt-inspector-accordion .accordion-item { border:0; border-bottom:1px solid var(--tt-border); border-radius:0; }
.toantin-tool-3d .tt-inspector-accordion .accordion-button { min-height:42px; padding:.65rem .85rem; color:var(--tt-text); background:#fff; box-shadow:none; font-size:.82rem; font-weight:750; }
.toantin-tool-3d .tt-inspector-accordion .accordion-button:not(.collapsed) { color:var(--tt-primary); background:var(--tt-primary-softer); }
.toantin-tool-3d .tt-inspector-accordion .accordion-body { padding:.72rem .85rem .85rem; }
.toantin-tool-3d .tt-toggle-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.4rem; }
.toantin-tool-3d .tt-toggle-btn { min-height:40px; font-size:.78rem; }
.toantin-tool-3d [aria-pressed="true"] { font-weight:750; }
.toantin-tool-3d .tt-selection-summary { border:1px solid var(--tt-border); background:var(--tt-primary-soft); color:var(--tt-text); border-radius:8px; padding:.58rem .65rem; font-size:.82rem; font-weight:650; }
.toantin-tool-3d .tt-selection-help { margin:.55rem 0 .65rem; line-height:1.42; }
.toantin-tool-3d [data-role="aux-controls"][hidden] { display:none !important; }

.toantin-tool-3d .tt-badge { background:var(--tt-primary-soft); color:var(--tt-primary); border:1px solid color-mix(in srgb,var(--tt-primary) 24%,transparent); font-weight:700; }
.toantin-tool-3d :focus-visible { outline:3px solid rgba(23,105,211,.32); outline-offset:2px; }
.toantin-tool-3d .tt-status-toast { border:1px solid var(--tt-border); box-shadow:var(--tt-shadow); }
.toantin-tool-3d .tt-help-modal { border-radius:12px; overflow:hidden; }
.toantin-tool-3d .three-workspace:fullscreen { width:100vw; height:100vh; border:0; border-radius:0; background:var(--tt-surface); }

@media (prefers-reduced-motion: reduce) {
  .toantin-tool-3d *, .toantin-tool-3d *::before, .toantin-tool-3d *::after { scroll-behavior:auto !important; transition:none !important; animation:none !important; }
}
/* Standalone loading overlay — thuộc Shell, không thuộc 3D Core runtime. */
.toantin-tool-3d .tt-loading-overlay { position:absolute; inset:0; z-index:8; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.65rem; padding:2rem; text-align:center; background:linear-gradient(180deg,rgba(249,252,255,.96),rgba(237,245,255,.96)); color:var(--tt-text); }
.toantin-tool-3d .tt-loading-overlay[hidden] { display:none !important; }
.toantin-tool-3d .tt-loading-overlay span { color:var(--tt-muted); font-size:.9rem; }

/* v1.1 R3 — Teaching UX / Fullscreen / Formula / Annotation */
.toantin-tool-3d .tt-icon { width:1rem; height:1rem; flex:0 0 1rem; display:inline-block; vertical-align:-.15em; object-fit:contain; }
.toantin-tool-3d .tt-mode-btn,.toantin-tool-3d .tt-tool-btn { display:inline-flex; align-items:center; justify-content:center; gap:.32rem; }
.toantin-tool-3d .tt-hint-draw { display:none; }
.toantin-tool-3d[data-interaction-mode="draw"] .tt-hint-orbit,
.toantin-tool-3d[data-interaction-mode="draw"] .tt-hint-select { display:none; }
.toantin-tool-3d[data-interaction-mode="draw"] .tt-hint-draw { display:flex; }
.toantin-tool-3d .tt-section-chip { display:inline-flex; align-items:center; justify-content:center; min-width:28px; min-height:24px; padding:0 .4rem; border-radius:999px; background:var(--tt-primary-soft); color:var(--tt-primary); font-size:.72rem; font-weight:800; }
.toantin-tool-3d .tt-formula-list { display:grid; gap:.45rem; }
.toantin-tool-3d .tt-formula-item { display:grid; gap:.1rem; padding:.5rem .58rem; border:1px solid var(--tt-border); border-radius:8px; background:#fbfdff; }
.toantin-tool-3d .tt-formula-label { color:var(--tt-muted); font-size:.69rem; font-weight:700; }
.toantin-tool-3d .tt-formula-expression { color:var(--tt-text); font-size:.95rem; letter-spacing:.01em; }
.toantin-tool-3d .tt-formula-note { color:var(--tt-muted); line-height:1.35; }
.toantin-tool-3d .tt-formula-variables { display:grid; gap:.26rem; margin-top:.62rem; padding-top:.52rem; border-top:1px dashed var(--tt-border); font-size:.73rem; }
.toantin-tool-3d .tt-formula-variables > div { display:grid; grid-template-columns:64px minmax(0,1fr); gap:.45rem; }
.toantin-tool-3d .tt-formula-symbol { font-weight:800; color:var(--tt-primary); }
.toantin-tool-3d .tt-formula-global-note { margin-top:.55rem !important; line-height:1.4; }

.toantin-tool-3d .tt-fullscreen-teaching-toolbar,
.toantin-tool-3d .tt-fullscreen-formula { display:none; }
.toantin-tool-3d .three-workspace:fullscreen .tt-workspace-toolbar,
.toantin-tool-3d .three-workspace:fullscreen .tt-stage-footer { display:none; }
.toantin-tool-3d .three-workspace:fullscreen .core-host { min-height:100vh; }
.toantin-tool-3d .three-workspace:fullscreen .tt-fullscreen-teaching-toolbar { display:flex; }
.toantin-tool-3d .three-workspace:fullscreen .tt-fullscreen-formula:not([hidden]) { display:block; }
.toantin-tool-3d .tt-fullscreen-teaching-toolbar {
  position:absolute;
  top:.7rem;
  left:.7rem;
  right:.7rem;
  z-index:12;
  align-items:center;
  gap:.36rem;
  padding:.42rem;
  border:1px solid rgba(205,218,235,.96);
  border-radius:12px;
  background:rgba(255,255,255,.94);
  box-shadow:0 8px 28px rgba(20,54,92,.16);
  backdrop-filter:blur(8px);
  overflow-x:auto;
  scrollbar-width:thin;
}
.toantin-tool-3d .tt-fs-group { display:flex; align-items:center; gap:.28rem; }
.toantin-tool-3d .tt-fs-divider { width:1px; height:30px; flex:0 0 1px; margin:0 .08rem; background:var(--tt-border); }
.toantin-tool-3d .tt-fs-btn { min-width:42px; min-height:42px; display:inline-flex; align-items:center; justify-content:center; gap:.3rem; border:1px solid var(--tt-border-strong); border-radius:9px; background:#fff; color:var(--tt-text); font-weight:700; white-space:nowrap; }
.toantin-tool-3d .tt-fs-btn:hover { border-color:var(--tt-primary); background:var(--tt-primary-softer); }
.toantin-tool-3d .tt-fs-text-btn { padding-left:.62rem; padding-right:.62rem; }
.toantin-tool-3d .tt-fs-field { flex:0 0 auto; margin:0; }
.toantin-tool-3d .tt-fs-field .form-select { min-height:42px; min-width:112px; border-radius:9px; font-size:.76rem; }
.toantin-tool-3d .tt-pen-field .form-select { min-width:92px; }
.toantin-tool-3d .tt-annotation-count { white-space:nowrap; color:var(--tt-muted); font-size:.72rem; padding:0 .18rem; }
.toantin-tool-3d .tt-fullscreen-formula { position:absolute; z-index:11; top:4.45rem; right:.8rem; width:min(360px,calc(100% - 1.6rem)); max-height:calc(100% - 5.4rem); overflow:auto; border:1px solid var(--tt-border); border-radius:12px; background:rgba(255,255,255,.97); box-shadow:0 12px 36px rgba(20,54,92,.18); backdrop-filter:blur(8px); }
.toantin-tool-3d .tt-fullscreen-formula-header { position:sticky; top:0; display:flex; align-items:center; justify-content:space-between; gap:.5rem; padding:.62rem .72rem; border-bottom:1px solid var(--tt-border); background:#fff; z-index:1; }
.toantin-tool-3d .tt-fullscreen-formula-body { padding:.7rem; }
.toantin-tool-3d .tt-fullscreen-formula .tt-formula-item { background:#fff; }
.toantin-tool-3d .tt-mode-btn[aria-pressed="true"] .tt-icon { filter:brightness(0) invert(1); }


/* v2 R4.1 — Owner hotfix: readability / compact toolbar / inspector accordions */
.toantin-tool-3d {
  font-size: 17px;
}
.toantin-tool-3d .tt-workspace-toolbar {
  min-height: 56px;
}
.toantin-tool-3d .tt-tool-btn,
.toantin-tool-3d .tt-mode-btn {
  min-height: 40px;
  font-size: .88rem;
}
.toantin-tool-3d .tt-inspector-heading .h6 {
  font-size: 1.02rem;
}
.toantin-tool-3d .tt-inspector-accordion .accordion-button {
  min-height: 46px;
  font-size: .94rem;
  line-height: 1.25;
}
.toantin-tool-3d .tt-inspector-accordion .accordion-body {
  font-size: .88rem;
}
.toantin-tool-3d .tt-shape-title strong {
  font-size: 1rem;
}
.toantin-tool-3d .tt-shape-title span {
  font-size: .8rem;
}
.toantin-tool-3d .tt-semantic-row {
  grid-template-columns: 82px minmax(0,1fr);
  font-size: .86rem;
}
.toantin-tool-3d .tt-toggle-btn {
  min-height: 42px;
  font-size: .86rem;
}
.toantin-tool-3d .tt-selection-summary {
  font-size: .9rem;
}
.toantin-tool-3d .tt-selection-help,
.toantin-tool-3d .tt-inspector-accordion .form-label,
.toantin-tool-3d .tt-inspector-accordion .form-select,
.toantin-tool-3d .tt-inspector-accordion .btn {
  font-size: .86rem;
}

/* Công thức trong Inspector: tăng mạnh để đọc tốt khi dạy học. */
.toantin-tool-3d .tt-formula-section .tt-formula-list {
  gap: .65rem;
}
.toantin-tool-3d .tt-formula-section .tt-formula-item {
  gap: .18rem;
  padding: .68rem .72rem;
}
.toantin-tool-3d .tt-formula-section .tt-formula-label {
  font-size: .84rem;
}
.toantin-tool-3d .tt-formula-section .tt-formula-expression {
  font-size: clamp(1.32rem, 1.45vw, 1.55rem);
  line-height: 1.2;
}
.toantin-tool-3d .tt-formula-section .tt-formula-note {
  font-size: .82rem;
}
.toantin-tool-3d .tt-formula-section .tt-formula-variables {
  font-size: .86rem;
  gap: .38rem;
}
.toantin-tool-3d .tt-formula-section .tt-formula-global-note {
  font-size: .82rem;
}

/* Công thức khi trình chiếu: gần gấp đôi cỡ cũ, ưu tiên nhìn từ xa. */
.toantin-tool-3d .tt-fullscreen-formula {
  width: min(430px, calc(100% - 1.6rem));
}
.toantin-tool-3d .tt-fullscreen-formula-header {
  padding: .78rem .9rem;
  font-size: 1.08rem;
}
.toantin-tool-3d .tt-fullscreen-formula-body {
  padding: .86rem;
}
.toantin-tool-3d .tt-fullscreen-formula .tt-formula-list {
  gap: .72rem;
}
.toantin-tool-3d .tt-fullscreen-formula .tt-formula-item {
  gap: .2rem;
  padding: .72rem .78rem;
}
.toantin-tool-3d .tt-fullscreen-formula .tt-formula-label {
  font-size: .95rem;
}
.toantin-tool-3d .tt-fullscreen-formula .tt-formula-expression {
  font-size: clamp(1.7rem, 2.15vw, 2.08rem);
  line-height: 1.16;
}
.toantin-tool-3d .tt-fullscreen-formula .tt-formula-note {
  font-size: .95rem;
}
.toantin-tool-3d .tt-fullscreen-formula .tt-formula-variables {
  font-size: 1rem;
  gap: .42rem;
}
.toantin-tool-3d .tt-fullscreen-formula .tt-formula-global-note {
  font-size: .94rem;
}
.toantin-tool-3d .tt-inspector-accordion .accordion-button .tt-section-chip {
  margin-left: auto;
}

@media (max-width:1199.98px) {
  .toantin-tool-3d { font-size: 16.5px; }
}
@media (max-width:991.98px) {
  .toantin-tool-3d .tt-tool-btn,
  .toantin-tool-3d .tt-mode-btn { min-width: 44px; }
  .toantin-tool-3d .tt-fullscreen-formula .tt-formula-expression {
    font-size: clamp(1.55rem, 4.5vw, 1.9rem);
  }
}
@media (max-width:575.98px) {
  .toantin-tool-3d { font-size: 16px; }
  .toantin-tool-3d .tt-inspector-accordion .accordion-button { font-size: .92rem; }
  .toantin-tool-3d .tt-formula-section .tt-formula-expression { font-size: 1.28rem; }
  .toantin-tool-3d .tt-fullscreen-formula .tt-formula-expression { font-size: 1.52rem; }
}

/* v3 — highlight nhiều màu + công thức kéo/resize trong trình chiếu */
.toantin-tool-3d .tt-highlight-palette[hidden] { display:none !important; }
.toantin-tool-3d .tt-highlight-palette {
  border:1px solid var(--tt-border-strong);
  border-radius:12px;
  background:rgba(255,255,255,.98);
  box-shadow:0 12px 32px rgba(20,54,92,.18);
  padding:.6rem;
  color:var(--tt-text);
}
.toantin-tool-3d .tt-highlight-palette-title {
  display:block;
  margin-bottom:.45rem;
  font-size:.8rem;
  font-weight:800;
}
.toantin-tool-3d .tt-highlight-palette-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:.38rem;
}
.toantin-tool-3d .tt-highlight-color-btn {
  display:flex;
  align-items:center;
  gap:.45rem;
  min-height:40px;
  padding:.38rem .48rem;
  border:1px solid var(--tt-border);
  border-radius:9px;
  background:#fff;
  color:var(--tt-text);
  font-size:.82rem;
  font-weight:700;
  text-align:left;
}
.toantin-tool-3d .tt-highlight-color-btn:hover,
.toantin-tool-3d .tt-highlight-color-btn:focus-visible {
  border-color:var(--tt-primary);
  background:var(--tt-primary-softer);
  outline:none;
}
.toantin-tool-3d .tt-highlight-swatch {
  width:20px;
  height:20px;
  flex:0 0 20px;
  border:2px solid rgba(23,50,77,.28);
  border-radius:50%;
  box-shadow:0 0 0 1px rgba(255,255,255,.9) inset;
}
.toantin-tool-3d .tt-highlight-palette-inspector {
  position:relative;
  width:100%;
  margin-top:-.1rem;
}
.toantin-tool-3d .tt-highlight-palette-fullscreen {
  display:none;
  position:absolute;
  z-index:20;
  top:4.55rem;
  left:.8rem;
  width:min(320px,calc(100% - 1.6rem));
}
.toantin-tool-3d .three-workspace:fullscreen .tt-highlight-palette-fullscreen:not([hidden]) { display:block; }

.toantin-tool-3d .tt-fullscreen-formula {
  --tt-formula-scale:1;
  min-width:280px;
  min-height:220px;
  box-sizing:border-box;
  overflow:hidden;
}
.toantin-tool-3d .three-workspace:fullscreen .tt-fullscreen-formula:not([hidden]) {
  display:flex;
  flex-direction:column;
}
.toantin-tool-3d .tt-fullscreen-formula-header {
  flex:0 0 auto;
  cursor:move;
  touch-action:none;
  user-select:none;
}
.toantin-tool-3d .tt-fullscreen-formula-header strong {
  font-size:calc(1.08rem * var(--tt-formula-scale));
}
.toantin-tool-3d .tt-fullscreen-formula-body {
  flex:1 1 auto;
  min-height:0;
  overflow:auto;
}
.toantin-tool-3d .tt-fullscreen-formula .tt-formula-label {
  font-size:calc(.95rem * var(--tt-formula-scale));
}
.toantin-tool-3d .tt-fullscreen-formula .tt-formula-expression {
  font-size:calc(1.9rem * var(--tt-formula-scale));
}
.toantin-tool-3d .tt-fullscreen-formula .tt-formula-note {
  font-size:calc(.95rem * var(--tt-formula-scale));
}
.toantin-tool-3d .tt-fullscreen-formula .tt-formula-variables {
  font-size:calc(1rem * var(--tt-formula-scale));
}
.toantin-tool-3d .tt-fullscreen-formula .tt-formula-global-note {
  font-size:calc(.94rem * var(--tt-formula-scale));
}
.toantin-tool-3d .tt-formula-resize-handle {
  position:absolute;
  z-index:4;
  display:block;
  touch-action:none;
}
.toantin-tool-3d .tt-formula-resize-n,
.toantin-tool-3d .tt-formula-resize-s { left:12px; right:12px; height:10px; cursor:ns-resize; }
.toantin-tool-3d .tt-formula-resize-n { top:-4px; }
.toantin-tool-3d .tt-formula-resize-s { bottom:-4px; }
.toantin-tool-3d .tt-formula-resize-e,
.toantin-tool-3d .tt-formula-resize-w { top:12px; bottom:12px; width:10px; cursor:ew-resize; }
.toantin-tool-3d .tt-formula-resize-e { right:-4px; }
.toantin-tool-3d .tt-formula-resize-w { left:-4px; }
.toantin-tool-3d .tt-formula-resize-ne,
.toantin-tool-3d .tt-formula-resize-se,
.toantin-tool-3d .tt-formula-resize-sw,
.toantin-tool-3d .tt-formula-resize-nw { width:18px; height:18px; }
.toantin-tool-3d .tt-formula-resize-ne { top:-5px; right:-5px; cursor:nesw-resize; }
.toantin-tool-3d .tt-formula-resize-se { right:-5px; bottom:-5px; cursor:nwse-resize; }
.toantin-tool-3d .tt-formula-resize-sw { left:-5px; bottom:-5px; cursor:nesw-resize; }
.toantin-tool-3d .tt-formula-resize-nw { top:-5px; left:-5px; cursor:nwse-resize; }
.toantin-tool-3d .tt-fullscreen-formula[data-formula-interacting="true"] { user-select:none; }

@media (max-width:575.98px) {
  .toantin-tool-3d .tt-highlight-palette-fullscreen { top:4.3rem; left:.55rem; width:min(300px,calc(100% - 1.1rem)); }
  .toantin-tool-3d .tt-highlight-color-btn { min-height:44px; }
  .toantin-tool-3d .tt-fullscreen-formula { min-width:260px; min-height:200px; }
}
