.credit-cards.four{grid-template-columns:repeat(4,1fr)}.compact{padding:7px 10px;font-size:11px}.badge.gray{background:#eff0eb;color:#707269}.badge.blue{background:#e6ecff;color:#526bbd}.pass-price{font:10px 'DM Mono',monospace;color:#6f7369;margin-top:5px}.pass-ledger{display:flex;gap:10px;flex-wrap:wrap;margin-top:9px;font-size:10px;color:#6d7068}.pass-actions{display:flex;justify-content:space-between;align-items:center;margin-top:11px}.pass-actions small{font-size:9px;color:#566bb0}.mini-action{border:1px solid #ced89e;background:#f7fae8;color:#586431;border-radius:5px;padding:5px 9px;font:700 10px var(--font);cursor:pointer}.reservation-note{font-size:11px;line-height:1.7;background:#f5f7eb;border-left:3px solid #b6d63b;border-radius:4px;padding:11px 12px;color:#676a61}.extension-summary{display:grid;gap:5px;background:#f6f7f0;border-radius:6px;padding:11px;margin-bottom:16px;font-size:11px}.extension-summary span{color:#74766e}.quick-dates{display:flex;gap:8px;margin:10px 0 16px}.quick-dates button{border:1px solid #dfe4c4;border-radius:5px;background:#f9fbef;color:#596235;padding:7px 10px;font:700 11px var(--font);cursor:pointer}@media(max-width:740px){.credit-cards.four{grid-template-columns:1fr 1fr}.pass-ledger{gap:7px}}
.pass-ledger .debt-offset{color:#9a5b00;background:#fff3db;font-weight:700}
.login-page{min-height:100vh;display:grid;place-items:center;background:#f5f3ee;padding:24px}.login-card{width:min(420px,100%);background:#fff;padding:40px;border:1px solid #e8e4db;border-radius:14px;box-shadow:0 18px 44px #352f1b12}.login-card .brand-mark{margin-bottom:22px}.login-card h1{margin:6px 0 8px}.login-card p{color:#73736c;font-size:13px;line-height:1.7;margin-bottom:24px}.login-card .primary-btn{width:100%;margin-top:18px}.login-error{color:#b53f3f!important;min-height:20px;margin:8px 0 0!important}
.ledger-link{border:0;background:#f7f5f1;color:#53651e;font:inherit;cursor:pointer;padding:4px 7px;border-radius:5px;text-decoration:underline}.class-preview-row{display:grid;grid-template-columns:90px 1fr auto;gap:9px;align-items:center;padding:10px 0;border-bottom:1px solid #efede8;font-size:11px}.class-preview-row:last-child{border-bottom:0}.class-preview-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.class-preview-row small{color:#777970}
.pass-actions [data-extend],.pass-actions [data-rename]{display:none}.danger-btn{border:1px solid #e2a5a0;background:#fff3f1;color:#a23832;border-radius:5px;padding:8px 11px;font:700 11px var(--font);cursor:pointer}
.class-ledger-head,.class-ledger-row{grid-template-columns:1.05fr .88fr 1fr 1.5fr .62fr .86fr}.class-ledger-row{min-height:58px;padding-top:12px;padding-bottom:12px}.class-ledger-row>div:nth-child(2),.class-ledger-row>div:nth-child(5){white-space:nowrap}.class-ledger-row em{font-size:10px;font-weight:600}.class-row-actions{display:flex;gap:6px;flex-wrap:wrap}.danger-mini{border-color:#e4b3ae;background:#fff6f4;color:#9d4039}
.class-overview-title{display:flex;align-items:baseline;gap:10px;margin:2px 0 10px;font-weight:800;font-size:13px}.class-overview-title small{font-weight:400;font-size:10px;color:#84867d}.recharge-stat-grid .class-stat{border:1px solid #e8e8e2;border-radius:9px;background:#fffefa;padding:16px;text-align:left;cursor:pointer;font:inherit}.recharge-stat-grid .class-stat:hover{border-color:#b6d63b;background:#fbfdf1}.recharge-stat-grid .class-stat strong{font:800 21px 'DM Mono',monospace;display:block}.recharge-stat-grid .class-stat span{font-size:10px;color:#777970;margin-top:6px;display:block}.recharge-stat-grid .class-stat.danger strong{color:#c95757}.history-deduct-check{display:block;margin:-4px 0 14px;color:#885d16;font-size:11px;line-height:1.5}.history-deduct-check input{margin-right:6px}
.finance-tabs{display:flex;gap:8px;margin:0 0 16px}.finance-tabs button{border:1px solid #dedfd7;background:#fffefa;border-radius:6px;padding:8px 12px;font:700 11px var(--font);cursor:pointer}.finance-tabs button.active{background:#dbfa43;border-color:#c9e631}.finance-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.finance-card{border:1px solid #e8e8e2;border-radius:9px;background:#fffefa;padding:16px;min-height:96px}.finance-card small,.finance-card span{display:block;color:#777970;font-size:10px}.finance-card strong{display:block;font:800 24px 'DM Mono',monospace;margin:10px 0 7px}.finance-card.emphasis{background:#f2fac9;border-color:#dceca6}.finance-card.negative strong{color:#c95757}.finance-card.warning{background:#fff8e8}.finance-note,.finance-tax-strip{display:flex;gap:14px;align-items:center;flex-wrap:wrap;background:#f5f7eb;border-left:3px solid #b6d63b;border-radius:4px;padding:12px;margin:16px 0;font-size:11px;color:#676a61}.finance-note span,.finance-tax-strip span{font-size:10px}.finance-ledger{grid-template-columns:1fr 1.25fr .75fr 1.1fr .8fr}@media(max-width:900px){.finance-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:540px){.finance-grid{grid-template-columns:1fr}.finance-note,.finance-tax-strip{align-items:flex-start}}
.finance-course-income{margin-top:16px;background:#fffefa;border:1px solid #e8e8e2;border-radius:9px;padding:16px}.finance-course-head,.finance-course-row{display:grid;grid-template-columns:1.5fr .7fr .7fr .7fr .8fr;gap:12px;align-items:center}.finance-course-head{padding:0 0 9px;border-bottom:1px solid #e8e8e2;color:#85877e;font-size:10px}.finance-course-row{padding:12px 0;border-bottom:1px solid #efeee9;font-size:11px}.finance-course-row:last-child{border-bottom:0}.finance-course-row span{color:#777970}.finance-course-row strong{text-align:right;font:800 12px 'DM Mono',monospace}.finance-course-name{border:0;background:none;color:#4c5d1e;font:800 11px var(--font);padding:0;text-align:left;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.modal-wide{width:min(920px,94vw)}.finance-course-ledger{grid-template-columns:1fr 1.25fr 1.15fr .8fr}@media(max-width:540px){.finance-course-head{display:none}.finance-course-row{grid-template-columns:1fr 1fr}.finance-course-row strong{text-align:left}.finance-course-ledger{grid-template-columns:1fr 1fr}}
.income-recalculate{border:0;background:none;padding:0;color:#586a24;font:inherit;text-decoration:underline;cursor:pointer}
.income-missing-price{color:#a36d17!important;font-family:var(--font)!important;font-size:11px!important}
.finance-period-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;border:1px solid #e6e7df;border-radius:9px;background:#fffefa;padding:10px 12px;margin:0 0 14px}.finance-period-presets{display:flex;gap:5px;flex-wrap:wrap}.finance-period-presets button{border:1px solid #dedfd7;background:#fffefa;border-radius:5px;padding:7px 10px;font:700 11px var(--font);cursor:pointer;color:#55574f}.finance-period-presets button.active{background:#dbfa43;border-color:#c9e631;color:#1f2417}.finance-period-selects{display:flex;gap:7px;align-items:center;margin-left:auto}.finance-period-selects select{min-width:84px}.finance-range-caption{width:100%;margin:0;color:#777970;font-size:10px}.finance-custom-range{display:flex;gap:7px;align-items:center;flex-wrap:wrap;width:100%;padding-top:9px;border-top:1px solid #efeee9;font-size:11px}.finance-custom-range label{display:flex;gap:6px;align-items:center;color:#72746c}.finance-trend{margin-top:16px;border:1px solid #e8e8e2;border-radius:9px;background:#fffefa;padding:16px}.finance-legend{display:flex;gap:13px;flex-wrap:wrap;margin:10px 0 6px;font-size:10px;color:#71736b}.finance-legend span{display:inline-flex;gap:5px;align-items:center}.finance-legend i{width:8px;height:8px;border-radius:99px}.finance-legend .earned,.finance-bar-stack .earned{background:#a8ca32}.finance-legend .cash,.finance-bar-stack .cash{background:#87a7e8}.finance-legend .spent,.finance-bar-stack .spent{background:#dfa29b}.finance-bars{height:150px;display:flex;gap:6px;align-items:stretch;border-bottom:1px solid #e4e5df;padding-top:10px;overflow-x:auto}.finance-bar-group{min-width:30px;flex:1;display:grid;grid-template-rows:1fr 19px;gap:4px;text-align:center}.finance-bar-stack{display:flex;gap:2px;justify-content:center;align-items:flex-end}.finance-bar-stack i{width:7px;min-height:0;border-radius:3px 3px 0 0}.finance-bar-group small{font-size:9px;color:#7b7d75;white-space:nowrap}
@media(max-width:860px){.finance-period-selects{margin-left:0}}@media(max-width:540px){.finance-period-selects{width:100%}.finance-period-selects select{flex:1}.finance-custom-range{align-items:flex-start;flex-direction:column}}
.section-actions{margin-left:auto;display:flex;gap:7px}
.low-credit-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#e2a33d;margin:0 0 1px 6px}.low-credit-followup{background:#fff9eb}.low-credit-row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:10px 0;border-bottom:1px solid #efe7d3}.low-credit-row:last-child{border-bottom:0}.low-credit-row b,.low-credit-row small{display:block}.low-credit-row b{font-size:11px}.low-credit-row small{font-size:10px;color:#8a7140;margin-top:4px}.low-credit-actions{display:flex;gap:6px;flex-wrap:wrap}.low-credit-actions button[disabled]{opacity:.45;cursor:not-allowed}@media(max-width:620px){.low-credit-row{align-items:flex-start;flex-direction:column}}
.pass-balance{font-size:10px;color:#75776e;margin-top:4px}.pass-actions small{max-width:220px;line-height:1.5;color:#8a7140}
.course-toolbar{display:flex;gap:8px;align-items:center;margin:0 0 16px}.view-switch{display:flex;border:1px solid #e4e5dc;border-radius:7px;overflow:hidden}.view-switch button{border:0;border-right:1px solid #e4e5dc;background:#fffefa;padding:8px 12px;font:700 11px var(--font);cursor:pointer}.view-switch button:last-child{border-right:0}.view-switch button.active{background:#dbfa43}.course-board{display:grid;gap:10px}.course-board.month{grid-template-columns:repeat(3,minmax(0,1fr))}.course-card{border:1px solid #e6e7dd;background:#fffefa;border-radius:9px;padding:14px;text-align:left;font:inherit;cursor:pointer;color:inherit}.course-card:hover{border-color:#b6d63b}.course-card-top{display:flex;justify-content:space-between;gap:8px;margin:7px 0}.course-time,.course-card small{display:block;color:#76786f;font-size:10px}.capacity-line{display:flex;align-items:center;gap:8px;margin:13px 0 6px;font-size:10px}.capacity-line i,.course-progress{height:5px;flex:1;background:#eceee7;border-radius:9px;overflow:hidden}.capacity-line em,.course-progress em{display:block;height:100%;background:#a8ca32;border-radius:9px}.course-warning{color:#ad7413!important}.course-detail-grid{display:grid;gap:16px}.course-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.course-summary>div{border:1px solid #e8e8e2;border-radius:8px;background:#fffefa;padding:13px}.course-summary small,.course-summary b{display:block}.course-summary small{color:#777970;font-size:10px;margin-bottom:8px}.course-actions{display:flex;align-items:end;gap:7px}.enrollment-head{grid-template-columns:1.1fr 1.2fr .9fr .8fr .7fr}.completion-list{display:grid;gap:8px}.completion-row{display:grid;grid-template-columns:1fr 1.2fr .7fr;gap:8px;align-items:center;padding:9px;border:1px solid #e6e7dd;border-radius:6px}.completion-row select,.completion-row input{min-width:0}.course-progress{display:block;margin-top:10px}@media(max-width:860px){.course-board.month{grid-template-columns:1fr 1fr}.course-summary{grid-template-columns:1fr 1fr}.section-actions{margin-left:0;flex-wrap:wrap}}@media(max-width:540px){.course-board.month{grid-template-columns:1fr}.course-summary{grid-template-columns:1fr}.course-toolbar{flex-wrap:wrap}.enrollment-head{grid-template-columns:1fr 1fr}.completion-row{grid-template-columns:1fr}}
