@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;600;700;800&family=Source+Code+Pro:wght@400;500;600&display=swap');
:root{--ink:#102331;--muted:#647783;--line:#d8e4e8;--soft:#f3f7f8;--brand:#0b6573;--teal:#ddf0ef;--orange:#a4622e}*{box-sizing:border-box}body{margin:0;background:var(--soft);color:var(--ink);font:14px/1.55 system-ui,"Microsoft YaHei",sans-serif}a{color:inherit}.topbar{height:70px;padding:0 max(24px,calc((100vw - 1480px)/2));background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:32px}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;margin-right:auto}.brand>b{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:var(--brand);color:#fff;font-size:11px;letter-spacing:.1em}.brand strong,.brand small{display:block}.brand strong{font-size:15px}.brand small{font-size:11px;color:var(--muted)}nav{display:flex;gap:19px;font-size:12px;color:var(--muted)}nav a{text-decoration:none;padding:24px 0;border-bottom:2px solid transparent}nav a.active,nav a:hover{color:var(--brand);border-color:var(--brand)}.service{font-size:12px;color:var(--muted);white-space:nowrap}.service i{display:inline-block;width:8px;height:8px;margin-right:6px;background:#d39a45;border-radius:50%}.service i.ok{background:#32a675}.shell{max-width:1480px;margin:auto;padding:30px 24px 70px}.hero,.case-hero{background:linear-gradient(120deg,#0b4e5a,#0b6b78 57%,#188394);color:#fff;border-radius:18px;padding:31px 36px;display:flex;justify-content:space-between;gap:30px;box-shadow:0 12px 34px #143b460e}.hero h1,.case-hero h1{font-size:30px;line-height:1.18;max-width:730px;margin:8px 0 12px}.hero p,.case-hero p{max-width:720px;color:#d4edef;margin:0}.eyebrow{font-size:10px;letter-spacing:.14em;font-weight:800;color:#b5dfe0}.eyebrow.dark{color:#6d9a9e}.hero-metrics{display:flex;align-items:center;gap:17px}.hero-metrics div{min-width:65px}.hero-metrics b{display:block;font-size:27px;line-height:1}.hero-metrics span{font-size:11px;color:#cbe7e8}.focus-band{margin:20px 0 23px;background:#fff;border:1px solid var(--line);border-radius:13px;padding:18px 20px;display:grid;grid-template-columns:245px 1fr;gap:20px;align-items:center}.focus-band h2{font-size:20px;margin:3px 0 5px}.focus-band p{font-size:12px;color:var(--muted);margin:0;line-height:1.6}.focus-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.focus-grid span{display:grid;gap:4px;padding:11px 12px;background:#f3f9f9;border:1px solid #e1eeee;border-radius:9px}.focus-grid b{font-size:12px;color:var(--brand)}.focus-grid small{font-size:10px;line-height:1.4;color:var(--muted)}.filterbar{margin:23px 0;display:flex;gap:10px;flex-wrap:wrap}.filterbar input,.filterbar select,.button{height:40px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 12px;color:var(--ink)}.filterbar input{flex:1;min-width:260px}.button{display:inline-flex;align-items:center;justify-content:center;background:var(--brand);color:#fff;text-decoration:none;cursor:pointer;font-size:12px;font-weight:700}.button.secondary{background:transparent;color:var(--muted);font-weight:500}.columns{display:grid;grid-template-columns:minmax(0,1fr) 275px;gap:25px}.section-heading{display:flex;justify-content:space-between;align-items:end;padding-bottom:11px;border-bottom:1px solid var(--line);margin-bottom:16px}.section-heading h2,.sidebar h2{font-size:22px;margin:2px 0 0}.muted{font-size:12px;color:var(--muted)}.case-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(295px,1fr));gap:15px}.case-card{background:#fff;border:1px solid #e0e9ec;border-radius:13px;padding:17px;min-height:246px;display:flex;flex-direction:column;transition:.16s}.case-card:hover{border-color:#8bbfc0;transform:translateY(-2px);box-shadow:0 12px 30px #143b4610}.case-top{display:flex;align-items:center;justify-content:space-between}.case-id{font-size:10px;color:var(--brand);font-weight:800;letter-spacing:.13em}.quality{font-size:10px;padding:3px 7px;border-radius:99px}.quality.good{background:#e6f5ed;color:#267a57}.quality.pending{background:#fff1e6;color:var(--orange)}.case-card h3{font-size:17px;line-height:1.34;margin:10px 0 8px}.summary{font-size:12px;color:#49616d;min-height:37px;margin:0}.pill-row{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px}.pill{font-size:10px;padding:3px 8px;border-radius:99px;background:#eaf5f5;color:var(--brand)}.pill.status{background:#fff2e5;color:var(--orange)}.resource-strip{display:flex;gap:12px;margin-top:14px;padding:8px 0;border-top:1px solid #edf1f2;border-bottom:1px solid #edf1f2;color:var(--muted);font-size:10px}.card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:14px}.card-foot small{font-size:10px;color:var(--muted)}.sidebar{background:#fff;border:1px solid var(--line);border-radius:13px;padding:19px;height:max-content;position:sticky;top:18px}.resource-link{display:flex;justify-content:space-between;gap:8px;border-bottom:1px solid #edf1f2;padding:13px 0;text-decoration:none;color:var(--brand);font-size:12px}.resource-link b{font-size:17px;font-weight:400}.evidence-note{background:#f0f7f7;border-radius:9px;padding:12px;margin-top:17px;font-size:11px}.evidence-note p{color:var(--muted);margin:5px 0 0}.api-note{display:grid;gap:5px;margin-top:17px}.api-note code{font-size:10px;color:var(--brand)}.api-note small{color:var(--muted);font-size:10px}.loading,.empty{padding:42px;text-align:center;border-radius:12px;background:#fff;color:var(--muted);grid-column:1/-1}.breadcrumb{display:flex;gap:9px;color:var(--muted);font-size:12px;margin-bottom:16px}.breadcrumb a{color:var(--brand);text-decoration:none}.case-shell{max-width:1340px}.case-hero{padding:29px 34px}.case-hero h1{font-size:27px}.quality-box{width:220px;align-self:center;background:#ffffff18;border:1px solid #ffffff30;border-radius:11px;padding:15px}.quality-box b{display:block;font-size:30px}.quality-box span,.quality-box small{display:block;color:#d4edef;font-size:11px}.quality-box small{margin-top:8px;line-height:1.4}.task-band{margin:17px 0;background:#fff;border:1px solid var(--line);border-radius:12px;padding:19px 24px;display:grid;grid-template-columns:220px 1fr;gap:15px}.task-band h2{margin:3px 0;font-size:19px}.task-band ol{margin:0;padding-left:20px;color:#3d5662;font-size:13px}.case-columns{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:22px}.content-title{font-size:20px;margin:0 0 13px}.resource-section{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px 19px;margin-bottom:14px}.resource-head{display:flex;justify-content:space-between;gap:15px;border-bottom:1px solid #edf1f2;padding-bottom:10px}.resource-head h3{margin:0;font-size:16px}.resource-head p{margin:3px 0 0;color:var(--muted);font-size:11px}.resource-head>span{color:var(--brand);font-size:11px}.resource-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:11px}.resource-card{border:1px solid #e3ebed;border-radius:8px;padding:10px;display:flex;align-items:center;justify-content:space-between;gap:10px}.resource-card b,.resource-card small{display:block}.resource-card b{font-size:12px}.resource-card small{font-size:10px;color:var(--muted);margin-top:2px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-button{border:0;background:var(--teal);color:var(--brand);border-radius:6px;padding:6px 8px;font-size:10px;text-decoration:none;cursor:pointer;white-space:nowrap}.case-side{background:transparent;position:static;padding:0;border:0}.side-box{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:13px}.side-box h3{margin:0 0 9px;font-size:14px}.side-box ul{padding-left:17px;margin:0;color:#3d5662;font-size:12px}.side-box p{font-size:11px;color:var(--muted);margin:7px 0}.modal{position:fixed;inset:0;z-index:20}.modal-scrim{position:absolute;inset:0;background:#0a263055}.modal-card{position:relative;width:min(760px,calc(100vw - 30px));max-height:84vh;overflow:auto;margin:7vh auto;background:#fff;border-radius:13px;padding:25px 28px;box-shadow:0 22px 60px #10233133}.modal-close{position:absolute;right:14px;top:12px;border:0;background:transparent;color:var(--muted);cursor:pointer}.modal-card h2{font-size:21px;padding-right:50px}.markdown{color:#344955;font-size:13px}.markdown h1,.markdown h2,.markdown h3{color:var(--ink);font-size:16px;margin-top:15px}.markdown li{margin:4px 0}.markdown code{background:#edf3f3;padding:2px 4px;border-radius:3px}.hidden{display:none}@media(max-width:960px){nav{display:none}.columns,.case-columns{grid-template-columns:1fr}.sidebar,.case-side{position:static}.hero,.case-hero{display:block}.hero-metrics{margin-top:22px}.quality-box{margin-top:20px}.task-band{grid-template-columns:1fr}}@media(max-width:560px){.shell{padding:18px 13px 50px}.hero,.case-hero{padding:24px 21px}.hero h1{font-size:25px}.hero-metrics{gap:10px}.hero-metrics b{font-size:22px}.resource-list{grid-template-columns:1fr}}
.package-action{margin-top:16px;display:grid;gap:7px}.package-action small{display:block;max-width:600px;color:#d4edef;font-size:10px;line-height:1.45}.case-hero .package-action .button{width:max-content}
.course-map{background:#fff;border:1px solid var(--line);border-radius:13px;padding:19px;margin:23px 0}.course-map-details>summary{cursor:pointer;color:var(--brand);font-weight:700;font-size:13px}.course-map-content{margin-top:13px}.course-heading{display:flex;justify-content:space-between;gap:20px;align-items:end;border-bottom:1px solid #edf1f2;padding-bottom:11px}.course-heading h2{font-size:22px;margin:2px 0 0}.course-heading p{font-size:11px;color:var(--muted);margin:0}.course-phases{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin-top:14px}.course-phase{background:#f5f9f9;border-radius:10px;padding:12px;position:relative}.phase-no{font-size:10px;color:var(--brand);font-weight:800;letter-spacing:.12em}.course-phase h3{font-size:13px;line-height:1.35;margin:5px 0}.course-phase>p{font-size:10px;color:var(--muted);min-height:45px;margin:0}.course-phase ol{list-style:none;margin:9px 0 0;padding:0;display:grid;gap:5px}.course-phase li a{display:grid;grid-template-columns:23px 1fr;gap:5px;text-decoration:none;background:#fff;border:1px solid #e3ebed;border-radius:7px;padding:6px;font-size:10px}.course-phase li b{color:var(--brand)}.course-phase li span{color:var(--ink)}.course-phase li small{grid-column:2;color:var(--muted);font-size:9px}@media(max-width:960px){.course-phases{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.course-phases{grid-template-columns:1fr}.course-heading{display:block}.course-heading p{margin-top:8px}}

/* Readable teaching document views */
.resource-actions{display:flex;gap:6px;align-items:center;flex:none}.resource-actions .text-button{display:inline-flex;align-items:center;justify-content:center}
.modal-card{width:min(1000px,calc(100vw - 30px));padding:27px 32px}.markdown{font-size:14px;line-height:1.72;overflow-wrap:anywhere}.markdown>h1{font-size:24px;margin:0 0 18px;padding-bottom:13px;border-bottom:1px solid var(--line)}.markdown h2{font-size:18px;margin:27px 0 11px;padding-bottom:7px;border-bottom:1px solid #eaf0f1}.markdown h3{font-size:15px;margin:19px 0 8px}.markdown p{margin:9px 0;color:#3d5662}.markdown ul,.markdown ol{padding-left:24px;margin:8px 0 14px;color:#3d5662}.markdown li{margin:5px 0;padding-left:2px}.markdown strong{color:#173c47}.markdown a{color:var(--brand);text-decoration:underline;text-underline-offset:2px}.markdown blockquote{margin:14px 0;padding:10px 15px;border:1px solid #b7d8d4;box-shadow:inset 3px 0 0 #5aa3a5;background:#f1f8f7;color:#49636b;border-radius:0 7px 7px 0}.markdown code{font:12px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;background:#edf3f3;padding:2px 5px;border-radius:4px;overflow-wrap:anywhere}.markdown .code-block,.yaml-source{background:#122932;color:#e3f1f0;padding:16px 18px;border-radius:9px;overflow:auto;font:12px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre;tab-size:2}.markdown .code-block code,.yaml-source code{background:none;color:inherit;padding:0}.table-wrap{width:100%;overflow:auto;margin:12px 0 18px;border:1px solid #dce7e8;border-radius:8px}.markdown table{border-collapse:collapse;width:100%;min-width:620px;font-size:12px;line-height:1.55;background:#fff}.markdown th,.markdown td{padding:9px 11px;text-align:left;vertical-align:top;border-bottom:1px solid #e8eff0}.markdown th{background:#edf6f5;color:#164d56;font-weight:700;white-space:nowrap}.markdown tr:last-child td{border-bottom:0}.markdown tbody tr:nth-child(even){background:#fafcfc}.markdown hr{border:0;border-top:1px solid var(--line);margin:17px 0}.yaml-source{max-height:65vh}.source-banner{display:flex;gap:12px;align-items:baseline;background:#fff6e9;border:1px solid #f1dfc1;border-radius:8px;padding:11px 13px;margin-bottom:13px;color:#79542b;font-size:12px}.source-banner span{color:#796f61}
@media(max-width:700px){.modal-card{padding:23px 17px}.markdown table{min-width:560px}.resource-card{align-items:flex-start}.resource-actions{flex-direction:column;align-items:stretch}}


/* Structured resource dashboards */
.resource-shell{max-width:1480px}.resource-hero{align-items:flex-end}.resource-hero h1{max-width:800px}.resource-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:22px;margin-top:22px}.resource-main{min-width:0}.resource-side{min-width:0}.path-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.path-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:16px;min-height:390px}.path-card-top{display:flex;align-items:center;justify-content:space-between}.path-card h3{font-size:16px;line-height:1.4;margin:10px 0 7px}.path-card>p{color:#4d6670;font-size:12px;min-height:62px;margin:0}.path-card ol{list-style:none;padding:0;margin:12px 0;display:grid;gap:6px}.path-card li a{display:grid;grid-template-columns:26px 1fr;gap:5px;text-decoration:none;background:#f4f9f9;border:1px solid #e1eded;border-radius:7px;padding:7px;font-size:11px}.path-card li b{color:var(--brand)}.path-card li span{color:var(--ink);line-height:1.35}.path-card li small{grid-column:2;color:var(--muted);font-size:10px}.path-output{border-top:1px solid #edf1f2;padding-top:10px;font-size:11px;color:#4d6670}.path-output b{display:block;color:var(--brand);margin-bottom:2px}.reference-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.reference-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px}.reference-card h3{font-size:15px;margin:0;color:var(--ink)}.reference-card-head{display:flex;gap:8px;align-items:flex-start;margin-bottom:10px}.reference-card p{font-size:12px;color:#4d6670;margin:7px 0;line-height:1.55}.reference-card small{display:block;background:#fff8e8;border:1px solid #f1dfc1;box-shadow:inset 3px 0 0 #d49a46;padding:8px 10px;color:#76582d;font-size:11px;line-height:1.5;margin-top:10px}.qa-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin-bottom:15px}.qa-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px}.qa-card b{display:block;font-size:31px;line-height:1;color:var(--brand)}.qa-card span,.qa-card small{display:block}.qa-card span{font-weight:700;margin-top:5px}.qa-card small{color:var(--muted);font-size:11px;margin-top:5px}.qa-card.good{background:#f2faf6;border-color:#b8dec8}.qa-card.good b{color:#278058}.qa-card.bad{background:#fff5ee;border-color:#efc8a5}.qa-card.bad b{color:#ae632b}.qa-columns{display:grid;grid-template-columns:1fr 1fr;gap:13px}.qa-columns h3{margin-top:0;font-size:15px}.qa-columns li{font-size:12px;line-height:1.6;margin:8px 0;color:#4d6670}.resource-warning{margin:17px 0;border:1px solid #f1dfc1;box-shadow:inset 3px 0 0 #d49a46;background:#fff8e8;color:#6d512b}.resource-warning p{margin:4px 0;font-size:12px}.nav-tools{position:relative;font-size:12px;color:var(--muted)}.nav-tools summary{list-style:none;cursor:pointer;padding:24px 0;border-bottom:2px solid transparent}.nav-tools summary::-webkit-details-marker{display:none}.nav-tools[open] summary,.nav-tools summary:hover{color:var(--brand);border-color:var(--brand)}.nav-menu{position:absolute;z-index:30;right:0;top:58px;display:grid;min-width:180px;padding:7px;background:#fff;border:1px solid var(--line);border-radius:9px;box-shadow:0 12px 30px #143b4618}.nav-menu a{padding:9px 11px!important;border:0!important;white-space:nowrap}.nav-menu a:hover{background:#f0f7f7}.button{border:0}.notice{border:1px solid #f1dfc1;box-shadow:inset 3px 0 0 #d49a46;background:#fff8e8;padding:12px 16px;margin:16px 0;color:#6d512b;border-radius:7px}.notice b{color:#60451e}
@media(max-width:1120px){.path-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.resource-layout{grid-template-columns:minmax(0,1fr) 240px}}
@media(max-width:960px){.resource-layout{grid-template-columns:1fr}.resource-side{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.resource-side .side-box{margin:0}.nav-tools{display:none}}
@media(max-width:600px){.path-grid,.reference-grid,.qa-summary,.qa-columns,.resource-side{grid-template-columns:1fr}.resource-hero{display:block}.resource-hero .hero-metrics{margin-top:20px}}

/* Keep the platform navigation usable on narrow windows. */
.main-nav a:focus-visible,.nav-tools summary:focus-visible,.nav-menu a:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:4px}
@media(max-width:960px){.topbar{height:auto;min-height:70px;flex-wrap:wrap;padding-top:10px;padding-bottom:8px;gap:10px 18px}.main-nav{display:flex;order:3;width:100%;overflow-x:auto;gap:18px;padding-bottom:2px}.main-nav a{padding:8px 0;white-space:nowrap}.nav-tools{display:block;flex:none}.nav-tools summary{padding:8px 0;white-space:nowrap}.nav-menu{top:34px;right:auto;left:0}.service{margin-left:auto}}
.trace-table{border-collapse:collapse;width:100%;min-width:1000px;background:#fff;font-size:11px;line-height:1.5}.trace-table th,.trace-table td{padding:9px 10px;border-bottom:1px solid #e8eff0;text-align:left;vertical-align:top;max-width:280px;overflow-wrap:anywhere}.trace-table th{background:#edf6f5;color:#164d56;position:sticky;top:0}.trace-table code{font:10px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;color:#45616a}

@media(max-width:960px){.focus-band{grid-template-columns:1fr}.focus-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.focus-grid{grid-template-columns:1fr}}
.archive-links{margin:10px 0;border-top:1px solid #edf1f2;border-bottom:1px solid #edf1f2}.archive-links summary{cursor:pointer;padding:11px 0;color:var(--brand);font-size:12px;list-style:none}.archive-links summary::-webkit-details-marker{display:none}.archive-links summary:after{content:'+';float:right;font-weight:700}.archive-links[open] summary:after{content:'-'}.archive-links .resource-link{margin-left:8px}

/* 图文叙事：首页精选图件与逐案 Notebook 结果图册 */
.visual-story,.visual-results{background:#fff;border:1px solid var(--line);border-radius:13px;padding:19px;margin:23px 0}.visual-story .section-heading,.visual-results .section-heading{margin-bottom:12px}.featured-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.featured-card{margin:0;border:1px solid #e0e9ec;border-radius:11px;overflow:hidden;background:#f8fbfb;transition:transform .16s,box-shadow .16s}.featured-card:hover{transform:translateY(-2px);box-shadow:0 12px 26px #143b4614}.featured-card a{display:block;text-decoration:none}.featured-card img{display:block;width:100%;height:145px;object-fit:cover;background:#edf5f5}.featured-copy{padding:12px 13px}.featured-copy h3{font-size:14px;line-height:1.4;margin:5px 0 6px}.featured-copy p{font-size:11px;line-height:1.45;color:#4d6670;min-height:33px;margin:0 0 8px}.figure-status{display:inline-block;font-size:10px;padding:3px 7px;background:#fff3e7;color:var(--orange);border-radius:99px}.visual-note{margin:0 0 13px;color:var(--muted);font-size:12px;line-height:1.6}.figure-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.figure-card{margin:0;border:1px solid #e0e9ec;border-radius:10px;overflow:hidden;background:#fbfdfd}.figure-card>a{display:block;background:#eef5f5}.figure-card img{display:block;width:100%;height:260px;object-fit:contain;background:#f4f8f8}.figure-card figcaption{display:grid;gap:4px;padding:10px 12px}.figure-card figcaption b{font-size:12px;line-height:1.5}.figure-card figcaption span,.figure-card figcaption small{font-size:10px;color:var(--muted);line-height:1.45}.figure-card figcaption a{color:var(--brand);text-decoration:underline}.visual-results.empty{padding:22px}.visual-results.empty p{color:var(--muted)}
@media(max-width:960px){.featured-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.figure-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.featured-gallery,.figure-gallery{grid-template-columns:1fr}.featured-card img{height:190px}.figure-card img{height:220px}}
@media(prefers-reduced-motion:reduce){.featured-card{transition:none}.featured-card:hover,.case-card:hover{transform:none}}


/* --- Ecological Atlas editorial layer: DESIGN.md Phase C --- */

:root{
  color-scheme:light;
  --bg:#f4f6f1;--surface:#fcfdf9;--surface-alt:#e9f0eb;--surface-hover:#f0f6f1;
  --hero-forest:#173f32;--hero-ink:#f5f7f1;--border:#d7e1da;--border-strong:#a8bdb0;--border-hover:#6f9b81;
  --text:#182c24;--text-secondary:#52665b;--text-tertiary:#738378;--text-on-dark:#f5f7f1;--text-on-dark-muted:#d2e0d7;
  --accent:#24684f;--accent-hover:#174f3c;--accent-soft:#e0eee6;--water:#2d7781;--water-soft:#e2f0f0;
  --earth:#a9663c;--earth-soft:#f3e8de;--focus:#c47b32;--success:#28794f;--warning:#94601e;
  --bg-rgb:244,246,241;--surface-rgb:252,253,249;--ink-rgb:24,44,36;--forest-rgb:23,63,50;--accent-rgb:36,104,79;
  --water-rgb:45,119,129;--focus-rgb:196,123,50;--offwhite-rgb:245,247,241;--forest-glow-rgb:71,141,116;--map-line-rgb:211,224,215;--leaf-pale-rgb:197,230,213;--black-rgb:0,0,0;--forest-mid:#245b4b;--forest-deep:#1c4139;--leaf-pale:#c5e6d5;--map-ramp-a:#d5e5b8;--map-ramp-b:#84c3a3;--font-sans:"Noto Sans SC","Microsoft YaHei","PingFang SC",system-ui,sans-serif;--font-display:"Noto Sans SC","DM Sans","Microsoft YaHei",sans-serif;--font-mono:"Source Code Pro",Consolas,"Cascadia Code",monospace;--radius-sm:8px;--radius-md:14px;--radius-lg:22px;--radius-xl:30px;
  --shadow-card:0 8px 28px rgba(var(--ink-rgb),.07);--shadow-pop:0 18px 48px rgba(var(--ink-rgb),.13);--shadow-nav:0 4px 20px rgba(var(--ink-rgb),.08);--code-bg:#172721;--code-text:#e2f0e4;--surface-alt-rgb:233,240,235;
  /* compatibility aliases for older templates */
  --ink:var(--text);--muted:var(--text-secondary);--line:var(--border);--soft:var(--bg);--brand:var(--accent);
  --teal:var(--accent-soft);--orange:var(--earth);
}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:"Noto Sans SC","Microsoft YaHei","PingFang SC",system-ui,sans-serif;font-size:16px;line-height:1.75;letter-spacing:.02em}
button,input,select{font:inherit}
.topbar.site-header{position:sticky;top:0;z-index:50;min-height:76px;height:auto;padding:0 max(28px,calc((100vw - 1380px)/2));background:rgba(var(--surface-rgb),.94);border-bottom:1px solid var(--border);box-shadow:none;transition:min-height 180ms ease,box-shadow 180ms ease,background-color 180ms ease}
.site-header.is-scrolled{min-height:66px;background:rgba(var(--surface-rgb),.98);box-shadow:var(--shadow-nav)}
.brand{min-height:52px;gap:13px;color:var(--text)}
.brand>b{width:42px;height:42px;border-radius:13px;background:var(--hero-forest);color:var(--hero-ink);font:700 11px/1 "DM Sans",sans-serif;letter-spacing:.16em;box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}
.brand strong{font:700 15px/1.35 var(--font-sans,"Noto Sans SC",sans-serif);letter-spacing:.01em}
.brand small{font-size:11px;color:var(--text-tertiary);line-height:1.45}
.main-nav{gap:4px;font-size:13px}
.main-nav a{min-height:44px;padding:0 11px;display:inline-flex;align-items:center;border:0;border-radius:var(--radius-sm);color:var(--text-secondary);transition:background-color 160ms ease,color 160ms ease}
.main-nav a:hover{color:var(--accent);background:var(--accent-soft);border:0}
.main-nav a.active,.main-nav a[aria-current=page]{color:var(--accent-hover);background:var(--accent-soft);font-weight:700;border:0}
.main-nav a:focus-visible,.nav-toggle:focus-visible,.button:focus-visible,.resource-tile:focus-visible,.section-jump a:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.service{font-size:12px;color:var(--text-tertiary)}
.service i{width:8px;height:8px;background:var(--focus)}
.service i.ok{background:var(--success)}
.nav-toggle{display:none;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-sm);width:44px;height:44px;padding:10px;cursor:pointer}
.nav-toggle i{display:block;height:2px;background:var(--accent);margin:4px 0;border-radius:2px}
.mobile-nav-scrim{display:none}

.atlas-home{max-width:1380px;margin:0 auto;padding:36px 28px 88px}
.atlas-hero{position:relative;display:grid;grid-template-columns:minmax(0,1.02fr) minmax(420px,.98fr);min-height:570px;overflow:hidden;border-radius:var(--radius-xl);background:var(--hero-forest);color:var(--hero-ink);box-shadow:var(--shadow-pop)}
.atlas-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 78% 14%,rgba(var(--forest-glow-rgb),.36),transparent 35%),linear-gradient(125deg,rgba(23,63,50,1),rgba(23,63,50,.82) 60%,rgba(30,88,76,.7));pointer-events:none}
.atlas-hero__copy{position:relative;z-index:2;padding:68px 38px 48px 58px;display:flex;flex-direction:column;justify-content:center}
.atlas-hero .eyebrow{color:var(--text-on-dark-muted);font-size:11px}
.atlas-hero h1{max-width:680px;margin:16px 0 20px;font-size:clamp(42px,5vw,68px);line-height:1.18;letter-spacing:-.04em;font-weight:800}
.atlas-hero h1 em{font-style:normal;color:var(--leaf-pale)}
.atlas-hero__lead{max-width:620px;margin:0;color:var(--text-on-dark-muted);font-size:18px;line-height:1.9}
.hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px}
.button{min-height:48px;padding:0 20px;border:1px solid var(--accent);border-radius:999px;background:var(--accent);color:var(--text-on-dark);font-size:14px;font-weight:700;letter-spacing:.02em;transition:transform 180ms ease,box-shadow 180ms ease,background-color 180ms ease,border-color 180ms ease}
.button:hover{background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:var(--shadow-card);transform:translateY(-2px)}
.button:active{transform:translateY(0) scale(.98);box-shadow:none}
.button--on-dark{background:var(--surface);border-color:var(--surface);color:var(--hero-forest)}
.button--on-dark:hover{background:var(--surface-alt);border-color:var(--surface-alt);color:var(--hero-forest)}
.button--ghost-on-dark{background:transparent;border-color:rgba(var(--offwhite-rgb),.5);color:var(--hero-ink)}
.button--ghost-on-dark:hover{background:rgba(var(--offwhite-rgb),.12);border-color:var(--hero-ink)}
.button--secondary{background:transparent;border-color:var(--border-strong);color:var(--accent)}
.button--secondary:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-hover)}
.hero-proof{display:flex;gap:20px;flex-wrap:wrap;margin-top:36px;padding-top:18px;border-top:1px solid rgba(var(--offwhite-rgb),.2);color:var(--text-on-dark-muted);font-size:12px}
.hero-proof span{display:grid;gap:1px}.hero-proof b{font:700 22px/1 "DM Sans","Noto Sans SC",sans-serif;color:var(--hero-ink)}
.atlas-hero__visual{position:relative;z-index:1;min-height:420px;padding:42px 38px 42px 0;display:flex;align-items:center}
.hero-map-frame{position:relative;width:100%;height:410px;overflow:hidden;border:1px solid rgba(var(--offwhite-rgb),.26);border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--forest-mid),var(--forest-deep));box-shadow:0 26px 60px rgba(var(--black-rgb),.2)}
.hero-map-frame:after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 35%,rgba(var(--offwhite-rgb),.1),transparent 66%);mix-blend-mode:screen;pointer-events:none}
.hero-map-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(var(--map-line-rgb),.12) 1px,transparent 1px),linear-gradient(90deg,rgba(var(--map-line-rgb),.12) 1px,transparent 1px);background-size:34px 34px;transform:perspective(500px) rotateX(58deg) scale(1.7);transform-origin:center bottom;opacity:.55}
.hero-map-contours{position:absolute;inset:-12%;background:repeating-radial-gradient(ellipse at 55% 45%,transparent 0 26px,rgba(var(--leaf-pale-rgb),.18) 27px 28px,transparent 29px 48px);transform:rotate(-9deg);opacity:.8}
.hero-map-frame img{position:absolute;inset:14px;width:calc(100% - 28px);height:calc(100% - 28px);object-fit:cover;opacity:0;transition:opacity 500ms ease;mix-blend-mode:screen;border-radius:16px}
.hero-map-frame.has-image img{opacity:.42}
.hero-map-legend{position:absolute;left:20px;right:20px;bottom:17px;z-index:2;display:flex;gap:14px;align-items:center;color:var(--text-on-dark-muted);font-size:10px}
.hero-map-legend i{display:inline-block;width:20px;height:7px;margin-right:4px;border-radius:99px;vertical-align:middle}.legend-ramp{background:linear-gradient(90deg,var(--map-ramp-a),var(--map-ramp-b),var(--water))}.legend-dot{width:7px!important;height:7px!important;background:var(--focus)}.mono{margin-left:auto;font:10px "Source Code Pro",monospace;color:rgba(var(--offwhite-rgb),.72)}
.hero-map-caption{position:absolute;left:20px;top:18px;z-index:2;display:grid;gap:3px}.hero-map-caption span{font:600 11px "Source Code Pro",monospace;color:var(--leaf-pale)}.hero-map-caption b{font-size:18px}.hero-map-caption small{font-size:10px;color:var(--text-on-dark-muted)}
.section-jump{position:sticky;top:75px;z-index:30;display:flex;gap:8px;max-width:900px;margin:-27px auto 66px;padding:9px;background:rgba(var(--surface-rgb),.92);border:1px solid var(--border);border-radius:999px;box-shadow:var(--shadow-card);backdrop-filter:blur(10px)}
.section-jump a{flex:1;min-height:42px;display:flex;align-items:center;justify-content:center;gap:8px;border-radius:999px;color:var(--text-secondary);text-decoration:none;font-size:13px;transition:background-color 160ms ease,color 160ms ease}
.section-jump a:hover{background:var(--accent-soft);color:var(--accent)}
.section-jump a span{font:600 10px "Source Code Pro",monospace;color:var(--accent)}
.atlas-intro{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:60px;align-items:end;padding:26px 5% 72px;border-bottom:1px solid var(--border)}
.atlas-intro h2{margin:8px 0 0;font-size:clamp(30px,4vw,44px);line-height:1.28;letter-spacing:-.03em}
.atlas-intro>p{max-width:600px;margin:0;color:var(--text-secondary);font-size:17px;line-height:1.9}
.atlas-section{padding-top:74px;scroll-margin-top:120px}
.atlas-heading{align-items:center;margin-bottom:22px;padding-bottom:16px;border-bottom:1px solid var(--border)}
.atlas-heading h2{font-size:clamp(25px,3vw,36px);line-height:1.35;margin:6px 0 0;letter-spacing:-.025em}
.atlas-heading .muted{font-size:13px;color:var(--text-tertiary)}
.atlas-heading .text-link{font-size:13px}
.text-link{color:var(--accent);text-decoration:underline;text-decoration-color:transparent;text-underline-offset:.25em;transition:color 160ms ease,text-decoration-color 160ms ease}.text-link:hover{color:var(--accent-hover);text-decoration-color:currentColor}
.path-ribbon{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.path-ribbon article{position:relative;min-height:215px;padding:24px 20px 20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);transition:transform 220ms ease,box-shadow 220ms ease,border-color 220ms ease}
.path-ribbon article:nth-child(2){background:var(--surface-alt)}.path-ribbon article:nth-child(3){background:var(--water-soft)}.path-ribbon article:nth-child(4){background:var(--earth-soft)}
.path-ribbon article:hover{transform:translateY(-5px);border-color:var(--border-hover);box-shadow:var(--shadow-card)}
.path-index{display:inline-flex;width:34px;height:34px;align-items:center;justify-content:center;border:1px solid currentColor;border-radius:50%;color:var(--accent);font:600 11px "Source Code Pro",monospace}
.path-ribbon h3{margin:24px 0 7px;font-size:20px}.path-ribbon p{min-height:54px;margin:0;color:var(--text-secondary);font-size:14px;line-height:1.65}.path-ribbon small{display:block;margin-top:16px;color:var(--text-tertiary);font-size:11px}
.visual-story{padding:24px;margin-top:74px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}
.section-note{margin:-5px 0 18px;color:var(--text-secondary);font-size:14px}
.featured-gallery{grid-template-columns:1.35fr 1fr 1fr;gap:14px}
.featured-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);overflow:hidden;transition:transform 220ms ease,box-shadow 220ms ease,border-color 220ms ease}
.featured-card:first-child{grid-row:span 2}.featured-card:hover{transform:translateY(-5px);border-color:var(--border-hover);box-shadow:var(--shadow-card)}
.featured-media{position:relative;overflow:hidden;background:var(--surface-alt)}.featured-card img{height:188px;transition:transform 500ms cubic-bezier(.16,1,.3,1)}.featured-card:first-child img{height:392px}.featured-card:hover img{transform:scale(1.035)}
.media-index{position:absolute;left:12px;top:12px;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:rgba(var(--forest-rgb),.88);color:var(--hero-ink);font:600 11px "Source Code Pro",monospace}
.featured-copy{padding:14px 15px}.featured-copy h3{font-size:17px;margin:5px 0 7px;line-height:1.45}.featured-copy p{min-height:39px;font-size:12px;color:var(--text-secondary);line-height:1.55}
.case-catalog{padding-top:86px}.atlas-filter{align-items:center;margin:0 0 22px;padding:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-card)}
.search-field{position:relative;flex:1;min-width:250px}.search-field span{position:absolute;left:14px;top:8px;color:var(--accent);font-size:25px;line-height:1}.search-field input{width:100%;height:48px;padding:0 14px 0 42px;border:1px solid var(--border);border-radius:999px;background:var(--bg);color:var(--text);font-size:14px}.atlas-filter select{height:48px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text-secondary);padding:0 15px;font-size:13px}
.case-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.case-card{min-height:308px;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:none;transition:transform 220ms ease,box-shadow 220ms ease,border-color 220ms ease}
.case-card:hover{transform:translateY(-5px);border-color:var(--border-hover);box-shadow:var(--shadow-card)}
.case-card h3{font-size:19px;line-height:1.42;margin:13px 0 8px}.summary{min-height:50px;font-size:14px;line-height:1.7;color:var(--text-secondary)}.pill{padding:4px 10px;border:1px solid var(--border);background:var(--surface-alt);color:var(--text-secondary);font-size:11px}.pill.status{background:var(--earth-soft);color:var(--earth)}.resource-strip{display:grid;gap:5px;margin-top:16px;padding:10px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);font-size:11px;color:var(--text-tertiary)}.card-foot{gap:9px;flex-wrap:wrap}.card-foot small{font-size:11px}.card-foot .button{min-height:38px;padding:0 13px;font-size:11px}
.resource-entry{padding-top:92px}.resource-bento{display:grid;grid-template-columns:1.3fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:13px}.resource-tile{min-height:175px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:8px;padding:23px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);text-decoration:none;transition:transform 220ms ease,box-shadow 220ms ease,border-color 220ms ease;background-image:linear-gradient(145deg,rgba(var(--accent-rgb),.04),transparent 55%)}
.resource-tile:hover{transform:translateY(-5px);border-color:var(--border-hover);box-shadow:var(--shadow-card)}.resource-tile--wide{grid-row:span 2;min-height:365px;background:linear-gradient(145deg,var(--accent-soft),var(--surface))}
.resource-tile--accent{background:linear-gradient(145deg,var(--earth-soft),var(--surface))}
.tile-kicker{font:600 11px "Source Code Pro",monospace;letter-spacing:.1em;color:var(--accent)}.resource-tile strong{font-size:22px;line-height:1.35}.resource-tile small{max-width:370px;color:var(--text-secondary);font-size:13px;line-height:1.65}.resource-tile b{margin-top:auto;color:var(--accent);font-size:13px}
.share-note{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(260px,.85fr);gap:30px;align-items:center;margin-top:92px;padding:30px 34px;background:var(--hero-forest);border-radius:var(--radius-lg);color:var(--hero-ink)}
.share-note h2{font-size:26px;margin:8px 0}.share-note p{max-width:680px;margin:0;color:var(--text-on-dark-muted);font-size:14px;line-height:1.8}.share-note__steps{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.share-note__steps span{display:grid;gap:9px;padding:14px 12px;border:1px solid rgba(var(--offwhite-rgb),.22);border-radius:var(--radius-sm);color:var(--text-on-dark-muted);font-size:12px}.share-note__steps b{font:700 18px "Source Code Pro",monospace;color:var(--leaf-pale)}
.site-footer{border-top:1px solid var(--border);background:var(--surface);color:var(--text-secondary)}.site-footer__inner{max-width:1380px;margin:auto;padding:35px 28px;display:grid;grid-template-columns:1.3fr 1fr auto;gap:26px;align-items:center}.site-footer b{color:var(--text);font-size:14px}.site-footer p{margin:7px 0 0;font-size:12px}.site-footer__links{display:flex;flex-wrap:wrap;gap:14px}.site-footer__links a{color:var(--accent);font-size:12px;text-decoration:none}.site-footer__links a:hover{text-decoration:underline}.site-footer__note{font-size:11px;white-space:nowrap}.status-dot{display:inline-block;width:7px;height:7px;margin-right:5px;border-radius:50%;background:var(--success)}
.will-reveal{opacity:0;transform:translateY(20px);transition:opacity 650ms ease var(--reveal-delay,0ms),transform 650ms cubic-bezier(.16,1,.3,1) var(--reveal-delay,0ms)}.will-reveal.is-visible{opacity:1;transform:none}
@media(max-width:1100px){.atlas-hero{grid-template-columns:1fr}.atlas-hero__copy{padding:54px 48px 35px}.atlas-hero__visual{padding:0 48px 48px}.hero-map-frame{height:360px}.case-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.site-footer__inner{grid-template-columns:1fr 1fr}.site-footer__note{grid-column:1/-1}}
@media(max-width:780px){.topbar.site-header{padding:10px 16px}.nav-toggle{display:block;margin-left:auto}.main-nav{position:fixed;z-index:60;top:0;right:0;bottom:0;width:min(320px,84vw);display:flex;flex-direction:column;align-items:stretch;padding:100px 20px 25px;background:var(--surface);box-shadow:-20px 0 50px rgba(var(--ink-rgb),.16);transform:translateX(105%);transition:transform 220ms ease}.nav-open .main-nav{transform:translateX(0)}.main-nav a{justify-content:flex-start;height:52px}.nav-open .mobile-nav-scrim{display:block;position:fixed;inset:0;z-index:55;background:rgba(var(--ink-rgb),.3)}.service{display:none}.atlas-home{padding:20px 15px 55px}.atlas-hero{border-radius:var(--radius-lg)}.atlas-hero__copy{padding:44px 25px 28px}.atlas-hero h1{font-size:40px}.atlas-hero__lead{font-size:16px}.atlas-hero__visual{padding:0 25px 25px}.hero-map-frame{height:300px}.section-jump{position:relative;top:auto;margin:-23px 10px 42px;display:grid;grid-template-columns:repeat(2,1fr);border-radius:var(--radius-md)}.section-jump a{min-height:44px;border-radius:var(--radius-sm)}.atlas-intro{display:block;padding:20px 3px 46px}.atlas-intro>p{margin-top:20px;font-size:15px}.atlas-section{padding-top:56px}.path-ribbon{grid-template-columns:repeat(2,minmax(0,1fr))}.featured-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.featured-card:first-child{grid-row:auto}.featured-card:first-child img,.featured-card img{height:180px}.resource-bento{grid-template-columns:1fr 1fr}.resource-tile--wide{grid-column:1/-1;grid-row:auto;min-height:220px}.share-note{grid-template-columns:1fr;margin-top:60px;padding:25px 21px}.share-note__steps{max-width:none}.site-footer__inner{grid-template-columns:1fr;padding:28px 20px}.atlas-heading{display:block}.atlas-heading>.muted,.atlas-heading>.text-link{display:inline-block;margin-top:10px}.atlas-filter{align-items:stretch}.atlas-filter select,.atlas-filter .button{flex:1}.search-field{flex-basis:100%}}
@media(max-width:560px){body{font-size:15px}.atlas-hero h1{font-size:35px}.hero-proof{gap:13px}.hero-proof b{font-size:19px}.hero-map-legend{gap:7px;font-size:9px}.hero-map-caption{left:15px}.mono{display:none}.path-ribbon,.case-grid,.featured-gallery,.resource-bento{grid-template-columns:1fr}.path-ribbon article{min-height:185px}.visual-story{padding:17px}.featured-card:first-child img,.featured-card img{height:220px}.atlas-filter select,.atlas-filter .button{flex-basis:100%}.resource-tile--wide{min-height:205px}.resource-tile strong{font-size:20px}.share-note__steps{grid-template-columns:1fr}.site-footer__links{gap:12px}.site-footer__note{white-space:normal}.site-footer p{font-size:11px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.topbar.site-header,.button,.case-card,.featured-card,.path-ribbon article,.resource-tile,.main-nav,.will-reveal{transition:none}.will-reveal{opacity:1;transform:none}.hero-map-frame img{transition:none}}


/* Resource and literature route shells */
.resource-shell,.references,.lit-shell{max-width:1380px!important;margin:0 auto!important;padding:36px 28px 82px!important}
.resource-shell .hero,.references-hero,.lit-hero{background:var(--hero-forest)!important;border-radius:var(--radius-lg)!important;color:var(--hero-ink)!important;box-shadow:var(--shadow-card)!important}
.resource-shell .hero{padding:42px 48px!important;min-height:230px}.resource-shell .hero h1,.references-hero h1,.lit-hero h1{font-size:clamp(32px,4.5vw,56px)!important;line-height:1.25!important;letter-spacing:-.03em!important}.resource-shell .hero p,.references-hero p,.lit-hero p{color:var(--text-on-dark-muted)!important;font-size:16px!important;line-height:1.8!important}
.resource-shell .resource-layout{grid-template-columns:minmax(0,1fr) 300px!important;gap:26px!important}.path-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:14px!important}.path-card,.reference-card,.qa-card,.resource-section,.side-box,.lit-case,.source{border-color:var(--border)!important;border-radius:var(--radius-md)!important;box-shadow:none!important;background:var(--surface)!important}.path-card:hover,.reference-card:hover,.source:hover{border-color:var(--border-hover)!important;box-shadow:var(--shadow-card)!important;transform:translateY(-3px)}.path-card h3,.reference-card h3,.source h2,.lit-case h2{color:var(--text)!important}.resource-side .button{min-height:44px}.source-list{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:14px!important;margin:24px 0!important}.source{padding:20px!important;transition:transform 220ms ease,box-shadow 220ms ease,border-color 220ms ease}.source p,.lit-case>p,.lit-ref p{color:var(--text-secondary)!important;font-size:14px!important;line-height:1.75!important}.source a,.lit-ref a{color:var(--accent)!important}.notice,.lit-note,.resource-warning{border-color:var(--focus)!important;background:var(--warning-soft)!important;color:var(--warning)!important;border-radius:var(--radius-sm)!important}.lit-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:20px}.lit-actions a{min-height:42px;display:inline-flex;align-items:center;border:1px solid rgba(var(--offwhite-rgb),.4)!important;border-radius:999px!important;padding:0 15px!important;color:var(--hero-ink)!important;text-decoration:none!important}.lit-actions a:hover{background:rgba(var(--offwhite-rgb),.13)}.lit-case{margin:22px 0!important;padding:24px!important}.lit-ref{border-top-color:var(--border)!important}.lit-ref.core-paper{background:var(--accent-soft)!important;border-color:var(--border-strong)!important}.lit-id{background:var(--water-soft)!important;color:var(--water)!important}.lit-tag{background:var(--surface-alt)!important;color:var(--text-secondary)!important}.lit-tag.core{background:var(--success-soft)!important;color:var(--success)!important}
@media(max-width:1120px){.path-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.resource-shell .resource-layout{grid-template-columns:1fr!important}.source-list{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:600px){.resource-shell,.references,.lit-shell{padding:22px 15px 56px!important}.resource-shell .hero{padding:30px 24px!important}.path-grid,.source-list{grid-template-columns:1fr!important}.lit-actions a{width:100%;justify-content:center}.lit-case{padding:18px!important}}

/* Five-module home and concise module landing pages. */
.atlas-home--modules{padding-top:28px;padding-bottom:66px}
.modules-hero{min-height:510px;grid-template-columns:minmax(0,1.04fr) minmax(390px,.96fr)}
.modules-hero .atlas-hero__copy{padding-top:52px;padding-bottom:42px}
.modules-hero .atlas-hero__visual{padding:38px 38px 38px 0}
.modules-hero .hero-map-frame{height:390px;margin:0}
.modules-hero .hero-map-frame img{object-fit:contain;mix-blend-mode:normal;opacity:.72}
.modules-hero .hero-map-frame.has-image:before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(var(--forest-rgb),.12),rgba(var(--forest-rgb),.36));pointer-events:none}
.modules-hero .hero-map-grid{z-index:1;opacity:.3}
.modules-hero .hero-map-legend,.modules-hero .hero-map-caption{z-index:2}
.modules-hero .hero-map-caption{top:20px;left:22px}
.modules-hero .hero-map-legend{bottom:17px}
.module-intro{display:flex;align-items:end;justify-content:space-between;gap:30px;padding:49px 5% 30px}
.module-intro__copy{max-width:660px}.module-intro h2{margin:7px 0 10px;font-size:clamp(28px,3.2vw,40px);line-height:1.32;letter-spacing:-.025em}.module-intro__copy>p:last-child{max-width:650px;margin:0;color:var(--text-secondary);font-size:15px;line-height:1.8}
.module-intro__meta{display:flex;align-items:center;gap:17px;flex:none;color:var(--text-secondary);font-size:12px;line-height:1.7}.module-index{font:700 48px/1 var(--font-mono);color:var(--accent)}.module-index span{display:block;margin-top:5px;font:700 10px var(--font-mono);letter-spacing:.14em}.module-meta-rule{width:1px;height:56px;background:var(--border-strong)}
.module-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:13px}.module-card{position:relative;display:flex;min-height:208px;flex-direction:column;justify-content:space-between;grid-column:span 2;overflow:hidden;padding:20px 21px 17px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);color:var(--text);text-decoration:none;transition:transform 220ms ease,border-color 220ms ease,box-shadow 220ms ease,background-color 220ms ease}.module-card:after{content:"";position:absolute;right:-36px;top:24px;width:142px;height:142px;border:1px solid rgba(var(--accent-rgb),.13);border-radius:50%;box-shadow:0 0 0 19px rgba(var(--accent-rgb),.035),0 0 0 38px rgba(var(--accent-rgb),.025);pointer-events:none}.module-card:hover{transform:translateY(-4px);border-color:var(--border-hover);box-shadow:var(--shadow-card)}.module-card:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.module-card--feature{grid-column:span 3;grid-row:span 2;min-height:430px;padding:27px;background:linear-gradient(145deg,var(--accent-soft),var(--surface) 72%)}.module-card--teaching{background:linear-gradient(145deg,var(--water-soft),var(--surface) 76%)}.module-card--data{background:linear-gradient(145deg,var(--earth-soft),var(--surface) 76%)}.module-card__top,.module-card__foot{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between}.module-card__top>span:first-child{font:600 12px var(--font-mono);color:var(--accent);letter-spacing:.13em}.module-card__arrow{display:grid;place-items:center;width:37px;height:37px;border:1px solid var(--border-strong);border-radius:50%;color:var(--accent);font-size:17px;transition:transform 180ms ease,background-color 180ms ease}.module-card:hover .module-card__arrow{transform:translate(2px,-2px);background:var(--surface)}.module-card__body{position:relative;z-index:1;display:grid;gap:8px;max-width:460px}.module-card__eyebrow{font:600 10px var(--font-mono);letter-spacing:.12em;color:var(--text-tertiary)}.module-card__body strong{font-size:22px;line-height:1.4}.module-card--feature .module-card__body strong{font-size:32px}.module-card__body small{max-width:410px;color:var(--text-secondary);font-size:13px;line-height:1.75}.module-card__foot{margin-top:19px;padding-top:12px;border-top:1px solid rgba(var(--accent-rgb),.16);color:var(--accent);font-size:12px;font-weight:700}.module-card--feature .module-card__foot{font-size:13px}
.home-use-note{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(0,1.2fr) auto;gap:27px;align-items:center;margin-top:35px;padding:23px 25px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.home-use-note h2{margin:6px 0 0;font-size:19px;line-height:1.45}.home-use-note>p{margin:0;color:var(--text-secondary);font-size:13px;line-height:1.75}.home-use-note>a{color:var(--accent);font-size:12px;font-weight:700;text-decoration:none;white-space:nowrap}.home-use-note>a:hover{text-decoration:underline;text-underline-offset:4px}
.module-shell{max-width:1190px;margin:0 auto;padding:24px 28px 70px}.module-breadcrumb{display:flex;gap:10px;align-items:center;margin:2px 0 14px;color:var(--text-tertiary);font-size:12px}.module-breadcrumb a{color:var(--accent);text-decoration:none}.module-breadcrumb a:hover{text-decoration:underline}.module-hero{position:relative;display:flex;justify-content:space-between;align-items:center;gap:30px;min-height:270px;overflow:hidden;padding:36px 43px;border-radius:var(--radius-lg);background:linear-gradient(120deg,var(--hero-forest),var(--forest-mid));color:var(--hero-ink);box-shadow:var(--shadow-card)}.module-hero:after{content:"";position:absolute;right:90px;top:-174px;width:420px;height:420px;border:1px solid rgba(var(--offwhite-rgb),.14);border-radius:50%;box-shadow:0 0 0 30px rgba(var(--offwhite-rgb),.035),0 0 0 70px rgba(var(--offwhite-rgb),.025),0 0 0 112px rgba(var(--offwhite-rgb),.02);pointer-events:none}.module-hero__copy{position:relative;z-index:1;max-width:760px}.module-hero .eyebrow{color:var(--leaf-pale)}.module-hero h1{margin:7px 0 8px;font-size:clamp(34px,4.5vw,53px);line-height:1.25;letter-spacing:-.03em}.module-hero__copy>p:not(.eyebrow){max-width:760px;margin:0;color:var(--text-on-dark-muted);font-size:15px;line-height:1.8}.module-hero__actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:18px}.module-hero__text-link{color:var(--text-on-dark-muted);font-size:12px;text-decoration:none}.module-hero__text-link:hover{color:var(--hero-ink);text-decoration:underline;text-underline-offset:4px}.module-hero__index{position:relative;z-index:1;display:grid;justify-items:start;gap:4px;min-width:130px;padding:18px 20px;border:1px solid rgba(var(--offwhite-rgb),.2);border-radius:var(--radius-md);background:rgba(var(--offwhite-rgb),.07);backdrop-filter:blur(5px)}.module-hero__index>span{font:500 42px/1 var(--font-mono);color:var(--leaf-pale)}.module-hero__index i{width:62px;height:1px;margin:4px 0;background:rgba(var(--offwhite-rgb),.4)}.module-hero__index b{font:700 28px/1 var(--font-mono)}.module-hero__index small{color:var(--text-on-dark-muted);font-size:11px}
.module-content{margin-top:26px}.module-content__heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:14px}.module-content__heading h2{margin:5px 0 3px;font-size:25px;line-height:1.35}.module-content__heading>div>p:last-child{margin:0;color:var(--text-secondary);font-size:12px}.module-result-count{padding:7px 11px;border-radius:999px;background:var(--surface-alt);color:var(--text-secondary);font-size:11px;white-space:nowrap}
.module-search{display:flex;align-items:center;gap:9px;margin-bottom:13px;padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.module-search label{padding:0 7px;color:var(--text-secondary);font-size:12px;white-space:nowrap}.module-search input{flex:1;min-width:100px;height:42px;padding:0 13px;border:1px solid var(--border);border-radius:999px;background:var(--bg);color:var(--text);font-size:13px}.module-search .button{min-height:42px}.module-clear{padding:0 6px;color:var(--accent);font-size:12px}
.module-records{display:grid;gap:9px}.module-record{display:grid;grid-template-columns:68px minmax(0,1fr);gap:16px;padding:16px 18px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);transition:transform 180ms ease,border-color 180ms ease,box-shadow 180ms ease}.module-record:hover{transform:translateY(-2px);border-color:var(--border-hover);box-shadow:var(--shadow-card)}.module-record__index{display:grid;align-content:start;gap:3px;padding-top:4px;color:var(--accent)}.module-record__index span{font:600 9px var(--font-mono);letter-spacing:.12em}.module-record__index b{font:600 27px/1.2 var(--font-mono)}.module-record__main{min-width:0}.module-record__title-row{display:flex;align-items:start;justify-content:space-between;gap:16px}.module-record h3{margin:0;font-size:16px;line-height:1.5}.module-record h3 a{text-decoration:none}.module-record h3 a:hover{color:var(--accent)}.module-record__tag{flex:none;padding:4px 9px;border-radius:999px;background:var(--surface-alt);color:var(--text-secondary);font-size:10px}.module-record__summary{margin:6px 0 8px;color:var(--text-secondary);font-size:12px;line-height:1.65}.module-record__citation{margin:4px 0;color:var(--text-tertiary);font-size:11px;line-height:1.5}.module-record__data-status{display:flex;gap:8px;margin:5px 0 8px;color:var(--text-secondary);font-size:11px;line-height:1.55}.module-record__data-status b{flex:none;color:var(--text-tertiary)}.module-record__actions{display:flex;flex-wrap:wrap;gap:7px}.module-action{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 11px;border:1px solid var(--border);border-radius:999px;color:var(--accent);font-size:11px;text-decoration:none;transition:background-color 150ms ease,border-color 150ms ease}.module-action:hover{background:var(--accent-soft);border-color:var(--border-hover)}.module-action--primary{border-color:var(--accent);background:var(--accent);color:var(--text-on-dark)}.module-action--primary:hover{background:var(--accent-hover);color:var(--text-on-dark)}
.module-pagination{display:flex;justify-content:center;align-items:center;gap:18px;margin:18px 0 0;padding:12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text-secondary);font-size:12px}.module-pagination a{color:var(--accent);font-weight:700;text-decoration:none}.module-pagination a:hover{text-decoration:underline}.module-pagination .is-disabled{color:var(--text-tertiary)}.module-empty{padding:38px;text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius-md);background:var(--surface)}.module-empty b{font-size:18px}.module-empty p{margin:5px 0 14px;color:var(--text-secondary);font-size:13px}.module-shortcuts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;margin-top:19px}.module-shortcuts a{position:relative;display:grid;gap:3px;padding:15px 42px 15px 17px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);text-decoration:none}.module-shortcuts a:hover{border-color:var(--border-hover);background:var(--surface-hover)}.module-shortcuts span{font:600 9px var(--font-mono);letter-spacing:.12em;color:var(--text-tertiary)}.module-shortcuts b{font-size:13px;color:var(--text)}.module-shortcuts i{position:absolute;right:16px;top:50%;color:var(--accent);font-size:18px;font-style:normal;transform:translateY(-50%)}
/* Keep notebook figure labels outside the chart so the saved output stays legible. */
.modules-hero .hero-map-frame{background:var(--surface)}
.modules-hero .hero-map-frame:after,.modules-hero .hero-map-grid{display:none}
.modules-hero .hero-map-frame.has-image:before{display:none}
.modules-hero .hero-map-frame img{inset:12px 12px 69px;width:calc(100% - 24px);height:calc(100% - 81px);object-fit:contain;opacity:1;mix-blend-mode:normal;border-radius:8px;background:var(--surface)}
.modules-hero .hero-map-legend,.modules-hero .hero-map-caption{display:none}
.modules-hero__figcaption{position:absolute;inset:auto 0 0;display:grid;gap:2px;min-height:57px;padding:7px 18px 8px;background:var(--forest-deep);color:var(--hero-ink)}
.modules-hero__figcaption span{font:600 9px/1.2 var(--font-mono);letter-spacing:.1em;color:var(--leaf-pale)}
.modules-hero__figcaption b{font-size:12px;line-height:1.3}
.modules-hero__figcaption small{font-size:9px;line-height:1.3;color:var(--text-on-dark-muted)}
@media(max-width:620px){.modules-hero .hero-map-frame img{inset:8px 8px 66px;width:calc(100% - 16px);height:calc(100% - 74px)}.modules-hero__figcaption{min-height:56px;padding:7px 12px}.modules-hero__figcaption b{font-size:11px}.modules-hero__figcaption small{font-size:8px}}
@media(max-width:1100px){.modules-hero{grid-template-columns:minmax(0,1.04fr) minmax(310px,.96fr);min-height:480px}.modules-hero .atlas-hero__copy{padding:45px 28px 38px 38px}.modules-hero .atlas-hero__visual{padding:30px 30px 30px 0}.modules-hero .hero-map-frame{height:350px}}
@media(max-width:850px){.modules-hero{grid-template-columns:1fr;min-height:0}.modules-hero .atlas-hero__copy{padding:42px 35px 25px}.modules-hero .atlas-hero__visual{min-height:0;padding:10px 35px 35px}.modules-hero .hero-map-frame{height:310px}.module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.module-card,.module-card--feature{grid-column:span 1;grid-row:auto;min-height:220px}.module-card--feature{min-height:300px}.module-intro{padding-inline:2%}.home-use-note{grid-template-columns:1fr 1.3fr}.home-use-note>a{grid-column:2}.module-hero{padding:30px}.module-hero__index{min-width:110px}}
@media(max-width:620px){.atlas-home--modules{padding:16px 14px 48px}.modules-hero{border-radius:var(--radius-lg)}.modules-hero .atlas-hero__copy{padding:32px 22px 22px}.modules-hero .atlas-hero h1{font-size:35px}.modules-hero .atlas-hero__lead{font-size:14px;line-height:1.75}.modules-hero .hero-actions{display:grid;grid-template-columns:1fr}.modules-hero .hero-actions .button{width:100%}.modules-hero .hero-proof{gap:13px;margin-top:23px}.modules-hero .hero-proof span{min-width:calc(50% - 7px)}.modules-hero .atlas-hero__visual{padding:4px 18px 20px}.modules-hero .hero-map-frame{height:255px;border-radius:15px}.modules-hero .hero-map-caption{left:13px;top:12px}.modules-hero .hero-map-caption b{font-size:15px}.modules-hero .hero-map-caption small{max-width:220px;font-size:9px}.modules-hero .hero-map-legend{left:13px;right:13px;bottom:11px;gap:8px;font-size:9px}.modules-hero .mono{display:none}.module-intro{display:block;padding:32px 4px 18px}.module-intro h2{font-size:28px}.module-intro__copy>p:last-child{font-size:13px}.module-intro__meta{margin-top:19px}.module-index{font-size:38px}.module-grid{grid-template-columns:1fr;gap:9px}.module-card,.module-card--feature{min-height:178px;padding:17px}.module-card--feature{min-height:205px}.module-card__body strong{font-size:19px}.module-card--feature .module-card__body strong{font-size:24px}.module-card__body small{font-size:12px}.module-card__foot{margin-top:12px}.home-use-note{grid-template-columns:1fr;gap:10px;margin-top:20px;padding:18px}.home-use-note>p{font-size:12px}.home-use-note>a{grid-column:auto;white-space:normal}.module-shell{padding:17px 14px 48px}.module-breadcrumb{margin-bottom:11px}.module-hero{display:block;min-height:0;padding:25px 21px;border-radius:var(--radius-md)}.module-hero h1{font-size:34px}.module-hero__copy>p:not(.eyebrow){font-size:13px;line-height:1.75}.module-hero__actions{display:grid;grid-template-columns:1fr;align-items:stretch}.module-hero__actions .button{width:100%}.module-hero__text-link{padding:4px 2px}.module-hero__index{display:none}.module-content{margin-top:22px}.module-content__heading{display:block}.module-content__heading h2{font-size:22px}.module-result-count{display:inline-block;margin-top:8px}.module-search{flex-wrap:wrap;padding:9px}.module-search label{flex:1}.module-search input{order:2;flex-basis:100%}.module-search .button{order:3;flex:1}.module-clear{order:4}.module-record{grid-template-columns:44px minmax(0,1fr);gap:10px;padding:13px 12px}.module-record__index b{font-size:21px}.module-record__title-row{display:block}.module-record h3{font-size:14px}.module-record__tag{display:inline-block;margin-top:5px}.module-record__summary{font-size:11px}.module-record__data-status{display:block;font-size:10px;overflow-wrap:anywhere}.module-record__data-status b{display:block}.module-record__actions{gap:5px}.module-action{min-height:36px;padding:0 9px;font-size:10px}.module-pagination{gap:10px;font-size:11px}.module-pagination a,.module-pagination span{min-width:70px;text-align:center}.module-pagination span:nth-child(2){min-width:90px}.module-shortcuts{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.module-card,.module-action,.module-record{transition:none}.module-card:hover,.module-record:hover{transform:none}}



/* Case detail and data catalog chrome */
.shell{max-width:1380px;padding:34px 28px 78px}
.case-shell{max-width:1380px}
.case-hero{position:relative;overflow:hidden;align-items:center;background:linear-gradient(125deg,var(--hero-forest),var(--forest-mid));border:1px solid rgba(var(--offwhite-rgb),.1);border-radius:var(--radius-lg);padding:36px 42px;box-shadow:var(--shadow-card)}
.case-hero:after{content:"";position:absolute;right:-8%;top:-48%;width:44%;aspect-ratio:1;border:1px solid rgba(var(--offwhite-rgb),.16);border-radius:50%;box-shadow:0 0 0 34px rgba(var(--offwhite-rgb),.04),0 0 0 72px rgba(var(--offwhite-rgb),.035),0 0 0 112px rgba(var(--offwhite-rgb),.03);pointer-events:none}
.case-hero h1{position:relative;z-index:1;max-width:820px;font-size:clamp(30px,4vw,46px);line-height:1.28;letter-spacing:-.025em}
.case-hero p{position:relative;z-index:1;color:var(--text-on-dark-muted);font-size:15px;line-height:1.8}
.case-hero .case-id{color:var(--leaf-pale);font:600 12px "Source Code Pro",monospace}.case-hero .pill{border-color:rgba(var(--offwhite-rgb),.2);background:rgba(var(--offwhite-rgb),.1);color:var(--hero-ink)}
.quality-box{position:relative;z-index:2;min-width:220px;background:rgba(var(--offwhite-rgb),.1);border-color:rgba(var(--offwhite-rgb),.24);border-radius:var(--radius-md);backdrop-filter:blur(8px)}
.quality-box b{font:700 32px/1.2 "DM Sans","Noto Sans SC",sans-serif;color:var(--hero-ink)}
.quality-box span,.quality-box small{color:var(--text-on-dark-muted)}
.package-action small{color:var(--text-on-dark-muted);font-size:11px;line-height:1.65}
.task-band{grid-template-columns:260px 1fr;align-items:start;margin:20px 0 24px;padding:24px 28px;background:var(--surface);border-color:var(--border);border-radius:var(--radius-md)}
.task-band h2{font-size:22px;line-height:1.4}.task-band ol{font-size:15px;line-height:1.85;color:var(--text-secondary)}.task-band li{padding-left:4px;margin:2px 0}
.case-columns{grid-template-columns:minmax(0,1fr) 300px;gap:24px}.case-columns>.case-side{position:sticky;top:90px;align-self:start}
.content-title{font-size:26px;margin:0 0 18px}.resource-section{padding:21px;margin-bottom:16px;border-radius:var(--radius-md);box-shadow:0 2px 10px rgba(var(--ink-rgb),.025)}
.resource-head{align-items:start;border-bottom-color:var(--border);padding-bottom:14px}.resource-head h3{font-size:18px}.resource-head p{font-size:13px;line-height:1.65;color:var(--text-secondary)}.resource-head>span{font-size:12px}
.resource-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:15px}.resource-card{min-width:0;align-items:flex-start;border-color:var(--border);border-radius:var(--radius-sm);padding:13px;transition:border-color 180ms ease,background-color 180ms ease}
.resource-card:hover{border-color:var(--border-hover);background:var(--surface-hover)}.resource-card>div:first-child{min-width:0}.resource-card b{font-size:14px;line-height:1.5}.resource-card small{max-width:100%;font-size:11px;line-height:1.55;white-space:normal;overflow-wrap:anywhere}
.resource-actions{flex-wrap:wrap;justify-content:flex-end}.text-button{min-height:36px;display:inline-flex;align-items:center;justify-content:center;padding:0 11px;background:var(--accent-soft);color:var(--accent);font-size:11px}.text-button:hover{background:var(--accent);color:var(--text-on-dark)}
.case-side .side-box{padding:19px;border-radius:var(--radius-md);background:var(--surface);border-color:var(--border)}.side-box h3{font-size:16px}.side-box ul,.side-box p{font-size:13px;line-height:1.75;color:var(--text-secondary)}
.visual-results{padding:23px;background:var(--surface);border-color:var(--border);border-radius:var(--radius-lg)}.figure-card{border-color:var(--border);border-radius:var(--radius-md)}.figure-card img{height:300px;background:var(--surface-alt)}.figure-card figcaption{padding:13px}.figure-card figcaption b{font-size:14px}.figure-card figcaption span,.figure-card figcaption small{font-size:12px;line-height:1.65}
.data-catalog-bar{max-width:1380px;margin:28px auto 0;padding:15px 24px;display:flex;justify-content:space-between;align-items:center;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}
.data-catalog-bar>a{font-weight:700;color:var(--accent);text-decoration:none}.data-catalog-bar nav{display:flex;gap:10px}.data-catalog-bar nav a{padding:8px 10px;color:var(--text-secondary);text-decoration:none;border:0;border-radius:var(--radius-sm)}.data-catalog-bar nav a:hover{background:var(--accent-soft);color:var(--accent)}
.data-catalog-main{max-width:1380px;margin:auto;padding:30px 28px 70px}.data-catalog-main>h1{padding:24px 0 10px;font-size:38px;color:var(--text)}.data-catalog-main>.note{max-width:980px;margin:0 0 25px;color:var(--text-secondary);font-size:15px;line-height:1.8}.data-catalog-main .card{padding:22px;margin:14px 0;background:var(--surface);border-color:var(--border);border-radius:var(--radius-md);box-shadow:none}.data-catalog-main .card h2{font-size:20px;color:var(--text)}.data-catalog-main .card a{color:var(--accent)}.data-catalog-main .tag{color:var(--warning);background:var(--warning-soft)}
@media(max-width:960px){.case-columns{grid-template-columns:1fr}.case-columns>.case-side{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.task-band{grid-template-columns:1fr}.figure-card img{height:250px}.data-catalog-bar,.data-catalog-main{margin:0 15px;padding-left:17px;padding-right:17px}.data-catalog-bar{flex-wrap:wrap;gap:10px}}
@media(max-width:600px){.shell{padding:22px 15px 55px}.case-hero{padding:28px 23px}.case-hero:after{right:-22%;top:-30%;width:76%}.quality-box{width:100%;min-width:0}.case-columns>.case-side{grid-template-columns:1fr}.resource-list{grid-template-columns:1fr}.resource-card{display:grid}.resource-actions{justify-content:flex-start}.task-band{padding:20px}.figure-card img{height:220px}.data-catalog-bar{margin:12px 12px 0;padding:13px}.data-catalog-bar nav{width:100%;overflow:auto}.data-catalog-main{margin:0;padding:22px 12px 48px}.data-catalog-main>h1{font-size:28px}.data-catalog-main .card{padding:17px}}

/* Notebook and resource preview pages. They share the atlas system but use a
   reading-oriented rhythm so methods, code and saved outputs stay distinct. */
.preview-shell{max-width:1380px;margin:0 auto;padding:36px 28px 88px}.preview-hero{position:relative;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:28px;overflow:hidden;min-height:355px;padding:46px 50px;background:var(--hero-forest);border-radius:var(--radius-xl);color:var(--hero-ink);box-shadow:var(--shadow-pop)}.preview-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 82% 10%,rgba(var(--forest-glow-rgb),.38),transparent 38%),linear-gradient(128deg,rgba(var(--forest-deep),.8),transparent 70%);pointer-events:none}.preview-hero__copy,.preview-hero__stats,.preview-hero__mark{position:relative;z-index:1}.preview-breadcrumb{display:inline-flex;min-height:36px;align-items:center;margin-bottom:24px;color:var(--text-on-dark-muted);font-size:13px;text-decoration:none}.preview-breadcrumb:hover{color:var(--hero-ink)}.preview-hero .eyebrow{color:var(--text-on-dark-muted);font-size:11px}.preview-case-label{margin:11px 0 0;color:var(--leaf-pale);font:600 12px var(--font-mono);letter-spacing:.03em}.preview-hero h1{max-width:760px;margin:12px 0 8px;font-size:clamp(34px,4.6vw,58px);line-height:1.18;letter-spacing:-.035em}.preview-path{max-width:760px;margin:0;color:var(--text-on-dark-muted);font:12px/1.7 var(--font-mono);overflow-wrap:anywhere}.preview-path span{margin:0 5px;color:var(--leaf-pale)}.preview-hero__note{max-width:740px;margin:18px 0 0;color:var(--text-on-dark-muted);font-size:14px;line-height:1.75}.preview-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:25px}.preview-hero__stats{align-self:end;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;padding:16px;border:1px solid rgba(var(--offwhite-rgb),.2);border-radius:var(--radius-md);background:rgba(var(--offwhite-rgb),.08);backdrop-filter:blur(8px)}.preview-stat{display:grid;gap:3px;min-height:82px;padding:13px;border:1px solid rgba(var(--offwhite-rgb),.17);border-radius:var(--radius-sm);background:rgba(var(--offwhite-rgb),.06)}.preview-stat b{font:700 27px/1 var(--font-display)}.preview-stat span{font-size:12px;color:var(--text-on-dark-muted)}.preview-stat--wide{grid-column:1/-1;min-height:72px}.preview-stat small{font-size:10px;line-height:1.5;color:var(--text-on-dark-muted)}.preview-hero__mark{align-self:center;justify-self:end;display:grid;gap:10px;min-width:220px;padding:30px;border:1px solid rgba(var(--offwhite-rgb),.2);border-radius:var(--radius-lg);background:rgba(var(--offwhite-rgb),.07);transform:rotate(2deg)}.preview-hero__mark span{font:600 12px var(--font-mono);color:var(--leaf-pale)}.preview-hero__mark b{font-size:31px;line-height:1.22}.preview-hero__mark i{display:block;width:70px;height:2px;background:var(--leaf-pale)}.preview-jump{position:sticky;top:75px;z-index:30;display:flex;gap:8px;max-width:760px;margin:-24px auto 64px;padding:9px;background:rgba(var(--surface-rgb),.94);border:1px solid var(--border);border-radius:999px;box-shadow:var(--shadow-card);backdrop-filter:blur(10px)}.preview-jump a{flex:1;min-height:42px;display:flex;align-items:center;justify-content:center;padding:0 12px;border-radius:999px;color:var(--text-secondary);font-size:13px;text-decoration:none;transition:background-color 160ms ease,color 160ms ease}.preview-jump a:hover,.preview-jump a[aria-current=location]{background:var(--accent-soft);color:var(--accent);font-weight:700}.preview-overview{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:60px;align-items:end;padding:25px 5% 70px;border-bottom:1px solid var(--border)}.preview-overview h2{margin:8px 0 0;font-size:clamp(28px,3.8vw,42px);line-height:1.3;letter-spacing:-.03em}.preview-overview>p{max-width:640px;margin:0;color:var(--text-secondary);font-size:16px;line-height:1.9}.preview-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:28px;align-items:start;padding-top:74px}.preview-aside{position:sticky;top:100px}.preview-aside__box{padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md)}.preview-aside h2{margin:7px 0 14px;font-size:20px}.preview-aside ol{display:grid;gap:2px;margin:0;padding-left:21px}.preview-aside li{padding:4px 0;color:var(--text-secondary);font-size:13px}.preview-aside a{color:inherit;text-decoration:none}.preview-aside a:hover{color:var(--accent)}.preview-aside__hint{margin:18px 0 0;padding-top:14px;border-top:1px solid var(--border);color:var(--text-tertiary);font-size:11px;line-height:1.65}.preview-content{min-width:0}.preview-section-heading{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border)}.preview-section-heading h2{margin:6px 0 0;font-size:clamp(24px,3vw,34px);line-height:1.35}.preview-count{color:var(--text-tertiary);font-size:12px;white-space:nowrap}.notebook-section{scroll-margin-top:120px}.notebook-cells{display:grid;gap:16px}.notebook-cell{overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:0 2px 12px rgba(var(--ink-rgb),.025);scroll-margin-top:120px}.notebook-cell--markdown{background:var(--surface-alt)}.notebook-cell--error{border-color:rgba(var(--focus-rgb),.56)}.notebook-cell__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 17px;border-bottom:1px solid var(--border);background:rgba(var(--surface-alt-rgb),.48)}.notebook-cell__label,.notebook-cell__meta{display:flex;align-items:center;gap:9px}.cell-number{display:grid;place-items:center;width:31px;height:26px;border-radius:7px;background:var(--accent-soft);color:var(--accent);font:700 11px var(--font-mono)}.cell-type{font-size:12px;font-weight:700;color:var(--text)}.notebook-cell__meta{color:var(--text-tertiary);font:11px var(--font-mono)}.cell-status{padding:4px 7px;border-radius:99px;background:var(--success-soft);color:var(--success);font-family:var(--font-sans)}.cell-status--error{background:var(--warning-soft);color:var(--warning)}.cell-markdown{padding:22px 24px;color:var(--text);font-size:15px;line-height:1.85}.cell-markdown pre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font:inherit}.cell-code-wrap{position:relative;background:var(--code-bg);border-top:1px solid rgba(var(--offwhite-rgb),.07);border-bottom:1px solid rgba(var(--offwhite-rgb),.07)}.cell-code{max-height:520px;margin:0;padding:23px 24px;overflow:auto;color:var(--code-text);font:13px/1.7 var(--font-mono);tab-size:4}.cell-code code{font:inherit}.copy-code{position:absolute;right:13px;top:11px;z-index:1;min-height:32px;padding:0 10px;border:1px solid rgba(var(--offwhite-rgb),.24);border-radius:999px;background:rgba(var(--offwhite-rgb),.1);color:var(--code-text);font-size:11px;cursor:pointer}.copy-code:hover{background:rgba(var(--offwhite-rgb),.18)}.copy-code:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.cell-outputs{display:grid;gap:13px;padding:17px;background:var(--surface-alt)}.cell-figure,.cell-text-output{margin:0;padding:13px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}.cell-figure__label,.cell-output__label{display:flex;justify-content:space-between;gap:10px;margin-bottom:9px;color:var(--accent);font-size:11px;font-weight:700}.cell-figure__label span{font:10px var(--font-mono);color:var(--text-tertiary)}.cell-figure img{display:block;width:100%;max-height:620px;object-fit:contain;border:1px solid var(--border);border-radius:6px;background:var(--surface-alt)}.cell-figure figcaption{margin-top:9px;color:var(--text-tertiary);font-size:11px;line-height:1.6}.cell-text-output pre{max-height:360px;margin:0;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text-secondary);font:12px/1.65 var(--font-mono)}.notebook-results{scroll-margin-top:120px;margin-top:76px;padding:25px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.notebook-results .section-note{margin:-5px 0 18px}.result-index{display:flex;align-items:center;gap:18px;padding:16px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--accent-soft)}.result-index__number{display:grid;place-items:center;width:58px;height:58px;border-radius:50%;background:var(--hero-forest);color:var(--hero-ink);font:700 21px var(--font-mono)}.result-index b{font-size:15px}.result-index p{margin:4px 0 0;color:var(--text-secondary);font-size:13px}.result-index a{margin-left:auto;color:var(--accent);font-size:12px}.preview-delivery{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);gap:28px;align-items:center;margin-top:70px;padding:30px 34px;background:var(--hero-forest);border-radius:var(--radius-lg);color:var(--hero-ink);scroll-margin-top:120px}.preview-delivery h2{margin:7px 0 10px;font-size:27px}.preview-delivery p{max-width:620px;margin:0;color:var(--text-on-dark-muted);font-size:14px;line-height:1.8}.preview-delivery__steps{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.preview-delivery__steps span{display:grid;gap:7px;padding:13px 11px;border:1px solid rgba(var(--offwhite-rgb),.22);border-radius:var(--radius-sm);color:var(--text-on-dark-muted);font-size:11px}.preview-delivery__steps b{color:var(--leaf-pale);font:700 17px var(--font-mono)}.generic-preview{margin-top:24px;padding:26px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.generic-code{max-height:72vh;margin:0;padding:22px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--code-bg);color:var(--code-text);border-radius:var(--radius-md);font:13px/1.7 var(--font-mono)}.generic-code--error{border:1px solid rgba(var(--focus-rgb),.55);background:var(--warning-soft);color:var(--warning)}.table-scroll{overflow:auto;max-height:72vh}.preview-table{width:100%;min-width:720px;border-collapse:collapse;font-size:13px}.preview-table th,.preview-table td{padding:11px 13px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.preview-table th{position:sticky;top:0;background:var(--surface-alt);color:var(--accent);font-size:12px}.metadata-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:11px}.metadata-item{display:grid;gap:5px;padding:14px;background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-sm)}.metadata-item b{color:var(--text-tertiary);font:11px var(--font-mono)}.metadata-item span{overflow-wrap:anywhere;color:var(--text);font-size:13px;line-height:1.65}.preview-empty{padding:45px;text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius-md);color:var(--text-secondary)}
@media(max-width:900px){.preview-hero{grid-template-columns:1fr;padding:38px 34px}.preview-hero__stats{max-width:520px}.preview-hero__mark{justify-self:start}.preview-overview{display:block;padding-inline:0}.preview-overview>p{margin-top:20px}.preview-layout{grid-template-columns:1fr;padding-top:58px}.preview-aside{position:static}.preview-aside__box{display:flex;align-items:center;gap:15px;flex-wrap:wrap}.preview-aside__box h2{margin:0}.preview-aside ol{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto;padding:0}.preview-aside li{padding:0}.preview-aside li a{display:inline-flex;min-height:38px;align-items:center;padding:0 10px;border:1px solid var(--border);border-radius:999px}.preview-aside__hint{flex-basis:100%;margin:0}.preview-delivery{grid-template-columns:1fr}.preview-delivery__steps{max-width:560px}}
@media(max-width:620px){.preview-shell{padding:22px 15px 58px}.preview-hero{min-height:0;padding:29px 23px;border-radius:var(--radius-lg)}.preview-hero h1{font-size:34px}.preview-path{font-size:10px}.preview-actions{display:grid}.preview-actions .button{width:100%}.preview-hero__stats{grid-template-columns:1fr 1fr;padding:11px}.preview-stat{min-height:72px}.preview-stat--wide{min-height:68px}.preview-jump{position:relative;top:auto;margin:-18px 8px 44px;display:grid;grid-template-columns:1fr 1fr;border-radius:var(--radius-md)}.preview-jump a{min-height:44px;border-radius:var(--radius-sm)}.preview-overview{padding:20px 3px 48px}.preview-overview h2{font-size:30px}.preview-layout{padding-top:44px}.preview-aside__box{display:block}.preview-aside ol{display:grid;margin:12px 0 0;padding-left:20px}.preview-aside__hint{margin-top:15px;padding-top:13px}.preview-section-heading{display:block}.preview-count{display:block;margin-top:8px}.notebook-cell__head{align-items:flex-start;flex-direction:column;gap:8px;padding:12px 14px}.notebook-cell__meta{flex-wrap:wrap}.cell-markdown{padding:18px 17px;font-size:14px}.cell-code{padding:21px 17px;font-size:12px}.copy-code{position:static;margin:10px 12px 0}.cell-outputs{padding:11px}.notebook-results{margin-top:50px;padding:18px}.result-index{align-items:flex-start;flex-wrap:wrap}.result-index a{margin-left:0}.preview-delivery{margin-top:50px;padding:24px 21px}.preview-delivery__steps{grid-template-columns:1fr}.generic-preview{padding:18px}.metadata-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.preview-jump a,.notebook-cell,.copy-code{transition:none}.will-reveal{opacity:1;transform:none}}

