:root{color-scheme:light;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,ui-sans-serif,system-ui,sans-serif;line-height:1.6;font-weight:400;color:#18222d;background:#eef3f1;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--bg: #eef3f1;--paper: #fffffb;--paper-strong: #ffffff;--ink: #18222d;--ink-soft: #3f4f5e;--muted: #6f796f;--line: #d2dbd7;--line-strong: #a7b7b0;--pine: #1f6a55;--pine-dark: #124b3c;--indigo: #2f5485;--amber: #b66d1f;--red: #a94843;--mint: #d9eadf;--sky: #d9e7f6;--sand: #e4e9e4;--code-bg: #121826;--code-line: #253044;--shadow: 0 18px 44px rgba(49, 43, 31, .13);--shadow-light: 0 10px 26px rgba(49, 43, 31, .09);--display-font: "Songti SC", "Noto Serif CJK SC", "Source Han Serif SC", Georgia, serif;--mono-font: "SFMono-Regular", "Cascadia Code", Consolas, "Liberation Mono", Menlo, monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(rgba(31,106,85,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(47,84,133,.035) 1px,transparent 1px),radial-gradient(circle at 18px 18px,rgba(47,84,133,.045) 1.2px,transparent 1.4px),var(--bg);background-size:28px 28px,28px 28px,84px 84px,auto}body.image-preview-open{overflow:hidden}button,input{font:inherit}button,a{color:inherit}::selection{background:#cfe2d5;color:var(--pine-dark)}.app-shell{display:grid;grid-template-columns:304px minmax(0,1fr);grid-template-rows:72px minmax(0,1fr);min-height:100vh}.app-shell.no-sidebar{grid-template-columns:minmax(0,1fr)}.site-topbar{position:sticky;top:0;z-index:45;grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:18px;min-width:0;height:72px;padding:0 22px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fffffbf2,#f0f6f3eb),var(--paper);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.topbar-brand{display:flex;align-items:center;gap:11px;min-width:220px;color:var(--ink);text-decoration:none}.topbar-brand span{display:grid;place-items:center;width:38px;height:38px;border-radius:8px;background:#162c28;color:#f7c873;box-shadow:inset 0 0 0 1px #f7c87347}.topbar-brand strong{display:grid;gap:1px;font-family:var(--display-font);font-size:18px;line-height:1.1}.topbar-brand small{color:var(--muted);font-family:inherit;font-size:12px}.topbar-nav{display:flex;align-items:center;gap:8px;min-width:0}.topbar-link{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 13px;border:1px solid transparent;border-radius:8px;color:#334552;text-decoration:none;white-space:nowrap;font-size:14px;font-weight:900}.topbar-link:hover,.topbar-link.active{border-color:#1f6a552e;background:#fffffbd1;color:var(--pine-dark)}.topbar-link small{min-width:22px;padding:1px 7px;border-radius:999px;background:#172d29;color:#fffffb;font-family:var(--mono-font);font-size:11px;text-align:center}.app-main{grid-column:2;grid-row:2;min-width:0;padding:30px}.app-shell.no-sidebar .app-main{grid-column:1 / -1}.course-sidebar{position:sticky;grid-column:1;grid-row:2;top:72px;height:calc(100vh - 72px);overflow:hidden;border-right:1px solid var(--line);background:linear-gradient(180deg,#fffffbf5,#eff5f2f5),var(--paper);display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;min-height:82px;padding:18px 20px 16px;text-decoration:none;border-bottom:1px solid var(--line)}.brand span{display:grid;place-items:center;width:42px;height:42px;border-radius:8px;background:#162c28;color:#f7c873;box-shadow:inset 0 0 0 1px #f7c87347}.brand strong{display:grid;gap:1px;font-family:var(--display-font);font-size:19px;line-height:1.1;color:var(--ink)}.brand small{font-family:inherit;font-size:12px;font-weight:700;color:var(--muted)}.sidebar-progress{padding:14px 18px 16px;border-bottom:1px solid var(--line)}.sidebar-context-card{padding:14px 18px 16px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,#d9eadf94,#fffffbdb),var(--paper)}.sidebar-context-card>div{display:flex;justify-content:space-between;align-items:center;gap:10px;color:var(--muted);font-size:12px;font-weight:900}.sidebar-context-card span{display:inline-flex;align-items:center;gap:6px}.sidebar-context-card strong{color:var(--pine-dark);font-family:var(--mono-font)}.sidebar-context-card p{margin:8px 0 0;color:var(--ink-soft);font-size:12px;line-height:1.55}.site-nav{display:grid;gap:6px;padding:12px;border-bottom:1px solid var(--line)}.site-nav-link{display:flex;align-items:center;gap:10px;min-height:40px;padding:0 10px;border:1px solid transparent;border-radius:8px;color:#334552;text-decoration:none;font-size:14px;font-weight:900}.site-nav-link:hover,.site-nav-link.active{border-color:#1f6a552e;background:#fffffbcc;color:var(--pine-dark)}.site-nav-link small{margin-left:auto;min-width:24px;padding:1px 7px;border-radius:999px;background:#172d29;color:#fffffb;font-family:var(--mono-font);font-size:11px;text-align:center}.sidebar-progress>div:first-child{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px;color:var(--muted);font-size:12px;font-weight:800}.sidebar-progress>div:first-child span{display:inline-flex;align-items:center;gap:6px}.sidebar-progress strong{color:var(--pine-dark);font-family:var(--mono-font)}.sidebar-progress-track{height:9px;overflow:hidden;border-radius:999px;background:#1f6a551f}.sidebar-progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--pine),var(--amber))}.sidebar-scroll{overflow-y:auto;padding:14px 12px 28px}.sidebar-stage{margin-bottom:18px}.sidebar-stage h2{margin:14px 10px 8px;color:var(--muted);font-size:12px;font-weight:900}.lesson-link{position:relative;display:grid;grid-template-columns:42px minmax(0,1fr) 18px;align-items:center;min-height:42px;gap:8px;margin:3px 0;padding:6px 8px;border:1px solid transparent;border-radius:8px;text-decoration:none;color:#2b3944;transition:transform .14s ease,border-color .14s ease,background-color .14s ease}.lesson-link:hover,.lesson-link.active{border-color:#1f6a552e;background:#fffffbbd;color:var(--pine-dark);transform:translate(2px)}.tool-nav-link{position:relative;display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;min-height:42px;gap:9px;margin:3px 0;padding:6px 8px;border:1px solid transparent;border-radius:8px;text-decoration:none;color:#2b3944;font-weight:800;transition:transform .14s ease,border-color .14s ease,background-color .14s ease}.tool-nav-link:hover,.tool-nav-link.active{border-color:#1f6a552e;background:#fffffbc7;color:var(--pine-dark);transform:translate(2px)}.tool-nav-link.active:before{position:absolute;left:-12px;top:8px;bottom:8px;width:4px;border-radius:999px;background:var(--amber);content:""}.tool-nav-icon{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:7px;background:#e4decf;color:#3f4a52}.tool-nav-link.active .tool-nav-icon{background:var(--pine);color:#fffffb}.lesson-link.active:before{position:absolute;left:-12px;top:8px;bottom:8px;width:4px;border-radius:999px;background:var(--amber);content:""}.day-pill{display:inline-flex;justify-content:center;align-items:center;height:28px;border-radius:7px;background:#e4decf;color:#3f4a52;font-family:var(--mono-font);font-size:12px;font-weight:900}.lesson-link.active .day-pill{background:var(--pine);color:#fffffb}.mobile-menu-button,.mobile-close,.mobile-sidebar{display:none}.home-page,.resources-page,.tools-page,.tool-page{max-width:1200px;margin:0 auto}.tools-page,.tool-page{padding-bottom:42px}.home-hero{position:relative;display:grid;grid-template-columns:minmax(0,1.35fr) 360px;gap:24px;align-items:stretch;min-height:388px;padding:42px;border:1px solid var(--line);border-radius:8px;background:linear-gradient(135deg,#fffffbf7,#e6efebe6),var(--paper);box-shadow:var(--shadow);overflow:hidden}.home-hero:before{position:absolute;inset:18px;pointer-events:none;border:1px dashed rgba(31,106,85,.24);border-radius:8px;content:""}.home-hero:after{position:absolute;right:36px;top:26px;color:#124b3c1f;font-family:var(--mono-font);font-size:70px;font-weight:900;line-height:1;content:">>> "}.hero-copy{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:center}.section-kicker{display:inline-flex;align-items:center;gap:7px;width:fit-content;color:var(--pine-dark);font-size:13px;font-weight:900}.muted{color:var(--muted)}.home-hero h1,.page-header h1,.lesson-hero h1{margin:12px 0 14px;max-width:780px;color:var(--ink);font-family:var(--display-font);font-size:56px;font-weight:800;line-height:1.08;letter-spacing:0}.home-hero p,.page-header p,.lesson-hero p{max-width:760px;margin:0;color:var(--ink-soft);font-size:17px}.toolbox-hero,.tool-hero{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:24px;align-items:stretch;padding:38px;border:1px solid var(--line);border-radius:8px;background:linear-gradient(135deg,#fffffbfa,#e1ece8eb),var(--paper);box-shadow:var(--shadow);overflow:hidden}.toolbox-hero:after,.tool-hero:after{position:absolute;right:28px;bottom:-12px;color:#1f6a5514;font-family:var(--mono-font);font-size:86px;font-weight:900;content:"{}"}.toolbox-hero>*,.tool-hero>*{position:relative;z-index:1}.toolbox-hero h1,.tool-hero h1{margin:12px 0 14px;max-width:780px;color:var(--ink);font-family:var(--display-font);font-size:54px;font-weight:800;line-height:1.08;letter-spacing:0}.toolbox-hero p,.tool-hero p{max-width:760px;margin:0;color:var(--ink-soft);font-size:17px}.toolbox-note,.privacy-card{align-self:center;padding:22px;border:1px solid rgba(31,106,85,.18);border-left:4px solid var(--pine);border-radius:8px;background:#fffffbd1;box-shadow:var(--shadow-light)}.toolbox-note svg,.privacy-card svg{color:var(--pine)}.toolbox-note strong,.privacy-card strong{display:block;margin:9px 0 5px;font-size:18px}.toolbox-note p,.privacy-card p{color:var(--muted);font-size:14px}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 17px;border:1px solid transparent;border-radius:8px;text-decoration:none;cursor:pointer;font-weight:900;transition:transform .14s ease,box-shadow .14s ease,background-color .14s ease}.primary-button{background:#172d29;color:#fffffb;box-shadow:0 10px 22px #172d2929}.primary-button:hover{background:var(--pine-dark);transform:translateY(-1px)}.primary-button.done{background:var(--mint);border-color:#aac9b6;color:var(--pine-dark);box-shadow:none}.secondary-button{background:#fffffbdb;border-color:var(--line);color:var(--ink)}.secondary-button:hover{border-color:var(--line-strong);transform:translateY(-1px)}.study-panel{position:relative;z-index:1;align-self:center;padding:24px;border-left:4px solid var(--amber);border-radius:8px;background:#fffffbc7;box-shadow:var(--shadow-light)}.study-panel-top{display:flex;justify-content:space-between;align-items:end;gap:18px}.study-panel-top span,.next-lesson-card span{color:var(--muted);font-size:12px;font-weight:900}.study-panel-top strong{font-family:var(--mono-font);font-size:40px;line-height:1}.next-lesson-card{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.next-lesson-card strong{display:block;margin-top:4px;font-size:18px}.next-lesson-card p{margin-top:7px;color:var(--muted);font-size:14px}.hero-metrics{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.hero-metrics span{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:0 10px;border-radius:999px;background:#e5ece8;color:#3d4d48;font-size:12px;font-weight:900}.tool-quick-list{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:18px}.tool-quick-list a{display:flex;align-items:center;gap:7px;min-height:40px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:#fffffbe6;color:var(--pine-dark);text-decoration:none;font-size:13px;font-weight:900}.tool-quick-list a:hover{border-color:var(--pine)}.progress-meter{display:grid;grid-template-columns:minmax(0,1fr) 48px;align-items:center;gap:12px;margin:18px 0 0}.progress-meter-track{height:10px;overflow:hidden;border-radius:999px;background:#1f6a5521}.progress-meter-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--pine),var(--indigo),var(--amber))}.progress-meter strong{color:var(--pine-dark);font-family:var(--mono-font)}.search-band{margin:28px 0}.search-box{display:flex;align-items:center;gap:10px;min-height:56px;padding:0 17px;border:1px solid var(--line);border-radius:8px;background:#fffffbe6;box-shadow:0 10px 24px #312b1f12}.search-box:focus-within{border-color:var(--pine);box-shadow:0 0 0 4px #1f6a551a}.search-box input{width:100%;border:0;outline:0;background:transparent;color:var(--ink)}.lesson-grid-section{margin-top:32px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:12px}.section-heading>div{display:flex;align-items:baseline;gap:10px}.section-heading h2{margin:0;font-family:var(--display-font);font-size:26px;line-height:1.1}.section-heading span{color:var(--muted)}.section-heading a{display:inline-flex;align-items:center;gap:6px;color:var(--indigo);text-decoration:none;font-weight:900}.section-number{color:var(--amber);font-family:var(--mono-font);font-size:13px;font-weight:900}.lesson-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.lesson-card,.resource-card,.toc-panel,.exercise-panel,.warning-box,.lesson-hero,.markdown-content{border:1px solid var(--line);border-radius:8px;background:#fffffbeb}.lesson-card{position:relative;display:flex;flex-direction:column;min-height:246px;padding:18px;text-decoration:none;box-shadow:0 8px 20px #312b1f0f;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.lesson-card:before{position:absolute;top:0;left:18px;right:18px;height:3px;border-radius:0 0 999px 999px;background:var(--sand);content:""}.lesson-card:hover{border-color:var(--line-strong);box-shadow:0 16px 34px #312b1f1f;transform:translateY(-3px)}.lesson-card.completed{background:#f4faf4f0}.lesson-card.completed:before{background:var(--pine)}.lesson-card-top,.lesson-card-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--pine-dark);font-family:var(--mono-font);font-size:12px;font-weight:900}.lesson-card h3{margin:16px 0 8px;font-family:var(--display-font);font-size:24px;line-height:1.15}.lesson-card p{flex:1;margin:0;color:var(--muted);font-size:14px}.lesson-card-goals{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.lesson-card-goals span{max-width:100%;padding:3px 8px;border:1px solid rgba(47,84,133,.14);border-radius:999px;background:#d9e7f694;color:#354f70;font-size:12px;font-weight:800}.lesson-card-meta{margin-top:16px;color:var(--muted);font-family:inherit}.lesson-card-meta span{display:inline-flex;align-items:center;gap:5px}.tool-category-section,.related-tools{margin-top:32px}.tool-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.tool-card{position:relative;display:flex;flex-direction:column;min-height:230px;padding:18px;border:1px solid var(--line);border-radius:8px;background:linear-gradient(180deg,#fffffbf5,#f6f9f6eb),var(--paper);color:var(--ink);text-decoration:none;box-shadow:0 8px 20px #312b1f0f;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.tool-card:hover{border-color:var(--line-strong);box-shadow:0 16px 34px #312b1f1f;transform:translateY(-3px)}.tool-card:after{position:absolute;right:14px;bottom:10px;color:#124b3c14;font-family:var(--mono-font);font-size:38px;font-weight:900;content:"/>"}.tool-card-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:8px;background:#172d29;color:#f7c873}.tool-card h3{margin:17px 0 8px;font-family:var(--display-font);font-size:23px;line-height:1.15}.tool-card p{flex:1;margin:0;color:var(--muted);font-size:14px}.tool-card-tags,.tool-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:15px}.tool-card-tags span,.tool-tags span{padding:3px 8px;border:1px solid rgba(31,106,85,.14);border-radius:999px;background:#d9eadfb8;color:var(--pine-dark);font-size:12px;font-weight:900}.lesson-layout{display:grid;grid-template-columns:minmax(0,900px) 270px;align-items:start;justify-content:center;gap:24px}.lesson-article{min-width:0}.lesson-hero{position:relative;display:flex;justify-content:space-between;gap:20px;align-items:flex-start;padding:36px;background:linear-gradient(135deg,#fffffbfa,#e5efeaeb),var(--paper);box-shadow:var(--shadow);overflow:hidden}.lesson-hero:after{position:absolute;right:26px;bottom:-8px;color:#1f6a5514;font-family:var(--mono-font);font-size:92px;font-weight:900;content:"</>"}.lesson-hero>*{position:relative;z-index:1}.lesson-hero h1{font-size:48px}.lesson-stats,.goal-strip{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}.lesson-stats span,.goal-strip span,.goal-strip strong{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:0 13px;border-radius:999px;border:1px solid var(--line);color:#3f4d5a;background:#fffffbdb}.lesson-stats span{font-family:var(--mono-font);font-size:12px;font-weight:900}.goal-strip{padding:13px;border:1px solid var(--line);border-radius:8px;background:#fffffba8}.goal-strip strong{background:#172d29;color:#fffffb;font-weight:900}.goal-strip span{background:var(--mint);color:var(--pine-dark);font-weight:800}.warning-box{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;margin:18px 0;padding:16px;background:#fff2db;border-color:#e7c276;color:#65420f}.warning-box p{margin:4px 0 0}.markdown-content{margin-top:24px;padding:38px;box-shadow:0 12px 28px #312b1f0f}.markdown-content.compact{margin-top:18px;padding:0;border:0;background:transparent;box-shadow:none}.markdown-content h2{scroll-margin-top:24px;margin:42px 0 13px;padding-top:8px;color:var(--ink);font-family:var(--display-font);font-size:30px;line-height:1.25}.markdown-content h2:first-child{margin-top:0}.markdown-content h2:before{display:inline-block;width:18px;height:3px;margin-right:9px;vertical-align:middle;border-radius:999px;background:var(--amber);content:""}.markdown-content h3{scroll-margin-top:24px;margin:30px 0 10px;color:#243542;font-size:21px}.markdown-content h4{margin:22px 0 8px;font-size:17px}.markdown-content p,.markdown-content li{color:#2f3b47}.markdown-content p{margin:13px 0}.markdown-content ul,.markdown-content ol{padding-left:24px}.markdown-content li::marker{color:var(--amber);font-weight:900}.markdown-content a{display:inline-flex;align-items:center;gap:4px;color:var(--indigo);font-weight:800;text-decoration-thickness:1px;text-underline-offset:3px}.markdown-image-button{position:relative;display:block;width:fit-content;max-width:100%;margin:20px auto;padding:0;border:1px solid var(--line);border-radius:8px;background:#f8faf7;box-shadow:0 12px 28px #312b1f17;cursor:zoom-in;overflow:hidden}.markdown-image-button img{display:block;max-width:100%;height:auto;margin:0;border:0;border-radius:0;background:transparent;box-shadow:none}.markdown-image-button span{position:absolute;right:10px;bottom:10px;display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:0 10px;border-radius:999px;background:#122b27db;color:#fffffb;font-size:12px;font-weight:900;opacity:0;transform:translateY(6px);transition:opacity .14s ease,transform .14s ease}.markdown-image-button:hover span,.markdown-image-button:focus-visible span{opacity:1;transform:translateY(0)}.image-preview-backdrop{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:26px;background:#081016c7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.image-preview-shell{position:relative;display:grid;place-items:center;max-width:min(1120px,96vw);max-height:92vh;padding:14px;border:1px solid rgba(255,255,255,.18);border-radius:8px;background:#fffffbf5;box-shadow:0 30px 80px #00000061}.image-preview-shell img{display:block;max-width:calc(96vw - 28px);max-height:calc(92vh - 76px);width:auto;height:auto;border-radius:6px}.image-preview-shell p{margin:10px 36px 0;color:var(--muted);font-size:13px;text-align:center}.image-preview-close{position:absolute;right:10px;top:10px;z-index:1;display:inline-grid;place-items:center;width:36px;height:36px;border:1px solid rgba(18,34,45,.1);border-radius:8px;background:#fffffbe6;color:var(--ink);cursor:pointer}.markdown-content table{display:block;width:100%;overflow-x:auto;border-collapse:collapse;margin:18px 0}.markdown-content th,.markdown-content td{padding:10px 12px;border:1px solid var(--line);text-align:left}.markdown-content th{background:var(--mint);color:var(--pine-dark)}.markdown-content blockquote{margin:18px 0;padding:12px 16px;border-left:4px solid var(--amber);background:#f7edd9;color:#4f493d}.markdown-content :not(pre)>code{padding:2px 6px;border-radius:6px;background:#eee4d2;color:#8d3432;font-family:var(--mono-font);font-size:.92em}.code-frame{overflow:hidden;margin:20px 0;border:1px solid #27334a;border-radius:8px;background:var(--code-bg);color:#e5eef7;box-shadow:0 16px 34px #1218262e}.code-toolbar{display:flex;justify-content:space-between;align-items:center;min-height:40px;padding:0 10px 0 14px;border-bottom:1px solid var(--code-line);background:#182033;color:#b8c4d6;font-family:var(--mono-font);font-size:12px;font-weight:900}.code-frame pre{margin:0;padding:18px;overflow-x:auto}.code-frame code{font-family:var(--mono-font);font-size:14px;line-height:1.7}.icon-button{display:inline-grid;place-items:center;width:30px;height:30px;border:0;border-radius:6px;cursor:pointer}.icon-button.subtle{background:#ffffff14;color:#dbe7f3}.icon-button.subtle:hover{background:#ffffff29}.exercise-panel{margin-top:24px;padding:24px;background:linear-gradient(90deg,#d9eadf8a,#fffffbf0),var(--paper-strong)}.exercise-panel.done{border-color:#a9c3b4}.exercise-header{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.exercise-header h2{margin:8px 0 0;font-family:var(--display-font);font-size:28px}.lesson-pager{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:24px}.lesson-pager a{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:82px;padding:16px;border:1px solid var(--line);border-radius:8px;background:#fffffbeb;text-decoration:none;transition:transform .14s ease,border-color .14s ease}.lesson-pager a:hover{border-color:var(--line-strong);transform:translateY(-2px)}.lesson-pager span{display:grid;color:var(--muted);font-size:13px}.lesson-pager strong{color:var(--ink);font-size:17px}.source-note{margin:24px 0 40px;color:var(--muted);font-size:14px}.source-note a{color:var(--indigo);font-weight:900}.toc-panel{position:sticky;top:24px;padding:18px;background:#fffffbe6;box-shadow:0 10px 22px #312b1f0f}.toc-panel h2{margin:0 0 12px;font-family:var(--display-font);font-size:18px}.toc-panel p{color:var(--muted)}.toc-panel ol{display:grid;gap:7px;margin:0;padding:0;list-style:none}.toc-panel li.indent{padding-left:12px}.toc-panel li{position:relative;border-radius:7px}.toc-panel li.active{background:#1f6a5517}.toc-panel li.active:before{position:absolute;left:-8px;top:6px;bottom:6px;width:3px;border-radius:999px;background:var(--amber);content:""}.toc-panel button{display:block;width:100%;padding:4px 6px;border:0;background:transparent;color:#465767;text-decoration:none;font-size:14px;text-align:left;cursor:pointer}.toc-panel li.active button{color:var(--pine-dark);font-weight:900}.toc-panel button:hover{color:var(--pine-dark)}.page-header{padding:34px 0 22px}.resource-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.resource-card{padding:20px;box-shadow:0 10px 24px #312b1f12}.resource-card-head{display:flex;gap:12px;align-items:flex-start}.resource-card h2{margin:0 0 6px;font-family:var(--display-font);font-size:22px}.resource-card p{margin:0;color:var(--muted)}.resource-card ul{display:grid;gap:8px;margin:18px 0 0;padding:0;list-style:none}.resource-card a{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;border-radius:8px;background:#e6ece9;color:var(--indigo);text-decoration:none;font-weight:800;overflow-wrap:anywhere}.tool-workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;margin-top:24px;align-items:start}.tool-workspace.single-column{grid-template-columns:minmax(0,1fr)}.timestamp-workspace{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.tool-panel{min-width:0;padding:20px;border:1px solid var(--line);border-radius:8px;background:#fffffbf0;box-shadow:0 12px 28px #312b1f12}.tool-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.tool-panel-head h2{margin:0;font-family:var(--display-font);font-size:24px;line-height:1.15}.tool-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.tool-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px;padding:0 12px;border:1px solid #172d29;border-radius:8px;background:#172d29;color:#fffffb;cursor:pointer;font-size:13px;font-weight:900}.tool-button.ghost{border-color:var(--line);background:#fffffbe6;color:var(--ink)}.tool-button:disabled{cursor:not-allowed;opacity:.45}.tool-textarea{display:block;width:100%;min-height:260px;resize:vertical;padding:14px;border:1px solid var(--line);border-radius:8px;outline:0;background:#fbfcf8;color:var(--ink);line-height:1.7}.tool-textarea:focus{border-color:var(--pine);box-shadow:0 0 0 4px #1f6a551a}.tool-textarea.tall{min-height:340px}.tool-textarea.output{margin-top:14px;background:#f5f8f4}.tool-textarea.code,.tool-textarea.markdown-input{font-family:var(--mono-font);font-size:14px}.metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.metric-card{min-width:0;padding:14px;border:1px solid var(--line);border-radius:8px;background:#f5f8f4}.metric-card.wide{grid-column:span 3}.metric-card span{display:block;margin-bottom:5px;color:var(--muted);font-size:12px;font-weight:900}.metric-card strong{display:block;color:var(--ink);font-family:var(--mono-font);font-size:22px;line-height:1.15;overflow-wrap:anywhere}.toggle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.tool-toggle{display:flex;align-items:center;gap:8px;min-height:38px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:#f5f8f4;color:var(--ink-soft);font-size:13px;font-weight:800}.tool-toggle input{width:16px;height:16px;accent-color:var(--pine)}.markdown-preview-frame{min-height:478px;max-height:680px;overflow:auto;padding:20px;border:1px solid var(--line);border-radius:8px;background:#fbfcf8}.segmented-control{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:12px;padding:5px;border:1px solid var(--line);border-radius:8px;background:#eef3f1}.segmented-control button{min-height:34px;border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;font-weight:900}.segmented-control button.active{background:#172d29;color:#fffffb}.tool-error{display:flex;align-items:center;gap:8px;margin:10px 0 12px;padding:10px 12px;border:1px solid #e7c276;border-radius:8px;background:#fff2db;color:#65420f;font-size:13px;font-weight:800}.inline-field,.stacked-field{color:var(--muted);font-size:13px;font-weight:900}.inline-field{display:inline-flex;align-items:center;gap:7px}.stacked-field{display:grid;gap:7px}.inline-field input,.inline-field select,.stacked-field input{min-height:36px;border:1px solid var(--line);border-radius:8px;background:#fbfcf8;color:var(--ink)}.inline-field input{width:78px;padding:0 9px}.inline-field select{padding:0 28px 0 9px}.stacked-field input{width:100%;padding:0 11px}.query-table,.result-list{display:grid;gap:8px;margin-top:16px}.query-table h3{margin:0 0 2px;font-size:15px}.query-table div,.result-list div{display:grid;grid-template-columns:120px minmax(0,1fr);gap:10px;padding:10px;border:1px solid var(--line);border-radius:8px;background:#f5f8f4}.query-table span,.result-list span{color:var(--muted);font-size:12px;font-weight:900}.query-table strong,.result-list strong{overflow-wrap:anywhere;font-family:var(--mono-font);font-size:13px}.query-table p{margin:0;color:var(--muted)}.uuid-list{display:grid;gap:8px}.uuid-list div{display:grid;grid-template-columns:minmax(0,1fr) 82px;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#f5f8f4}.uuid-list code{overflow-wrap:anywhere;color:#243542;font-family:var(--mono-font)}.uuid-list p{color:var(--muted)}.icon-copy-button{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:32px;padding:0 9px;border:1px solid var(--line);border-radius:8px;background:#fffffbe6;color:var(--ink);cursor:pointer;font-size:12px;font-weight:900}.mini-tool-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.mini-tool-card{display:flex;gap:12px;min-width:0;padding:15px;border:1px solid var(--line);border-radius:8px;background:#fffffbeb;color:var(--ink);text-decoration:none}.mini-tool-card svg{flex:0 0 auto;color:var(--pine)}.mini-tool-card span{display:grid;gap:3px;min-width:0}.mini-tool-card strong{font-size:15px}.mini-tool-card small{color:var(--muted);font-size:12px}.compact-segmented-control{display:inline-grid;grid-template-columns:1fr 1fr;gap:4px;min-height:36px;padding:4px;border:1px solid var(--line);border-radius:8px;background:#eef3f1}.compact-segmented-control button{min-width:40px;border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;font-size:13px;font-weight:900}.compact-segmented-control button.active{background:#172d29;color:#fffffb}.json-tree{max-height:580px;overflow:auto;padding:12px;border:1px solid var(--line);border-radius:8px;background:#fbfcf8;font-family:var(--mono-font);font-size:13px}.json-tree-node{min-width:max-content}.json-tree-row{display:flex;align-items:center;gap:6px;min-height:34px;border-radius:7px;color:#334552}.json-tree-row:hover{background:#1f6a5512}.json-toggle,.json-toggle-spacer{display:inline-grid;place-items:center;flex:0 0 auto;width:24px;height:24px}.json-toggle{border:0;border-radius:6px;background:transparent;color:var(--pine-dark);cursor:pointer}.json-toggle:hover{background:#1f6a551a}.json-key,.json-root{color:#2f5485;font-weight:900}.json-colon{color:var(--muted)}.json-value{color:#243542;overflow-wrap:anywhere}.json-value.string{color:#1f6a55}.json-value.number,.json-value.boolean{color:#b66d1f}.json-value.null,.json-value.undefined{color:#a94843}.json-value.array,.json-value.object{color:var(--muted);font-weight:900}.json-path{margin-left:auto;color:#6f796fc7;font-size:11px}.json-copy-button{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:26px;padding:0 7px;border:1px solid var(--line);border-radius:7px;background:#fffffbe6;color:var(--ink);cursor:pointer;font-size:11px;font-weight:900}.tool-toggle.compact{min-height:36px;background:#fffffbe6}.json-diff-panel,.loan-schedule-panel{margin-top:18px}.diff-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.summary-item{padding:13px;border:1px solid var(--line);border-radius:8px;background:#f5f8f4}.summary-item span{display:block;color:var(--muted);font-size:12px;font-weight:900}.summary-item strong{display:block;margin-top:3px;font-family:var(--mono-font);font-size:26px;line-height:1}.summary-item.added strong{color:var(--pine)}.summary-item.removed strong{color:var(--red)}.summary-item.changed strong{color:var(--amber)}.summary-item.same strong{color:var(--indigo)}.diff-list{display:grid;gap:10px}.diff-item{overflow:hidden;border:1px solid var(--line);border-radius:8px;background:#fbfcf8}.diff-item>div{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line)}.diff-item span{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border-radius:999px;background:#e5ece8;color:var(--muted);font-size:12px;font-weight:900}.diff-item.added span{background:var(--mint);color:var(--pine-dark)}.diff-item.removed span{background:#f4ded8;color:var(--red)}.diff-item.changed span{background:#fff2db;color:#65420f}.diff-item strong{overflow-wrap:anywhere;font-family:var(--mono-font);font-size:13px}.diff-item pre{margin:0;padding:12px;overflow-x:auto;color:#243542;font-family:var(--mono-font);font-size:13px;line-height:1.6}.loan-workspace{grid-template-columns:380px minmax(0,1fr)}.loan-form{display:grid;gap:12px;margin-bottom:14px}.loan-note{display:flex;align-items:center;gap:6px;margin:12px 0 0;color:var(--muted);font-size:13px}.loan-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:8px}.loan-table{width:100%;min-width:720px;border-collapse:collapse;background:#fbfcf8}.loan-table th,.loan-table td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}.loan-table th:first-child,.loan-table td:first-child{text-align:left}.loan-table th{background:var(--mint);color:var(--pine-dark);font-size:12px;font-weight:900}.loan-table td{color:#334552;font-family:var(--mono-font);font-size:13px}@media(max-width:1180px){.app-shell{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}.app-shell>.course-sidebar{display:none}.site-topbar{position:fixed;inset:0 0 auto;height:auto;min-height:64px;padding:10px 12px 10px 66px}.topbar-brand{min-width:auto}.topbar-brand strong{font-size:16px}.topbar-brand small{display:none}.topbar-nav{overflow-x:auto;justify-content:flex-start;padding-bottom:2px}.topbar-link{min-height:36px;padding:0 10px;font-size:13px}.app-main{padding:88px 18px 24px}.mobile-menu-button{position:fixed;top:14px;left:14px;z-index:70;display:inline-grid;place-items:center;width:42px;height:42px;border:1px solid var(--line);border-radius:8px;background:var(--paper-strong);color:var(--ink);box-shadow:0 6px 18px #1f2c381f}.mobile-sidebar{position:fixed;inset:64px auto 0 0;z-index:60;display:block;width:min(340px,88vw);transform:translate(-105%);transition:transform .18s ease;box-shadow:var(--shadow)}.mobile-sidebar.open{transform:translate(0)}.mobile-sidebar .course-sidebar{display:flex;width:100%;height:calc(100vh - 64px);top:0}.mobile-close{position:absolute;top:12px;right:12px;z-index:70;display:inline-grid;place-items:center;width:36px;height:36px;border:1px solid var(--line);border-radius:8px;background:var(--paper-strong);color:var(--ink)}.home-hero,.toolbox-hero,.tool-hero,.lesson-layout{grid-template-columns:1fr}.toc-panel{position:static;order:-1}.lesson-grid,.resource-grid,.tool-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tool-workspace,.timestamp-workspace{grid-template-columns:1fr}}@media(max-width:720px){.app-main{padding-inline:12px}.site-topbar{align-items:flex-start;flex-direction:column;gap:8px;padding-right:10px}.topbar-nav{width:100%}.topbar-link svg{display:none}.home-hero,.toolbox-hero,.tool-hero,.lesson-hero,.markdown-content{padding:22px}.home-hero h1,.toolbox-hero h1,.tool-hero h1,.page-header h1,.lesson-hero h1{font-size:38px}.home-hero,.toolbox-hero,.tool-hero,.lesson-hero,.exercise-header{display:flex;flex-direction:column}.home-hero:after{font-size:42px;right:20px}.study-panel{width:100%}.lesson-grid,.resource-grid,.tool-grid,.mini-tool-grid,.lesson-pager{grid-template-columns:1fr}.tool-panel-head{align-items:stretch;flex-direction:column}.tool-actions{justify-content:flex-start}.metric-grid,.toggle-grid{grid-template-columns:1fr}.metric-card.wide{grid-column:auto}.query-table div,.result-list div,.uuid-list div{grid-template-columns:1fr}.lesson-card{min-height:0}.lesson-stats span,.goal-strip span,.goal-strip strong{width:100%;justify-content:flex-start}}.study-plan-page{max-width:1200px;margin:0 auto;padding-bottom:42px}.study-header{position:relative;padding:38px;border:1px solid var(--line);border-radius:8px;background:linear-gradient(135deg,#fffffbfa,#d9eadfb3),var(--paper);box-shadow:var(--shadow);overflow:hidden}.study-header-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px}.study-title-block .study-eyebrow{display:inline-flex;align-items:center;gap:7px;width:fit-content;color:var(--pine-dark);font-size:13px;font-weight:900;letter-spacing:.02em}.study-title-block h1{margin:12px 0 0;max-width:780px;color:var(--ink);font-family:var(--display-font);font-size:44px;font-weight:800;line-height:1.1;letter-spacing:0}.study-reset-btn{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:0 13px;border:1px solid var(--line);border-radius:8px;background:#fffffbdb;color:var(--ink-soft);font-size:13px;font-weight:900;cursor:pointer;white-space:nowrap;transition:border-color .14s ease,color .14s ease,transform .14s ease}.study-reset-btn:hover{border-color:var(--line-strong);color:var(--red);transform:translateY(-1px)}.study-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden}.study-stat{background:var(--paper-strong);padding:15px 16px}.study-stat-num{font-family:var(--display-font);font-size:28px;font-weight:800;color:var(--ink);line-height:1.05}.study-stat-num.accent{color:var(--pine-dark)}.study-stat-label{margin-top:5px;color:var(--muted);font-size:12px}.study-today-card{margin-top:16px;padding:16px 18px;border:1px solid rgba(31,106,85,.22);border-left:4px solid var(--pine);border-radius:8px;background:#d9eadf73;box-shadow:var(--shadow-light)}.study-today-label{display:flex;justify-content:space-between;align-items:center;gap:10px;color:var(--pine-dark);font-size:12px;font-weight:900;letter-spacing:.04em;margin-bottom:7px}.study-today-card.behind{background:#f7c87329;border-color:#b66d1f4d;border-left-color:var(--amber)}.study-today-card.behind .study-today-label{color:var(--amber)}.study-behind-tag{flex-shrink:0;padding:2px 7px;border-radius:4px;background:#f7c8734d;border:1px solid rgba(182,109,31,.28);color:var(--amber);font-family:var(--mono-font);font-size:10.5px;font-weight:900}.study-today-task{color:var(--ink);font-size:15px}.study-today-from{margin-top:4px;color:var(--muted);font-family:var(--mono-font);font-size:12px}.study-today-empty{color:var(--muted);font-size:14px}.study-heat-section{margin-top:16px}.study-heat-label{color:var(--muted);font-size:12px;font-weight:900;margin-bottom:8px}.study-heat-row{display:flex;gap:3px;flex-wrap:wrap}.study-heat-cell{width:12px;height:12px;border-radius:3px;background:var(--paper-strong);border:1px solid var(--line)}.study-heat-cell.done{background:var(--pine);border-color:var(--pine-dark)}.study-phases{margin-top:28px;display:flex;flex-direction:column;gap:14px}.study-phase{border:1px solid var(--line);border-radius:8px;background:linear-gradient(180deg,#fffffbf5,#f6f9f6eb),var(--paper);box-shadow:0 8px 20px #312b1f0f;overflow:hidden}.study-phase-head{display:flex;align-items:center;gap:14px;padding:18px 20px;width:100%;background:transparent;border:none;text-align:left;font:inherit;color:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .14s ease}.study-phase-head:hover{background:#f6f9f6b3}.study-phase-index{flex-shrink:0;width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:#172d29;color:#f7c873;font-family:var(--mono-font);font-size:13px;font-weight:900}.study-phase.active .study-phase-index{background:var(--pine);color:#fffffb}.study-phase-titles{flex:1;min-width:0}.study-phase-name{color:var(--ink);font-family:var(--display-font);font-size:20px;font-weight:800;line-height:1.2}.study-phase-meta{margin-top:3px;color:var(--muted);font-family:var(--mono-font);font-size:12px}.study-ring{flex-shrink:0;position:relative;width:38px;height:38px}.study-ring svg{transform:rotate(-90deg);display:block}.study-ring-bg{stroke:var(--line)}.study-ring-fg{stroke:var(--pine);transition:stroke-dashoffset .3s ease}.study-ring-pct{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono-font);font-size:10px;font-weight:900;color:var(--ink-soft)}.study-chevron{flex-shrink:0;color:var(--muted);font-size:12px;transition:transform .2s ease}.study-phase.open .study-chevron{transform:rotate(90deg)}.study-phase-body{max-height:0;overflow:hidden;transition:max-height .3s ease}.study-phase.open .study-phase-body{max-height:6000px}.study-week{border-top:1px solid var(--line)}.study-week-head{display:flex;align-items:center;gap:10px;padding:13px 20px;width:100%;background:transparent;border:none;text-align:left;font:inherit;color:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .14s ease}.study-week-head:hover{background:#f6f9f6b3}.study-week-tag{flex-shrink:0;padding:2px 7px;border-radius:4px;background:var(--mint);border:1px solid rgba(31,106,85,.2);color:var(--pine-dark);font-family:var(--mono-font);font-size:11px;font-weight:900}.study-week-title{flex:1;color:var(--ink-soft);font-size:13.5px;font-weight:600}.study-week-count{flex-shrink:0;color:var(--muted);font-family:var(--mono-font);font-size:11px}.study-week-chevron{flex-shrink:0;color:var(--muted);font-size:11px;transition:transform .2s ease}.study-week.open .study-week-chevron{transform:rotate(90deg)}.study-week-days{max-height:0;overflow:hidden;transition:max-height .25s ease}.study-week.open .study-week-days{max-height:3000px}.study-day{padding:12px 20px 12px 44px;border-top:1px solid var(--line);background:#f6f9f680}.study-day-label{display:flex;align-items:center;gap:8px;margin-bottom:6px;color:var(--muted);font-family:var(--mono-font);font-size:11px;font-weight:900}.study-day-done{color:var(--pine-dark);font-size:10px}.study-task-list{display:flex;flex-direction:column;gap:5px}.study-task{display:flex;align-items:flex-start;gap:10px;padding:6px 9px;border-radius:6px;cursor:pointer;width:100%;background:transparent;border:none;text-align:left;font:inherit;color:inherit;transition:background-color .12s ease}.study-task:hover{background:#d9eadf73}.study-task-check{flex-shrink:0;width:18px;height:18px;margin-top:1px;border-radius:5px;border:1.5px solid var(--line-strong);display:flex;align-items:center;justify-content:center;transition:background-color .15s ease,border-color .15s ease}.study-task.done .study-task-check{background:var(--pine);border-color:var(--pine)}.study-task-check svg{width:10px;height:10px;opacity:0;transition:opacity .12s ease}.study-task.done .study-task-check svg{opacity:1}.study-task-text{color:var(--ink);font-size:13.5px;line-height:1.5}.study-task.done .study-task-text{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--line-strong)}.study-deliverable{margin:12px 20px 14px 44px;padding:10px 13px;border:1px solid rgba(182,109,31,.28);border-left:4px solid var(--amber);border-radius:7px;background:#f7c8731f;color:var(--ink-soft);font-size:13px;display:flex;gap:9px}.study-deliverable-tag{flex-shrink:0;color:var(--amber);font-family:var(--mono-font);font-size:11px;font-weight:900;padding-top:1px}.study-phase.optional .study-phase-name:after{content:"（可选）";margin-left:4px;color:var(--muted);font-weight:400;font-size:14px}.study-phase.new-tag .study-phase-name:after{content:" · 新增";margin-left:4px;color:var(--amber);font-weight:700;font-size:13px}.study-day.py .study-day-label{color:var(--amber)}.study-py-tag{display:inline-block;margin-right:6px;padding:1px 5px;border-radius:4px;background:#f7c87347;border:1px solid rgba(182,109,31,.28);color:var(--amber);font-family:var(--mono-font);font-size:9.5px;font-weight:900;vertical-align:2px}.study-footer{margin-top:32px;text-align:center;color:var(--muted);font-family:var(--mono-font);font-size:12px}@media(max-width:720px){.study-header{padding:26px 22px}.study-title-block h1{font-size:34px}.study-stats{grid-template-columns:repeat(2,1fr)}.study-header-top{flex-direction:column}.study-day{padding-left:26px}.study-deliverable{margin-left:26px}}
