@import url('https://fonts.googleapis.com/css2?family=League+Spartan:wght@400;500;600;700;800&family=Nunito:wght@400;500;600;700;800;900&display=swap');
:root{--navy:#102944;--navy2:#173859;--blue:#2564ae;--teal:#1b958e;--teal-dark:#177f79;--muted:#667a8e;--ink:#193148;--white:#fff;--bg:#f4f7fb;--line:#e4eaf0;--sky:#e9f4ff;--soft:#eaf7f4;--amber:#b66a1d;--red:#a84040;--shadow:0 8px 26px rgba(33,61,92,.065);--round:18px}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Nunito,Arial,sans-serif;color:var(--ink);background:var(--bg)}button,select,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #70b5ea;outline-offset:2px}a{color:inherit}
.app-shell{min-height:100vh;display:flex}.sidebar{width:242px;background:linear-gradient(165deg,#102944 0%,#153757 64%,#133953 100%);color:white;padding:30px 17px 24px;display:flex;flex-direction:column;flex-shrink:0}.brand{display:flex;align-items:center;gap:12px;padding:2px 10px 35px}.logo-mark{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;background:linear-gradient(145deg,#48d9d1,#1489c7);font-family:'League Spartan',sans-serif;font-weight:800;font-size:27px;box-shadow:0 5px 16px #061d3540}.logo-mark span{font-size:11px;color:#173b50;transform:translate(-4px,10px)}.brand strong{display:block;font-family:'League Spartan',sans-serif;font-size:23px;line-height:1}.brand small{font-size:10px;letter-spacing:3px;font-weight:800;color:#a4c9db}.side-section-label{font-size:10px;letter-spacing:1.7px;font-weight:900;color:#91b2c7;margin:7px 10px 13px}.view-switch{display:grid;grid-template-columns:1fr 1fr;background:#0b243c;border:1px solid #43617b55;padding:4px;gap:3px;border-radius:11px}.view-opt{background:transparent;color:#a9c5d9;border:0;font-size:11.5px;font-weight:900;padding:10px 3px;border-radius:8px}.view-opt.selected{color:#163a55;background:#e8f8fc}.side-nav{padding-top:24px;display:grid;gap:8px}.nav-item{width:100%;border:none;background:transparent;color:#bcd3e3;display:flex;align-items:center;gap:13px;border-radius:11px;padding:13px 15px;text-align:left;font-weight:800;font-size:13px}.nav-item svg{width:19px;height:19px;stroke-width:1.8}.nav-item:hover{background:#ffffff0b}.nav-item.active{background:#effbff1c;color:white;box-shadow:inset 3px 0 0 #4ed2cb}.sidebar-bottom{margin-top:auto;display:flex;align-items:center;gap:10px;padding:14px 8px 0;border-top:1px solid #ffffff23}.help-icon{width:29px;height:29px;display:grid;place-items:center;background:#ffffff19;border-radius:50%;font-weight:800;color:#bad9ea}.sidebar-bottom strong{font-size:12px;display:block}.sidebar-bottom span{font-size:10px;color:#a9bfd2}.workspace{min-width:0;flex:1}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);padding:0 35px;display:flex;justify-content:space-between;align-items:center}.breadcrumb{display:flex;gap:12px;align-items:center;color:#7e91a0;font-size:13px;font-weight:700}.breadcrumb strong{color:var(--ink);font-weight:900}.divider-dot{color:#adbcc9}.topbar-right{display:flex;align-items:center;gap:22px}.demo-pill{display:flex;align-items:center;gap:8px;color:#597686;background:#edf5fa;border-radius:30px;padding:8px 12px;font-size:11px;font-weight:900}.demo-dot{width:7px;height:7px;border-radius:50%;background:#35bd9e}.avatar{width:36px;height:36px;display:grid;place-items:center;border-radius:11px;background:#dceef8;color:#1d587c;font-weight:900}
#main{padding:35px;max-width:1530px;margin:auto}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:25px}.eyebrow{color:#258f94;font-size:11px;font-weight:900;letter-spacing:1.4px;text-transform:uppercase;margin:0 0 8px}.page-header h1{margin:0 0 8px;font-family:'League Spartan',sans-serif;font-size:35px;letter-spacing:-.8px}.page-header p{margin:0;color:var(--muted);max-width:650px;font-size:13px;line-height:1.6}.header-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.month-nav{display:flex;align-items:center;background:white;border:1px solid var(--line);padding:5px;border-radius:12px;gap:10px;white-space:nowrap;box-shadow:var(--shadow)}.month-nav strong{font-size:13px;min-width:120px;text-align:center}.month-nav button{width:28px;height:29px;background:#f4f7fa;border:0;border-radius:7px;color:#46647e;font-size:20px;line-height:1}.month-nav button:hover{background:#e6eff8}.reset-btn{border:1px solid var(--line);background:white;padding:10px 13px;border-radius:11px;font-size:12px;color:#6b7c8f;font-weight:800}.reset-btn:hover{border-color:#9eb6c5}.notice{display:flex;align-items:flex-start;gap:12px;padding:15px 18px;margin-bottom:22px;background:linear-gradient(100deg,#e8f5fa,#effaf7);border:1px solid #cee5e5;border-radius:14px;color:#3d6574;font-size:13px;line-height:1.5}.notice strong{color:#20546a}.notice svg{flex-shrink:0;margin-top:1px;stroke:#238f96;width:19px;height:19px}.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:20px}.stat{background:#fff;border:1px solid var(--line);padding:21px 22px;border-radius:var(--round);box-shadow:var(--shadow);min-width:0}.stat-label{color:#728598;font-weight:800;font-size:11px;text-transform:uppercase;letter-spacing:.7px}.stat-number{font-family:'League Spartan',sans-serif;font-size:33px;font-weight:700;line-height:1;margin:12px 0 8px;color:#1f435c}.stat-foot{font-size:11px;color:#7990a0}.stat-number.teal{color:#1b938c}.stat-number.blue{color:#2c6ead}.stat-number.orange{color:#b17828}
.content-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,1fr);gap:18px;align-items:start}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--round);box-shadow:var(--shadow);overflow:hidden}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:22px 23px 15px}.panel h2{font-family:'League Spartan',sans-serif;font-size:22px;letter-spacing:-.3px;margin:0 0 5px}.panel-sub{font-size:12px;color:var(--muted);line-height:1.4}.panel-body{padding:0 23px 23px}.pill{display:inline-flex;align-items:center;padding:6px 10px;border-radius:50px;font-size:10px;font-weight:900;white-space:nowrap}.pill.teal{background:#e5f8f2;color:#218673}.pill.amber{background:#fff3dc;color:#986518}.pill.gray{background:#eef2f5;color:#63778a}.pill.blue{background:#e6f2ff;color:#2774b5}.pill.red{background:#fff0ee;color:#a94742}.package-card{background:#f3f8fb;border-radius:14px;padding:17px 18px;border:1px solid #dfe9ef;margin-bottom:15px}.package-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.package-card h3{font-size:13px;margin:0 0 5px}.small-muted{color:var(--muted);font-size:11px}.count-control{display:flex;align-items:center;gap:11px;background:white;border:1px solid #dce8ed;border-radius:10px;padding:3px}.count-control button{height:30px;width:30px;border:none;background:#e9f2f8;border-radius:7px;color:#376c91;font-size:20px;font-weight:900}.count-control strong{min-width:15px;text-align:center;font-family:'League Spartan',sans-serif;font-size:18px}.package-foot{margin-top:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11px;color:#647e8b}.progress-track{height:7px;background:#dfe9ed;border-radius:5px;overflow:hidden;margin:13px 0 9px}.progress-fill{height:100%;background:linear-gradient(90deg,#189a95,#54c8b4);border-radius:5px;transition:width .2s}.usual-btn{display:inline-flex;align-items:center;gap:7px;border:1px solid #b8dcdb;background:#f1fbfa;color:#1d817e;border-radius:9px;font-size:11px;font-weight:900;padding:9px 11px}.usual-btn:hover{background:#e2f4f2}.calendar-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 13px}.calendar-header h3{font-size:13px;font-weight:900;margin:0}.key-row{display:flex;gap:10px;flex-wrap:wrap}.key{display:flex;align-items:center;gap:4px;color:#71889a;font-size:10px;font-weight:800}.key i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#229f99}.key i.booked{background:#3674ba}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.week-label{text-align:center;color:#93a4b0;font-size:10px;font-weight:900;padding:5px 0 7px}.date-cell{position:relative;min-height:54px;border:1px solid #edf1f5;background:#fff;border-radius:10px;padding:8px 6px;text-align:left;font-size:12px;color:#435b6e;font-weight:900;transition:background .12s,border .12s}.date-cell:enabled:hover{border-color:#52b2b5;background:#f1fbfa}.date-cell.selected{border:2px solid #199b94;background:#eaf9f5;padding:7px 5px}.date-cell.booked{background:#eaf2ff;border-color:#d9e7fd}.date-cell.booked.selected{border-color:#168e90;background:#e5f7f1}.date-cell.off{border-color:transparent;background:#f7f9fb;color:#bcc6cf;cursor:default}.date-cell.undateable{color:#b1bec7;background:#f7f9fb;border:1px solid #f0f2f5}.date-cell .cell-dots{position:absolute;bottom:6px;left:7px;display:flex;gap:3px}.date-cell .cell-dots i{width:5px;height:5px;border-radius:50%;background:#2f8c9b}.date-cell .cell-dots i.is-booked{background:#3473bd}.date-cell .cell-count{position:absolute;right:5px;bottom:4px;color:#2f69ac;font-size:9px}.slots-panel{margin-top:17px;padding:14px;background:#f7fafc;border:1px solid #e5edf2;border-radius:13px;min-height:100px}.slots-panel .slots-title{font-weight:900;font-size:12px;margin:0 0 11px}.slot-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.slot-btn{border:1px solid #d4e5e9;border-radius:9px;background:#fff;padding:10px 5px;font-size:12px;font-weight:900;color:#307c89}.slot-btn:hover{background:#e7f6f1;border-color:#43b9ad}.slot-btn:disabled{background:#e9edf1;color:#b1bac1}.slot-placeholder{color:#798e9d;font-size:12px;line-height:1.5}.moving-alert{background:#fff6e5;border:1px solid #f3e0ba;padding:10px 12px;margin-bottom:10px;border-radius:9px;color:#916826;font-size:11px;line-height:1.5}.moving-alert strong{display:block}.cancel-link{background:none;border:0;color:#2776ae;font-weight:900;font-size:11px;text-decoration:underline;padding:4px 0}.lesson-list{display:grid;gap:8px}.lesson-row{border:1px solid #e5ebef;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px;border-radius:12px}.lesson-date{width:48px;min-width:48px;height:49px;border-radius:9px;background:#edf5fb;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.1}.lesson-date span{font-size:9px;color:#62869e;font-weight:900;text-transform:uppercase}.lesson-date b{font-size:19px;font-family:'League Spartan',sans-serif;color:#2a5b80}.lesson-main{display:flex;align-items:center;gap:10px;min-width:0}.lesson-name{font-size:12px;font-weight:900}.lesson-detail{font-size:10px;color:#7c90a0;margin-top:3px}.lesson-actions{display:flex;gap:5px;align-items:center}.tiny-btn{border:1px solid #dce8ed;border-radius:8px;color:#38759b;background:#f8fbfd;padding:7px 9px;font-weight:900;font-size:10px;white-space:nowrap}.tiny-btn:hover{background:#e6f2f9}.tiny-btn.danger{color:#a25c57}.empty{border:1px dashed #d8e2e9;text-align:center;padding:28px 15px;color:#7a90a0;border-radius:13px;font-size:12px;line-height:1.6}.empty-icon{font-size:29px;display:block;margin-bottom:4px}.submit-box{background:#f4f8fa;border:1px solid #e5eef1;border-radius:12px;margin-top:17px;padding:15px}.submit-head{display:flex;justify-content:space-between;gap:9px;font-size:12px;font-weight:900;margin-bottom:6px}.submit-box p{font-size:11px;line-height:1.5;color:#6c8292;margin:0 0 13px}.primary-btn{background:linear-gradient(125deg,#1a9a92,#158d96);color:#fff;border:0;padding:12px 17px;border-radius:10px;font-weight:900;font-size:12px;box-shadow:0 5px 12px #14949425}.primary-btn:hover{filter:brightness(.97)}.primary-btn.full{width:100%}.secondary-btn{background:#eff5fa;border:1px solid #dbe7ee;border-radius:10px;color:#346d91;font-weight:900;padding:11px 13px;font-size:11px}.secondary-btn:hover{background:#e8f1f9}.inline-warning{background:#fff5e9;color:#9b6b35;border-radius:9px;padding:10px 12px;font-size:11px;line-height:1.5;margin:10px 0}.right-stack{display:grid;gap:18px}.rules-list{display:grid;gap:13px}.rule{display:flex;gap:9px;color:#637b8d;font-size:12px;line-height:1.5}.rule .rule-icon{width:25px;height:25px;min-width:25px;border-radius:8px;display:grid;place-items:center;background:#ebf7f5;color:#23857f;font-size:13px}.rule strong{color:#294c65}
.admin-table-wrap{overflow:auto}.admin-table{border-collapse:collapse;width:100%;min-width:670px}.admin-table th{text-align:left;font-size:10px;letter-spacing:.8px;color:#7e92a2;background:#f7fafc;padding:14px 20px;border-bottom:1px solid #e8eef3;text-transform:uppercase}.admin-table td{padding:15px 20px;border-bottom:1px solid #edf1f4;font-size:12px}.admin-table tr:last-child td{border-bottom:0}.admin-table td strong{font-size:12px}.admin-table td small{color:#8797a4;font-size:10px;display:block;margin-top:2px}.admin-table .strong-number{font-size:17px;font-family:'League Spartan',sans-serif;font-weight:700}.admin-header{padding:22px 23px;display:flex;justify-content:space-between;align-items:center;gap:10px}.admin-header h2{margin:0}.admin-controls{display:flex;gap:8px;align-items:center}.simple-select{padding:9px 10px;border:1px solid #dce7ee;background:#fff;border-radius:10px;font-size:11px;font-weight:900;color:#547287}.admin-summary{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.admin-summary .panel-body{padding:18px 23px 23px}.mini-lesson{display:flex;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid #edf1f5;font-size:12px}.mini-lesson:last-child{border:0}.mini-lesson span{color:#738899}.detail-modal{position:fixed;inset:0;background:#061c2bbb;z-index:20;display:flex;align-items:center;justify-content:center;padding:20px}.modal-card{background:#fff;border-radius:20px;width:min(540px,100%);max-height:90vh;overflow-y:auto;box-shadow:0 15px 60px #061d2444}.modal-head{padding:23px 25px 18px;display:flex;justify-content:space-between;gap:15px;border-bottom:1px solid #edf1f5}.modal-head h2{font-family:'League Spartan',sans-serif;font-size:25px;margin:0}.modal-close{width:29px;height:29px;border:0;background:#eff3f7;border-radius:8px;color:#5f7c93;font-size:18px}.modal-content{padding:22px 25px 25px}.modal-content p{font-size:12px;color:#667e90;line-height:1.7}.modal-actions{display:flex;gap:9px;justify-content:flex-end;flex-wrap:wrap;margin-top:20px}.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.modal-stat{background:#f6f9fb;border:1px solid #e5edf0;padding:13px;border-radius:11px}.modal-stat small{font-size:10px;color:#748998;display:block;margin-bottom:4px}.modal-stat strong{font-size:15px}.toast{position:fixed;bottom:25px;right:25px;max-width:360px;background:#183d50;color:#fff;border-radius:12px;padding:14px 18px;box-shadow:0 8px 34px #0f364055;opacity:0;transform:translateY(18px);pointer-events:none;transition:.2s;z-index:50;font-size:12px;font-weight:800;line-height:1.45}.toast.show{opacity:1;transform:translateY(0)}.forfeited-label{color:#a15c45;font-weight:900;font-size:11px}.empty-state-admin{padding:25px;color:#8293a3;font-size:12px;text-align:center}.footer-note{margin-top:23px;color:#8796a5;font-size:10px;line-height:1.6}.head-stripe{height:4px;background:linear-gradient(90deg,#1e9e98,#63bfc8,#99c2fa)}
@media(max-width:1160px){.content-grid{grid-template-columns:1fr}.right-stack{grid-template-columns:repeat(2,minmax(0,1fr))}.sidebar{width:210px}.admin-summary{grid-template-columns:1fr 1fr}}@media(max-width:850px){.app-shell{display:block}.sidebar{width:100%;padding:13px 16px 14px;display:block}.brand{padding:0 0 12px}.sidebar-bottom,.side-section-label{display:none}.view-switch{max-width:330px}.side-nav{display:flex;overflow:auto;padding-top:12px;gap:5px}.nav-item{white-space:nowrap;min-width:max-content;font-size:11px;padding:9px 12px}.nav-item svg{width:15px;height:15px}.topbar{height:55px;padding:0 18px}#main{padding:23px 18px}.page-header h1{font-size:31px}.stats-grid{gap:10px}.stat{padding:14px}.stat-number{font-size:27px}.right-stack{grid-template-columns:1fr}.admin-summary{grid-template-columns:1fr}}@media(max-width:550px){.page-header{display:block}.header-actions{margin-top:17px}.topbar-right{gap:7px}.demo-pill{font-size:9px;padding:7px}.avatar{width:30px;height:30px}.breadcrumb{font-size:11px}.stats-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.stat{padding:11px}.stat-label{font-size:9px}.stat-number{font-size:25px}.stat-foot{font-size:9px}.panel-head{padding:19px 15px 14px}.panel-body{padding:0 15px 18px}.calendar{gap:4px}.date-cell{min-height:46px;padding:6px 4px}.date-cell.selected{padding:5px 3px}.slot-grid{grid-template-columns:repeat(3,1fr)}.lesson-row{flex-wrap:wrap}.lesson-actions{margin-left:auto}.package-row{flex-wrap:wrap}.month-nav strong{min-width:98px}.modal-grid{grid-template-columns:1fr 1fr}}
