.xy-dag-shell{background:#fbfcfd;height:min(70vh,680px);min-height:560px}.xy-dag-canvas{width:100%;min-width:0;height:100%;position:relative}.xy-dag-node{cursor:pointer;background:#fff;border:1.5px solid #c3ccd5;border-radius:8px;width:230px;min-height:96px;padding:10px 12px;transition:box-shadow .14s;box-shadow:0 4px 12px #18243014}.xy-dag-node.is-highlighted{background:#fff3ee;border-width:2px;border-color:#b42318}.xy-dag-node.is-focused{background:#ffe0d8;border-width:3px}.xy-dag-node-top{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.xy-dag-node-kicker{color:#006d77;flex:1;justify-content:space-between;gap:8px;min-width:0;font-size:.74rem;font-weight:800;display:flex}.xy-dag-node-kicker span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.xy-dag-node-text{color:#202124;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-top:7px;font-size:.84rem;font-weight:700;line-height:1.45;display:-webkit-box;overflow:hidden}.xy-dag-handle{background:#fff;border:2px solid #006d77;width:8px;height:8px}.xy-dag-node.is-highlighted .xy-dag-handle{border-color:#b42318}.xy-dag-edge{stroke:#b8c2cc}.xy-dag-edge-highlight{stroke:#b42318}.xy-dag-mount .react-flow__edge-path{stroke-width:2.2px}.xy-dag-mount .xy-dag-edge-highlight .react-flow__edge-path{stroke-width:4px}.xy-dag-mount .xy-dag-edge-selected .react-flow__edge-path{stroke-width:5px}.xy-dag-edge-panel,.xy-dag-info-panel{z-index:8;color:#202124;background:#fffffff5;border:1px solid #bfd0d4;border-radius:8px;width:min(360px,100% - 24px);padding:12px 14px;font-size:.86rem;line-height:1.55;position:absolute;bottom:12px;right:12px;box-shadow:0 10px 28px #18243029}.xy-dag-edge-panel p,.xy-dag-info-panel p{margin:8px 0 0}.xy-dag-edge-panel p span,.xy-dag-info-panel p span{color:#006d77;font-size:.74rem;font-weight:900;display:block}.xy-dag-edge-panel-top,.xy-dag-info-panel-top{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.xy-dag-edge-panel-top strong,.xy-dag-info-panel-top strong{color:#b42318;letter-spacing:.04em;font-size:.74rem;display:block}.xy-dag-edge-panel-top code,.xy-dag-info-panel-top code{color:#202124;margin-top:2px;font-weight:800;display:block}.xy-dag-edge-panel-close,.xy-dag-info-panel-close{color:#006d77;cursor:pointer;background:#fff;border:1px solid #bfd0d4;border-radius:999px;flex:0 0 24px;place-items:center;width:24px;height:24px;font-weight:900;line-height:1;display:inline-grid}.xy-dag-edge-panel-close:hover,.xy-dag-info-panel-close:hover{background:#e9f6f7;border-color:#006d77}.xy-dag-edge-difficulty,.xy-dag-edge-muted,.xy-dag-node-kind{color:#5f6368}.xy-dag-mount .react-flow__controls-button{border-color:#d7dde5}.xy-dag-mount.is-compact .xy-dag-shell{height:min(56vh,560px);min-height:430px}@media (width<=860px){.xy-dag-shell{height:58vh;min-height:380px}.xy-dag-mount.is-compact .xy-dag-shell{height:44vh;min-height:340px}.xy-dag-canvas{min-height:100%}.xy-dag-node{width:200px;min-height:88px;padding:9px 10px}.xy-dag-node-text{font-size:.78rem;line-height:1.42}.xy-dag-edge-panel,.xy-dag-info-panel{width:calc(100% - 16px);max-height:46%;padding:10px 12px;bottom:8px;right:8px;overflow:auto}.xy-dag-mount .react-flow__minimap{display:none}}:root{--color-bg:#f5f7f8;--color-surface:#fff;--color-surface-muted:#fbfcfd;--color-text:#202124;--color-muted:#586670;--color-subtle:#64717c;--color-primary:#006d77;--color-primary-soft:#e8f4f4;--color-border:#dbe4ea;--color-border-strong:#cfdce2;--radius-sm:6px;--radius-md:8px;--shadow-1:0 1px 2px #1018280f, 0 1px 3px #1018280d;--shadow-2:0 4px 12px #10182814;--space-page:40px}*{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.7}.boot-loading{color:#50606b;margin:32px;font-weight:800}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:none}.site-header{z-index:20;border-bottom:1px solid var(--color-border);background:color-mix(in srgb, var(--color-surface) 94%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;align-items:center;gap:24px;padding:12px max(24px,50vw - 560px);display:flex;position:sticky;top:0}.site-brand{color:var(--color-text);font-weight:900;line-height:1.2}.site-nav{gap:6px;font-size:.92rem;font-weight:800;display:flex}.site-nav a{border-radius:var(--radius-md);color:var(--color-primary);padding:8px 12px}.site-nav a:hover{background:var(--color-primary-soft)}main{width:min(1120px,100% - 32px);padding:var(--space-page) 0 64px;margin:0 auto}.site-footer{border-top:1px solid var(--color-border);color:var(--color-subtle);padding:20px max(24px,50vw - 560px);font-size:.9rem}.hero{grid-template-columns:minmax(0,1fr) 320px;align-items:end;gap:32px;padding:28px 0 12px;display:grid}.hero-meta{flex-wrap:wrap;gap:10px;display:flex}.meta-pill{border:1px solid var(--color-border-strong);background:var(--color-surface);color:#495762;border-radius:999px;align-items:center;padding:5px 10px;font-size:.82rem;font-weight:900;display:inline-flex}h1,h2,h3,p{margin-top:0}h1{margin-bottom:14px;font-size:clamp(2rem,4.3vw,3.9rem);line-height:1.08}h2{font-size:1.35rem;line-height:1.3}.lead{color:#4b5964;max-width:760px;font-size:1.08rem}.eyebrow{color:var(--color-primary);letter-spacing:.04em;font-size:.8rem;font-weight:900}.stats,.chips{flex-wrap:wrap;gap:8px;display:flex}.stats span,.chip{border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:#495762;align-items:center;min-height:30px;padding:4px 9px;font-size:.82rem;font-weight:800;display:inline-flex}.chip.is-muted{color:#6a747d}.section{margin-top:32px}.reading-flow,.chapter-grid,.technique-grid,.link-grid,.problem-list,.node-list,.norm-list{gap:12px;display:grid}.reading-flow{grid-template-columns:repeat(3,minmax(0,1fr))}.book-width{max-width:960px;margin-inline:auto}.page-card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-1);padding:32px}.reading-flow>div,.chapter-link,.technique-card,.node-card,.norm-card,.worked-example{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-1);padding:18px}.wide-band{background:var(--color-surface);border-block:1px solid var(--color-border);margin:44px calc(50% - 50vw) 0;padding:36px max(24px,50vw - 560px)}.home-grid,.chapter-signal{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;display:grid}.chapter-signal>div{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-1);padding:18px}.chapter-signal dt{color:var(--color-primary);font-weight:900}.chapter-signal dd{color:#586670;margin:0}.chapter-grid,.technique-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.home-card,.link-card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-1);color:inherit;align-content:start;gap:10px;padding:18px;transition:border-color .12s,box-shadow .12s,transform .12s;display:grid}.home-card:hover,.link-card:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-2);transform:translateY(-1px)}.chapter-card-head{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px;min-height:52px;display:grid}.home-card strong,.link-card strong{color:var(--color-text);line-height:1.35}.home-card span,.link-card span{color:var(--color-muted);font-size:.92rem}.card-meta{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.metric-pill{border:1px solid var(--color-border-strong);background:var(--color-surface-muted);color:#50606b;border-radius:999px;align-items:center;min-height:26px;padding:3px 8px;font-size:.78rem;font-weight:900;display:inline-flex}.home-card .metric-pill,.link-card .metric-pill,.problem-list .metric-pill{color:#50606b;font-size:.78rem}.technique-index-card{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px;display:grid}.chapter-link,.technique-card{color:inherit;grid-template-columns:auto minmax(0,1fr);gap:6px;display:grid}.chapter-link>span,.technique-card>strong,.technique-card>span{grid-column:2}.chapter-link span,.technique-card span,.node-card p,.norm-card p{color:#586670}.norm-icon,.technique-icon,.technique-card-icon,.chapter-card-icon,.hand-icon{flex:none;display:block}.norm-icon{width:96px;height:84px}.hand-icon{width:72px;height:64px}.technique-icon{width:104px;height:92px}.technique-card-icon{width:48px;height:42px}.chapter-card-icon{width:58px;height:51px}.chip-icon{width:24px;height:21px;margin-right:6px}.norm-icon-bg,.hand-icon-bg{fill:#fbfcfd;stroke:#d7e0e6;stroke-width:2px}.svg-panel,.svg-bucket,.svg-answer{fill:#fff;stroke:#9eb4bf;stroke-width:2px}.svg-focus{fill:#dff4f2;stroke:#006d77;stroke-width:2px}.svg-hot,.icon-sig-chip-hot{fill:#b42318}.svg-ok{fill:#d9f3e6;stroke:#12805c}.svg-ng{fill:#ffe2dc;stroke:#b42318}.svg-arrow,.svg-brace,.svg-track,.svg-event,.svg-muted-line,.svg-graph line,.svg-tree line,.svg-plane line{fill:none;stroke:#006d77;stroke-linecap:round;stroke-linejoin:round;stroke-width:4px}.svg-track,.svg-muted-line{stroke:#9eb4bf}.svg-arrow-head{fill:#006d77}.svg-dot-grid circle,.norm-icon circle,.hand-icon circle,.technique-icon circle,.technique-card-icon circle,.chapter-card-icon circle,.chip-icon circle{fill:#c3ccd5}.norm-icon circle.svg-hot,.hand-icon circle.svg-hot,.technique-icon circle.svg-hot,.technique-card-icon circle.svg-hot,.chapter-card-icon circle.svg-hot,.chip-icon circle.svg-hot{fill:#b42318}.norm-icon circle.svg-focus,.hand-icon circle.svg-focus,.technique-icon circle.svg-focus,.technique-card-icon circle.svg-focus,.chapter-card-icon circle.svg-focus,.chip-icon circle.svg-focus{fill:#dff4f2;stroke:#006d77}.svg-grid rect,.svg-array rect,.svg-dp rect{fill:#fff;stroke:#9eb4bf;stroke-width:2px}.svg-grid rect.svg-focus,.svg-array rect.svg-focus,.svg-dp rect.svg-focus{fill:#dff4f2;stroke:#006d77}.svg-lens{fill:#006d7714;stroke:#006d77;stroke-width:3px}.svg-graph circle,.svg-tree circle{fill:#fff;stroke:#006d77;stroke-width:2px}.svg-graph circle.svg-hot,.svg-tree circle.svg-hot{fill:#ffe8df;stroke:#b42318}.norm-icon-code,.norm-icon-label,.icon-sig-text{fill:#202124;font-size:15px;font-weight:900}.norm-icon-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.icon-sig-rail{fill:none;stroke:#9eb4bf;stroke-linecap:round;stroke-width:3px}.icon-sig-chip{fill:#dff4f2;stroke:#006d77;stroke-width:2px}.icon-sig-chip.icon-sig-chip-hot{fill:#ffe8df;stroke:#b42318}.icon-sig-badge{fill:#fff;stroke:#006d77;stroke-width:2px}.icon-sig-text{fill:#006d77;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.link-grid,.problem-list{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.problem-chip{color:#006d77;background:#fff;border:1px solid #cfdce2;border-radius:999px;align-items:center;padding:5px 10px;font-size:.86rem;font-weight:900;display:inline-flex}.problem-list{align-items:start}.problem-difficulty-groups{gap:16px;display:grid}.problem-difficulty-group{gap:8px;display:grid}.problem-difficulty-group h5{color:#3f4c56;margin:0;font-size:.84rem;font-weight:900}.problem-difficulty-label,.example-difficulty-label{color:#4d5c67;background:#f8fbfc;border:1px solid #cfdce2;border-radius:999px;align-items:center;width:fit-content;font-size:.78rem;font-weight:900;line-height:1;display:inline-flex}.problem-difficulty-label{margin:0 0 10px;padding:6px 10px}.example-difficulty-label{padding:4px 8px}.link-grid>a:not(.link-card),.problem-list>a:not(.problem-chip):not(.link-card){border-bottom:1px solid #d7e0e6;gap:2px;padding:8px 0;display:grid}.problem-list a span{color:#64717c;font-size:.86rem}.technique-chip-list,.text-chip-list,.technique-link-list{flex-wrap:wrap;gap:8px;display:flex}.technique-chip,.text-chip-list span,.rule-link-chip{color:#495762;background:#fff;border:1px solid #cfdce2;border-radius:999px;align-items:center;min-height:30px;padding:4px 10px;font-size:.82rem;font-weight:900;display:inline-flex}.rule-link-chip span{color:#006d77;margin-right:6px}.problem-analysis-flow{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-1);margin-top:20px;overflow:hidden}.problem-links{flex-wrap:wrap;gap:10px;display:flex}.problem-links a{background:#fff;border:1px solid #cfdce2;border-radius:8px;padding:6px 10px;font-weight:800}.problem-analysis-links{flex-wrap:wrap;gap:10px;display:flex}.problem-analysis-links a{border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);padding:7px 12px;font-weight:800}.problem-analysis-links a:hover{background:var(--color-primary-soft)}.node-card div{color:#006d77;justify-content:space-between;gap:12px;font-size:.82rem;font-weight:900;display:flex}.hand-list{gap:10px;display:grid}.hand-list section{border-left:4px solid #006d77;padding:10px 0 10px 12px}.rule-header,.rule-section,.rule-choice-signals,.worked-examples{margin-top:24px}.rule-header:first-child{margin-top:0}.rule-topline,.rule-meta,.norm-hand-head,.hand-chip-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.norm-heading{grid-template-columns:96px minmax(0,1fr);align-items:center;gap:16px;display:grid}.rule-card{scroll-margin-top:88px}.rule-number,.rule-meta span,.hand-number,.hand-chip-row>span{color:#50606b;background:#eef3f5;border-radius:999px;padding:3px 8px;font-size:.78rem;font-weight:900}.norm-hand-list{gap:18px;margin:0;padding-left:0;list-style:none;display:grid}.norm-hand{border-top:1px solid var(--color-border);padding-top:18px}.norm-hand-layout{grid-template-columns:auto minmax(0,1fr);gap:14px;display:grid}.norm-hand-body h4{margin-bottom:4px}.norm-hand-example{color:#5f6f7a;gap:3px;margin-top:8px;font-size:.9rem;line-height:1.55;display:grid}.norm-hand-example a{width:fit-content;color:var(--color-accent);font-weight:900}.norm-hand-example span{max-width:76ch}.hand-action{color:#202124}.worked-examples{gap:10px;display:grid}.visual-block{margin:18px 0 8px;overflow-x:auto}.norm-visual{width:100%;min-width:680px;height:auto;display:block}.norm-visual .svg-label{fill:#202124;font-size:22px;font-weight:900}.norm-visual .svg-small,.norm-visual .svg-code,.norm-visual .svg-chips text,.norm-visual .svg-reject text,.norm-visual .svg-token-row text,.norm-visual .svg-factor text,.norm-visual .svg-history text,.norm-visual .svg-array text,.norm-visual .svg-dp text{fill:#202124;font-size:16px;font-weight:800}.norm-visual .svg-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.norm-visual .svg-token-row circle,.norm-visual .svg-factor circle{fill:#fff;stroke:#9eb4bf;stroke-width:2px}.norm-visual .svg-token-row circle.svg-hot,.norm-visual .svg-factor circle.svg-hot{fill:#ffe8df;stroke:#b42318}.norm-visual .svg-chips rect,.norm-visual .svg-reject rect{fill:#eef3f5;stroke:#cfdce2;stroke-width:2px}.norm-visual .svg-reject line{stroke:#b42318;stroke-linecap:round;stroke-width:3px}.norm-visual .svg-bars rect{fill:#dff4f2;stroke:#006d77;stroke-width:2px}.norm-visual .svg-relations rect,.norm-visual .svg-history rect{fill:#fff;stroke:#9eb4bf;stroke-width:2px}.norm-visual .svg-relations path{fill:none;stroke:#006d77;stroke-linecap:round;stroke-width:4px}.worked-example{background:var(--color-surface-muted)}.worked-example ol{padding-left:1.4rem}.dag-figure{margin:14px 0 18px}.dag-toolbar{justify-content:flex-end;margin-bottom:8px;display:flex}.dag-open,.dag-close{color:#006d77;font:inherit;cursor:pointer;background:#fff;border:1px solid #d7e0e6;border-radius:6px;padding:5px 10px;font-weight:800}.dag-open:hover,.dag-close:hover{background:#eef3f5}.dag-dialog{border:0;border-radius:8px;width:min(1180px,96vw);height:min(900px,92vh);padding:0;box-shadow:0 20px 70px #10182859}.dag-dialog::backdrop{background:#11182794}.dag-dialog-shell{background:#fff;flex-direction:column;height:100%;display:flex}.dag-dialog-header{border-bottom:1px solid #d7e0e6;justify-content:space-between;align-items:start;gap:16px;padding:16px 18px;display:flex}.dag-dialog-header h4{margin:2px 0 0;font-size:1.1rem}.dag-dialog-body{padding:18px;overflow:auto}.implementation-notes{border-top:1px solid var(--color-border);margin-top:20px;padding-top:16px}.page-card>section{margin-top:30px}.page-card>section>h2,.page-card>section>h4{margin-bottom:12px}.implementation-notes h5{margin:0 0 8px;font-size:.95rem}.analysis-solution-list li{padding:10px 0}.mobile-solution-steps{display:none}.mobile-solution-steps ol{gap:10px;margin:0;padding:0;list-style:none;display:grid}.mobile-solution-steps li{border-left:4px solid var(--color-border-strong);padding:2px 0 2px 12px}.mobile-solution-steps span{color:#50606b;background:#eef3f5;border-radius:999px;margin-bottom:3px;padding:2px 8px;font-size:.76rem;font-weight:900;display:inline-flex}.mobile-solution-steps p{color:#3f4c56;margin:0}.editorial-link{font-size:.92rem}.norm-head,.hand-head,.title-with-icon{align-items:flex-start;gap:14px;display:flex}.technique-article-header{align-items:center;gap:16px;display:flex}.technique-body section{margin-top:18px}.compact-list{margin-bottom:0}.title-with-icon{align-items:center}.norm-situation-quote{border-left:4px solid #d7e0e6;padding-left:12px}.explanation-list{gap:12px;display:grid}.explanation-card{background:#fff;border:1px solid #dbe4ea;border-radius:8px;padding:16px}.explanation-card h3{margin-bottom:8px}.small-note{color:#64717c;font-size:.86rem}@media (width<=720px){.site-header,.reading-flow,.norm-head,.norm-hand-layout,.title-with-icon,.hero,.technique-article-header,.norm-heading{display:grid}.hero,.norm-heading{grid-template-columns:1fr}.site-header{gap:8px;padding:10px 16px}.site-brand{font-size:.95rem}.site-nav{justify-content:space-between;width:100%}.site-nav a{text-align:center;flex:1 1 0;padding:7px 8px}main{width:min(100% - 20px,1120px);padding:22px 0 44px}h1{overflow-wrap:anywhere;font-size:2rem;line-height:1.16}h2{font-size:1.18rem}.hero{gap:16px;padding-top:12px}.page-card{padding:18px}.wide-band{margin-top:28px;padding:24px 10px}.chapter-grid,.technique-grid,.link-grid,.problem-list,.reading-flow{grid-template-columns:1fr}.home-card,.link-card,.reading-flow>div,.chapter-link,.technique-card,.node-card,.norm-card,.worked-example{padding:14px}.technique-article-header{gap:10px}.mobile-solution-steps{display:block}.problem-flow-section .small-note{font-size:.82rem}}