/* Reference-inspired result gallery: real Notebook outputs create the visual
   anchor, while the existing method and code contracts remain unchanged. */
.preview-hero__visual{position:relative;z-index:1;align-self:end;display:grid;gap:12px}
.preview-hero__figure{margin:0;overflow:hidden;border:1px solid rgba(var(--offwhite-rgb),.25);border-radius:var(--radius-lg);background:rgba(var(--offwhite-rgb),.07)}
.preview-hero__figure img{display:block;width:100%;height:205px;object-fit:cover;opacity:.92}
.preview-hero__figure figcaption{display:flex;justify-content:space-between;gap:12px;padding:10px 13px;color:var(--text-on-dark-muted);font-size:10px;line-height:1.45}
.preview-hero__figure figcaption b{color:var(--hero-ink);font-size:11px}
.result-gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:16px}
.result-thumb{display:grid;gap:8px;padding:8px;background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-sm);text-decoration:none;transition:transform 180ms ease,border-color 180ms ease,box-shadow 180ms ease}
.result-thumb:hover{transform:translateY(-3px);border-color:var(--border-hover);box-shadow:var(--shadow-card)}
.result-thumb img{display:block;width:100%;height:100px;object-fit:cover;border-radius:5px;background:var(--surface)}
.result-thumb span{display:grid;gap:2px}.result-thumb b{font-size:11px;color:var(--text)}.result-thumb small{font-size:10px;color:var(--text-tertiary)}
.cell-duplicate-note{padding:11px 13px;border:1px dashed var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-tertiary);font-size:12px;line-height:1.6}.cell-duplicate-note a{margin-left:7px;color:var(--accent);font-weight:700;text-decoration:underline;text-underline-offset:2px}
@media(max-width:900px){.preview-hero__visual{max-width:560px}}
@media(max-width:620px){.preview-hero__figure img{height:165px}.preview-hero__figure figcaption{display:grid;gap:3px}.result-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.result-thumb img{height:80px}}



