@import"https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&display=swap";*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;background:#fafaf8;font-family:DM Sans,system-ui,-apple-system,sans-serif;font-size:.875rem;color:#111;line-height:1.6}body.scheduler-shell{height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}body.scheduler-shell>astro-island{display:contents}h1{font-size:1.375rem;font-weight:700;margin:0}h2{font-size:1rem;font-weight:600;margin:0}h3{font-size:.875rem;font-weight:600;margin:0}a{color:inherit;text-decoration:underline;text-underline-offset:2px}a:hover{opacity:.7}input,select,textarea{border:1.5px solid #bbb;border-radius:5px;padding:.25rem .5rem;font-size:.875rem;font-family:inherit;outline:none;background:#fff;color:#111}input:focus,select:focus,textarea:focus{border-color:#111;box-shadow:0 0 0 1px #111}input:disabled,select:disabled,textarea:disabled{background:#f0f0ee;color:#999;cursor:not-allowed}button{border:1.5px solid #ccc;border-radius:5px;padding:.375rem .75rem;font-size:.875rem;font-family:inherit;background:#fff;color:#111;cursor:pointer}button:hover{background:#f4f4f2;border-color:#aaa}button:disabled{opacity:.45;cursor:not-allowed}label{font-size:.875rem;font-weight:500;color:#111;display:block;margin-bottom:.25rem}nav{display:flex;align-items:center;justify-content:space-between;gap:.5rem;border-bottom:1.5px solid #e0e0de;background:#fff;padding:.75rem 1.5rem}.nav-back,.nav-title{display:none}.nav-right{display:flex;align-items:center;justify-content:space-between;flex:1}body.scheduler-shell nav{padding:.25rem .75rem}body.scheduler-shell .nav-back{display:block;text-decoration:none;color:inherit;font-size:1.125rem;line-height:1}body.scheduler-shell .nav-title{display:block;font-size:.875rem}body.scheduler-shell .nav-right{flex:0;margin-left:auto;flex-direction:column;align-items:flex-end;gap:0}body.scheduler-shell .nav-email{font-size:.7rem}body.scheduler-shell .btn-signout{font-size:.7rem;padding:0}.container{max-width:56rem;margin:0 auto;padding:2rem 1rem}.container-wide{max-width:72rem;margin:0 auto;padding:1.5rem 1rem}.scheduler-page{padding:1.5rem 1rem}body.scheduler-shell .scheduler-page{flex:1;min-height:0;overflow:hidden;padding:.5rem .75rem;gap:.5rem}.stack{display:flex;flex-direction:column;gap:1rem}.stack-sm{display:flex;flex-direction:column;gap:.5rem}.row{display:flex;align-items:center;gap:.75rem}.row-wrap{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem}.row-between{display:flex;align-items:center;justify-content:space-between}.form-row{display:flex;flex-direction:column;gap:.5rem}@media(min-width:640px){.form-row{flex-direction:row;flex-wrap:wrap}}.card-sm{background:#fff;border:1.5px solid #e0e0de;border-radius:6px;padding:.75rem 1rem}.add-box{background:#fff;border:1.5px dashed #ccc;border-radius:6px;padding:1rem}@media(max-width:639px){.admin-email{display:none}}.btn-primary,.btn-save{background:#111;color:#fff;border:1.5px solid #111;border-radius:5px;padding:.25rem .75rem;font-size:.75rem;font-weight:600;cursor:pointer}.btn-primary:hover,.btn-save:hover{background:#333;border-color:#333}.btn-nav{background:#fff;border:1.5px solid #ccc;border-radius:5px;padding:.375rem .75rem;font-size:.875rem;color:#111;cursor:pointer;text-decoration:none;display:inline-block}.btn-nav:hover{background:#f4f4f2;border-color:#aaa;text-decoration:none}.btn-danger{background:none;border:1px solid #fca5a5;color:#b91c1c;font-size:.75rem;padding:.25rem .5rem;border-radius:5px;cursor:pointer}.btn-danger:hover{color:#7f1d1d;border-color:#ef4444;background:#fef2f2}.btn-link{background:none;border:none;color:#555;font-size:.75rem;padding:.25rem .5rem;border-radius:5px;cursor:pointer}.btn-link:hover{color:#111;background:#f0f0ee}.btn-outline{background:none;border:1px solid #aaa;color:#333;font-size:.75rem;padding:.25rem .5rem;border-radius:5px;cursor:pointer}.btn-outline:hover{color:#111;border-color:#555;background:#f0f0ee}.btn-signout{background:none;border:none;font-size:.875rem;color:#888;cursor:pointer}.btn-signout:hover{color:#111}.btn-signin{width:100%;background:#111;color:#fff;border:1.5px solid #111;border-radius:6px;padding:.5rem 1rem;font-size:.875rem;font-weight:600;cursor:pointer}.btn-signin:hover{background:#333;border-color:#333}.btn-signin:disabled{opacity:.45;cursor:not-allowed}.signin-box{max-width:22rem;margin:5rem auto 0;padding:1.5rem;background:#fff;border-radius:10px;border:1.5px solid #e0e0de;box-shadow:0 4px 20px #00000012}.error{border:1.5px solid #f0b8b8;background:#fdf5f5;color:#b91c1c;border-radius:5px;padding:.5rem}.success{border:1.5px solid #a8d8a8;background:#f5fbf5;color:#166534;border-radius:6px;padding:1rem;text-align:center}.muted{color:#888;font-size:.75rem}.err-text{color:#b91c1c;font-size:.75rem}details.accordion{border:1.5px solid #e0e0de;border-radius:6px;background:#fff}details.accordion>summary{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;cursor:pointer;user-select:none;list-style:none}details.accordion>summary:before{content:"▶";font-size:.55rem;color:#bbb;flex-shrink:0;transition:transform .15s}details.accordion[open]>summary:before{transform:rotate(90deg)}details.accordion>summary::-webkit-details-marker{display:none}@media(max-width:639px){details.accordion>summary{flex-wrap:wrap;row-gap:.25rem}}details.accordion>.accordion-body{padding:.25rem 1rem 1rem}details.inner>summary{cursor:pointer;user-select:none;list-style:none;font-size:.75rem;color:#999}details.inner>summary:hover{color:#333}details.inner>summary::-webkit-details-marker{display:none}details.edit-row>summary{cursor:pointer;user-select:none;list-style:none;display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid #eee}details.edit-row[open]>summary{border-bottom-color:transparent}details.edit-row>summary::-webkit-details-marker{display:none}.item-list{border:1.5px solid #e0e0de;border-radius:6px;overflow:hidden}.item-list>*+*{border-top:1px solid #f0f0ee}.item-list>*:nth-child(odd){background:#fff}.item-list>*:nth-child(2n){background:#f7f7f5}.item-list>.row{padding:.75rem 1rem}.item-list details.accordion{border:none;border-radius:0}.item-list>.add-row{padding:.75rem 1rem;background:#fafaf8;border-top:1.5px dashed #d0d0ce!important}.scheduler-layout{display:flex;flex-direction:column;gap:1rem;flex:1;min-height:0;user-select:none;-webkit-user-select:none}@media(min-width:768px),(orientation:landscape){.scheduler-layout{flex-direction:row}}.scheduler-sidebar{width:12rem;flex-shrink:0}.calendar-scroll{flex:1;min-height:0;overflow-x:auto;overflow-y:auto;border:1.5px solid #e0e0de;border-radius:6px;background:#fff}.cal-corner{border-bottom:1.5px solid #e0e0de;border-right:1.5px solid #e0e0de;background:#f7f7f5;grid-column:1;grid-row:1}.cal-day-header{border-bottom:1.5px solid #e0e0de;border-right:1.5px solid #e0e0de;background:#f7f7f5;padding:.5rem;text-align:center;font-size:.75rem;font-weight:600;color:#333;grid-row:1}.cal-hour-label{border-right:1px solid #eee;padding-right:.5rem;text-align:right;font-size:.75rem;color:#bbb;grid-column:1;transform:translateY(-.5em)}.cal-cell{border-right:1px solid #f0f0ee;border-top:1px solid #f7f7f5}.cal-cell.hour-boundary{border-top-color:#e0e0de}.cal-cell.last-col{border-right:none}.cal-cell.cell-active{background:#f0f0ee;box-shadow:inset 0 0 0 1px #bbb}.student-card{cursor:grab;border-radius:5px;padding:.5rem;background:#f4f4f2;border:1.5px solid #ccc;user-select:none;touch-action:none}.student-card.dragging{opacity:.5}.lesson-card{border-radius:5px;margin:0 2px;background:#e8e8e6;border:1.5px solid #bbb;padding:.25rem;overflow:hidden;z-index:10;cursor:grab;position:relative;touch-action:none}.lesson-card-unroomed,.lesson-card-roomed{text-align:left;width:100%;height:100%;position:relative;padding:.25rem;overflow:hidden;border-radius:4px;margin:0 2px;cursor:pointer;z-index:10;touch-action:none}.lesson-card-unroomed{background:#fef9ec;border-left:3px solid #c8960c;border-top:1px solid #e8d89a;border-right:1px solid #e8d89a;border-bottom:1px solid #e8d89a}.lesson-card-roomed{background:#e8e8e6;border:1.5px solid #bbb}.conflict-overlay{border-radius:5px;margin:0 2px;background:#f0f0ee;border:1px solid #ddd;padding:.25rem;overflow:hidden;opacity:.7;pointer-events:none;z-index:5}.lesson-delete{position:absolute;top:2px;right:2px;color:#bbb;font-size:1rem;line-height:1;background:none;border:none;cursor:pointer;padding:.25rem}@media(pointer:coarse){.lesson-delete{min-width:32px;min-height:32px}}.lesson-delete:hover{color:#b91c1c}.lesson-resize-handle{position:absolute;bottom:0;left:0;right:0;height:6px;cursor:ns-resize;touch-action:none}.lesson-resize-handle:hover{background:#0000001f;border-radius:0 0 4px 4px}@media(max-width:767px){.lesson-resize-handle{height:16px}}.room-badge{position:absolute;top:2px;right:2px;font-size:.75rem;background:#e8e8e6;color:#333;border-radius:3px;padding:0 .25rem;border:1px solid #bbb}.room-btn{width:100%;text-align:left;border-radius:5px;padding:.5rem;font-size:.875rem;border:1.5px solid #e0e0de;background:#fff;color:#111;cursor:pointer}.room-btn:hover{background:#f4f4f2;border-color:#aaa}.room-btn.selected{background:#111;border-color:#111;color:#fff;font-weight:500}.cal-grid{display:grid}@media(min-width:768px){.cal-grid{min-width:700px}}.mobile-day-nav{display:flex;align-items:center;justify-content:space-between;border-bottom:1.5px solid #e0e0de;background:#f7f7f5;padding:.25rem .5rem;grid-row:1}.mobile-day-nav span{font-size:.75rem;font-weight:600;color:#333}@media(max-width:767px)and (orientation:portrait){.scheduler-layout{padding-bottom:5rem}.scheduler-sidebar{position:fixed;bottom:0;left:0;right:0;z-index:20;width:auto;background:#fff;border-top:1.5px solid #e0e0de;padding:.5rem;display:flex;flex-direction:row;gap:.5rem;overflow-x:auto}.scheduler-sidebar h3{display:none}.scheduler-sidebar .stack-sm{display:flex;flex-direction:row;gap:.5rem}}.cal-label{font-size:.75rem;font-weight:600;color:#111;margin:0;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-sublabel{font-size:.75rem;color:#444;margin:0;line-height:1.1}.cal-room{font-size:.75rem;color:#666;margin:0;line-height:1.1}.cal-no-room{font-size:.75rem;color:#b45309;font-weight:500;margin:0;line-height:1.1}.lesson-card .cal-label{padding-right:1rem}.lesson-card-unroomed .cal-label{color:#5c3d00}.lesson-card-unroomed .cal-sublabel{color:#7a5200}.conflict-overlay .cal-label{color:#333}.conflict-overlay .cal-sublabel{color:#666}.nav-email{font-size:.875rem;color:#555;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:12rem}.accordion-label{flex:1;font-weight:500}.input-flex{flex:1}.input-count{width:4rem;text-align:center}@media(min-width:640px){.input-short{width:9rem}}.field{display:flex;flex-direction:column;gap:.25rem}.field>label{font-size:.75rem;font-weight:500;color:#555;margin:0;white-space:nowrap}.field>input,.field>select{width:100%;box-sizing:border-box}.scheduler-sidebar h3{margin-bottom:.5rem}.student-card p:first-child{font-weight:500}.signin-box h1{font-size:1.25rem;margin-bottom:1.5rem}.signin-box input[type=email]{width:100%}.success p:first-child{font-weight:500}.success p+p{margin-top:.25rem}dialog.modal{border:none;border-radius:8px;padding:0;width:min(640px,95vw);box-shadow:0 8px 32px #0000002e}dialog.modal::backdrop{background:#0006}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem .5rem;border-bottom:1px solid #e5e7eb}.modal-header h2{margin:0}.modal-body{padding:1.25rem;display:flex;flex-direction:column;gap:.75rem}.lint-status{font-size:.875rem;font-weight:500}.lint-status.ok{color:#16a34a}.lint-status.has-errors{color:#dc2626}.csv-preview{font-family:monospace;font-size:.8rem;border:1px solid #d1d5db;border-radius:4px;overflow:auto;max-height:320px;background:#fff}.csv-line{padding:1px 8px;white-space:pre}.csv-line-error{background:#fef2f2;border-left:3px solid #ef4444}.csv-error-msg{padding:2px 8px 4px 20px;font-size:.8rem;color:#dc2626;background:#fef2f2}dialog.modal textarea{width:100%;min-height:220px;max-height:320px;font-family:monospace;font-size:.8rem;box-sizing:border-box;resize:vertical}
