@import"https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;600;700;800&display=swap";:root{--surface:#faf7f2;--white:#fff;--ink:#1a1a1a;--muted:#667085;--line:#e0dcd4;--accent:#72d350;--yellow:#fff000;--blue:#8ed0ed;--avatar:#d9e9f2;--soft:#f3f0ea}*{box-sizing:border-box}body{margin:0;min-width:320px;background:var(--surface);color:var(--ink);font-family:Noto Sans JP,system-ui,sans-serif;font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer;color:inherit}.app-shell{display:flex;min-height:100vh}.sidebar{width:220px;background:#181818;border-right:1px solid #303030;color:#f5f5f5;display:flex;flex-direction:column;flex-shrink:0;position:fixed;inset:0 auto 0 0;z-index:5}.brand{display:flex;align-items:center;gap:10px;height:72px;padding:0 24px;color:#f7f7f7;font-size:22px;font-weight:800;letter-spacing:-.04em}.brand-mark{display:grid;place-items:center;width:24px;height:24px;background:#73dc55;font-size:22px;line-height:1;border-radius:7px;transform:rotate(45deg)}.brand-mark:first-letter{transform:rotate(-45deg)}.brand-mark{color:transparent}.brand-mark:after{content:"+";color:#181818;transform:rotate(-45deg)}.school-switch{margin:8px 16px 24px;display:flex;align-items:center;gap:9px;padding:10px;border:1px solid #303030;background:#202020;border-radius:10px}.school-switch strong,.school-switch small{display:block}.school-switch strong{color:#f5f5f5;font-size:12px}.school-switch small{margin-top:2px;color:#a9a9a9;font-size:10px}.school-switch .icon{margin-left:auto;color:#a9a9a9}.avatar{display:grid;place-items:center;background:#73dc55;color:#181818;border-radius:50%}.avatar.small{width:28px;height:28px;font-size:12px}.nav-scroll{flex:1;overflow:auto}.nav-group{padding:0 12px 20px}.nav-label{padding:0 12px 8px;color:#777;font-size:10px;font-weight:800;letter-spacing:.13em}.nav-item{border:0;background:transparent;width:100%;display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:8px;text-align:left;font-size:13px;color:#c8c8c8}.nav-item:hover,.nav-item.active{background:#292929;color:#fff}.nav-item.active{font-weight:700;box-shadow:inset 2px 0 #73dc55}.nav-item .icon{width:18px;text-align:center;font-size:17px;color:#b9b9b9}.nav-item:hover .icon,.nav-item.active .icon{color:#73dc55}.nav-badge{margin-left:auto;background:#73dc55;color:#181818;font-size:10px;min-width:18px;height:18px;display:grid;place-items:center;border-radius:50%;font-weight:800}.sidebar-footer{margin:16px;padding:12px 8px;border-top:1px solid #303030;display:flex;align-items:center;gap:8px;color:#b9b9b9;font-size:11px}.mini-help{display:grid;place-items:center;width:18px;height:18px;border:1px solid currentColor;border-radius:50%;font-weight:700}.main-shell{margin-left:220px;flex:1;min-width:0}.topbar{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid var(--line);background:#faf7f2eb;position:sticky;top:0;z-index:4}.breadcrumb{display:flex;gap:12px;align-items:center;color:var(--muted);font-size:12px}.breadcrumb strong{color:var(--ink)}.slash{color:#b4afa6}.top-actions{display:flex;align-items:center;gap:11px}.icon-button,.close-button,.more-button{border:0;background:transparent}.icon-button{color:var(--muted);font-size:21px;padding:7px;position:relative}.notification i{position:absolute;width:5px;height:5px;border-radius:50%;background:#ff6b4a;right:4px;top:5px}.top-avatar{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--avatar);font-size:12px;font-weight:800}.primary-button{border:0;background:var(--ink);color:#fff;border-radius:6px;padding:11px 15px;font-weight:700;font-size:12px}.primary-button span{color:var(--accent);font-size:17px;margin-right:3px}.primary-button:hover{background:#333}.content-area{max-width:1480px;margin:0 auto}.page{padding:40px 44px 70px}.page-heading{display:flex;justify-content:space-between;gap:24px;align-items:flex-end;margin-bottom:30px}.eyebrow{color:#85827c;font-size:10px;font-weight:800;letter-spacing:.14em;margin-bottom:8px}.page-heading h1{margin:0;font-size:29px;letter-spacing:-.05em;line-height:1.3}.page-heading p{color:var(--muted);margin:7px 0 0;font-size:13px}.panel{background:var(--white);border:1px solid var(--line);border-radius:10px;padding:22px}.panel-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.panel-title h2{margin:0;font-size:16px;letter-spacing:-.03em}.panel-title button{border:0;background:transparent;color:var(--muted);font-size:11px}.panel-title button span{color:var(--ink);font-size:16px;margin-left:5px}.dashboard-grid{display:grid;gap:18px}.top-cards{grid-template-columns:1.08fr .92fr}.bottom-cards{grid-template-columns:1.18fr 1fr .85fr;margin-top:18px}.today-date{display:flex;align-items:center;gap:12px;margin-bottom:18px;border-bottom:1px solid var(--line);padding-bottom:17px}.today-date>strong{font-size:48px;letter-spacing:-.1em;line-height:.8}.today-date>span{color:var(--muted);line-height:1.45}.today-date>span b{color:var(--ink);font-size:13px}.weather{margin-left:auto;display:flex;align-items:center;gap:8px}.weather span{font-size:25px}.weather small{font-size:11px;color:var(--muted);line-height:1.5}.schedule-list{display:flex;flex-direction:column;gap:8px}.lesson-row,.event-row{display:flex;align-items:center;min-height:50px;border-radius:7px;padding:7px 9px;background:#fbfaf8}.lesson-row{border-left:3px solid var(--accent)}.lesson-row.yellow{border-left-color:var(--yellow)}.lesson-row.blue{border-left-color:var(--blue)}.lesson-row.gray{border-left-color:#ddd;opacity:.7}.lesson-time{width:54px;display:flex;flex-direction:column;gap:1px}.lesson-time strong{font-size:11px}.lesson-time span,.lesson-main span,.event-row span,.lesson-room{font-size:10px;color:var(--muted)}.lesson-main{display:flex;flex-direction:column;gap:1px}.lesson-main strong,.event-row strong{font-size:12px}.lesson-room{margin-left:auto}.row-arrow{margin-left:12px;color:#a9a59e;font-size:20px}.event-row{padding:8px 9px;gap:9px;border:1px dashed var(--line);background:transparent}.event-row>div{display:flex;flex-direction:column;gap:1px}.event-dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}.event-dot.ink{background:var(--ink)}.event-dot.blue{background:var(--blue)}.event-dot.yellow{background:var(--yellow)}.week-stats{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line);padding:3px 0 20px;margin-bottom:18px}.week-stats div{display:flex;flex-direction:column;gap:3px;border-right:1px solid var(--line);padding-left:16px}.week-stats div:first-child{padding-left:0}.week-stats div:last-child{border:0}.week-stats strong{font-size:27px;letter-spacing:-.07em}.week-stats span{color:var(--muted);font-size:10px}.mini-week{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;height:151px;align-items:end}.mini-week>div{display:flex;align-items:center;flex-direction:column;gap:6px;height:100%;position:relative}.mini-week span{color:var(--muted);font-size:10px}.mini-week strong{font-size:12px}.mini-week i{width:60%;background:#dcebd7;border-radius:4px 4px 2px 2px;flex:1;max-height:68px}.mini-week i.filled{background:var(--accent)}.mini-week i.alt{background:#f0eeb1;max-height:36px;flex:initial;height:20px}.mini-week .today-col strong{background:var(--ink);color:#fff;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;margin-top:-5px}.progress-row{display:flex;gap:14px;align-items:center;padding:6px 0 19px;border-bottom:1px solid var(--line)}.progress-ring{width:55px;height:55px;border:6px solid var(--accent);border-right-color:#e9e6df;border-radius:50%;display:flex;align-items:center;justify-content:center;gap:1px;flex-shrink:0}.progress-ring strong{font-size:15px}.progress-ring span{color:var(--muted);font-size:9px}.progress-row>div:last-child strong{font-size:12px}.progress-row p{margin:3px 0 0;color:var(--muted);font-size:10px}.todo-compact{padding-top:10px}.todo-line{width:100%;display:flex;align-items:center;gap:9px;border:0;background:transparent;text-align:left;padding:7px 0;font-size:11px}.todo-line em{margin-left:auto;color:var(--muted);font-size:10px;font-style:normal}.check-box{width:16px;height:16px;border:1px solid #b8b5ad;border-radius:4px;display:grid;place-items:center;font-size:10px}.todo-line.done{color:#aaa;text-decoration:line-through}.todo-line.done .check-box{border-color:var(--accent);background:var(--accent);color:var(--ink)}.deadline{display:flex;align-items:center;padding:13px 0;border-bottom:1px solid var(--line);gap:12px}.deadline:last-child{border:0}.deadline-date,.submission-date{width:43px;height:43px;background:#f4f0e8;border-radius:6px;display:flex;flex-direction:column;justify-content:center;align-items:center}.deadline-date strong,.submission-date strong{font-size:17px;line-height:1}.deadline-date span,.submission-date span{font-size:8px;color:var(--muted)}.deadline-date.urgent,.submission-date.high{background:var(--yellow)}.deadline-copy{display:flex;flex-direction:column;gap:3px;flex:1}.deadline-copy strong,.submission-title strong{font-size:11px}.deadline-copy span,.submission-title span{color:var(--muted);font-size:10px}.deadline em,.submission-row em{font-size:10px;font-style:normal;color:var(--muted);white-space:nowrap}.urgent-text{color:#e35b3f!important;font-weight:700}.month-mini-head{display:flex;justify-content:space-between;font-size:12px;margin:2px 0 16px}.month-mini-head span{color:var(--muted)}.weekday-row,.month-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center}.weekday-row span{font-size:9px;color:var(--muted);margin-bottom:8px}.month-grid{gap:5px 0}.month-grid span{display:grid;place-items:center;height:23px;font-size:10px;border-radius:50%}.month-grid .weekend{color:#b5b2ac}.month-grid .selected{background:var(--ink);color:#fff;font-weight:700}.dashboard-today-sections h3{margin:14px 0 8px;color:var(--muted);font-size:10px;letter-spacing:.08em}.today-lessons{display:flex;flex-direction:column;gap:6px}.week-summary{display:flex;gap:12px;margin:-8px 0 12px;color:var(--muted);font-size:10px}.dashboard-week-table{overflow-x:auto;border:1px solid var(--line);border-radius:7px}.dashboard-week-row{display:grid}.dashboard-week-table.days-6 .dashboard-week-row{grid-template-columns:54px repeat(6,minmax(72px,1fr));min-width:486px}.dashboard-week-table.days-7 .dashboard-week-row{grid-template-columns:54px repeat(7,minmax(72px,1fr));min-width:558px}.dashboard-week-row>*{min-height:46px;padding:7px 6px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.dashboard-week-row>*:last-child{border-right:0}.dashboard-week-row>span{display:grid;place-items:center;color:var(--muted);font-size:9px;background:#faf8f4}.dashboard-week-row>div{display:flex;flex-direction:column;gap:2px;justify-content:center}.dashboard-week-row b{font-size:10px}.dashboard-week-row small{display:block;color:var(--muted);font-size:8px}.dashboard-week-head>*{min-height:34px;text-align:center;background:#f5f2ed;font-size:10px}.dashboard-week-head strong small{margin-left:4px}.dashboard-week-row>div.lesson{background:#eff9eb}.dashboard-week-row>div.changed{background:#fffde0}.dashboard-week-row>div.empty{color:#aaa;background:#fcfbf9}.dashboard-staff-event{width:100%;padding:4px;border-radius:3px;background:#fffde0;color:var(--ink)}.dashboard-staff-event b{display:block;font-size:9px}.dashboard-staff-event small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}.after-school-row>*{border-bottom:0}.checklist-progress{height:7px;margin:8px 0 12px;overflow:hidden;border-radius:999px;background:#e9e6df}.checklist-progress span{display:block;height:100%;border-radius:inherit;background:var(--accent);transition:width .2s ease}.mobile-tomorrow{display:none;margin-bottom:14px}.mobile-tomorrow .event-row{margin-top:6px}.week-calendar-row>div{position:relative}.multi-period-event{position:absolute;z-index:3;inset:7px;width:calc(100% - 14px);overflow:hidden;box-shadow:0 2px 5px #00000014}.multi-period-event small{display:block;margin-top:5px;color:inherit;opacity:.7}.view-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.segmented{display:flex;padding:3px;background:#ebe7e0;border-radius:7px}.segmented button{border:0;border-radius:5px;background:transparent;padding:7px 19px;color:var(--muted);font-size:12px}.segmented button.selected{background:var(--white);color:var(--ink);font-weight:700;box-shadow:0 1px 2px #d9d4cb}.calendar-nav{display:flex;align-items:center;gap:13px}.calendar-nav button{border:1px solid var(--line);background:var(--white);border-radius:5px;min-width:32px;height:30px}.calendar-nav strong{font-size:13px;min-width:175px;text-align:center}.calendar-nav .today-button{width:auto;padding:0 11px;color:var(--muted);font-size:11px}.api-status{color:var(--muted);font-size:10px;border:1px solid var(--line);padding:5px 8px;border-radius:999px}.api-status.connected{color:#4e9b3b;border-color:#b9dfab;background:#f0faec}.calendar-board,.day-board{border:1px solid var(--line);background:var(--white);border-radius:9px;overflow:hidden}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--line)}.calendar-weekdays span{padding:12px;text-align:center;font-size:11px;color:var(--muted);border-right:1px solid var(--line)}.calendar-weekdays .weekend{color:#d18372}.calendar-cells{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(109px,1fr)}.calendar-cell{padding:9px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-width:0}.calendar-cell:nth-child(7n){border-right:0}.calendar-cell b{display:grid;place-items:center;width:24px;height:24px;font-size:11px;margin-bottom:6px;border-radius:50%}.calendar-cell.current b{color:#fff;background:var(--ink)}.weekend-cell{background:#fdfbf8}.calendar-event{display:block;padding:4px 5px;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#eff8e9;border-radius:4px;font-size:9px}.calendar-event i{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--accent);margin:0 4px 1px 0}.calendar-event.ink{background:#f0f0ed}.calendar-event.ink i{background:var(--ink)}.calendar-event.blue{background:#ebf6fb}.calendar-event.blue i{background:var(--blue)}.calendar-event.yellow{background:#fffde0}.calendar-event.yellow i{background:#e1cf00}.calendar-event.pink{background:#fff0ee}.calendar-event.pink i{background:#ee9888}.calendar-event.soft{background:#f5f2ed;color:var(--muted)}.calendar-event.soft i{background:#c4c0b8}.week-calendar-head,.week-calendar-row{display:grid;grid-template-columns:120px repeat(7,1fr)}.week-calendar-head{background:#f8f5f0;border-bottom:1px solid var(--line)}.week-calendar-head>*{padding:14px 8px;text-align:center;font-size:11px;border-right:1px solid var(--line)}.week-calendar-head>span{color:var(--muted);text-align:left;padding-left:18px}.week-calendar-head .current{background:var(--ink);color:#fff}.week-calendar-row{min-height:81px;border-bottom:1px solid var(--line)}.week-calendar-row>span{padding:15px 18px;font-size:10px;color:var(--muted);border-right:1px solid var(--line)}.week-calendar-row>div{border-right:1px solid var(--line);padding:7px}.cell-lesson,.cell-event{display:block;background:#edfae7;border-left:3px solid var(--accent);padding:8px;border-radius:5px;font-size:11px;line-height:1.5}.cell-lesson small{color:var(--muted);font-size:9px}.cell-event{background:#fffde0;border-color:#dfd000}.cell-event.dark{background:#efefec;border-color:var(--ink)}.day-head{display:grid;grid-template-columns:110px 1fr;background:#f8f5f0;border-bottom:1px solid var(--line)}.day-head>*{padding:16px;border-right:1px solid var(--line)}.day-head span{color:var(--muted);font-size:11px}.day-head strong{font-size:13px}.day-row{display:grid;grid-template-columns:110px 1fr;min-height:76px;border-bottom:1px solid var(--line)}.day-row>span{padding:17px 16px;color:var(--muted);font-size:11px;border-right:1px solid var(--line)}.day-event{margin:8px 12px;display:flex;gap:12px;align-items:center;padding:12px 16px;border-left:4px solid var(--accent);background:#eff9eb;border-radius:5px}.day-event strong{width:34px;font-size:11px}.day-event span{font-size:12px}.day-event.yellow{border-color:#dfd000;background:#fffde0}.day-event.blue{border-color:var(--blue);background:#ebf6fb}.day-event.ink{border-color:var(--ink);background:#efefec}.day-event.gray{border-color:#d7d3cc;background:#fbfaf8;color:#999}.summary-strip{display:grid;grid-template-columns:repeat(3,1fr);background:var(--white);border:1px solid var(--line);border-radius:9px;margin-bottom:18px}.summary-strip>div{padding:19px 24px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:6px}.summary-strip>div:last-child{border:0}.summary-strip span{color:var(--muted);font-size:11px}.summary-strip strong{font-size:28px;letter-spacing:-.06em}.summary-strip strong span{color:var(--muted);font-size:11px;margin-left:5px}.summary-strip .warning{color:#dc644d}.full-panel{margin-bottom:18px}.class-card{display:flex;align-items:center;gap:14px;padding:13px 0;border-top:1px solid var(--line)}.class-badge{width:55px;height:55px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#edfae7;border-radius:7px;font-weight:800;font-size:13px}.class-badge.yellow{background:#fffde0}.class-badge.blue{background:#ebf6fb}.class-badge small{font-size:9px;font-weight:400;color:var(--muted);margin-top:2px}.class-card>div:nth-child(2){display:flex;flex-direction:column;gap:4px;flex:1}.class-card>div:nth-child(2) strong{font-size:13px}.class-card>div:nth-child(2) span{color:var(--muted);font-size:10px}.outline-button,.secondary-button{border:1px solid var(--line);background:var(--white);border-radius:5px;padding:8px 12px;font-size:11px}.outline-button:hover,.secondary-button:hover{background:var(--soft)}.simple-row{display:flex;align-items:center;gap:16px;border-top:1px solid var(--line);padding:14px 2px}.simple-row strong{font-size:12px;flex:1}.simple-row>span:last-child{font-size:21px;color:var(--muted)}.row-date{color:var(--muted);font-size:11px;width:40px}.todo-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px}.todo-tabs button{border:0;background:transparent;color:var(--muted);padding:11px 17px;font-size:12px;border-bottom:2px solid transparent}.todo-tabs button.active{color:var(--ink);border-bottom-color:var(--ink);font-weight:700}.todo-tabs span{color:#aaa;margin-left:4px}.todo-large{display:flex;align-items:center;gap:13px;padding:17px 3px;border-bottom:1px solid var(--line)}.todo-large>div{display:flex;flex-direction:column;gap:4px;flex:1}.todo-large strong{font-size:13px}.todo-large span{color:var(--muted);font-size:10px}.todo-large.done strong{color:#999;text-decoration:line-through}.large-check{width:21px;height:21px;border:1px solid #b8b5ad;background:transparent;border-radius:5px}.todo-large.done .large-check{background:var(--accent);border-color:var(--accent)}.priority{font-style:normal;font-size:10px;padding:4px 8px;border-radius:4px;background:#fff1ed;color:#df654e}.priority:not(.high):not(.low){background:#fffde0;color:#9c8b00}.priority.low{background:#eef7ec;color:#489238}.more-button{color:var(--muted);font-weight:700}.submission-stats{max-width:680px}.submission-row{display:flex;align-items:center;gap:15px;border-top:1px solid var(--line);padding:14px 0}.submission-title{flex:1;display:flex;flex-direction:column;gap:3px}.submission-date{width:49px;height:49px}.submission-row .row-arrow{margin:0}.staff-grid,.settings-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:18px}.staff-row{display:flex;align-items:center;gap:11px;padding:15px 0;border-top:1px solid var(--line)}.staff-row strong{flex:1;font-size:12px}.staff-row .staff-row-date{width:38px;flex:0 0 38px;color:var(--muted);font-size:10px;white-space:nowrap}.staff-row .staff-row-time,.staff-row .staff-row-status{min-width:42px;color:var(--ink);font-size:11px;font-weight:700;white-space:nowrap}.staff-row .staff-row-status{min-width:48px}.visibility-badge{flex:0 0 auto;border-radius:999px;padding:4px 8px;background:#f4f0e8;color:#6d6962;font-size:10px;font-weight:700;white-space:nowrap}.visibility-school{background:#eff8e9;color:#468b37}.visibility-group{background:#ebf6fb;color:#397b9d}.visibility-selected_users{background:#fffde0;color:#8c7d00}.visibility-private{background:#f4f0e8;color:#6d6962}.staff-row .row-arrow{color:var(--muted);font-size:20px}.staff-dot{width:9px;height:9px;flex:0 0 9px;border-radius:50%;background:var(--accent)}.staff-dot.c1{background:var(--blue)}.staff-dot.c2{background:var(--yellow)}.staff-dot.c3{background:#f29b8b}.notice-panel{display:flex;gap:14px;background:#f1f9ed;border-color:#c9eabd}.notice-mark{display:grid;place-items:center;width:26px;height:26px;border:1px solid #70b95e;border-radius:50%;color:#579e49;font-weight:700}.notice-panel h3{margin:0 0 8px;font-size:13px}.notice-panel p{margin:0;color:#63735d;font-size:11px;line-height:1.8}.timetable{display:grid;grid-template-columns:120px repeat(5,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.timetable>*{min-height:58px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px}.timetable>strong{text-align:center;background:#f8f5f0;font-size:12px}.tt-corner,.tt-row>span{color:var(--muted);font-size:10px}.tt-row{display:contents}.tt-row>div{font-size:11px;background:#edfae7}.tt-row>div.empty{background:#fbfaf8;color:#aaa}.tt-row>div.tone-1{background:#fffde0}.tt-row>div.tone-2{background:#ebf6fb}.tt-row>div.tone-3{background:#f2eefb}.settings-card h2{margin:0 0 22px;font-size:15px}.profile-line{display:flex;align-items:center;gap:13px}.profile-avatar{width:48px;height:48px;border-radius:50%;background:var(--yellow);display:grid;place-items:center;font-weight:800}.profile-line>div:nth-child(2){flex:1;display:flex;flex-direction:column;gap:4px}.profile-line strong{font-size:13px}.profile-line span{color:var(--muted);font-size:10px}.setting-line{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-top:1px solid var(--line);font-size:12px}.setting-line select{border:1px solid var(--line);border-radius:5px;padding:6px 9px;background:var(--white)}.setting-line input{accent-color:var(--accent);width:18px;height:18px}.drawer-backdrop{position:fixed;inset:0;z-index:10;background:#1a1a1a3d}.event-drawer{position:absolute;right:0;top:0;bottom:0;width:min(440px,100%);background:var(--white);padding:30px;overflow:auto;box-shadow:-8px 0 30px #0000001f}.drawer-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:30px}.drawer-head h2{margin:0;font-size:24px;letter-spacing:-.05em}.close-button{font-size:28px;line-height:1;color:var(--muted);padding:0}.event-drawer form{display:flex;flex-direction:column;gap:18px}.event-drawer label{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:11px;font-weight:700}.event-drawer input,.event-drawer select,.event-drawer textarea{border:1px solid var(--line);border-radius:5px;background:#fffdfa;padding:11px 12px;color:var(--ink);outline:none}.event-drawer input:focus,.event-drawer select:focus,.event-drawer textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #72d35026}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.drawer-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;padding-top:20px;border-top:1px solid var(--line)}.toast{position:fixed;z-index:20;right:25px;bottom:25px;background:var(--ink);color:#fff;border-radius:7px;padding:13px 17px;font-size:12px;box-shadow:0 8px 25px #0003}.toast-check{display:inline-grid;place-items:center;background:var(--accent);color:var(--ink);border-radius:50%;width:18px;height:18px;margin-right:8px;font-weight:800}.mobile-nav{display:none}@media(max-width:1050px){.bottom-cards{grid-template-columns:1fr 1fr}.month-panel{grid-column:span 2}.top-cards{grid-template-columns:1fr}.sidebar{width:195px}.main-shell{margin-left:195px}.calendar-cells{grid-auto-rows:minmax(88px,1fr)}}@media(max-width:760px){.sidebar{display:none}.main-shell{margin-left:0;padding-bottom:68px}.topbar{padding:0 16px;height:60px}.breadcrumb span:first-child,.breadcrumb .slash{display:none}.top-actions{gap:4px}.page{padding:27px 16px 50px}.page-heading{align-items:flex-start;flex-direction:column;margin-bottom:22px}.page-heading h1{font-size:25px}.bottom-cards,.staff-grid,.settings-grid{grid-template-columns:1fr}.month-panel{grid-column:auto}.panel{padding:17px}.view-toolbar{align-items:flex-start;flex-direction:column-reverse;gap:14px}.calendar-nav{width:100%;justify-content:space-between;gap:4px}.calendar-nav strong{min-width:0;font-size:12px}.calendar-cells{grid-auto-rows:minmax(90px,1fr)}.calendar-cell{padding:5px}.calendar-event{font-size:8px;padding:3px}.calendar-event i{display:none}.week-calendar-head,.week-calendar-row{grid-template-columns:70px repeat(7,minmax(72px,1fr));min-width:574px}.week-board{overflow-x:auto}.day-head,.day-row{grid-template-columns:75px 1fr}.summary-strip{grid-template-columns:1fr}.summary-strip>div{border-right:0;border-bottom:1px solid var(--line);padding:14px 18px}.summary-strip>div:last-child{border-bottom:0}.class-card{align-items:flex-start;flex-wrap:wrap}.class-card .outline-button{margin-left:69px}.event-drawer{padding:24px 20px}.mini-week{height:130px}.top-cards{gap:14px}.mobile-nav{display:flex;position:fixed;z-index:6;bottom:0;inset-inline:0;height:64px;background:#fffffff7;border-top:1px solid var(--line);justify-content:space-around;padding:6px 12px}.mobile-nav button{flex:1;border:0;background:transparent;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px}.mobile-nav button .icon{font-size:19px;line-height:1}.mobile-nav button.active{color:var(--ink);font-weight:700}.mobile-nav button.active .icon{color:var(--accent)}}.calendar-event{border:0;color:inherit;text-align:left;cursor:pointer;width:100%}.sunday-date,.holiday-date{color:#d64d4d!important}.saturday-date{color:#2478be!important}.calendar-cell.current b.holiday-date,.calendar-cell.current b.sunday-date{color:#d64d4d;background:#fff4f2}.calendar-cell.current b.saturday-date{color:#2478be;background:#f0f7ff}.calendar-holiday-name{display:block;margin:-3px 0 5px;color:#d64d4d;font-size:9px;font-weight:700;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.week-calendar-head .current.holiday-date,.week-calendar-head .current.sunday-date{color:#d64d4d;background:#fff4f2}.week-calendar-head .current.saturday-date{color:#2478be;background:#f0f7ff}.day-head strong small.day-holiday-name{display:block;margin-top:3px;color:inherit;font-size:10px;font-weight:700}.danger-button{border:1px solid #e1aaa1;background:#fff3f0;color:#b64d40;border-radius:5px;padding:10px 13px;margin-right:auto}.cell-event{border:0;cursor:pointer;color:inherit;font:inherit;text-align:left;width:100%}.day-event{border-top:0;border-right:0;border-bottom:0;cursor:pointer;color:inherit;font:inherit;text-align:left;width:calc(100% - 24px)}.auth-gate{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top right,#eff9e9 0,var(--surface) 42%)}.auth-card{width:min(430px,100%);padding:42px;background:var(--white);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 45px #1a1a1a14;text-align:center}.auth-brand{justify-content:center;height:auto;padding:0;margin-bottom:32px}.auth-card h1{margin:0;font-size:24px;letter-spacing:-.05em}.auth-card p{margin:12px 0 25px;color:var(--muted);font-size:13px;line-height:1.8}.auth-card small{display:block;margin-top:16px;color:var(--muted);font-size:10px;line-height:1.7}.auth-login-button{width:100%;padding:13px 15px}.auth-error{margin:0 0 16px;padding:10px 12px;border:1px solid #e1aaa1;border-radius:6px;background:#fff3f0;color:#b64d40;font-size:11px;line-height:1.6}.auth-actions{display:flex;justify-content:center;gap:10px}.logout-link{margin-left:auto;border:0;background:transparent;color:var(--muted);font-size:10px;padding:2px 0;text-decoration:underline}.logout-link:hover{color:var(--ink)}.sidebar .logout-link{color:#b9b9b9}.sidebar .logout-link:hover{color:#fff}.sidebar .nav-item.active{box-shadow:none}.top-avatar{background:#73dc55;color:#181818}.sidebar .brand-mark:after{color:#fff}.outline-button:disabled{cursor:default;opacity:.65}.wide-drawer{width:min(560px,100%)}.task-classification{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin:10px 0 4px}.task-classification button{min-width:0;border:1px solid transparent;border-radius:4px;background:#f8f5f0;color:var(--muted);padding:6px 4px;text-align:center;font-size:9px;transition:background .15s ease,border-color .15s ease,color .15s ease}.task-classification button:hover{background:#eeebe5;color:var(--ink)}.task-classification button.active{border-color:#a9db99;background:#eff9eb;color:var(--ink);font-weight:700}.todo-compact-heading{display:block;margin:1px 0 4px;color:var(--muted);font-size:10px}.drawer-hint,.form-hint{color:var(--muted);font-size:10px;line-height:1.6}.form-fieldset{border:1px solid var(--line);border-radius:6px;padding:14px;display:flex;flex-direction:column;gap:12px}.form-fieldset legend{color:var(--muted);font-size:11px;font-weight:700;padding:0 5px}.day-picker{display:flex;gap:10px}.day-picker label{display:flex;flex-direction:row;align-items:center;gap:4px;font-size:11px}.checkbox-label{display:flex!important;flex-direction:row!important;align-items:center;justify-content:space-between}.overlap-warning{padding:11px 12px;background:#fff8d8;border:1px solid #ead874;color:#806f00;border-radius:6px;font-size:11px;line-height:1.6}.previous-record{padding:12px;background:#f3f8ef;border:1px solid #cee5c4;border-radius:6px;font-size:11px}.previous-record p{margin:6px 0;color:var(--ink)}.previous-record small{color:var(--muted)}.clickable-row{width:100%;border:0;background:transparent;text-align:left;font:inherit;cursor:pointer}.lesson-record-row{width:100%;display:grid;grid-template-columns:auto minmax(180px,.8fr) minmax(220px,1.4fr) minmax(180px,1fr) auto;align-items:center;gap:14px;padding:15px 0;border-top:1px solid var(--line);background:transparent;text-align:left;font:inherit;cursor:pointer}.lesson-record-row:hover{background:#fcfbf9}.lesson-record-meta,.lesson-record-summary{min-width:0;display:flex;flex-direction:column;gap:4px}.lesson-record-meta strong,.lesson-record-summary strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.lesson-record-meta span,.lesson-record-summary>span{color:var(--muted);font-size:10px}.lesson-record-summary{border-left:1px solid var(--line);padding-left:14px}.lesson-record-row .row-arrow{margin:0}@media(max-width:760px){.lesson-record-row{grid-template-columns:auto minmax(0,1fr) auto;gap:10px}.lesson-record-summary{grid-column:2 / 4;border-left:0;border-top:1px solid var(--line);padding:9px 0 0}.lesson-record-summary+.lesson-record-summary{padding-top:0;border-top:0}.lesson-record-row .row-arrow{grid-column:3;grid-row:1}}.todo-edit-button{flex:1;display:flex;flex-direction:column;gap:4px;border:0;background:transparent;text-align:left;padding:0;cursor:pointer}.lessons-week-panel{overflow:hidden}.panel-title h2{display:flex;align-items:center;gap:16px}.week-navigator{display:inline-flex;align-items:center;gap:13px;color:var(--ink);font-size:13px;font-weight:700;letter-spacing:0;white-space:nowrap}.panel-title .week-navigator button{display:grid;place-items:center;width:32px;height:30px;min-width:32px;padding:0;border:1px solid var(--line);border-radius:5px;background:var(--white);color:var(--ink);font-size:18px;line-height:1}.panel-title .week-navigator button:hover{background:var(--soft)}.lessons-week-panel .calendar-board{margin-top:14px}.cell-lesson{position:relative;min-height:52px;padding:0;overflow:hidden}.lesson-cell-main{display:block;width:100%;min-height:52px;border:0;background:transparent;color:inherit;padding:8px;text-align:left;font:inherit;cursor:pointer}.lesson-cell-main:hover{background:#ffffff6b}.lesson-cell-change{position:absolute;top:5px;right:5px;border:1px solid rgba(79,140,60,.38);border-radius:4px;background:#ffffffd1;color:#4a7b39;padding:2px 5px;font-size:9px;line-height:1.2}.lesson-cell-change:hover{background:var(--white)}.empty-lesson-cell{width:100%;height:100%;min-height:58px;border:0;background:transparent;color:#a5aaa0;font-size:10px;text-align:center}.empty-lesson-cell span{font-size:13px}.empty-lesson-cell:hover{background:#f4faef;color:#4a7b39}.cell-lesson.changed,.cell-lesson.overridden{background:#e9f1ff;border-left:0}.week-calendar-row>span,.day-row>span{display:flex;flex-direction:column;gap:3px}.week-calendar-row>span small,.day-row>span small{color:var(--muted);font-size:9px;line-height:1.25}.calendar-date-line{display:flex;align-items:center;justify-content:space-between;gap:4px;margin-bottom:6px}.calendar-date-line b{margin-bottom:0}.calendar-schedule-change{border:1px solid var(--line);border-radius:4px;background:var(--white);color:var(--muted);font-size:9px;line-height:1.2;padding:3px 5px;cursor:pointer}.calendar-schedule-change:hover{border-color:#8ab97c;color:#427c34}.cell-lesson.changed .lesson-cell-main{padding-right:42px}.lesson-change-state{color:#4f78bb!important}.empty-lesson-cell.changed{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:5px;background:#e9f1ff;color:#436da9}.empty-lesson-cell.changed.no-class{background:#f2eefb;color:#745ca4}.empty-lesson-cell.changed strong{font-size:11px}.empty-lesson-cell.changed small{font-size:9px}.dashboard-week-row>div.changed{background:#e9f1ff}.checklist-section{border-top:1px solid var(--line);padding-top:15px}.section-line{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.section-line h2,.section-line strong{margin:0}.checklist-row{display:flex;align-items:center;gap:8px;border-top:1px solid var(--line);padding:9px 0;font-size:11px}.check-box.checked{background:var(--accent);border-color:var(--accent)}.done-text{color:var(--muted);text-decoration:line-through}.inline-delete,.danger-link{border:0;background:transparent;color:#b64d40;font-size:10px;cursor:pointer;margin-left:auto}.success-message{margin-bottom:16px;padding:10px 12px;border:1px solid #b9dfab;border-radius:6px;background:#f0faec;color:#4e9b3b;font-size:11px}.admin-tabs{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:18px;border-bottom:1px solid var(--line)}.admin-tabs button{border:0;background:transparent;padding:10px 13px;color:var(--muted);font-size:11px;border-bottom:2px solid transparent}.admin-tabs button.active{color:var(--ink);border-bottom-color:var(--accent);font-weight:700}.admin-two-col{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(320px,1.2fr);gap:18px}.admin-form,.admin-list{display:flex;flex-direction:column;gap:13px}.admin-form h2,.admin-list h2{margin:0 0 5px;font-size:15px}.admin-form label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:11px;font-weight:700}.admin-form input,.admin-form select,.admin-form textarea,.admin-list select{border:1px solid var(--line);border-radius:5px;background:#fffdfa;padding:9px 10px;color:var(--ink)}.admin-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid var(--line);font-size:11px}.admin-row>span{flex:1;display:flex;flex-direction:column;gap:3px}.admin-row small{color:var(--muted);font-size:10px}.subheading{padding-top:10px;border-top:1px solid var(--line)}.audit-row{border-top:1px solid var(--line);padding:10px 0;font-size:11px}.audit-row pre{white-space:pre-wrap;background:#f8f5f0;padding:10px;font-size:10px;overflow:auto}.membership-box{margin-top:10px;padding-top:12px;border-top:1px solid var(--line)}.membership-box h3{margin:0 0 8px;font-size:12px}.timetable-editor{overflow:auto}.timetable-edit-grid{display:grid;grid-template-columns:100px repeat(5,minmax(135px,1fr));min-width:775px;border-top:1px solid var(--line);border-left:1px solid var(--line)}.timetable-edit-grid>strong,.timetable-edit-row>*{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:8px}.timetable-edit-grid>strong{background:#f8f5f0;text-align:center;font-size:11px}.timetable-edit-row{display:contents}.timetable-edit-row>span{display:flex;flex-direction:column;gap:3px;color:var(--muted);font-size:10px}.timetable-edit-row small{font-size:9px}.timetable-edit-row>div{display:flex;flex-direction:column;gap:4px}.timetable-edit-row select{width:100%;border:1px solid var(--line);border-radius:4px;background:var(--white);padding:4px;font-size:10px}.cell-lesson{border:0;width:100%;text-align:left;color:inherit;cursor:pointer}.progress-ring{position:relative;width:67px;height:67px;border:0;border-radius:50%;display:flex;align-items:center;justify-content:center;gap:1px;flex-shrink:0}.progress-ring:before{content:"";position:absolute;inset:6px;border-radius:50%;background:var(--white)}.progress-ring strong,.progress-ring span{position:relative;z-index:1}@media(max-width:760px){.admin-two-col{grid-template-columns:1fr}.admin-tabs{overflow-x:auto;flex-wrap:nowrap}.admin-tabs button{white-space:nowrap}.wide-drawer{width:100%}.day-picker{justify-content:space-between}.timetable-editor .form-row{grid-template-columns:1fr}}.calendar-toolbar{display:flex;align-items:center;margin-bottom:18px}.calendar-nav{flex-wrap:wrap}.calendar-nav>strong{flex:0 0 203px;min-width:203px}.view-switch{display:flex;align-items:center;gap:4px;margin-left:2px}.calendar-nav .view-switch button{min-width:34px;padding:0 10px;border-radius:5px;color:var(--muted);font:inherit;font-size:11px;font-weight:400}.calendar-nav .view-switch button.active{position:relative;z-index:1;background:var(--ink);border-color:var(--ink);color:#fff;font-weight:700}.timetable-layout{margin-bottom:18px}.timetable-layout .admin-form{min-height:0}.timetable-editor{margin-bottom:18px}@media(max-width:760px){.calendar-toolbar{align-items:flex-start}.calendar-nav{width:100%;justify-content:flex-start}.view-switch{margin-left:0}.timetable-layout{gap:14px}}@media(max-width:760px){.mobile-tomorrow{display:block}}.calendar-schedule-pattern{display:block;width:max-content;max-width:100%;margin:0 0 5px;padding:3px 5px;overflow:hidden;border-radius:4px;background:#ebf6fb;color:#39758e;font-size:9px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.overdue-text{color:#d92d20!important;font-weight:700}.deadline.completed .deadline-date strong,.deadline.completed .deadline-date span,.deadline.completed .deadline-copy strong,.deadline.completed .deadline-copy span,.deadline.completed em,.submission-row.completed .submission-date strong,.submission-row.completed .submission-date span,.submission-row.completed .submission-title strong,.submission-row.completed .submission-title span,.submission-row.completed em,.submission-row.completed .row-arrow{color:#999}.deadline.completed .deadline-copy strong,.submission-row.completed .submission-title strong{text-decoration:line-through}.submission-stats{grid-template-columns:repeat(4,1fr);max-width:840px}@media(max-width:760px){.submission-stats{grid-template-columns:1fr}}.month-grid .selected{box-sizing:border-box;width:24px;height:24px;justify-self:center;border:1px solid #dfcf9e;border-radius:4px;background:#fffaf0;color:var(--ink);font-weight:800}.lesson-main{flex:1;min-width:0}.lesson-title-line{display:flex;align-items:baseline;min-width:0}.lesson-title-line>strong:first-child{flex-shrink:0}.lesson-next-plan{min-width:0;flex:1;margin-left:54px;overflow:hidden;font-size:12px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.auth-gate{display:grid;place-items:stretch;grid-template-columns:minmax(380px,43.2%) 1fr;min-height:100svh;padding:0;background:#fbf8f4}.auth-side{position:relative;display:flex;flex-direction:column;min-height:100%;padding:46px 44px;overflow:hidden;background:#1a1a1a;color:#fff}.auth-side:after{position:absolute;right:-120px;bottom:-150px;width:410px;height:410px;border:1px solid rgba(255,255,255,.035);border-radius:50%;content:""}.auth-side>.brand{height:auto;padding:0;font-size:18px}.auth-side>.brand .brand-mark:after{color:#fff}.auth-side-copy{position:relative;z-index:1;margin:auto 0;transform:translateY(-3%)}.auth-kicker{margin:0 0 12px;color:#8f8f8f;font-size:9px;font-weight:800;letter-spacing:.15em}.auth-side .auth-kicker{font-size:11px}.auth-side h1{margin:0;color:#fff;font-size:clamp(32px,3.1vw,46px);font-weight:700;letter-spacing:-.075em;line-height:1.34}.auth-side-copy>p:last-child{margin:19px 0 0;color:#b1b1b1;font-size:14px;line-height:1.9}.auth-side-footer{position:relative;z-index:1;color:#777;font-size:12px}.auth-content{display:grid;min-width:0;place-items:center;padding:48px 32px;background:#fbf8f4}.auth-form{width:min(370px,100%)}.auth-content .brand{display:none;justify-content:center;height:auto;padding:0;margin-bottom:46px;color:var(--ink);font-size:18px}.auth-form-heading{margin-bottom:30px}.auth-form-heading .auth-kicker{color:#8a8781}.auth-form-heading h1{margin:0;color:var(--ink);font-size:29px;letter-spacing:-.07em;line-height:1.25}.auth-form-heading>p:last-child{margin:12px 0 0;color:#74716c;font-size:11px;line-height:1.8}.auth-login-button{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;min-height:50px;border-radius:999px;font-size:12px;transition:transform .15s ease,background .15s ease}.auth-login-button span{margin:0;color:#73dc55;font-size:18px;line-height:1}.auth-login-button:hover{transform:translateY(-1px);background:#303030}.auth-form>small{display:block;margin:17px auto 0;color:#88847e;font-size:9px;line-height:1.7;text-align:center}.auth-form .auth-error{margin:-10px 0 18px;border-radius:7px;text-align:left}.auth-form .auth-actions{justify-content:flex-start}.auth-status{margin:0;color:var(--muted);font-size:12px;text-align:center}@media(max-width:760px){.auth-gate{display:block;background:#fbf8f4}.auth-side{display:none}.auth-content{min-height:100svh;padding:28px 24px}.auth-content .brand{display:flex}.auth-form-heading{margin-bottom:30px}.auth-form-heading h1{font-size:28px}}