.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* Final interaction pass: the same navigation model is used from desktop
   through tablet widths, and every action keeps a visible keyboard state. */
.header-scroll-sentinel{height:1px;margin-bottom:-1px;pointer-events:none;visibility:hidden}
.nav-toggle{align-items:center;justify-content:center;transition:background-color 160ms ease,border-color 160ms ease}
.nav-toggle i{width:100%}
.nav-toggle:hover,.nav-toggle[aria-expanded="true"]{background:var(--accent-soft);border-color:var(--border-hover)}
.nav-toggle:active,.text-button:active,.copy-code:active{transform:scale(.97)}
.text-button:focus-visible,.copy-code:focus-visible,.result-thumb:focus-visible,.preview-jump a:focus-visible,.preview-aside a:focus-visible,.modal-close:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.text-button[aria-disabled="true"]{opacity:.55;pointer-events:none}
.copy-code[data-copy-state="success"]{background:var(--success);border-color:var(--success);color:var(--text-on-dark)}
.copy-code[data-copy-state="error"]{background:var(--warning);border-color:var(--warning);color:var(--text-on-dark)}
.result-thumb{min-height:44px}
.case-jump{position:sticky;top:78px;z-index:25;display:flex;gap:7px;max-width:760px;margin:-6px auto 26px;padding:8px;background:rgba(var(--surface-rgb),.94);border:1px solid var(--border);border-radius:999px;box-shadow:var(--shadow-card);backdrop-filter:blur(10px)}
.case-jump a{flex:1;min-height:40px;display:flex;align-items:center;justify-content:center;padding:0 12px;border-radius:999px;color:var(--text-secondary);font-size:12px;text-decoration:none;transition:background-color 160ms ease,color 160ms ease}
.case-jump a:hover,.case-jump a:focus-visible{background:var(--accent-soft);color:var(--accent);font-weight:700}
#task,#result-gallery,#resources,#learning-goals{scroll-margin-top:136px}

