:root{--ink:#252b27;--muted:#858b85;--line:#eceee9;--paper:#f6f7f4;--white:#fff;--green:#527c61;--green-dark:#40684e;--green-light:#e9f1e9;--orange:#d28b59;--yellow:#d8ae52;--lavender:#8f81bd;--shadow:0 4px 18px #24312208;--radius:15px}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px 'Inter',sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer;color:inherit}a{color:inherit;text-decoration:none}.app-shell{min-height:100vh}.sidebar{width:238px;position:fixed;inset:0 auto 0 0;background:#fff;border-right:1px solid var(--line);padding:25px 15px 15px;display:flex;flex-direction:column;z-index:5}.brand{display:flex;align-items:center;gap:11px;padding:0 10px 34px;font:800 20px Montserrat,sans-serif;letter-spacing:-.7px}.brand-mark{height:36px;width:36px;border-radius:12px;background:var(--green);color:white;display:grid;place-items:center;font:800 24px Montserrat,sans-serif}.brand-dot{color:#76a57d}.brand small{display:block;color:#999f98;font:500 10px 'Inter',sans-serif;letter-spacing:.3px;margin-top:1px}.side-label{font-size:9px;font-weight:700;letter-spacing:1.3px;color:#a0a49e;padding:0 11px 9px}.nav-list{display:grid;gap:3px}.nav-group-label{padding-top:23px}.nav-item{border:0;background:transparent;text-align:left;border-radius:9px;padding:10px 11px;display:flex;align-items:center;gap:12px;color:#737a73;font-weight:500;font-size:13px;min-height:40px}.nav-item:hover{background:#f6f7f4}.nav-item.active{color:#486d51;background:#edf3ec;font-weight:700}.nav-icon{font-size:17px;width:17px;text-align:center;color:#8c958d}.nav-item.active .nav-icon{color:#53765a}.nav-count{margin-left:auto;color:#78837a;background:#eef0ed;font-size:10px;border-radius:20px;padding:2px 7px}.nav-count.warm{background:#fbf1e4;color:#bd824b}.sidebar-bottom{margin-top:auto}.mini-card{margin:10px 4px 14px;background:#f5f7f2;border:1px solid #edf0e9;border-radius:11px;padding:13px}.mini-spark{color:#8b9d75;font-size:18px}.mini-card p{margin:7px 0 11px;color:#8a9188;font-size:11px;line-height:1.7}.mini-card p b{color:#434a42;font-size:12px}.mini-progress{height:4px;background:#e1e7dd;border-radius:4px;margin-bottom:7px}.mini-progress i{display:block;height:100%;width:60%;background:#7e9b76;border-radius:4px}.mini-card small{font-size:10px;color:#969d94}.profile{width:100%;background:none;border:0;border-top:1px solid var(--line);padding:13px 5px 4px;display:flex;text-align:left;align-items:center;gap:10px}.avatar{width:33px;height:33px;border-radius:50%;background:#ead5be;color:#896b51;display:grid;place-items:center;font-weight:700}.profile b,.profile small{display:block}.profile b{font-size:11px}.profile small{font-size:10px;color:#989e98;margin-top:3px}.profile-more{margin-left:auto;font-size:20px;color:#8e958e}.main-area{margin-left:238px;min-height:100vh}.topbar{height:66px;background:#ffffffd9;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 38px;position:sticky;top:0;z-index:4;backdrop-filter:blur(12px)}.breadcrumb{font-size:11px;color:#959b95}.breadcrumb span{padding:0 8px;color:#c3c7c2}.breadcrumb b{color:#4c544d;font-weight:600}.top-actions{display:flex;align-items:center;gap:17px}.search-box{height:34px;width:205px;border:1px solid #e9ece7;border-radius:8px;background:#fff;display:flex;align-items:center;padding:0 9px;color:#929992;gap:7px}.search-box>span{font-size:19px}.search-box input{border:0;outline:0;width:100%;font-size:11px;background:transparent}.search-box kbd{font:9px 'Inter';color:#a4aaa3;background:#f6f7f4;padding:3px 4px;border-radius:4px;white-space:nowrap}.icon-button{position:relative;border:0;background:transparent;font-size:19px;color:#727a72}.icon-button i{position:absolute;width:5px;height:5px;border-radius:50%;background:#d88d67;right:4px;top:3px}.today-label{font-size:10px;color:#999f98;border-left:1px solid var(--line);padding-left:15px}.mobile-menu{display:none}.content-wrap{max-width:1320px;margin:auto;padding:30px 38px 18px}.page{display:none}.page.active{display:block;animation:appear .22s ease}@keyframes appear{from{opacity:.5;transform:translateY(3px)}to{opacity:1;transform:none}}.welcome-row,.page-title-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.eyebrow{font-size:9px;font-weight:700;letter-spacing:1.15px;color:#8e9b87;margin-bottom:9px}.sun-icon{color:#d5a85c;font-size:14px}.welcome-row h1,.page-title-row h1{font:700 26px Montserrat,sans-serif;letter-spacing:-.8px;margin:0 0 5px}.wave{color:#cf9d51;font-size:20px;margin-left:4px}.page-subtitle{color:#929892;font-size:12px;margin:0}.primary-button{border:0;background:var(--green);color:#fff;border-radius:8px;padding:10px 15px;font-weight:600;font-size:11px;box-shadow:0 3px 8px #527c6126}.primary-button:hover{background:var(--green-dark)}.primary-button span{font-size:15px;margin-right:4px}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:15px}.stat-card,.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.stat-card{padding:15px 16px 13px;min-width:0}.stat-top{display:flex;justify-content:space-between;align-items:center;color:#7f867e;font-size:10px}.stat-icon{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:14px}.green{background:#edf4ed;color:#5c8764}.orange{background:#fbf1e9;color:#ce8a55}.lavender{background:#f1eff8;color:#8d80bb}.yellow{background:#faf5e7;color:#c49c4b}.stat-number{font:700 20px Montserrat,sans-serif;letter-spacing:-.7px;margin:12px 0 9px;white-space:nowrap}.stat-number small{font:500 12px 'Inter';color:#858b85}.stat-foot{display:flex;align-items:center;gap:5px;color:#a1a69f;font-size:9px;min-height:15px;white-space:nowrap}.trend{color:#668c68;font-weight:700}.orange-text{color:#c5865d}.sparkline{margin-left:auto;font-size:13px;letter-spacing:1px}.green-line{color:#86a68b}.orange-line{color:#daa77d}.violet-line{color:#aa9bca}.soft-tag{background:#f2f4ef;color:#768071;border-radius:5px;padding:3px 6px}.due-dot{height:6px;width:6px;border-radius:50%;background:#d5995d}.stat-foot a{color:#66836a;margin-left:auto}.dashboard-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:14px}.panel{padding:19px 19px 4px}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between}.panel-heading h2{font:700 14px Montserrat,sans-serif;margin:0 0 5px;letter-spacing:-.2px}.panel-heading p{font-size:10px;color:#a0a59f;margin:0}.text-button{background:none;border:0;color:#738b72;font-size:10px;font-weight:600;padding:4px 0}.text-button span{font-size:14px;margin-left:4px}.schedule-list{margin-top:14px}.schedule-item{display:grid;grid-template-columns:38px 12px 1fr 31px;gap:9px;min-height:70px}.schedule-time{font-size:11px;font-weight:700;color:#4b554c;padding-top:1px}.schedule-time small{display:block;color:#a0a69f;font-size:9px;font-weight:400;margin-top:4px}.timeline{position:relative;display:flex;justify-content:center}.timeline:before{content:"";position:absolute;top:7px;bottom:-8px;width:1px;background:#e9ede6}.schedule-item:last-child .timeline:before{display:none}.timeline i{position:relative;z-index:1;margin-top:4px;width:7px;height:7px;border-radius:50%;background:#65906b;box-shadow:0 0 0 3px #edf4ed}.timeline i.later{background:#c6cbc5;box-shadow:0 0 0 3px #f2f3f0}.schedule-info>div{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.schedule-info b{font-size:11px;font-weight:600}.session-pill{font-size:8px;padding:3px 6px;border-radius:5px}.green-pill{color:#618565;background:#edf4ed}.gray-pill{color:#959b94;background:#f2f3f1}.schedule-info p{margin:8px 0 0;color:#959b95;font-size:9px}.schedule-info p span:first-child{color:#97a58f}.schedule-room{margin-left:10px}.class-avatar{align-self:start;width:29px;height:29px;border-radius:9px;display:grid;place-items:center;font:700 9px Montserrat}.mint{background:#edf3e9;color:#718966}.peach{background:#faf0e8;color:#be8b64}.full-link{border:0;border-top:1px solid #f0f1ed;background:transparent;display:flex;justify-content:space-between;width:100%;padding:12px 0;color:#7e9078;font-size:10px;font-weight:600;margin-top:1px}.round-add{border:1px solid #e8ede5;background:#f7f9f5;border-radius:8px;width:29px;height:29px;color:#608266;font-size:17px}.task-list{margin-top:11px}.task-row{display:flex;gap:9px;align-items:flex-start;padding:10px 0;border-bottom:1px solid #f1f2ef}.task-check{appearance:none;flex:none;margin:1px 0 0;width:15px;height:15px;border:1px solid #d9ded6;border-radius:5px;cursor:pointer}.task-check:checked{background:#66866a;border-color:#66866a}.task-check:checked:after{content:'✓';color:#fff;display:block;font-size:10px;text-align:center;line-height:14px}.task-copy{min-width:0;flex:1}.task-copy b{display:block;font-size:10px;font-weight:600;line-height:1.5}.task-copy small{font-size:9px;color:#a0a69f;display:block;margin-top:4px}.task-row.completed .task-copy b{text-decoration:line-through;color:#a0a69f}.priority{font-size:8px;border-radius:4px;padding:3px 5px;white-space:nowrap}.priority.high{background:#fbefeb;color:#c87964}.priority.medium{background:#fbf5e7;color:#bd9b51}.priority.low{background:#eef3eb;color:#78946f}.spending-panel,.activity-panel{min-height:210px}.select-button{border:1px solid #eceee9;background:white;color:#7f867e;border-radius:7px;padding:7px 9px;font-size:9px}.chart-layout{display:flex;align-items:center;justify-content:space-around;padding:12px 4px 10px}.donut-chart{width:120px;height:120px;border-radius:50%;background:conic-gradient(#789b77 0 38.5%,#d7ac76 38.5% 62.5%,#91aeb0 62.5% 83.3%,#d9ded4 83.3% 100%);display:grid;place-items:center;position:relative}.donut-chart:before{content:"";position:absolute;inset:17px;background:white;border-radius:50%}.donut-center{position:relative;text-align:center}.donut-center b{font:700 16px Montserrat;display:block}.donut-center small{font-size:9px;color:#a0a69f}.legend{display:grid;gap:9px;min-width:120px}.legend>div{display:grid;grid-template-columns:8px 1fr auto;gap:7px;align-items:center;font-size:9px;color:#929991}.legend b{font-size:9px;color:#626a62}.legend-dot{width:7px;height:7px;border-radius:50%}.c1{background:#789b77}.c2{background:#d7ac76}.c3{background:#91aeb0}.c4{background:#d9ded4}.transaction-list{margin-top:9px}.transaction-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #f1f2ef}.transaction-row:last-child{border-bottom:0}.transaction-icon{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:#eef3ec;color:#628369;font-size:14px}.transaction-icon.expense{background:#fbf0e9;color:#c38a63}.transaction-copy{flex:1;min-width:0}.transaction-copy b{display:block;font-size:10px;font-weight:600}.transaction-copy small{display:block;font-size:9px;color:#a0a59f;margin-top:3px}.transaction-amount{font-size:10px;font-weight:700;white-space:nowrap}.transaction-amount.income{color:#618466}.transaction-amount.expense{color:#5b615b}.footer{display:flex;justify-content:space-between;color:#a4aaa3;font-size:9px;margin-top:24px;padding:0 2px 8px}.footer-heart{color:#c98e67}.page-title-row{margin-bottom:23px}.page-title-row h1{font-size:25px}.subnav{display:flex;gap:23px;border-bottom:1px solid #e6e9e3;margin-bottom:17px}.subnav-item{background:none;border:0;padding:10px 2px;color:#919890;font-size:11px;border-bottom:2px solid transparent;margin-bottom:-1px}.subnav-item.active{color:#547757;border-color:#628566;font-weight:700}.subnav-item span{margin-left:5px;background:#f0f2ee;padding:2px 6px;border-radius:9px;font-size:9px}.subnav-item .alert-count{background:#fbf0e5;color:#bd8452}.class-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.class-card{background:white;border:1px solid var(--line);border-radius:13px;padding:16px;box-shadow:var(--shadow)}.class-card-top{display:flex;justify-content:space-between;align-items:center}.class-card h3{font:700 14px Montserrat;margin:13px 0 3px}.class-card>p{font-size:10px;color:#929a91;margin:0}.class-color{width:35px;height:35px;border-radius:10px;display:grid;place-items:center;font:700 10px Montserrat}.class-meta{display:flex;justify-content:space-between;border-top:1px solid #f0f2ee;margin-top:14px;padding-top:11px;font-size:9px;color:#90988e}.class-meta b{color:#4b544b;font-weight:600}.student-chips{display:flex;margin:13px 0 4px}.student-chips span{width:24px;height:24px;margin-right:-4px;border:2px solid #fff;border-radius:50%;display:grid;place-items:center;font-size:8px;color:#566653;background:#e8eee4}.class-card .text-button{margin-top:8px}.attendance-toolbar,.todo-toolbar{display:flex;justify-content:space-between;align-items:center;margin:0 0 13px}.date-switch{display:flex;align-items:center;gap:11px;font-size:12px;font-weight:700}.date-switch button{border:1px solid var(--line);background:white;border-radius:6px;width:27px;height:27px}.attendance-list{background:white;border:1px solid var(--line);border-radius:12px;padding:0 18px}.attendance-row{display:flex;align-items:center;gap:10px;padding:13px 0;border-bottom:1px solid #f0f2ee}.attendance-row:last-child{border:0}.attendance-row .avatar{width:30px;height:30px;font-size:10px}.attendance-row b{font-size:11px;flex:1}.attendance-row small{color:#9ba199;font-size:9px}.status-select{border:1px solid #e9ece7;background:white;border-radius:6px;padding:6px 8px;font-size:9px;color:#607260}.fee-header,.fee-row{display:grid;grid-template-columns:1.5fr .7fr .8fr .8fr .8fr;gap:10px;align-items:center}.fee-header{padding:11px 13px;color:#969d95;font-size:8px;letter-spacing:.6px}.fee-list{background:white;border:1px solid var(--line);border-radius:11px;padding:0 13px}.fee-row{padding:12px 0;border-top:1px solid #f0f2ee;font-size:10px}.fee-name{font-weight:600}.fee-status{display:inline-block;background:#fbf1e7;color:#bf8756;border-radius:5px;padding:4px 6px;font-size:8px}.fee-status.paid{background:#edf4ed;color:#618565}.finance-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-bottom:15px}.finance-sum-card{border:1px solid var(--line);background:white;border-radius:12px;padding:15px}.finance-sum-card small{color:#949b93;font-size:10px}.finance-sum-card b{display:block;font:700 20px Montserrat;margin-top:9px}.finance-sum-card em{font-style:normal;color:#67866a;font-size:9px}.finance-table-panel{padding-bottom:0}.table-scroll{overflow:auto;margin-top:13px}table{border-collapse:collapse;width:100%;min-width:540px}th{text-align:left;color:#9ba199;font-size:8px;letter-spacing:.7px;font-weight:600;padding:11px 9px;border-bottom:1px solid #eceee9}td{padding:12px 9px;border-bottom:1px solid #f0f2ee;font-size:10px}td:first-child{font-weight:600}td:last-child{font-weight:700;text-align:right}th:last-child{text-align:right}.todo-toolbar{margin-top:8px}.todo-tabs{display:flex;gap:7px}.todo-filter{border:1px solid #e9ece7;background:white;padding:7px 11px;border-radius:7px;color:#8c938b;font-size:10px}.todo-filter.active{background:#edf3ec;color:#56775a;border-color:#e2ebe0;font-weight:700}.muted{color:#a0a69f;font-size:10px}.todo-panel{padding:7px 18px}.todo-row{display:flex;align-items:center;gap:11px;border-bottom:1px solid #f0f2ee;padding:13px 0}.todo-row:last-child{border-bottom:0}.todo-row .task-check{width:17px;height:17px}.todo-row .task-copy b{font-size:11px}.todo-row .task-copy small{font-size:9px}.todo-date{font-size:9px;color:#969d95;min-width:105px;text-align:right}.notes-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.note-card{padding:17px 17px 16px;border-radius:12px;min-height:170px;display:flex;flex-direction:column;position:relative;border:1px solid #eeeae1}.note-card.yellow-note{background:#faf6e9;border-color:#f2eddc}.note-card.green-note{background:#edf3ea;border-color:#e7eee3}.note-card.pink-note{background:#f7edeb;border-color:#f1e6e3}.note-card.blue-note{background:#edf2f5;border-color:#e6ecef}.note-pin{position:absolute;right:14px;top:13px;color:#90997f}.note-card h3{font:700 12px Montserrat;margin:0 20px 9px 0}.note-card p{color:#777e73;font-size:10px;line-height:1.8;margin:0}.note-card small{margin-top:auto;padding-top:14px;color:#9b9f93;font-size:9px}.note-footer{display:flex;justify-content:space-between;align-items:center}.note-delete{background:none;border:0;color:#a2a79c;font-size:13px}.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%,15px);opacity:0;pointer-events:none;z-index:20;background:#27382a;color:white;padding:11px 16px;border-radius:9px;box-shadow:0 8px 25px #1b2b1d25;font-size:11px;transition:.22s}.toast.show{opacity:1;transform:translate(-50%,0)}dialog{border:1px solid var(--line);border-radius:15px;width:min(430px,calc(100vw - 30px));padding:0;box-shadow:0 18px 60px #18241a26;color:var(--ink)}dialog::backdrop{background:#1b241e55;backdrop-filter:blur(2px)}dialog form{padding:21px}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:17px}.dialog-head h2{font:700 19px Montserrat;margin:0}.close-button{border:0;background:#f2f4f0;border-radius:7px;width:27px;height:27px;font-size:19px;color:#717a70}.field{display:grid;gap:6px;margin-bottom:13px}.field label{font-size:10px;font-weight:600;color:#6e776d}.field input,.field select,.field textarea{border:1px solid #e6e9e3;border-radius:7px;padding:10px;font-size:11px;outline:none;background:#fff}.field textarea{min-height:70px;resize:vertical}.field input:focus,.field textarea:focus,.field select:focus{border-color:#93ad91}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:19px}.secondary-button{border:1px solid #e6e9e3;background:white;border-radius:7px;padding:9px 13px;font-size:10px}
@media(min-width:1450px){.content-wrap{padding-top:38px}.stat-card{padding:18px 19px}.stat-number{font-size:22px}.dashboard-grid{gap:16px}.panel{padding-left:21px;padding-right:21px}}@media(max-width:1120px){.sidebar{width:210px}.main-area{margin-left:210px}.topbar{padding:0 24px}.content-wrap{padding:27px 24px 18px}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid{grid-template-columns:1fr 1fr}.stat-foot{font-size:8px}.class-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:transform .22s;box-shadow:8px 0 30px #18241a12}.sidebar.open{transform:translateX(0)}.main-area{margin-left:0}.topbar{height:57px;padding:0 16px}.mobile-menu{display:block;border:0;background:none;font-size:18px;color:#59645a;padding:4px 9px 4px 0}.breadcrumb{margin-right:auto;font-size:10px}.today-label{display:none}.top-actions{gap:10px}.search-box{width:34px;border:0;background:transparent;padding:0;justify-content:center}.search-box input,.search-box kbd{display:none}.search-box>span{font-size:22px}.icon-button{font-size:18px}.content-wrap{padding:22px 16px 16px}.welcome-row,.page-title-row{align-items:flex-start;gap:12px}.welcome-row h1,.page-title-row h1{font-size:22px}.welcome-row .primary-button,.page-title-row .primary-button{white-space:nowrap;padding:9px 10px;font-size:10px}.page-subtitle{font-size:10px;line-height:1.6}.stat-grid{gap:9px}.stat-card{padding:12px 11px;border-radius:12px}.stat-top{font-size:9px}.stat-icon{width:23px;height:23px}.stat-number{font-size:16px;margin:10px 0 7px}.stat-number small{font-size:10px}.stat-foot{font-size:8px;flex-wrap:wrap}.sparkline{display:none}.dashboard-grid{grid-template-columns:1fr;gap:10px}.panel{padding:16px 15px 4px}.panel-heading h2{font-size:13px}.chart-layout{justify-content:space-evenly}.donut-chart{width:112px;height:112px}.activity-panel{min-height:0}.footer{font-size:8px}.class-grid{grid-template-columns:1fr}.finance-summary{gap:7px}.finance-sum-card{padding:12px 9px}.finance-sum-card small{font-size:8px}.finance-sum-card b{font-size:15px}.notes-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.note-card{padding:13px;min-height:165px}.note-card h3{font-size:11px}.note-card p{font-size:9px}.fee-header,.fee-row{grid-template-columns:1.2fr .7fr .7fr .8fr}.fee-header span:nth-child(3),.fee-row span:nth-child(3){display:none}.attendance-row{gap:7px}.attendance-row small{display:none}.attendance-toolbar{gap:8px}.subnav{gap:14px}.todo-date{min-width:76px;font-size:8px}.todo-row{gap:8px}.todo-row .priority{display:none}}@media(max-width:390px){.stat-grid{grid-template-columns:1fr 1fr}.stat-number{font-size:14px}.stat-foot a{display:none}.notes-grid{grid-template-columns:1fr 1fr}.todo-date{min-width:62px}.class-card{padding:14px}.search-box{width:27px}}
