@charset "UTF-8";
.dojo-hero { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); align-items:center; gap:64px; padding:76px 0 66px; }
.dojo-hero h1 { font-size:clamp(36px,3.75vw,54px); line-height:1.55; }
.dojo-hero .hero-intro { max-width:520px; }
.dojo-hero .hero-actions { align-items:center; gap:24px; }
.text-link { padding:10px 0; font-size:13px; font-weight:700; }
.dojo-stats { display:flex; gap:35px; margin-top:42px; }
.dojo-stats > div { display:flex; flex-direction:column; }
.dojo-stats strong { font-family:var(--serif); font-size:34px; font-weight:400; line-height:1.2; }
.dojo-stats span { color:var(--muted); font-size:11px; margin-top:7px; }
.discipline-map { background:var(--ink-deep); color:var(--surface); border-radius:16px; padding:28px; box-shadow:12px 12px 0 #e4e7d9; }
.discipline-map .eyebrow { color:#c5d79a; margin-bottom:8px; }
.discipline-map h2 { font-size:23px; margin-bottom:22px; letter-spacing:-.025em; }
.map-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.map-tile { display:block; min-width:0; padding:10px 12px 13px; border:1px solid #49624e; border-radius:5px; color:inherit; text-decoration:none; }
.map-tile:hover { background:#264a38; border-color:var(--lime); }
.map-tile:focus-visible { outline-color:var(--lime); }
.map-tile-top { display:flex; justify-content:space-between; gap:5px; color:#b6cbb6; font-size:10px; }
.map-tile strong { display:block; margin:2px 0 7px; font-size:12px; }
.map-segments { display:grid; grid-template-columns:repeat(10,minmax(0,1fr)); gap:3px; }
.map-segments i { height:5px; background:#56705a; border-radius:1px; }
.map-segments i.is-done { background:var(--lime); }
.map-caption { margin:18px 0 0; color:#c4d1be; font-size:10px; line-height:1.9; }
.dojo-section { padding:64px 0; border-top:1px solid var(--line); scroll-margin-top:20px; }
.dojo-section-heading { max-width:720px; margin-bottom:28px; }
.dojo-section-heading .eyebrow { margin-bottom:10px; }
.dojo-section-heading h2 { font-size:clamp(27px,3vw,38px); line-height:1.6; }
.dojo-section-heading p:last-child { color:var(--muted); font-size:14px; }
.route-picker { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin-bottom:20px; }
.route-choice { display:flex; align-items:center; text-align:left; gap:10px; padding:16px; border:1px solid var(--line); border-radius:5px; background:var(--surface); line-height:1.6; }
.route-choice strong { flex:1; font-size:13px; }
.route-number { font-family:var(--serif); color:var(--muted); font-size:13px; }
.route-choice[aria-pressed="true"] { background:var(--lime); border-color:var(--ink); }
.route-choice:hover { border-color:var(--ink); }
.route-panel { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.2fr); gap:42px; padding:32px; border:1px solid var(--line); border-radius:var(--radius); background:var(--sage); margin-top:14px; }
.route-description h3 { font-size:24px; }
.route-description > p:not(.eyebrow) { color:var(--muted); font-size:13px; }
.route-progress { display:inline-flex; align-items:center; gap:16px; padding:7px 12px; border:1px solid #b9c4ab; border-radius:30px; font-size:11px; }
.route-progress strong { font-size:14px; }
.route-drills { list-style:none; padding:0; margin:0 0 20px; }
.route-drills li { margin:0; border-bottom:1px solid #c5cfb9; }
.route-drills a { display:flex; align-items:baseline; gap:12px; padding:10px 0; text-decoration:none; font-size:13px; font-weight:650; }
.route-drills a:hover { text-decoration:underline; }
.route-drills a > span { color:var(--muted); font-family:var(--serif); font-size:14px; }
.route-drills a.is-done > span { color:var(--ink); }
.route-drills small { margin-left:auto; white-space:nowrap; color:var(--muted); font-size:10px; font-weight:400; }
.route-note { margin:10px 0 0; color:var(--muted); font-size:11px; }
.route-done { padding:12px; border-left:3px solid var(--ink); font-size:13px; }
.track-filters { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:22px; }
.track-filters button { display:inline-flex; align-items:center; gap:10px; min-height:43px; padding:8px 14px; background:var(--surface); border:1px solid var(--line); border-radius:30px; font-size:12px; font-weight:650; }
.track-filters button span { font-family:var(--serif); font-size:12px; font-weight:400; opacity:.8; }
.track-filters button[aria-pressed="true"] { background:var(--ink-deep); color:var(--surface); border-color:var(--ink-deep); }
.track-filters button:hover { border-color:var(--ink); }
.filter-bar { display:flex; align-items:end; gap:18px; padding:21px 0; border-block:1px solid var(--line); }
.filter-bar label { display:grid; gap:7px; min-width:160px; font-size:11px; font-weight:700; }
.filter-bar select { width:100%; min-height:44px; padding:9px 30px 9px 12px; border:1px solid #aebbaa; border-radius:4px; background:var(--surface); color:var(--ink); font-size:12px; }
.filter-bar .text-button { margin-left:auto; }
.library-status { display:flex; align-items:center; justify-content:space-between; gap:15px; margin:24px 0 16px; font-size:12px; }
.library-status p { margin:0; }
.fiction-tag { color:var(--muted); font-size:10px; letter-spacing:.07em; }
.exercise-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; align-items:start; }
.exercise { min-width:0; background:var(--surface); border:1px solid var(--line); border-radius:10px; scroll-margin-top:24px; overflow:hidden; }
.exercise > summary { display:block; padding:23px 25px 18px; list-style:none; }
.exercise > summary::-webkit-details-marker { display:none; }
.exercise > summary::marker { content:""; }
.exercise > summary:hover { background:#f0f2e7; }
.exercise > summary:focus-visible { outline-offset:-5px; border-radius:10px; }
.exercise-meta { display:flex; align-items:center; gap:14px; color:var(--muted); font-size:11px; margin-bottom:14px; }
.exercise-number { color:var(--ink); font-family:var(--serif); font-size:18px; }
.duration { margin-left:auto; white-space:nowrap; }
.exercise-title { display:block; font-size:19px; font-weight:750; line-height:1.6; margin-bottom:9px; }
.exercise-goal { display:block; font-size:12px; color:var(--muted); min-height:3.8em; }
.exercise-bottom { display:flex; align-items:center; gap:12px; margin-top:15px; }
.level-tag { display:inline-block; border:1px solid var(--line); padding:1px 8px; border-radius:3px; font-size:10px; }
.open-icon { margin-left:auto; font-size:24px; line-height:1; }
.done-badge { font-size:10px; color:#32620f; }
.exercise.is-complete { border-color:#7a9343; }
.exercise[open] { grid-column:1/-1; border-color:var(--ink); }
.exercise[open] > summary { border-bottom:1px solid var(--line); background:var(--sage); }
.exercise[open] .exercise-goal { min-height:0; }
.exercise[open] .open-icon { transform:rotate(45deg); }
.exercise-body { max-width:880px; padding:32px; margin:auto; }
.exercise-brief { padding:20px 24px; background:var(--paper); border-left:3px solid #91a174; margin-bottom:27px; }
.exercise-brief .eyebrow { margin-bottom:8px; }
.exercise-brief p:last-child { margin:0; font-size:14px; }
.exercise-body h3 { font-size:19px; margin-bottom:18px; }
.exercise-steps { padding:0; list-style:none; counter-reset:drill-step; }
.exercise-steps li { display:flex; align-items:baseline; gap:16px; font-size:14px; margin-top:14px; }
.exercise-steps li::before { display:grid; place-items:center; flex:0 0 28px; height:28px; background:var(--sage); border-radius:50%; font-family:var(--serif); content:counter(drill-step); counter-increment:drill-step; }
.deliverable { padding:18px 21px; border:1px dashed #9eae8d; border-radius:5px; margin:25px 0; }
.deliverable strong,.pitfall strong { font-size:12px; }
.deliverable p,.pitfall p { font-size:13px; margin:6px 0 0; }
.sample { margin:24px 0; border:1px solid #a8bc9d; border-radius:5px; background:#eef3e3; }
.sample > summary { padding:16px 20px; font-size:13px; font-weight:700; }
.sample > summary span { float:right; }
.sample-content { padding:0 22px 19px; }
.sample pre { margin:0 0 15px; white-space:pre-wrap; overflow-wrap:anywhere; font:13px/1.95 var(--sans); }
.pitfall { padding:2px 0 6px 17px; border-left:3px solid #c9b37a; margin:25px 0; }
.criteria { border:0; border-top:1px solid var(--line); padding:16px 0 0; margin:30px 0 12px; min-width:0; }
.criteria legend { font-size:17px; font-weight:750; padding:0 15px 0 0; }
.criteria > p { color:var(--muted); font-size:11px; }
.criteria label { display:flex; align-items:flex-start; gap:12px; padding:12px 0; font-size:13px; cursor:pointer; }
.criteria input { width:20px; height:20px; flex-shrink:0; margin:2px 0 0; accent-color:var(--ink-deep); }
.criteria label + label { border-top:1px solid #e6e8de; }
.exercise-actions { display:flex; flex-wrap:wrap; gap:12px; align-items:center; justify-content:space-between; border-top:1px solid var(--line); padding-top:15px; }
.criteria-count { font-size:13px; font-family:var(--serif); }
.library-pages { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-top:28px; }
.library-pages > span { font-family:var(--serif); font-size:15px; }
.session-panel { display:flex; justify-content:space-between; align-items:center; gap:40px; padding:30px 35px; border:1px solid var(--line); border-radius:var(--radius); background:var(--sage); }
.session-panel h2 { font-size:24px; }
.session-panel p:not(.eyebrow) { color:var(--muted); font-size:12px; }
.session-panel .eyebrow { margin-bottom:10px; }
.session-total { flex:0 0 170px; text-align:right; font-family:var(--serif); }
.session-total strong { font-size:64px; font-weight:400; line-height:1; }
.session-total > span { margin-left:10px; font-size:20px; color:var(--muted); }
.session-total progress { width:100%; height:5px; margin-top:20px; accent-color:var(--ink-deep); }
.dojo-closing { max-width:760px; margin:70px auto; text-align:center; }
.dojo-closing h2 { font-size:clamp(26px,3vw,38px); }
.dojo-closing > p:not(.eyebrow) { font-size:14px; color:var(--muted); }
.dojo-closing .button { margin-top:10px; }
.dojo-privacy { display:flex; align-items:flex-start; gap:22px; padding:28px 0 38px; border-top:1px solid var(--line); }
.dojo-privacy > span { font-size:30px; line-height:1.4; }
.dojo-privacy h3 { font-size:16px; }
.dojo-privacy p { font-size:11px; color:var(--muted); }
.dojo-privacy p:last-child { margin-bottom:0; }
@media(max-width:1000px) {
 .dojo-hero { gap:32px; }
 .discipline-map { padding:22px; }
 .dojo-stats { gap:24px; }
 .route-picker { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .filter-bar { flex-wrap:wrap; gap:12px; }
 .filter-bar label { flex:1 1 160px; }
}
@media(max-width:760px) {
 .dojo-page .header-inner { flex-direction:row; align-items:center; padding-block:17px; }
 .dojo-page .header-nav { width:auto; flex-shrink:0; }
 .dojo-hero { grid-template-columns:1fr; padding:45px 0; gap:38px; }
 .dojo-hero h1 { font-size:clamp(33px,7vw,48px); }
 .discipline-map { box-shadow:6px 6px 0 #e4e7d9; }
 .map-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .dojo-stats { margin-top:30px; }
 .route-panel { grid-template-columns:1fr; gap:20px; padding:24px; }
 .route-description h3 { font-size:21px; }
 .route-description .eyebrow { margin-bottom:8px; }
 .exercise-grid { grid-template-columns:1fr; }
 .exercise-goal { min-height:0; }
 .session-panel { padding:25px; gap:20px; }
 .session-total { flex-basis:110px; }
 .session-total strong { font-size:48px; }
 .dojo-section { padding:44px 0; }
}
@media(max-width:480px) {
 .dojo-page .header-inner { gap:12px; min-height:84px; }
 .dojo-page .brand-name { font-size:14px; }
 .dojo-page .brand small { font-size:8px; }
 .dojo-page .brand-mark { width:31px; height:31px; }
 .dojo-page .header-nav > a:not(.lang) { display:none; }
 .dojo-hero h1 { font-size:32px; line-height:1.6; }
 html[lang="en"] .dojo-hero h1 { font-size:37px; line-height:1.3; }
 .dojo-hero .hero-actions { gap:16px; }
 .dojo-stats { justify-content:space-between; gap:12px; }
 .dojo-stats strong { font-size:30px; }
 .dojo-stats span { font-size:10px; }
 .discipline-map { padding:20px; }
 .map-grid { gap:8px; }
 .map-tile { padding:8px 10px 11px; }
 .map-tile strong { font-size:11px; }
 .map-segments { gap:2px; }
 .route-choice { padding:13px 10px; gap:8px; }
 .route-choice strong { font-size:11px; }
 .route-choice > span:last-child { display:none; }
 .route-number { font-size:12px; }
 .route-panel { padding:21px; }
 .route-drills a { font-size:12px; gap:8px; }
 .route-drills small { font-size:9px; }
 .track-filters { gap:7px; }
 .track-filters button { padding:7px 11px; font-size:11px; gap:8px; }
 .filter-bar label { min-width:0; flex:1 1 130px; }
 .filter-bar .text-button { flex:1; font-size:11px; }
 .fiction-tag { display:none; }
 .exercise > summary { padding:19px 20px 17px; }
 .exercise-title { font-size:18px; }
 .exercise-body { padding:23px 20px; }
 .exercise-brief { padding:16px; }
 .exercise-steps li { gap:12px; font-size:13px; }
 .criteria legend { font-size:15px; }
 .sample > summary { padding:15px; font-size:12px; }
 .sample-content { padding:0 15px 16px; }
 .library-pages { gap:8px; }
 .library-pages .button { font-size:10px; padding:10px 11px; min-height:44px; }
 .library-pages > span { font-size:12px; }
 .session-panel { flex-direction:column; align-items:stretch; gap:18px; }
 .session-total { flex-basis:auto; text-align:left; }
 .session-panel h2 { font-size:21px; }
 .dojo-closing { margin:48px auto; }
 .dojo-privacy { gap:13px; }
}
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }
@media print {
 .dojo-page .site-header,.dojo-page .site-footer,.dojo-hero,#training-path,.dojo-section-heading,.library-tools,.library-pages,.session-panel,.dojo-closing,.dojo-privacy,.dojo-sources,.exercise-actions,.sample .text-button,#toast,.skip-link { display:none!important; }
 .dojo-page .shell { width:100%; }
 .dojo-section { padding:0; border:0; }
 .exercise-grid { display:block; }
 .exercise { display:block; }
 .exercise-grid:has(.print-target) .exercise:not(.print-target) { display:none!important; }
 .exercise.print-target { display:block!important; border:0; }
 .exercise::details-content,.sample::details-content { display:block; content-visibility:visible; }
 .exercise-body { padding:20px 0; max-width:none; }
 .exercise > summary { background:white!important; padding:0 0 15px; }
 .exercise.print-target .sample-content { display:block; }
 .exercise .open-icon { display:none; }
 .exercise .criteria { break-inside:avoid; }
 .exercise-brief,.sample,.deliverable { break-inside:avoid; }
}
