:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#172033;background:#f6f8fb;font-synthesis:none}*{box-sizing:border-box}html,body,#root{min-width:0;min-height:100%;margin:0}body{min-height:100dvh;overflow-x:hidden}button{font:inherit}.app-shell{min-height:100dvh;max-width:680px;margin:0 auto;background:#f6f8fb}.app-content{min-width:0;padding:max(20px,env(safe-area-inset-top)) 16px calc(98px + env(safe-area-inset-bottom))}.page-header{min-width:0;margin:0 0 22px}h1,h2,h3,p{min-width:0;overflow-wrap:anywhere}h1{margin:0;font-size:28px;line-height:1.3;letter-spacing:.02em}h2{margin:0;font-size:18px}h3{margin:0;font-size:17px;line-height:1.4}.date-label{margin:8px 0 0;color:#60708a;font-size:15px}.date-selector{display:grid;grid-template-columns:52px minmax(0,1fr) 52px;align-items:center;min-width:0;gap:8px;margin-top:12px}.date-selector>button:not(.date-picker){min-height:50px;border:1px solid #d4ddeb;border-radius:10px;color:#245bb7;background:#fff;font-size:29px;line-height:1;cursor:pointer}.date-selector>.date-picker{display:grid;place-items:center;width:100%;max-width:100%;min-width:0;min-height:50px;padding:6px 8px;overflow:hidden;border:1px solid #d4ddeb;border-radius:10px;box-sizing:border-box;color:#24334b;background:#fff;font-size:16px;font-weight:650;line-height:1.2;text-align:center;white-space:nowrap;cursor:pointer}.date-selector>.date-picker span{min-width:0;font-size:inherit;font-weight:inherit;line-height:inherit;white-space:nowrap}.today-button{min-height:36px;margin-top:8px;padding:6px 12px;border:0;border-radius:9px;color:#2863c7;background:#eaf1ff;font-size:13px;font-weight:750;cursor:pointer}.today-button:disabled{color:#8491a5;background:#edf0f4;cursor:default}.calendar-loading{margin:0 0 14px;color:#64738b;font-size:14px}.day-lock-banner{margin:0 0 14px;padding:13px;border:1px solid #e6c97c;border-radius:13px;color:#654b10;background:#fff6d9}.day-lock-banner strong,.day-lock-banner span{display:block}.day-lock-banner span{margin-top:3px;font-size:14px;font-weight:750}.day-lock-banner p{margin:7px 0 0;font-size:13px;line-height:1.45}.day-lock-banner button,.day-open-controls button{min-height:40px;margin-top:10px;padding:7px 11px;border:1px solid currentColor;border-radius:9px;color:#6d510c;background:#fffaf0;font-size:13px;font-weight:750;cursor:pointer}.day-open-controls{margin:-8px 0 12px;text-align:right}.day-open-controls button{margin-top:0;color:#65738b;background:#fff}.open-day-timetable{width:100%;min-height:46px;margin-top:14px;padding:9px 14px;border:1px solid #b8c9e8;border-radius:11px;color:#1f5ec5;background:#f4f8ff;font-size:15px;font-weight:750;cursor:pointer}.class-list{display:grid;gap:12px;min-width:0}.class-card{display:flex;align-items:flex-start;gap:12px;width:100%;min-width:0;padding:16px;border:1px solid #dce3ee;border-radius:14px;color:inherit;background:#fff;box-shadow:0 1px 2px #1428500a;text-align:left}.class-card--action{cursor:pointer}.class-card--action:active{background:#f2f6fd}.class-card--empty{background:#fafbfd;color:#65738b}.class-card--locked{border-color:#d9dfe8;color:#68758a;background:#edf0f4;box-shadow:none}.class-card--locked .period,.class-card--locked .class-card__detail{color:#778398}.lock-label{display:inline-block;margin:8px 0 0;color:#5e6879;font-size:13px;font-weight:750}.period{flex:0 0 auto;min-width:38px;padding-top:2px;color:#315fbd;font-size:14px;font-weight:700;white-space:nowrap}.class-card__body{flex:1 1 auto;min-width:0}.class-card__detail,.class-card__summary{margin:5px 0 0;color:#61708a;font-size:14px;line-height:1.5}.class-card__summary{color:#34435c;white-space:pre-line}.status{display:inline-block;margin:9px 0 0;padding:3px 8px;border-radius:99px;font-size:13px;font-weight:700;line-height:1.35}.status--完了{color:#12623d;background:#dff5e9}.status--未確認{color:#805b00;background:#fff0c9}.status--確認中{color:#165c91;background:#dceeff}.chevron{flex:0 0 auto;align-self:center;color:#8592a8;font-size:30px;line-height:1}.history-section{min-width:0}.history-month-nav{display:grid;grid-template-columns:48px minmax(0,1fr) 48px;align-items:center;gap:8px;margin-bottom:18px;text-align:center}.history-month-nav h2{min-width:0;font-size:19px;white-space:nowrap}.history-month-nav button{min-width:0;min-height:44px;border:1px solid #d4ddeb;border-radius:10px;color:#245bb7;background:#fff;font-size:29px;line-height:1;cursor:pointer}.history-message{margin:0;padding:18px 16px;border:1px solid #dce3ee;border-radius:13px;color:#65738b;background:#fff;line-height:1.5;text-align:center}.history-message--error{border-color:#ebc7c7;color:#a33232;background:#fff8f8}.history-date-group+.history-date-group{margin-top:22px}.history-date{margin:0 0 10px;color:#52617a;font-size:15px;font-weight:700}.weekday-picker{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:-4px 0 20px}.weekday-picker button{min-width:0;min-height:44px;border:1px solid #d4ddeb;border-radius:10px;color:#43536b;background:#fff;font-weight:700;cursor:pointer}.weekday-picker button.is-selected{border-color:#2863c7;color:#fff;background:#2863c7}.timetable-screen{display:grid;gap:14px;min-width:0}.timetable-form,.timetable-preview,.timetable-normalized{display:grid;gap:12px;min-width:0;padding:16px;border:1px solid #dce3ee;border-radius:14px;background:#fff}.timetable-form h2,.timetable-preview h2,.timetable-normalized h2,.timetable-normalized p{margin:0}.timetable-form label{display:grid;gap:6px;min-width:0;color:#52617a;font-size:14px;font-weight:700}.timetable-form input,.timetable-form select{display:block;width:100%;max-width:100%;min-width:0;min-height:46px;box-sizing:border-box;font-size:16px}.timetable-form small{min-width:0;color:#65738b;font-size:13px;font-weight:500;overflow-wrap:anywhere}.timetable-weekly{display:grid;gap:12px;min-width:0}.timetable-day{display:grid;gap:8px;min-width:0;padding:12px;border:1px solid #e0e6ef;border-radius:12px;background:#f8fbff}.timetable-day h3{font-size:17px}.timetable-slot{display:grid;grid-template-columns:42px minmax(0,1fr);gap:10px;min-width:0;padding:10px 0;border-top:1px solid #e1e7f0}.timetable-slot:first-of-type{border-top:0}.timetable-slot>strong{color:#1f5ec5;font-size:14px}.timetable-slot>div{display:grid;gap:3px;min-width:0}.timetable-slot b,.timetable-slot span,.timetable-slot small,.timetable-slot em{min-width:0;overflow-wrap:anywhere}.timetable-slot b{color:#233047;font-size:15px}.timetable-slot small{color:#65738b}.timetable-slot em{color:#b43a4b;font-size:13px;font-style:normal}.timetable-preview>button{min-height:46px;border:0;border-radius:10px;color:#fff;background:#1f5ec5;font-size:16px;font-weight:750}.timetable-preview>button:disabled{color:#7c8799;background:#e2e7ee}.timetable-schedule-list{display:grid;gap:10px}.timetable-schedule-card{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;width:100%;min-width:0;min-height:76px;padding:13px;border:1px solid #d6e0ee;border-radius:13px;color:#233047;background:#fff;text-align:left;cursor:pointer}.timetable-schedule-card>span{display:grid;min-width:0;gap:3px}.timetable-schedule-card strong,.timetable-schedule-card small{min-width:0;overflow-wrap:anywhere}.timetable-schedule-card strong{font-size:16px}.timetable-schedule-card small{color:#65738b;font-size:13px;line-height:1.35}.timetable-schedule-card em{padding:3px 6px;border-radius:6px;color:#17693a;background:#e6f8ec;font-size:12px;font-style:normal;font-weight:750}.timetable-schedule-card>b{color:#4b6387;font-size:24px;font-weight:400}.timetable-schedule-summary,.timetable-empty{display:grid;gap:8px;padding:16px;border:1px solid #dce3ee;border-radius:14px;background:#fff}.timetable-schedule-summary h2,.timetable-schedule-summary p,.timetable-empty p{margin:0}.timetable-schedule-summary p{color:#52617a;font-size:14px}.timetable-empty button{min-height:46px;border:0;border-radius:10px;color:#fff;background:#1f5ec5;font-size:16px;font-weight:750}.timetable-success{margin:0;padding:11px 13px;border:1px solid #8cc8a3;border-radius:10px;color:#17693a;background:#f3fff7;font-size:14px;font-weight:750}.timetable-raw{min-width:0;padding:12px;border:1px solid #dce3ee;border-radius:12px;background:#fff}.timetable-raw summary{cursor:pointer;color:#1f5ec5;font-weight:750}.timetable-raw .raw-preview{margin-top:12px}.timetable-normalized article{min-width:0;padding:10px 0;border-top:1px solid #e3e8f0;overflow-wrap:anywhere}.timetable-normalized article:first-of-type{border-top:0;padding-top:0}.day-timetable-screen,.day-timetable-slots{display:grid;gap:12px;min-width:0}.day-timetable-slot{display:grid;grid-template-columns:42px minmax(0,1fr);gap:10px;min-width:0;padding:14px;border:1px solid #dce3ee;border-radius:14px;background:#fff}.day-timetable-slot>strong{color:#1f5ec5;font-size:14px}.day-timetable-slot>div{display:grid;gap:5px;min-width:0}.day-timetable-slot b,.day-timetable-slot span,.day-timetable-slot small,.day-timetable-slot p{min-width:0;overflow-wrap:anywhere}.day-timetable-slot b{color:#233047;font-size:16px}.day-timetable-slot small,.day-timetable-slot p{margin:0;color:#65738b;font-size:13px;line-height:1.4}.day-timetable-slot--empty{color:#65738b;background:#fafbfd}.day-timetable-slot--cancelled{border-color:#e6c97c;background:#fffaf0}.day-timetable-slot--cancelled b{color:#8a5600}.day-timetable-slot--override{border-color:#b8c9e8;background:#f6f9ff}.day-timetable-slot--session{border-color:#d8e1ed;background:#f1f4f8}.day-timetable-source{color:#536f9b;font-size:12px;font-weight:750}.day-timetable-slot--cancelled .day-timetable-source{color:#8a5600}.day-timetable-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:5px}.day-timetable-slot button{min-height:42px;padding:8px 10px;border:1px solid #b8c9e8;border-radius:9px;color:#1f5ec5;background:#fff;font-size:14px;font-weight:750;cursor:pointer}.day-timetable-slot--cancelled button{border-color:#e1c276;color:#805b00;background:#fffdf7}.day-timetable-slot button:disabled{border-color:#dce2ea;color:#7a8799;background:#e7ebf0;cursor:default}.date-override-sheet{max-width:680px}.date-override-note{padding:9px 10px;border-radius:9px;color:#52617a;background:#f3f6fb;font-size:13px;line-height:1.4}.timetable-editor-field{display:grid;gap:6px;min-width:0;margin-top:12px;color:#52617a;font-size:14px;font-weight:700}.timetable-editor-field input,.timetable-editor-field select{display:block;width:100%;max-width:100%;min-width:0;min-height:46px;box-sizing:border-box;padding:10px 12px;border:1px solid #cbd5e3;border-radius:10px;color:#233047;background:#fff;font-size:16px}@media(max-width:389px){.day-timetable-actions{grid-template-columns:1fr}}@media(min-width:760px){.timetable-weekly{grid-template-columns:repeat(5,minmax(0,1fr));align-items:start}.timetable-form{grid-template-columns:repeat(2,minmax(0,1fr))}.timetable-form h2,.timetable-form .form-error,.timetable-form .import-note{grid-column:1 / -1}}.settings-list{overflow:hidden;border:1px solid #dce3ee;border-radius:14px;background:#fff}.settings-item{display:flex;align-items:center;justify-content:space-between;width:100%;min-width:0;min-height:58px;gap:16px;padding:12px 16px;border:0;border-bottom:1px solid #e6ebf2;color:#233047;background:#fff;text-align:left;cursor:pointer}.settings-item:last-child{border-bottom:0}.settings-item span:first-child{min-width:0;overflow-wrap:anywhere}.settings-item span:last-child{flex:0 0 auto;color:#8592a8;font-size:25px}.data-management-entry{display:grid;gap:10px;margin-top:22px}.data-management-entry h2{font-size:17px}.app-info{display:grid;gap:12px;margin-top:30px;padding:14px;border-top:1px solid #dce3ee;color:#52617a}.app-info h2{color:#24334b;font-size:16px}.app-info dl{display:grid;gap:7px;margin:0;font-size:13px}.app-info dl div{display:flex;justify-content:space-between;gap:12px}.app-info dt,.app-info dd{min-width:0;margin:0;overflow-wrap:anywhere}.app-info dd{color:#24334b;font-weight:700;text-align:right}.app-update-check{min-height:44px;border:1px solid #b8c9e8;border-radius:10px;color:#1f5ec5;background:#f4f8ff;font-size:14px;font-weight:750;cursor:pointer}.app-update-check:disabled{border-color:#d7dee8;color:#7e8a9c;background:#edf0f4;cursor:not-allowed}.app-update-check-message{margin:-4px 0 0;color:#526f9f;font-size:13px;font-weight:700}.data-management-screen{display:grid;gap:16px;min-width:0}.data-management-panel{display:grid;gap:12px;min-width:0;padding:16px;border:1px solid #dce3ee;border-radius:14px;background:#fff}.data-management-panel h2,.data-management-panel h3,.data-management-panel p{margin:0}.data-management-panel>p{color:#52617a;font-size:14px;line-height:1.5}.backup-privacy-note,.backup-queue-warning{margin:0;padding:12px;border-radius:11px;font-size:14px;line-height:1.5}.backup-privacy-note{color:#654b10;background:#fff6d9}.backup-queue-warning{color:#8b3636;background:#fff0f0}.backup-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:0}.backup-summary div{min-width:0;padding:9px 10px;border-radius:9px;background:#f4f7fb}.backup-summary dt{color:#65738b;font-size:12px;font-weight:700;overflow-wrap:anywhere}.backup-summary dd{margin:3px 0 0;color:#233047;font-size:14px;font-weight:750}.backup-create-button,.restore-select-button,.restore-confirm-button{min-height:48px;padding:9px 14px;border:0;border-radius:10px;color:#fff;background:#1f5ec5;font-size:16px;font-weight:750;cursor:pointer}.restore-select-button{color:#1f5ec5;border:1px solid #b8c9e8;background:#f4f8ff}.backup-create-button:disabled,.restore-select-button:disabled,.restore-confirm-button:disabled{color:#78869a;border-color:transparent;background:#dce3ee;cursor:default}.restore-preview{display:grid;gap:10px;min-width:0;padding:13px;border:1px solid #b8c9e8;border-radius:11px;background:#f7faff}.restore-preview p{color:#52617a;font-size:13px;line-height:1.45;overflow-wrap:anywhere}.restore-clear-button{min-height:44px;border:1px solid #b9c3d2;border-radius:10px;color:#35425a;background:#fff;font-weight:750;cursor:pointer}.backup-message{margin:0;padding:12px;border-radius:10px;color:#17693a;background:#f3fff7;font-size:14px;line-height:1.45}.restore-confirmation-sheet p{line-height:1.5}.restore-confirmation-counts{display:grid;gap:6px;margin:12px 0;padding:11px;border-radius:10px;color:#233047;background:#f4f7fb;font-size:14px;font-weight:700}.restore-warning{padding:10px;border-radius:10px;color:#8b3636;background:#fff0f0;font-weight:700}.data-reset-panel{border-color:#efc6c6;background:snow}.data-reset-panel h2{color:#8b3636}.data-reset-button,.reset-confirm-button{min-height:48px;padding:9px 14px;border:1px solid #a3212b;border-radius:10px;color:#fff;background:#a3212b;font-size:16px;font-weight:750;cursor:pointer}.data-reset-button:disabled,.reset-confirm-button:disabled{border-color:#d9dfe8;color:#78869a;background:#e7ebf0;cursor:default}.reset-confirmation-sheet{max-width:680px}.reset-confirmation-sheet>p{line-height:1.5}.reset-confirmation-sheet .backup-summary{margin:14px 0}.reset-warning{padding:10px;border-radius:10px;color:#8b3636;background:#fff0f0;font-weight:700}.reset-confirmation-input{display:grid;gap:6px;margin-top:14px;color:#52617a;font-size:14px;font-weight:700}.reset-confirmation-input input{display:block;width:100%;max-width:100%;min-width:0;min-height:46px;box-sizing:border-box;padding:10px 12px;border:1px solid #cbd5e3;border-radius:10px;color:#233047;background:#fff;font-size:16px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}@media(max-width:389px){.backup-summary{grid-template-columns:1fr}}.bottom-nav{position:fixed;right:0;bottom:0;left:0;z-index:10;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));min-width:0;max-width:680px;margin:0 auto;padding:8px 8px max(8px,env(safe-area-inset-bottom));border-top:1px solid #dce3ee;background:#fffffff5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.bottom-nav button{display:grid;place-items:center;min-width:0;min-height:52px;gap:2px;padding:4px 2px;border:0;border-radius:10px;color:#66758d;background:transparent;font-size:12px;font-weight:700;cursor:pointer}.bottom-nav button.is-active{color:#1f5ec5;background:#eaf1ff}.nav-icon{font-size:20px;line-height:1}.app-content--students{padding:max(12px,env(safe-area-inset-top)) 12px max(18px,env(safe-area-inset-bottom))}.loading-message,.load-error{margin:40px 4px;color:#52617a;text-align:center}.load-error p{margin:0 0 16px}.load-error button,.retry-button{min-height:44px;padding:8px 14px;border:1px solid #2863c7;border-radius:10px;color:#2863c7;background:#fff;font-weight:750;cursor:pointer}.student-screen,.closure-screen{min-width:0}.closure-heading{margin:0 0 12px;font-size:17px}.closure-list{display:grid;gap:10px;min-width:0}.closure-empty{margin:0;padding:16px;border:1px solid #dce3ee;border-radius:12px;color:#65738b;background:#fff;font-size:14px}.closure-item{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;padding:13px;border:1px solid #dce3ee;border-radius:12px;background:#fff}.closure-item>div{min-width:0}.closure-item h3{overflow-wrap:anywhere}.closure-item p{margin:5px 0 0;color:#65738b;font-size:13px;line-height:1.4;overflow-wrap:anywhere}.closure-item button{flex:0 0 auto;min-height:40px;padding:7px 11px;border:1px solid #2863c7;border-radius:9px;color:#2863c7;background:#fff;font-weight:750;cursor:pointer}.add-closure,.closure-save{width:100%;min-height:48px;margin-top:14px;padding:9px 13px;border:0;border-radius:11px;color:#fff;background:#2863c7;font-weight:750;cursor:pointer}.closure-form{display:grid;width:100%;min-width:0;gap:14px}.closure-form label{display:grid;min-width:0;gap:6px;color:#43536b;font-size:14px;font-weight:750}.closure-field-control{display:block;width:100%;max-width:100%;min-width:0;min-height:46px;padding:8px 10px;border:1px solid #bdc8d8;border-radius:10px;box-sizing:border-box;color:#172033;background:#fff;font:inherit;font-size:16px}.date-input-wrapper{position:relative;display:grid;align-items:center;overflow:hidden}.date-input-display{min-width:0;overflow:hidden;color:#172033;font-size:16px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.date-input-wrapper input[type=date]{position:absolute;inset:0;display:block;width:100%;max-width:100%;min-width:0;height:100%;margin:0;padding:0;border:0;box-sizing:border-box;opacity:0;cursor:pointer;font-size:16px}.closure-save{margin-top:2px}.closure-delete{width:100%;min-height:44px;padding:9px 13px;border:1px solid #bf4545;border-radius:11px;color:#a33232;background:#fff;font-weight:750;cursor:pointer}.form-error{margin:-4px 0 0;color:#a33232;font-size:14px;font-weight:750}.student-header{min-width:0;margin-bottom:10px}.back-button{display:inline-flex;align-items:center;min-height:44px;margin:0 0 6px -8px;padding:6px 10px;border:0;border-radius:10px;color:#245bb7;background:transparent;font-weight:700;cursor:pointer}.back-button span:first-child{margin-right:4px;font-size:29px;font-weight:400;line-height:.7}.student-class-title{margin:0;color:#172033;font-size:20px;font-weight:800;line-height:1.35}.student-class-detail,.student-date{margin:3px 0 0;color:#61708a;font-size:14px}.attendance-summary{margin-top:12px;padding:10px 12px;border:1px solid #dce3ee;border-radius:12px;background:#fff}.attendance-summary strong{display:block;font-size:15px}.attendance-summary div{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:7px;color:#5b6b83;font-size:13px}.attendance-summary span{white-space:nowrap}.attendance-summary b{color:#1c2940}.attendance-save-state{display:inline-flex;align-items:center;gap:8px;margin:8px 2px 0;color:#65738b;font-size:12px;font-weight:700;line-height:1.4}.attendance-save-state--error{color:#a33232}.attendance-save-state button{min-height:32px;padding:5px 9px;border:1px solid currentColor;border-radius:8px;color:inherit;background:#fff;font:inherit;cursor:pointer}.bulk-present{width:100%;min-height:44px;margin-top:10px;padding:8px 12px;border:1px solid #2863c7;border-radius:10px;color:#fff;background:#2863c7;font-weight:750;cursor:pointer}.bulk-present:disabled{border-color:#d3dbe7;color:#78869a;background:#e5eaf1;cursor:default}.student-list{display:grid;min-width:0;margin:0;padding:0;overflow:hidden;border:1px solid #dce3ee;border-radius:13px;background:#fff;list-style:none}.student-row{display:grid;grid-template-columns:32px 58px minmax(0,1fr);align-items:start;column-gap:8px;min-width:0;min-height:64px;padding:10px;border-bottom:1px solid #e7ecf3;touch-action:pan-y}.student-row:last-child{border-bottom:0}.attendance-number{padding-top:5px;color:#315fbd;font-size:14px;font-weight:800}.student-status{align-self:center;min-width:0;min-height:44px;padding:5px 3px;border:0;border-radius:8px;color:#805b00;background:#fff0c9;font-size:12px;font-weight:800;line-height:16px;text-align:center;white-space:nowrap;cursor:pointer}.student-status small{display:block;font-size:10px;font-weight:700;line-height:12px}.student-status--present{color:#12623d;background:#dff5e9}.student-status--late{color:#8a4c00;background:#ffebc4}.student-status--earlyLeave{color:#6a3d9a;background:#f0e4ff}.student-status--absent{color:#a33232;background:#ffe2e2}.student-information{display:grid;grid-template-columns:minmax(0,1fr) auto;min-width:0;min-height:44px;padding:1px 0;border:0;color:inherit;background:transparent;text-align:left;touch-action:pan-y;cursor:pointer}.student-information:disabled{cursor:default}.history-student-status{cursor:default}.history-student-information{display:grid;grid-template-columns:minmax(0,1fr) auto;min-width:0;min-height:44px;padding:1px 0;color:inherit;text-align:left}.history-detail-confirmed{margin:4px 0 0;color:#5b6b83;font-size:13px;font-weight:700}.history-delete-section{display:grid;gap:10px;margin:20px 0 max(12px,env(safe-area-inset-bottom));padding:16px;border:1px solid #f2c8ca;border-radius:14px;background:#fff8f8}.history-delete-section h2,.history-delete-section p{margin:0}.history-delete-section h2{color:#8e2028;font-size:16px}.history-delete-section p{color:#6d4a4d;font-size:13px;line-height:1.5}.history-delete-section .history-delete-blocked{color:#8e2028;font-weight:700}.history-delete-button,.history-delete-confirm{min-height:48px;padding:10px 14px;border:1px solid #bd343d;border-radius:10px;color:#fff;background:#bd343d;font-size:15px;font-weight:750;cursor:pointer}.history-delete-button:disabled,.history-delete-confirm:disabled{opacity:.55;cursor:not-allowed}.history-delete-sheet{position:relative;width:100%;max-width:680px;margin:0 auto;padding:8px 16px max(16px,env(safe-area-inset-bottom));border-radius:20px 20px 0 0;background:#fff;box-shadow:0 -8px 32px #0f1f3a2e}.history-delete-sheet h2{margin:8px 0 12px;color:#202a3e;font-size:20px;line-height:1.35}.history-delete-target{margin:0;padding:12px;border-radius:10px;color:#35425a;background:#f2f5f9;font-size:15px;font-weight:700;line-height:1.5;overflow-wrap:anywhere}.history-delete-warning,.history-delete-error{margin:12px 0 0;font-size:14px;line-height:1.5}.history-delete-warning{color:#8e2028;font-weight:700}.history-delete-error{color:#a3212b;font-weight:700}.history-delete-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin-top:18px}.history-delete-actions>button:first-child{min-height:48px;border:1px solid #b9c3d2;border-radius:10px;color:#35425a;background:#fff;font-size:15px;font-weight:750;cursor:pointer}.management-screen{min-width:0}.management-class-list,.management-roster-list{display:grid;gap:10px;min-width:0;margin:0;padding:0;list-style:none}.management-class-item{display:flex;align-items:center;justify-content:space-between;width:100%;min-width:0;min-height:68px;gap:12px;padding:12px 14px;border:1px solid #dce3ee;border-radius:13px;color:#233047;background:#fff;text-align:left;cursor:pointer}.management-class-item>span{display:grid;min-width:0;gap:3px}.management-class-item strong{font-size:18px}.management-class-item small,.management-subtitle,.management-roster-count{color:#65738b;font-size:13px}.management-class-item>span:last-child{display:block;flex:0 0 auto;color:#1f5ec5;font-size:14px;font-weight:750}.class-management-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;min-width:0}.class-edit-button{min-width:52px;border:1px solid #b8c9e8;border-radius:10px;color:#1f5ec5;background:#f4f8ff;font-size:14px;font-weight:750;cursor:pointer}.import-note,.import-meta{color:#65738b;font-size:14px;line-height:1.5}.import-file,.import-encoding{display:grid;gap:6px;margin:14px 0;color:#52617a;font-size:14px;font-weight:700}.import-file input,.import-encoding select{width:100%;min-height:46px;font-size:16px}.raw-preview{max-width:100%;overflow-x:auto;border:1px solid #dce3ee;border-radius:10px;background:#fff}.raw-preview table{border-collapse:collapse;min-width:max-content}.raw-preview th,.raw-preview td{padding:8px 10px;border:1px solid #e5eaf2;text-align:left;vertical-align:top;white-space:pre-wrap;overflow-wrap:anywhere}.raw-preview th{color:#65738b;background:#f4f7fb}.import-diff{display:grid;gap:12px;min-width:0;margin-top:20px;padding:16px;border:1px solid #cdd9ed;border-radius:14px;background:#f8fbff}.import-diff h2,.import-diff p{margin:0}.import-ready{color:#17693a;font-weight:750}.import-warning{color:#875300;font-size:14px;line-height:1.5}.import-diff__metadata,.import-diff__summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;min-width:0;color:#52617a;font-size:14px;line-height:1.45}.import-diff__filters{display:flex;flex-wrap:wrap;gap:8px}.import-diff__filters button{min-height:40px;padding:7px 12px;border:1px solid #b8c9e8;border-radius:999px;color:#1f5ec5;background:#fff;font-size:14px;font-weight:700}.import-diff__filters button.is-selected{color:#fff;border-color:#1f5ec5;background:#1f5ec5}.import-diff__rows{display:grid;gap:10px;padding:0;margin:0;list-style:none}.import-diff__row{min-width:0;padding:12px;border:1px solid #dce3ee;border-radius:10px;background:#fff;overflow-wrap:anywhere}.import-diff__row--error{border-color:#db7180;background:#fff7f8}.import-result{display:grid;gap:8px;padding:14px;border:1px solid #8cc8a3;border-radius:12px;color:#17693a;background:#f3fff7}.import-result h3,.import-result p{margin:0}.import-result button{justify-self:start;min-height:44px;margin-top:6px;padding:8px 14px;border:0;border-radius:9px;color:#fff;background:#17693a;font-weight:750}.roster-import-sheet{position:relative;width:100%;max-width:680px;max-height:min(78dvh,680px);margin:0 auto;padding:8px 16px max(16px,env(safe-area-inset-bottom));overflow-y:auto;border-radius:20px 20px 0 0;background:#fff;box-shadow:0 -8px 32px #0f1f3a2e}.roster-import-sheet h2{margin:0 0 8px;font-size:21px}.roster-import-sheet>p{margin:7px 0;overflow-wrap:anywhere}.roster-import-sheet__summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:14px 0;padding:12px;border-radius:10px;background:#f4f7fb}.roster-import-sheet__summary p{margin:0;min-width:0;overflow-wrap:anywhere;font-size:14px}@media(max-width:400px){.roster-import-sheet__summary{grid-template-columns:1fr}}@media(max-width:400px){.import-diff__metadata,.import-diff__summary{grid-template-columns:1fr}}.management-class-item b,.management-roster-list b{margin-left:5px;color:#7b8aa1;font-size:22px;line-height:1}.management-subtitle,.management-roster-count{margin:0 0 12px}.management-roster-list li{min-width:0}.management-roster-list button{display:grid;grid-template-columns:34px minmax(0,1fr) auto auto;align-items:center;width:100%;min-width:0;gap:8px;padding:10px 8px;border:1px solid #e1e7f0;border-radius:12px;color:#233047;background:#fff;text-align:left;cursor:pointer}.management-roster-list .student-name{min-width:0}.management-roster-list .student-number{max-width:76px;overflow-wrap:anywhere}.student-detail-list{display:grid;min-width:0;margin:0;border:1px solid #e0e6ef;border-radius:14px;overflow:hidden;background:#fff}.student-detail-list>div{display:grid;grid-template-columns:96px minmax(0,1fr);gap:12px;min-width:0;padding:14px;border-bottom:1px solid #e8edf4}.student-detail-list>div:last-child{border-bottom:0}.student-detail-list dt{color:#65738b;font-size:13px;font-weight:700}.student-detail-list dd{min-width:0;margin:0;color:#202b3f;font-size:15px;line-height:1.5;overflow-wrap:anywhere;word-break:break-word}.student-detail-list input{width:100%;min-width:0;min-height:46px;padding:10px 12px;border:1px solid #aebbd0;border-radius:10px;box-sizing:border-box;color:#202b3f;font-size:16px}.student-detail-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;margin-top:10px}.student-detail-actions button,.edit-display-name{min-height:44px;border:1px solid #2863c7;border-radius:10px;color:#2863c7;background:#fff;font-size:14px;font-weight:750;cursor:pointer}.student-detail-actions button:last-child{color:#fff;background:#2863c7}.edit-display-name{display:block;width:100%;margin-top:10px}.open-student-master,.add-student{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:52px;margin:0 0 14px;padding:10px 14px;border:1px solid #b8c9e8;border-radius:12px;color:#1f5ec5;background:#f4f8ff;font-size:15px;font-weight:750;cursor:pointer}.open-student-master span{font-size:22px}.student-master-list{display:grid;gap:8px;min-width:0;margin:0;padding:0;list-style:none}.student-master-list button{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;width:100%;min-width:0;gap:8px;padding:10px 12px;border:1px solid #e1e7f0;border-radius:12px;color:#233047;background:#fff;text-align:left;cursor:pointer}.student-master-list .student-number{max-width:82px}.student-master-list em{padding:3px 6px;border-radius:6px;color:#7c4b08;background:#fff2d9;font-size:11px;font-style:normal;font-weight:750}.student-master-list b{color:#7b8aa1;font-size:22px;line-height:1}.student-master-filters{display:grid;min-width:0;gap:12px;margin:0 0 14px;padding:14px;border:1px solid #e0e6ef;border-radius:14px;background:#fff}.student-master-filters label{display:grid;min-width:0;gap:6px;color:#52617a;font-size:14px;font-weight:700}.student-master-filters input,.student-master-filters select{display:block;width:100%;min-width:0;max-width:100%;min-height:46px;box-sizing:border-box;padding:10px 12px;border:1px solid #cbd5e3;border-radius:10px;color:#233047;background:#fff;font:inherit;font-size:16px}.student-master-filter-fields{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-width:0;gap:10px}.student-master-filter-summary{display:flex;align-items:center;justify-content:space-between;min-width:0;gap:10px}.student-master-filter-summary p{margin:0;color:#52617a;font-size:14px;font-weight:700}.student-master-filter-summary button,.student-master-empty button{min-height:40px;padding:8px 10px;border:1px solid #b8c9e8;border-radius:9px;color:#1f5ec5;background:#f4f8ff;font-size:14px;font-weight:700;cursor:pointer}.student-master-empty{display:grid;justify-items:start;gap:10px;min-width:0;padding:18px 14px;border:1px solid #e0e6ef;border-radius:14px;color:#52617a;background:#fff}.student-master-empty p{margin:0}@media(max-width:410px){.student-master-filter-fields{grid-template-columns:minmax(0,1fr)}}.student-editor-form{display:grid;gap:14px;min-width:0;padding:14px;border:1px solid #e0e6ef;border-radius:14px;background:#fff}.student-editor-form label{display:grid;min-width:0;gap:6px;color:#52617a;font-size:14px;font-weight:700}.student-editor-form input[type=text]{width:100%;min-width:0;min-height:46px;padding:10px 12px;border:1px solid #aebbd0;border-radius:10px;box-sizing:border-box;color:#202b3f;font-size:16px;font-weight:400}.student-editor-form input[type=number],.student-editor-form select{width:100%;min-width:0;min-height:46px;padding:10px 12px;border:1px solid #aebbd0;border-radius:10px;box-sizing:border-box;color:#202b3f;background:#fff;font-size:16px;font-weight:400}.student-editor-form .student-active-toggle{display:flex;align-items:center;min-height:44px;gap:9px;color:#233047}.student-active-toggle input{width:20px;height:20px;margin:0;accent-color:#2863c7}.student-editor-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.student-editor-actions:has(>:only-child){grid-template-columns:minmax(0,1fr)}.student-editor-actions button{min-height:48px;border:1px solid #2863c7;border-radius:10px;color:#2863c7;background:#fff;font-size:15px;font-weight:750;cursor:pointer}.student-editor-actions button:last-child{color:#fff;background:#2863c7}.membership-section{display:grid;min-width:0;gap:12px;margin-top:18px}.membership-section h2{margin:0;color:#233047;font-size:17px}.membership-section>p{margin:0;color:#65738b;font-size:14px}.membership-section ul{display:grid;min-width:0;gap:8px;margin:0;padding:0;list-style:none}.membership-section li{display:grid;min-width:0;gap:9px;padding:12px;border:1px solid #e0e6ef;border-radius:12px;background:#fff}.membership-section li>div:first-child{display:grid;min-width:0;gap:3px}.membership-section li strong{overflow-wrap:anywhere}.membership-section li span{color:#65738b;font-size:13px}.membership-section li>div:last-child{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.membership-section li button,.add-membership{min-height:44px;border:1px solid #b8c9e8;border-radius:10px;color:#1f5ec5;background:#f4f8ff;font-size:14px;font-weight:750;cursor:pointer}.membership-section li button:last-child{border-color:#dfbcc0;color:#a3212b;background:#fff7f7}.add-membership{width:100%;padding:10px 14px}.membership-note{padding:10px 12px;border-radius:10px;color:#805b00!important;background:#fff0c9;font-weight:700}.membership-student-target,.membership-fixed-class{margin:0 0 14px;color:#52617a;font-size:14px;font-weight:700;overflow-wrap:anywhere}.membership-fixed-class{margin:0;padding:12px;border-radius:10px;color:#233047;background:#f3f6fb}.membership-student-search{display:grid;min-width:0;gap:6px;margin-bottom:12px;color:#52617a;font-size:14px;font-weight:700}.membership-student-search input{display:block;width:100%;min-width:0;min-height:46px;box-sizing:border-box;padding:10px 12px;border:1px solid #cbd5e3;border-radius:10px;color:#233047;background:#fff;font-size:16px}.student-name{display:grid;min-width:0;padding:1px 0;overflow-wrap:anywhere;word-break:break-word}.student-name strong{min-width:0;color:#172033;font-size:15px;line-height:1.35;overflow-wrap:anywhere;word-break:break-word}.student-name small{min-width:0;margin-top:2px;color:#65738b;font-size:12px;line-height:1.35;overflow-wrap:anywhere}.student-name .official-name{color:#8995a8;font-size:11px}.student-number{align-self:end;min-width:0;padding:0 0 2px 2px;color:#748198;font-size:11px;line-height:1.35;overflow-wrap:anywhere;text-align:right}.sheet-layer{position:fixed;inset:0;z-index:30;display:grid;align-items:end}.sheet-overlay{position:absolute;inset:0;width:100%;border:0;background:#121d317a;cursor:default}.attendance-sheet{position:relative;width:100%;max-width:680px;max-height:min(78dvh,680px);margin:0 auto;padding:8px 16px max(16px,env(safe-area-inset-bottom));overflow-y:auto;border-radius:20px 20px 0 0;background:#fff;box-shadow:0 -8px 32px #0f1f3a2e}.sheet-handle{width:40px;height:4px;margin:0 auto 12px;border-radius:4px;background:#c9d2e0}.sheet-kicker,.sheet-reading{margin:0;color:#65738b;font-size:13px}.attendance-sheet h2{margin:3px 0 0;font-size:20px;overflow-wrap:anywhere}.sheet-options{display:grid;gap:8px;margin-top:16px}.sheet-options button,.sheet-cancel{min-height:50px;border:1px solid #d7e0ed;border-radius:12px;color:#1e304a;background:#fff;font-weight:750;text-align:left;cursor:pointer}.sheet-options button{padding:12px 14px}.sheet-options button:active{background:#eef4ff}.timed-rule{margin:12px 0 0;padding:8px 10px;border-radius:9px;color:#805b00;background:#fff0c9;font-size:13px;font-weight:750}.minute-presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px}.minute-presets button,.sheet-back{min-height:48px;border:1px solid #d7e0ed;border-radius:11px;color:#1e304a;background:#fff;font-weight:750;cursor:pointer}.minute-presets button:active,.sheet-back:active{background:#eef4ff}.custom-minutes{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:12px}.custom-minutes label{grid-column:1 / -1;color:#53647c;font-size:13px;font-weight:700}.custom-minutes input{min-width:0;min-height:48px;padding:8px 10px;border:1px solid #b9c6d8;border-radius:10px;color:#172033;font:inherit}.custom-minutes button{min-width:74px;min-height:48px;padding:8px 12px;border:0;border-radius:10px;color:#fff;background:#2863c7;font-weight:750;cursor:pointer}.custom-minutes button:disabled{color:#78869a;background:#dce3ee;cursor:default}.sheet-back{width:100%;margin-top:12px}.sheet-cancel{width:100%;margin-top:10px;color:#53647c;text-align:center}.undo-toast{position:fixed;right:12px;bottom:max(14px,env(safe-area-inset-bottom));left:12px;z-index:25;display:flex;align-items:center;justify-content:space-between;gap:12px;max-width:656px;margin:0 auto;padding:10px 10px 10px 14px;border-radius:13px;color:#fff;background:#182439f5;box-shadow:0 8px 24px #0f1f3a3d;font-size:13px;line-height:1.35}.undo-toast span{min-width:0;overflow-wrap:anywhere}.undo-toast button{flex:0 0 auto;min-height:40px;padding:8px 11px;border:0;border-radius:9px;color:#163f86;background:#e7f0ff;font-weight:800;cursor:pointer}.pwa-update-prompt,.pwa-offline-ready{position:fixed;right:12px;bottom:calc(76px + env(safe-area-inset-bottom));left:12px;z-index:24;max-width:656px;margin:0 auto;border:1px solid #b8c9e8;border-radius:14px;color:#1d2a40;background:#fffffffa;box-shadow:0 8px 24px #0f1f3a33}.pwa-update-prompt{display:grid;gap:12px;padding:13px}.pwa-update-prompt__content{min-width:0}.pwa-update-prompt__content strong{display:block;font-size:15px;line-height:1.4}.pwa-update-prompt__content p{margin:4px 0 0;color:#60708a;font-size:13px;line-height:1.45}.pwa-update-prompt__actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px}.pwa-update-prompt button,.pwa-offline-ready button{min-height:44px;border:1px solid #b8c9e8;border-radius:10px;color:#245bb7;background:#fff;font-weight:750;cursor:pointer}.pwa-update-prompt .pwa-update-prompt__apply{border-color:#1f5ec5;color:#fff;background:#1f5ec5}.pwa-update-prompt button:disabled{border-color:#d7dee8;color:#7e8a9c;background:#edf0f4;cursor:not-allowed}.pwa-offline-ready{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 10px 10px 14px;color:#17693a;border-color:#9dceb0;background:#f3fff7;font-size:13px;font-weight:750;line-height:1.4}.pwa-offline-ready span{min-width:0;overflow-wrap:anywhere}.pwa-offline-ready button{flex:0 0 auto;min-height:40px;padding:7px 12px;border-color:#8fcaa5;color:#17693a;background:#fff}.calendar-modal{position:fixed;inset:0;z-index:40;min-width:0;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));overflow-y:auto;color:#172033;background:#f6f8fb}.calendar-modal__header{display:flex;align-items:center;justify-content:space-between;gap:12px}.calendar-modal__header h2{font-size:20px}.calendar-modal__header button{min-height:44px;padding:8px 10px;border:0;border-radius:9px;color:#2863c7;background:transparent;font-weight:750;cursor:pointer}.calendar-month-nav{display:grid;grid-template-columns:48px minmax(0,1fr) 48px;align-items:center;margin:16px 0 12px;text-align:center}.calendar-month-nav strong{font-size:19px}.calendar-month-nav button{min-height:44px;border:1px solid #d4ddeb;border-radius:10px;color:#245bb7;background:#fff;font-size:29px;line-height:1;cursor:pointer}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-width:0}.calendar-weekdays{margin-bottom:5px;color:#58677e;font-size:12px;font-weight:800;text-align:center}.calendar-weekdays .is-sunday{color:#b4383a}.calendar-weekdays .is-saturday{color:#2863c7}.calendar-grid{gap:3px}.calendar-blank{min-width:0;min-height:50px}.calendar-day{position:relative;display:grid;place-items:center;min-width:0;min-height:50px;padding:4px 1px;border:1px solid #e0e6ee;border-radius:9px;color:#27364d;background:#fff;font-size:15px;font-weight:750;cursor:pointer}.calendar-day small{display:block;min-height:12px;color:#6b7482;font-size:10px;line-height:12px}.calendar-day--red{color:#b4383a}.calendar-day--blue{color:#2863c7}.calendar-day--closure{background:#edf0f4}.calendar-day--selected{outline:3px solid #2863c7;outline-offset:-3px}.calendar-day--today{box-shadow:inset 0 0 0 1px #315fbd}.calendar-day--today:after{position:absolute;top:4px;right:4px;width:5px;height:5px;border-radius:50%;content:"";background:#315fbd}.calendar-indicator--open{color:#16724a!important}.calendar-jump{display:grid;gap:6px;margin-top:18px;color:#43536b;font-size:14px;font-weight:750}.calendar-legend{display:flex;flex-wrap:wrap;gap:5px 10px;margin-top:14px;color:#65738b;font-size:11px}@media(max-width:389px){.student-row{grid-template-columns:29px 55px minmax(0,1fr);column-gap:6px;padding:9px 8px}.student-information,.history-student-information{grid-template-columns:minmax(0,1fr)}.student-number{justify-self:end}}button:focus-visible{outline:3px solid #f29c38;outline-offset:2px}@media(min-width:681px){.app-shell{border-right:1px solid #dce3ee;border-left:1px solid #dce3ee}}
