:root{color:#172126;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--ink:#172126;--muted:#66737a;--line:#d9dedb;--paper:#fffdf8;--panel:#fff;--green:#1f7a5a;--green-soft:#e7f3ed;--blue:#246a9b;--blue-soft:#e7f0f7;--amber:#a7641a;--amber-soft:#f8ead7;--violet:#6f4aa8;--violet-soft:#f0e9f8;--red:#b33a3a;--red-soft:#fae4e1;--shadow:0 18px 50px #1f27241a;background:#f4f2ee;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button{font:inherit}.app-shell{grid-template-columns:260px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{color:#f7f3ea;background:#172126;flex-direction:column;gap:28px;padding:24px 18px;display:flex}.brand-block{grid-template-columns:44px 1fr;align-items:center;gap:12px;display:grid}.brand-mark{color:#172126;background:#f0c85a;border-radius:8px;place-items:center;width:44px;height:44px;display:grid}.brand-block strong,.brand-block span{display:block}.brand-block strong{font-size:17px}.brand-block span{color:#f7f3eab8;margin-top:3px;font-size:12px}.nav-list{gap:8px;display:grid}.nav-item,.student-item,.row-actions button,.primary-action{cursor:pointer;border:0;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:38px;display:inline-flex}.nav-item{color:#f7f3eac2;background:0 0;justify-content:flex-start;width:100%;padding:11px 12px}.nav-item.active,.nav-item:hover{color:#fffdf8;background:#ffffff1f}.sidebar-note{color:#f7f3ead1;border:1px solid #ffffff24;border-radius:8px;align-items:flex-start;gap:9px;margin-top:auto;padding:14px;font-size:13px;line-height:1.45;display:flex}.workspace{align-content:start;gap:18px;padding:28px;display:grid}.topbar{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.eyebrow,.section-title p{color:var(--green);letter-spacing:0;margin:0 0 6px;font-size:12px;font-weight:700}h1,h2,h3,p{margin:0}h1{letter-spacing:0;max-width:760px;font-size:30px;line-height:1.18}.topbar-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.date-pill,.guard-pill{border-radius:8px;align-items:center;gap:8px;min-height:36px;padding:0 12px;font-size:13px;font-weight:700;display:inline-flex}.date-pill{color:var(--blue);background:var(--blue-soft)}.guard-pill.ok{color:var(--green);background:var(--green-soft)}.guard-pill.danger{color:var(--red);background:var(--red-soft)}.system-banner,.empty-state{border:1px solid var(--line);color:var(--muted);background:#fffaf0;border-radius:8px;padding:12px 14px;font-size:13px;line-height:1.5}.system-banner{color:var(--blue);background:var(--blue-soft);font-weight:800}.system-banner.danger{color:var(--red);background:var(--red-soft)}.empty-state.compact{margin:8px;padding:10px 12px}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.metric-card,.panel{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow)}.metric-card{border-radius:8px;grid-template-columns:42px 1fr;gap:12px;min-height:118px;padding:18px;display:grid}.metric-icon{width:42px;height:42px;color:var(--green);background:var(--green-soft);border-radius:8px;place-items:center;display:grid}.metric-card span,.mini-stat span,.summary-list dt{color:var(--muted);font-size:13px}.metric-card strong{margin:6px 0 4px;font-size:25px;line-height:1.05;display:block}.metric-card small{color:var(--muted);font-size:12px}.content-grid{grid-template-columns:minmax(0,1.7fr) minmax(280px,.8fr);align-items:start;gap:18px;display:grid}.calendar-layout{grid-template-columns:minmax(0,1.25fr) minmax(390px,.75fr);align-items:start;gap:18px;display:grid}.calendar-only-layout{grid-template-columns:minmax(0,1fr)}.calendar-panel,.day-schedule-panel{min-width:0}.day-schedule-panel{position:sticky;top:20px}.month-toolbar{border:1px solid var(--line);background:var(--paper);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:12px 14px;display:flex}.month-nav-group,.month-toolbar-actions{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.month-toolbar strong{white-space:nowrap;font-size:17px}.month-toolbar span{color:var(--muted);text-align:right;font-size:13px;line-height:1.45}.calendar-weekdays,.month-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;display:grid}.calendar-weekdays{margin-bottom:8px}.calendar-weekdays span{color:var(--muted);text-align:center;font-size:12px;font-weight:800}.calendar-day{border:1px solid var(--line);min-height:138px;color:var(--ink);background:var(--paper);text-align:left;cursor:pointer;border-radius:8px;align-content:start;gap:7px;padding:10px;transition:border-color .18s,background-color .18s,transform .18s;display:grid}.calendar-day:hover{border-color:#1f7a5a73;transform:translateY(-1px)}.calendar-day.selected{background:#eef7f1;border-color:#1f7a5ad9;box-shadow:inset 0 0 0 1px #1f7a5a47}.calendar-day.outside-month{opacity:.45}.calendar-day.empty-day{background:#f8f6f0}.calendar-day-topline{justify-content:space-between;align-items:center;gap:8px;display:flex}.calendar-day-topline strong{font-size:18px}.calendar-day-topline small{color:var(--muted);white-space:nowrap;font-size:12px}.calendar-day-progress{background:#e7ebe7;border-radius:999px;width:100%;height:4px;display:block;overflow:hidden}.calendar-day-progress span{border-radius:inherit;background:#9aa49b;height:100%;display:block}.calendar-chip-stack{gap:5px;min-width:0;display:grid}.calendar-chip,.calendar-more{text-overflow:ellipsis;white-space:nowrap;border-radius:7px;min-width:0;padding:5px 7px;font-size:11px;font-weight:800;line-height:1.2;display:block;overflow:hidden}.calendar-chip.english{color:var(--blue);background:var(--blue-soft)}.calendar-chip.art{color:#8b4d73;background:#f6e7ef}.calendar-chip.mixed{color:var(--amber);background:var(--amber-soft)}.calendar-chip.consumed{color:#67706a;background:#e7e9e4}.calendar-more{color:var(--muted);background:#eeeae1}.drawer-layer,.modal-layer{z-index:20;position:fixed;inset:0}.drawer-layer{justify-content:flex-end;display:flex}.drawer-backdrop,.modal-backdrop{background:#17212657;position:absolute;inset:0}.schedule-drawer{z-index:1;border-left:1px solid var(--line);background:var(--panel);width:min(620px,100vw - 28px);height:100vh;padding:20px;position:relative;overflow:hidden;box-shadow:-22px 0 44px #1721262e}.drawer-header,.course-modal-header{justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px;display:flex}.drawer-header span,.course-modal-header span{color:var(--green);font-size:12px;font-weight:900;display:block}.drawer-header strong,.course-modal-header strong{margin-top:4px;font-size:22px;line-height:1.2;display:block}.icon-button{border:1px solid var(--line);width:34px;height:34px;color:var(--ink);background:var(--paper);cursor:pointer;border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.icon-button:hover{background:#f1eee6}.drawer-empty{border:1px dashed var(--line);background:var(--paper);border-radius:8px;gap:6px;padding:16px;display:grid}.drawer-empty span{color:var(--muted);font-size:13px}.selected-day-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}.timeline-shell{grid-template-columns:52px minmax(0,1fr);gap:10px;max-height:560px;padding-right:4px;display:grid;overflow-y:auto}.drawer-timeline-shell{max-height:calc(100vh - 178px)}.timeline-hours,.timeline-stage{height:1296px;position:relative}.timeline-hours span{color:var(--muted);font-size:11px;font-weight:800;position:absolute;right:0;transform:translateY(-50%)}.timeline-stage{border-left:1px solid var(--line)}.timeline-grid-line{background:#ecefea;width:100%;height:1px;position:absolute;left:0}.timeline-grid-line:nth-child(2n){background:#e1e6e1}.timeline-course-card{color:#153246;cursor:pointer;text-align:left;background:#eaf3fa;border:1px solid #246a9b38;border-radius:8px;align-content:start;gap:4px;min-width:120px;padding:9px 10px;transition:border-color .16s,box-shadow .16s,transform .16s;display:grid;position:absolute;overflow:hidden;box-shadow:0 10px 22px #1721261a}.timeline-course-card:hover{transform:translateY(-1px)}.timeline-course-card.selected{border-color:#1f7a5ac7;box-shadow:0 10px 22px #1721261f,0 0 0 2px #1f7a5a29}.timeline-course-card.art{color:#5c2c48;background:#f7eaf1;border-color:#8b4d7338}.timeline-course-card.mixed{color:#6d410f;background:#f8ead7;border-color:#a7641a3d}.timeline-course-card.consumed{color:#5f6962;box-shadow:none;background:#e9ebe6;border-color:#d1d7d2}.timeline-course-card.consumed.selected{border-color:#5f6962b8;box-shadow:0 0 0 2px #5f696224}.timeline-course-time,.timeline-course-meta,.timeline-course-foot{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.timeline-course-time{font-size:11px;font-weight:900}.timeline-course-card strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:1.25;overflow:hidden}.timeline-course-meta,.timeline-course-foot{font-size:11px}.timeline-course-meta{color:#172126b8}.timeline-course-foot{margin-top:2px;font-weight:800}.course-action-panel{border:1px solid var(--line);background:var(--paper);border-radius:8px;gap:12px;margin-bottom:14px;padding:14px;display:grid}.modal-layer{place-items:center;padding:22px;display:grid}.course-modal{z-index:1;border:1px solid var(--line);background:var(--panel);border-radius:10px;width:min(1040px,100%);max-height:calc(100vh - 44px);padding:18px;position:relative;overflow-y:auto;box-shadow:0 24px 70px #1721263d}.course-modal-header{margin-bottom:12px}.modal-action-panel{margin-bottom:0}.course-modal-grid{grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);align-items:start;gap:14px;display:grid}.course-action-panel.empty{color:var(--muted)}.course-action-panel.empty strong,.course-action-panel.empty span{display:block}.course-action-panel.empty span{margin-top:4px;font-size:13px}.course-action-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.course-action-header span,.course-action-facts span,.course-student-main span{color:var(--muted);font-size:12px}.course-action-header strong{margin-top:4px;font-size:16px;line-height:1.3;display:block}.status-summary{min-height:28px;color:var(--amber);background:var(--amber-soft);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;padding:0 9px;font-size:12px;font-weight:900;display:inline-flex}.status-summary.complete{color:#67706a;background:#e7e9e4}.course-action-facts{flex-wrap:wrap;gap:7px;display:flex}.course-action-facts span{background:#f1eee6;border-radius:999px;padding:5px 8px;font-weight:800}.course-operation-section{border-top:1px solid var(--line);gap:10px;padding-top:12px;display:grid}.course-section-header{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.course-section-header strong{font-size:14px}.course-section-header span{max-width:220px;color:var(--muted);text-align:right;font-size:12px;line-height:1.45}.attendance-rules{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.attendance-rules div{background:#f7f2e8;border-radius:8px;gap:4px;padding:9px;display:grid}.attendance-rules strong{font-size:13px}.attendance-rules span{color:var(--muted);font-size:12px;line-height:1.45}.course-roster{gap:8px;display:grid}.course-roster-row{border:1px solid var(--line);background:#fffdf8;border-radius:8px;grid-template-columns:minmax(92px,1fr) auto;align-items:center;gap:8px;padding:10px;display:grid}.course-roster-row.locked{background:#f1f2ee}.course-student-main{gap:2px;display:grid}.placement-draft-note{color:#1f6f52;background:#e8f4ec;border-radius:7px;grid-column:1/-1;padding:7px 8px;font-size:12px;font-weight:800}.course-student-actions{flex-wrap:wrap;grid-column:1/-1;gap:7px;display:flex}.course-student-actions button{min-height:32px;color:var(--ink);cursor:pointer;background:#f0eee8;border:0;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:0 9px;display:inline-flex}.course-student-actions button:hover:not(:disabled){background:#e4dfd4}.course-student-actions button:disabled{cursor:not-allowed;opacity:.45}.course-student-actions .danger-action{color:#8a2c2a;background:#f7e8e5}.course-student-actions .danger-action:hover:not(:disabled){background:#efd4cf}.attendance-confirm-layer{z-index:40;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.attendance-confirm-backdrop{background:#1721266b;position:absolute;inset:0}.attendance-confirm-card{z-index:1;border:1px solid var(--line);background:var(--panel);border-radius:10px;gap:14px;width:min(520px,100%);padding:16px;display:grid;position:relative;box-shadow:0 22px 58px #17212642}.attendance-confirm-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.attendance-confirm-header span{color:var(--green);font-size:12px;font-weight:900;display:block}.attendance-confirm-header strong{margin-top:4px;font-size:20px;line-height:1.25;display:block}.attendance-confirm-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;display:grid}.attendance-confirm-facts div{border:1px solid var(--line);background:var(--paper);border-radius:8px;gap:4px;min-height:64px;padding:10px;display:grid}.attendance-confirm-facts dt{color:var(--muted);font-size:12px;font-weight:800}.attendance-confirm-facts dd{margin:0;font-size:13px;font-weight:900;line-height:1.35}.confirmation-impact{border-radius:8px;gap:5px;padding:11px;display:grid}.confirmation-impact strong{font-size:14px}.confirmation-impact span{color:var(--muted);font-size:13px;line-height:1.45}.confirmation-impact.settle{background:#e8f4ec}.confirmation-impact.warning{background:#f7e8e5}.attendance-reason-field{color:var(--muted);gap:7px;font-size:12px;font-weight:900;display:grid}.attendance-reason-field textarea{resize:vertical;border:1px solid var(--line);width:100%;color:var(--ink);font:inherit;background:#fffdf8;border-radius:8px;padding:10px}.attendance-confirm-actions{justify-content:flex-end;gap:8px;display:flex}.secondary-action,.primary-confirm-action,.danger-confirm-action{cursor:pointer;border:0;border-radius:8px;min-height:38px;padding:0 13px;font-weight:900}.secondary-action{color:var(--ink);background:#f0eee8}.primary-confirm-action{color:#fff;background:var(--green)}.danger-confirm-action{color:#fff;background:#9d3a34}.primary-confirm-action:disabled,.danger-confirm-action:disabled{cursor:not-allowed;opacity:.45}.scheduling-section{gap:12px}.schedule-action-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.schedule-action{border:1px solid var(--line);min-height:76px;color:var(--ink);text-align:left;cursor:pointer;background:#fffdf8;border-radius:8px;gap:4px;padding:10px;display:grid}.schedule-action strong{font-size:13px}.schedule-action span{color:var(--muted);font-size:12px;line-height:1.4}.schedule-action.active{background:#edf6f0;border-color:#1f7a5ab8;box-shadow:0 0 0 2px #1f7a5a1f}.schedule-draft-panel{background:#f8faf6;border:1px solid #1f7a5a33;border-radius:8px;gap:10px;padding:12px;display:grid}.schedule-draft-head{justify-content:space-between;gap:10px;display:flex}.schedule-draft-head span{color:var(--muted);font-size:12px;font-weight:800}.schedule-draft-head strong{font-size:14px}.schedule-draft-panel dl{gap:8px;margin:0;display:grid}.schedule-draft-panel dl div{grid-template-columns:68px minmax(0,1fr);gap:10px;display:grid}.schedule-draft-panel dt{color:var(--muted);font-size:12px;font-weight:800}.schedule-draft-panel dd{color:var(--ink);margin:0;font-size:12px;line-height:1.45}.placement-form{gap:10px;padding-top:4px;display:grid}.placement-form label{color:var(--muted);gap:6px;font-size:12px;font-weight:900;display:grid}.placement-form select,.placement-form textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:var(--paper);font:inherit;border-radius:8px}.placement-form select{min-height:38px;padding:0 10px}.placement-form textarea{resize:vertical;min-height:76px;padding:10px}.placement-saved{color:var(--green);background:var(--green-soft);border-radius:8px;padding:9px 10px;font-size:12px;font-weight:900}.primary-action.compact{color:#fff;background:var(--green);width:fit-content;min-height:34px;margin-top:0;padding:0 12px}.primary-action.compact:hover:not(:disabled){background:#19654a}.primary-action.compact:disabled{cursor:not-allowed;opacity:.45}.secondary-action.compact{width:fit-content;min-height:34px;padding:0 11px;font-size:12px}.stacked-panels{gap:18px;display:grid}.panel{border-radius:8px;min-width:0;padding:20px}.wide-panel{min-height:420px}.compact-panel{position:sticky;top:20px}.section-title{gap:3px;margin-bottom:18px;display:grid}.section-title h2{color:var(--ink);font-size:20px;line-height:1.25}.section-title span{color:var(--muted);font-size:13px;line-height:1.55}.session-list,.student-list,.ledger-list,.slot-list,.offering-grid,.guard-grid{gap:10px;display:grid}.session-row{border:1px solid var(--line);background:var(--paper);border-radius:8px;grid-template-columns:86px minmax(0,1fr) 96px auto;align-items:center;gap:14px;padding:14px;display:grid}.session-time{gap:4px;display:grid}.session-time strong{font-size:19px}.session-time span,.session-main p,.slot-list span,.student-item small{color:var(--muted);font-size:12px}.session-main{justify-content:space-between;align-items:center;gap:14px;min-width:0;display:flex}.session-main h3{flex-wrap:wrap;align-items:center;gap:8px;font-size:16px;display:flex}.session-main h3 span{color:var(--blue);font-size:12px;font-weight:700}.session-money{text-align:right;font-weight:800}.row-actions{flex-wrap:wrap;justify-content:flex-end;gap:7px;display:flex}.row-actions button,.primary-action{color:var(--ink);background:#f0eee8;padding:0 10px}.row-actions button:hover:not(:disabled),.primary-action:hover{background:#e4dfd4}.row-actions button:disabled{cursor:not-allowed;opacity:.45}.status-badge{white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;width:fit-content;min-height:28px;padding:0 9px;font-size:12px;font-weight:800;display:inline-flex}.status-badge.not_started{color:var(--blue);background:var(--blue-soft)}.status-badge.attended,.status-badge.makeup_completed{color:var(--green);background:var(--green-soft)}.status-badge.leave_pending_makeup,.status-badge.absent_pending_followup{color:var(--amber);background:var(--amber-soft)}.status-badge.refunded,.status-badge.transferred_out{color:var(--red);background:var(--red-soft)}.status-badge.cancelled{color:#545f66;background:#eaedef}.summary-list{gap:10px;margin:0;display:grid}.summary-list div{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.summary-list dd{margin:0;font-size:19px;font-weight:800}.student-picker{min-height:420px}.student-item{border:1px solid var(--line);width:100%;color:var(--ink);background:var(--paper);justify-content:flex-start;padding:12px}.student-item span{text-align:left;min-width:48px;font-weight:800}.student-item.active{background:var(--green-soft);border-color:#1f7a5a6b}.tag-row,.gift-rule-row{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.tag-row span{color:var(--blue);background:var(--blue-soft);border-radius:999px;padding:6px 9px;font-size:12px;font-weight:800}.student-enrollment-switch{background:var(--green-soft);border:1px solid #cfe0d5;border-radius:8px;grid-template-columns:minmax(0,1fr) minmax(240px,.7fr);align-items:center;gap:12px;margin-bottom:14px;padding:12px;display:grid}.student-enrollment-switch strong,.student-enrollment-switch span{display:block}.student-enrollment-switch span{color:var(--muted);margin-top:3px;font-size:12px;line-height:1.45}.student-enrollment-switch select{border:1px solid var(--line);width:100%;min-height:38px;color:var(--ink);font:inherit;background:#fffdf8;border-radius:8px;padding:9px 10px}.mini-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:18px;display:grid}.mini-stat{border:1px solid var(--line);background:var(--paper);border-radius:8px;padding:12px}.mini-stat strong{margin-top:6px;font-size:18px;display:block}.table-block{gap:10px;margin-top:16px;display:grid}.table-block h3{font-size:15px}.data-table{border:1px solid var(--line);border-radius:8px;overflow:hidden}.table-head,.table-row{align-items:center;gap:10px;min-height:44px;padding:0 12px;display:grid}.table-head{color:var(--muted);background:#f3f0e8;font-size:12px;font-weight:800}.table-row{border-top:1px solid var(--line);font-size:13px}.four-cols{grid-template-columns:1fr .7fr 1fr .8fr}.billing-cols{grid-template-columns:.65fr 1.28fr .68fr .68fr .62fr 1.25fr}.billing-toolbar{justify-content:flex-end;margin-bottom:12px;display:flex}.billing-row-actions{flex-wrap:wrap;gap:6px;display:flex}.billing-row-actions button{min-height:30px;color:var(--green);cursor:pointer;background:#edf5ef;border:1px solid #cfe0d5;border-radius:8px;justify-content:center;align-items:center;gap:5px;padding:0 9px;font-size:12px;font-weight:900;display:inline-flex}.billing-row-actions button:hover{background:#e2efe6}.billing-row-actions .transfer-action-button{color:var(--blue);background:var(--blue-soft);border-color:#d3dbe2}.billing-row-actions .transfer-action-button:hover{background:#dbe9f3}.panel-title-action{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px;margin-bottom:14px;display:grid}.package-cols{grid-template-columns:.8fr 1fr .7fr 1fr}.entitlement-layout{grid-template-columns:minmax(0,.95fr) minmax(420px,1.05fr)}.entitlement-catalog{gap:10px;display:grid}.entitlement-card{border:1px solid var(--entitlement-line,var(--line));border-left:5px solid var(--entitlement-accent,var(--green));background:linear-gradient(90deg, var(--entitlement-soft,var(--green-soft)) 0, var(--paper) 36%);border-radius:8px;gap:9px;padding:12px;display:grid}.entitlement-card.category-gift,.entitlement-template-card.category-gift{--entitlement-accent:var(--green);--entitlement-soft:var(--green-soft);--entitlement-line:#cfe0d5}.entitlement-card.category-cash,.entitlement-template-card.category-cash{--entitlement-accent:var(--amber);--entitlement-soft:var(--amber-soft);--entitlement-line:#ead7bd}.entitlement-card.category-discount,.entitlement-template-card.category-discount{--entitlement-accent:var(--blue);--entitlement-soft:var(--blue-soft);--entitlement-line:#c9dce9}.entitlement-card.category-neutral,.entitlement-template-card.category-neutral{--entitlement-accent:var(--violet);--entitlement-soft:var(--violet-soft);--entitlement-line:#ddd0eb}.entitlement-card-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.entitlement-card-head div{gap:3px;display:grid}.entitlement-card-head strong{font-size:14px;line-height:1.3}.entitlement-card-head small{color:var(--muted);font-size:11px;font-weight:900}.entitlement-type-badge{color:var(--entitlement-accent,var(--green));background:var(--entitlement-soft,var(--green-soft));border-radius:999px;flex:none;padding:4px 7px;font-size:11px;font-weight:900}.entitlement-card p{color:var(--muted);margin:0;font-size:12px;line-height:1.45}.entitlement-card dl{gap:7px;margin:0;display:grid}.entitlement-card dl div{justify-content:space-between;gap:10px;display:flex}.entitlement-card dt{color:var(--muted);font-size:12px}.entitlement-card dd{text-align:right;margin:0;font-size:12px;font-weight:900}.entitlement-edit-button{min-height:34px;color:var(--green);background:var(--green-soft);border:1px solid #cfe0d5;border-radius:8px;justify-content:center;align-items:center;gap:7px;font-size:12px;font-weight:900;display:inline-flex}.entitlement-edit-button:hover{background:#e2efe6}.entitlement-pricing-panel{align-self:start}.pricing-student-select{color:var(--muted);gap:7px;font-size:12px;font-weight:900;display:grid}.pricing-student-select select{border:1px solid var(--line);width:100%;min-height:40px;color:var(--ink);font:inherit;background:#fffdf8;border-radius:8px;padding:9px 10px}.pricing-metric-grid{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-top:14px;display:grid}.entitlement-lines{gap:8px;margin-top:16px;display:grid}.empty-entitlement{border:1px dashed var(--line);color:var(--muted);background:var(--paper);border-radius:8px;padding:12px;font-size:13px}.entitlement-line{border:1px solid var(--line);background:var(--paper);border-radius:8px;grid-template-columns:minmax(0,1fr) 148px auto;align-items:center;gap:10px;padding:10px;display:grid}.entitlement-line strong,.entitlement-line span{display:block}.entitlement-line span,.entitlement-line small{color:var(--muted);font-size:12px}.entitlement-line em{color:var(--green);background:var(--green-soft);white-space:nowrap;border-radius:999px;justify-self:end;padding:5px 8px;font-size:12px;font-style:normal;font-weight:900}.entitlement-line.is-excluded{color:var(--muted);background:#f7f5ef;border-style:dashed}.entitlement-line.is-excluded em{color:var(--muted);background:#ebe7dd}.entitlement-edit-modal{width:min(900px,100%)}.entitlement-template-modal{width:min(760px,100%)}.entitlement-template-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.entitlement-template-card{border:1px solid var(--entitlement-line,var(--line));border-top:5px solid var(--entitlement-accent,var(--green));min-height:178px;color:var(--ink);background:linear-gradient(180deg, var(--entitlement-soft,var(--green-soft)) 0, #fffdf8 42%);text-align:left;cursor:pointer;border-radius:8px;gap:8px;padding:14px;display:grid}.entitlement-template-card:hover{border-color:var(--entitlement-accent,var(--green));background:var(--entitlement-soft,var(--green-soft))}.entitlement-template-card span{width:fit-content;color:var(--entitlement-accent,var(--green));background:#fffdf8;border-radius:999px;padding:4px 7px;font-size:11px;font-weight:900}.entitlement-template-card strong{font-size:17px}.entitlement-template-card small{color:var(--muted);font-size:12px;line-height:1.45}.entitlement-template-card em{color:var(--ink);align-self:end;font-size:12px;font-style:normal;font-weight:900}.entitlement-edit-form fieldset{gap:12px}.selected-entitlement-template{border:1px solid var(--line);min-height:38px;color:var(--ink);background:#fffdf8;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px 8px;padding:9px 10px;display:grid}.selected-entitlement-template span{color:var(--muted);grid-column:1/-1;font-size:11px;font-weight:900}.selected-entitlement-template strong{font-size:14px}.selected-entitlement-template button{min-height:28px;color:var(--green);background:var(--green-soft);cursor:pointer;border:1px solid #cfe0d5;border-radius:8px;padding:0 8px;font-size:12px;font-weight:900}.selected-entitlement-template button:hover{background:#e2efe6}.entitlement-toggle-grid{grid-template-columns:minmax(220px,.8fr) minmax(0,1.2fr);gap:10px;display:grid}.entitlement-toggle-grid label{border:1px solid var(--line);min-height:38px;color:var(--ink);background:#fffdf8;border-radius:8px;align-items:center;padding:9px 10px;display:flex}.entitlement-toggle-grid input{width:auto;min-height:auto;margin:0 7px 0 0}.entitlement-simple-note{border:1px dashed var(--line);min-height:38px;color:var(--muted);background:#fbf8f1;border-radius:8px;align-items:center;padding:9px 10px;font-size:12px;line-height:1.45;display:flex}.gift-fulfillment-note{color:var(--ink);background:#fff8eb;border:1px dashed #ead7bd;border-radius:8px;grid-template-columns:auto minmax(0,1fr);gap:6px 10px;padding:11px;font-size:12px;line-height:1.45;display:grid}.gift-fulfillment-note strong{color:var(--amber)}.gift-fulfillment-note span{color:var(--muted)}.gift-redemption-note{color:var(--muted);background:#fff8eb;border:1px dashed #ead7bd;border-radius:8px;padding:10px 11px;font-size:12px;line-height:1.45}.course-type-check-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.enrollment-draft-modal{width:min(860px,100%)}.enrollment-info-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;gap:10px;display:grid}.enrollment-student-control{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;display:grid}.student-add-button{white-space:nowrap;align-items:center;gap:7px;min-height:38px;padding:0 12px;display:inline-flex}.student-create-layer{z-index:42}.student-create-modal{width:min(640px,100%)}.refund-settlement-modal,.transfer-enrollment-modal{width:min(980px,100%)}.refund-safety{color:var(--green)}.transfer-safety{color:var(--blue)}.refund-order-context{grid-template-columns:1.3fr .75fr .95fr;gap:10px;display:grid}.refund-order-context div{border:1px solid var(--line);background:var(--paper);border-radius:8px;gap:5px;padding:12px;display:grid}.refund-order-context span{color:var(--muted);font-size:12px;font-weight:900}.refund-order-context strong{font-size:14px}.enrollment-entitlement-list{gap:9px;display:grid}.enrollment-entitlement-list label{border:1px solid var(--line);color:var(--ink);background:#fffdf8;border-radius:8px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;padding:11px;display:grid}.enrollment-entitlement-list label.is-excluded{color:var(--muted);background:#f7f5ef;border-style:dashed}.enrollment-entitlement-list input{width:auto;min-height:auto;margin:0}.enrollment-entitlement-list strong,.enrollment-entitlement-list small{display:block}.enrollment-entitlement-list small{color:var(--muted);margin-top:3px;font-size:12px}.enrollment-schedule-preview{color:var(--blue);background:var(--blue-soft);border:1px solid #3568ae2e;border-radius:8px;gap:8px;padding:12px;display:grid}.enrollment-schedule-preview strong,.enrollment-schedule-preview span,.enrollment-schedule-preview small{display:block}.enrollment-schedule-preview strong{color:var(--ink)}.enrollment-schedule-preview span,.enrollment-schedule-preview small{color:var(--muted);margin-top:3px;font-size:12px;line-height:1.45}.enrollment-quote-panel{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.enrollment-quote-panel div{border:1px solid var(--line);background:var(--paper);border-radius:8px;gap:5px;padding:12px;display:grid}.enrollment-quote-panel span{color:var(--muted);font-size:12px;font-weight:900}.enrollment-quote-panel strong{font-size:20px}.payment-input{color:var(--muted);gap:7px;font-size:12px;font-weight:900;display:grid}.payment-input input{border:1px solid var(--line);width:min(260px,100%);min-height:38px;color:var(--ink);background:#fffdf8;border-radius:8px;padding:9px 10px}.enrollment-conflict-panel{color:var(--red);background:var(--red-soft);border:1px solid #b43f2d38;border-radius:8px;gap:10px;padding:12px;display:grid}.enrollment-conflict-panel>div:first-child{align-items:center;gap:8px;display:flex}.enrollment-conflict-panel strong{color:var(--ink)}.enrollment-conflict-panel span,.enrollment-conflict-panel small{color:var(--muted);font-size:12px;line-height:1.45}.enrollment-conflict-list{gap:7px;display:grid}.enrollment-conflict-list div{background:#fff6f1;border-radius:8px;justify-content:space-between;gap:12px;padding:8px 10px;display:flex}.enrollment-conflict-list span{text-align:right}.pricing-action-row{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:-4px;margin-bottom:10px;display:flex}.pricing-action-row .secondary-action{align-items:center;gap:7px;width:auto;display:inline-flex}.refund-preview-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;display:grid}.refund-preview-grid div{border:1px solid var(--line);background:var(--paper);border-radius:8px;align-content:center;gap:5px;min-height:82px;padding:12px;display:grid}.refund-preview-grid span{color:var(--muted);font-size:12px;font-weight:900}.refund-preview-grid strong{font-size:18px}.refund-preview-total{background:var(--green-soft)!important;border-color:#cfe0d5!important}.refund-preview-total strong{color:var(--green)}.refund-form-grid .wide-field,.transfer-form .wide-field{grid-column:1/-1}.adjustment-control{grid-template-columns:minmax(140px,.75fr) minmax(120px,1fr);gap:8px;display:grid}.adjustment-control input:disabled{color:var(--muted);cursor:not-allowed;background:#f2f0ea}.lesson-ledger-panel{border:1px solid var(--line);background:#fffdf8;border-radius:8px;gap:12px;padding:12px;display:grid}.lesson-ledger-head,.transfer-target-panel{justify-content:space-between;align-items:center;gap:12px;display:flex}.lesson-ledger-head span,.transfer-target-panel span{color:var(--muted);font-size:12px;line-height:1.45}.lesson-status-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;display:grid}.compact-table{border-radius:8px;overflow:hidden}.lesson-subject-cols{grid-template-columns:.75fr repeat(5,.68fr) .9fr}.transfer-preview-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;display:grid}.transfer-preview-grid div{border:1px solid var(--line);background:var(--paper);border-radius:8px;align-content:center;gap:5px;min-height:82px;padding:12px;display:grid}.transfer-preview-grid span{color:var(--muted);font-size:12px;font-weight:900}.transfer-preview-grid strong{font-size:18px}.transfer-preview-grid .capacity-warning{background:var(--amber-soft);border-color:#ead7bd}.transfer-target-panel{background:var(--green-soft);border:1px solid #cfe0d5;border-radius:8px;padding:12px}.transfer-target-panel strong{margin-bottom:3px;display:block}.transfer-detail-cols{grid-template-columns:.85fr .55fr 1fr 1.25fr}.transfer-boundary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.transfer-boundary-grid div{border:1px solid var(--line);background:var(--paper);border-radius:8px;gap:6px;padding:12px;display:grid}.transfer-boundary-grid span{color:var(--muted);font-size:12px;line-height:1.45}.refund-flow-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.refund-flow-grid div,.refund-confirm-box,.settlement-guide-grid div{border:1px solid var(--line);background:var(--paper);border-radius:8px;gap:6px;padding:12px;display:grid}.refund-flow-grid span,.refund-confirm-box span,.settlement-guide-grid span{color:var(--muted);font-size:12px;line-height:1.45}.refund-confirm-box label{color:var(--ink);align-items:center;gap:8px;font-size:13px;font-weight:900;display:flex}.refund-confirm-box input{width:auto}.settlement-guide-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.gift-fulfillment-panel{border:1px solid #ead7bd;border-left:5px solid var(--amber);background:#fff8eb;border-radius:8px;gap:9px;padding:12px;display:grid}.gift-fulfillment-panel>div:first-child{gap:4px;display:grid}.gift-fulfillment-panel strong,.gift-fulfillment-panel span,.gift-fulfillment-panel small{display:block}.gift-fulfillment-panel span,.gift-fulfillment-panel small{color:var(--muted);font-size:12px;line-height:1.45}.gift-fulfillment-item{background:#fffdf8;border:1px solid #ead7bd;border-radius:8px;gap:4px;padding:10px;display:grid}.gift-fulfillment-item.is-blocking{background:#fff2ee;border-color:#e7b7aa}.gift-fulfillment-item.is-blocking strong{color:#9a3412}.gift-fulfillment-blocker{color:#9a3412;background:#fff2ee;border:1px solid #e7b7aa;border-radius:8px;padding:10px;font-size:12px;font-weight:800;line-height:1.45}.entitlement-rate-table{margin-top:16px}.entitlement-rate-cols{grid-template-columns:.8fr .8fr .8fr 1fr 1fr}.ledger-row{border:1px solid var(--line);background:var(--paper);border-radius:8px;grid-template-columns:92px 110px minmax(0,1fr) 20px;align-items:center;gap:10px;padding:12px;display:grid}.ledger-row span{color:var(--blue);font-weight:800}.ledger-row small{color:var(--muted)}.gift-strip,.gift-rule-row{margin-top:16px}.gift-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.gift-strip div,.gift-rule-row div{background:#f7f0dc;border-radius:8px;gap:4px;padding:13px;display:grid}.gift-strip span,.gift-rule-row span,.gift-strip small{color:var(--muted);font-size:12px}.offering-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.offering-card{border:1px solid var(--line);background:var(--paper);border-radius:8px;gap:14px;padding:15px;display:grid}.offering-card-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.offering-card-head strong,.offering-card-head span{display:block}.offering-card-head span,.offering-card-head small{color:var(--muted);margin-top:4px;font-size:12px;font-weight:800}.offering-card dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;display:grid}.offering-card dl div{gap:4px;display:grid}.offering-card dt{color:var(--muted);font-size:12px}.offering-card dd{margin:0;font-size:13px;font-weight:900}.offering-edit-button{width:100%;min-height:36px;color:var(--blue);background:var(--blue-soft);cursor:pointer;border:1px solid #3568ae33;border-radius:8px;justify-content:center;align-items:center;gap:7px;font-weight:900;display:inline-flex}.offering-edit-button:hover{background:#e4edf8}.class-edit-layer{z-index:30}.class-edit-modal{z-index:1;border:1px solid var(--line);background:var(--panel);border-radius:10px;gap:14px;width:min(780px,100%);max-height:calc(100vh - 44px);padding:18px;display:grid;position:relative;overflow-y:auto;box-shadow:0 24px 70px #1721263d}.class-offering-create-modal{width:min(880px,100%)}.class-edit-safety{color:var(--green);background:var(--green-soft);border-radius:8px;align-items:flex-start;gap:10px;padding:12px;display:flex}.class-edit-safety strong,.class-edit-safety span{display:block}.class-edit-safety strong{color:var(--ink)}.class-edit-safety span{color:var(--muted);margin-top:4px;font-size:13px;line-height:1.45}.class-edit-form{gap:12px;display:grid}.class-edit-form label,.class-edit-form fieldset{min-width:0;color:var(--muted);gap:7px;font-size:12px;font-weight:900;display:grid}.class-edit-form input,.class-edit-form textarea,.class-edit-form select{border:1px solid var(--line);width:100%;min-height:38px;color:var(--ink);font:inherit;background:#fffdf8;border-radius:8px;padding:9px 10px}.class-edit-form textarea{resize:vertical}.class-edit-form fieldset{border:1px solid var(--line);background:var(--paper);border-radius:8px;margin:0;padding:11px}.class-edit-form legend{color:var(--muted);padding:0 5px}.check-grid{gap:8px;display:grid}.weekday-check-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.slot-check-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.check-grid label{border:1px solid var(--line);min-height:34px;color:var(--ink);white-space:nowrap;background:#fffdf8;border-radius:8px;justify-content:center;align-items:center;padding:0 8px;display:flex}.check-grid input{width:auto;min-height:auto;margin:0 6px 0 0}.class-edit-two-cols,.class-edit-boundaries{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.class-edit-boundaries div{background:#f7f2e8;border-radius:8px;gap:5px;padding:11px;display:grid}.class-edit-boundaries span{color:var(--muted);font-size:12px;line-height:1.45}.form-error-message{color:var(--red);background:var(--red-soft);border:1px solid #b43f2d38;border-radius:8px;padding:10px 12px;font-size:13px;font-weight:900}.class-edit-actions{justify-content:flex-end;gap:8px;display:flex}.guard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.guard-item{border-radius:8px;align-items:flex-start;gap:10px;min-height:92px;padding:14px;display:flex}.guard-item.ok{color:var(--green);background:var(--green-soft)}.guard-item.danger{color:var(--red);background:var(--red-soft)}.guard-item strong,.guard-item span{display:block}.guard-item strong{color:var(--ink)}.guard-item span{margin-top:6px;font-size:13px;line-height:1.45}.slot-list div{border:1px solid var(--line);background:var(--paper);border-radius:8px;grid-template-columns:22px 1fr auto;align-items:center;gap:8px;padding:12px;display:grid}.gift-rule-row{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.formula-strip{grid-template-columns:1fr 32px 1fr 32px 1fr;align-items:center;gap:10px;margin-bottom:18px;display:grid}.formula-strip div{background:var(--paper);border:1px solid var(--line);border-radius:8px;align-content:center;gap:5px;min-height:94px;padding:14px;display:grid}.formula-strip span{color:var(--muted);font-size:13px}.formula-strip strong{font-size:24px}.formula-op{text-align:center;font-size:24px;font-weight:900}.primary-action{color:#fff;background:var(--green);width:100%;margin-top:16px}.primary-action:hover{background:#19654a}@media (width<=1180px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-layout,.content-grid,.entitlement-layout,.course-modal-grid{grid-template-columns:1fr}.day-schedule-panel,.compact-panel{position:static}}@media (width<=820px){.app-shell{grid-template-columns:1fr}.sidebar{z-index:3;padding:14px;position:sticky;top:0}.brand-block{grid-template-columns:36px 1fr}.brand-mark{width:36px;height:36px}.nav-list{grid-template-columns:repeat(5,minmax(0,1fr))}.nav-item{justify-content:center;min-height:44px;padding:8px}.nav-item span,.sidebar-note{display:none}.workspace{padding:18px}.topbar{display:grid}h1{font-size:24px}.metric-grid,.mini-grid,.student-enrollment-switch,.pricing-metric-grid,.offering-grid,.offering-card dl,.guard-grid,.attendance-rules,.attendance-confirm-facts,.weekday-check-grid,.slot-check-grid,.class-edit-two-cols,.enrollment-info-grid,.enrollment-student-control,.entitlement-template-grid,.panel-title-action,.gift-fulfillment-note,.class-edit-boundaries,.entitlement-toggle-grid,.course-type-check-grid,.enrollment-quote-panel,.refund-preview-grid,.refund-order-context,.refund-flow-grid,.lesson-status-grid,.lesson-subject-cols,.transfer-preview-grid,.transfer-detail-cols,.transfer-boundary-grid,.settlement-guide-grid,.schedule-action-grid,.gift-rule-row,.gift-strip,.adjustment-control{grid-template-columns:1fr}.lesson-ledger-head,.transfer-target-panel,.attendance-confirm-actions,.enrollment-conflict-list div{display:grid}.enrollment-conflict-list span{text-align:left}.class-edit-layer{padding:12px}.class-edit-modal{max-height:calc(100vh - 24px);padding:14px}.class-edit-actions,.course-section-header{display:grid}.course-section-header span{text-align:left;max-width:none}.month-toolbar{display:grid}.month-toolbar span{text-align:left}.calendar-weekdays,.month-grid{min-width:760px}.calendar-panel{overflow-x:auto}.calendar-day{min-height:128px}.selected-day-strip{grid-template-columns:1fr}.timeline-shell{grid-template-columns:46px minmax(520px,1fr);overflow-x:auto}.schedule-drawer{width:100vw;padding:16px}.modal-layer{padding:12px}.course-modal{max-height:calc(100vh - 24px);padding:14px}.session-row{grid-template-columns:1fr}.session-money,.row-actions{text-align:left;justify-content:flex-start}.four-cols,.billing-cols,.package-cols,.entitlement-rate-cols{grid-template-columns:minmax(110px,1fr) minmax(120px,1fr) minmax(90px,1fr) minmax(100px,1fr);min-width:560px}.billing-cols{grid-template-columns:90px 170px 110px 110px 100px}.entitlement-rate-cols{grid-template-columns:90px 90px 100px 110px 110px}.entitlement-line{grid-template-columns:1fr}.entitlement-line em{justify-self:start}.data-table{overflow-x:auto}.formula-strip{grid-template-columns:1fr}.formula-op{display:none}}
