:root{color-scheme:light;--paper:#f8f7ef;--ink:#263c32;--green:#276952;--muted:#748078;--line:#dce1d7;--tint:#e7eee3;--white:#fffef9;font-family:system-ui,-apple-system,"Noto Sans CJK SC",sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);-webkit-tap-highlight-color:transparent}button{font:inherit}button{cursor:pointer;touch-action:manipulation}button:focus-visible{outline:3px solid #93bca8;outline-offset:3px}[hidden]{display:none!important}
.app{min-height:100vh;height:100vh;padding:20px 34px 12px;display:flex;flex-direction:column;max-width:1600px;margin:auto}.topbar{height:70px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-shrink:0}.identity{display:flex;align-items:center;gap:12px}.brand-mark{width:42px;height:42px}.brand{font-size:42px;letter-spacing:-2px;line-height:1;font-weight:800}.section-name{font-size:24px;margin-left:16px;padding-left:26px;border-left:1px solid #cbd4c8;font-weight:650}button{border:0;background:none;color:inherit}
.orientation{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:68px;padding-bottom:12px;flex-shrink:0}.class-name{font-weight:650;font-size:19px;line-height:44px}.date-label{color:var(--muted);font-size:14px;margin-left:18px}.view-switch{display:flex;background:#ecefe5;border-radius:12px;padding:4px;gap:4px}.view-switch button{min-width:76px;min-height:40px;border-radius:9px;font-size:15px;font-weight:600;color:var(--muted);transition:background .16s,color .16s}.view-switch button.is-active{background:var(--white);color:var(--green);box-shadow:0 1px 3px #27392c0b}
.workspace{flex:1;min-height:0;transition:opacity .12s ease,transform .12s ease}.workspace.is-changing{opacity:.25;transform:translateY(3px)}.week-table{display:grid;grid-template-columns:58px repeat(5,minmax(0,1fr));grid-template-rows:54px repeat(6,minmax(60px,1fr));height:100%;min-height:416px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.corner{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px}.day-heading{display:flex;justify-content:center;align-items:center;gap:8px;min-height:48px;font-weight:650;font-size:17px;position:relative;transition:background .16s,color .16s;border-bottom:1px solid var(--line)}.day-heading.is-selected{background:var(--tint);color:var(--green)}.today-dot{width:6px;height:6px;border-radius:50%;background:var(--green);flex-shrink:0}.period{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:15px;border-top:1px solid var(--line)}.course{min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px 10px;gap:5px;border-top:1px solid var(--line);border-left:1px solid var(--line);position:relative;transition:background .16s,color .16s}.course.is-selected{background:var(--tint)}.course:active{background:#dbe7d7}.course-subject{font-size:clamp(21px,2.3vw,30px);font-weight:650;line-height:1.3;word-break:break-word;text-align:center}.course.is-selected .course-subject{color:var(--green)}.course-teacher{font-size:13px;color:var(--muted)}.course.is-school-based .course-subject,.course.is-empty .course-subject{color:#7b847a;font-weight:500}.footer{min-height:38px;display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);font-size:12px;flex-shrink:0;padding-top:8px}
.day-view{height:100%;display:flex;flex-direction:column;min-height:416px}.day-tabs{display:flex;gap:8px;margin-bottom:12px}.day-tabs button{flex:1;min-height:44px;font-size:16px;border-radius:10px;color:var(--muted);transition:background .16s}.day-tabs button.is-selected{background:var(--tint);color:var(--green);font-weight:650}.day-list{display:grid;grid-template-rows:repeat(6,minmax(56px,1fr));flex:1;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.day-lesson{display:flex;align-items:center;gap:24px;padding:8px 28px;border-bottom:1px solid var(--line);text-align:left}.day-lesson:last-child{border-bottom:0}.day-number{color:#8a978a;width:35px;font-size:22px;font-weight:400;flex-shrink:0}.day-subject{font-size:clamp(25px,3vw,34px);font-weight:650;line-height:1.2}.day-detail{display:flex;flex-direction:column;gap:5px}.day-teacher,.day-note{color:var(--muted);font-size:13px}.day-lesson.is-school-based .day-subject{color:#7b847a;font-weight:500}
.loading-error{font-size:16px;line-height:1.7;margin:0;color:var(--muted)}
@media(max-width:820px){.app{padding:16px 20px 10px}.topbar{height:64px}.brand{font-size:36px}.brand-mark{width:37px;height:37px}.section-name{font-size:20px;margin-left:10px;padding-left:18px}.orientation{min-height:66px}.class-name{font-size:18px}.date-label{font-size:12px;margin-left:12px}.week-table{grid-template-columns:43px repeat(5,minmax(0,1fr));grid-template-rows:52px repeat(6,minmax(66px,1fr))}.day-heading{font-size:15px;gap:5px}.period{font-size:13px}.course{padding:8px 5px}.course-subject{font-size:22px}.course-teacher{font-size:12px}.footer{font-size:11px}.view-switch button{min-width:64px}.day-lesson{padding:10px 18px}}
@media(max-width:520px){.app{height:auto;min-height:100vh;padding:12px 12px 10px}.topbar{height:58px;gap:8px}.brand{font-size:31px}.brand-mark{width:32px;height:32px}.section-name{font-size:17px;padding-left:12px;margin-left:3px}.orientation{flex-wrap:wrap;gap:5px;min-height:78px;padding:8px 0 12px}.date-label{display:block;margin:3px 0 0;font-size:11px}.view-switch button{min-width:54px;min-height:36px;font-size:13px}.workspace{min-height:500px}.week-table{grid-template-columns:32px repeat(5,minmax(0,1fr));grid-template-rows:48px repeat(6,minmax(75px,1fr));min-height:498px}.day-heading{font-size:12px;gap:3px}.period{font-size:11px}.course-subject{font-size:17px}.course-teacher{font-size:10px}.course{padding:6px 3px}.day-list{min-height:440px}.footer{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
