*{box-sizing:border-box} :root{font-family:Inter,"Segoe UI",sans-serif;color:#243e4b;background:#f7f5f0;font-size:15px}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button{cursor:pointer;border:1px solid #d5ddd9;border-radius:9px;background:#fff;padding:10px 15px;color:inherit;transition:background .15s}button:hover{background:#eaf1ed}button:disabled{opacity:.55;cursor:wait}a{color:#17624f;text-decoration:none}a:hover{text-decoration:underline}input,select,textarea{border:1px solid #ccd6d0;border-radius:8px;padding:10px;background:#fff;color:inherit;min-width:0}textarea{resize:vertical}label{display:flex;flex-direction:column;gap:7px;font-size:13px;color:#53666c}h1,h2,p{margin-top:0}h1{font-size:32px;letter-spacing:-1px;margin-bottom:0}h2{font-size:21px;line-height:1.35;overflow-wrap:anywhere}small{display:block;color:#718080;font-size:12px}.brand{font-weight:750;letter-spacing:-1px;font-size:25px;color:#174f52}.brand span{color:#d67d73;padding-left:5px}.eyebrow{font-size:10px;letter-spacing:1.7px;font-weight:700;color:#7b8c86;margin:15px 0 10px}.primary{background:#245d4f;color:white;border-color:#245d4f}.primary:hover{background:#194738}.danger{color:#a2423e}.login{min-height:100vh;display:grid;place-items:center;background:radial-gradient(ellipse at 10% 10%,#e2ebd8,transparent 50%),#f8f3e9}.login-card{width:min(440px,92vw);padding:40px;border:1px solid #e3e3d6;border-radius:20px;background:#fffdf8;display:grid;gap:18px;box-shadow:0 12px 70px #2440320b}.login-card h1{font-size:30px}.login-card p{color:#718080;margin:0}.login-card a{text-align:center;font-size:13px}.login-card .eyebrow{margin-top:20px}#workspace{display:grid;grid-template-columns:225px minmax(0,1fr);min-height:100vh}#workspace[hidden], [hidden]{display:none!important}aside{position:sticky;top:0;height:100vh;padding:30px 22px;display:flex;flex-direction:column;border-right:1px solid #dfe4d9;background:#eef1e8}nav{display:grid;gap:5px;margin-top:32px}nav button{text-align:left;border:0;background:none;padding:13px 16px;font-weight:550}nav button.selected{background:#dbe7d9;color:#22523d}nav button:hover{background:#e2e9dd}.account{margin-top:auto;display:grid;gap:9px;font-size:13px}.account button{margin-top:9px;font-size:12px;background:transparent}main{padding:36px 38px;min-width:0}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;gap:16px}header .eyebrow{margin-top:0}.toolbar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:22px}.toolbar input[type=search]{flex:1;min-width:220px;max-width:370px}.toolbar select{max-width:240px}.summary{display:flex;gap:15px;margin-bottom:26px;flex-wrap:wrap}.stat{background:#fffdf8;border:1px solid #e3e6db;border-radius:12px;padding:17px 22px;min-width:160px;flex:1}.stat strong{display:block;font-size:24px;letter-spacing:-.5px;margin-top:8px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}.card{background:#fffdf8;border:1px solid #e0e4d8;border-radius:14px;padding:23px;min-width:0;box-shadow:0 3px 5px #183c2603}.card-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:18px}.badge{border-radius:5px;background:#ebefdf;padding:5px 8px;font-size:11px;font-weight:600}.text-button{border:0;background:none;padding:5px;font-size:11px;color:#70867d}.detail{margin-bottom:16px;min-width:0}.detail small{font-size:10px;letter-spacing:.6px;margin-bottom:6px}.detail div{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.6}.detail a{overflow-wrap:anywhere}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.balance{border-top:1px solid #e5e7dc;padding-top:15px;font-size:12px;color:#60796b}.trial-date{background:#edf1e0;padding:13px;border-radius:7px;font-weight:650;margin:18px 0}.trial>a{display:block;border-top:1px solid #e5e7dc;padding-top:15px;font-weight:650}.table-scroll{overflow:auto;border:1px solid #dce2d7;border-radius:12px;max-height:70vh;background:#fffdf8}table{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}th,td{padding:12px;border-bottom:1px solid #e8ebe1;text-align:left;white-space:nowrap}th{background:#edf0e6;color:#697b71;font-size:11px;position:sticky;top:0;z-index:2}th:first-child,td:first-child{position:sticky;left:0;background:#fffdf8;z-index:1;min-width:180px;border-right:1px solid #e5e8df}th:first-child{background:#edf0e6;z-index:3}.row-name small{margin-top:6px}.calendar-cell,.lesson{min-width:52px;padding:9px 5px;text-align:center}.lesson.conducted,.lesson.GR,.paid{background:#deedda}.lesson.P{background:#f7dedd}.lesson.PU{background:#dde9f6}.lesson.OP{background:#e8ddd1}.lesson.Per{background:#f0e0ef}.hint{color:#77847c;font-size:12px;line-height:1.6;margin-top:16px}.empty{text-align:center;padding:70px 20px;border:1px dashed #ccd7c7;border-radius:14px;color:#6a8072}.empty-icon{font-size:45px;margin-bottom:20px}.empty h2{font-size:20px}.empty p{font-size:13px}footer{font-size:11px;color:#8b978c;margin-top:35px}#error,#banner{padding:15px 18px;border-radius:9px;margin-bottom:20px;white-space:pre-wrap}#error{background:#f7e4df;color:#943d30}#banner{background:#e7efdb;color:#51693c}#login-error,#edit-error{color:#a2423e;white-space:pre-wrap}dialog{border:1px solid #d7dfd1;border-radius:15px;max-width:680px;width:94vw;padding:27px;color:inherit;box-shadow:0 30px 90px #12342330}dialog::backdrop{background:#193b3455;backdrop-filter:blur(3px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px}.dialog-heading h2{margin:0}.dialog-heading button{font-size:23px;border:0;padding:0 10px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.wide{grid-column:1/-1}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:23px}.dialog-actions .danger{margin-right:auto}input[type=checkbox]{align-self:flex-start;width:19px;height:19px}select[multiple]{min-height:115px}@media(max-width:900px){#workspace{grid-template-columns:175px minmax(0,1fr)}aside{padding:25px 12px}.brand{font-size:21px}main{padding:25px 20px}.cards{grid-template-columns:repeat(auto-fill,minmax(270px,1fr))}}@media(max-width:620px){#workspace{display:block}aside{height:auto;position:static;padding:18px}.account{display:none}aside>.eyebrow{display:none}nav{display:flex;overflow:auto;margin-top:15px;gap:3px}nav button{white-space:nowrap;padding:10px}main{padding:22px 15px}header{margin-bottom:22px}h1{font-size:27px}.stat{min-width:120px;padding:13px}.stat strong{font-size:20px}.cards{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.wide{grid-column:auto}.toolbar>*{max-width:100%!important}.dialog-actions{flex-wrap:wrap}}
/* Palette and font from the Godot project themes. */
@font-face{font-family:Montserrat;src:url('Montserrat-Regular.ttf') format('truetype');font-display:swap}
:root{font-family:Montserrat,'Segoe UI',sans-serif;color:#4e3d31;background:#fff1e6;--line:#edc39f;--paper:#fff7f0;--accent:#d96a4e}
body,.login{background:#fff1e6}.login-card,.card,.stat,dialog{background:#fffaf0;border-color:var(--line);box-shadow:none;border-radius:6px}
aside{background:#fff1e6;border-color:var(--line)}.brand{color:#4e3d31}.brand span{color:var(--accent)}a{color:#a84730}small,.eyebrow,label,.hint,footer,.detail small,.balance{color:#79604c}
button,input,select,textarea{border-color:var(--line);border-radius:4px}input,select,textarea{background:#fffaf0;color:#4e3d31}button{background:#fff7f0}button:hover{background:#ffe1bf}.primary{background:var(--accent);border-color:var(--accent);color:white}.primary:hover{background:#bc533c}.login-card p{color:#79604c}
nav{gap:20px;margin-top:24px}.nav-group{display:grid;gap:4px}.nav-category{font-size:11px;letter-spacing:1px;margin:0 0 6px;padding:0 10px;color:#79604c}nav button{border-radius:4px}nav button.selected{background:#f4cba3;color:#4e3d31}nav button:hover{background:#ffe1bf}.badge,.trial-date{background:#eef8d9;color:#4e3d31}.text-button{color:#946348}.balance,.trial>a{border-color:var(--line)}
main{padding:24px}header{margin-bottom:18px}.toolbar{margin-bottom:16px}.summary{margin-bottom:16px;gap:10px}.stat{padding:12px 16px}.stat strong{font-size:21px}.cards{gap:14px}.card{border-width:2px}.empty{border-color:var(--line);color:#79604c}
.month-navigation{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff1e6;border:1px solid var(--line);padding:10px 12px;border-radius:5px 5px 0 0}.month-navigation strong{min-width:190px;text-align:center;font-size:20px;text-transform:capitalize}.month-navigation button{font-size:28px;line-height:24px;padding:4px 14px}.month-navigation input{margin-left:auto;padding:6px 8px}.table-scroll{border:1px solid var(--line);border-radius:4px;background:var(--paper);max-height:65vh}.table-section .table-scroll{border-top:0;border-radius:0 0 4px 4px}
th,td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:9px 10px;font-size:13px}th{background:#f7cc81;color:#4e3d31;font-size:13px;border-color:#b8987b}td{background:#fff7f0}tbody tr:nth-child(even) td{background:#ffeddb}tbody tr:hover td{background:#ffe1bf}th:first-child{background:#f7cc81}td:first-child{background:#fff7f0;border-right:2px solid #d4a67f;min-width:210px}tbody tr:nth-child(even) td:first-child{background:#ffeddb}th:first-child{border-right:2px solid #b8987b}.calendar-table td:not(:first-child){padding:3px;min-width:48px;text-align:center}.calendar-table th:not(:first-child){text-align:center}.calendar-cell,.lesson{width:100%;min-width:44px;border-radius:2px;border-color:#e2b78f;padding:7px 3px;background:#fffaf0;font-size:13px}.row-name small{font-size:11px;margin-top:4px}.lesson.conducted,.lesson.GR,.paid{background:#dceebf}.lesson.P{background:#f6c6b8}.lesson.PU{background:#d5e6f5}.lesson.OP{background:#dfc7b4}.lesson.Per{background:#ecd9ed}.detail div{color:#4e3d31}#banner{background:#eef8d9;color:#4e3d31}dialog::backdrop{background:#4e3d3155}
@media(max-width:620px){nav{gap:18px;align-items:flex-start}.nav-group{flex:0 0 auto}.nav-category{font-size:10px}.month-navigation{gap:6px}.month-navigation strong{min-width:145px;font-size:17px}.month-navigation input{width:100%;margin:0}main{padding:16px 10px}}
.inline-editor{display:inline-block;max-width:100%;min-width:25px}.inline-value{background:transparent;border:1px solid transparent;padding:4px 3px;text-align:inherit;font:inherit;white-space:pre-wrap;overflow-wrap:anywhere;max-width:100%}.inline-value:hover,.inline-value:focus-visible{background:#ffe1bf;border-color:#d4a67f}.inline-editor input,.inline-editor textarea,.inline-editor select{max-width:100%;min-width:90px;padding:6px}.inline-editor textarea{width:100%;min-width:200px}.inline-error{color:#a2423e;white-space:normal}.inline-save{font-size:12px;margin-top:4px}td .inline-editor input[type=number]{width:110px}input[type=checkbox]{accent-color:#d96a4e;cursor:pointer}.card h2 .inline-value{font-size:inherit;font-weight:inherit}
/* Keep summary labels and values inside their cards on narrow screens. */
.summary .stat{min-width:0;flex:1 1 160px;overflow-wrap:anywhere}
.summary .stat strong,.summary .stat small{max-width:100%;white-space:normal;overflow-wrap:anywhere}
@media(max-width:620px){.summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.summary .stat{padding:12px}.summary .stat:last-child:nth-child(odd){grid-column:1/-1}.two{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:360px){.summary{grid-template-columns:minmax(0,1fr)}}
