:root{--bg:#f7f8f5;--surface:#fff;--ink:#25332a;--muted:#718077;--line:#e3e9e3;--green:#3f6b57;--green-dark:#315745;--green-soft:#e8f2ec;--private:#fff0e3;--group:#e3edff;--warn:#fce9b7}*{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;color:var(--ink);margin:0;font-family:Arial,Apple SD Gothic Neo,Malgun Gothic,Noto Sans KR,sans-serif}html{scrollbar-gutter:stable}button,input,select,textarea{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:not-allowed;opacity:.55}h1,h2,h3,p{margin-top:0}.app-shell{width:100%;max-width:930px;min-height:100vh;margin:auto;padding:24px 18px 72px}.app-shell.monthly-view,.app-shell.students-view{flex-direction:column;height:100dvh;min-height:0;padding-bottom:16px;display:flex}.monthly-view .topbar,.students-view .topbar{flex:none}.month-page{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.topbar{grid-template-columns:minmax(0,1fr) 452px minmax(0,1fr);align-items:center;gap:12px;margin-bottom:12px;display:grid}.brand{text-align:left;white-space:nowrap;background:0 0;border:0;align-items:center;gap:9px;padding:0;display:flex}.brand-mark{object-fit:cover;border-radius:12px;flex:none;width:44px;height:44px;display:block}.brand-title{color:var(--green-dark);letter-spacing:-.045em;font-size:20px;font-weight:800}.brand:focus-visible{outline:2px solid var(--green);outline-offset:3px;border-radius:5px}.top-actions,.week-jump,.detail-action-row,.modal-inline-actions{align-items:center;gap:8px;display:flex}.top-actions{justify-self:end;gap:4px}.top-nav-group{grid-template-columns:146px 298px;justify-self:center;align-items:center;column-gap:8px;width:452px;min-width:0;display:grid}.top-menu{position:relative}.top-menu summary{border:1px solid var(--line);width:38px;height:36px;color:var(--green-dark);cursor:pointer;background:#fff;border-radius:9px;place-items:center;font-size:24px;line-height:1;list-style:none;display:grid}.top-menu summary::-webkit-details-marker{display:none}.top-menu-items{z-index:9;border:1px solid var(--line);background:#fff;border-radius:9px;width:122px;position:absolute;top:42px;right:0;overflow:hidden;box-shadow:0 8px 20px #17291b17}.top-menu-items button{text-align:left;background:#fff;border:0;width:100%;padding:11px 14px;font-size:13px;display:block}.top-menu-items button:hover{background:var(--green-soft)}.text-button,.icon-button,.week-jump button,.today-button,.detail-action-row button,.modal-inline-actions button,.section-heading button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 11px;font-size:13px;font-weight:650}.text-button{color:var(--green-dark)}.text-button.selected{background:var(--green-soft)}.icon-button{width:36px;height:36px;padding:0;font-size:21px;line-height:1}.navigation{background:#edf1ed;border:1px solid #e0e6e0;border-radius:11px;gap:3px;width:146px;margin:0;padding:3px;display:flex}.navigation button{color:#69776d;background:0 0;border:0;border-radius:8px;flex:1;min-width:0;min-height:31px;padding:6px 7px;font-size:12px;font-weight:700;line-height:19px}.navigation button.active,.navigation button.desktop-active{color:var(--green-dark);background:#fff;box-shadow:0 2px 6px #162e1c11}.navigation .mobile-nav{display:none}.page-toolbar{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:16px;display:flex}.page-toolbar h2{letter-spacing:-.025em;margin:0;font-size:22px}.page-toolbar p{color:var(--muted);margin:5px 0 0;font-size:13px}.toolbar-heading{flex-wrap:wrap;align-items:baseline;gap:3px 12px;display:flex}.toolbar-heading p{margin:0}.schedule-page{display:none}.week-jump{white-space:nowrap}.week-jump span{text-align:center;min-width:110px;font-size:14px;font-weight:700}.week-jump button{min-width:30px;padding:6px 9px;font-size:19px;line-height:1}.week-jump .today-button{font-size:12px;line-height:19px}.top-jump{grid-template-columns:31px minmax(0,141px) 31px 74px;justify-content:start;gap:7px;width:298px;display:grid}.top-jump span{min-width:0;font-size:13px}.top-jump button{width:31px;height:33px;padding:0}.top-jump .today-button{width:74px;margin-left:0;padding:0;font-size:12px}.month-input{width:100%;min-width:0;min-height:33px;color:var(--ink);text-align:center;background:0 0;border:0;border-radius:7px;padding:0 4px;font-size:13px;font-weight:700}.month-input:focus-visible{outline:2px solid var(--green)}.primary{border:1px solid var(--green);background:var(--green);color:#fff;border-radius:9px;padding:10px 15px;font-weight:750}.primary:hover{background:var(--green-dark)}.student-register{min-height:33px;padding:6px 11px;font-size:12px;line-height:19px}.primary.wide{width:100%;min-height:44px;margin-top:16px}.mobile-weeks,.mobile-days{display:none}.desktop-weeks{gap:20px;display:grid}.week-block{min-width:0}.week-heading{align-items:baseline;gap:12px;margin-bottom:9px;display:flex}.week-heading h3{margin:0;font-size:16px}.week-heading span{color:var(--muted);font-size:12px}.week-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;display:grid}.day-column{border:1px solid var(--line);background:#fff;border-radius:11px;min-height:158px;overflow:hidden}.day-column.today{border-color:#abcdb8;box-shadow:0 0 0 1px #cde6d5}.day-head{background:#fcfdfb;border-bottom:1px solid #eff1ee;justify-content:space-between;align-items:center;padding:9px;font-size:12px;display:flex}.day-column.today .day-head{background:var(--green-soft);color:var(--green-dark)}.day-head button{color:#829088;background:0 0;border:0;font-size:17px}.day-events{align-content:start;gap:4px;padding:5px;display:grid}.event-line{text-align:left;border:1px solid #0000;border-radius:7px;align-items:center;gap:5px;width:100%;min-height:36px;padding:6px;font-size:12px;line-height:1.25;display:flex}.event-line time{color:#5c6d62;flex:none;font-size:11px;font-weight:700}.event-line .event-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.event-line.group .event-name{white-space:normal;text-overflow:clip}.event-line.group .event-name>span{display:block}.event-line.private{background:var(--private)}.event-line.group{background:var(--group)}.event-line.personal{background:#eef2eb}.event-line.done{opacity:.72}.small-tag,.due-tag,.complete-tag{color:#687a6b;background:#f2f5f1;border-radius:5px;flex:none;padding:2px 5px;font-size:10px;font-weight:700}.due-tag{background:var(--warn);color:#8d5e10}.complete-tag{color:var(--green-dark);background:#e3f0e7}.past-items{background:#f0f2ed;border:1px solid #e0e6df;border-radius:12px;margin-bottom:15px;padding:12px 15px}.past-items>b{font-size:13px}.past-lines{flex-wrap:wrap;gap:8px;margin-top:9px;display:flex}.past-lines>div{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:flex}.past-lines .event-line{width:auto;max-width:220px}.timetable-scroll,.month-scroll{border:1px solid var(--line);background:#fff;border-radius:12px}.timetable-scroll{overflow:visible}.month-scroll{touch-action:pan-x pan-y pinch-zoom;flex:0 auto;width:100%;min-width:0;min-height:0;overflow:auto}.month-scroll.month-touch-zoom{touch-action:pan-x pan-y;overflow-anchor:none}.month-scroll:focus-visible{outline:2px solid var(--green);outline-offset:2px}.time-grid{--time-cell-height:32px;grid-template-columns:52px repeat(7,minmax(0,1fr));width:100%;min-width:0;display:grid}.time-label-head,.time-day-head{z-index:5;border-bottom:1px solid var(--line);background:#f5f7f4;place-items:center;height:38px;font-size:12px;font-weight:750;display:grid;position:sticky;top:0}.time-label-head{border-top-left-radius:11px}.time-day-head:nth-child(8){border-top-right-radius:11px}.time-day-head{white-space:nowrap;justify-content:center;align-items:center;display:flex}.time-day-head.today{background:var(--green-soft);color:var(--green-dark)}.time-day-head.sunday{color:#a64c56;background:#fceff0}.time-day-head.saturday{color:#37609f;background:#edf3ff}.time-day-head.holiday{color:#a64c56}.holiday-label{margin-left:2px;font-size:11px}.time-axis{height:calc(26 * var(--time-cell-height));border-right:1px solid var(--line);color:var(--muted);text-align:right;font-size:11px;position:relative}.axis-hour{height:calc(2 * var(--time-cell-height));border-bottom:1px solid var(--line)}.axis-hour>span{height:var(--time-cell-height);place-items:center;display:grid}.time-lane{height:calc(26 * var(--time-cell-height));border-right:1px solid var(--line);position:relative}.time-lane.sunday{background:#fffbfb}.time-lane.saturday{background:#fbfcff}.half-hour-cell{height:var(--time-cell-height);border-bottom:1px solid #f0f3ef;position:relative}.half-hour-cell:nth-child(2n){border-bottom-color:var(--line)}.cell-add{z-index:3;color:#849d8b;opacity:.23;background:0 0;border:0;border-radius:4px;place-items:center;width:15px;height:15px;padding:0;font-size:12px;line-height:1;display:grid;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.half-hour-cell:hover .cell-add,.cell-add:focus-visible{background:var(--green-soft);opacity:.85}.time-color-range,.time-entry{position:absolute;left:2px;right:2px}.time-color-range{z-index:0;pointer-events:none;border-radius:5px}.time-entry{z-index:1}.time-block{z-index:1;text-align:left;border:1px solid #0000;border-radius:5px;justify-content:flex-start;align-items:flex-start;gap:4px;width:100%;height:100%;padding:7px 18px 2px 5px;font-size:11px;display:flex;position:absolute;top:0;left:0;right:0;overflow:hidden}.time-remove{z-index:4;color:#7a8d80;opacity:.6;background:0 0;border:0;border-radius:4px;place-items:center;width:17px;height:19px;padding:0;font-size:15px;line-height:1;display:grid;position:absolute;top:50%;right:2px;transform:translateY(-50%)}.time-remove:hover,.time-remove:focus-visible{color:#a3483a;opacity:1;background:#fff0ed}.time-block:focus-visible,.time-remove:focus-visible{outline:2px solid var(--green);outline-offset:-2px}.group-member[draggable=true]{cursor:grab;border-radius:2px}.group-member[draggable=true]:hover{background:#fff6}.group-member[draggable=true]:active{cursor:grabbing}.time-block[draggable=true]{cursor:grab}.time-block[draggable=true]:active{cursor:grabbing}.time-block>span{flex:none;font-size:11px;line-height:15px;display:block}.time-block>b{-webkit-line-clamp:2;overflow-wrap:anywhere;white-space:normal;-webkit-box-orient:vertical;min-width:0;font-size:11px;font-weight:650;line-height:15px;display:-webkit-box;overflow:hidden}.time-block.short{align-items:center;gap:3px;padding:2px 18px 2px 5px}.time-block.short>b{text-overflow:ellipsis;white-space:nowrap;line-height:20px;display:block;overflow:hidden}.time-block.group>b{-webkit-line-clamp:3}.time-block.group>b>span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.inline-due{vertical-align:middle;color:#fff;white-space:nowrap;background:#b2633f;border:1px solid #b2633f;border-radius:4px;justify-content:center;align-items:center;min-width:14px;margin-left:3px;padding:0 3px;font-size:8px;font-weight:800;line-height:11px;display:inline-flex;position:relative;top:-1px}.time-block.private{background:var(--private)}.time-block.group{background:var(--group)}.time-block.personal{background:#eef2eb}.time-block.done{border-color:#87a893}.member-check{color:var(--green-dark);vertical-align:middle;margin-left:2px;font-size:8px;line-height:1}.month-toolbar{flex:none;justify-content:space-between;align-items:center;gap:10px;margin-bottom:9px;display:flex}.month-register{white-space:nowrap;flex:none}.month-legend{min-width:0;color:var(--muted);margin:1px 0 0 22px;font-size:12px;line-height:1.6}.month-table{border-collapse:separate;border-spacing:0;zoom:var(--table-zoom,1);width:100%;min-width:max-content;font-size:11px}.month-table th,.month-table td{text-align:center;border-bottom:1px solid #eef1ed;border-right:1px solid #eef1ed;min-width:25px;height:31px}.month-table .month-student-row>th,.month-table .month-student-row>td{border-bottom-color:#d6ddd7}.month-table .month-student-row>.student-sticky{border-right-color:#d6ddd7}.month-table tbody th,.month-table tbody td{height:35px}.month-table thead th{z-index:1;background:#f0f3f0;position:sticky;top:0}.month-table .student-sticky{z-index:2;text-align:left;background:#fff;width:116px;min-width:116px;max-width:116px;padding:0 4px;position:sticky;left:0}.month-table .student-sticky button{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.month-table thead .student-sticky{z-index:3;text-align:center;background:#f0f3f0}.month-table td button,.month-table th button{width:100%;height:100%;text-align:inherit;font-size:inherit;background:0 0;border:0}.month-table .month-private .student-sticky{background:var(--private);color:#9c5927;border-left:2px solid #e8b07b}.month-table .month-group .student-sticky{background:var(--group);color:#315e95;border-left:2px solid #8eafe2}.month-table .month-student-button{justify-content:space-between;align-items:center;gap:4px;padding:0 3px;display:flex}.month-student-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.month-student-slot{text-overflow:ellipsis;white-space:nowrap;opacity:.85;flex:none;max-width:59px;font-size:9px;overflow:hidden}.month-table .month-section-row>th,.month-table .month-section-row>td{height:26px;font-size:11px;font-weight:750}.month-section-row .student-sticky span{margin-right:6px}.month-section-row small{font-size:9px;font-weight:400}.month-table .month-private .month-section-row>th,.month-table .month-private .month-section-row>td{background:#f7e0cd}.month-table .month-group .month-section-row>th,.month-table .month-group .month-section-row>td{background:#d5e3f9}.month-table .month-group-start>th,.month-table .month-group-start>td{border-top:2px solid #b4c8e3}.month-record{justify-content:center;align-items:center;width:100%;height:100%;padding:1px 3px;display:flex}.month-table td:hover{background:#f5f9f5}.month-table .sunday{color:#b26060;background:#fcf2f2}.month-table .unpaid-cell{background:#ffeaa8}.month-table tbody tr:hover>th,.month-table tbody tr:hover>td{background:#edf5ee}.month-table tbody tr:hover>.sunday{background:#f9eced}.month-table tbody tr:hover>.unpaid-cell{background:#ffe29a}.month-heading p{font-size:12px}.month-legend{color:#718077;font-size:11px;display:inline-block}.students-page{flex-direction:column;flex:1;min-height:0;display:flex}.students-page .page-toolbar{flex:none;grid-template-columns:minmax(0,1fr) auto;align-items:center;min-height:40px;margin-bottom:8px;display:grid}.students-page .page-toolbar h2{align-items:center;height:36px;line-height:1;display:flex}.students-page .student-register{justify-content:center;align-items:center;height:36px;line-height:1;display:inline-flex;transform:translateY(-1px)}.student-list{overscroll-behavior:contain;border:1px solid var(--line);background:#fff;border-radius:11px;flex:0 auto;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:min-content;align-content:start;width:100%;min-height:0;display:grid;overflow:auto}.student-row{border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:left;background:#fff;grid-template-columns:26px minmax(0,1fr) auto 10px;align-items:center;gap:5px;min-width:0;min-height:40px;padding:8px;display:grid}.student-row:nth-child(4n){border-right:0}.student-row:hover{background:#f3f8f3}.student-row-name{grid-area:1/2;align-items:center;gap:4px;min-width:0;display:flex}.student-row-name>b{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;line-height:16px;overflow:hidden}.student-row.inactive{opacity:.6}.student-row-name .due-tag{flex:none;padding:1px 3px;font-size:8px}.student-row-meta{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;grid-area:1/3;font-size:10px;line-height:14px;overflow:hidden}.student-type{text-align:center;border-radius:5px;grid-area:1/1;padding:3px 2px;font-size:9px;font-weight:700}.student-type.private{background:var(--private)}.student-type.group{background:var(--group)}.student-row .chevron{grid-area:1/4}.chevron{color:#a8b4ac;font-size:17px}.empty-state{color:var(--muted);background:#fff;border:1px dashed #c9d7cd;border-radius:10px;padding:30px;font-size:14px}.center-state,.login-page{place-items:center;min-height:100vh;padding:24px;display:grid}.state-card,.login-card{border:1px solid var(--line);background:#fff;border-radius:16px;width:min(100%,390px);padding:28px;box-shadow:0 16px 45px #2749320b}.state-card p,.login-card p{color:var(--muted);font-size:13px}.login-card{text-align:center}.login-mark{margin:0 auto 16px}.login-card h1{margin:0 0 5px;font-size:23px}.login-card label{text-align:left;margin-top:15px;font-size:13px;font-weight:700;display:block}.login-card input{border:1px solid #cdd8cf;border-radius:8px;width:100%;height:43px;margin-top:6px;padding:0 10px}.auth-link{color:var(--green-dark);background:0 0;border:0;margin-top:16px;padding:7px 4px;font-size:13px}.password-reset-card p{white-space:pre-line;line-height:1.6}.password-reset-card input{font-size:16px}.password-reset-card .form-error{color:#a94343}.password-hint{color:var(--muted);text-align:left;margin-top:10px;font-size:12px;display:block}.form-error{color:#a94343;text-align:left;margin-top:12px;font-size:12px;display:block}.modal-backdrop{z-index:20;background:#1c292290;justify-content:center;align-items:flex-end;padding:15px;display:flex;position:fixed;inset:0}.panel{background:#fff;border-radius:17px;width:min(100%,540px);max-height:min(90vh,900px);padding:26px 24px 32px;position:relative;overflow:auto;box-shadow:0 22px 70px #162c2440}.panel-close{color:#8b9991;background:0 0;border:0;width:30px;height:30px;font-size:24px;line-height:1;position:absolute;top:12px;right:14px}.panel-back{min-height:30px;color:var(--green-dark);background:0 0;border:0;align-items:center;margin:-8px 0 10px -5px;padding:4px 6px;font-size:13px;font-weight:700;display:inline-flex}.form-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:17px;display:grid}.form-actions .primary,.form-actions .back-action{width:100%;min-width:0;min-height:44px}.form-actions .primary:only-child{grid-column:1/-1}.form-actions .back-action{border:1px solid var(--line);color:var(--green-dark);background:#fff;border-radius:9px;font-size:13px;font-weight:700}.panel h2{letter-spacing:-.02em;margin:0 25px 5px 0;font-size:22px}.panel-eyebrow{color:var(--green);margin-bottom:8px;font-size:12px;font-weight:750}.panel-subtitle{color:var(--muted);margin-bottom:15px;font-size:13px;line-height:1.5}.settings-actions{gap:9px;margin-top:19px;display:grid}.settings-actions button{border:1px solid var(--line);background:#fff;border-radius:9px;min-height:42px;font-size:13px;font-weight:650}.settings-actions .quiet-danger{color:#a75151;background:#fff8f8;border:0;margin:0}.participant{border:1px solid var(--line);border-radius:9px;align-items:center;gap:10px;margin:5px 0;padding:11px;display:flex}.participant input{width:18px;height:18px;accent-color:var(--green)}.participant span:first-of-type{flex-direction:column;gap:3px;display:flex}.participant b{font-size:14px}.participant small{color:var(--muted);font-size:11px}.participant .due-tag{margin-left:auto}.group-add{border:1px solid var(--line);background:#fbfcfb;border-radius:9px;margin:12px 0 1px;padding:10px 12px}.group-add summary{color:var(--green-dark)}.group-add p{color:var(--muted);margin:10px 0 7px;font-size:12px}.group-add input{background:#fff;border:1px solid #cbd7ce;border-radius:7px;width:100%;min-height:36px;padding:7px 9px;font-size:13px}.group-add-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;max-height:140px;margin-top:8px;display:grid;overflow:auto}.group-add-options button{border:1px solid var(--line);text-align:left;background:#fff;border-radius:7px;min-height:34px;font-size:12px}.modal-inline-actions{flex-wrap:wrap;margin-top:11px}.modal-inline-actions button{white-space:nowrap;flex:1}.modal-inline-actions .primary{background:var(--green);color:#fff}.personal-editor .modal-inline-actions{margin-top:4px}.personal-editor .modal-inline-actions .quiet-danger{margin:0}.panel-more,.form-extra{border-top:1px solid var(--line);margin-top:18px;padding-top:12px}summary{color:#64766a;cursor:pointer;font-size:13px;font-weight:700}.field{color:#4e5e54;flex-direction:column;gap:6px;min-width:0;font-size:12px;font-weight:700;display:flex}.field input,.field select,.field textarea{width:100%;min-width:0;max-width:100%;min-height:41px;color:var(--ink);background:#fff;border:1px solid #cbd7ce;border-radius:8px;outline:none;padding:9px 10px;font-size:14px;font-weight:400}.field input,.field select,.field .read-only-value{box-sizing:border-box;height:42px;min-height:42px;line-height:22px}.field input[type=date],.field input[type=month]{appearance:none;text-align:left;inline-size:100%;min-inline-size:0;max-inline-size:100%;display:block;overflow:hidden}.field input::-webkit-date-and-time-value{text-align:left;min-width:0}.field input::-webkit-datetime-edit{padding:0}.read-only-value{border:1px solid var(--line);background:#f6f8f5;border-radius:8px;align-items:center;min-height:41px;padding:9px 10px;font-size:14px;font-weight:500;display:flex}.field textarea{resize:vertical;line-height:1.45}.field input:focus,.field select:focus,.field textarea:focus{border-color:#7ca28b;box-shadow:0 0 0 2px #dcece1}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px 10px;margin:15px 0;display:grid}.field.full{grid-column:span 2}.history-input-grid textarea{min-height:132px}.history-input-grid small{color:var(--muted);font-weight:400;line-height:1.45}.history-preview{background:var(--green-soft);color:var(--green-dark);border-radius:8px;padding:10px 12px;font-size:12px;font-weight:700}.field-hint{color:var(--muted);font-size:12px;line-height:1.5}.quiet-danger{color:#a75151;background:0 0;border:0;width:100%;margin-top:12px;padding:8px;font-size:12px}.lesson-delete{color:#9d4944;background:#fff6f4;border:1px solid #e6c5bf;border-radius:9px;min-height:38px;margin-top:12px;font-weight:700}.lesson-delete:hover{background:#ffece8}.lesson-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:16px;display:grid}.lesson-actions>button{min-width:0;min-height:44px;padding:10px 8px;font-size:14px}.lesson-actions .lesson-delete{margin:0}.lesson-move{border:1px solid var(--line);color:var(--green-dark);background:#fff;border-radius:9px;font-weight:700}.color-options{border:0;margin:0;padding:0}.color-options legend{color:#4e5e54;margin-bottom:7px;font-size:12px;font-weight:700}.color-palette{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.color-palette button{border:1px solid var(--line);background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:7px;min-width:0;min-height:37px;padding:6px;font-size:12px;display:flex}.color-palette button[aria-pressed=true]{border-color:var(--green);box-shadow:inset 0 0 0 1px var(--green)}.color-swatch{border:1px solid #0002;border-radius:5px;flex:none;width:20px;height:20px;display:inline-block}.custom-color{margin-top:12px}.field input[type=color]{cursor:pointer;padding:4px}.color-save-status{color:var(--green-dark);margin:9px 0 0;font-size:12px}.saved-color-ranges{border-top:1px solid var(--line);margin-top:20px;padding-top:14px}.saved-color-ranges h3{margin:0 0 7px;font-size:14px}.color-range-list{overscroll-behavior:contain;gap:6px;max-height:200px;display:grid;overflow:auto}.color-range-list button{border:1px solid var(--line);text-align:left;background:#fff;border-radius:8px;align-items:center;gap:9px;min-height:39px;padding:8px 10px;font-size:13px;display:flex}.color-range-list .chevron{margin-left:auto}.student-detail-top{justify-content:space-between;align-items:center;gap:10px;margin:-4px 0 10px;display:flex}.student-detail-top .panel-eyebrow{margin:0}.panel-close.inline-close{flex:none;position:static}.student-detail-heading{flex-wrap:nowrap;align-items:center;gap:10px;margin:0 0 13px;display:flex}.student-detail-heading h2{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0 6px 0 0;font-size:20px;overflow:hidden}.student-detail-heading span{white-space:nowrap;color:var(--muted);flex:none;font-size:12px}.student-detail-heading span b{color:var(--ink);margin-left:3px;font-size:12px}.student-detail-edit{border:1px solid var(--line);min-height:32px;color:var(--green-dark);background:#f8fbf8;border-radius:8px;flex:none;margin:0 0 0 auto;padding:5px 10px;font-size:12px;font-weight:700}.student-memo{color:#57675a;white-space:pre-wrap;background:#fafbf7;border-radius:8px;padding:10px;font-size:13px}.student-contact{color:var(--muted);margin:-4px 0 12px;font-size:12px}.detail-action-row{flex-wrap:wrap;margin:14px 0}.detail-action-row button{white-space:nowrap;flex:1}.detail-action-row .primary{background:var(--green);color:#fff}.section-heading{justify-content:space-between;align-items:center;margin:20px 0 8px;display:flex}.section-heading h3{margin:0;font-size:15px}.section-heading button{padding:5px 8px;font-size:11px}.regular-slot-summary{font-size:13px;font-weight:600}.regular-slot-row{border-bottom:1px solid #eef0ed;justify-content:space-between;align-items:center;gap:8px;min-height:39px;display:flex}.regular-slot-actions{gap:6px;display:flex}.regular-slot-actions button{border:1px solid var(--line);min-height:30px;color:var(--green-dark);background:#f8fbf8;border-radius:7px;padding:4px 9px;font-size:11px;font-weight:700}.regular-slot-actions .slot-remove{color:#a75151;background:#fff}.regular-row,.history-row{text-align:left;background:#fff;border:0;border-bottom:1px solid #eef0ed;justify-content:space-between;align-items:center;width:100%;padding:11px 4px;font-size:13px;display:flex}.regular-row span,.history-row span,.muted{color:var(--muted);font-size:12px}.history-row b{font-size:12px;font-weight:600}.history-filter{color:var(--muted);align-items:center;gap:5px;font-size:11px;display:flex}.history-filter input{border:1px solid var(--line);max-width:140px;color:var(--ink);font:inherit;background:#fff;border-radius:6px;padding:4px}.participant-select{border:1px solid var(--line);border-radius:9px;margin:15px 0;padding:12px}.participant-select summary{color:var(--green-dark);font-size:14px}.participant-select p{color:var(--muted);margin:9px 0;font-size:12px}.participant-select .student-search{align-items:stretch;margin:12px 0 8px;font-size:11px;display:flex}.participant-select .student-search input{min-height:38px}.participant-options{overscroll-behavior:contain;scrollbar-gutter:stable;grid-template-columns:repeat(2,minmax(0,1fr));max-height:195px;display:grid;overflow:auto}.participant-options label{align-items:center;gap:7px;min-height:35px;margin:0;font-size:13px;display:inline-flex}.participant-options input{accent-color:var(--green)}.add-tabs{border:1px solid var(--line);background:#f0f3f0;border-radius:10px;gap:4px;margin:3px 32px 19px 0;padding:4px;display:flex}.add-tabs button{color:#718077;background:0 0;border:0;border-radius:7px;flex:1;min-height:36px;font-size:14px;font-weight:700}.add-tabs button.active{color:var(--green-dark);background:#fff;box-shadow:0 1px 5px #17301a16}.toast{z-index:40;color:#fff;background:#a34848;border-radius:9px;width:min(90%,480px);padding:12px 15px;font-size:13px;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 8px 30px #0002}@media (min-width:700px){.modal-backdrop{align-items:center}}@media (min-width:701px){.app-shell{padding-top:8px;padding-bottom:0}.topbar{margin-bottom:8px}.navigation{transform:translate(-14px)}.time-grid{--time-cell-height:22.5px}.time-label-head,.time-day-head{height:32px}.time-block{align-items:center;padding:0 17px 0 4px;font-size:10.5px}.time-block>span,.time-block>b{font-size:10.5px;line-height:13px}.time-block.group{align-items:center}.time-block.short{padding:0 17px 0 4px}.time-block.short>b{line-height:13px}.time-block.group .inline-due{padding:0 2px;font-size:7px;line-height:9px}}@media (min-width:701px) and (max-width:1000px){.topbar{grid-template-columns:1fr auto}.top-nav-group{grid-area:2/1/auto/-1;justify-self:center;width:min(100%,452px)}}@media (max-width:700px){.lesson-actions{gap:6px}.lesson-actions>button{white-space:nowrap;padding:10px 4px;font-size:12px}.app-shell{padding:8px 6px 20px}.app-shell.timetable-view{height:100dvh;min-height:0;padding-bottom:max(8px,env(safe-area-inset-bottom));flex-direction:column;display:flex}.app-shell.monthly-view{padding-bottom:max(8px,env(safe-area-inset-bottom))}.month-toolbar{gap:8px;margin-bottom:8px}.month-legend{margin-left:2px;font-size:10px}.month-scroll{border-radius:8px}.month-table{font-size:12px}.month-table th,.month-table td{min-width:32px;height:34px}.month-table tbody th,.month-table tbody td{height:38px}.topbar{flex:none;grid-template-columns:1fr auto;gap:6px;margin-bottom:8px}.brand-mark{border-radius:8px;width:30px;height:30px}.brand-title{font-size:16px}.top-actions{gap:5px}.text-button{padding:7px 9px}.icon-button{width:31px;height:31px}.top-nav-group{grid-area:2/1/auto/-1;grid-template-columns:1fr;justify-self:stretch;gap:6px;width:100%;display:grid}.navigation{gap:2px;width:100%}.navigation button{flex:1;min-width:0;padding:5px 3px;font-size:12px}.top-jump{grid-template-columns:31px minmax(0,140px) 31px 65px;justify-content:center;gap:6px;width:100%}.top-jump span{min-width:0;font-size:12px}.top-jump button{height:30px}.top-jump .today-button{width:65px}.desktop-only{display:none}.page-toolbar{flex-wrap:wrap;align-items:flex-start;gap:9px}.page-toolbar h2{font-size:20px}.page-toolbar p{font-size:12px}.schedule-page .week-jump{justify-content:flex-end;width:100%}.schedule-page .week-jump span{min-width:110px;font-size:13px}.desktop-weeks{display:none}.mobile-weeks{background:#edf2ed;border:1px solid #dbe4dd;border-radius:11px;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:9px;padding:4px;display:grid}.mobile-weeks button{color:#718076;background:0 0;border:0;border-radius:8px;min-height:39px;font-size:14px;font-weight:700}.mobile-weeks button.active{color:var(--green-dark);background:#fff;box-shadow:0 2px 5px #1e39210d}.mobile-days{gap:5px;display:grid}.mobile-day{border:1px solid var(--line);background:#fff;border-radius:11px;grid-template-columns:78px minmax(0,1fr);display:grid;overflow:hidden}.mobile-date{text-align:center;background:#fbfcfa;border-right:1px solid #edf1ec;flex-direction:column;align-items:center;padding:15px 5px;display:flex}.mobile-date.today{background:var(--green-soft);color:var(--green-dark)}.mobile-date b{white-space:nowrap;font-size:12px}.mobile-date small{margin-top:6px;font-size:10px}.mobile-day-content{min-width:0;padding:5px 7px}.mobile-day-content .event-line{border-bottom:1px solid #f0f2ef;border-radius:0;min-height:41px;padding:8px 5px;background:0 0!important}.mobile-day-content .event-line.private{border-left:3px solid #e1a66d}.mobile-day-content .event-line.group{border-left:3px solid #85a7e5}.mobile-day-content .event-line.personal{border-left:3px solid #91ae97}.mobile-day-content .event-line time{font-size:12px}.mobile-day-content .event-line .event-name{-webkit-line-clamp:2;white-space:normal;overflow-wrap:anywhere;-webkit-box-orient:vertical;font-size:15px;display:-webkit-box}.mobile-day-content .event-line .small-tag,.mobile-day-content .event-line .complete-tag{display:none}.mobile-day-content .event-line.group .event-name{-webkit-line-clamp:3}.day-empty{color:#a2aca4;margin:10px 5px 3px;font-size:12px}.day-add{color:#87a292;background:0 0;border:0;padding:3px 5px;font-size:11px}.past-items{padding:10px}.past-lines{gap:4px;display:grid}.past-lines>div{display:flex}.past-lines .event-line{max-width:none}.timetable-frame,.timetable-page{flex-direction:column;flex:1;min-height:0;display:flex}.timetable-scroll{border-radius:8px;flex:1;min-height:0;overflow:auto}.time-grid{--time-cell-height:clamp(14px,calc((100dvh - 165px) / 26),24px);grid-template-columns:26px repeat(7,minmax(0,1fr));min-width:0}.time-label-head,.time-day-head{height:28px;font-size:10px}.time-day-head{flex-direction:column;gap:2px;line-height:11px}.time-day-head small{font-size:8px;line-height:9px}.time-axis{text-align:center;font-size:8px}.time-color-range,.time-entry{left:1px;right:1px}.time-color-range{border-radius:3px}.time-block{border-radius:3px;justify-content:center;align-items:center;gap:0;padding:0 2px}.time-block>span{display:none}.time-block>b{width:100%;font-size:clamp(7px,2vw,9px);line-height:clamp(8px,calc((2 * var(--time-cell-height) - 4px) / 3),11px);text-align:center;display:block}.time-block>b>span,.time-block.group>b>span{justify-content:center;align-items:center;display:flex}.time-student-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.time-block.short{padding:0 2px}.time-block.short>b{line-height:10px}.time-remove{display:none}.cell-add{opacity:.13;width:100%;height:100%;font-size:10px;top:0;right:0;transform:none}.member-check{flex:none;margin-left:1px;font-size:6px}.time-block .inline-due{border-radius:2px;flex:none;min-width:8px;margin-left:1px;padding:0 1px;font-size:5.5px;line-height:7px;top:0}.panel{border-radius:15px 15px 0 0;max-height:92vh;padding:24px 17px 26px}.modal-backdrop{padding:0}.student-list{grid-template-columns:1fr}.student-row{border-right:0;min-height:54px}.student-row-name>b{font-size:13px}.form-grid{gap:12px 8px}.student-row-meta{font-size:11px}.student-detail-heading h2{font-size:18px}}
