:root{--ink:#19343f;--ink-soft:#46616a;--muted:#71838a;--paper:#f5f4ef;--cream:#fbfaf7;--line:#dce3e2;--teal:#0d6670;--teal-dark:#0a4c55;--mint:#deeeea;--gold:#d3ab6a;--shadow:0 16px 42px rgba(31,55,59,.065);font-synthesis:none}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Noto Sans CJK SC","Microsoft YaHei",sans-serif;font-size:14px;line-height:1.65}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.55;transform:none!important}
button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #64b6b2;outline-offset:2px}
button,select,.unit-btn,.lesson-option{transition:background .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease,transform .2s ease}
button:active:not(:disabled){transform:scale(.975)}
.app-shell{min-height:100vh;display:block}
.sidebar{background:#173c49;color:#f4f5f0;padding:26px 19px 20px;position:relative}
.brand{display:flex;align-items:center;gap:12px}
.brand-mark{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#edf7f3;color:#18444a;border-radius:13px;font-family:"Songti SC","Noto Serif CJK SC",serif;font-weight:700;letter-spacing:-.05em;font-size:14px;white-space:nowrap}
.brand-mark span{font-size:11px;margin:0 1px;color:var(--teal)}
.brand-kicker{font-size:10px;letter-spacing:.16em;color:#a5c7c6;margin:0 0 1px}
.brand strong{font-size:16px;font-weight:650;white-space:nowrap;letter-spacing:.02em}
.side-intro{margin-top:28px;display:flex;gap:6px 10px;align-items:center;flex-wrap:wrap}
.side-intro p{margin:0;color:#edf6f3;font-size:12px}
.small-label{display:block;font-size:10px;letter-spacing:.12em;color:#9eb8bb;text-transform:uppercase}
.side-intro .small-label:last-child{flex-basis:100%;margin-top:14px}
.unit-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}
.unit-btn{width:100%;text-align:left;border:1px solid rgba(255,255,255,.12);border-radius:11px;padding:10px 11px;background:rgba(255,255,255,.04);color:#dcebe9;display:flex;flex-direction:column;gap:2px;min-height:67px}
.unit-btn:hover{background:rgba(255,255,255,.1);transform:translateY(-2px)}
.unit-btn.active{background:#e6f2ed;color:#183e44;border-color:#e6f2ed;box-shadow:0 6px 16px rgba(0,0,0,.12)}
.unit-btn span{font-size:11px;opacity:.75}
.unit-btn strong{font-size:12px;line-height:1.35;font-weight:650}
.sidebar-foot{display:none;color:#a6c4c5;font-size:11px;align-items:center;gap:8px}.dot{width:6px;height:6px;border-radius:50%;background:#8cc1ad}
.main-area{min-width:0}
.topbar{min-height:64px;padding:14px 20px;background:rgba(251,250,247,.88);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:16px;backdrop-filter:blur(12px)}
.breadcrumbs{font-size:12px;color:var(--muted)}.breadcrumbs span{margin:0 8px;color:#bdc8c7}.breadcrumbs strong{font-weight:600;color:var(--ink)}
.topbar-right{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.topbar-tag,.status-chip{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;font-size:10px;letter-spacing:.02em;white-space:nowrap}.topbar-tag{background:#edf0ed;color:#60756f}.status-chip{background:#f4ead9;color:#8d642e}.status-chip.ready{background:#dcefe8;color:#126759}
.content-wrap{padding:22px 18px 60px;max-width:1460px;margin:auto}
.hero{min-height:218px;border-radius:19px;background:linear-gradient(120deg,#103b48 0%,#185562 65%,#2a6c6d 100%);color:#f7f7f0;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;padding:26px 28px;box-shadow:0 15px 34px rgba(9,49,61,.12)}
.hero:before{content:"";position:absolute;right:-8%;top:-48%;width:50%;height:180%;border:1px solid rgba(255,255,255,.12);border-radius:50%;transform:rotate(22deg)}
.hero:after{content:"";position:absolute;right:5%;bottom:-110%;width:47%;height:160%;border:1px solid rgba(255,255,255,.1);border-radius:50%;transform:rotate(-19deg)}
.hero-copy{position:relative;z-index:1;max-width:650px}
.eyebrow,.card-index{font-size:10px;letter-spacing:.18em;font-weight:700}.hero .eyebrow{color:#b8dfd3;margin:0 0 12px}
.hero h1{font-family:"Songti SC","Noto Serif CJK SC",serif;font-weight:650;font-size:clamp(29px,3.4vw,53px);letter-spacing:-.035em;line-height:1.23;margin:0 0 15px}.hero h1 em{font-style:normal;color:#c2e2d3}
.hero-lead{max-width:58ch;margin:0;color:#d6e6e3;font-size:12px;line-height:1.8}
.hero-symbol{position:relative;z-index:1;align-self:flex-end;display:flex;align-items:baseline;font-family:Georgia,serif;font-size:clamp(52px,7vw,105px);font-weight:500;letter-spacing:-.08em;color:rgba(234,248,240,.16);white-space:nowrap;line-height:1}.hero-symbol i{font-size:.55em;font-style:normal;padding:0 .08em}
.method{margin-top:15px;display:grid;grid-template-columns:1fr;gap:9px}
.method-item{display:flex;align-items:center;gap:16px;background:var(--cream);border:1px solid var(--line);border-radius:13px;padding:14px 16px;min-width:0}
.method-num{font-family:Georgia,serif;font-size:35px;line-height:1;color:var(--teal);min-width:37px}
.method-item strong{font-size:13px}.method-item p{font-size:11px;color:var(--muted);margin:2px 0 0;line-height:1.5}
.unit-header{margin:28px 0 16px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap}.unit-header .eyebrow{color:var(--teal);margin:0 0 5px}.unit-header h2{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(24px,2.3vw,36px);margin:0 0 7px;line-height:1.3}.unit-header p:last-child{max-width:76ch;margin:0;font-size:12px;color:var(--ink-soft)}
.unit-badge{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.unit-badge span{border:1px solid #c8ded9;border-radius:999px;background:#e9f2ed;padding:3px 10px;color:#296958;font-size:10px}.unit-badge small{font-size:10px;color:var(--muted)}
.workspace-grid{display:grid;grid-template-columns:1fr;gap:16px;align-items:start}
.config-card,.result-card{background:var(--cream);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}
.config-card{padding:22px}
.card-index{color:var(--teal)}.card-head h2,.result-head h2{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:22px;margin:5px 0 4px;line-height:1.25}.card-head p,.result-head p{color:var(--muted);font-size:11px;margin:0;line-height:1.6}
.form-stack{display:flex;flex-direction:column;gap:17px;margin-top:21px}.form-row{display:grid;gap:12px}.two-col{grid-template-columns:1fr 1fr}
label>span,fieldset legend{display:block;font-size:11px;font-weight:650;color:var(--ink);margin-bottom:6px}.lesson-fieldset{padding:0;margin:0;border:0;min-width:0}.lesson-fieldset legend{padding:0}.lesson-fieldset small,.issue-label small{font-size:10px;font-weight:400;color:var(--muted)}
select,textarea,.edit-fields input,.edit-fields textarea{width:100%;border:1px solid #d6dfdc;border-radius:9px;background:#fff;color:var(--ink);padding:10px 11px;outline:none}.form-stack select{appearance:none;background-image:url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"%3E%3Cpath d="m2 4 4 4 4-4" fill="none" stroke="%235b7477" stroke-width="1.4"/%3E%3C/svg%3E');background-position:right 10px center;background-repeat:no-repeat;padding-right:25px}.form-stack select:hover,.form-stack textarea:hover{border-color:#94b9b4}.form-stack textarea{resize:vertical;min-height:92px;line-height:1.55}.form-stack textarea::placeholder{color:#a6b3b2}
.lesson-options{display:grid;grid-template-columns:1fr 1fr;gap:7px}.lesson-option{display:flex;align-items:center;gap:7px;background:#f4f7f3;border:1px solid #e1e9e4;border-radius:8px;padding:8px 9px;cursor:pointer;font-size:11px;color:#405d60;line-height:1.35}.lesson-option:hover{border-color:#77aaa3;background:#ecf6f1}.lesson-option:has(input:checked){background:#e1f1e9;border-color:#72aa98;color:#195446}.lesson-option input{margin:0;accent-color:var(--teal);width:14px;height:14px;flex:0 0 auto}.field-hint{font-size:10px;color:#819390;margin:5px 0 0;line-height:1.5}
.config-actions{display:grid;grid-template-columns:1fr;gap:8px}.btn{border-radius:9px;padding:10px 13px;font-size:11px;font-weight:650;border:1px solid transparent;display:inline-flex;justify-content:center;align-items:center;gap:6px;min-height:38px}.btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 7px 15px rgba(20,70,73,.12)}.btn-primary{background:var(--teal);color:#fff}.btn-primary:hover:not(:disabled){background:var(--teal-dark)}.btn-secondary{background:#eef3f0;color:#1d5a5b;border-color:#c8ddd5}.btn-secondary:hover:not(:disabled){background:#e2efea}.btn-quiet{background:#fff;border-color:#d4e1dc;color:#275b61}.btn-quiet:hover:not(:disabled){background:#edf6f2}.sparkle{font-size:14px}.action-hint{margin-top:-10px}
.result-head{padding:22px 23px 18px;display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.result-head .btn{white-space:nowrap}.tabs{display:flex;gap:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:0 19px;overflow-x:auto}.tab{border:0;border-bottom:2px solid transparent;background:transparent;padding:12px 14px;color:var(--muted);font-size:11px;font-weight:650;white-space:nowrap}.tab:hover:not(:disabled){background:#f1f6f3;color:var(--ink)}.tab.active{color:var(--teal);border-bottom-color:var(--teal)}.tab:disabled{cursor:default;opacity:.55}
.result-content{padding:20px 22px;min-height:360px}.result-content h3{font-size:15px;margin:0 0 4px}.result-content p{margin:0}.direction-stack,.case-stack,.sheet-stack{display:flex;flex-direction:column;gap:12px}.direction-card{border:1px solid var(--line);border-radius:11px;padding:15px 16px;background:#fff;transition:transform .2s,box-shadow .2s}.direction-card:hover{transform:translateY(-2px);box-shadow:0 7px 17px rgba(30,69,72,.07)}.direction-top{display:flex;gap:10px;align-items:flex-start}.direction-nb{border-radius:6px;padding:3px 7px;background:#e3f1e9;color:#0b6a61;font-family:Georgia,serif;font-size:12px;flex:0 0 auto}.direction-top h3{line-height:1.4}.direction-card .focus{font-size:11px;color:var(--teal);font-weight:650;margin:3px 0 9px}.direction-card p{font-size:11px;color:var(--ink-soft);line-height:1.7}.direction-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}.direction-meta span{font-size:10px;color:#57736e;background:#f0f6f2;padding:3px 7px;border-radius:5px}
.mini-flow{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:14px}.mini-flow span{font-size:10px;background:#eef4f0;color:#38645e;border-radius:5px;padding:4px 7px}.mini-flow i{font-style:normal;color:#8ba7a0;margin:4px 1px}
.case-card{border:1px solid var(--line);border-radius:12px;background:#fff;padding:18px}.case-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:12px}.case-top small{color:var(--muted);font-size:10px;white-space:nowrap}.case-tag{display:inline-block;font-size:10px;color:var(--teal);font-weight:700;letter-spacing:.06em;margin-bottom:3px}.case-item{margin:10px 0}.case-item strong{font-size:10px;color:var(--teal);display:block;margin-bottom:2px}.case-item p{color:var(--ink-soft);font-size:11px;line-height:1.75}.case-item em{font-style:normal;color:#6a817d}
.sheet-preview{max-width:520px;margin:auto;background:#fff;border:1px solid #e1e5e1;box-shadow:0 9px 22px rgba(31,60,62,.08);min-height:600px;padding:28px 30px}.sheet-kicker{text-align:right;color:#738783;font-size:10px}.sheet-preview h3{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:21px;text-align:center;margin:10px 0 19px}.sheet-section{margin-bottom:13px}.sheet-section strong{display:block;font-size:10px;letter-spacing:.04em;color:var(--teal);margin-bottom:3px}.sheet-section p{font-size:11px;color:var(--ink-soft);line-height:1.75}.sheet-lines{display:grid;gap:18px;margin:23px 0}.sheet-lines span{display:block;border-bottom:1px solid #bcc9c8;height:1px}.sheet-check{border-top:1px solid #bfd5cd;padding-top:10px;color:var(--teal);font-size:11px}.sheet-check strong{display:block}.sheet-check p{margin-top:2px!important}.sheet-footer{color:var(--muted);font-size:10px;margin-top:18px}
.source-strip{display:flex;align-items:flex-start;gap:12px;margin:17px 2px 0;padding-top:14px;border-top:1px solid #dbe4de}.source-strip span{flex:0 0 auto;font-size:10px;color:var(--teal);font-weight:700}.source-strip p{font-size:10px;color:var(--muted);line-height:1.7;margin:0}.source-strip a{color:#477b78;text-decoration:underline;text-underline-offset:2px}.source-strip a:hover{color:#145e5f}
.export-bar{padding:16px 22px 20px;border-top:1px solid var(--line);background:#f5f8f4;display:flex;flex-direction:column;gap:12px}.export-bar>div:first-child{display:flex;flex-direction:column}.export-bar strong{font-size:11px}.export-bar span{font-size:10px;color:var(--muted)}.export-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.btn-download{background:#fff;color:#285d60;border-color:#d3e1dc;padding:7px 8px;min-height:34px;font-size:10px}.btn-download:hover:not(:disabled){background:#e8f3ee}
.loading-stack{display:grid;gap:10px}.loading-card{height:90px;border-radius:10px;background:linear-gradient(90deg,#eef3ef 25%,#f8faf7 50%,#eef3ef 75%);background-size:200% 100%;animation:shimmer 1.3s infinite}.loading-card:nth-child(2){height:135px}.loading-copy{font-size:11px;color:var(--muted)}.loading-time{font-size:10px;color:var(--muted)}.loading-progress{height:5px;border-radius:99px;background:#e2ece6;overflow:hidden}.loading-progress span{display:block;width:100%;height:100%;background:#3c9184;transform:scaleX(0);transform-origin:left;animation:prepare-pack 20s linear forwards}@keyframes prepare-pack{to{transform:scaleX(1)}}@keyframes shimmer{to{background-position:-200% 0}}
.empty-state{border:1px dashed #c9d9d3;border-radius:11px;padding:30px;text-align:center;color:var(--muted);font-size:12px}
.edit-dialog{width:min(850px,calc(100vw - 24px));max-height:min(88vh,960px);padding:0;border:1px solid #cdded8;border-radius:16px;box-shadow:0 20px 70px rgba(8,34,39,.23);background:#fbfaf7;color:var(--ink)}.edit-dialog::backdrop{background:rgba(12,35,41,.57);backdrop-filter:blur(3px)}.edit-dialog form{display:flex;flex-direction:column;max-height:min(88vh,960px)}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding:21px 23px;border-bottom:1px solid var(--line)}.dialog-head h2{font-family:"Songti SC",serif;font-size:24px;margin:2px 0}.dialog-head p{font-size:11px;color:var(--muted);margin:0}.icon-btn{width:31px;height:31px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font-size:24px;line-height:1}.icon-btn:hover{background:#e8f2ed}.edit-fields{overflow-y:auto;padding:16px 23px 24px}.edit-direction{border:1px solid var(--line);background:#fff;border-radius:11px;padding:18px;margin-bottom:15px}.edit-direction h3{margin:0 0 12px;font-size:14px}.edit-grid{display:grid;grid-template-columns:1fr;gap:11px}.edit-fields label{display:block}.edit-fields label span{font-size:10px;color:#4c666b;margin-bottom:4px}.edit-fields input,.edit-fields textarea{padding:8px 10px;font-size:11px;line-height:1.5}.edit-fields textarea{resize:vertical;min-height:70px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;padding:14px 23px;border-top:1px solid var(--line)}
.toast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,30px);background:#183f48;color:#fff;border-radius:9px;padding:10px 15px;font-size:11px;box-shadow:0 10px 25px rgba(8,38,43,.22);opacity:0;pointer-events:none;z-index:100;transition:opacity .2s,transform .2s;max-width:min(92vw,500px);text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(min-width:700px){.method{grid-template-columns:repeat(3,minmax(0,1fr))}.hero{padding:34px 40px}.content-wrap{padding:30px 31px 70px}.config-actions{grid-template-columns:1fr 1fr}.export-actions{grid-template-columns:repeat(4,minmax(0,1fr))}.edit-grid{grid-template-columns:1fr 1fr}}
@media(min-width:1100px){.app-shell{display:grid;grid-template-columns:226px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;padding:29px 17px 21px;display:flex;flex-direction:column}.side-intro{display:block;margin-top:46px}.side-intro p{margin:6px 0 28px}.side-intro .small-label:last-child{margin:0}.unit-nav{grid-template-columns:1fr;gap:7px;margin-top:12px}.unit-btn{min-height:58px;padding:8px 11px}.unit-btn strong{font-size:12px}.sidebar-foot{display:flex;margin-top:auto;padding:10px 3px}.topbar{padding:15px 32px}.content-wrap{padding:32px 32px 75px}.workspace-grid{grid-template-columns:minmax(300px, .72fr) minmax(0,1.28fr)}.hero{min-height:252px}.result-content{min-height:430px}.config-card{padding:24px}}
@media(min-width:1360px){.app-shell{grid-template-columns:244px minmax(0,1fr)}.sidebar{padding-left:22px;padding-right:22px}.workspace-grid{grid-template-columns:minmax(330px,.69fr) minmax(0,1.31fr)}}
@media(max-width:470px){.topbar-tag{display:none}.topbar{padding:13px 16px}.hero-symbol{display:none}.hero{padding:26px 24px}.method-item{padding:11px 13px}.unit-badge{align-items:flex-start}.config-card{padding:18px}.result-head{padding:18px}.result-content{padding:16px}.export-bar{padding:16px}.source-strip{display:block}.source-strip span{display:block;margin-bottom:3px}.lesson-options{grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
