:root{font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif;color:#172235;background:#eef2f7;font-synthesis:none;--navy: #111a2d;--text: #172235;--muted: #738196;--line: #66778f;--guide: #b3c0d0;--trace: #98a7bc;--paper: #fff;--border: #dfe6ee;--surface: #fff;--worktop: #eef2f7}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{min-height:100vh;background:var(--worktop)}button,input,select,textarea{font:inherit}button{color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid #8b9bb1;outline-offset:2px}button:disabled{cursor:default;opacity:.48}button svg{flex-shrink:0}h1,h2,p{margin:0}.app-shell{min-height:100vh}.header{height:78px;background:#fff;border-bottom:1px solid #e3e8ef;position:sticky;top:0;z-index:5}.header-inner{width:min(1432px,calc(100% - 48px));height:100%;margin:0 auto;display:flex;align-items:center;gap:42px}.brand{flex:0 0 auto;color:#111;text-decoration:none;display:flex;align-items:center}.brand strong{font-family:Kaiti SC,STKaiti,KaiTi,serif;font-size:30px;font-weight:800;letter-spacing:.5px;white-space:nowrap}.header nav{height:100%;display:flex;align-items:center;gap:8px}.nav-item{position:relative;height:48px;display:flex;align-items:center;border-radius:10px;color:#697c95;transition:background-color .15s,color .15s}.nav-item.active{background:#f0f3f7;color:var(--navy)}.nav-link,.nav-menu-trigger{height:48px;border:0;background:transparent;color:inherit;font-size:16px;font-weight:550;white-space:nowrap}.nav-link{min-width:76px;padding:0 13px}.nav-menu-trigger{width:30px;display:flex;align-items:center;justify-content:center;padding:0 8px 0 0}.nav-item.active .nav-link{font-weight:650}.nav-item:hover{background:#f3f5f8;color:var(--navy)}.nav-item.active:hover{background:#e9edf3}.nav-item button:focus-visible{outline-offset:-3px}.nav-menu{position:absolute;z-index:10;top:calc(100% + 8px);left:0;min-width:156px;display:flex;flex-direction:column;padding:5px;border:1px solid #e1e7ef;border-radius:9px;background:#fff;box-shadow:0 8px 24px #17223518}.nav-menu button{height:36px;padding:0 10px;border:0;border-radius:6px;background:transparent;color:#52657d;text-align:left;font-size:14px}.nav-menu button:hover,.nav-menu button.selected{background:#f0f3f7;color:var(--navy)}.workspace{width:min(1432px,calc(100% - 48px));min-height:calc(100vh - 78px);margin:0 auto;padding:28px 0 36px;display:grid;grid-template-columns:minmax(0,1fr) 304px;align-items:start;gap:22px}.preview{min-width:0;padding:0;overflow:visible;background:transparent}.paper-stack{width:100%;max-width:none;margin:0 auto}.paper{container-type:inline-size;position:relative;width:100%;aspect-ratio:210 / 297;margin:0 auto 22px;padding:var(--page-margin, 4cqw);overflow:hidden;background:var(--paper);box-shadow:none;border-radius:0}.worksheet-content{position:relative;width:100%}.practice-block{margin-bottom:var(--row-spacing, 2mm)}.cell-row{display:grid;width:100%;height:var(--row-height, 10mm);border-top:1px solid var(--line-color, var(--line));border-left:1px solid var(--line-color, var(--line))}.cell{position:relative;min-width:0;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;border-right:1px solid var(--line-color, var(--line));border-bottom:1px solid var(--line-color, var(--line))}.glyph{position:relative;z-index:1;color:var(--text);font-family:var(--worksheet-font, "Kaiti SC", "STKaiti", "KaiTi", serif);font-size:clamp(10px,calc(5cqw * var(--glyph-scale, .68) * var(--glyph-compression, 1)),48px);font-weight:inherit;line-height:1;transform:translateY(var(--vertical-offset, 0%));white-space:nowrap}.first-cell .glyph{color:#111827}.traced-cell .glyph{color:var(--trace-color, var(--trace))}.guide{position:absolute;z-index:0;pointer-events:none}.field-grid .guide.horizontal,.rice-grid .guide.horizontal{left:0;top:50%;width:100%;border-top:1px dashed var(--guide)}.field-grid .guide.vertical,.rice-grid .guide.vertical{top:0;left:50%;height:100%;border-left:1px dashed var(--guide)}.rice-grid .guide.diag{top:50%;left:-20%;width:140%;border-top:1px dashed var(--guide)}.rice-grid .guide.diag.one{transform:rotate(45deg)}.rice-grid .guide.diag.two{transform:rotate(-45deg)}.four-lines .guide.horizontal{left:0;top:50%;width:100%;border-top:1px dashed var(--guide)}.four-lines .guide.line-top{left:0;top:25%;width:100%;border-top:1px dashed var(--guide)}.four-lines .guide.line-bottom{left:0;top:75%;width:100%;border-top:1px dashed var(--guide)}.latin .glyph{font-family:Georgia,Times New Roman,serif;font-size:clamp(10px,calc(4.4cqw * var(--glyph-scale, .68) * var(--glyph-compression, 1)),42px);font-style:normal}.pinyin-row{display:grid;width:100%;height:4mm;border:1px solid var(--line-color, var(--line));border-bottom:0;font:2.2mm/4mm Arial,sans-serif;color:#536780}.pinyin-row span{overflow:hidden;text-align:center;border-right:1px solid var(--line-color, var(--line))}.pinyin-row span:last-child{border-right:0}.empty-row{margin-bottom:var(--row-spacing, 2mm)}.paper-empty{padding:18px 0;color:#8995a5;text-align:center;font-size:14px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.settings{min-width:0;position:sticky;top:96px;align-self:start;max-height:calc(100vh - 108px);overflow:auto;padding:0 0 12px;scrollbar-width:thin;scrollbar-color:#d7dfe9 transparent}.settings-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 14px}.action{height:48px;display:flex;align-items:center;justify-content:center;gap:9px;padding:0 13px;border:1px solid #dfe5ed;border-radius:10px;background:#fff;color:var(--navy);font-size:15px;font-weight:600;white-space:nowrap;transition:background-color .15s,border-color .15s,color .15s}.action svg{width:19px;height:19px}.action.outline:hover{border-color:#d6dde7;background:#f1f4f8;color:var(--navy)}.action.primary{border-color:var(--navy);background:var(--navy);color:#fff}.action.primary:hover{background:#303a4b}.content-section,.settings-card{border:1px solid #e0e7ef;border-radius:10px;background:var(--surface);box-shadow:0 1px 3px #23334b0a}.content-section{margin:0 0 14px;padding:0;overflow:hidden}.section-heading{min-height:0;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 14px 0}.mode-picker{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px;color:#41536a;font-size:14px;font-weight:600}.select-wrap{position:relative;min-width:0;display:flex;align-items:center}.select-wrap select{width:100%;height:40px;padding:0 28px 0 11px;appearance:none;border:1px solid var(--border);border-radius:7px;background:#fff;color:#26364d;font-size:14px;cursor:pointer}.select-wrap svg{position:absolute;right:10px;pointer-events:none;color:#78889d}.mode-picker .select-wrap select{height:30px;border:0;padding-right:22px;text-align:right;color:#556980;background:transparent}.mode-picker .select-wrap svg{right:2px}.content-input{display:block;width:100%;min-height:88px;max-height:160px;padding:11px 13px;resize:vertical;border:0;border-radius:0;outline:0;background:#fff;color:#1d2a3b;font-size:15px;line-height:1.65}.content-input:focus{outline:2px solid #a8b6c8;outline-offset:-2px}.poem-select{flex:1;height:36px;min-width:0;display:flex;align-items:center;gap:8px;padding:0 10px;border:1px solid var(--border);border-radius:7px;background:#fff;text-align:left}.poem-select span{flex:1;min-width:0;overflow:hidden;color:#26364d;font-size:14px;white-space:nowrap;text-overflow:ellipsis}.text-button{height:34px;display:flex;align-items:center;gap:4px;padding:0 9px;border:0;border-radius:6px;background:#f1f4f8;color:#36475e;font-size:13px;white-space:nowrap}.text-button:hover{background:#e9edf3;color:var(--navy)}.poem-summary{padding:10px 13px 12px;border-top:1px solid #edf1f5}.poem-summary>div{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:5px}.poem-summary strong{overflow:hidden;color:#24344a;font-family:Kaiti SC,STKaiti,serif;font-size:16px;white-space:nowrap;text-overflow:ellipsis}.poem-summary>div>span{flex:0 0 auto;color:#7e8ca0;font-size:12px}.poem-summary textarea{display:block;width:100%;min-height:55px;max-height:150px;resize:vertical;padding:0;border:0;background:transparent;color:#33445c;font-family:Kaiti SC,STKaiti,serif;font-size:14px;line-height:1.65}.poem-summary textarea:focus{outline:none}.format-section{padding:0;background:transparent;border:0;box-shadow:none}.format-section>h2{margin:0 0 10px;color:#41536a;font-size:14px;font-weight:650}.field-group{margin:0 0 12px;padding:12px 14px;border:1px solid #e0e7ef;border-radius:10px;background:#fff}.grid-style-group{margin:0;padding:5px 0 8px;border:0;border-radius:0;background:transparent}.field-label{display:block;margin-bottom:8px;color:#4a5d76;font-size:13px}.radios{display:flex;align-items:center;gap:14px}.radios label{display:flex;align-items:center;gap:5px;color:#4c5f78;font-size:12px;white-space:nowrap}.radios input{width:15px;height:15px;margin:0;accent-color:var(--navy)}.segments{display:flex;gap:6px}.segments button{flex:1;height:36px;padding:0 7px;border:1px solid #e1e6ed;border-radius:7px;background:#fff;color:#566a83;font-size:13px;white-space:nowrap;transition:background-color .15s,border-color .15s,color .15s}.segments button:hover:not(.selected){border-color:#a8b5c6;background:#f1f4f8;color:var(--navy)}.segments button.selected{border-color:var(--navy);background:var(--navy);color:#fff}.segments button.selected:hover{border-color:var(--navy);background:#303a4b}.settings-card{margin:0 0 12px;padding:7px 14px}.switch-row{min-height:42px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #e4eaf1;color:#40536d;font-size:14px;font-weight:550}.switch-row:last-child{border-bottom:0}.switch{width:40px;height:23px;flex:0 0 auto;display:flex;align-items:center;justify-content:flex-start;padding:2px;border:0;border-radius:20px;background:#e3e9f0;transition:background-color .15s}.switch.on{justify-content:flex-end;background:var(--navy)}.switch span{width:19px;height:19px;display:block;border-radius:50%;background:#fff;box-shadow:0 1px 3px #26364b20}.select-row{min-height:44px;display:grid;grid-template-columns:minmax(70px,1fr) minmax(0,1.25fr);align-items:center;gap:8px;border-bottom:1px solid #e4eaf1;color:#435772;font-size:14px}.select-row:last-child{border-bottom:0}.select-row .select-wrap{width:100%}.select-row .select-wrap select{height:42px;border:0;border-radius:0;padding-left:0;padding-right:23px;background:transparent;text-align:right;color:#26364d}.select-row .select-wrap svg{right:0}.range-field{min-height:44px;display:grid;grid-template-columns:minmax(70px,1fr) minmax(70px,1.15fr) auto;align-items:center;gap:7px;border-bottom:1px solid #e4eaf1;color:#435772;font-size:14px}.range-field:last-child{border-bottom:0}.range-field input[type=range]{width:100%;height:5px;margin:0;appearance:none;border:0;border-radius:10px;background:linear-gradient(to right,var(--navy) var(--range),#e8edf3 var(--range));cursor:pointer}.range-field input[type=range]::-webkit-slider-thumb{width:19px;height:19px;appearance:none;border:2px solid #394860;border-radius:50%;background:#fff;box-shadow:0 1px 2px #17223520}.range-field input[type=range]::-moz-range-thumb{width:15px;height:15px;border:2px solid #394860;border-radius:50%;background:#fff;box-shadow:0 1px 2px #17223520}.range-field output{min-width:29px;color:#26364d;text-align:right;font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}.color-field{min-height:44px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e4eaf1;color:#435772;font-size:14px}.color-field:last-child{border-bottom:0}.color-field input[type=color]{width:28px;height:28px;padding:0;overflow:hidden;border:0;border-radius:5px;background:transparent;cursor:pointer}.settings-note{margin:8px 0 0;color:#8390a2;font-size:11px;text-align:center}.modal-backdrop{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:20px;background:#182b3d55;backdrop-filter:blur(3px)}.library-dialog{width:660px;max-width:min(720px,calc(100vw - 32px));height:720px;max-height:88vh;display:flex;flex-direction:column;padding:25px;border:1px solid #e1e7ef;border-radius:14px;background:#fff;box-shadow:0 20px 60px #10253726}.dialog-heading{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.dialog-heading>div{display:flex;align-items:center;gap:10px}.dialog-heading h2{font-size:20px}.dialog-heading svg{color:#53677f}.icon-button{width:34px;height:34px;display:flex;align-items:center;justify-content:center;border:0;border-radius:6px;background:transparent}.icon-button:hover{background:#f1f4f8}.library-dialog>p{margin:10px 0 18px;color:#8290a2;font-size:13px;flex-shrink:0}.search-field{height:44px;display:flex;align-items:center;gap:9px;padding:0 12px;border:1px solid var(--border);border-radius:7px;color:#718198;flex-shrink:0}.search-field input{flex:1;min-width:0;border:0;outline:0;font-size:14px}.library-filters{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0;flex-shrink:0}.library-filters button{min-height:36px;display:flex;align-items:center;justify-content:space-between;gap:7px;padding:0 10px;border:0;border-radius:6px;background:#f1f4f8;color:#566a83;font-size:13px}.library-filters button:hover{background:#e9edf3;color:var(--navy)}.library-filters button.selected{background:#e8edf4;color:var(--navy);font-weight:650}.library-filters button span{width:6ch;text-align:right;opacity:.7;font-size:11px;font-variant-numeric:tabular-nums}.library-sort{min-height:34px;position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;color:#8591a1;font-size:11px;flex-shrink:0}.library-sort>span:first-child{flex:1;min-width:0;height:32px;display:flex;align-items:center;line-height:1.4}.library-sort select{max-width:122px;padding:5px 7px;border:1px solid var(--border);border-radius:5px;background:#fff;color:#53677f;font-size:12px}.search-progress{min-width:50px;height:16px;display:flex;align-items:center;gap:4px;font-size:10px}.poem-list{flex:1 1 0;min-height:120px;overflow:auto;scrollbar-gutter:stable}.poem-list>button{width:100%;display:flex;align-items:center;justify-content:space-between;padding:12px 10px;border:0;border-bottom:1px solid #edf1f5;border-radius:5px;background:#fff;text-align:left}.poem-list>button:hover{background:#f1f4f8}.poem-list>button.selected{background:#edf1f6;color:var(--navy)}.poem-list>button>div{flex:1;min-width:0;padding-right:10px}.poem-list strong{font-size:15px;font-weight:600}.poem-list span{margin-left:10px;color:#8290a2;font-size:12px}.poem-list p{overflow:hidden;margin-top:6px;color:#75849a;font-family:Kaiti SC,STKaiti,serif;font-size:14px;white-space:nowrap;text-overflow:ellipsis}.library-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 12px;color:#718198;font-size:14px}.library-state small{color:#95a0af;font-size:12px}.library-state button{padding:7px 14px;border:1px solid var(--border);border-radius:6px;background:#fff}.no-results{padding:34px 0;color:#8290a2;text-align:center;font-size:13px}.library-pagination{min-height:46px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:12px;border-top:1px solid #e7ecf2;color:#74839a;font-size:12px;flex-shrink:0}.library-pagination>span{min-width:90px;font-variant-numeric:tabular-nums;white-space:nowrap}.library-pagination>div{display:flex;align-items:center;gap:8px}.library-pagination>div>span{width:8ch;text-align:center;font-variant-numeric:tabular-nums}.library-pagination button{padding:6px 9px;border:1px solid var(--border);border-radius:5px;background:#fff;color:#475a72;font-size:12px}.library-pagination button:hover:enabled{border-color:#a6b3c4;background:#f1f4f8;color:var(--navy)}.library-footer{display:flex;justify-content:space-between;gap:8px;padding-top:12px;color:#97a1af;font-size:10px;flex-shrink:0}.library-footer a{color:#71839a;text-underline-offset:3px}.library-footer a:hover{color:var(--navy);text-decoration:underline}.toast{position:fixed;z-index:30;left:50%;bottom:24px;transform:translate(-50%);display:flex;align-items:center;gap:8px;max-width:calc(100vw - 24px);padding:12px 18px;border-radius:8px;background:var(--navy);color:#fff;box-shadow:0 5px 22px #17223522;font-size:13px;white-space:nowrap}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1120px){.header-inner,.workspace{width:calc(100% - 40px)}.header-inner{gap:28px}.header nav{gap:3px}.nav-link{min-width:56px;padding:0 8px;font-size:14px}.nav-menu-trigger{width:25px;padding-right:6px}.workspace{grid-template-columns:minmax(0,1fr) 278px;gap:16px}.settings{top:88px;max-height:calc(100vh - 98px)}.action{height:42px;font-size:14px}.content-input{min-height:80px}.settings-card{padding-right:11px;padding-left:11px}.range-field{grid-template-columns:minmax(68px,1fr) minmax(58px,1.1fr) auto;gap:5px;font-size:13px}}@media(max-width:760px){.header{height:72px}.header-inner{width:calc(100% - 28px);gap:14px}.brand strong{font-size:24px}.header nav{flex:1;justify-content:space-between;gap:2px}.nav-item,.nav-link,.nav-menu-trigger{height:40px;border-radius:7px}.nav-link{min-width:0;padding:0 7px;font-size:13px}.nav-menu-trigger{width:22px;padding-right:5px}.workspace{width:100%;display:flex;flex-direction:column;gap:14px;padding:14px 14px 22px}.settings{position:static;order:0;width:100%;max-height:none;overflow:visible;padding:0}.preview{order:1;width:100%}.paper{padding:4cqw}.format-section>h2,.settings-note{display:none}.content-input{min-height:74px}.library-dialog{height:86vh;padding:18px}}@media(max-width:420px){.header-inner{width:calc(100% - 20px);gap:8px}.brand strong{font-size:21px}.nav-link{padding:0 5px;font-size:12px}.nav-menu-trigger{width:18px;padding-right:3px}.workspace{padding:10px}.settings-card{padding:4px 10px}.range-field{grid-template-columns:minmax(68px,.9fr) minmax(50px,1fr) auto}.action{height:39px;font-size:13px}.action svg{width:17px;height:17px}.paper{padding:4cqw}.library-dialog{padding:15px}.library-filters{gap:5px}.library-pagination{font-size:10px}.library-pagination button{padding:5px 7px;font-size:10px}.library-footer{font-size:9px}}@media(max-width:600px){.header{height:108px}.header-inner{width:calc(100% - 20px);height:100%;flex-wrap:wrap;align-content:space-between;gap:0;padding-top:7px}.header nav{order:3;width:100%;height:44px;flex:0 0 100%;justify-content:space-between;gap:0}.nav-item{height:38px}.nav-link{min-width:0;height:38px;padding:0 4px;font-size:12px}.nav-menu-trigger{width:16px;height:38px;padding-right:2px}.workspace{min-height:calc(100vh - 108px)}}@media print{@page{size:A4;margin:0}.paper,.paper *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}html,body,#root,.app-shell{width:210mm;margin:0;background:#fff}.header,.settings,.modal-backdrop,.toast{display:none!important}.workspace,.preview,.paper-stack{width:210mm;min-height:0;margin:0;padding:0;display:block;overflow:visible}.paper{width:210mm;height:297mm;min-height:297mm;aspect-ratio:auto;margin:0;padding:var(--page-margin-print, 9.5mm);border:0;box-shadow:none;break-after:page;page-break-after:always;overflow:hidden}.paper:last-child{break-after:auto;page-break-after:auto}.cell-row{height:var(--row-height, 10mm)}.practice-block,.empty-row{margin-bottom:var(--row-spacing, 2mm)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
