.brand-logo{object-fit:contain;background:#fff;border-radius:var(--radius);flex-shrink:0}.brand-logo--sidebar{width:42px;height:42px;padding:4px}.brand-logo--login{width:84px;height:84px;padding:6px;margin-bottom:1rem;box-shadow:0 8px 24px #0d1b3e59}.ap-fab{position:fixed;right:1.25rem;bottom:1.25rem;z-index:90;display:inline-flex;align-items:center;gap:.45rem;padding:.7rem 1.1rem;border:none;border-radius:999px;background:linear-gradient(135deg,var(--navy) 0%,var(--blue-mid) 100%);color:#fff;font-family:Plus Jakarta Sans,sans-serif;font-weight:700;font-size:.875rem;box-shadow:0 6px 20px #0d1b3e47;cursor:pointer;transition:transform .15s,box-shadow .15s}.ap-fab:hover{transform:translateY(-1px);box-shadow:0 8px 24px #0d1b3e57}.ap-fab svg{color:var(--green)}.ap-panel{position:fixed;top:0;right:0;bottom:0;z-index:90;width:min(440px,100vw);display:flex;flex-direction:column;background:var(--bg);border-left:1px solid var(--border);box-shadow:-8px 0 32px #0d1b3e24;transition:width .2s}.ap-panel--wide{width:min(760px,100vw)}.ap-panel--drag:after{content:"Thả file vào đây";position:absolute;top:.5rem;right:.5rem;bottom:.5rem;left:.5rem;display:flex;align-items:center;justify-content:center;border:2px dashed var(--blue);border-radius:var(--radius-lg);background:#e8f4fdeb;color:var(--blue-mid);font-weight:700;pointer-events:none}.ap-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:0 .75rem;height:52px;flex-shrink:0;background:linear-gradient(180deg,var(--navy) 0%,var(--navy-deep) 100%);color:#fff;border-top:3px solid var(--blue)}.ap-tabs{display:flex;gap:.25rem}.ap-tabs button{border:none;background:transparent;color:var(--muted-2);font-family:Plus Jakarta Sans,sans-serif;font-weight:700;font-size:.85rem;padding:.4rem .6rem;border-radius:6px;cursor:pointer}.ap-tabs button.active{color:#fff;background:#ffffff1a}.ap-header-actions{display:flex;gap:.25rem}.ap-icon-btn{border:1px solid transparent;background:transparent;color:inherit;min-width:2rem;height:2rem;padding:0 .5rem;border-radius:6px;font-size:.8rem;font-weight:600;cursor:pointer}.ap-header .ap-icon-btn{color:#c9d4ea}.ap-icon-btn:hover:not(:disabled){background:#1a8fe31f}.ap-icon-btn:disabled{opacity:.4;cursor:default}.ap-body{flex:1;overflow-y:auto;padding:1rem .9rem;display:flex;flex-direction:column;gap:.9rem}.ap-empty{color:var(--muted);text-align:center;padding:2rem 0;font-size:.9rem}.ap-welcome p{margin:0 0 .9rem;color:var(--muted);font-size:.9rem}.ap-suggestions{display:flex;flex-direction:column;gap:.45rem}.ap-suggestions button{text-align:left;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);padding:.6rem .75rem;font-size:.85rem;color:var(--text);cursor:pointer}.ap-suggestions button:hover{border-color:var(--blue);background:var(--blue-pale)}.ap-msg--user{align-self:flex-end;max-width:88%;display:flex;flex-direction:column;align-items:flex-end;gap:.35rem}.ap-user-text{background:var(--blue);color:#fff;padding:.55rem .8rem;border-radius:14px 14px 4px;font-size:.9rem;white-space:pre-wrap;overflow-wrap:anywhere}.ap-msg--assistant{display:flex;flex-direction:column;gap:.5rem;min-width:0}.ap-note{align-self:center;max-width:95%;font-size:.78rem;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:.4rem .65rem;white-space:pre-wrap}.ap-tools{font-size:.78rem;color:var(--muted)}.ap-tools summary{cursor:pointer;-webkit-user-select:none;user-select:none}.ap-tools ul{margin:.3rem 0 0;padding-left:1.1rem}.ap-typing{display:flex;gap:4px;padding:.4rem 0}.ap-typing span{width:6px;height:6px;border-radius:50%;background:var(--muted-2);animation:ap-blink 1.2s infinite ease-in-out}.ap-typing span:nth-child(2){animation-delay:.15s}.ap-typing span:nth-child(3){animation-delay:.3s}@keyframes ap-blink{0%,80%,to{opacity:.25}40%{opacity:1}}.ap-md{font-size:.9rem;line-height:1.55;color:var(--text);overflow-wrap:anywhere}.ap-md>:first-child{margin-top:0}.ap-md>:last-child{margin-bottom:0}.ap-md p,.ap-md ul,.ap-md ol{margin:0 0 .6rem}.ap-md ul,.ap-md ol{padding-left:1.2rem}.ap-md h1,.ap-md h2,.ap-md h3,.ap-md h4{font-size:.95rem;margin:.9rem 0 .4rem}.ap-md code{font-size:.82em;background:var(--surface-2);border:1px solid var(--border);border-radius:4px;padding:0 .25rem}.ap-md pre{background:var(--navy);color:#e8edf7;padding:.6rem .75rem;border-radius:var(--radius);overflow-x:auto;font-size:.8rem}.ap-md pre code{background:none;border:none;padding:0;color:inherit}.ap-md table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;margin:0 0 .6rem;font-size:.8rem;font-variant-numeric:tabular-nums}.ap-md th,.ap-md td{border:1px solid var(--border);padding:.3rem .5rem;text-align:left;white-space:nowrap}.ap-md th{background:var(--surface-2);font-weight:600}.ap-md tr:nth-child(2n) td{background:var(--surface)}.ap-proposal{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--blue);border-radius:var(--radius);padding:.7rem .75rem;display:flex;flex-direction:column;gap:.55rem}.ap-proposal--applied{border-left-color:var(--success)}.ap-proposal--partial,.ap-proposal--failed{border-left-color:var(--warning-text)}.ap-proposal--rejected{border-left-color:var(--muted-2);opacity:.8}.ap-proposal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem}.ap-proposal-title{font-weight:700;font-size:.88rem}.ap-proposal-meta{display:flex;flex-wrap:wrap;gap:.4rem;font-size:.76rem;color:var(--muted)}.ap-badge{flex-shrink:0;font-size:.7rem;font-weight:700;padding:.15rem .45rem;border-radius:999px;background:var(--blue-light);color:var(--blue-mid);white-space:nowrap}.ap-badge--applied{background:var(--green-light);color:#127a4b}.ap-badge--partial,.ap-badge--failed{background:var(--warning-bg);color:var(--warning-text)}.ap-badge--rejected{background:var(--surface-2);color:var(--muted)}.ap-ops{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.ap-op{border:1px solid var(--border);border-radius:6px;padding:.4rem .5rem;font-size:.8rem}.ap-op--error{border-color:var(--danger);background:var(--danger-bg)}.ap-op--ok{background:#f4fdf9}.ap-op--excluded,.ap-op--skipped{opacity:.6}.ap-op-row{display:flex;align-items:center;gap:.4rem;min-width:0}.ap-op-entity{flex:1;min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ap-action{flex-shrink:0;font-size:.68rem;font-weight:700;padding:.05rem .35rem;border-radius:4px;background:var(--blue-light);color:var(--blue-mid)}.ap-action--create{background:var(--green-light);color:#127a4b}.ap-action--delete{background:var(--danger-bg);color:var(--danger-text)}.ap-op-status{flex-shrink:0;font-size:.72rem;font-weight:700}.ap-op-status--ok{color:#127a4b}.ap-op-status--error{color:var(--danger-text)}.ap-op-changes{margin-top:.25rem;display:flex;flex-direction:column;gap:.1rem}.ap-op-change{display:grid;grid-template-columns:minmax(90px,38%) 1fr;gap:.4rem;overflow-wrap:anywhere}.ap-op-field{color:var(--muted);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.74rem}.ap-op-change del{color:var(--danger-text)}.ap-op-change ins{color:#127a4b;text-decoration:none;font-weight:600}.ap-op-muted{color:var(--muted);font-weight:400}.ap-op-reason{margin-top:.2rem;font-size:.74rem;color:var(--muted);font-style:italic}.ap-op-error{margin-top:.2rem;font-size:.78rem;color:var(--danger-text)}.ap-danger-text{color:var(--danger-text);font-weight:600}.ap-proposal-actions{display:flex;justify-content:flex-end;gap:.5rem}.ap-link{border:none;background:none;padding:0;color:var(--blue);font-size:.78rem;font-weight:600;cursor:pointer;align-self:flex-start}.ap-link:hover{text-decoration:underline}.ap-banner{font-size:.82rem;padding:.55rem .7rem;border-radius:var(--radius)}.ap-banner--warn{background:var(--warning-bg);color:var(--warning-text)}.ap-banner--error{background:var(--danger-bg);color:var(--danger-text)}.ap-refresh{display:flex;justify-content:center;align-items:center;gap:.5rem;font-size:.8rem;color:var(--muted);padding:.35rem;background:var(--green-light);border-top:1px solid var(--border)}.ap-composer{flex-shrink:0;padding:.6rem .75rem .75rem;background:var(--surface);border-top:1px solid var(--border);display:flex;flex-direction:column;gap:.45rem}.ap-input-row{display:flex;align-items:flex-end;gap:.4rem}.ap-input-row textarea{flex:1;resize:none;min-height:2.4rem;max-height:10rem;field-sizing:content;padding:.55rem .7rem;border:1.5px solid var(--border);border-radius:var(--radius);font:inherit;font-size:.9rem;color:var(--text);background:var(--surface)}.ap-input-row textarea:focus{outline:none;border-color:var(--blue)}.ap-input-row .btn{height:2.4rem;padding:0 .9rem}.ap-composer .ap-icon-btn{height:2.4rem;font-size:1rem;color:var(--muted)}.ap-chips{display:flex;flex-wrap:wrap;gap:.3rem}.ap-chip{display:inline-flex;align-items:center;gap:.25rem;max-width:100%;font-size:.75rem;padding:.15rem .5rem;border-radius:999px;background:var(--blue-light);color:var(--blue-mid);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ap-chip button{border:none;background:none;color:inherit;cursor:pointer;font-size:.9rem;line-height:1;padding:0 0 0 .15rem}.ap-history{display:flex;flex-direction:column;gap:.5rem}.ap-history-item{display:flex;flex-direction:column;gap:.4rem}.ap-history-row{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"badge title" "badge meta";column-gap:.6rem;align-items:center;text-align:left;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);padding:.5rem .65rem;cursor:pointer}.ap-history-row:hover{border-color:var(--blue)}.ap-history-row .ap-badge{grid-area:badge}.ap-history-title{grid-area:title;font-weight:600;font-size:.85rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ap-history-meta{grid-area:meta;font-size:.74rem;color:var(--muted)}@media(max-width:640px){.ap-hide-mobile{display:none}.ap-fab{right:1rem;bottom:1rem}}.ap-history-toolbar{display:flex;justify-content:space-between;align-items:center;font-size:.78rem;color:var(--muted);padding:0 .15rem}.ap-link--danger{color:var(--danger-text);align-self:center}.ap-link:disabled{opacity:.5;cursor:default}.ap-conv{display:flex;align-items:stretch;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);overflow:hidden}.ap-conv:hover{border-color:var(--blue)}.ap-conv--current{border-left:3px solid var(--blue)}.ap-conv-open{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem;text-align:left;border:none;background:none;padding:.55rem .65rem;cursor:pointer}.ap-conv-delete{flex-shrink:0;width:2.5rem;display:flex;align-items:center;justify-content:center;border:none;border-left:1px solid var(--border);background:none;color:var(--muted-2);cursor:pointer}.ap-conv-delete:hover:not(:disabled){color:var(--danger-text);background:var(--danger-bg)}.ap-conv-open:disabled,.ap-conv-delete:disabled{cursor:default}.ap-save-error{margin:0 .75rem .5rem}.layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);background:linear-gradient(180deg,var(--navy) 0%,var(--navy-deep) 100%);color:#e8edf7;display:flex;flex-direction:column;flex-shrink:0}.sidebar-accent{height:4px;background:linear-gradient(90deg,#1a8fe3,#1fd080);flex-shrink:0}.sidebar-brand{display:flex;align-items:center;gap:.75rem;padding:1.25rem 1rem;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar-brand strong{display:block;font-family:Plus Jakarta Sans,sans-serif;font-size:.95rem;font-weight:800;letter-spacing:.05em;color:#fff}.sidebar-brand small{color:#8a9bbf;font-size:.75rem}.sidebar-nav{flex:1;padding:.75rem .5rem;display:flex;flex-direction:column;gap:.25rem}.nav-link{padding:.6rem .75rem;border-radius:var(--radius);color:#8a9bbf;font-weight:500;font-size:.9rem;transition:background .15s,color .15s}.nav-link:hover{background:#ffffff0f;color:#fff}.nav-link.active{background:var(--blue);color:#fff;font-weight:600}.sidebar-footer{padding:1rem;border-top:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:.5rem}.user-name{font-size:.85rem;color:#8a9bbf}.sidebar-footer .btn-ghost{color:#8a9bbf;border-color:#ffffff26}.sidebar-footer .btn-ghost:hover{background:#ffffff14;color:#fff;border-color:#ffffff26}.main-content{flex:1;overflow-x:hidden;display:flex;flex-direction:column}.main-content-body{padding:2rem}@media(max-width:768px){.layout{flex-direction:column}.sidebar{width:100%}.sidebar-nav{flex-direction:row;flex-wrap:wrap}.main-content-body{padding:1.25rem}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--navy) 0%,var(--navy-deep) 100%);padding:1rem;position:relative}.login-page:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,#1a8fe3,#1fd080)}.login-card{width:100%;max-width:400px;border:none;box-shadow:0 24px 60px #08112a73}.login-header{text-align:center;margin-bottom:1.5rem}.login-header h1{margin:0 0 .25rem;font-size:1.35rem;font-weight:800;letter-spacing:.03em;color:var(--navy)}.login-header p{margin:0;color:var(--muted);font-size:.9rem}.login-btn{width:100%;justify-content:center;margin-top:.5rem;padding:.7rem}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.dashboard-card{transition:box-shadow .15s,transform .15s;cursor:pointer}.dashboard-card:hover{box-shadow:0 4px 12px #00000014;transform:translateY(-2px)}.dashboard-card h2{margin:0 0 .5rem;font-size:1.1rem}.dashboard-card p{margin:0;color:var(--muted);font-size:.9rem}.dashboard-page .dashboard-subtitle{color:var(--muted);margin:.25rem 0 0;font-size:.95rem}.dashboard-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}.dashboard-quarter-select{min-width:8rem;padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.95rem;background:var(--surface)}.dashboard-row-1{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr) minmax(0,1fr);gap:1rem;margin-bottom:1.5rem;align-items:stretch}.dashboard-kpi-card{display:flex;flex-direction:column;gap:.5rem;min-height:8rem}.dashboard-kpi-label{font-size:.85rem;color:var(--muted)}.dashboard-kpi-value{font-size:1.35rem;font-weight:600;line-height:1.2}.dashboard-kpi-with-sub{display:flex;flex-direction:column;gap:.25rem}.dashboard-kpi-sub{font-size:.8rem;color:var(--muted);line-height:1.3}.dashboard-profit-panel{display:flex;flex-direction:column;gap:1rem;min-height:8rem}.dashboard-profit-header{display:flex;justify-content:space-between;align-items:flex-start}.dashboard-target-block{display:flex;flex-direction:column;gap:.35rem}.dashboard-target-header{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;flex-wrap:wrap}.dashboard-target-value{font-size:.9rem;font-weight:600;color:var(--text)}.dashboard-saving-hint{font-weight:400;color:var(--muted);font-size:.8rem}.dashboard-target-slider{width:100%;height:6px;accent-color:var(--primary);cursor:pointer}.dashboard-progress{display:flex;flex-direction:column;gap:.4rem}.dashboard-progress-track-wrap{position:relative;height:20px}.dashboard-progress-track{position:absolute;bottom:0;left:0;right:0;height:12px;background:var(--blue-light);border-radius:6px;overflow:hidden}.dashboard-progress-target-mark{position:absolute;top:0;bottom:0;width:0;z-index:4;transform:translate(-50%);pointer-events:none}.dashboard-progress-pole{position:absolute;left:-1px;top:7px;bottom:0;width:2px;background:var(--navy);border-radius:1px}.dashboard-progress-flag{position:absolute;left:1px;top:0;width:11px;height:8px;background:var(--navy);clip-path:polygon(0 0,100% 50%,0 100%)}.dashboard-progress-forecast{position:absolute;left:0;top:0;height:100%;background:var(--muted-2);border-radius:6px;z-index:1;transition:width .25s ease}.dashboard-progress-actual{position:absolute;left:0;top:0;height:100%;background:var(--primary);border-radius:6px;z-index:2;transition:width .25s ease}.dashboard-progress-labels{display:flex;justify-content:space-between;gap:.5rem;font-size:.8rem;color:var(--muted)}.dashboard-progress-forecast-label{color:var(--muted-2)}.dashboard-row-2{margin-bottom:1.5rem}.dashboard-row-3{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}.dashboard-course-col h2{margin:0 0 1rem;font-size:1.05rem}@media(max-width:960px){.dashboard-row-1,.dashboard-row-3{grid-template-columns:1fr}}.dashboard-metrics{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;margin-bottom:1.5rem}.dashboard-metric-card{display:flex;flex-direction:column;gap:.35rem}.dashboard-metric-label{font-size:.85rem;color:var(--muted)}.dashboard-metric-value{font-size:1.15rem;font-weight:600}.dashboard-target-form{display:flex;gap:.5rem;align-items:center}.dashboard-target-form input{flex:1;min-width:0;padding:.4rem .5rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.95rem}.dashboard-section{margin-bottom:1.5rem}.dashboard-section h2{margin:0 0 1rem;font-size:1.05rem}.dashboard-monthly-chart{display:flex;flex-direction:column;gap:.75rem}.dashboard-monthly-row{display:grid;grid-template-columns:7rem 1fr 9rem;gap:.75rem;align-items:center;font-size:.9rem}.dashboard-monthly-label{color:var(--muted)}.dashboard-monthly-bar-wrap{height:1.25rem;background:var(--blue-light);border-radius:4px;overflow:hidden}.dashboard-monthly-bar{height:100%;min-width:2px;background:var(--primary);border-radius:4px;transition:width .3s ease}.dashboard-monthly-value{text-align:right;font-weight:500}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal{background:var(--surface);border-radius:var(--radius-lg);padding:1.5rem;width:100%;max-width:520px;max-height:90vh;overflow-y:auto}.modal h2{margin:0 0 1rem;font-size:1.15rem}.modal-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1rem}.filter-bar{display:flex;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}.filter-bar--single-row{flex-wrap:nowrap;align-items:center;overflow-x:auto;-webkit-overflow-scrolling:touch}.filter-bar--single-row .search-input{flex:1 1 10rem;min-width:8rem}.filter-bar--single-row select{flex-shrink:0;max-width:11rem}.filter-bar--single-row .btn{flex-shrink:0}.filter-bar select,.filter-bar input[type=date]{padding:.4rem .75rem;border:1px solid var(--border);border-radius:var(--radius)}.filter-date-wrap{position:relative;flex-shrink:0}.filter-date-wrap input[type=date]{width:9.5rem;background:var(--surface)}.filter-date-wrap.is-empty input[type=date]::-webkit-datetime-edit{color:transparent}.filter-date-wrap.is-empty input[type=date]::-webkit-datetime-edit-fields-wrapper{opacity:0}.filter-date-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;padding:0 .75rem;color:var(--muted-2);pointer-events:none;font-size:.9rem;white-space:nowrap}.actions-cell{vertical-align:middle;white-space:nowrap}.actions-cell-inner{display:flex;gap:.35rem;align-items:center}.actions-cell button{padding:.35rem}.search-input{flex:1;min-width:200px;padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius)}.pagination{display:flex;align-items:center;justify-content:space-between;margin-top:1rem;gap:1rem;flex-wrap:wrap}.pagination-info{color:var(--muted);font-size:.875rem}.pagination-actions{display:flex;gap:.5rem}.modal-wide{max-width:720px}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.modal-header h2{margin:0}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:.65rem 1.5rem}.detail-row{display:flex;flex-direction:column;gap:.15rem}.detail-row--full{grid-column:1 / -1}.detail-label{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.detail-value{font-size:.9rem}.stats-row{display:flex;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}.stat-chip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .85rem;font-size:.875rem}.stat-chip strong{color:var(--primary)}.payment-progress{display:flex;flex-direction:column;gap:.25rem;min-width:100px}.payment-progress-bar{height:6px;background:var(--border);border-radius:999px;overflow:hidden}.payment-progress-fill{height:100%;background:var(--primary);border-radius:999px}.payment-progress-label{font-size:.75rem;color:var(--muted)}.payment-timeline{grid-column:1 / -1;margin-top:.5rem;padding-top:1rem;border-top:1px solid var(--border)}.payment-timeline h3{margin:0 0 .75rem;font-size:.95rem}.payment-step{display:flex;gap:.75rem;padding:.5rem 0;border-bottom:1px solid var(--border);font-size:.875rem}.payment-step:last-child{border-bottom:none}.payment-step-date{min-width:100px;color:var(--muted)}.payment-step-amount{min-width:120px;font-weight:500}.summary-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem;margin-bottom:1rem}.summary-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.85rem 1rem}.summary-card label{display:block;font-size:.75rem;color:var(--muted);margin-bottom:.25rem}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem 1rem}.order-form{display:flex;flex-direction:column;gap:.75rem}.order-form-row{display:grid;gap:.75rem 1rem}.order-form-row--ids{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1.1fr)}.order-form-row--2{grid-template-columns:1fr 1fr}.payment-method-group{display:flex;gap:.5rem}.payment-method-btn{flex:1;padding:.55rem .75rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;font-weight:500;text-align:center;transition:background .15s,border-color .15s,color .15s}.payment-method-btn:hover{border-color:var(--primary);color:var(--primary)}.payment-method-btn.is-active{background:var(--primary);border-color:var(--primary);color:#fff}.payment-method-btn.is-active:hover{color:#fff}.form-group-full{grid-column:1 / -1}.form-hint{margin:.75rem 0 0;font-size:.85rem;color:var(--primary)}.form-hint-inline{margin:.35rem 0 0;font-size:.8rem;color:var(--muted)}.searchable-select{position:relative}.searchable-select input{width:100%;padding:.4rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.95rem;background:var(--surface)}.searchable-select input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px #1a8fe326}.searchable-select-list{position:absolute;z-index:20;top:calc(100% + .25rem);left:0;right:0;max-height:14rem;overflow-y:auto;margin:0;padding:.25rem;list-style:none;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 24px #0f172a1f}.searchable-select-option{display:block;width:100%;padding:.45rem .6rem;border:none;border-radius:calc(var(--radius) - 2px);background:transparent;text-align:left;font:inherit;color:inherit;cursor:pointer}.searchable-select-option:hover,.searchable-select-option.is-highlighted{background:var(--blue-pale)}.searchable-select-option.is-selected{background:var(--blue-light);color:var(--primary);font-weight:500}.searchable-select-empty{padding:.6rem .75rem;color:var(--muted);font-size:.875rem}.success-msg{color:#0f8a50;margin-bottom:1rem;font-size:.9rem}.badge.badge-tier-none{background:var(--surface);color:#111;border:1px solid var(--border)}.badge.badge-tier-silver{background:silver;color:#1a1a1a;border:1px solid #a0a0a0}.badge.badge-tier-gold{background:#d4af37;color:#2d2100;border:1px solid #b8960c}.badge.badge-tier-platinum{background:#7c3aed;color:#fff;border:1px solid #6d28d9}.order-student-cell{min-width:10rem}.order-student-name{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.order-student-meta{font-size:.8rem;color:var(--muted);line-height:1.35}.order-price-cell{display:flex;flex-direction:column;gap:.15rem}.order-price-original{font-size:.8rem;color:var(--muted);text-decoration:line-through}.order-profit-muted{color:var(--muted)}.order-profit-estimate{display:flex;flex-direction:column;gap:.1rem}.order-profit-hint{font-size:.7rem;color:var(--muted);line-height:1.2}.student-orders-section{grid-column:1 / -1;margin-top:.75rem;padding-top:1rem;border-top:1px solid var(--border)}.student-orders-section h3{margin:0 0 .75rem;font-size:.95rem}.nested-table{width:100%;font-size:.85rem}.nested-table th,.nested-table td{padding:.4rem .5rem}.alert-panel{background:var(--warning-bg);border:1px solid #f0d78c;border-radius:var(--radius-lg);padding:1rem 1.25rem;margin-bottom:1rem}.alert-panel-title{margin:0 0 .75rem;font-size:.95rem;color:var(--warning-text)}.alert-section{margin-bottom:.75rem}.alert-section:last-child{margin-bottom:0}.alert-section h3{margin:0 0 .25rem;font-size:.875rem;color:var(--warning-text)}.alert-section-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.alert-section-head h3{margin:0}.alert-desc{margin:0 0 .5rem;font-size:.8rem;color:var(--muted)}.alert-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.35rem .75rem}.alert-link{background:none;border:none;padding:0;color:var(--warning-text);font-size:.85rem;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.alert-link:hover{color:#8a5d0c}.course-group-row td{background:var(--bg);font-weight:600;font-size:.8rem;color:var(--muted);letter-spacing:.02em;padding:.55rem .75rem;border-bottom:1px solid var(--border)}.page-tabs{display:flex;gap:.25rem;margin-bottom:1rem;border-bottom:1px solid var(--border)}.page-tab{padding:.55rem 1rem;border:none;background:transparent;cursor:pointer;font-weight:500;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s}.page-tab:hover{color:var(--text)}.page-tab.is-active{color:var(--primary);border-bottom-color:var(--primary)}.cancel-panel{margin-bottom:1rem}.course-stats-panel{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:.85rem 1rem}.course-stats-title{margin:0 0 .65rem;font-size:.8rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.course-stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem 1rem}.course-stats-grid div{display:flex;justify-content:space-between;gap:.5rem;font-size:.85rem}.course-stats-grid span{color:var(--muted)}.course-stats-grid strong{font-weight:600}.course-group-row{background:var(--bg)}.course-group-row td{font-weight:600}.course-group-row--single td{font-weight:600;font-size:.8rem;color:var(--muted);padding:.4rem .75rem;border-bottom:none}.course-group-toggle{display:flex;align-items:center;gap:.5rem;width:100%;padding:0;border:none;background:none;font:inherit;font-weight:600;text-align:left;cursor:pointer;color:inherit}.course-group-meta{font-weight:400;font-size:.8rem;color:var(--muted)}.course-variant-row td:nth-child(2){padding-left:1.5rem}.course-variant-access{display:inline-block;margin-right:.5rem;padding:.1rem .4rem;border-radius:4px;background:var(--blue-light);color:var(--blue-mid);font-size:.75rem;font-weight:600}.access-type-group{display:flex;gap:1rem;flex-wrap:wrap}.access-type-option{display:inline-flex;align-items:center;gap:.35rem;font-size:.95rem}.btn-sm{padding:.2rem .5rem;font-size:.8rem}.student-conflict-panel{display:flex;flex-direction:column;gap:.75rem;padding:.75rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius)}.conflict-field-label{display:block;font-size:.8rem;font-weight:600;color:var(--muted);margin-bottom:.35rem}.conflict-field-values{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.conflict-field-values small{display:block;color:var(--muted);font-size:.75rem;margin-bottom:.15rem}.conflict-diff{color:var(--danger)}@media(max-width:640px){.form-grid,.order-form-row--ids,.order-form-row--2{grid-template-columns:1fr}.payment-method-group{flex-direction:column}.course-stats-grid,.detail-grid{grid-template-columns:1fr}}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem}.misc-page-subtitle{color:var(--muted);margin:0 0 1.5rem}.misc-tool-card{display:flex;flex-direction:column;gap:.5rem;text-decoration:none;color:inherit;min-height:11rem}.misc-card-summary{margin-top:auto;padding-top:.75rem;border-top:1px solid var(--border)}.misc-card-stat{display:flex;flex-direction:column;gap:.25rem}.misc-card-stat-label{font-size:.8rem;color:var(--muted)}.misc-card-stat strong{font-size:1.05rem}.misc-card-list{margin:0;padding-left:1rem;font-size:.85rem;color:var(--text)}.misc-card-list li+li{margin-top:.2rem}.misc-card-empty{margin:0;font-size:.85rem;color:var(--muted)}.cashflow-kpi-row{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.cashflow-kpi-card{flex:1;min-width:220px}.cashflow-kpi-sub{font-size:.8rem;color:var(--muted);font-weight:400}.cashflow-amount-in{color:#0f8a50;font-weight:600}.cashflow-amount-out{color:var(--danger);font-weight:600}.cashflow-row-forecast td{color:var(--muted-2);font-style:italic}.cashflow-row-forecast .cashflow-amount-in,.cashflow-row-forecast .cashflow-amount-out{color:var(--muted-2);font-weight:500}.cashflow-table-wrap{overflow-x:auto}.cashflow-table{min-width:900px}.cashflow-table th,.cashflow-table td{vertical-align:top}.cashflow-table td.num{white-space:nowrap;text-align:right}.cashflow-text-cell{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell-editable{cursor:cell}.cell-editable:hover{background:var(--surface-2)}.inline-edit-input{width:100%;min-width:90px;padding:.2rem .35rem;font:inherit;font-style:normal;color:var(--text);background:var(--surface);border:1px solid var(--primary);border-radius:4px;box-sizing:border-box}select.inline-edit-input{min-width:130px}.report-tabs{display:flex;gap:.25rem;flex-wrap:wrap;border-bottom:1px solid var(--border);margin-bottom:.75rem}.report-tab{padding:.55rem .9rem;font:inherit;font-weight:600;color:var(--muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap}.report-tab:hover{color:var(--text);background:var(--surface-2)}.report-tab.is-active{color:var(--primary);border-bottom-color:var(--primary)}.report-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.report-tab-hint{color:var(--muted);font-size:.85rem}.report-range{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.report-range label{display:flex;align-items:center;gap:.35rem;font-size:.85rem;color:var(--muted)}.report-stat-card{min-width:190px}.report-table th,.report-table td{vertical-align:middle}.report-table th.num,.report-table td.num{text-align:right;white-space:nowrap}.report-nowrap,.report-table td:first-child,.report-table th:first-child{white-space:nowrap}.report-two-col .report-table td:first-child,.report-two-col .report-table th:first-child{white-space:normal}.report-two-col .report-table th,.report-two-col .report-table td{padding-left:.4rem;padding-right:.4rem}.report-total-row td{font-weight:700;border-top:2px solid var(--border);background:var(--surface-2)}.report-section-title{margin:1.25rem 0 .6rem;font-size:1rem}.report-period-switch{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.report-period-btn{padding:.45rem .85rem;font:inherit;font-weight:600;color:var(--muted);background:var(--surface);border:none;border-right:1px solid var(--border);cursor:pointer}.report-period-btn:last-child{border-right:none}.report-period-btn:hover{background:var(--surface-2)}.report-period-btn.is-active{color:#fff;background:var(--primary)}.growth-chip{display:inline-block;padding:.05rem .35rem;border-radius:999px;font-weight:700;font-size:.78rem;cursor:help}.growth-chip.is-up{color:#0f8a50;background:#e6f6ee}.growth-chip.is-down{color:var(--danger);background:var(--danger-bg)}.growth-chip.is-flat{color:var(--muted);background:var(--surface-2)}.report-kpi-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-bottom:1rem}.report-kpi-row .report-stat-card{min-width:0}@media(max-width:1100px){.report-kpi-row{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.report-kpi-row{grid-template-columns:1fr}}.report-split-card{gap:.3rem;justify-content:center;padding-left:1rem;padding-right:1rem}.report-split-row{display:flex;align-items:baseline;gap:.35rem;font-size:.88rem;white-space:nowrap}.report-split-dot{width:9px;height:9px;border-radius:2px;flex:none;align-self:center}.report-split-name{color:var(--muted);font-size:.78rem;min-width:34px}.report-split-amount{font-weight:700;margin-left:auto}.report-split-pct{min-width:40px;text-align:right;color:var(--muted);font-size:.8rem}.report-chart-card{padding:1rem;margin-bottom:1rem}.chart-wrap{position:relative}.chart-svg{width:100%;height:auto;display:block}.chart-gridline{stroke:var(--border);stroke-width:1}.chart-tick{fill:var(--muted);font-size:11px}.chart-col-hit{fill:transparent}.chart-col.is-hover .chart-col-hit{fill:var(--surface-2)}.chart-legend,.chart-tooltip{font-size:.8rem}.chart-legend{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-top:.35rem;color:var(--muted)}.chart-legend span,.chart-tooltip span{display:flex;align-items:center;gap:.35rem}.chart-legend i,.chart-tooltip i,.pie-legend i{width:10px;height:10px;border-radius:2px;flex:none}.chart-tooltip{position:absolute;top:0;transform:translate(-50%);display:flex;flex-direction:column;gap:.2rem;padding:.5rem .7rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 6px 18px #0d1b3e1f;pointer-events:none;white-space:nowrap;z-index:5}.chart-tooltip-total{border-top:1px solid var(--border);padding-top:.2rem;font-weight:700}.pie-wrap{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:center}.pie-svg{width:200px;height:200px}.pie-slice{cursor:pointer;transition:opacity .12s}.pie-slice.is-hover{opacity:.88}.pie-legend{display:flex;flex-direction:column;gap:.1rem}.pie-legend-item{display:flex;align-items:center;gap:.45rem;padding:.2rem .35rem;font:inherit;font-size:.82rem;color:var(--text);background:none;border:none;border-radius:4px;cursor:pointer;text-align:left}.pie-legend-item.is-hover{background:var(--surface-2)}.pie-legend-label{flex:1;white-space:nowrap}.pie-legend-value{color:var(--muted);white-space:nowrap}.pie-basis{grid-column:1 / -1;padding:.6rem .75rem;background:var(--surface-2);border-radius:var(--radius);font-size:.82rem}.pie-basis strong{display:block;margin-bottom:.2rem}.pie-basis p{margin:0;color:var(--muted)}.report-two-col{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start;margin-bottom:1rem}@media(max-width:1100px){.report-two-col,.pie-wrap{grid-template-columns:1fr}}.report-two-col .cashflow-table{min-width:0;width:100%}.report-two-col .table-wrap{padding:1rem;overflow-x:auto}.report-col-title{margin:0 0 .6rem;font-size:.9rem}.report-col-title span{font-weight:500;color:var(--muted)}.report-subtext{display:block;font-size:.72rem;font-weight:500;color:var(--muted)}.report-basis-text{display:block;margin-top:.25rem;font-size:.72rem;color:var(--muted);white-space:normal}.report-pending{color:var(--muted);font-style:italic;cursor:help}.report-expense-side{padding:1rem}.report-expense-total{margin-bottom:1rem}.report-top-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.85rem}.report-top-list li{display:flex;gap:.6rem;align-items:flex-start}.report-top-rank{width:22px;height:22px;flex:none;border-radius:50%;color:#fff;font-size:.75rem;font-weight:700;display:flex;align-items:center;justify-content:center}.report-top-body{flex:1;min-width:0}.report-top-head{display:flex;justify-content:space-between;gap:.5rem;font-size:.88rem}.report-top-bar{display:block;height:6px;margin:.3rem 0 .15rem;background:var(--surface-2);border-radius:999px;overflow:hidden}.report-top-bar i{display:block;height:100%;border-radius:999px}.report-note{margin:1rem 0 0;font-size:.78rem;color:var(--muted)}.page-header-actions{display:flex;gap:.5rem;flex-wrap:wrap}.excel-import-modal .excel-import-body{display:flex;flex-direction:column;gap:1rem}.excel-import-summary{margin:0;color:var(--muted);font-size:.9rem}.excel-import-mapping-wrap{overflow-x:auto;max-height:320px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius)}.excel-import-mapping{width:100%;border-collapse:collapse}.excel-import-mapping th,.excel-import-mapping td{padding:.5rem .75rem;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}.excel-import-mapping select{width:100%;min-width:12rem;padding:.35rem .5rem;border:1px solid var(--border);border-radius:var(--radius)}.excel-import-errors{margin:.5rem 0 0;padding-left:1.25rem;color:var(--danger);font-size:.85rem;max-height:120px;overflow-y:auto}.checkbox-label{display:inline-flex;align-items:center;gap:.4rem;font-size:.9rem;margin-right:1rem}.misc-kpi-card{display:inline-flex;flex-direction:column;gap:.35rem;padding:1rem 1.25rem}.misc-kpi-value{font-size:1.35rem}.db-admin-info{margin-bottom:1rem}.db-admin-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem}.db-admin-path{grid-column:1 / -1}.db-admin-path code{display:block;margin-top:.25rem;font-size:.8rem;word-break:break-all}.db-admin-layout{display:grid;grid-template-columns:260px 1fr;gap:1rem;align-items:start}.db-admin-main{min-width:0}.db-admin-page .table-wrap{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}.db-admin-page .table-wrap table{width:max-content;min-width:100%}.db-admin-page .table-wrap th{white-space:nowrap}@media(max-width:900px){.db-admin-layout{grid-template-columns:1fr}}.db-admin-sidebar{padding:1rem;position:sticky;top:1rem;max-height:calc(100vh - 8rem);overflow:auto}.db-admin-sidebar h2{margin:0 0 .75rem;font-size:1rem}.db-admin-table-list{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.25rem}.db-admin-table-btn{width:100%;display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.45rem .6rem;border:1px solid transparent;border-radius:var(--radius);background:transparent;cursor:pointer;text-align:left;font:inherit}.db-admin-table-btn:hover{background:var(--surface-2, #f4f4f5)}.db-admin-table-btn.is-active{background:var(--primary-soft, #e8f0fe);border-color:var(--primary, #2563eb)}.db-admin-table-count{font-size:.75rem;color:var(--muted)}.db-admin-cell{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem}.db-admin-sql-hint{margin:0 0 .75rem;color:var(--muted);font-size:.875rem}.db-admin-sql-input{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;padding:.75rem;border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.75rem;resize:vertical}.payroll-quarter-hint{margin:.35rem 0 0;color:var(--muted);font-size:.85rem;max-width:36rem;line-height:1.4}.payroll-page .payroll-package-card{margin-bottom:1.5rem}.payroll-header-controls{display:flex;align-items:center;gap:.75rem}.payroll-package-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.payroll-page .payroll-package-card h2{margin:0;font-size:1.05rem}.payroll-package-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}.payroll-package-notes{margin:1rem 0 0;color:var(--muted);font-size:.875rem}.payroll-contract-notice{margin:0 0 1rem;padding:.75rem 1rem;background:var(--warning-bg);border:1px solid #f0d78c;border-radius:var(--radius);color:var(--warning-text);font-size:.9rem}.payroll-kpi-row{margin-bottom:1rem}.payroll-tier-badge{font-size:.8rem;color:var(--muted);text-align:right;max-width:14rem;line-height:1.35}.payroll-summary-metrics{margin-bottom:1rem}.payroll-bonus-total{color:var(--primary, #2563eb)}.payroll-rules-card h2,.payroll-table-card h2{margin:0 0 1rem;font-size:1.05rem}.payroll-rules-list{margin:0;padding-left:1.25rem;display:grid;gap:.5rem;font-size:.9rem;color:var(--muted)}.payroll-rules-list strong{color:var(--text, inherit)}.payroll-table-card{margin-bottom:1.5rem}.payroll-table-note{margin:-.5rem 0 1rem;color:var(--muted);font-size:.875rem}.payroll-bhxh-cell{color:var(--muted)}.payroll-table-total td,.payroll-table-avg td{border-top:2px solid var(--border);font-size:.95rem}.payroll-progress .payroll-mark-min .dashboard-progress-flag{background:#f59e0b}.payroll-progress .payroll-mark-over .dashboard-progress-flag{background:#8b5cf6}.fee-split-panel{margin:.25rem 0 1rem;padding:.9rem 1rem;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-2)}.fee-split-head{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;margin-bottom:.35rem}.fee-split-head strong{color:var(--navy)}.fee-split-code{font-size:.8rem;color:var(--muted)}.fee-split-total{margin:.6rem 0}.fee-split-total label{display:block;font-size:.8rem;color:var(--muted);margin-bottom:.25rem}.fee-split-total input{width:100%;padding:.4rem .75rem;border:1px solid var(--border);border-radius:var(--radius)}.fee-split-table{width:100%;border-collapse:collapse;font-size:.85rem;margin-bottom:.6rem}.fee-split-table th,.fee-split-table td{padding:.35rem .5rem;text-align:right;border-bottom:1px solid var(--border)}.fee-split-table th:first-child,.fee-split-table td:first-child{text-align:left}.fee-split-table thead th{color:var(--muted);font-weight:600}.fee-split-table tr.is-current,.fee-split-table tbody tr.is-current{background:var(--primary-soft)}.fee-split-table tfoot td{font-weight:600;border-bottom:none;border-top:2px solid var(--border)}.fee-split-tag{margin-left:.4rem;padding:.05rem .4rem;font-size:.7rem;border-radius:999px;background:var(--primary);color:#fff}.fee-split-resolved{margin:.25rem 0 1rem;padding:.6rem .85rem;border:1px dashed var(--border);border-radius:var(--radius);background:var(--surface-2);font-size:.85rem;color:var(--muted)}.fee-split-relink{background:none;border:none;padding:0;color:var(--primary);font:inherit;cursor:pointer;text-decoration:underline}.allocation-msg{margin:0 0 1rem;padding:.6rem .85rem;background:var(--primary-soft);border:1px solid var(--border);border-radius:var(--radius);font-size:.85rem}.report-course-select{max-width:22rem}.report-course-name{font-size:1.05rem;line-height:1.25}.report-course-head .report-stat-card{justify-content:flex-start}.wf-col{cursor:default}.wf-col.is-hover rect:first-child{fill:var(--surface-2)}.wf-connector{stroke:var(--muted-2);stroke-width:1;stroke-dasharray:3 3}.wf-value{fill:var(--text);font-size:11px;font-weight:600}.wf-note{color:var(--muted);white-space:normal;max-width:260px}.wf-row td{padding-top:.55rem;padding-bottom:.55rem}.wf-row--minus td:first-child{padding-left:1.75rem;color:var(--muted)}.wf-row--subtotal td,.wf-row--total td{font-weight:700;border-top:2px solid var(--border);background:var(--surface-2)}.vwf{display:flex;flex-direction:column}.vwf-row{position:relative;display:grid;grid-template-columns:11rem 1fr 9rem;gap:.6rem;align-items:center;padding:.3rem 0}.vwf-row.is-hover{background:var(--surface-2);border-radius:4px}.vwf-label{display:flex;flex-direction:column;font-size:.85rem;line-height:1.25}.vwf-label small,.vwf-amount small{font-size:.7rem;color:var(--muted)}.vwf-row.is-start .vwf-label,.vwf-row.is-profit .vwf-label,.vwf-row.is-loss .vwf-label{font-weight:700}.vwf-row.is-minus .vwf-label{padding-left:.7rem;color:var(--muted)}.vwf-track{position:relative;height:20px}.vwf-zero{position:absolute;top:-2px;bottom:-2px;width:1px;background:var(--border)}.vwf-bar{position:absolute;top:3px;height:14px;border-radius:3px}.vwf-bar.is-start{background:#1a8fe3}.vwf-bar.is-minus{background:#e07b5f}.vwf-bar.is-profit{background:#0f8a50}.vwf-bar.is-loss{background:var(--danger)}.vwf-amount{display:flex;flex-direction:column;text-align:right;font-size:.85rem;font-weight:600;white-space:nowrap}.vwf-amount.is-minus{color:var(--danger);font-weight:500}.vwf-amount.is-profit{color:#0f8a50}.vwf-amount.is-loss{color:var(--danger)}.vwf-row.is-profit,.vwf-row.is-loss{border-top:2px solid var(--border);margin-top:.35rem;padding-top:.6rem}.vwf-note{position:absolute;z-index:6;top:100%;left:11rem;right:0;padding:.5rem .7rem;font-size:.78rem;font-weight:400;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 6px 18px #0d1b3e1f}.vwf-bar.is-subtotal{background:#00a8a8}.vwf-amount.is-subtotal{color:#00857f}.vwf-row.is-subtotal{border-top:1px solid var(--border);margin-top:.2rem;padding-top:.45rem}.vwf-row.is-subtotal .vwf-label{font-weight:700}.vwf-section{margin:.7rem 0 .15rem;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.report-full-row{display:block;margin-bottom:1rem}.report-full-row .vwf-row{grid-template-columns:15rem 1fr 13rem}.report-course-picker{align-items:stretch}.report-course-picker .searchable-select{min-width:20rem}.report-course-head,.report-course-money{grid-template-columns:repeat(3,minmax(0,1fr))}.report-flow-money{grid-template-columns:repeat(5,minmax(0,1fr))}.report-flow-money .misc-kpi-value{font-size:1.15rem}@media(max-width:1400px){.report-flow-money{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:1100px){.report-flow-money{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.report-flow-money{grid-template-columns:1fr}}.sankey .chart-svg{overflow:visible}.sankey-link{fill:none;opacity:.42;transition:opacity .15s}.sankey-link.is-in{stroke:#0f8a50}.sankey-link.is-out{stroke:#c0392b}.sankey-g:hover .sankey-link{opacity:.85}.sankey-g.is-dim{opacity:.25}.sankey-node.is-in{fill:#0f8a50}.sankey-node.is-out{fill:#c0392b}.sankey-bar{fill:var(--navy, #0d1b3e)}.sankey-label{fill:var(--text);font-size:12px}.sankey-head{font-size:12px;font-weight:700}.sankey-head.is-in{fill:#0f8a50}.sankey-head.is-out{fill:#c0392b}.course-status-badge{margin-left:.5rem;font-size:.7rem;vertical-align:middle}.payroll-lock-banner{display:flex;flex-direction:column;gap:.25rem;margin-bottom:1rem;border-left:4px solid var(--primary)}.payroll-lock-diff{color:var(--muted)}.modal.payroll-kpi-detail{max-width:1100px}.payroll-kpi-detail h3{margin:1.25rem 0 .5rem;font-size:1rem}.payroll-kpi-view-toggle{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.course-lock-icon{position:relative;display:inline-flex;margin-left:.4rem;vertical-align:middle;color:var(--green)}.course-lock-icon:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);padding:.25rem .5rem;border-radius:4px;background:#1f2937;color:#fff;font-size:.75rem;font-weight:500;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .1s;z-index:10}.course-lock-icon:hover:after{opacity:1}*,*:before,*:after{box-sizing:border-box}:root{--navy: #0d1b3e;--navy-deep: #08112a;--blue: #1a8fe3;--blue-mid: #0d5fa3;--blue-light: #e8f4fd;--blue-pale: #f0f7fe;--green: #1fd080;--green-light: #e6fbf3;--warning-bg: #fef5e7;--warning-text: #b07a10;--danger-text: #c0392b;--danger-bg: #fdeceb;--bg: #f5f8ff;--surface: #ffffff;--border: #dde6f5;--text: #0d1b3e;--muted: #4a5b7a;--muted-2: #8a9bbf;--primary: #1a8fe3;--primary-hover: #0d5fa3;--primary-soft: #e8f4fd;--surface-2: #f0f7fe;--danger: #c0392b;--success: #1fd080;--sidebar-w: 248px;--radius: 8px;--radius-lg: 12px;font-family:Inter,system-ui,-apple-system,sans-serif;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}body{margin:0;min-height:100vh}h1,h2,h3,h4,.btn,.payment-method-btn{font-family:Plus Jakarta Sans,sans-serif}h1{font-weight:700;letter-spacing:-.01em}h2,h3{font-weight:700}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}code,pre,.sql-mono{font-family:JetBrains Mono,ui-monospace,monospace}::selection{background:var(--blue-light)}:focus-visible{outline:2px solid var(--blue);outline-offset:1px}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.1rem;border:1.5px solid transparent;border-radius:var(--radius);cursor:pointer;font-weight:600;font-size:.875rem;transition:background .15s,border-color .15s,color .15s,transform .1s}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn-secondary{background:transparent;color:var(--blue);border-color:var(--blue)}.btn-secondary:hover{background:var(--blue-pale)}.btn-ghost{background:transparent;border-color:var(--border);color:var(--muted);font-weight:500}.btn-ghost:hover{background:var(--blue-pale);border-color:var(--border);color:var(--text)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover{background:#a5311f;border-color:#a5311f}.btn-icon{padding:.4rem;line-height:0;min-width:2.1rem;min-height:2.1rem;justify-content:center}.btn-icon svg{display:block;flex-shrink:0}.btn-danger.btn-icon:hover{background:#a5311f}.btn:disabled{opacity:.55;cursor:not-allowed}.accent-bar{height:4px;background:linear-gradient(90deg,#1a8fe3,#1fd080);border:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem}.form-group{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem}.form-group label{font-size:.825rem;font-weight:500;color:var(--muted)}.form-group input,.form-group select,.form-group textarea{padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:2px solid var(--blue);outline-offset:-1px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{padding:.7rem .75rem;text-align:left;border-bottom:1px solid var(--border)}th{font-family:Plus Jakarta Sans,sans-serif;font-weight:600;color:var(--muted-2);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}tbody tr:hover{background:var(--blue-pale)}.badge{display:inline-block;padding:.2rem .65rem;border-radius:999px;font-size:.75rem;font-weight:500;background:var(--blue-light);color:var(--blue-mid)}.badge.success{background:var(--green-light);color:#0f8a50}.badge.warning{background:var(--warning-bg);color:var(--warning-text)}.badge.info{background:var(--blue-light);color:var(--blue-mid)}.badge.neutral{background:#f0f4fa;color:var(--muted)}.error-msg{color:var(--danger);font-size:.875rem;margin-top:.5rem}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.page-header h1{margin:0;font-size:1.5rem;color:var(--text)}.empty-state{text-align:center;padding:3rem 1rem;color:var(--muted)}
