.plan-flow{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:16px 20px;margin-bottom:24px;background:#edf5ff;border:1px solid #d0e1f5;border-radius:8px;color:#315c8d;font-size:12px}.plan-flow .btn{margin-left:auto}.plan-current{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:20px;color:#456786;font-size:12px}.plan-current strong{color:#032b91}.plan-current .text-link{margin-left:auto}.plan-fieldset{padding:0;border:0;margin:0 0 28px;min-width:0}.plan-fieldset legend{font-size:15px;font-weight:600;color:#163e73;margin-bottom:14px}.plan-goals,.plan-methods{display:grid;gap:12px}.plan-goals{grid-template-columns:1fr 1fr}.plan-methods{grid-template-columns:repeat(3,1fr)}.plan-choice{display:flex;align-items:flex-start;gap:11px;padding:18px 16px;border:1px solid #c7d8ec;border-radius:7px;background:#fcfdff;cursor:pointer;min-width:0}.plan-choice:hover{border-color:#1488db}.plan-choice.selected{border-color:#1266be;background:#edf5ff;box-shadow:inset 0 0 0 1px #1266be}.plan-choice input{width:18px;height:18px;margin:2px 0 0;accent-color:#032b91;flex:none}.plan-choice strong{display:block;font-size:13px;color:#163e73;margin-bottom:7px}.plan-choice small{display:block;color:#526c88;font-size:11px;line-height:1.7}.plan-settings{border-top:1px solid #dbe6f3;padding-top:24px;margin-top:8px}.planning-panel .form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 24px}.plan-checkbox{display:flex;align-items:center;gap:11px;font-size:12px;color:#315b87;line-height:1.7;cursor:pointer;min-height:44px}.plan-checkbox input{width:18px;height:18px;accent-color:#032b91;flex:none}.plan-submit{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-top:24px;margin-top:20px;border-top:1px solid #d6e3f2}.plan-submit>span{font-size:11px;color:#54708d}.plan-submit strong{display:block;color:#17467e;margin-top:4px}.plan-manual{margin-top:24px;border:1px solid #d2e0f0;border-radius:6px;overflow:hidden}.plan-manual h3{font-size:14px}.manual-stepper{display:flex;align-items:center;gap:5px;min-width:150px}.manual-stepper input{width:80px;min-width:70px;text-align:center;min-height:38px;padding:6px}.manual-stepper button{border:1px solid #bfd2ea;background:#f5f9ff;color:#174e91;width:32px;height:38px;border-radius:4px;flex:none}.plan-errors{background:#fff3ec;border:1px solid #efd2be;color:#8a431c;margin:18px 22px}.plan-charts{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:18px}.plan-charts h3{font-size:13px}.plan-charts .resource-chart{width:100%;height:auto;min-width:0}.planning-result{margin-top:24px}.planning-result .panel-head{align-items:flex-start;gap:20px;flex-wrap:wrap}.planning-result .panel-head h2{font-size:26px;line-height:1.5}.planning-result .panel-tools{flex-wrap:wrap;gap:8px}.plan-comparison table{min-width:550px}.plan-comparison th{font-weight:400;color:#496a8b}.plan-comparison td strong{color:#032b91}.planning-result h3{margin:20px 0 14px;font-size:15px;color:#173f73}.plan-alternatives{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:26px 0}.plan-alternatives>strong{font-size:11px;width:100%;color:#46678b}.plan-alternatives .btn{font-size:10px}.plan-manual .panel-head{border-bottom:1px solid #d9e4f2}.plan-choice:focus-within{outline:3px solid #5db1ec66;outline-offset:2px}.planning-panel .panel-body{padding:26px}.planning-panel #planner-live{margin-top:14px;color:#80541f}.planning-panel button:disabled{cursor:wait;opacity:.6}.planning-result .btn:disabled{cursor:not-allowed;opacity:.5}
@media(max-width:1150px){.plan-methods{grid-template-columns:1fr}.plan-choice strong{margin-bottom:4px}.plan-choice{padding:14px}.plan-charts{grid-template-columns:1fr}.plan-choice small{font-size:12px}}
@media(max-width:760px){.plan-flow{gap:10px;padding:14px}.plan-flow>span{font-size:10px}.plan-flow .btn{width:100%;justify-content:center}.plan-goals{grid-template-columns:1fr}.planning-panel .panel-body{padding:18px 14px}.planning-panel .form-grid{grid-template-columns:1fr}.plan-fieldset legend{font-size:14px;line-height:1.5}.plan-current{gap:8px}.plan-current>span{width:100%}.plan-current .text-link{margin:0}.plan-submit .btn{width:100%;justify-content:center}.planning-result .panel-head h2{font-size:22px}.planning-result .panel-tools{width:100%;gap:8px}.planning-result .panel-tools .btn{min-height:44px}.plan-choice{min-height:72px}.manual-stepper button{min-height:44px;width:38px}.manual-stepper input{min-height:44px}.plan-errors{margin:14px}.plan-alternatives .btn{min-height:44px}.plan-current strong{font-size:12px}}
.dependency-editor{border:1px solid #d4e2f1;padding:16px;border-radius:7px;background:#fbfdff}.dependency-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.dependency-heading>label{font-weight:600;margin:0}.dependency-row{display:grid;grid-template-columns:minmax(150px,1.4fr) minmax(140px,1fr) minmax(125px,.8fr) 32px;gap:10px;align-items:end;margin-bottom:12px}.dependency-row label{min-width:0;display:block}.dependency-row label>span{display:block;font-size:10px;color:#526f90;margin-bottom:6px}.dependency-row select{width:100%;padding:10px 7px;font-size:11px;min-height:40px}.dependency-lag{display:flex;gap:3px}.dependency-lag input{width:58px;min-width:45px;text-align:center;padding:7px 2px;font-size:12px;min-height:40px}.dependency-lag button,.dependency-remove{border:1px solid #bed2e9;background:#eef5ff;color:#164e8f;border-radius:4px;width:28px;min-width:28px;height:40px}.dependency-remove{color:#ad4f30;background:#fff7f3}.dependency-editor small{display:block;line-height:1.6;margin-top:8px;font-size:10px}.planning-network{overflow:auto;max-height:500px;border:1px solid #d4e0ef;border-radius:6px;margin:16px 0;background:#fdfefe}.planning-result .planning-network svg{width:auto;max-width:none}.hero-world .camera-tools{bottom:20px;right:24px}.camera-tools button.camera-place{width:auto;padding:0 12px;border-radius:18px;font-size:11px}.scene-source-note{font-size:10px;color:#536c85;padding:10px 22px;line-height:1.7}
@media(max-width:760px){.dependency-row{grid-template-columns:minmax(0,1fr) 36px;gap:8px;border-top:1px solid #d7e4f3;padding-top:12px}.dependency-row>label:first-child{grid-column:1}.dependency-row>label:nth-child(2){grid-column:1}.dependency-row>label:nth-child(3){grid-column:1}.dependency-remove{grid-column:2;grid-row:1/4;align-self:center;min-height:44px}.dependency-lag input{width:85px}.dependency-lag button{width:44px;height:44px}.dependency-heading{align-items:flex-start;flex-direction:column}.dependency-row select{min-height:44px}.hero-world .camera-tools{right:14px;bottom:12px;flex-wrap:wrap;max-width:90%}}
.construction-process{width:100%;display:flex;flex-direction:column;gap:9px}.construction-process>div{display:flex;align-items:center;justify-content:space-between;gap:9px}.process-counter{font-size:9px;color:#416c96;letter-spacing:1px}.process-navigation{display:flex;gap:7px}.process-navigation button{padding:6px 12px;min-height:34px;font-size:11px;border:1px solid #bdd3ec;border-radius:5px;background:#f5f9ff;color:#164f91}.construction-process select{width:100%;font-size:11px;min-height:40px;border:1px solid #bfd4ec;background:#fff;color:#164a88;padding:8px;white-space:normal}.scene-panel>.construction-process{padding:15px 22px;border-bottom:1px solid #d6e4f4;background:#f3f8ff}.hero-copy .world-caption{padding-top:14px}.hero-copy .world-caption small{font-size:9px}.hero-copy .world-caption strong{font-size:12px}.hero-presets{width:100%}.hero-copy .world-caption input{margin:2px 0}.print-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.print-choices label{display:flex;align-items:center;gap:10px;padding:14px;border:1px solid #cadaed;border-radius:6px;cursor:pointer;font-size:13px;color:#214e82}.print-choices input{width:18px;height:18px;accent-color:#032b91}.export-actions{display:flex;gap:10px;flex-wrap:wrap;margin:24px 0 14px}.project-comment{padding:17px 0;border-top:1px solid #d7e3f1}.project-comment header{display:flex;gap:16px;justify-content:space-between;color:#214b7e;font-size:12px}.project-comment time{font-size:10px;color:#5c7491}.project-comment p{font-size:13px;line-height:1.8;margin:8px 0;overflow-wrap:anywhere}.invite-link{width:100%;margin:12px 0;font-size:12px;padding:12px;border:1px solid #c5d8ee;border-radius:5px}.topbar-actions .top-export{font-size:10px;min-height:34px;padding:8px 10px}.report-staging{position:fixed;left:-12000px;top:0;width:1120px;background:#fff;color:#183b68;z-index:-10}.report-sheet{padding:35px;width:1120px;background:#fff;box-sizing:border-box;margin:0 0 20px;font-family:BeVietnam,Arial,sans-serif}.report-title{display:flex;justify-content:space-between;gap:30px;padding-bottom:18px;border-bottom:2px solid #032b91;font-size:12px;margin-bottom:20px}.report-title span{font-size:10px;color:#536c86}.report-sheet .page-heading h1{font-size:26px}.report-sheet .page-heading p{font-size:11px}.report-sheet .panel{margin-bottom:20px;box-shadow:none}.report-sheet .table-scroll,.report-sheet .network-wrap{overflow:visible;max-height:none}.report-sheet table{width:100%;font-size:11px}.report-sheet .gantt{min-width:0}.report-sheet svg{max-width:100%;height:auto}.report-sheet .kpi-value{font-size:25px}.report-field{display:inline-block;font-size:12px;color:#244e7d;padding:8px 0}.report-sheet .field{margin:0}.report-sheet .print-choices{display:none}.report-sheet .scene-controls,.report-sheet .construction-process,.report-sheet .scene-details,.report-sheet .scene-poster{display:none}.report-sheet .scene-canvas-wrap{height:auto}.report-sheet .scene-canvas-wrap img{display:block;max-width:100%}
@media(max-width:760px){.print-choices{grid-template-columns:1fr}.topbar-actions .top-export{font-size:9px;padding:6px}.app-topbar{flex-wrap:wrap;height:auto;min-height:72px;gap:8px}.topbar-actions{gap:6px}.construction-process select{font-size:10px}.scene-panel>.construction-process{padding:12px 15px}.process-navigation button{min-height:40px}.hero-copy .world-caption{top:880px}.hero{min-height:1240px}.project-comment header{flex-wrap:wrap;gap:6px}}
@media print{@page{size:A4 landscape;margin:10mm}body.report-printing>*{display:none!important}body.report-printing>.report-staging{display:block!important;position:static;left:auto;top:auto;width:auto;z-index:auto}.report-sheet{width:auto;margin:0;padding:0;break-after:page}.report-sheet .panel{break-inside:auto}.report-sheet tr{break-inside:avoid}.report-title{margin-top:10px}.report-sheet thead{display:table-header-group}.report-sheet .grid-two{display:block}.report-sheet .kpi-grid{grid-template-columns:repeat(4,1fr)}}
.network-choices{display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding:15px 18px;margin:0 0 22px;background:#f0f6fe;border:1px solid #cadcf0;border-radius:7px;color:#315d8b}.network-choices label{font-size:12px}.network-choices select{min-width:280px;padding:10px;font:12px BeVietnam,Arial,sans-serif;color:#164c86;border:1px solid #bcd2eb;border-radius:5px;background:#fff}.network-choices small{font-size:10px;color:#5a7592}.task-extra{margin-top:16px;border:1px solid #cedff0;border-radius:6px;padding:12px 15px}.task-extra summary{font-size:12px;color:#20548b;cursor:pointer}.task-extra .form-grid{margin-top:15px}.task-extra small{font-size:10px;color:#5b7390}.report-sheet .grid-two{display:block}.report-sheet .gantt-header,.report-sheet .gantt-row{grid-template-columns:260px minmax(0,1fr)}.report-sheet .gantt-label{display:block}.report-sheet .gantt-bar{position:absolute;display:block;text-align:left;color:#fff;border:0}.report-network-tile{break-inside:avoid;margin:12px 0 22px}.report-network-tile>p{font-size:11px;color:#456c97;margin-bottom:9px}.report-network-tile svg{display:block;width:100%;max-width:100%}.report-sheet .network-choices{display:none}.report-sheet .network-wrap{padding:12px;min-height:0}.report-sheet .plan-flow{display:none}
@media(max-width:760px){.network-choices select{min-width:0;width:100%}.network-choices{gap:8px}.network-choices small{font-size:10px}.task-extra{padding:12px}}
.gantt-header,.gantt-row{grid-template-columns:var(--gantt-label-width,260px) minmax(0,1fr)}.gantt-label{position:sticky;left:0;z-index:3;background:#fff}.gantt-header .gantt-label{background:#f1f7ff;z-index:4}.gantt .gantt-tick{font-size:9px}.report-sheet .gantt{min-width:0!important}.report-sheet .gantt-label{position:static}.report-sheet .gantt-tick{font-size:9px}@media(max-width:760px){.gantt{--gantt-label-width:200px}.gantt-label{font-size:9px;padding-left:12px}}
.graph-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:14px 0 18px}.graph-tools label{display:flex;align-items:center;gap:8px;font-size:11px;color:#3a628b}.graph-tools select{font:11px BeVietnam,Arial,sans-serif;padding:9px;border:1px solid #bfd3e9;border-radius:5px;color:#1a4f88;background:#fff}.graph-tools .form-caption{width:100%;margin-top:5px}.graph-board-svg{display:block;max-width:none!important;touch-action:none;user-select:none}.graph-node{cursor:grab;outline:none}.graph-node:focus>circle,.graph-node:focus>rect{stroke:#1688d4;stroke-width:3;filter:drop-shadow(0 0 3px #258bd044)}.graph-node:active{cursor:grabbing}.graph-preview{overflow:auto;max-height:620px}.report-sheet .graph-tools{display:none}.report-sheet .graph-node{cursor:default}.report-sheet .graph-board-svg{max-width:100%!important}.report-sheet .graph-preview{overflow:visible;max-height:none}.report-sheet .graph-edge text{paint-order:stroke;stroke:#fff;stroke-width:3px}@media(max-width:760px){.graph-tools .btn{min-height:40px}.graph-tools label{width:100%}.graph-tools select{flex:1}}

/* ===== Làm rõ chữ và biểu đồ (lớp cuối, ghi đè các cỡ chữ 8–11px trước đó) ===== */
:root {
  --ink: #15335c;
  --ink-soft: #46658b;
  --brand: #032b91;
  --brand-2: #1488db;
  --crit: #c4623d;
  --crit-soft: #f6d9cc;
  --crew: #6f9fd8;
  --over: #d27a52;
}
body { font-size: 14px; color: var(--ink); }
table { font-size: 13px; }
th { font-size: 12px; letter-spacing: 0.02em; }
td .code, .code { font-size: 11px; }
.badge { font-size: 11px; }
.eyebrow, .page-heading .eyebrow, .modal-header .eyebrow { font-size: 11px; }
.kpi-title { font-size: 12px; }
.kpi-sub, .data-note, .field small, .panel-head p, .form-caption, .notice p, .history-item small,
.task-deps, .legend, .filter-check, .stat-row, .callout, .path-node, .notice, .text-link,
.field label, .form-section, .weekday-group label, .relation-help, .team-roles, .project-card-meta,
.plan-choice small, .plan-submit > span, .plan-alternatives > strong, .dependency-row label > span,
.dependency-editor small, .network-choices small, .task-extra small, .graph-tools label,
.process-navigation button, .construction-process select, .tabbar button, .phase-card p,
.scene-details button, .detail-note, .machine-status, .scene-day, .app-footer, .save-status,
.currency-label, .scope-pill, .breadcrumb, .side-label { font-size: 12.5px; }
.plan-flow > span, .plan-alternatives .btn, .tiny-progress, .phase-card .phase-num,
.process-counter, .scene-details > span, .risk-axis, .info-number > span { font-size: 11.5px; }
.panel-head p, .form-caption, .data-note { line-height: 1.55; color: var(--ink-soft); }
.risk-cell { font-size: 12px; }
.chart-label { font-size: 11.5px; fill: #4a6c93; }
.chart-label.strong { font-weight: 600; fill: var(--ink); }

/* Gantt: nhãn căn trái, chữ đọc được, thanh có độ cao rõ. */
.gantt-header, .gantt-row { height: auto; min-height: 40px; }
.gantt-header { min-height: 36px; }
.gantt .gantt-label, .gantt-label {
  display: flex;
  align-items: center;
  gap: 10px;
  text-align: left;
  font-size: 13px;
  padding: 8px 14px;
  line-height: 1.3;
}
.gantt-row .gantt-label { color: var(--ink); background: #fff; border: 0; border-right: 1px solid #dce6f4; cursor: pointer; width: 100%; }
.gantt-row .gantt-label > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gantt-row .gantt-label small { flex: 0 0 auto; min-width: 22px; font-weight: 600; color: var(--brand-2); margin: 0; }
.gantt-row.is-critical .gantt-label small { color: var(--crit); }
.gantt-row .gantt-label:hover { background: #f3f8ff; }
.gantt-header .gantt-label { font-size: 11px; letter-spacing: 0.06em; font-weight: 600; color: var(--ink-soft); }
.gantt .gantt-tick, .gantt-tick { font-size: 11px; top: 11px; transform: translateX(-50%); color: #5a7aa0; }
.gantt-bar { top: 10px; height: 20px; font-size: 11px; border-radius: 5px; }
.gantt-bar > span:last-child { inset: 2px 6px; line-height: 16px; font-weight: 600; }
.gantt-bar.milestone { width: 0 !important; overflow: visible; background: transparent; }
.gantt-bar.milestone > span:last-child { inset: 0 auto 0 -7px; color: var(--crit); font-size: 15px; }
.gantt-float { top: 15px; height: 10px; }
.gantt-more { padding: 10px 16px; border-top: 1px solid #edf2f9; }
.path-node .path-rel { font-size: 11px; margin: 0 8px; opacity: 0.75; }
@media (max-width: 760px) {
  .gantt { --gantt-label-width: 170px; }
  .gantt .gantt-label, .gantt-label { font-size: 12px; padding: 8px 10px; }
}

/* Biểu đồ dùng chung */
.resource-chart { height: auto; aspect-ratio: 800 / 260; }
.finance-chart { height: auto; aspect-ratio: 800 / 230; }
.finance-chart.cost-chart { aspect-ratio: 830 / 240; }
.chart-line { stroke: #e3ecf7; }
.chart-axis { stroke: #b9cbe2; stroke-width: 1.2; }
.bar-crew { fill: var(--crew); }
.bar-over { fill: var(--over); }
.bar-in { fill: #5b9bd8; }
.bar-out { fill: var(--over); }
.chart-capacity { stroke: var(--crit); stroke-width: 1.6; stroke-dasharray: 6 4; fill: none; }
.chart-average { stroke: var(--brand); stroke-width: 1.3; stroke-dasharray: 2 3; fill: none; }
.chart-series { fill: none; stroke-width: 2.4; }
.chart-series.total { stroke: var(--brand); }
.chart-series.direct { stroke: #7fa7d6; stroke-dasharray: 6 4; stroke-width: 2; }
.chart-series.cumulative { stroke: var(--brand); stroke-width: 1.8; }
.chart-point { fill: #fff; stroke: var(--brand); stroke-width: 2; }
.chart-best { fill: var(--crit); stroke: #fff; stroke-width: 2; }
.plan-charts h3 { font-size: 14px; margin: 0 0 6px; }
.plan-objective-note { margin: 6px 0 0; font-size: 13px; color: var(--ink-soft); line-height: 1.5; }
.plan-comparison th { font-weight: 500; color: var(--ink); }
.plan-comparison td.num strong { color: var(--brand); }
.gantt-header .gantt-tick:first-child { transform: none; }
.pert-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; align-items: end; }
.pert-grid .muted { margin: 0 0 6px; font-size: 12.5px; }
.pert-grid small { display: block; margin-top: 4px; color: var(--ink-soft); font-size: 12px; }
.pert-grid input { width: 100%; max-width: 160px; padding: 9px 12px; border: 1px solid #c9d8ea; border-radius: 8px; font-size: 16px; color: var(--ink); }
.pert-summary { margin-bottom: 20px; }
@media (max-width: 760px) { .pert-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ===== Dự án & làm việc nhóm ===== */
.project-card-wrap { display: flex; flex-direction: column; gap: 8px; }
.project-card-wrap > .btn { align-self: flex-start; }
.project-card.current { outline: 2px solid var(--brand-2); outline-offset: 2px; }
.project-card-by { display: block; margin-top: 8px; font-size: 12px; color: var(--ink-soft); }
.team-signin .panel-body { display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; }
.team-signin h2 { margin: 0 0 6px; }
.google-signin { min-height: 44px; display: flex; align-items: center; }
#modal-google, #invite-google { margin: 18px 0 8px; }
.member-list { display: grid; gap: 4px; margin-bottom: 18px; }
.member-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.member-row.pending { opacity: 0.85; }
.member-who { display: flex; align-items: center; gap: 12px; min-width: 0; }
.member-who > span { display: flex; flex-direction: column; min-width: 0; }
.member-who small { color: var(--ink-soft); font-size: 12px; overflow: hidden; text-overflow: ellipsis; }
.member-face { width: 34px; height: 34px; border-radius: 50%; flex: 0 0 34px; display: grid; place-items: center; background: #e6effa; color: var(--brand); font-style: normal; font-weight: 600; object-fit: cover; }
.member-actions { display: flex; align-items: center; gap: 8px; }
.member-actions select { padding: 6px 8px; border: 1px solid #c9d8ea; border-radius: 8px; font-size: 13px; }
button.avatar img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; display: block; }
