@font-face{font-family:ScheduleSans;src:url('assets/fonts/WebSourceHanSansSC-Subset.woff') format('woff');font-display:swap}
@font-face{font-family:ScheduleSerif;src:url('assets/fonts/WebSourceHanSerifSC-Subset.woff') format('woff');font-display:swap}

:root{--ink:#172033;--muted:#7c879d;--line:#e5e9f2;--panel:rgba(255,255,255,.88);--blue:#5267f3;--blue-dark:#3f50d2;--surface:#f5f7fb;--shadow:0 24px 70px rgba(32,44,82,.12)}
*{box-sizing:border-box}
html{min-width:320px;background:var(--surface);color:var(--ink);font-family:"Microsoft YaHei UI","PingFang SC",sans-serif}
body{min-height:100vh;margin:0;overflow-x:hidden;background:radial-gradient(circle at 10% 5%,#fff 0,transparent 30%),linear-gradient(145deg,#f8faff 0%,#f2f4f9 55%,#f8f6f3 100%)}
button,input{font:inherit}
button{color:inherit}
.ambient{position:fixed;border-radius:50%;filter:blur(80px);pointer-events:none;opacity:.35}
.ambient-a{width:420px;height:420px;background:#bec7ff;top:-180px;right:-110px}
.ambient-b{width:360px;height:360px;background:#ffd5c6;bottom:-190px;left:-120px}
.topbar{height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,4vw,64px);border-bottom:1px solid rgba(221,226,238,.85);background:rgba(249,250,253,.76);backdrop-filter:blur(20px);position:relative;z-index:2}
.brand{display:flex;gap:13px;align-items:center;color:inherit;text-decoration:none}
.brand-mark{width:42px;height:42px;flex:0 0 42px;display:block;overflow:hidden;border-radius:13px;box-shadow:0 9px 25px rgba(32,43,72,.16)}.brand-mark img{display:block;width:100%;height:100%;object-fit:contain}
.brand strong{font-size:17px;letter-spacing:.03em}.brand small{display:block;color:var(--muted);font-size:11px;margin-top:3px}
.topbar-actions{display:flex;align-items:center;gap:14px}.repo-link{display:flex;align-items:center;gap:5px;color:#5267f3;font-size:12px;font-weight:700;text-decoration:none}.repo-link:hover{color:#3f50d2}.repo-link b{font-size:14px;font-weight:400}.save-state{font-size:12px;color:#758097;display:flex;align-items:center;gap:8px}.save-state span{width:7px;height:7px;border-radius:50%;background:#41ba8a;box-shadow:0 0 0 5px rgba(65,186,138,.12)}
.app-shell{position:relative;z-index:1;display:grid;grid-template-columns:minmax(520px,.86fr) minmax(580px,1.14fr);gap:22px;max-width:1680px;margin:0 auto;padding:24px clamp(16px,3vw,44px) 44px}
.panel{background:var(--panel);border:1px solid rgba(255,255,255,.9);border-radius:24px;box-shadow:var(--shadow);backdrop-filter:blur(20px)}
.editor-panel{padding:27px;align-self:start}.preview-panel{padding:27px;min-width:0}
.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:22px}.section-heading h1,.section-heading h2{font-size:26px;line-height:1.15;margin:5px 0 0;letter-spacing:-.03em}.eyebrow{font-size:10px;font-weight:800;color:#8b95a9;letter-spacing:.18em;text-transform:uppercase}
.editor-actions{display:flex;align-items:center;gap:8px}.text-button,.icon-button,.quiet-button{border:0;background:transparent;cursor:pointer;border-radius:9px;transition:.2s}.text-button{padding:8px 7px;color:#808ba0;font-size:12px}.text-button:hover{color:var(--ink);background:#f0f2f7}.icon-button{font-size:20px;width:34px;height:34px;background:#f2f4f8}.icon-button:disabled{opacity:.35;cursor:default}
.schedule-editor-wrap{overflow:auto;border:1px solid var(--line);border-radius:15px;background:#fff}.schedule-editor{min-width:616px;display:grid;grid-template-columns:64px repeat(var(--editor-days,6),minmax(92px,1fr))}.editor-head{height:45px;display:flex;align-items:center;justify-content:center;background:#f8f9fc;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px;font-weight:700;color:#737f95}.editor-head:first-child{color:#9aa4b6}.editor-head:last-child{border-right:0}.row-label{min-height:43px;display:flex;align-items:center;justify-content:center;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-family:ScheduleSerif,"KaiTi",serif;font-size:17px;background:#fbfcfe}.subject-cell{position:relative;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:43px}.subject-cell.last-day{border-right:0}.subject-input{position:absolute;inset:0;width:100%;height:100%;border:0;outline:0;text-align:center;background:transparent;font-family:ScheduleSans,"Microsoft YaHei",sans-serif;font-size:18px;padding:5px;color:var(--subject-color,#172033);transition:.18s}.subject-input:focus{background:#f6f7ff;box-shadow:inset 0 0 0 2px #8d9afb;z-index:1}.subject-input::placeholder{color:#c6ccd8}.break-label{grid-column:1/-1;min-height:34px;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line);background:#fbfcfe;font-family:ScheduleSerif,"KaiTi",serif;font-size:15px}.break-label.noon{font-family:ScheduleSerif,"KaiTi",serif;color:#dda900;font-size:17px}.mobile-day-tabs,.mobile-schedule-editor{display:none}
.advanced-settings{margin-top:16px;border:1px solid var(--line);border-radius:13px;overflow:hidden;background:#fbfcfe}.advanced-settings summary{display:flex;justify-content:space-between;padding:13px 15px;cursor:pointer;font-size:12px;font-weight:700;list-style:none}.advanced-settings summary::-webkit-details-marker{display:none}.advanced-settings summary:after{content:'＋';color:#909aaf;margin-left:auto}.advanced-settings[open] summary:after{content:'－'}.advanced-settings summary small{font-weight:400;color:#a0a9ba;margin-left:8px;margin-right:10px}.settings-grid{border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:13px}.setting-field{display:grid;grid-template-columns:58px 1fr;align-items:center;gap:7px}.setting-field label{font-size:11px;color:#7b869b}.setting-field input{min-width:0;border:1px solid #e1e5ed;border-radius:8px;padding:7px 8px;background:#fff;font-size:11px;outline:0}.setting-field input:focus{border-color:#8b98ef;box-shadow:0 0 0 3px rgba(82,103,243,.1)}
.data-row{display:flex;gap:8px;margin-top:13px}.quiet-button{border:1px solid var(--line);padding:9px 11px;font-size:11px;color:#7b869b;background:#fff}.quiet-button:hover{border-color:#cbd1df;color:#313c54}.file-button{cursor:pointer}.file-button input{display:none}
.preview-heading{align-items:center}.view-switch{display:flex;background:#f0f2f7;padding:3px;border-radius:11px}.view-switch button{border:0;background:transparent;border-radius:8px;padding:8px 12px;font-size:11px;color:#7e899d;cursor:pointer}.view-switch button.active{background:#fff;color:#25304a;font-weight:700;box-shadow:0 2px 9px rgba(30,40,70,.1)}
.paper-stage{height:clamp(360px,46vw,650px);border-radius:18px;background:#e9edf4;position:relative;display:flex;align-items:center;justify-content:center;padding:28px;overflow:hidden;background-image:radial-gradient(#cfd5e1 1px,transparent 1px);background-size:18px 18px}.paper-frame{background:#fff;box-shadow:0 18px 50px rgba(25,37,69,.18);transition:.35s ease;overflow:hidden}.paper-frame.large{aspect-ratio:297/210;width:min(100%,880px)}.paper-frame.sheet{aspect-ratio:210/297;height:100%;max-width:100%}.paper-frame canvas{display:block;width:100%;height:100%}.rendering-badge{position:absolute;bottom:13px;left:50%;transform:translate(-50%,12px);background:rgba(29,38,60,.86);color:#fff;border-radius:30px;padding:7px 12px;font-size:10px;opacity:0;transition:.2s;pointer-events:none}.rendering .rendering-badge{opacity:1;transform:translate(-50%,0)}
.fidelity-note{display:flex;align-items:center;gap:12px;padding:15px 3px 17px}.fidelity-icon{width:30px;height:30px;border-radius:10px;background:#e8f8f1;color:#2da477;display:grid;place-items:center;font-weight:900}.fidelity-note p{margin:0;font-size:11px;color:#8791a3;line-height:1.5}.fidelity-note strong{font-size:12px;color:#3b465b}
.export-block{border-top:1px solid var(--line);padding-top:17px}.export-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.export-title>span:last-child{font-size:10px;color:#9aa3b4}.export-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.export-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:11px;text-align:left;border:1px solid #e0e4ec;border-radius:14px;background:#fff;padding:13px;cursor:pointer;transition:.2s;min-width:0}.export-card:hover{transform:translateY(-2px);border-color:#c7cee0;box-shadow:0 10px 25px rgba(35,47,80,.09)}.export-card.primary{background:linear-gradient(135deg,#566bf4,#4558d7);border-color:transparent;color:#fff;box-shadow:0 11px 25px rgba(76,94,225,.25)}.export-card strong,.export-card small{display:block}.export-card strong{font-size:12px}.export-card small{font-size:9px;color:#8d97aa;margin-top:4px}.export-card.primary small{color:#dce0ff}.export-card b{font-size:17px;font-weight:400;color:#a5adbd}.export-card.primary b{color:#fff}.file-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#f1ecff;color:#7258d8;font-size:8px;font-weight:900;letter-spacing:.05em}.file-icon.mint{background:#e8f8f1;color:#209b70}.file-icon.coral{background:#fff0eb;color:#dd6946}.file-icon.sky{background:#eaf6ff;color:#2b8dc3}.export-card.compact{padding-top:11px;padding-bottom:11px}
.toast{position:fixed;z-index:10;left:50%;bottom:24px;transform:translate(-50%,20px);padding:11px 16px;border-radius:12px;background:#202a43;color:white;font-size:12px;opacity:0;pointer-events:none;transition:.25s;box-shadow:0 12px 30px rgba(20,30,55,.25)}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:1420px){.app-shell{grid-template-columns:1fr;max-width:920px}.paper-stage{height:min(68vw,620px)}}
@media(max-width:680px){.topbar{height:70px}.brand small,.save-state{display:none}.app-shell{padding:12px 10px 30px;gap:12px}.panel{border-radius:18px}.editor-panel,.preview-panel{padding:18px}.section-heading h1,.section-heading h2{font-size:22px}.editor-actions .text-button:first-of-type{display:none}.mobile-day-tabs{display:flex;overflow:auto;gap:5px;margin:-4px 0 12px}.mobile-day-tabs button{flex:1;min-width:58px;border:0;border-radius:9px;padding:8px 5px;background:#f0f2f7;color:#7a8598;font-size:11px}.mobile-day-tabs button.active{background:#28344f;color:#fff}.schedule-editor{min-width:0;grid-template-columns:62px 1fr}.editor-head.day-head,.subject-cell{display:none}.schedule-editor[data-mobile-day="0"] .day-0,.schedule-editor[data-mobile-day="1"] .day-1,.schedule-editor[data-mobile-day="2"] .day-2,.schedule-editor[data-mobile-day="3"] .day-3,.schedule-editor[data-mobile-day="4"] .day-4{display:block}.break-label{grid-column:1/3}.paper-stage{height:390px;padding:16px}.export-grid{grid-template-columns:1fr}.export-title>span:last-child{display:none}.settings-grid{grid-template-columns:1fr}}
@media print{.topbar,.editor-panel,.section-heading,.fidelity-note,.export-block{display:none!important}.app-shell{display:block;padding:0}.preview-panel{padding:0;box-shadow:none;border:0}.paper-stage{padding:0;background:none;height:auto}.paper-frame{width:100%!important;height:auto!important;box-shadow:none}}

.preset-picker{display:grid;grid-template-columns:auto 78px 78px auto;align-items:center;gap:6px;padding:7px 8px 7px 10px;border:1px solid #cbd4ff;border-radius:13px;background:linear-gradient(135deg,#f3f5ff,#fff 62%);box-shadow:0 5px 16px rgba(73,91,210,.1)}.preset-title{font-size:12px;font-weight:800;letter-spacing:.04em;color:#4458d5;white-space:nowrap}.preset-picker select{height:32px;border:1px solid #cbd3eb;border-radius:8px;background:#fff;padding:0 7px;color:var(--ink);font-size:13px;font-weight:700;cursor:pointer}.preset-picker select:focus{outline:0;border-color:#6579ee;box-shadow:0 0 0 3px rgba(82,103,243,.12)}.preset-picker button{height:32px;border:0;border-radius:8px;padding:0 11px;background:#5267f3;color:#fff;font-size:13px;font-weight:800;cursor:pointer;box-shadow:0 4px 10px rgba(82,103,243,.24)}.preset-picker button:hover:not(:disabled){background:#4458dc}.preset-picker button:disabled,.preset-picker select:disabled{cursor:not-allowed;opacity:.48}
@media(max-width:680px){.schedule-editor{min-width:0;grid-template-columns:62px 1fr}.break-label{grid-column:1/3}.schedule-editor[data-mobile-day="5"] .day-5{display:block}}
@media(max-width:680px){.section-heading{align-items:stretch}.editor-actions{flex-wrap:wrap}.preset-picker{width:100%;grid-template-columns:1fr 1fr auto}.preset-title{grid-column:1/-1}.preset-picker select{min-width:0}.preset-picker button{padding:0 10px}}
@media(max-width:680px){.topbar{height:64px;padding:0 14px}.brand{gap:10px;min-width:0}.brand-mark{width:38px;height:38px;flex-basis:38px;border-radius:12px}.brand strong{font-size:15px;white-space:nowrap}.topbar-actions{gap:0}.repo-link{min-height:36px;padding:0 4px;font-size:11px;white-space:nowrap}.app-shell{padding:10px 10px 26px;gap:10px}.editor-panel,.preview-panel{padding:15px}.section-heading{gap:10px;margin-bottom:15px}.section-heading h1,.section-heading h2{font-size:20px}.editor-actions{display:grid;width:100%;grid-template-columns:34px minmax(0,1fr) minmax(0,1fr);gap:7px}.editor-actions .text-button:first-of-type{display:block}.icon-button{width:34px;height:34px}.text-button{min-width:0;padding:8px 6px;background:#f4f6fa;font-size:11px;white-space:nowrap}.preset-picker{grid-column:1/-1;width:auto;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;padding:8px;border-radius:10px}.preset-title{grid-column:1/-1}.preset-picker select{width:100%;height:34px;font-size:12px}.data-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.quiet-button{min-width:0;min-height:38px;padding:8px 7px;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.25;overflow-wrap:anywhere}.paper-stage{height:min(108vw,440px);min-height:340px;padding:10px;border-radius:14px}.paper-frame.large{width:100%}.rendering-badge{bottom:8px;max-width:calc(100% - 20px);text-align:center}.fidelity-note{padding:12px 0 14px}.export-block{padding-top:14px}.export-grid{gap:8px}.export-card{gap:9px;padding:12px;min-height:60px}.export-card strong{font-size:12px}.export-card small{font-size:10px;line-height:1.3}.file-icon{width:32px;height:32px}.export-card b{font-size:15px}.advanced-settings{margin-top:12px}.settings-grid{gap:7px;padding:10px}.setting-field{grid-template-columns:54px minmax(0,1fr)}}
@media(max-width:390px){.topbar{padding:0 10px}.brand-mark{width:34px;height:34px;flex-basis:34px}.brand strong{font-size:14px}.editor-panel,.preview-panel{padding:12px}.editor-actions{grid-template-columns:34px 1fr}.editor-actions .text-button:last-child{grid-column:2}.preset-picker{grid-column:1/-1}.data-row{grid-template-columns:1fr}.paper-stage{height:340px;min-height:0;padding:8px}.mobile-day-tabs button{min-width:52px}.schedule-editor{grid-template-columns:56px 1fr}.row-label{font-size:15px}.subject-input{font-size:16px}.export-card{grid-template-columns:32px minmax(0,1fr) auto}}
@media(max-width:680px){.topbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.brand>span:last-child{min-width:0}.brand strong{display:block;overflow:hidden;text-overflow:ellipsis}.repo-link span{font-size:0}.repo-link span:before{content:'仓库';font-size:11px}.section-heading:not(.preview-heading){flex-direction:column;align-items:stretch}.section-heading:not(.preview-heading)>div:first-child{display:flex;align-items:baseline;gap:8px}.section-heading:not(.preview-heading) h1{margin:0;white-space:nowrap}.section-heading:not(.preview-heading) .eyebrow{flex:0 0 auto}.schedule-editor{display:none}.mobile-schedule-editor{display:block}.schedule-editor-wrap{overflow:hidden;border-radius:14px}.mobile-editor-heading{padding:10px 14px;background:#f5f7fc;border-bottom:1px solid var(--line);font-size:13px;font-weight:800;color:#40527a}.mobile-course-row{display:grid;grid-template-columns:70px minmax(0,1fr);min-height:54px;border-bottom:1px solid var(--line);background:#fff}.mobile-course-row:last-child{border-bottom:0}.mobile-period{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-right:1px solid var(--line);background:#fbfcfe;font-family:ScheduleSerif,"KaiTi",serif}.mobile-period strong{font-size:17px;font-weight:500;color:#26344d}.mobile-period small{font:10px/1.2 "Microsoft YaHei",sans-serif;color:#8994a9}.mobile-subject-input{width:100%;min-width:0;border:0;outline:0;background:transparent;text-align:center;font-family:ScheduleSans,"Microsoft YaHei",sans-serif;font-size:19px;font-weight:500;color:var(--subject-color,#172033);padding:8px}.mobile-subject-input:focus{background:#f6f7ff;box-shadow:inset 0 0 0 2px #8d9afb}.mobile-subject-input::placeholder{color:#b8c0cf}.mobile-break-row{display:flex;align-items:center;justify-content:center;gap:9px;min-height:34px;border-bottom:1px solid var(--line);background:#f8fafc;font-family:ScheduleSerif,"KaiTi",serif;font-size:15px;color:#4e5970}.mobile-break-row small{font:10px "Microsoft YaHei",sans-serif;color:#919bad}.mobile-break-row.noon{color:#d79f00;font-size:17px}.mobile-break-row.noon small{color:#c49a32}.mobile-day-tabs{margin:0 0 10px}.preview-heading{align-items:flex-end}.preview-heading h2{white-space:nowrap}.view-switch{flex:0 0 auto}.view-switch button{padding:8px 10px}.paper-stage{height:min(92vw,420px);min-height:300px}.fidelity-note{display:none}}
