@font-face{font-family:LXGW WenKai GB;src:url(/fonts/LXGWWenKaiGB-Regular.ttf)format("truetype");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:ChillKai;src:url(/fonts/ChillKai.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap}:root{color:#2f2d2b;font-synthesis:none;--red:#b2382a;--line:#dedddd;--muted:#73706c;background:#f2f3f3;font-family:Microsoft YaHei,PingFang SC,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,select,textarea,input{font:inherit}button,a,select,input{outline-offset:3px}.app{height:100vh;overflow:hidden}.topbar{z-index:20;background:#fff;border-bottom:1px solid #dedede;align-items:center;height:60px;display:flex;position:relative}.brand{color:#292725;align-items:center;gap:12px;width:320px;padding-left:20px;text-decoration:none;display:flex}.brand strong{letter-spacing:1px;font:700 26px/1 KaiTi,STKaiti,serif}.seal{border:2px solid var(--red);width:34px;height:40px;color:var(--red);box-shadow:inset 0 0 0 2px #fff, inset 0 0 0 3px var(--red);place-items:center;font:700 21px STKaiti,serif;display:grid}nav{gap:48px;height:100%;display:flex;position:absolute;left:50%;transform:translate(-50%)}nav a{color:#252321;white-space:nowrap;place-items:center;padding:0 4px;font-size:16px;text-decoration:none;display:grid}nav a.active{border-bottom:3px solid var(--red)}.export{background:var(--red);color:#fff;cursor:pointer;border:0;border-radius:5px;align-items:center;gap:8px;margin-left:auto;margin-right:18px;padding:10px 17px;display:flex;box-shadow:0 3px 8px #b2382a25}.mobile-menu{display:none}main{grid-template-columns:320px 1fr;height:calc(100vh - 60px);display:grid}.settings{z-index:12;background:#fff;border-right:1px solid #ddd;flex-direction:column;gap:15px;padding:25px 22px 40px;display:flex;overflow-y:auto}.settings-head{justify-content:space-between;align-items:center;display:flex}.settings-head h1{margin:0 0 5px;font-family:Songti SC,SimSun,serif;font-size:20px}.settings-head button{display:none}.field-label,legend{font-size:14px;font-weight:600}.textarea-wrap{position:relative}.textarea-wrap textarea{resize:none;color:#4c4945;background:#f6f6f5;border:1px solid #d4d2d0;border-radius:5px;width:100%;height:116px;padding:11px 12px 28px;line-height:1.75}.textarea-wrap span{color:#777;font-size:12px;position:absolute;bottom:8px;right:9px}.level-tabs{border-bottom:1px solid #ddd;grid-template-columns:1fr 1fr;display:grid}.level-tabs button{cursor:pointer;background:#fff;border:0;padding:6px 0 11px}.level-tabs button.active{color:var(--red);border-bottom:2px solid var(--red);margin-bottom:-1px;font-weight:700}.setting-row,.color-row,.range-row{grid-template-columns:105px 1fr;align-items:center;font-size:14px;display:grid}.setting-row select{color:#47433f;background:#fff;border:1px solid #d5d3d0;border-radius:5px;height:40px;padding:0 12px}.settings fieldset{border:0;flex-direction:column;gap:10px;margin:0;padding:0;display:flex}.grid-options{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.grid-options button{color:#484541;cursor:pointer;background:#fff;border:1px solid #ddd;border-radius:5px;flex-direction:column;justify-content:center;align-items:center;gap:8px;height:91px;display:flex;position:relative}.grid-options button.selected{border:1.5px solid var(--red);color:var(--red)}.grid-options button.selected:after{content:"✓";background:var(--red);color:#fff;border-radius:50%;width:16px;height:16px;font-size:11px;position:absolute;top:4px;right:4px}.mini-grid{border:1px solid;width:37px;height:37px;display:block;position:relative}.mini-grid:before,.mini-grid:after{content:"";opacity:.45;background:currentColor;position:absolute}.mini-grid:before{width:1px;height:100%;left:50%}.mini-grid:after{width:100%;height:1px;top:50%}.mini-grid.mi i,.mini-grid.mi b{opacity:.3;background:currentColor;width:44px;height:1px;position:absolute;top:50%;left:-4px;transform:rotate(45deg)}.mini-grid.mi b{transform:rotate(-45deg)}.mini-grid.hui:before,.mini-grid.hui:after{display:none}.mini-grid.hui i{border:1px solid;position:absolute;inset:8px}.segments{grid-template-columns:repeat(3,1fr);display:grid}.segments button{cursor:pointer;background:#fff;border:1px solid #ddd;height:37px;margin-left:-1px}.segments button:first-child{border-radius:5px 0 0 5px;margin-left:0}.segments button:last-child{border-radius:0 5px 5px 0}.segments button.selected{color:var(--red);border-color:var(--red);z-index:1}.color-row input{background:#fff;border:1px solid #aaa;border-radius:3px;justify-self:end;width:34px;height:34px;padding:2px}.range-row input{accent-color:var(--red);width:100%}.range-row output{text-align:right;font-size:13px}.paper-row{margin-top:2px}.generate{color:#fff;background:var(--red);letter-spacing:2px;cursor:pointer;border:0;border-radius:5px;min-height:56px;margin-top:auto;font-size:15px;font-weight:700;box-shadow:0 4px 10px #b2382a20}.workspace{background:radial-gradient(circle at 55% 35%,#fff 0,#f6f7f7 38%,#eff0f0 100%);justify-content:center;align-items:flex-start;padding:34px 30px 104px;display:flex;position:relative;overflow:auto}.paper-scale{transform-origin:top;flex-direction:column;gap:24px;padding-bottom:24px;transition:transform .2s;display:flex}.paper{background:#fff;flex-direction:column;flex:none;width:635px;height:838px;padding:48px 42px 32px;display:flex;box-shadow:0 4px 15px #0002}.paper h2{letter-spacing:7px;text-align:center;color:#262320;margin:0 0 20px;font:400 26px KaiTi,STKaiti,serif}.title-rule{border-top:1px solid #c65649;height:10px;position:relative}.title-rule i{background:#fff;border:1px solid #c65649;width:7px;height:7px;position:absolute;top:-4px;left:50%;transform:rotate(45deg)}.copy-grid{grid-template-columns:repeat(var(--cols),1fr);gap:16px 0;margin-top:14px;display:grid}.grid-cell{aspect-ratio:1;border:1px solid #d98278;position:relative}.grid-cell>span{pointer-events:none;position:absolute}.hline{border-top:1px dashed #ecc4bf;top:50%;left:0;right:0}.vline{border-left:1px dashed #ecc4bf;top:0;bottom:0;left:50%}.diag{transform-origin:50%;border-top:1px dashed #ecc4bf;width:141%;top:50%;left:0}.diag.one{transform:translate(-15%)rotate(45deg)}.diag.two{transform:translate(-15%)rotate(-45deg)}.inner-box{border:1px solid #ecc4bf;inset:24%}.grid-cell b{place-items:center;font-size:31px;font-weight:400;line-height:1;display:grid;position:absolute;inset:0}.paper footer{color:#555;letter-spacing:2px;grid-template-columns:1fr auto 1fr;align-items:center;gap:13px;margin-top:auto;font:13px KaiTi,STKaiti,serif;display:grid}.paper footer span{background:#df9188;height:1px}.zoom-toolbar{z-index:5;background:#fff;border:1px solid #ddd;border-radius:7px;align-items:center;gap:13px;height:52px;padding:0 15px;display:flex;position:fixed;bottom:25px;left:calc(50% + 160px);transform:translate(-50%);box-shadow:0 4px 13px #0002}.zoom-toolbar button{cursor:pointer;color:#333;background:#fff;border:1px solid #d0d0d0;border-radius:50%;place-items:center;width:28px;height:28px;padding:4px;display:grid}.zoom-toolbar>i{background:#ddd;width:1px;height:26px}.zoom-toolbar span{text-align:center;min-width:46px}.scrim{display:none}@media (width<=900px){.brand{width:auto;padding-left:10px}.brand strong{font-size:23px}.seal{width:31px;height:36px}.topbar nav{display:none}.mobile-menu{background:#fff;border:0;place-items:center;margin-left:8px;display:grid}.export{margin-right:10px;padding:9px 12px}main{display:block}.settings{width:min(320px,88vw);transition:transform .25s;position:fixed;top:60px;bottom:0;left:0;transform:translate(-105%);box-shadow:6px 0 24px #0002}.settings.open{transform:none}.settings-head button{background:#fff;border:0;display:grid}.scrim{z-index:10;background:#0005;border:0;display:block;position:fixed;inset:60px 0 0}.workspace{justify-content:flex-start;height:calc(100vh - 60px);padding-left:22px;padding-right:22px}.paper{width:560px;height:794px;padding:43px 37px}.zoom-toolbar{left:50%}}@media print{.topbar,.settings,.zoom-toolbar{display:none!important}.app,main,.workspace{height:auto;overflow:visible}.workspace{background:#fff;padding:0;display:block}.paper-scale{padding:0;display:block;transform:none!important}.paper{box-shadow:none;page-break-after:always;width:210mm;height:297mm;margin:0 auto;padding:16mm 14mm 12mm}.paper:last-child{page-break-after:auto}.grid-cell b{font-size:10mm}@page{size:A4 portrait;margin:0}}.mini-grid.line{border-left:0;border-right:0}.mini-grid.line:before{display:none}.mini-grid.line:after{top:auto;bottom:8px}.line-practice{flex-direction:column;margin-top:14px;display:flex}.writing-line{border-bottom:1px solid #d98278;height:67px;position:relative}.writing-line:before{content:"";border-top:1px dashed #f1d2ce;position:absolute;bottom:31px;left:0;right:0}.writing-line span{letter-spacing:7px;white-space:pre-wrap;font-size:31px;line-height:1;position:absolute;bottom:-3px;left:8px}.line-practice.words .writing-line span{word-spacing:0}.line-practice.paragraph .writing-line span{letter-spacing:3px}.grid-options{grid-template-columns:repeat(3,1fr);gap:12px}.grid-options.advanced{grid-template-columns:1fr}.grid-options.advanced button{flex-direction:row;gap:16px;height:72px}.range-row{grid-template-columns:82px 1fr 48px;gap:8px}.copy-grid{place-content:start center;gap:0;margin-top:14px;overflow:hidden}.grid-cell{aspect-ratio:auto;flex:none}.line-practice{margin-top:14px}.writing-line{border-bottom-color:rgb(217 130 120/var(--line-opacity))}.writing-line:before{opacity:var(--line-opacity)}.writing-line span{bottom:-2px}.settings fieldset{min-width:0}.grid-options.basic{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:100%;display:grid}.grid-options.basic button{gap:6px;width:100%;min-width:0;height:82px;padding:8px 4px;overflow:hidden}.grid-options.basic button span:last-child{white-space:nowrap;font-size:13px}.grid-options.advanced{width:100%;display:block}.grid-options.advanced button{border-radius:5px;justify-content:flex-start;width:100%;height:64px;padding:10px 18px}.grid-options.advanced .mini-grid{flex:none;width:46px;height:30px}.grid-options button.selected:after{content:"✓"}.line-practice{display:block;overflow:hidden}.practice-pair{display:contents}.writing-line{border-bottom:1px solid rgb(217 130 120/var(--line-opacity));background:0 0;position:relative}.writing-line:before{content:"";left:0;right:0;bottom:var(--guide-position);border-top:1px dashed rgb(241 210 206/var(--line-opacity));opacity:1;position:absolute}.writing-line span{white-space:nowrap;line-height:1;position:absolute;bottom:-1px;left:8px;right:2px;overflow:hidden}.line-font-size{grid-template-columns:82px 1fr;gap:8px}.line-font-size>span{font-size:14px}.line-font-size .segments button{height:34px}.brand{cursor:pointer;text-align:left;background:#fff;border:0}nav button{color:#252321;white-space:nowrap;cursor:pointer;background:#fff;border:0;height:100%;padding:0 4px;font-size:16px}nav button.active{border-bottom:3px solid var(--red)}.saved-page{background:#f5f6f6;height:calc(100vh - 60px);padding:52px max(30px,50vw - 490px) 80px;display:block;overflow:auto}.saved-heading{justify-content:space-between;align-items:flex-end;margin-bottom:28px;display:flex}.saved-heading h1{margin:0 0 8px;font:600 32px Songti SC,SimSun,serif}.saved-heading p{color:#777;margin:0}.saved-heading button,.saved-empty button{background:var(--red);color:#fff;cursor:pointer;border:0;border-radius:5px;padding:11px 20px}.saved-list{gap:12px;display:grid}.saved-item{background:#fff;border:1px solid #e1e0de;border-radius:7px;grid-template-columns:126px 1fr auto;align-items:center;gap:22px;padding:16px 18px;display:grid}.saved-preview{color:#a64032;background:repeating-linear-gradient(#fff 0 28px,#efc3be 29px);border:1px solid #dd9b93;height:88px;padding:9px;overflow:hidden}.saved-preview span{margin-bottom:8px;font-size:11px;display:block}.saved-preview b{font:400 15px/1.8 KaiTi,STKaiti,serif}.saved-info h2{margin:0 0 8px;font:500 18px Songti SC,SimSun,serif}.saved-info p{color:#666;margin:0 0 8px;font-size:13px}.saved-info time{color:#999;font-size:12px}.delete-copybook{color:#8c3027;cursor:pointer;background:#fff;border:1px solid #d9d7d4;border-radius:5px;padding:8px 14px}.delete-copybook:hover{background:#fff7f5;border-color:#b2382a}.saved-actions{align-items:center;gap:8px;display:flex}.edit-copybook{border:1px solid var(--red);background:var(--red);color:#fff;cursor:pointer;border-radius:5px;padding:8px 14px}.saved-empty{text-align:center;background:#fff;border:1px solid #e1e0de;padding:80px 20px}.saved-empty strong{font:500 21px Songti SC,SimSun,serif}.saved-empty p{color:#888;margin:12px 0 24px}@media (width<=700px){.saved-page{padding:28px 16px 60px}.saved-heading{align-items:flex-start}.saved-heading h1{font-size:26px}.saved-item{grid-template-columns:84px 1fr;gap:14px}.saved-preview{height:76px}.saved-actions{grid-column:2;justify-self:start}.saved-heading p{display:none}}.paper{width:630px;height:891px}.header-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.export-actions{gap:8px;display:flex}.export-actions .export{margin:0}.export.secondary{color:var(--red);box-shadow:none;background:#fff;border:1px solid #c45d51}.export-toast{z-index:50;color:#fff;background:#2f2d2b;border-radius:5px;padding:11px 16px;font-size:13px;position:fixed;bottom:22px;right:22px;box-shadow:0 6px 18px #0003}@media (width<=700px){.export-actions .export{padding:8px}.export-actions .export svg{display:none}}.blank-line{background:0 0}.grid-options.basic .mini-grid{flex:0 0 37px;overflow:hidden}.grid-options.basic .mini-grid:before{height:auto;top:0;bottom:0;left:50%;transform:translate(-.5px)}.grid-options.basic .mini-grid:after{width:auto;top:50%;left:0;right:0;transform:translateY(-.5px)}.grid-options.basic .mini-grid.mi i,.grid-options.basic .mini-grid.mi b{width:52px;left:-8px}.grid-options.basic .mini-grid.hui i{inset:8px}.paper{padding:28px 32px 16px}.paper h2{margin-bottom:12px;font-size:24px}.title-rule{height:6px}.copy-grid,.line-practice{margin-top:10px}.paper footer{gap:10px;min-height:14px;font-size:12px}.export-stage{z-index:-1;pointer-events:none;background:#fff;width:630px;position:fixed;top:0;left:-10000px}.export-stage .paper{width:630px!important;height:891px!important;box-shadow:none!important;margin:0!important;padding:28px 32px 16px!important;transform:none!important}.export-stage .paper h2{white-space:nowrap}.export-stage .paper-scale{transform:none!important}.grid-options.advanced{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.grid-options.advanced button{flex-direction:column;justify-content:center;gap:6px;width:100%;height:82px;padding:8px 4px}.grid-options.advanced button>span:last-child{white-space:nowrap;font-size:13px}.grid-options.advanced .mini-grid{border:1px solid;width:44px;height:32px;overflow:hidden}.grid-options.advanced .mini-grid.line:before{display:none}.grid-options.advanced .mini-grid.line:after{width:auto;inset:50% 0 auto;transform:translateY(-.5px)}.grid-options.advanced .mini-grid.plain:before{display:none}.grid-options.advanced .mini-grid.plain:after{content:"";opacity:.55;background:currentColor;height:1px;position:absolute;bottom:6px;left:0;right:0}.grid-options.advanced .mini-grid.composition{opacity:.72;background:0 0;width:32px;height:32px}.grid-options.advanced .mini-grid.composition:before,.grid-options.advanced .mini-grid.composition:after{display:none}.composition-summary{grid-template-columns:82px 1fr;align-items:center;gap:8px;font-size:14px;display:grid}.composition-summary strong{text-align:right;color:#605c57;font-size:13px;font-weight:500}.composition-grid{border-left:1px solid rgb(217 130 120/var(--line-opacity));border-top:1px solid rgb(217 130 120/var(--line-opacity));place-content:start center;align-self:center;width:max-content;margin-top:10px}.composition-grid .grid-cell{border:0;border-right:1px solid rgb(217 130 120/var(--line-opacity));border-bottom:1px solid rgb(217 130 120/var(--line-opacity))}.grid-cell.composition .hline,.grid-cell.composition .vline,.writing-line.no-guide:before{display:none}html,body,#root{height:100%}.app{height:100dvh}main{height:calc(100dvh - 60px)}.workspace{height:100%;min-height:0;padding:24px 30px 0}.settings{padding-bottom:0}.saved-page{height:calc(100dvh - 60px);padding-top:40px;padding-bottom:0}@media (width<=900px){.workspace{height:calc(100dvh - 60px);padding-bottom:0}}.paper footer{margin-top:8px}.mobile-guide{color:#4d4945;cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #d7d3cf;border-radius:5px;padding:8px 10px;display:none}.account-button{color:#4d4945;cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #d7d3cf;border-radius:5px;margin-right:18px;padding:9px 14px}.account-button:hover{border-color:var(--red);color:var(--red)}.auth-overlay{z-index:100;background:#211d1a80;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.auth-dialog{background:#fff;border-radius:10px;width:min(420px,100%);max-height:calc(100vh - 40px);padding:30px 38px 26px;position:relative;overflow-y:auto;box-shadow:0 20px 70px #0004}.auth-close{cursor:pointer;color:#777;background:0 0;border:0;position:absolute;top:14px;right:14px}.auth-seal{border:2px solid var(--red);width:40px;height:46px;color:var(--red);box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px var(--red);place-items:center;margin:0 auto 16px;font:700 23px STKaiti,serif;display:grid}.auth-dialog h2{text-align:center;margin:0 0 8px;font:600 26px Songti SC,SimSun,serif}.auth-dialog>p{text-align:center;color:#777;margin:0 0 24px;font-size:14px}.auth-dialog form{gap:9px;display:grid}.auth-dialog label{margin-top:4px;font-size:14px;font-weight:600}.auth-dialog input{border:1px solid #d4d0cc;border-radius:5px;height:44px;padding:0 12px}.auth-dialog input:focus{border-color:var(--red);outline:2px solid #b2382a20}.auth-code-row{grid-template-columns:minmax(0,1fr) 126px;gap:8px;display:grid}.auth-code-button{border:1px solid var(--red);height:44px;color:var(--red);cursor:pointer;white-space:nowrap;background:#fff;border-radius:5px}.auth-code-button:disabled{color:#999;cursor:not-allowed;border-color:#d4d0cc}.auth-submit{background:var(--red);color:#fff;cursor:pointer;border:0;border-radius:5px;height:46px;margin-top:10px;font-weight:700}.auth-submit:disabled{opacity:.6;cursor:wait}.auth-remember{color:#666;cursor:pointer;justify-self:start;align-items:center;display:flex;gap:7px!important;margin:1px 0 0!important;font-size:13px!important;font-weight:400!important}.auth-remember input{width:15px;height:15px;accent-color:var(--red);cursor:pointer;padding:0}.auth-links{justify-content:center;gap:16px;margin-top:14px;display:flex}.auth-links button{color:#a13b31;cursor:pointer;background:0 0;border:0;padding:2px 3px;font-size:12px;line-height:1.4}.auth-links button:hover{color:var(--red);text-decoration:underline}.auth-message{color:#9b3025;background:#fff3f1;border:1px solid #f0cbc6;border-radius:4px;padding:8px 10px;font-size:13px;line-height:1.5}@media (width<=900px){.mobile-guide{display:block}}@media (width<=700px){.mobile-guide{padding:8px;font-size:13px}.account-button{margin-right:8px;padding:8px 10px}.auth-dialog{padding:26px 22px 22px}.auth-code-row{grid-template-columns:minmax(0,1fr) 116px}}.guide-page{background:#f4f3f1;height:calc(100dvh - 60px);padding:38px 24px 60px;display:block;overflow:auto}.guide-content{background:#fbfaf8;border:1px solid #e2ddd8;border-radius:10px;width:min(860px,100%);margin:0 auto;padding:32px 38px 30px;box-shadow:0 8px 30px #3b2b2110}.guide-heading{align-items:center;gap:14px;display:flex}.guide-seal{border:2px solid var(--red);width:42px;height:48px;color:var(--red);box-shadow:inset 0 0 0 2px #fbfaf8,inset 0 0 0 3px var(--red);place-items:center;font:700 24px STKaiti,serif;display:grid}.guide-heading p{color:#a05b51;letter-spacing:2px;margin:0 0 3px;font-size:10px}.guide-heading h2{margin:0;font:600 27px Songti SC,SimSun,serif}.guide-intro{color:#777;margin:15px 0 20px;font-size:14px}.guide-fonts{background:#f4ebe8;border-radius:7px;margin-bottom:18px;padding:17px}.guide-section-title{align-items:baseline;gap:10px;margin-bottom:12px;display:flex}.guide-section-title>span{color:var(--red);letter-spacing:1px;font-size:11px;font-weight:700}.guide-section-title h3{margin:0;font-size:16px}.guide-font-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;display:grid}.guide-font-list article{background:#fff;border:1px solid #e3d8d3;border-radius:5px;padding:13px 13px 34px;position:relative}.guide-font-list strong{color:#352f2b;margin-bottom:5px;font-size:22px;font-weight:400;display:block}.guide-font-list p{color:#706b66;margin:0;font-size:12px;line-height:1.6}.guide-font-list article>span{color:#a65c51;font-size:11px;position:absolute;bottom:10px;left:13px}.guide-steps{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.guide-steps article{background:#fff;border:1px solid #e5dfda;border-radius:6px;grid-template-columns:38px 1fr;gap:10px;padding:14px;display:grid}.guide-steps article>span{color:#bd766b;font:600 17px Georgia,serif}.guide-steps h3{margin:0 0 5px;font-size:15px}.guide-steps p{color:#706b66;margin:0;font-size:13px;line-height:1.65}.guide-tip{border-left:3px solid var(--red);background:#f4ebe8;gap:12px;margin-top:12px;padding:11px 14px;font-size:13px;line-height:1.6;display:flex}.guide-tip strong{color:var(--red);white-space:nowrap}.guide-tip span{color:#625d58}.guide-done{background:var(--red);color:#fff;cursor:pointer;border:0;border-radius:5px;margin:18px auto 0;padding:11px 28px;font-weight:700;display:block}@media (width<=700px){.guide-page{padding:18px 12px 36px}.guide-content{padding:24px 18px 22px}.guide-font-list{grid-template-columns:1fr}.guide-font-list article{padding-bottom:13px}.guide-font-list article>span{margin-top:7px;display:inline-block;position:static}.guide-steps{grid-template-columns:1fr}.guide-heading h2{font-size:24px}.guide-tip{display:block}.guide-tip strong{margin-bottom:3px;display:block}}
