body.timetable-page{background:#f7f8fd;color:#202746}.timetable-redesign-shell{min-height:calc(100vh - 76px)}.timetable-content{max-width:1440px;margin:0 auto;padding:28px 34px 56px}.timetable-hero{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:20px}.timetable-hero h1{margin:0;font:800 30px Manrope,Arial;color:#202746;letter-spacing:-.7px}.timetable-hero .muted{max-width:720px;margin:8px 0 0;color:#858ba5;font-size:13px}.level-chip{padding:9px 14px;border:1px solid #ddd7ff;border-radius:999px;background:#fff;color:#6043d3;font-size:12px;font-weight:800;white-space:nowrap}.workflow-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px;padding:8px;border:1px solid #e5e1fb;border-radius:16px;background:#fff;box-shadow:0 8px 24px #4030a10b}.workflow-step{position:relative;display:grid;grid-template-columns:38px 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center;padding:12px 14px;border-radius:11px;color:#8b90a6}.workflow-step b{grid-row:1/3;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#f0eff8;color:#8a8ca0;font-size:12px}.workflow-step span{font-size:13px;font-weight:800}.workflow-step small{font-size:10px;color:#a1a5b7}.workflow-step.active{background:#f3f0ff;color:#5e3bd1}.workflow-step.active b{background:#6943e7;color:#fff}.card.workflow-card{padding:22px;border:1px solid #e7e5f1;border-radius:16px;background:#fff;box-shadow:0 10px 28px #4030a10a;margin-bottom:18px}.section-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.section-heading h2{margin:3px 0 5px;font:800 19px Manrope,Arial;color:#252b4c}.eyebrow{margin:0;color:#6746dc;font-size:10px;font-weight:900;letter-spacing:.08em}.muted{color:#9095aa;font-size:12px}.section-heading .muted{margin:0}.data-status-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:18px}.data-status-item{display:flex;align-items:center;gap:11px;padding:15px;border:1px solid #eceaf5;border-radius:12px;background:#fcfcff}.data-status-item .status-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:#eaf8ef;color:#25a566;font-weight:900}.data-status-item.missing .status-icon{background:#fff0f0;color:#d95963}.data-status-item.update .status-icon{background:#fff6df;color:#d79529}.data-status-item strong,.data-status-item small{display:block}.data-status-item strong{font-size:13px}.data-status-item small{margin-top:4px;color:#38a66e;font-size:11px;font-weight:700}.data-status-item.missing small{color:#d95963}.data-status-item.update small{color:#d79529}.condition-top-grid{display:grid;grid-template-columns:minmax(180px,250px) minmax(260px,1fr);gap:18px;margin-top:18px}.condition-top-grid>label,.period-defaults-group{display:block}.condition-top-grid label>span,.period-defaults-group>span,.teacher-unavailability-form span,.class-availability-form label>span{display:block;margin-bottom:7px;color:#555c78;font-size:12px;font-weight:800}.condition-top-grid select,.condition-top-grid input,.teacher-unavailability-form select,.teacher-unavailability-form input,.class-availability-form select{width:100%;box-sizing:border-box;padding:10px 11px;border:1px solid #dfdced;border-radius:9px;background:#fff;color:#333a5a}.period-defaults-group>div{display:flex;gap:10px}.period-defaults-group label{flex:1;color:#777d96;font-size:11px}.period-defaults-group label input{margin-top:5px}.weekly-period-heading{display:flex;justify-content:space-between;align-items:end;gap:14px;margin-top:22px}.weekly-period-heading b{display:block;color:#383d5b;font-size:13px}.weekly-period-heading small{display:block;margin-top:5px;color:#9297aa;font-size:11px}.weekly-totals{display:flex;gap:16px;color:#6746dc;font-size:12px;font-weight:800}.weekly-period-table-wrap{overflow:auto;margin-top:12px}.weekly-period-table{width:100%;border-collapse:separate;border-spacing:0;min-width:680px;overflow:hidden;border:1px solid #e7e4f2;border-radius:12px}.weekly-period-table th,.weekly-period-table td{padding:9px;border-right:1px solid #eceaf4;border-bottom:1px solid #eceaf4;text-align:center;font-size:12px}.weekly-period-table tr:last-child>*{border-bottom:0}.weekly-period-table>* tr>*:last-child{border-right:0}.weekly-period-table thead th{background:#f7f5ff;color:#5f43cb;font-weight:900}.weekly-period-table tbody th{background:#fbfbfe;text-align:left;color:#535a74}.weekly-period-table input{width:54px;padding:7px 5px;border:1px solid #dcd7f6;border-radius:7px;text-align:center;color:#4e37bf;font-weight:800}.rule-options{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 20px;margin-top:18px;padding:15px;border:1px solid #eeeaf9;border-radius:11px;background:#fbfaff}.rule-options label{color:#565d79;font-size:12px}.rule-options input,.availability-day input{accent-color:#6743df}.condition-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.primary-button,.outline-button{border-radius:9px;padding:10px 15px;font-size:12px;font-weight:800;cursor:pointer}.primary-button{border:1px solid #6540df;background:linear-gradient(135deg,#7452ed,#5a31d8);color:#fff;box-shadow:0 7px 16px #6041dc25}.outline-button{border:1px solid #d5cdf8;background:#fff;color:#6540d8}.readiness-badge{padding:7px 11px;border-radius:999px;background:#f5f3fc;color:#858aa0;font-size:11px;font-weight:800}.readiness-badge.ready{background:#eaf8ef;color:#24935c}.compact-constraints-card details{border-top:1px solid #eeeef5;padding:14px 0}.compact-constraints-card details:first-of-type{margin-top:8px}.compact-constraints-card summary{cursor:pointer;color:#4b5270;font-size:13px;font-weight:800}.class-availability-inner{padding-top:16px}.class-availability-form{display:grid;grid-template-columns:200px 1fr;gap:16px;align-items:end}.availability-days{display:grid;grid-template-columns:repeat(6,1fr);gap:7px}.availability-day{display:flex;flex-direction:column;gap:6px;padding:9px;border:1px solid #e9e6f4;border-radius:8px;background:#fbfaff;font-size:11px}.availability-day b{color:#5d40cd}.class-availability-inner>.outline-button{margin-top:12px}.teacher-unavailability-form{display:grid;grid-template-columns:1.5fr 1fr 1fr 90px auto;gap:10px;align-items:end;padding:16px 0}.constraint-list{display:flex;flex-wrap:wrap;gap:7px}.constraint-chip{padding:7px 10px;border-radius:999px;background:#f2efff;color:#5c3aca;font-size:11px}.analysis-results{min-height:70px;margin-top:18px}.analysis-empty{display:block;padding:16px;border-radius:10px;background:#fafafe;color:#9297aa;font-size:12px}.analysis-group{padding:12px 14px;border-radius:10px;margin-bottom:9px}.analysis-blocking,.analysis-warnings{background:#fff8f0;border:1px solid #f6dfbf}.analysis-success{background:#edf9f1;border:1px solid #c9eed6;color:#238b55}.analysis-group>b{display:block;margin-bottom:8px;color:#aa691d;font-size:12px}.analysis-item{padding:5px 0;color:#5e647e;font-size:12px}.analysis-item.success{padding:14px;background:#edf9f1;border:1px solid #c9eed6;border-radius:10px;color:#238b55;font-weight:800}.generate-area{display:flex;justify-content:flex-end;margin-top:14px;padding-top:14px;border-top:1px solid #eeeef5}.generate-button{padding:12px 20px;font-size:13px}.result-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.result-tabs{display:flex;gap:3px;padding:3px;border-radius:8px;background:#f3f1fb}.result-view{border:0;padding:8px 10px;border-radius:6px;background:transparent;color:#858aa0;font-size:11px;font-weight:800;cursor:pointer}.result-view.active{background:#fff;color:#5e3bd1;box-shadow:0 2px 7px #5034b51c}.result-actions select{padding:9px;border:1px solid #ddd9ee;border-radius:8px;background:#fff;color:#60677f;font-size:11px}.result-empty{padding:36px 20px;text-align:center;color:#969bad;font-size:12px}.schedule-meta{display:flex;align-items:center;gap:10px;margin:18px 0 10px;color:#616983;font-size:12px}.schedule-table-wrap{overflow:auto}.schedule-table{width:100%;min-width:780px;border-collapse:collapse}.schedule-table th,.schedule-table td{border:1px solid #e9e7f1;padding:10px;text-align:center;font-size:11px}.schedule-table thead th{background:#f6f3ff;color:#5b3ccc}.schedule-table tbody th{background:#fbfbfe;color:#656b82}.schedule-table td b,.schedule-table td small{display:block}.schedule-table td small{margin-top:4px;color:#8d92a6}.custom-rules-panel{display:none!important}@media(max-width:900px){.timetable-content{padding:20px 16px}.data-status-grid{grid-template-columns:repeat(2,1fr)}.workflow-steps{grid-template-columns:repeat(2,1fr)}.teacher-unavailability-form{grid-template-columns:repeat(2,1fr)}.availability-days{grid-template-columns:repeat(3,1fr)}}@media(max-width:600px){.timetable-hero,.section-heading,.weekly-period-heading{display:block}.level-chip{display:inline-block;margin-top:14px}.data-status-grid,.condition-top-grid,.rule-options{grid-template-columns:1fr}.weekly-totals{margin-top:10px;display:block}.weekly-totals span{display:block;margin-top:4px}.condition-actions{justify-content:stretch;flex-direction:column}.class-availability-form{grid-template-columns:1fr}.availability-days{grid-template-columns:repeat(2,1fr)}.teacher-unavailability-form{grid-template-columns:1fr}.result-actions{justify-content:flex-start;margin-top:12px}}
 .result-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}.result-metrics span{display:flex;align-items:center;gap:9px;padding:11px 13px;border:1px solid #ebe8f4;border-radius:10px;background:#fbfaff;color:#747b94;font-size:11px}.result-metrics b{color:#5e3bd1;font-size:18px}@media(max-width:600px){.result-metrics{grid-template-columns:repeat(2,1fr)}}
.timetable-content{padding-top:34px}.timetable-hero{padding:24px 28px;border:1px solid #ddd7ff;border-radius:20px;background:linear-gradient(120deg,#ffffff 0%,#f4f0ff 58%,#eaf5ff 100%);box-shadow:0 14px 34px rgba(76,53,177,.12),inset 0 1px 0 #fff}.timetable-hero h1{font-size:32px;color:#1d2450}.timetable-hero .eyebrow{display:inline-flex;padding:6px 10px;border-radius:999px;background:#e9e3ff;color:#5d38d1;box-shadow:inset 0 1px 0 #fff}.workflow-steps{padding:10px;background:linear-gradient(135deg,#fff,#f8f6ff);box-shadow:0 12px 28px rgba(76,53,177,.13)}.workflow-step{min-height:54px;border:1px solid transparent;transition:transform .18s ease,box-shadow .18s ease}.workflow-step:not(.active){background:#fbfbff}.workflow-step.active{border-color:#cfc4ff;background:linear-gradient(135deg,#f2edff,#fff);box-shadow:0 7px 16px rgba(96,65,220,.13)}.workflow-step.active span{color:#4d2ab9}.workflow-step.active small{color:#8068da}.workflow-step:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(80,60,170,.1)}.card.workflow-card{position:relative;overflow:hidden;border-color:#e1def0;box-shadow:0 12px 30px rgba(67,52,147,.1),inset 0 1px 0 #fff}.card.workflow-card::before{content:"";position:absolute;inset:0 0 auto;height:4px;background:#dcd7f4}.input-card::before{background:linear-gradient(90deg,#2bb673,#78d7ad)!important}.conditions-card::before{background:linear-gradient(90deg,#6841e4,#9b7bff)!important}.compact-constraints-card::before{background:linear-gradient(90deg,#f0a33a,#ffd378)!important}.analysis-card::before{background:linear-gradient(90deg,#438be9,#82b9ff)!important}.timetable-result-card::before{background:linear-gradient(90deg,#25ae72,#7cdbad)!important}.section-heading h2{display:flex;align-items:center;gap:10px;font-size:21px}.section-heading h2::before{content:"";display:inline-block;width:8px;height:27px;border-radius:6px;background:#6a45e2;box-shadow:0 4px 10px rgba(92,57,212,.25)}.input-card .section-heading h2::before{background:#28ae70}.compact-constraints-card .section-heading h2::before{background:#f0a23a}.analysis-card .section-heading h2::before{background:#438be9}.timetable-result-card .section-heading h2::before{background:#25ae72}.eyebrow{display:inline-flex;padding:5px 9px;border-radius:7px;background:#f1edff;color:#6540d8;letter-spacing:.1em}.input-card .eyebrow{background:#eaf9f0;color:#22945d}.compact-constraints-card .eyebrow{background:#fff6e5;color:#b87820}.analysis-card .eyebrow{background:#eaf4ff;color:#347bcf}.timetable-result-card .eyebrow{background:#eaf9f1;color:#22945d}.data-status-item{background:linear-gradient(145deg,#fff,#faf9ff);box-shadow:0 6px 14px rgba(74,58,150,.06);transition:transform .18s ease,box-shadow .18s ease}.data-status-item:hover{transform:translateY(-2px);box-shadow:0 10px 20px rgba(74,58,150,.12)}.weekly-period-table thead th{background:linear-gradient(180deg,#eeeaff,#f8f6ff)}.weekly-period-table tbody tr:first-child th{color:#208f59;background:#f0fbf5}.weekly-period-table tbody tr:nth-child(2) th{color:#b1701e;background:#fff8eb}.rule-options{background:linear-gradient(135deg,#fbfaff,#f4f8ff);box-shadow:inset 0 1px 0 #fff}.condition-actions .primary-button,.generate-button{box-shadow:0 9px 18px rgba(91,48,216,.28)}.analysis-card{background:linear-gradient(145deg,#fff,#fbfdff)}.result-tabs{border:1px solid #e2dcfb;box-shadow:inset 0 1px 0 #fff}.result-view.active{background:linear-gradient(135deg,#fff,#f1edff);color:#5630c8}.result-metrics span{background:linear-gradient(135deg,#fff,#f8f5ff);box-shadow:0 5px 12px rgba(73,54,155,.06)}
.availability-class-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:13px}.availability-class-filters label{display:grid;gap:6px}.availability-class-filters label>span{color:#555c78;font-size:12px;font-weight:800}.availability-class-filters select{width:100%;box-sizing:border-box;padding:10px 11px;border:1px solid #dfdced;border-radius:9px;background:#fff;color:#333a5a}@media(max-width:600px){.availability-class-filters{grid-template-columns:1fr}}
.availability-no-session{display:block;padding:6px 0;color:#a0a5b7;font-size:10px;font-style:italic}
 .compact-constraints-card details{display:inline-block;vertical-align:top;width:calc(50% - 10px);box-sizing:border-box;margin-top:16px!important;padding:17px;border:1px solid #e8e3fb;border-radius:14px;background:linear-gradient(145deg,#fff,#fbfaff);box-shadow:0 7px 16px rgba(75,54,151,.07)}.compact-constraints-card details:first-of-type{margin-right:16px}.compact-constraints-card details summary{min-height:24px;color:#4c3a9a}.compact-constraints-card .class-availability-form{grid-template-columns:1fr}.compact-constraints-card .availability-days{grid-template-columns:repeat(3,1fr);margin-top:13px}.compact-constraints-card .teacher-unavailability-form{grid-template-columns:1fr 1fr}.compact-constraints-card .teacher-unavailability-form button{grid-column:1/-1}.compact-constraints-card .constraint-list{margin-top:9px}@media(max-width:900px){.compact-constraints-card details{width:100%;margin-right:0!important}.compact-constraints-card details+details{margin-top:13px!important}}@media(max-width:600px){.compact-constraints-card .availability-days{grid-template-columns:repeat(2,1fr)}.compact-constraints-card .teacher-unavailability-form{grid-template-columns:1fr}}
.conditions-card .condition-top-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:stretch}
.conditions-card .condition-top-grid>label,.conditions-card .period-defaults-group{min-width:0;padding:12px 14px;border:1px solid #ebe8f6;border-radius:12px;background:#fcfbff}
.conditions-card .condition-top-grid select{height:42px}
.conditions-card .period-defaults-group>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.conditions-card .period-defaults-group label{min-width:0}
.conditions-card .period-defaults-group label input{box-sizing:border-box;width:100%;height:42px;margin-top:6px;text-align:center}
.conditions-card .weekly-period-table{table-layout:fixed}
.conditions-card .weekly-period-table th,.conditions-card .weekly-period-table td{width:14.2857%;box-sizing:border-box}
.conditions-card .weekly-period-table input{box-sizing:border-box;width:100%;max-width:170px;height:37px}
@media(max-width:900px){.conditions-card .condition-top-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.conditions-card .condition-top-grid>label{grid-column:span 1}.conditions-card .period-defaults-group{grid-column:span 1}}
 @media(max-width:600px){.conditions-card .condition-top-grid{grid-template-columns:1fr}.conditions-card .period-defaults-group{grid-column:auto}.conditions-card .weekly-period-table{min-width:650px}}

/* Cân lại các thẻ cấu hình và khóa kích thước ô lưới */
.conditions-card .condition-top-grid{
  grid-template-columns:minmax(220px,1fr) minmax(420px,2fr);
  gap:16px;
}
.conditions-card .condition-top-grid > input[type="hidden"]{
  display:none;
}
.conditions-card .condition-top-grid > label,
.conditions-card .period-defaults-group{
  min-height:90px;
  box-sizing:border-box;
}
.conditions-card .period-defaults-group > div{
  width:100%;
}
.conditions-card .weekly-period-table{
  width:100%;
  min-width:680px;
  table-layout:fixed;
}
.conditions-card .weekly-period-table th,
.conditions-card .weekly-period-table td{
  width:14.2857%;
  box-sizing:border-box;
}
.conditions-card .weekly-period-table th:first-child,
.conditions-card .weekly-period-table td:first-child{
  width:14.2857%;
}
.conditions-card .weekly-period-table input{
  display:block;
  width:100%;
  max-width:none;
  box-sizing:border-box;
}

@media(max-width:900px){
  .conditions-card .condition-top-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(max-width:600px){
  .conditions-card .condition-top-grid{
    grid-template-columns:1fr;
  }
}

.constraint-multiselect{position:relative;min-width:0}
.constraint-multiselect-trigger{display:flex!important;align-items:center;justify-content:space-between;width:100%;min-height:39px;padding:9px 11px;border:1px solid #dfdced;border-radius:9px;background:#fff;color:#333a5a;font:inherit;text-align:left;cursor:pointer}
.constraint-multiselect-trigger::after{content:'⌄';margin-left:8px;color:#7355dc}
.constraint-multiselect-menu{position:absolute;z-index:80;top:calc(100% + 5px);left:0;right:0;display:none;max-height:210px;overflow:auto;padding:6px;border:1px solid #ddd7f5;border-radius:10px;background:#fff;box-shadow:0 12px 28px rgba(62,43,139,.18)}
.constraint-multiselect.open .constraint-multiselect-menu{display:grid;gap:2px}
.constraint-multiselect-option{display:flex!important;align-items:center;gap:8px;padding:8px;border-radius:7px;color:#555c78;font-size:11px;font-weight:600;cursor:pointer}
.constraint-multiselect-option:hover{background:#f5f2ff}
.constraint-multiselect-option input{width:15px!important;height:15px;margin:0;accent-color:#6743df}
.constraint-multiselect-empty{padding:9px;color:#9599aa;font-size:11px}

/* Ẩn thanh quy trình tổng quan theo yêu cầu giao diện */
.timetable-page .workflow-steps{
  display:none;
}

/* Cân đối khối cấu hình đầu và tránh ô nhập bị kéo quá rộng */
.conditions-card .condition-top-grid{
  grid-template-columns:repeat(2,minmax(0,1fr));
  align-items:stretch;
}
.conditions-card .condition-top-grid > label,
.conditions-card .period-defaults-group{
  width:100%;
}
.conditions-card .period-defaults-group > div{
  grid-template-columns:repeat(2,minmax(0,1fr));
  align-items:end;
}
.conditions-card .period-defaults-group label input,
.conditions-card .condition-top-grid select{
  justify-self:start;
}
.conditions-card .condition-top-grid select{
  max-width:360px;
}
.conditions-card .period-defaults-group label input{
  max-width:240px;
}

@media(max-width:600px){
  .conditions-card .condition-top-grid{
    grid-template-columns:1fr;
  }
}
