*{box-sizing:border-box} :root{--ink:#263b3b;--dark:#182c2c;--green:#25645b;--muted:#84908b;--line:#e1e5df;--paper:#fffefa;--red:#91493f}body{margin:0;background:#f3f4ef;color:var(--ink);font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;font-size:14px}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}button:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible,[contenteditable]:focus-visible{outline:2px solid #4c9c8d;outline-offset:3px}button{border:0;background:none;color:inherit}a{color:inherit}input,textarea{border:1px solid #dce1d9;border-radius:6px;background:#fff;padding:11px 12px;min-width:0;width:100%;color:var(--ink)}textarea{resize:vertical}input[type=checkbox]{width:15px;accent-color:var(--green)}.topbar{height:84px;background:var(--dark);color:#e9eee4;display:flex;align-items:center;padding:0 44px;gap:32px}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;font-family:Georgia,"Songti SC",serif;font-size:21px;letter-spacing:2px}.brandmark{font-family:Georgia;font-size:40px;color:#c4b789}.brand small{display:block;font:8px system-ui;letter-spacing:2.4px;color:#a6b8ac;margin-top:6px}.edition{font-size:12px;color:#c0cdc2;border-left:1px solid #40524b;padding-left:30px;letter-spacing:1px}.private{margin-left:auto;font-size:11px;color:#a5c4b3}main{max-width:1540px;margin:0 auto;padding:36px 44px 30px}.intro{display:flex;align-items:center;justify-content:space-between;margin:0 0 30px}.eyebrow{font-size:9px;color:#6b887a;letter-spacing:2.4px;font-weight:650}h1{font-family:Georgia,"Songti SC","STSong",serif;font-size:30px;letter-spacing:2px;font-weight:600;margin:10px 0 10px}.intro p{margin:0;color:#79877e;font-size:12px}.intro-mark{font-family:Georgia;font-size:48px;color:#bcc4b5;text-align:center;letter-spacing:8px;padding:0 30px}.intro-mark span{display:block;font:10px system-ui;letter-spacing:3px;color:#8c9b8e;margin-top:5px}.workspace{display:grid;grid-template-columns:310px minmax(0,1fr);gap:28px;align-items:start}aside{display:grid;gap:16px}.panel{padding:23px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 2px 5px #1f3a2803}.section-title{display:flex;align-items:center;gap:10px;margin-bottom:20px}.section-title h2{font-size:14px;font-weight:650;margin:0}.step{font-family:Georgia;font-size:12px;color:#9eaa9b;border:1px solid #dce2d7;border-radius:50%;width:25px;height:25px;display:grid;place-items:center}.tabs{background:#f1f4ef;padding:4px;border-radius:7px;display:flex;margin-bottom:17px}.tabs button{flex:1;padding:8px 0;font-size:12px;color:#8a958b;border-radius:4px}.tabs button[aria-selected=true]{background:white;color:#355d4f;box-shadow:0 1px 5px #1b3a2520;font-weight:600}.dropzone{border:1px dashed #afc1b0;border-radius:7px;background:#f8faf5;min-height:145px;display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer;transition:.15s}.dropzone.drag{background:#e3eee5;border-color:var(--green)}.upload-icon{font-size:26px;color:#6d8973;margin-bottom:9px}.dropzone strong{font-weight:550;font-size:12px}.dropzone small{color:#9aa392;font-size:10px;margin-top:9px}.paste{font-size:11px;color:#7c8e7c;margin-top:12px}.paste summary{cursor:pointer}.paste textarea{margin:10px 0;height:100px;font-size:11px}.sample-line{border-top:1px solid #edf0e8;margin-top:18px;padding-top:16px;display:flex;align-items:center;font-size:10px;justify-content:space-between}.sample-line span{color:#9ba696}.sample-line button{padding:0;color:#557761;font-size:10px}.field-label{font-size:11px;display:block;margin:15px 0 8px;font-weight:550;color:#607365}.two-fields{display:grid;grid-template-columns:1fr 1.3fr;gap:13px}.two-fields input{font-size:11px;height:39px;padding:6px}.muted{color:#9ba696;margin-left:3px;font-size:10px}.stepper{display:flex;align-items:center;border:1px solid #dce1d9;border-radius:6px;height:39px;overflow:hidden}.stepper input{border:0;text-align:center;padding:0;width:36px;-moz-appearance:textfield}.stepper input::-webkit-inner-spin-button{display:none}.stepper button{padding:8px 10px;font-size:17px}.checkbox{display:flex;align-items:center;gap:6px;margin:18px 0;font-size:11px;color:#6f7e70}.paper-spec{display:flex;gap:10px;justify-content:space-between;background:#f5f6f2;border-radius:5px;padding:11px;font-size:10px;color:#87967d;margin:17px 0}.primary,.secondary{border-radius:6px;padding:12px 15px;font-size:12px;font-weight:550}.primary{background:var(--green);color:white;display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:0 3px 6px #315b3a15}.primary>span:first-child{font-size:19px}.primary>span:last-child{font-size:10px;font-weight:400;margin-left:auto;padding-left:10px;border-left:1px solid #6a9183}.secondary{background:#eaf0e7;color:#426a54;margin-top:10px}.full{width:100%}.text-button{font-size:10px;color:#82927e;margin-top:12px;padding:3px}.help{font-size:10px;color:#929e8e;line-height:1.8}.help.tight{margin:14px 0 0}.compact{padding:18px 23px}.compact .section-title{margin:0;cursor:pointer;list-style:none}.compact details[open] .section-title{margin-bottom:15px}.chevron{margin-left:auto}.order-row{display:grid;grid-template-columns:1fr 48px 48px;gap:5px;align-items:center;border-bottom:1px solid #edf0e8;padding:5px 0;font-size:10px}.order-row input{font-size:10px;padding:5px;text-align:center}.order-row span{overflow:hidden;text-overflow:ellipsis}.order-head{color:#91a08d;margin-top:15px;font-size:9px}.warnings{color:#9b6b3d;font-size:10px;line-height:1.8;margin-top:12px;max-height:200px;overflow:auto}.credits{text-align:center;color:#98a38e;font-size:9px;line-height:1.8;padding:5px 8px}.credits img{max-width:130px;max-height:48px;object-fit:contain;opacity:.6}.credits a{text-decoration:none}.preview-area{min-width:0;border:1px solid #dce2d8;border-radius:10px;background:#e8ece5;overflow:hidden;position:sticky;top:18px}.preview-toolbar{height:57px;display:flex;align-items:center;justify-content:space-between;background:#f9faf6;padding:0 24px;border-bottom:1px solid #dae1d5;font-size:12px}.preview-toolbar>div{display:flex;align-items:center;gap:10px}.status-dot{width:6px;height:6px;border-radius:50%;background:#759b7f}.preview-toolbar strong{font-weight:550}.preview-label{color:#91a08a;font-size:10px;border-left:1px solid #dce3d5;padding-left:10px;max-width:180px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.zoom-controls button{font-size:18px}.zoom-controls span{font-size:10px;color:#82917a;min-width:35px;text-align:center}.preview-scroll{overflow:auto;max-height:calc(100vh - 205px);min-height:600px;padding:30px 25px;background:radial-gradient(#bdc9b854 .65px,transparent .65px);background-size:9px 9px}.document-stack{display:flex;flex-direction:column;align-items:center;gap:25px;min-width:fit-content}.sheet-wrap{position:relative;flex-shrink:0}.sheet{width:794px;height:1123px;transform-origin:top left;background:var(--paper);padding:45px 45px 32px;box-shadow:0 4px 18px #304b2f12;position:relative;color:#303c36;overflow:hidden;font-family:"PingFang SC","Microsoft YaHei",sans-serif}.sheet-header{display:flex;align-items:flex-start;justify-content:space-between;border-bottom:2px solid #425d4f;padding-bottom:17px;margin-bottom:19px}.sheet-kicker{font-size:9px;letter-spacing:2px;color:#93a089;margin-bottom:8px}.sheet h2{font-family:"Songti SC",Georgia,serif;font-size:24px;margin:0;font-weight:600;letter-spacing:2px}.sheet .sheet-title{font-size:11px;color:#7c8979;margin:9px 0 0}.sheet-badge{text-align:right;color:#7c8974;font-size:10px;line-height:2}.sheet-badge strong{font:28px Georgia;color:#526b53;display:block;line-height:1.2}.meta-line{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#7d8978;margin:16px 0 20px}.summary-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:12px}.summary-table th{height:38px;font-size:11px;font-weight:500;background:#edf0e8;border:1px solid #ccd4c5}.summary-table td{border:1px solid #ccd4c5;height:57px;vertical-align:top;padding:5px}.summary-table td:first-child{text-align:center;vertical-align:middle;font:18px Georgia;color:#7c8b70;background:#fafbf6}.summary-table th:first-child{width:42px}.summary-table th:nth-child(2),.summary-table th:nth-child(3){width:127px}.summary-table th:nth-child(4){width:145px}.editable{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5;min-height:100%;border-radius:2px}.editable:focus{background:#f1f5e9;outline:1px solid #92ac87;outline-offset:2px}.notes-title{font-size:11px;letter-spacing:1px;margin:22px 0 7px;color:#7d8e70}.summary-notes{border-top:1px solid #d6ddce;height:94px;background:repeating-linear-gradient(transparent,transparent 29px,#dce2d4 30px);font-size:12px;padding:5px 2px}.sheet-footer{position:absolute;bottom:24px;left:45px;right:45px;display:flex;justify-content:space-between;color:#9aa58f;border-top:1px solid #dce2d3;padding-top:9px;font-size:8px;letter-spacing:1px}.night-sheet .sheet-header{margin-bottom:16px;padding-bottom:13px}.night-sheet .sheet-header h2{font-size:22px}.night-block{height:426px;margin-bottom:25px;display:flex;flex-direction:column}.night-heading{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #889f7c;padding-bottom:9px;margin-bottom:7px}.night-heading h3{font-size:14px;font-family:Georgia,"Songti SC",serif;margin:0;font-weight:600;letter-spacing:1px}.night-heading span{font-size:8px;color:#8a997f}.night-table{border:1px solid #d2dacb;flex:1;display:flex;flex-direction:column;min-height:0}.night-row{display:grid;grid-template-columns:158px 1fr;flex:1;min-height:0;border-bottom:1px solid #d7dece}.night-row:last-child{border-bottom:0}.night-row.head{flex:0 0 24px;background:#edf0e7;font-size:10px;color:#6c7c61;align-items:center}.night-row.head>div{padding:4px 10px}.role-cell{display:flex;align-items:center;gap:7px;border-right:1px solid #d7dece;padding:2px 8px;min-width:0}.role-cell img{width:24px;height:24px;object-fit:contain;flex-shrink:0}.role-cell .initial{display:grid;place-items:center;width:24px;height:24px;background:#eef1e8;border-radius:50%;color:#7f9076;font-size:10px;flex-shrink:0}.role-cell .role-name{font-size:11px;line-height:1.15}.night-row .record-cell{font-size:11px;padding:3px 8px;overflow:hidden}.record-cell .hint{color:#a8afa1;font-size:9px;line-height:1.5}.record-cell .editable{min-height:16px}.night-block.dense .role-cell img,.night-block.dense .initial{width:18px;height:18px}.night-block.dense .role-name,.night-block.dense .record-cell{font-size:9px}.night-empty{flex:1;display:flex;align-items:center;justify-content:center;color:#a2ad97;font-size:11px}.night-blank{border-top:1px dashed #d6decd;display:flex;align-items:center;justify-content:center;color:#a6b09c;font-size:10px;letter-spacing:2px}.preview-bottom{display:flex;justify-content:space-between;border-top:1px solid #d4ddce;padding:12px 23px;font-size:9px;color:#8b9b80;background:#f4f6ef}.toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:#213c32;color:#fff;padding:13px 22px;border-radius:8px;box-shadow:0 8px 30px #0002;font-size:12px;z-index:10}#message{font-size:10px;line-height:1.7;margin-top:12px;color:#497b5c;overflow-wrap:anywhere}#message.error{color:#a64e3c}#url-panel .field-label{margin-top:0}button:hover{filter:brightness(.94)}[hidden]{display:none!important}@media(min-width:1550px){.preview-scroll{max-height:calc(100vh - 200px)}}@media(max-width:1000px){main{padding:28px 22px}.workspace{grid-template-columns:280px minmax(0,1fr);gap:18px}.panel{padding:19px}.topbar{padding:0 25px}.private{display:none}.preview-toolbar{padding:0 15px}.preview-label{display:none}.preview-bottom span:last-child{display:none}.intro-mark{display:none}}@media(max-width:720px){.topbar{height:72px;padding:0 20px}.edition{margin-left:auto;padding:0;border:0;font-size:9px}.brand{font-size:18px}.brandmark{font-size:32px}.brand small{font-size:6px}.intro h1{font-size:24px}.intro p{font-size:11px;line-height:1.8}.workspace{display:flex;flex-direction:column}.workspace aside,.preview-area{width:100%}.preview-area{position:static}.preview-scroll{max-height:750px;min-height:450px;padding:18px 12px}.intro{margin-bottom:24px}.panel{padding:23px}.credits{display:none}}@media print{@page{size:A4;margin:0}body{background:white}body>*{display:none!important}main,.workspace,.preview-area,.preview-scroll,.document-stack,.sheet-wrap,.sheet{display:block!important}main{padding:0;margin:0;max-width:none}.intro,aside,.preview-toolbar,.preview-bottom{display:none!important}.workspace{border:0}.preview-area{border:0;overflow:visible;position:static}.preview-scroll{padding:0;overflow:visible;max-height:none;background:none}.sheet-wrap{width:210mm!important;height:297mm!important;break-after:page}.sheet-wrap:last-child{break-after:auto}.sheet{transform:none!important;width:210mm;height:297mm;box-shadow:none;print-color-adjust:exact;-webkit-print-color-adjust:exact}.sheet .editable:focus{background:none;outline:none}.document-stack{min-width:0}}
.phase-label{font-size:9px;color:#86947a;margin:6px 0 5px;flex-shrink:0}.day-section{margin-top:7px;display:flex;flex-direction:column;flex-shrink:0;min-height:48px}.day-choice{display:flex;align-items:center;gap:8px;font-size:11px;padding:6px 0}.day-choice input{width:14px;accent-color:var(--green)}#day-editor{display:grid;grid-template-columns:1fr 1fr;max-height:300px;overflow:auto}.warnings{white-space:pre-line}.night-block>.night-table{flex:1}.day-section .night-table{flex:1}.night-block.dense .record-cell .hint{font-size:7px;line-height:1.1}
.night-row .role-cell img,.night-row .role-cell .initial,.night-block.dense .role-cell img,.night-block.dense .initial{width:var(--icon-size,24px);height:var(--icon-size,24px)}.role-cell .role-name,.night-row .record-cell,.night-block.dense .role-name,.night-block.dense .record-cell{font-size:var(--row-font,11px)}.record-cell .hint{font-size:min(9px,var(--row-font,9px));line-height:1.15}.pdf-download{display:block;font-size:11px;color:#25645b;margin-top:8px}
/* Compact paper: one title, two day blocks, one shared height for every record row. */
.sheet{padding:26px 32px 32px;background:#fffefa}
.sheet-header,.night-sheet .sheet-header{height:28px;min-height:28px;margin:0 0 12px;padding:0 0 6px;border-bottom:1px solid #9daa94;align-items:flex-start}
.sheet .sheet-header h2,.night-sheet .sheet-header h2{font-size:18px;line-height:22px;letter-spacing:0;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheet-page{position:absolute;bottom:14px;right:32px;font-size:9px;line-height:12px;color:#85927b}
.summary-table th{height:28px}.summary-table td{height:70px}.summary-table td:first-child{font-size:17px}
.notes-title{margin:14px 0 8px;line-height:14px;font-size:11px;letter-spacing:0}.summary-notes{height:104px}
.night-block{height:500px;margin:0 0 20px;display:block;overflow:hidden}.night-block:last-of-type{margin-bottom:0}.night-blank{border:0}
.night-heading{height:22px;padding:0;margin:0 0 6px;border:0;display:block}.night-heading h3{font:600 14px/22px "PingFang SC","Microsoft YaHei",sans-serif;letter-spacing:0}
.night-table{display:block;border:0;border-left:1px solid #d2dacb;border-right:1px solid #d2dacb;flex:none;overflow:hidden}
.night-table+.night-table{margin-top:8px}
.night-row{height:var(--row-height);flex:none;border-bottom:1px solid #d7dece;grid-template-columns:158px minmax(0,1fr);min-height:0}
.night-row:last-child{border-bottom:1px solid #d7dece}
.night-row.head{height:20px;font-size:10px;line-height:14px;border-top:1px solid #d7dece;align-items:center}.night-row.head>div{padding:2px 8px}
.night-row.head>div:first-child{border-right:1px solid #d7dece}
.role-cell{gap:6px;padding:0 8px;overflow:hidden;line-height:1;min-height:0}
.record-icon,.night-row .role-cell img,.night-row .role-cell svg{display:block;flex:0 0 var(--icon-size);width:var(--icon-size);height:var(--icon-size);color:#7f9076;object-fit:contain;overflow:hidden}
.role-cell .role-name{font-size:var(--row-font);line-height:1.15;overflow:hidden;max-height:100%;min-width:0}
.night-row .record-cell{font-size:var(--row-font);padding:2px 8px;line-height:1.2;min-height:0;overflow:hidden}
.record-cell .editable{min-height:0;height:100%;line-height:1.2}.record-cell .hint{font-size:min(9px,var(--row-font));line-height:1.15}
.record-cell:has(.hint:not([hidden])) .editable{height:auto}
.night-table.with-hints .night-row{grid-template-columns:158px 250px minmax(0,1fr)}
.hint-cell{border-right:1px solid #d7dece;padding:2px 8px;min-height:0;overflow:hidden}
.operation-hint{height:100%;font-size:min(9px,var(--row-font));line-height:1.15;color:#7d8978;white-space:pre-wrap;overflow-wrap:anywhere;overflow:hidden}
.night-row.head>div:not(:last-child){border-right:1px solid #d7dece}
.sheet .sheet-header h2{flex-shrink:0}
.sheet-script{margin-left:auto;max-width:520px;min-width:0;font-size:18px;line-height:22px;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.sheet-script{font-family:"Songti SC",Georgia,serif;font-weight:600;letter-spacing:0}
#day-editor{border-top:1px solid var(--line);padding-top:10px}
