.diagram{border-top:var(--b-strong);margin:48px 0;padding:24px 0 0}.diagram-art{overflow-x:auto}.diagram-art svg{width:100%;max-width:100%;height:auto;display:block}.diagram-caption{border-top:var(--b-hair);font-size:var(--fs-small);color:var(--muted);margin-top:16px;padding-top:12px;line-height:1.5}.d-fill-ink{fill:var(--ink)}.d-fill-ink-2{fill:var(--ink-2)}.d-fill-muted{fill:var(--muted)}.d-fill-paper{fill:var(--paper)}.d-fill-paper-2{fill:var(--paper-2)}.d-fill-white{fill:var(--white)}.d-fill-signal{fill:var(--signal)}.d-fill-none{fill:none}.d-stroke-ink{stroke:var(--ink)}.d-stroke-rule{stroke:var(--rule)}.d-stroke-muted{stroke:var(--muted)}.d-serif{font-family:var(--ff-serif)}.d-sans{font-family:var(--ff-sans)}.d-mono{font-family:var(--ff-mono)}
.d-factory{font-family:var(--ff-sans);color:var(--ink)}.d-factory-track{position:relative}.d-factory .d-factory-parts{grid-template-rows:auto auto auto;grid-template-columns:repeat(5,1fr);gap:0;margin:0;padding:0;list-style:none;display:grid;position:relative}.d-factory-parts:before{content:"";border-top:1.5px solid var(--ink);position:absolute;top:15px;left:10%;right:10%}.d-factory .d-factory-part{grid-row:span 3;grid-template-rows:subgrid;text-align:center;place-items:start center;row-gap:0;padding:0 6px;display:grid}.d-factory-mark{z-index:1;justify-content:center;align-items:center;height:30px;display:flex;position:relative}.d-factory-mark .mark{outline:6px solid var(--paper)}.d-factory-dot{background:var(--ink);outline:6px solid var(--paper);border-radius:50%;width:10px;height:10px;display:block}.d-factory-who{font-family:var(--ff-serif);margin-top:14px;font-size:18px;font-weight:600;line-height:1.25}.d-factory-what{color:var(--ink-2);margin-top:6px;font-size:15px;line-height:1.45}.d-factory-return{border:1.5px solid var(--ink);border-top:0;height:22px;margin:18px 10% 0;display:block;position:relative}.d-factory-return:before{content:"";border-left:6px solid #0000;border-right:6px solid #0000;border-bottom:9px solid var(--ink);position:absolute;top:-9px;left:-6.75px}.d-factory-back{text-align:center;color:var(--ink-2);margin:10px 0 0;font-size:15px;line-height:1.45}@media (max-width:600px){.d-factory-track{padding:22px 40px 4px 0}.d-factory .d-factory-parts{display:block}.d-factory-parts:before{display:none}.d-factory .d-factory-part{text-align:left;grid-row:auto;grid-template-rows:none;grid-template-columns:30px 1fr;place-items:start stretch;column-gap:14px;padding:0 0 20px;display:grid}.d-factory-mark{grid-row:1/span 2;height:26px}.d-factory-who{grid-column:2;margin-top:0}.d-factory-what{grid-column:2;margin-top:4px}.d-factory-return{z-index:0;border:1.5px solid var(--ink);height:auto;margin:0;position:absolute;inset:0 14px 0 15px}.d-factory-return:before{border-bottom:0;border-top:9px solid var(--ink);top:6px;left:-6.75px}.d-factory-return:after{content:"";border-left:6px solid #0000;border-right:6px solid #0000;border-bottom:9px solid var(--ink);position:absolute;top:50%;right:-6.75px}.d-factory-back{text-align:left;margin-top:12px}}
.diagram-art svg.d-loop-wide{max-width:640px;margin:0 auto}.diagram-art svg.d-loop-tall{max-width:360px;display:none}.d-loop-name{font-size:20px;font-weight:600}.d-loop-who{font-size:14px}.d-loop-note{font-size:15px}@media (max-width:600px){.diagram-art svg.d-loop-wide{display:none}.diagram-art svg.d-loop-tall{display:block}}
.d-who{font-family:var(--ff-sans);color:var(--ink)}.d-who-key{color:var(--ink-2);align-items:center;gap:10px;margin:0 0 12px;font-size:15px;display:flex}.d-who-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:15px;line-height:1.45}.d-who-table thead th{color:var(--ink);border-bottom:var(--b-strong);vertical-align:bottom;padding:10px 16px 10px 0;font-size:14px;font-weight:600}.d-who-table thead th:first-child{width:22%}.d-who-table thead th:nth-child(2){width:30%}.d-who-table thead th:nth-child(3){width:26%}.d-who-headmark{align-items:center;gap:8px;display:inline-flex}.d-who-headmark .mark-gate{width:5px;height:14px}.d-who-table tbody th,.d-who-table tbody td{border-bottom:var(--b-hair);vertical-align:top;text-align:left;padding:14px 16px 14px 0}.d-who-table tbody tr:last-child th,.d-who-table tbody tr:last-child td{border-bottom:var(--b-strong)}.d-who-step{color:var(--ink);font-weight:400}.d-who-stepname{font-family:var(--ff-serif);font-size:19px;font-weight:500;line-height:1.2;display:block}.d-who-num{color:var(--muted);margin-bottom:4px;font-size:13px;font-weight:600;display:block}.d-who-table tbody td.d-who-decide{padding-left:24px;position:relative}.d-who-mark{position:absolute;top:18px;left:0}.d-who-decide>span{font-weight:500}.d-who-none{color:var(--muted)}@media (max-width:640px){.d-who-table,.d-who-table tbody,.d-who-table tr,.d-who-table th,.d-who-table td{width:auto;display:block}.d-who-table thead{display:none}.d-who-table tbody tr{border-top:var(--b-strong);padding:12px 0 8px}.d-who-table tbody tr+tr{margin-top:16px}.d-who-table tbody th,.d-who-table tbody td,.d-who-table tbody tr:last-child th,.d-who-table tbody tr:last-child td{border-bottom:0;padding:4px 0}.d-who-table tbody th{padding-bottom:8px}.d-who-table tbody td{border-top:var(--b-hair);grid-template-columns:92px minmax(0,1fr);gap:12px;padding:8px 0;display:grid}.d-who-table tbody td:before{content:attr(data-label);color:var(--muted);font-size:13px;font-weight:600}.d-who-table tbody td.d-who-decide{grid-template-columns:92px 12px minmax(0,1fr);gap:12px 8px;padding-left:0}.d-who-mark{margin-top:5px;position:static}}
.d-freedom{--d-freedom-y:27px;--d-freedom-gap:44px;font-family:var(--ff-sans);color:var(--ink);padding-right:210px;font-size:15px;line-height:1.45;position:relative}.lesson-body .d-freedom-stages,.d-freedom-stages{margin:0;padding:0;list-style:none;display:block}.d-freedom-stage{padding-right:var(--d-freedom-gap);position:relative}.d-freedom-box{border:var(--b-control);background:var(--paper);padding:12px 16px 14px;position:relative}.d-freedom-stage-3 .d-freedom-box{background:var(--white);border-width:2px}.d-freedom-name{font-family:var(--ff-serif);font-size:21px;font-weight:500;line-height:1.2;display:block}.d-freedom-what{color:var(--ink-2);margin:6px 0 0}.d-freedom-move{grid-template-columns:34px 12px minmax(0,1fr);align-items:start;gap:10px;min-height:64px;padding:14px 0 18px;display:grid}.d-freedom-down{border-left:1.5px solid var(--ink);place-self:stretch center;width:0;margin:-14px 0 -18px;position:relative}.d-freedom-down:after{content:"";border-left:5.5px solid #0000;border-right:5.5px solid #0000;border-top:8px solid var(--ink);position:absolute;bottom:0;left:-6.5px}.d-freedom-mark{margin-top:4px}.d-freedom-move>span:last-child{font-weight:500}.d-freedom-stage:after{content:"";border-right:1.5px solid var(--ink);position:absolute;right:12px}.d-freedom-stage-1:after{top:var(--d-freedom-y);bottom:0}.d-freedom-stage-2:after{top:0;bottom:0}.d-freedom-stage-3:after{height:var(--d-freedom-y);top:0}.d-freedom-box:after{content:"";top:calc(var(--d-freedom-y) - 1px);right:calc(-1 * var(--d-freedom-gap) + 12px);width:calc(var(--d-freedom-gap) - 12px);border-top:1.5px solid var(--ink);position:absolute}.d-freedom-stage-1 .d-freedom-box:before,.d-freedom-stage-2 .d-freedom-box:before{content:"";top:calc(var(--d-freedom-y) - 6px);border-top:5.5px solid #0000;border-bottom:5.5px solid #0000;border-right:8px solid var(--ink);position:absolute;right:-10px}.d-freedom-stop{box-sizing:border-box;width:196px;color:var(--ink-2);margin:0;position:absolute;top:50%;right:0;transform:translateY(-50%)}.d-freedom-stop .d-freedom-name{color:var(--ink);margin-bottom:4px}@media (max-width:640px){.d-freedom{--d-freedom-gap:32px;padding-right:0}.d-freedom-stage:after{right:6px}.d-freedom-box:after{right:calc(-1 * var(--d-freedom-gap) + 6px);width:calc(var(--d-freedom-gap) - 6px)}.d-freedom-stop{border-top:var(--b-hair);width:auto;margin-top:20px;padding:12px 0 0;position:static;transform:none}}
.d-gate-term{min-height:0;padding:24px 28px 8px;font-size:15px;line-height:1.7}.d-gate-title{margin:0 0 12px;font-size:13px}.d-gate-line{grid-template-columns:18px minmax(0,1fr) auto;column-gap:14px;display:grid}.d-gate-played .d-gate-line{animation:.3s both d-gate-in}.d-gate-played .d-gate-wait{visibility:hidden;animation:none}.d-gate-mark{flex:0 0 18px;width:18px}.d-gate-word{text-align:right}.d-gate-note{grid-column:2/-1;font-size:13px}.d-gate-verdict{border-top:1px solid var(--dark-rule);gap:14px;min-height:calc(3.2em + 34px);margin:0;padding:12px 28px 22px;font-size:15px;line-height:1.6;display:flex}.d-gate-controls{margin-top:16px}@keyframes d-gate-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.d-gate-played .d-gate-line{animation:none}}@media (max-width:640px){.d-gate-term{padding:18px 18px 6px;font-size:14px}.d-gate-verdict{min-height:calc(4.8em + 30px);padding:12px 18px 18px;font-size:14px}.d-gate-line,.d-gate-verdict{gap:10px}}
.diagram-art .d-red{grid-template-columns:repeat(5,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.d-red-step{flex-direction:column;gap:8px;padding:0 14px 0 0;display:flex;position:relative}.d-red-step p{margin:0}.d-red-head{align-items:center;gap:10px;min-height:24px;display:flex;position:relative}.d-red-step:not(:last-child) .d-red-head:after{content:"";border-top:1.5px solid var(--ink);flex:auto;height:0;margin-right:-14px}.d-red-n{color:var(--muted);font-size:13px}.d-red-name{font-family:var(--ff-serif);color:var(--ink);font-size:20px;line-height:1.15}.d-red-out{font-family:var(--ff-mono);background:var(--ink);align-self:flex-start;padding:6px 10px;font-size:14px;line-height:1}.d-red-note{color:var(--ink-2);font-size:14px;line-height:1.45}.d-red-note code{font-family:var(--ff-mono);font-size:13px}@media (max-width:640px){.diagram-art .d-red{grid-template-columns:minmax(0,1fr)}.d-red-step{grid-template-columns:56px minmax(0,1fr);gap:6px 12px;padding:0 0 18px;display:grid}.d-red-head{grid-row:1/span 3;align-self:start}.d-red-step:not(:last-child) .d-red-head:after{display:none}.d-red-step:not(:last-child):before{content:"";border-left:1.5px solid var(--ink);position:absolute;top:30px;bottom:4px;left:8px}.d-red-name,.d-red-out,.d-red-note{grid-column:2}}
.d-rule p{margin:0}.d-rule-rule{border-bottom:var(--b-hair);grid-template-columns:96px minmax(0,1fr);align-items:baseline;gap:6px 16px;padding-bottom:16px;font-size:16px;line-height:1.45;display:grid}.d-rule-k{color:var(--muted);font-size:13px}.d-rule-act{align-items:center;gap:10px;display:inline-flex}.diagram-art .d-rule-rows{margin:0;padding:0;list-style:none}.d-rule-row{border-bottom:var(--b-hair);grid-template-columns:170px minmax(0,1fr) 200px;align-items:center;gap:8px 24px;padding:20px 0;display:grid}.d-rule-name{font-family:var(--ff-serif);color:var(--ink);font-size:21px;line-height:1.15}.d-rule-where,.d-rule-note{color:var(--ink-2);font-size:14px;line-height:1.45}.d-rule-where{margin-top:4px}.d-rule-path{align-items:center;gap:0;min-height:36px;font-size:14px;display:flex}.d-rule-line{border-top:2px solid var(--ink);flex:auto;min-width:32px;height:0;margin:0 6px 0 4px}.d-rule-request .d-rule-line{border-top-style:dashed;margin-right:10px}.d-rule-path .mark-gate{margin-right:10px}.d-rule-end{font-family:var(--ff-mono);color:var(--ink);flex:none;max-width:9em;font-size:13px;line-height:1.3}.d-rule-verb{color:var(--ink);font-size:16px;font-weight:600}.d-rule-note{margin-top:4px}@media (max-width:640px){.d-rule-rule{grid-template-columns:minmax(0,1fr)}.d-rule-row{grid-template-columns:minmax(0,1fr);padding:18px 0}}
.diagram-art svg.d-checkers-narrow{display:none}.diagram-art svg.d-checkers-wide{max-width:720px}.d-checkers-line{fill:none;stroke-width:1.5px}.d-checkers-name{font-size:18px}.d-checkers-sub{font-size:14px}.d-checkers-tag{font-size:13px;font-style:italic}@media (max-width:560px){.diagram-art svg.d-checkers-wide{display:none}.diagram-art svg.d-checkers-narrow{max-width:400px;display:block}}
.d-mutants{font-family:var(--ff-sans);color:var(--ink);font-size:15px;line-height:1.5}.d-mutants code,.d-mutants pre{font-family:var(--ff-mono);font-variant-ligatures:none}.d-mutants-op{font-family:var(--ff-mono);font-variant-ligatures:none;color:var(--ink)}.d-mutants-nowrap{white-space:nowrap}.d-mutants-top{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:16px 32px;margin-bottom:28px;display:grid}.d-mutants-label{color:var(--muted);margin:0 0 8px;font-size:14px}.d-mutants-code{background:var(--white);color:var(--ink);border:var(--b-hair);white-space:pre;margin:0;padding:14px 16px;font-size:14px;line-height:1.6;overflow-x:auto}.d-mutants-note{margin:0 0 10px}.d-mutants-coverage{border-left:2px solid var(--rule);color:var(--ink-2);padding-left:12px}.d-mutants .d-mutants-list{border-top:var(--b-control);margin:0;padding:0;list-style:none;display:block}.d-mutants-row{border-bottom:var(--b-hair);grid-template-columns:minmax(0,1fr) 13em 7.5em;align-items:baseline;gap:4px 20px;padding:12px 0;display:grid}.d-mutants-line{white-space:pre;background:0 0;padding:0;font-size:14px;overflow-x:auto}.d-mutants-changed{text-underline-offset:3px;font-weight:700;text-decoration:underline;text-decoration-thickness:2px}.d-mutants-what{color:var(--ink-2);font-size:14px}.d-mutants-got{color:var(--muted);display:block}.d-mutants-result{white-space:nowrap;font-weight:600}.is-survived .d-mutants-result{color:var(--error-on-light)}.d-mutants-fix{margin:20px 0 0}@media (max-width:640px){.d-mutants-top{grid-template-columns:minmax(0,1fr)}.d-mutants-row{grid-template-columns:minmax(0,1fr) auto}.d-mutants-line{grid-column:1/-1}}
.d-data{font-family:var(--ff-sans);color:var(--ink);grid-template-columns:28px minmax(0,1fr);gap:20px;display:grid}.d-data-scale{color:var(--muted);flex-direction:column;align-items:center;gap:8px;font-size:13px;display:flex}.d-data-scale span:first-child,.d-data-scale span:last-child{writing-mode:vertical-rl;white-space:nowrap;transform:rotate(180deg)}.d-data-scale-line{border-left:var(--b-hair);flex:1;width:0}.d-data-ladder{flex-direction:column;display:flex}.d-data-side{color:var(--muted);padding:4px 0 8px;font-size:14px}.d-data-rung{border-bottom:var(--b-hair);grid-template-columns:140px minmax(0,1fr);align-items:baseline;gap:16px;padding:14px 0;display:grid}.d-data-side+.d-data-rung{border-top:var(--b-hair)}.d-data-name{font-family:var(--ff-serif);font-size:26px;line-height:1.1}.d-data-examples{font-size:16px;line-height:1.45}.d-data-note{color:var(--muted);margin-top:4px;font-size:14px;display:block}.d-data-line{align-items:center;gap:12px;margin:20px 0 16px;font-size:15px;font-weight:600;display:flex}.d-data-line:after{content:"";border-top:3px solid var(--ink);flex:1}.d-data-unsure{color:var(--ink-2);margin-top:16px;font-size:15px}@media (max-width:520px){.d-data{grid-template-columns:20px minmax(0,1fr);gap:12px}.d-data-rung{grid-template-columns:minmax(0,1fr);gap:4px}.d-data-name{font-size:22px}.d-data-examples{font-size:15px}}
.d-ready{font-family:var(--ff-sans);color:var(--ink)}.d-ready-head{border-bottom:var(--b-hair);justify-content:space-between;align-items:baseline;gap:16px;padding-bottom:12px;display:flex}.d-ready-title{color:var(--muted);font-size:15px}.d-ready-total{color:var(--ink-2);white-space:nowrap;font-size:15px}.d-ready-total .d-ready-num{color:var(--ink);font-size:28px}.d-ready-num{font-family:var(--ff-mono);font-variant-numeric:tabular-nums}.d-ready-area{border-bottom:var(--b-hair);padding:14px 0}.d-ready-row{grid-template-columns:190px minmax(0,1fr) 64px;align-items:center;gap:16px;display:grid}.d-ready-name{font-family:var(--ff-serif);font-size:21px;line-height:1.2}.d-ready-bar{grid-template-columns:repeat(20,minmax(0,14px));gap:3px;display:grid}.d-ready-pt{aspect-ratio:1;border:1.5px solid var(--ink);background:var(--paper)}.d-ready-pt.is-earned{background:var(--ink)}.d-ready-score{text-align:right;font-size:17px}.d-ready-of{font-family:var(--ff-mono);color:var(--muted);font-size:13px}.d-ready-line{color:var(--ink-2);grid-template-columns:190px minmax(0,1fr);gap:16px;margin-top:8px;font-size:15px;line-height:1.4;display:grid}.d-ready-lost{font-family:var(--ff-mono);color:var(--muted);text-align:right;padding-top:2px;font-size:13px}@media (max-width:520px){.d-ready-row{grid-template-columns:minmax(0,1fr) auto;row-gap:8px}.d-ready-bar{grid-area:2/1/auto/-1}.d-ready-name{font-size:19px}.d-ready-line{grid-template-columns:84px minmax(0,1fr);gap:10px;font-size:14px}.d-ready-lost{text-align:left}}
