:root{--bg:#f6f7fb;--surface:#fff;--border:#e2e5ee;--text:#1f2430;--text-sub:#6b7280;--primary:#3b5bdb;--primary-dark:#2f4bc0;--danger:#d6455d;--radius:10px;--shadow:0 1px 3px rgb(20 24 40/8%)}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.45}h1{font-size:1.5rem;margin:0 0 1rem}h2{font-size:1.15rem;margin:0 0 .75rem}.site-header{background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow)}.site-nav{max-width:1200px;margin:0 auto;padding:.6rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.brand{font-weight:700;text-decoration:none;color:var(--text)}.nav-links{display:flex;align-items:center;gap:.75rem}.nav-links a{color:var(--primary);text-decoration:none}.user-name{color:var(--text-sub);font-size:.9rem}.site-main{max-width:1200px;margin:0 auto;padding:1.25rem 1rem 3rem}.btn{display:inline-block;padding:.45rem .9rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;text-decoration:none}.btn:hover{color:var(--primary)}.btn-primary,.btn:hover{border-color:var(--primary)}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark);color:#fff}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost.danger,.btn.danger{color:var(--danger)}.btn:disabled{opacity:.6;cursor:default}.toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:1rem;margin-bottom:1rem}.toolbar label{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem}.week-nav{display:flex;gap:.4rem}.page-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}input,select{padding:.45rem .6rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font:inherit;min-width:12rem}input.checkbox{min-width:auto;width:1.1rem;height:1.1rem}.req{margin-left:2px}.error,.req{color:var(--danger)}.error{font-size:.9rem;margin:.5rem 0;padding-left:1rem}ul.error{list-style:disc}.hint,.sub{color:var(--text-sub)}.sub{display:block;font-size:.78rem;font-weight:400}.login-box{max-width:22rem;margin:3rem auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem}.login-box form{gap:.9rem}.login-box form,.login-box label{display:flex;flex-direction:column}.login-box label{gap:.25rem;font-size:.9rem}.login-box input{min-width:auto}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.8rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.9rem 1rem;text-decoration:none;color:var(--text);box-shadow:var(--shadow)}.card:hover{border-color:var(--primary)}.data-table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.data-table td,.data-table th{padding:.55rem .75rem;border-bottom:1px solid var(--border);text-align:left;font-size:.92rem}.data-table th{background:#f0f2f8;font-weight:600}.data-table tr:last-child td{border-bottom:none}.row-actions{white-space:nowrap;text-align:right}.grid-wrap{overflow-x:auto}.schedule-grid{width:100%;min-width:860px;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow)}.schedule-grid td,.schedule-grid th{border:1px solid var(--border);padding:.4rem;vertical-align:top;font-size:.88rem}.schedule-grid th{background:#f0f2f8}.slot-col{width:4.5rem;text-align:center;background:#f8f9fc}.grid-cell{min-width:8rem;height:4.5rem}.lesson-card{position:relative;background:#eef1fd;border:1px solid #ccd4f5;border-radius:8px;padding:.4rem 1.4rem .4rem .5rem;margin-bottom:.3rem}.lesson-title{font-weight:600;font-size:.88rem}.lesson-meta{color:var(--text-sub);font-size:.78rem}.badge{display:inline-block;background:var(--primary);color:#fff;border-radius:6px;padding:0 .35rem;font-size:.7rem}.badge-sub{background:#8a63c9}.card-actions{position:absolute;top:2px;right:4px;display:flex;gap:2px}.btn-icon{border:none;background:transparent;color:var(--primary);font-size:.9rem;cursor:pointer;line-height:1;padding:1px 2px}.btn-icon.danger{color:var(--danger);font-size:1rem}.lesson-cancelled{background:#fdecef;border-color:#f2b8c2}.lesson-cancelled .lesson-title{text-decoration:line-through;color:var(--danger)}.lesson-ghost{opacity:.55;background:#f2f3f7;border-style:dashed}.lesson-moved{background:#e9f7ef;border-color:#b7e4c7}.lesson-modified{background:#fff6e5;border-color:#f5d38f}.lesson-note{margin-top:2px;font-size:.72rem;color:#8a5a00;border-top:1px dashed var(--border);padding-top:2px}.lesson-cancelled .lesson-note{color:var(--danger)}.btn-add{width:100%;border:1px dashed var(--border);background:transparent;color:var(--text-sub);border-radius:8px;cursor:pointer;padding:.15rem}.btn-add:hover{border-color:var(--primary);color:var(--primary)}.modal{border:none;border-radius:var(--radius);box-shadow:0 10px 40px #14182840;padding:1.5rem;min-width:min(26rem,92vw)}.modal::backdrop{background:#0f121e73}.modal form{gap:.7rem}.modal form,.modal label{display:flex;flex-direction:column}.modal label{gap:.25rem;font-size:.9rem}.modal input,.modal select{min-width:auto;width:100%}.modal input.checkbox{width:1.1rem}.modal-actions{display:flex;justify-content:end;gap:.5rem;margin-top:.5rem}@media(max-width:640px){.site-main{padding:.75rem .5rem 2rem}.toolbar{align-items:stretch;flex-direction:column}.week-nav{justify-content:space-between}.data-table{display:block;overflow-x:auto}}