@media(max-width:960px){
  .topbar.site-header{min-height:70px;height:auto;flex-wrap:nowrap;padding:10px max(16px,calc((100vw - 1380px)/2));gap:12px 16px}
  .brand{min-width:0;margin-right:auto}.brand>span{min-width:0}.brand strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .nav-toggle{display:inline-flex;flex:none;margin-left:auto}
  .main-nav{position:fixed;z-index:60;top:0;right:0;bottom:0;width:min(340px,88vw);display:flex;flex-direction:column;align-items:stretch;gap:5px;order:initial;overflow-y:auto;padding:100px 20px 28px;background:var(--surface);box-shadow:-20px 0 50px rgba(var(--ink-rgb),.16);transform:translateX(105%);transition:transform 220ms cubic-bezier(.16,1,.3,1)}
  .main-nav a{justify-content:flex-start;min-height:52px;height:auto;padding:0 14px;border-radius:var(--radius-sm);white-space:normal}
  .nav-open .main-nav{transform:translateX(0)}.nav-open .mobile-nav-scrim{display:block;position:fixed;inset:0;z-index:55;background:rgba(var(--ink-rgb),.3)}
  .nav-open{overflow:hidden}.service{margin-left:0}
  .case-jump{top:72px;margin-top:0}
}
@media(max-width:620px){
  .case-jump{position:relative;top:auto;display:grid;grid-template-columns:repeat(2,1fr);border-radius:var(--radius-md);margin:0 0 24px}
  .case-jump a{min-height:44px;border-radius:var(--radius-sm)}
  .cell-code-wrap{padding-bottom:15px}.cell-code-wrap::after{content:'代码区可横向滚动';position:absolute;right:12px;bottom:3px;color:var(--text-on-dark-muted);font:10px var(--font-mono);pointer-events:none}
}
@media(prefers-reduced-motion:reduce){.nav-toggle,.main-nav,.case-jump a,.text-button,.copy-code,.result-thumb{transition:none}.nav-toggle:active,.text-button:active,.copy-code:active{transform:none}}



