.dg{margin-block:var(--s-8);border:1px solid var(--c-line-strong);border-radius:var(--r-card);padding:var(--s-5) var(--s-5) var(--s-4);max-width:100%;min-width:0}.lesson>.dg{margin-top:var(--s-8)}.dg-head{display:grid;gap:2px;margin-bottom:var(--s-4)}.dg-kicker{color:var(--c-muted);font-size:var(--t-small)}.lesson .dg-title,.dg-title{margin:0;color:var(--c-moon);font-size:var(--t-btn);line-height:1.3}.dg-scroll{overflow-x:auto;overscroll-behavior-x:contain;margin-inline:-4px;padding-inline:4px;scrollbar-width:thin}.dg-stage{position:relative;min-width:0}.dg-stage.is-resizing{overflow:clip;overflow-clip-margin:40px}.dg-lines{position:absolute;inset:0;pointer-events:none;overflow:visible;z-index:2}.dg-tables{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--s-5) clamp(28px,4.5vw,52px)}.dg-table{background:var(--c-panel);border-radius:14px;padding:var(--s-2) var(--s-3) var(--s-3);min-width:0;max-width:100%;transition:opacity var(--d-base) var(--ease-out)}.dg-table.is-off,.dg tr.is-off,.dg [data-toggle].is-off{display:none}.lesson .dg table,.dg table{display:table;width:auto;min-width:8.5rem;border-collapse:collapse;font-size:.875rem;line-height:1.3;font-variant-numeric:tabular-nums}.dg caption{caption-side:top;text-align:left;padding:var(--s-1) var(--s-2) var(--s-2);color:var(--c-moon);font-weight:var(--w-bold);font-size:var(--t-small)}.lesson .dg th,.lesson .dg td,.dg th,.dg td{padding:6px var(--s-2);border-bottom:1px solid var(--c-line);text-align:left;white-space:nowrap}.dg th{color:var(--c-muted);font-weight:var(--w-regular);font-size:.8125rem}.dg tbody tr:last-child td{border-bottom:0}.dg td{color:var(--c-soft);transition:background-color var(--d-base) var(--ease-out),color var(--d-base) var(--ease-out),opacity var(--d-base) var(--ease-out)}.dg td.is-num{text-align:right}.dg td.is-null{color:var(--c-coral);font-weight:var(--w-bold);font-size:.8125rem}.dg tr[data-tone=hl] td{background:#ffd16617;color:var(--c-gold);font-weight:var(--w-bold)}.dg tr[data-tone=accent] td{background:#7fe0c217;color:var(--c-mint);font-weight:var(--w-bold)}.dg tr[data-tone=warn] td{background:#ff8a7a17;color:var(--c-coral);font-weight:var(--w-bold)}.dg tr[data-tone=dim] td,.dg td[data-tone=dim]{opacity:.35}.dg td[data-tone]{border-radius:6px}.dg td[data-tone=hl]{box-shadow:inset 0 0 0 2px var(--c-gold);color:var(--c-gold);font-weight:var(--w-bold)}.dg td[data-tone=accent]{box-shadow:inset 0 0 0 2px var(--c-mint);color:var(--c-mint);font-weight:var(--w-bold)}.dg td[data-tone=warn]{box-shadow:inset 0 0 0 2px var(--c-coral);color:var(--c-coral);font-weight:var(--w-bold)}.dg-table[data-tone=dim]{opacity:.4}.dg-table[data-tone=hl]{box-shadow:0 0 0 2px var(--c-gold)}.dg-table[data-tone=accent]{box-shadow:0 0 0 2px var(--c-mint)}.dg.is-animated .is-new,.dg.is-animated tr.is-new td{animation:dg-in var(--d-slow) var(--ease-out) both}.dg tr.is-arriving td{opacity:0}@keyframes dg-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.dg-ghost{position:absolute;z-index:3;display:flex;align-items:center;gap:var(--s-3);padding:0 var(--s-2);border-radius:8px;background:#ffd16647;box-shadow:0 0 0 1px var(--c-gold);color:var(--c-moon);font-size:.875rem;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;transform-origin:0 0;pointer-events:none}.dg-link{fill:none;stroke:var(--c-gold);stroke-width:2;stroke-linecap:round}.dg-arrow{stroke:none}.dg-arrow--hl,.dg-arrow--flow{fill:var(--c-gold)}.dg-arrow--warn{fill:var(--c-coral)}.dg-arrow--base{fill:var(--c-muted)}.dg-model{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));grid-template-rows:repeat(var(--rows),auto);gap:clamp(44px,8vw,84px) clamp(20px,6vw,72px);align-items:center;justify-items:center;padding-block:var(--s-2)}.dg-box{grid-column:var(--gc);grid-row:var(--gr);position:relative;z-index:1;width:100%;max-width:210px;min-width:0;background:var(--c-panel);border:2px solid var(--c-ghost-rim);border-radius:14px;padding:var(--s-2) var(--s-3) var(--s-3);transition:border-color var(--d-base) var(--ease-out),opacity var(--d-base) var(--ease-out),box-shadow var(--d-base) var(--ease-out)}.dg-box--fact{border-style:solid;border-color:var(--c-teal)}.dg-box__name{font-weight:var(--w-bold);color:var(--c-moon);font-size:var(--t-small);overflow-wrap:anywhere}.lesson .dg-box__fields,.dg-box__fields{margin:2px 0 0;padding:0;list-style:none;color:var(--c-muted);font-size:.8125rem;line-height:1.45}.lesson .dg-box__fields li+li{margin-top:0}.dg-box__fields li{overflow-wrap:anywhere}.dg-box[data-tone=hl]{border-color:var(--c-gold);box-shadow:0 0 0 4px #ffd16624}.dg-box[data-tone=dim]{opacity:.45}.lesson .dg-chip,.dg-chip{margin:var(--s-2) 0 0;display:flex;align-items:flex-start;gap:6px;padding:4px 8px;border-radius:8px;background:#ffd16629;color:var(--c-moon);font-size:.75rem;line-height:1.35}.dg-chip code{font-family:var(--f-mono);font-size:.75rem;background:none;padding:0;color:var(--c-gold);overflow-wrap:anywhere;white-space:normal}.dg-chip__icon{flex:none;width:10px;height:10px;margin-top:3px;background:var(--c-gold);clip-path:polygon(0 0,100% 0,62% 50%,62% 100%,38% 100%,38% 50%)}.dg-rel{stroke:var(--c-muted);stroke-width:2;fill:none}.dg-rel.is-inactive{stroke-dasharray:5 5}.dg-rel.is-dim,.dg-card.is-dim{opacity:.35}.dg-card circle{fill:var(--c-page);stroke:var(--c-muted);stroke-width:1.5}.dg-card text{fill:var(--c-moon);font:var(--w-bold) 12px var(--f-ui)}.dg-flowline{fill:none;stroke:var(--c-gold);stroke-width:4;stroke-linecap:round;filter:drop-shadow(0 0 6px rgba(255,209,102,.55))}.dg-blocked{fill:none;stroke:var(--c-coral);stroke-width:2.5;stroke-dasharray:6 6}.dg-stop circle{fill:var(--c-coral)}.dg-stop path{stroke:var(--c-ink);stroke-width:2.4;stroke-linecap:round}.lesson .dg-flow,.dg-flow{display:flex;flex-wrap:wrap;gap:var(--s-3) var(--s-6);margin:0;padding:0;list-style:none}.lesson .dg-flow li+li{margin-top:0}.dg-node{position:relative;display:flex;align-items:flex-start;gap:var(--s-2);padding:var(--s-2) var(--s-3);border-radius:14px;background:var(--c-panel);border:2px solid transparent;transition:border-color var(--d-base) var(--ease-out),opacity var(--d-base) var(--ease-out),background-color var(--d-base) var(--ease-out)}.dg-node:not(:last-child):after{content:"";position:absolute;right:calc(-1 * var(--s-6) + 6px);top:50%;width:10px;height:10px;border-top:2px solid var(--c-dim);border-right:2px solid var(--c-dim);transform:translateY(-50%) rotate(45deg)}.dg-node__n{flex:none;width:22px;height:22px;border-radius:7px;display:grid;place-items:center;font-size:.75rem;font-weight:var(--w-bold);background:var(--c-editor);color:var(--c-muted)}.dg-node__body{display:grid;gap:1px;min-width:0}.dg-node__code{font-family:var(--f-mono);font-size:.8125rem;color:var(--c-peach);background:none;padding:0;white-space:nowrap}.dg-node__label{color:var(--c-moon);font-size:var(--t-small);font-weight:var(--w-bold)}.dg-node__note{color:var(--c-muted);font-size:.8125rem;line-height:1.35}.dg-node[data-tone=active]{border-color:var(--c-gold);box-shadow:0 0 0 4px #ffd16624}.dg-node[data-tone=active] .dg-node__n{background:var(--c-gold);color:var(--c-ink)}.dg-node[data-tone=done] .dg-node__n{background:var(--c-mint);color:var(--c-ink)}.dg-node[data-tone=warn]{border-color:var(--c-coral)}.dg-node:not([data-tone]){opacity:.6}.dg-chart{display:block;width:100%;height:auto;overflow:visible}.dg-tick line{stroke:var(--c-line)}.dg-tick text,.dg-xlabel,.dg-axis{fill:var(--c-muted);font:var(--w-regular) 13px var(--f-ui)}.dg-col,.dg-dot{fill:var(--c-teal);transition:fill var(--d-base) var(--ease-out),opacity var(--d-base) var(--ease-out)}.dg-col[data-tone=hl],.dg-dot[data-tone=hl]{fill:var(--c-gold)}.dg-col[data-tone=dim],.dg-dot[data-tone=dim]{opacity:.35}.dg-linepath{fill:none;stroke:var(--c-teal);stroke-width:3;stroke-linejoin:round}.dg-band{fill:#ffd1661a}.dg-mark line{stroke:var(--c-gold);stroke-width:2;stroke-dasharray:6 5}.dg-mark text{fill:var(--c-gold);font:var(--w-bold) 13px var(--f-ui);paint-order:stroke;stroke:var(--c-page);stroke-width:4px}.dg-bar-ui{margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px solid var(--c-line);display:grid;gap:var(--s-3)}.lesson.concept__body .dg-caption code,.dg-caption code{white-space:normal;font-family:var(--f-mono);font-size:.875em;color:var(--c-peach);background:var(--c-editor);padding:1px 6px;border-radius:var(--r-xs);overflow-wrap:anywhere}.lesson .dg-caption,.dg-caption{margin:0;color:var(--c-moon);font-size:var(--t-ui);line-height:var(--lh-ui);min-height:calc(3 * var(--lh-ui) * 1em)}.dg-caption__n{color:var(--c-gold);font-weight:var(--w-bold);margin-right:var(--s-1)}.dg-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}.dg-controls[hidden]{display:none}.dg-btn{width:48px;padding:0}.dg-btn svg{width:20px;height:20px}.dg-btn:disabled{opacity:.45;cursor:default}.dg-btn--play .dg-i-pause,.dg-btn--play .dg-i-replay,.dg-btn--play[data-mode=pause] .dg-i-play,.dg-btn--play[data-mode=replay] .dg-i-play{display:none}.dg-btn--play[data-mode=pause] .dg-i-pause,.dg-btn--play[data-mode=replay] .dg-i-replay{display:block}.lesson .dg-dots,.dg-dots{display:flex;flex-wrap:wrap;gap:0;margin:0 0 0 var(--s-2);padding:0;list-style:none}.lesson .dg-dots li+li{margin-top:0}.dg-dot-btn{width:28px;height:44px;display:grid;place-items:center;border:0;background:none;cursor:pointer;padding:0}.dg-dot-btn:before{content:"";width:10px;height:10px;border-radius:50%;border:2px solid var(--c-dim);transition:background-color var(--d-fast),border-color var(--d-fast),transform var(--d-fast)}.dg-dot-btn.is-done:before{background:var(--c-dim)}.dg-dot-btn[aria-current=step]:before{background:var(--c-gold);border-color:var(--c-gold);transform:scale(1.2)}.dg-dot-btn:focus-visible{outline:none}.dg-dot-btn:focus-visible:before{box-shadow:var(--focus)}.lesson .dg-steps,.dg-steps{margin:var(--s-4) 0 0;padding-left:1.3em;color:var(--c-soft);font-size:var(--t-small)}.dg.is-live .dg-steps{display:none}@media(max-width:560px){.dg--tables .dg-stage{width:max-content;min-width:100%}.dg{padding:var(--s-4) var(--s-3) var(--s-3);margin-inline:calc(-1 * var(--s-1))}.dg-tables{flex-direction:column;gap:var(--s-4);padding-right:32px}.dg-table{padding-inline:var(--s-2)}.lesson .dg th,.lesson .dg td,.dg th,.dg td{padding:5px 6px}.lesson .dg table,.dg table{font-size:.8125rem}.dg-flow{flex-direction:column;gap:var(--s-5)}.dg-node:not(:last-child):after{right:auto;left:22px;top:auto;bottom:calc(-1 * var(--s-5) + 4px);transform:rotate(135deg)}.dg-model{grid-template-columns:minmax(0,1fr);grid-template-rows:none;gap:var(--s-5);justify-items:start;padding-right:64px}.dg-box{grid-column:1;grid-row:auto;order:var(--go);max-width:260px;padding:6px 10px 8px}.dg-box__fields{font-size:.75rem}.dg-dots{margin-left:0}.dg-tick text,.dg-xlabel,.dg-axis,.dg-mark text{font-size:25px}}@media(prefers-reduced-motion:reduce){.dg *,.dg *:before{transition:none!important;animation:none!important}}html[data-motion=reduce] .dg *,html[data-motion=reduce] .dg *:before{transition:none!important;animation:none!important}.concept-page{padding-bottom:var(--section)}.concept-head{grid-template-columns:minmax(0,1fr);padding-bottom:var(--s-4)}.concept-head__title{max-width:26ch}.concept-head__done{color:var(--c-mint);font-weight:var(--w-bold)}.concept__body{max-width:980px;margin-top:var(--s-10)}.concept__body>:not(.dg):not(.concept-check){max-width:var(--measure)}.lesson.concept__body h2{font:var(--w-display) var(--t-h2)/1.2 var(--f-display);letter-spacing:var(--track-display);margin-top:var(--s-12)}.lesson.concept__body h2:first-child{margin-top:0}.lesson.concept__body h3{font-size:var(--t-btn);margin-top:var(--s-6)}@media(min-width:560px){.lesson.concept__body :not(pre)>code{white-space:nowrap}}.lesson.concept__body :not(pre)>code{overflow-wrap:anywhere}.concept-check{max-width:820px;margin-top:var(--s-12)}.lesson .concept-check>*+*{margin-top:var(--s-4)}.concept-check__hint{color:var(--c-muted);font-size:var(--t-small)}.concept-check__set{border:0;display:grid;gap:var(--s-3);padding:0;margin:0;min-width:0}.lesson .concept-check__set{margin-top:var(--s-5)}.concept-check__q{float:left;width:100%;padding:0;margin-bottom:var(--s-3);color:var(--c-moon);font:var(--w-bold) 1.1875rem/1.4 var(--f-ui)}.concept-check__q+*{clear:both}.lesson.concept__body .concept-check code{white-space:normal;overflow-wrap:anywhere;font-size:.875em}.concept-check__opt{position:relative;display:flex;align-items:center;gap:var(--s-4);min-height:56px;padding:var(--s-3) var(--s-4);border-radius:var(--r-chip);background:var(--c-panel);border:2px solid transparent;cursor:pointer;color:var(--c-moon);font-size:var(--t-ui);line-height:1.4;transition:border-color var(--d-fast)}.concept-check__opt:hover{border-color:var(--c-ghost-rim)}.concept-check__opt input{position:absolute;opacity:0;pointer-events:none}.concept-check__opt:has(input:focus-visible){box-shadow:var(--focus)}.concept-check__opt:has(input:disabled){cursor:default}.concept-check__letter{width:32px;height:32px;flex:none;border-radius:10px;display:grid;place-items:center;background:var(--c-editor);font-weight:var(--w-bold)}.concept-check__text{flex:1;min-width:0;overflow-wrap:anywhere}.concept-check__opt.is-right{border-color:var(--c-mint)}.concept-check__opt.is-right .concept-check__letter{background:var(--c-mint);color:var(--c-ink)}.concept-check__opt.is-wrong{border-color:var(--c-coral)}.concept-check__opt.is-wrong .concept-check__letter{background:var(--c-coral);color:var(--c-ink)}.concept-check__feedback{display:grid;gap:var(--s-3)}.lesson .concept-check__feedback>*+*{margin-top:0}.concept-check__why{color:var(--c-soft);line-height:var(--lh-body)}.concept-check__why.is-right b{color:var(--c-mint)}.concept-check__why.is-wrong b{color:var(--c-coral)}.concept-check__done{color:var(--c-mint);font-weight:var(--w-bold)}.concept-next{margin-top:var(--s-12);padding-top:var(--s-8);border-top:1px solid var(--c-line);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-5) var(--s-8);max-width:980px}.concept-next__go{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-3) var(--s-5)}.concept-next__sub{color:var(--c-soft);font-size:var(--t-small)}.concept-next__back{display:inline-flex;align-items:center;min-height:44px;color:var(--c-soft);text-decoration:underline;text-underline-offset:3px}.concept-next__back:hover{color:var(--c-gold)}
