/* /data-strategy -- components that data-maturity.css (loaded first) does not have.
   Prefix ds-; shared dm- components (cards, tabs, assessment, reveal) come from there. */

/* hero cascade */
.ds-hero-vis svg{width:100%;max-width:440px;height:auto;display:block;margin:0 auto;overflow:visible}
.ds-hero-vis .flow-bg{fill:none;stroke:var(--line);stroke-width:2}
.ds-hero-vis .flow{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-dasharray:6 8;animation:dmDash 6s linear infinite}
.ds-hero-vis .dot{fill:var(--accent)}
.ds-hero-vis .nd{opacity:0;animation:dmFade .6s ease forwards;animation-delay:calc(var(--i) * 220ms + 200ms)}
.ds-hero-vis .nd circle{fill:var(--bg);stroke:var(--accent);stroke-width:2.5}
.ds-hero-vis .nn{font:700 12px var(--f-body);fill:var(--accent);text-anchor:middle}
.ds-hero-vis .nl{font:600 14px var(--f-body);fill:var(--fg)}

/* is / is not */
.ds-is{border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);overflow:hidden}
.ds-ishead,.ds-isrow{display:grid;grid-template-columns:1fr 1fr}
.ds-ishead span{padding:10px 16px;font-size:.75rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;background:var(--paper)}
.ds-ishead span:first-child{color:var(--signal)}.ds-ishead span:last-child{color:var(--critical)}
.ds-isrow{border-top:1px solid var(--line-soft)}
.ds-isrow span{display:flex;gap:10px;align-items:flex-start;padding:12px 16px;font-size:.9rem;line-height:1.45}
.ds-isrow svg{flex:none;width:16px;height:16px;margin-top:2px}
.ds-isrow .is svg{color:var(--signal)}.ds-isrow .not{color:var(--fg-dim);border-left:1px solid var(--line-soft)}.ds-isrow .not svg{color:var(--critical)}

/* flip cards */
.ds-flips{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.ds-flip{perspective:1000px;min-height:210px;outline:none}
.ds-flip .in{position:relative;width:100%;height:100%;min-height:210px;transition:transform .6s cubic-bezier(.2,.8,.2,1);transform-style:preserve-3d}
.ds-flip:hover .in,.ds-flip:focus .in,.ds-flip.flipped .in{transform:rotateY(180deg)}
.ds-flip .f,.ds-flip .b{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border:1px solid var(--line);border-radius:var(--r-md);padding:22px;background:var(--bg)}
.ds-flip .b{transform:rotateY(180deg);background:var(--accent);border-color:var(--accent);color:#fff;display:flex;flex-direction:column;justify-content:center}
.ds-flip .n{font-size:.75rem;font-weight:600;color:var(--fg-faint)}
.ds-flip h3{font-size:1.25rem;margin:8px 0}
.ds-flip p{margin:0;color:var(--fg-dim);font-size:.9375rem;line-height:1.55}
.ds-flip .b p{color:#fff;font-size:1.05rem;line-height:1.5}
.ds-flip .b .k{font-size:.75rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;opacity:.8;margin-bottom:8px}
.ds-flip em{position:absolute;bottom:16px;left:22px;font-style:normal;font-size:.75rem;color:var(--accent)}
@media (hover:none){.ds-flip em::after{content:" (tap)"}}

/* stage cycle */
.ds-cycle{max-width:500px;width:100%;margin:0 auto;position:sticky;top:96px}
.ds-cycle svg{width:100%;height:auto;display:block;overflow:visible}
.ds-orbit{transform-origin:210px 210px;animation:dmSpin 80s linear infinite}
.ds-seg{cursor:pointer;outline:none}
.ds-seg path{fill:color-mix(in srgb,var(--sc) 14%,var(--bg));stroke:var(--bg);stroke-width:2;transition:fill .25s}
.ds-seg:hover path,.ds-seg:focus-visible path{fill:color-mix(in srgb,var(--sc) 32%,var(--bg))}
.ds-seg.on path{fill:var(--sc)}
.ds-seg text{text-anchor:middle;pointer-events:none;fill:var(--fg)}
.ds-seg .sn{font:500 20px var(--f-display)}.ds-seg .sl{font:600 12px var(--f-body)}
.ds-seg.on text{fill:#fff}
.ds-cycle .ct{font:500 20px var(--f-display);fill:#fff;text-anchor:middle}
.ds-cycle .cs{font:600 10px var(--f-body);fill:#fff;opacity:.8;text-anchor:middle;letter-spacing:.08em;text-transform:uppercase}
.ds-deckbtn{font:inherit;font-size:.875rem;font-weight:600;display:inline-flex;gap:8px;align-items:center;border:1px solid var(--sc);color:var(--fg);background:color-mix(in srgb,var(--sc) 8%,var(--bg));padding:9px 14px;border-radius:var(--r-sm);cursor:pointer}
.ds-deckbtn:hover{background:color-mix(in srgb,var(--sc) 18%,var(--bg))}

/* line of sight */
.ds-los-chain{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-top:8px}
.ds-los-s{position:relative;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);padding:16px 14px;min-height:150px;animation:dmFadeUp .5s ease both;animation-delay:calc(var(--i) * 110ms)}
.ds-los-s:not(:last-child)::after{content:"";position:absolute;right:-12px;top:50%;width:12px;height:2px;background:var(--accent)}
.ds-los-s:nth-child(odd){background:var(--accent-wash);border-color:var(--accent-line)}
.ds-los-s .k{display:block;font-size:.6875rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:8px}
.ds-los-s b{font-weight:500;font-size:.9375rem;line-height:1.45;display:block}
.ds-los .dm-seg button[aria-selected="true"]{background:var(--accent);color:#fff}
.ds-los .dm-seg button{--mc:var(--accent)}

/* pillars */
.ds-pillars{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;align-items:start}
.ds-pillar{border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);transition:border-color .25s,box-shadow .25s}
.ds-pillar[open]{border-color:var(--accent);box-shadow:var(--shadow)}
.ds-pillar summary{list-style:none;cursor:pointer;padding:20px;display:grid;gap:6px;position:relative}
.ds-pillar summary::-webkit-details-marker{display:none}
.ds-pillar summary::after{content:"+";position:absolute;right:18px;top:16px;font-size:1.4rem;color:var(--accent);transition:transform .3s}
.ds-pillar[open] summary::after{transform:rotate(45deg)}
.ds-pillar .n{font-size:.75rem;font-weight:600;color:var(--fg-faint)}
.ds-pillar summary b{font-family:var(--f-display);font-weight:500;font-size:1.2rem;padding-right:24px}
.ds-pillar .q{color:var(--fg-dim);font-size:.9rem;line-height:1.5}
.ds-pillar>div{padding:0 20px 20px;animation:dmFadeUp .35s ease}
.ds-pillar h4{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-faint);margin:0 0 6px}
.ds-pillar ul{margin:0 0 12px;padding-left:18px;font-size:.875rem;line-height:1.55}
.ds-pillar .sig{margin:0;font-size:.875rem;line-height:1.5;padding:10px 12px;background:var(--accent-wash);border-radius:var(--r-sm)}

/* portfolio matrix */
.ds-port{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:clamp(20px,3vw,44px);align-items:center}
.ds-matrix svg{width:100%;height:auto;display:block;max-width:600px;margin:0 auto}
.ds-matrix .qa{stroke:var(--bg);stroke-width:4}
.ds-matrix .qa.q0{fill:color-mix(in srgb,var(--dm-l5) 9%,var(--bg))}.ds-matrix .qa.q1{fill:color-mix(in srgb,var(--accent) 9%,var(--bg))}
.ds-matrix .qa.q2{fill:color-mix(in srgb,var(--dm-l3) 8%,var(--bg))}.ds-matrix .qa.q3{fill:var(--paper)}
.ds-matrix .ql{font:700 11px var(--f-body);fill:var(--fg-faint);letter-spacing:.08em;text-transform:uppercase}
.ds-matrix .ax{stroke:var(--fg);stroke-width:1.5}
.ds-matrix .at{font:600 12px var(--f-body);fill:var(--fg-dim)}
.ds-bub{cursor:default;outline:none}
.ds-bub circle{fill-opacity:.85;stroke:var(--bg);stroke-width:2;transition:r .25s;transform-box:fill-box;transform-origin:center}
.js .ds-matrix .ds-bub circle{transform:scale(0);transition:transform .6s cubic-bezier(.3,1.5,.5,1);transition-delay:calc(var(--i) * 90ms)}
.js .ds-matrix.in .ds-bub circle{transform:scale(1)}
.ds-bub.q0 circle{fill:var(--dm-l5)}.ds-bub.q1 circle{fill:var(--accent)}.ds-bub.q2 circle{fill:var(--dm-l3)}.ds-bub.q3 circle{fill:#9AA6B2}
.ds-bub text{font:600 11px var(--f-body);fill:var(--fg);text-anchor:middle;pointer-events:none;opacity:.85}
.ds-bub:hover circle,.ds-bub:focus circle{stroke:var(--fg)}
.ds-qs{display:grid;gap:10px}
.ds-q{border-left:4px solid var(--qc);padding:10px 14px;background:var(--bg);border-radius:0 var(--r-sm) var(--r-sm) 0}
.ds-q.q0{--qc:var(--dm-l5)}.ds-q.q1{--qc:var(--accent)}.ds-q.q2{--qc:var(--dm-l3)}.ds-q.q3{--qc:#9AA6B2}
.ds-q b{display:block;font-size:1rem}.ds-q span{font-size:.875rem;color:var(--fg-dim);line-height:1.5}

/* operating model */
.ds-om{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(20px,3vw,44px);align-items:center}
.ds-om .dm-seg button[aria-pressed="true"]{background:var(--accent);color:#fff}
.ds-omvis svg{width:100%;max-width:420px;height:auto;display:block}
.ds-omvis .u circle{fill:var(--bg);stroke:var(--accent);stroke-width:2;transition:cx .8s cubic-bezier(.2,.8,.2,1),cy .8s cubic-bezier(.2,.8,.2,1),r .6s,fill .4s}
.ds-omvis .u text{font:600 11px var(--f-body);fill:var(--fg);text-anchor:middle;transition:x .8s cubic-bezier(.2,.8,.2,1),y .8s cubic-bezier(.2,.8,.2,1)}
.ds-omvis .ul{stroke:var(--accent-line);stroke-width:2;transition:x2 .8s cubic-bezier(.2,.8,.2,1),y2 .8s cubic-bezier(.2,.8,.2,1),stroke-dasharray .4s}
.ds-omvis .hub{fill:var(--accent);transition:r .6s}
.ds-omvis .ht{font:600 12px var(--f-body);fill:#fff;text-anchor:middle}
.ds-omvis .u.spoke circle{fill:var(--accent-wash)}
.ds-omp{border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);padding:24px 26px}
.ds-omp h3{font-size:1.5rem;margin:0 0 6px}.ds-omp .lede{color:var(--fg-dim);margin:0 0 16px;line-height:1.6}
.ds-ompanel:not([hidden]){animation:dmFadeUp .4s ease}

/* roadmap grid */
.ds-road{display:grid;grid-template-columns:120px repeat(3,minmax(0,1fr));gap:8px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);padding:14px}
.ds-hz{padding:10px 12px;border-radius:var(--r-sm);background:var(--fg);color:var(--bg)}
.ds-hz b{display:block;font-size:.9375rem}.ds-hz span{font-size:.75rem;opacity:.75;margin-right:6px}.ds-hz em{font-style:normal;font-size:.75rem;opacity:.75}
.ds-lane{font-weight:700;font-size:.875rem;display:flex;align-items:center;padding:0 6px}
.ds-cell{border-radius:var(--r-sm);padding:12px 14px;font-size:.875rem;line-height:1.45;background:color-mix(in srgb,var(--accent) calc(8% + var(--h) * 9%),var(--bg));border:1px solid color-mix(in srgb,var(--accent) calc(18% + var(--h) * 12%),var(--bg))}
.js .ds-road .ds-cell{opacity:0;transform:translateX(-14px);transition:opacity .5s ease,transform .5s ease;transition-delay:calc(var(--i) * 60ms)}
.js .ds-road.in .ds-cell{opacity:1;transform:none}

/* literacy pulse */
.ds-lit{margin-top:44px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);padding:24px 26px}
.ds-lit-h{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;flex-wrap:wrap}
.ds-lit .hint{color:var(--fg-dim);margin:0}
.ds-lit-score{text-align:right;min-width:180px}
.ds-lit-score b{font:500 2.5rem var(--f-display)}.ds-lit-score span{color:var(--fg-faint);margin-left:4px}
.ds-lit-score em{display:block;font-style:normal;font-size:.8125rem;font-weight:600;color:var(--accent);max-width:260px;margin-left:auto}
.ds-lit-list{margin:18px 0 0;padding-left:22px;display:grid;gap:8px}
.ds-lit-list li{display:flex;justify-content:space-between;align-items:center;gap:14px;font-size:.9rem;line-height:1.45;padding:6px 0;border-bottom:1px solid var(--line-soft)}
.ds-lik{display:flex;gap:4px;flex:none}
.ds-lik button{width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:var(--bg);font:600 .8125rem var(--f-body);color:var(--fg-dim);cursor:pointer;transition:background .2s,color .2s,transform .15s}
.ds-lik button:hover{border-color:var(--accent);transform:scale(1.08)}
.ds-lik button[aria-checked="true"]{background:var(--accent);border-color:var(--accent);color:#fff}

/* narrative arc, triggers */
.ds-arc{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;counter-reset:b}
.ds-beat{position:relative;padding:18px 16px;border-radius:var(--r-md);background:var(--bg);border:1px solid var(--line)}
.ds-beat span{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--accent);color:#fff;font-weight:700;font-size:.8125rem;margin-bottom:10px}
.ds-beat b{display:block;font-family:var(--f-display);font-weight:500;font-size:1.2rem;margin-bottom:4px}
.ds-beat p{margin:0;font-size:.875rem;color:var(--fg-dim);line-height:1.5}
.ds-beat:not(:last-child)::after{content:"";position:absolute;right:-9px;top:30px;border:6px solid transparent;border-left:8px solid var(--accent);z-index:1}
.ds-aud td,.ds-aud th{text-align:left;vertical-align:top;line-height:1.5}
.ds-trigs{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.ds-trig{display:grid;grid-template-columns:14px 1fr;gap:4px 10px;padding:14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg)}
.ds-trig i{grid-row:span 2;width:10px;height:10px;margin-top:5px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 0 var(--accent);animation:dsPing 2.6s ease-out infinite;animation-delay:calc(var(--i) * 300ms)}
.ds-trig:nth-child(n+3) i{background:var(--amber);box-shadow:0 0 0 0 var(--amber)}
@keyframes dsPing{0%{box-shadow:0 0 0 0 color-mix(in srgb,currentColor 0%,transparent)}40%{box-shadow:0 0 0 7px transparent}100%{box-shadow:0 0 0 0 transparent}}
.ds-trig b{font-size:.9375rem}.ds-trig span{font-size:.8125rem;color:var(--fg-dim);line-height:1.5}

/* toolkit */
.ds-decks{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.ds-deck{border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);overflow:hidden;display:flex;flex-direction:column;transition:border-color .25s,box-shadow .25s,transform .25s}
.ds-deck:hover{border-color:var(--accent);box-shadow:var(--shadow);transform:translateY(-3px)}
.ds-cover{position:relative;border:0;padding:0;background:var(--paper);cursor:pointer;display:block;aspect-ratio:16/9;overflow:hidden;border-bottom:1px solid var(--line)}
.ds-cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.ds-deck:hover .ds-cover img{transform:scale(1.04)}
.ds-cover .pl{position:absolute;right:10px;bottom:10px;font-size:.75rem;font-weight:600;padding:5px 10px;border-radius:999px;background:var(--fg);color:var(--bg)}
.ds-dbody{padding:18px 18px 20px;display:flex;flex-direction:column;gap:6px;flex:1}
.ds-kind{font-size:.6875rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.ds-dbody h3{font-size:1.2rem;margin:0}
.ds-dbody p{margin:0 0 10px;font-size:.875rem;line-height:1.55;color:var(--fg-dim)}
.ds-dl{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}
.ds-dl .dm-btn{padding:8px 12px;font-size:.8125rem}
.ds-dl small{font-weight:400;color:var(--fg-faint)}
.ds-viewer{width:min(1180px,96vw);max-height:96vh;border:0;border-radius:var(--r-md);padding:0;background:var(--bg);color:var(--fg);box-shadow:0 30px 80px rgba(5,28,44,.35)}
.ds-viewer::backdrop{background:rgba(5,28,44,.7)}
.ds-vtop{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.ds-vtop b{font-family:var(--f-display);font-weight:500;font-size:1.1rem;margin-right:auto}
.ds-vtop span{font-size:.8125rem;color:var(--fg-faint);font-variant-numeric:tabular-nums}
.ds-vtop .dm-btn{padding:6px 10px;font-size:.8125rem}
.ds-vstage{position:relative;background:var(--paper);display:grid;place-items:center;padding:14px 56px}
.ds-vstage img{width:100%;height:auto;max-height:68vh;object-fit:contain;display:block;box-shadow:0 2px 14px rgba(5,28,44,.12);background:#fff}
.ds-vstage img.sw{animation:dsSlide .35s ease}
@keyframes dsSlide{from{opacity:.2;transform:translateX(var(--dx,20px))}to{opacity:1;transform:none}}
.ds-vnav{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:56px;border:1px solid var(--line);background:var(--bg);font-size:1.75rem;line-height:1;cursor:pointer;color:var(--fg);border-radius:var(--r-sm)}
.ds-vnav[data-vprev]{left:8px}.ds-vnav[data-vnext]{right:8px}
.ds-vthumbs{display:flex;gap:6px;overflow-x:auto;padding:10px 14px}
.ds-vthumbs button{flex:none;width:96px;border:2px solid transparent;padding:0;background:none;cursor:pointer;border-radius:2px}
.ds-vthumbs button img{width:100%;display:block}
.ds-vthumbs button[aria-current="true"]{border-color:var(--accent)}

/* assessment (stage screen) */
.ds-qlist{display:grid;gap:14px}
.ds-qrow{border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px}
.ds-qrow p{margin:0 0 10px;font-size:.9375rem;line-height:1.45}
.ds-qopts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.ds-qopts button{font:inherit;font-size:.8125rem;padding:9px 6px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg);cursor:pointer;color:var(--fg);transition:border-color .2s,background .2s}
.ds-qopts button:hover{border-color:var(--accent)}
.ds-qopts button[aria-pressed="true"]{background:var(--sc,var(--accent));border-color:var(--sc,var(--accent));color:#fff}
.ds-recs{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;margin-top:8px}

@media (max-width:980px){
  .ds-port,.ds-om{grid-template-columns:minmax(0,1fr)}
  .ds-cycle{position:static}
  .ds-los-chain{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ds-los-s:not(:last-child)::after{display:none}
  .ds-arc{grid-template-columns:minmax(0,1fr)}
  .ds-beat::after{display:none}
  .ds-road{grid-template-columns:minmax(0,1fr)}
  .ds-corner,.ds-hz{display:none}
  .ds-lane{padding:10px 0 0}
  .ds-cell::before{content:var(--hl);display:block;font-size:.6875rem;font-weight:700;color:var(--accent);letter-spacing:.08em;text-transform:uppercase}
}
@media (max-width:640px){
  .ds-isrow span{font-size:.8125rem;padding:10px 12px}
  .ds-los-chain{grid-template-columns:minmax(0,1fr)}
  .ds-lit-list li{flex-direction:column;align-items:flex-start}
  .ds-lit-score{text-align:left}.ds-lit-score em{margin-left:0}
  .ds-qopts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ds-vstage{padding:10px}
  .ds-vnav{top:auto;bottom:-46px;transform:none}
  .ds-vthumbs{padding-top:52px}
}
@media print{.dm-page>section:not(#assess){display:none!important}}

/* ===== v2: cascade, themes, map, scorecard, calculators, governance, rhythm ===== */
.ds-funnel{max-width:440px}
.ds-funnel .lv rect{fill:var(--accent);opacity:calc(1 - var(--i) * .08)}
.ds-funnel .lv text{font:600 13px var(--f-body);fill:#fff}
.ds-funnel .lv{opacity:0;transform:translateY(-8px);animation:dmFadeUp .5s ease forwards;animation-delay:calc(var(--i) * 140ms + 150ms)}
.ds-funnel .drop{stroke:var(--accent-line);stroke-width:2;stroke-dasharray:4 8;animation:dmDash 8s linear infinite;fill:none}
.ds-exsel{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 16px}
.ds-exsel>span{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-faint);margin-right:6px}
.ds-exsel button{font:inherit;font-size:.8125rem;font-weight:600;padding:7px 14px;border:1px solid var(--line);border-radius:999px;background:var(--bg);color:var(--fg-dim);cursor:pointer;transition:all .2s}
.ds-exsel button:hover{border-color:var(--accent);color:var(--accent)}
.ds-exsel button[aria-pressed="true"]{background:var(--fg);border-color:var(--fg);color:var(--bg)}
.ds-casc{display:grid;grid-template-columns:280px minmax(0,1fr);gap:20px;align-items:start}
.ds-lvls{display:flex;flex-direction:column;gap:4px;position:sticky;top:96px}
.ds-lvl{font:inherit;text-align:left;display:grid;grid-template-columns:30px 1fr;gap:0 10px;align-items:center;padding:9px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg);cursor:pointer;color:var(--fg);margin-left:calc(var(--i) * 4px);transition:background .2s,border-color .2s,transform .2s}
.ds-lvl span{grid-row:span 2;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:.75rem;font-weight:700;background:var(--paper-2);color:var(--fg-dim)}
.ds-lvl b{font-size:.9rem}.ds-lvl em{font-style:normal;font-size:.75rem;color:var(--fg-faint)}
.ds-lvl:hover{border-color:var(--accent);transform:translateX(3px)}
.ds-lvl.done span{background:var(--accent-wash);color:var(--accent)}
.ds-lvl.on{background:var(--accent);border-color:var(--accent);color:#fff}.ds-lvl.on span{background:#fff;color:var(--accent)}.ds-lvl.on em{color:rgba(255,255,255,.8)}
.ds-lvpanel{border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);overflow:hidden}
.ds-lvp{display:none;padding:24px 26px}.ds-lvp.on{display:block;animation:dmFadeUp .4s ease}
.no-js .ds-lvp{display:block}
.ds-lvp .k{font-size:.75rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.ds-lvp h3{font-size:1.5rem;margin:6px 0 8px}.ds-lvp .lede{color:var(--fg-dim);margin:0 0 16px;line-height:1.6}
.ds-lvp .dm-dgrid p{margin:0;font-size:.9rem;line-height:1.55}
.ds-trap{padding:12px 14px;border-left:3px solid var(--critical);background:color-mix(in srgb,var(--critical) 6%,var(--bg))}
.ds-inex{padding:16px 18px;background:var(--accent-wash);border-radius:var(--r-sm)}
.ds-inex h4 span{text-transform:none;letter-spacing:0;color:var(--accent)}
.ds-big{font-family:var(--f-display);font-size:1.2rem!important;line-height:1.45!important}
.ds-exgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}.ds-exgrid.three{grid-template-columns:repeat(3,1fr)}
.ds-exgrid h5,.ds-mapinfo h5{margin:0 0 4px;font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-faint)}
.ds-exgrid ul,.ds-inex ul{margin:0;padding-left:18px;font-size:.875rem;line-height:1.5}
.ds-exthemes{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}
.ds-exthemes div{background:var(--bg);border-radius:var(--r-sm);padding:10px 12px;border-top:3px solid var(--accent)}
.ds-exthemes span{font-size:.6875rem;font-weight:700;color:var(--accent)}.ds-exthemes b{display:block;font-size:.95rem}.ds-exthemes p{margin:4px 0 0;font-size:.8125rem!important;color:var(--fg-dim)}
.ds-dobj{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:6px}
.ds-dobj li{font-size:.875rem;line-height:1.45;padding:8px 10px;background:var(--bg);border-radius:var(--r-sm)}
.ds-dobj em{font-style:normal;color:var(--fg-faint);font-size:.8rem}.ds-dobj small{color:var(--fg-dim)}
.ds-tag{display:inline-block;font-style:normal;font-size:.625rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:2px 7px;border-radius:999px;margin-right:6px;vertical-align:1px}
.ds-tag.offence{background:color-mix(in srgb,var(--accent) 14%,var(--bg));color:var(--accent)}
.ds-tag.defence{background:color-mix(in srgb,var(--dm-l3) 16%,var(--bg));color:var(--dm-l3)}
.ds-tag.lead,.ds-tag.Lead{background:color-mix(in srgb,var(--amber) 15%,var(--bg));color:var(--amber)}
.ds-tag.lag,.ds-tag.Lag{background:var(--paper-2);color:var(--fg-dim)}
.ds-jumpto{font-size:.875rem;font-weight:600;color:var(--accent)}
.ds-thchips{margin:0 0 14px}
.ds-thp{border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);padding:22px 24px;animation:dmFadeUp .4s ease}
.ds-thhead{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px}.ds-thhead h3{margin:0;font-size:1.4rem}
.ds-pos{font-size:.6875rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:4px 10px;border-radius:999px}
.ds-pos.offence{background:var(--accent-wash);color:var(--accent)}.ds-pos.defence{background:color-mix(in srgb,var(--dm-l3) 14%,var(--bg));color:var(--dm-l3)}.ds-pos.balanced{background:color-mix(in srgb,var(--amber) 14%,var(--bg));color:var(--amber)}
.ds-thflow{display:grid;grid-template-columns:1fr 24px 1fr 24px 1fr;gap:10px;align-items:start}
.ds-thflow>i{display:grid;place-items:center;color:var(--accent);padding-top:26px}
.ds-thflow h4,.ds-dsp h4{font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-faint);margin:0 0 6px}
.ds-thflow ul{margin:0;padding-left:18px;font-size:.9rem;line-height:1.55}
.ds-ll{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}
.ds-ll div{font-size:.875rem;line-height:1.45;padding:10px 12px;border-radius:var(--r-sm);background:var(--paper)}
.ds-ll b{display:block;font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;color:var(--amber);margin-bottom:2px}.ds-ll div+div b{color:var(--fg-dim)}
.ds-thex{margin-top:18px}
.ds-thex table{width:100%;border-collapse:collapse;font-size:.85rem}
.ds-thex th,.ds-thex td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line-soft);vertical-align:top;line-height:1.45}
.ds-thex thead th{font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-faint)}
.ds-thex tbody th{white-space:nowrap;color:var(--accent)}
.ds-persp .dm-card p b{display:block;color:var(--fg);margin-bottom:4px}
.ds-mapw{margin-top:28px}
.ds-map{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:16px;align-items:start}
.ds-mapsc{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg)}
.ds-mapsc svg{display:block;width:100%;min-width:760px;height:auto}
.ds-map .band{fill:var(--paper)}.ds-map .bl{font:700 13px var(--f-body);fill:var(--accent)}
.ds-map .lk{stroke:var(--accent-line);stroke-width:1.6;transition:stroke .2s,opacity .2s}.ds-map marker path{fill:var(--accent-line)}
.ds-map .lk.hot{stroke:var(--accent);stroke-width:2.4}.ds-map .lk.dim{opacity:.15}
.ds-map .ob{cursor:pointer;outline:none}
.ds-map .ob rect{fill:var(--bg);stroke:var(--line-strong);stroke-width:1;transition:fill .2s,stroke .2s,opacity .2s}
.ds-map .ob.data rect{stroke:var(--accent);stroke-width:1.6}
.ds-map .ob .oid{font:700 10px var(--f-body);fill:var(--accent)}.ds-map .ob .ot{font:500 11.5px var(--f-body);fill:var(--fg)}
.ds-map .ob.sel rect{fill:var(--accent)}.ds-map .ob.sel text{fill:#fff}
.ds-map .ob.dim{opacity:.25}
.ds-mapinfo{border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);padding:16px 18px;font-size:.875rem;line-height:1.5;position:sticky;top:96px}
.ds-mapinfo .k{display:block;font-size:.6875rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:4px}
.ds-mapinfo>b{display:block;font-family:var(--f-display);font-weight:500;font-size:1.1rem;margin-bottom:6px}
.ds-dotk{color:var(--accent);font-weight:600}
.ds-dsps{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.ds-dsp{border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:var(--r-md);background:var(--bg);padding:18px}
.ds-dsp:nth-child(2){border-top-color:var(--dm-l3)}.ds-dsp:nth-child(3){border-top-color:var(--amber)}.ds-dsp:nth-child(4){border-top-color:var(--dm-l5)}
.ds-dsp h3{margin:0 0 4px;font-size:1.2rem}.ds-dsp .q{margin:0 0 12px;color:var(--fg-dim);font-size:.875rem;line-height:1.5}
.ds-dsp ul{margin:0;padding-left:18px;font-size:.85rem;line-height:1.5}
.ds-tblw{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg)}
.ds-tbl{width:100%;border-collapse:collapse;font-size:.85rem;min-width:860px}
.ds-tbl th{background:var(--fg);color:var(--bg);text-align:left;padding:9px 10px;font-size:.75rem;letter-spacing:.04em}
.ds-tbl td{padding:9px 10px;border-bottom:1px solid var(--line-soft);vertical-align:top;line-height:1.45}
.ds-tbl tr:nth-child(even) td{background:var(--paper)}
.ds-pp{font-size:.75rem;font-weight:700;color:var(--accent)}
.ds-kpicard{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}
.ds-kpicard div{border:1.5px dashed var(--line-strong);border-radius:var(--r-sm);padding:10px 12px;background:var(--bg)}
.ds-kpicard b{display:block;font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.ds-kpicard span{font-size:.8125rem;color:var(--fg-dim)}
.ds-post{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(20px,3vw,40px);align-items:start}
.ds-pqs{display:grid;gap:10px}
.ds-pq{border:1px solid var(--line);border-radius:var(--r-md);padding:12px 14px;background:var(--bg)}
.ds-pq p{margin:0 0 8px;font-size:.9rem;font-weight:500}
.ds-pq .ds-qopts{grid-template-columns:repeat(3,minmax(0,1fr))}
.ds-pres{border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);padding:22px;position:sticky;top:96px}
.ds-track{position:relative;height:14px;border-radius:999px;background:linear-gradient(90deg,var(--dm-l3),var(--paper-2) 50%,var(--accent))}
.ds-track i{position:absolute;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;background:var(--bg);border:4px solid var(--fg);transition:left .6s cubic-bezier(.2,.8,.2,1)}
.ds-ends{display:flex;justify-content:space-between;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-top:8px}
.ds-ends span:first-child{color:var(--dm-l3)}.ds-ends span:last-child{color:var(--accent)}
.ds-pval{display:block;font:500 2.25rem var(--f-display);margin:16px 0 0}
.ds-pres h3{font-size:1.3rem;margin:4px 0 6px}.ds-pres>p{color:var(--fg-dim);line-height:1.6;margin:0 0 16px}
.ds-od{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ds-od div{padding:12px;border-radius:var(--r-sm);background:var(--paper);font-size:.8125rem;line-height:1.45}
.ds-od h4{margin:0 0 4px;font-size:.8125rem}.ds-od p{margin:0 0 6px;color:var(--fg-dim)}.ds-od ul{margin:0;padding-left:16px}
.ds-calc{display:grid;grid-template-columns:300px minmax(0,1fr);gap:20px;align-items:start}
.ds-wts{border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);padding:18px;position:sticky;top:96px}
.ds-wts h3{font-size:1.1rem;margin:0 0 4px}.ds-wts .hint{font-size:.8125rem;color:var(--fg-dim);margin:0 0 12px}
.ds-wts label{display:grid;grid-template-columns:110px 1fr 20px;gap:8px;align-items:center;font-size:.875rem;font-weight:600;margin-top:10px}
.ds-wts input{accent-color:var(--accent);width:100%}.ds-wts output{font-weight:700;color:var(--accent);text-align:right}
.ds-rank{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.ds-rank li{display:grid;grid-template-columns:30px minmax(0,1fr) 44px;gap:12px;align-items:center;padding:10px 14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg)}
.ds-rank .rk{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--fg);color:var(--bg);font-size:.75rem;font-weight:700}
.ds-rank li:nth-child(-n+3) .rk{background:var(--accent)}
.ds-rank b{font-size:.95rem}.ds-rank small{display:block;font-size:.75rem;color:var(--fg-faint)}
.ds-rank em{font-style:normal;font:500 1.4rem var(--f-display);text-align:right}
.ds-bar{display:flex;height:8px;border-radius:999px;background:var(--paper-2);overflow:hidden;margin-top:6px}
.ds-bar i{height:100%;transition:width .5s ease}.ds-bar .v{background:var(--accent)}.ds-bar .f{background:var(--dm-l3)}
.ds-gates{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;counter-reset:g}
.ds-gate{position:relative;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);padding:16px}
.ds-gate span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--accent);color:#fff;font-weight:700;font-size:.8125rem;margin-bottom:8px}
.ds-gate b{display:block;font-family:var(--f-display);font-weight:500;font-size:1.2rem}.ds-gate em{display:block;font-style:normal;font-size:.8125rem;color:var(--fg-dim);margin-bottom:8px}
.ds-gate ul{margin:0;padding-left:16px;font-size:.8125rem;line-height:1.5}
.ds-gate:not(:last-child)::after{content:"";position:absolute;right:-9px;top:28px;border:6px solid transparent;border-left:8px solid var(--accent);z-index:1}
.ds-mxt{width:100%;border-collapse:collapse;font-size:.85rem;min-width:720px}
.ds-mxt thead th{background:var(--fg);color:var(--bg);padding:10px 8px;font-size:.75rem;vertical-align:bottom;text-align:center}
.ds-mxt thead th:first-child{text-align:left}
.ds-mxt th span{display:block}.ds-mxt th small{display:block;font-weight:400;opacity:.7}
.ds-mxt tbody th{text-align:left;padding:8px 10px;font-weight:600;border-bottom:1px solid var(--line-soft)}
.ds-mxt tbody th small{display:block;font-weight:400;color:var(--fg-faint);font-size:.75rem}
.ds-mxt td{text-align:center;border-bottom:1px solid var(--line-soft)}
.ds-mxt td i{display:inline-block;width:14px;height:14px;border-radius:50%;background:var(--accent);transform:scale(0);transition:transform .45s cubic-bezier(.3,1.6,.5,1);transition-delay:var(--d)}
.ds-mx.in .ds-mxt td i,.no-js .ds-mxt td i{transform:scale(1)}
.ds-mxt tfoot td,.ds-mxt tfoot th{padding:8px;font-size:.8125rem;color:var(--accent);text-align:center;border-top:1px solid var(--line)}.ds-mxt tfoot th{text-align:left;color:var(--fg-dim)}
.ds-forums{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.ds-forum{border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);padding:18px}
.ds-forum span{font-size:.6875rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.ds-forum h3{margin:4px 0 8px;font-size:1.15rem}.ds-forum p{margin:0 0 6px;font-size:.85rem;line-height:1.5;color:var(--fg-dim)}.ds-forum .dec{color:var(--fg)}
.ds-raci td{text-align:center}.ds-raci tbody th{white-space:normal;min-width:200px}
.ds-r{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;font-weight:700;font-size:.75rem}
.ds-r.a{background:var(--accent);color:#fff}.ds-r.r{background:var(--accent-wash);color:var(--accent)}.ds-r.c{background:var(--paper-2);color:var(--fg-dim)}.ds-r.i{border:1px solid var(--line);color:var(--fg-faint)}
.ds-rhs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.ds-rh{border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);padding:16px}
.ds-rh span{font-size:.6875rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.ds-rh h3{margin:4px 0 8px;font-size:1.15rem}.ds-rh p{margin:0 0 6px;font-size:.8125rem;line-height:1.5;color:var(--fg-dim)}
.ds-agenda{margin-top:28px;max-width:760px}
.ds-days{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.ds-day{border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:var(--r-md);background:var(--bg);padding:16px}
.ds-day.ex{border-top-color:var(--dm-l3);background:color-mix(in srgb,var(--dm-l3) 4%,var(--bg))}
.ds-day span{font-size:.6875rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-faint)}
.ds-day h3{margin:4px 0 8px;font-size:1.1rem}.ds-day ul{margin:0;padding-left:16px;font-size:.8125rem;line-height:1.5}
.ds-ex100{margin-top:16px}
.ds-walk{display:flex;gap:12px;align-items:center;margin:0 0 14px;flex-wrap:wrap}
.ds-walk .hint{font-size:.875rem;color:var(--fg-dim);margin:0}
.ds-sowhat{margin-top:12px;padding:12px 14px;border-radius:var(--r-sm);background:var(--fg);color:var(--bg);font-size:.9rem;line-height:1.5}
.ds-sowhat b{display:block;font-size:.6875rem;letter-spacing:.12em;text-transform:uppercase;color:#8FACFF;margin-bottom:2px}
.ds-did{margin:0 0 10px;font-size:.9rem;line-height:1.55}
@media (max-width:980px){
  .ds-casc,.ds-map,.ds-post,.ds-calc{grid-template-columns:minmax(0,1fr)}
  .ds-lvls{position:static;flex-direction:row;overflow-x:auto;padding-bottom:4px}
  .ds-lvl{flex:none;margin-left:0}
  .ds-mapinfo,.ds-pres,.ds-wts{position:static}
  .ds-thflow{grid-template-columns:minmax(0,1fr)}.ds-thflow>i{transform:rotate(90deg);padding:0}
  .ds-gates,.ds-rhs,.ds-days{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ds-gate::after{display:none}
  .ds-exgrid.three{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:640px){
  .ds-exgrid,.ds-ll,.ds-od,.ds-gates,.ds-rhs,.ds-days{grid-template-columns:minmax(0,1fr)}
  .ds-pq .ds-qopts{grid-template-columns:minmax(0,1fr)}
  .ds-wts label{grid-template-columns:90px 1fr 20px}
}

/* ===== v3: chapters, exhibits, hero exhibit, motion ===== */
.ds-hex{margin:0;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);padding:18px 18px 10px;box-shadow:var(--shadow)}
.ds-hex svg{width:100%;height:auto;display:block}
.ds-hex .hb{transform-box:fill-box;transform-origin:center;animation:dsBar .7s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i) * 110ms + 150ms)}
.ds-hex rect.b{fill:url(#hgB)}.ds-hex rect.d{fill:url(#hgD)}
.ds-hex .hn{font:700 12.5px var(--f-body);fill:#fff;text-anchor:middle}
.ds-hex .hs{font:500 9.5px var(--f-body);fill:rgba(255,255,255,.82);text-anchor:middle}
.ds-hex .hflow{stroke:#fff;stroke-width:1.2;stroke-dasharray:2 6;opacity:.5;animation:dmDash 6s linear infinite}
.ds-hex .hdot{fill:#fff;filter:drop-shadow(0 0 4px rgba(34,81,255,.9))}
.ds-hex .hbr{opacity:0;animation:dmFade .6s ease forwards;animation-delay:calc(var(--i) * 110ms + 300ms)}
.ds-hex .hbr path{fill:none;stroke:var(--accent);stroke-width:1.5}.ds-hex .hbr.d path{stroke:#0E9C8F}
.ds-hex .hbr text{font:700 11px var(--f-body);fill:var(--accent);text-anchor:middle;letter-spacing:.08em;text-transform:uppercase}.ds-hex .hbr.d text{fill:#0B7A75}
@keyframes dsBar{from{transform:scaleX(.2);opacity:0}to{transform:none;opacity:1}}
.ds-exh{display:flex;flex-direction:column;gap:2px;border-top:2px solid var(--fg);padding-top:10px;margin:0 0 16px}
.ds-exh span{font-size:.6875rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.ds-exh b{font-family:var(--f-display);font-weight:500;font-size:1.25rem;line-height:1.3}
.ds-exs{font-size:.75rem;color:var(--fg-faint);margin:10px 0 0;font-style:italic}
.ds-chnav{position:sticky;top:64px;z-index:30;background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);border-top:1px solid var(--line)}
.ds-chnav .wrap{position:relative;overflow:hidden}
.ds-chtabs{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:4px;overflow-x:auto;scrollbar-width:none}
.ds-chb{display:grid;grid-template-columns:28px 1fr;gap:0 10px;align-items:center;padding:12px 8px;text-decoration:none;color:var(--fg-dim);min-width:150px;transition:color .2s}
.ds-chb span{grid-row:span 2;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:.75rem;font-weight:700;border:1.5px solid var(--line);transition:all .3s}
.ds-chb b{font-size:.875rem;color:var(--fg);line-height:1.2}.ds-chb em{font-style:normal;font-size:.72rem;color:var(--fg-faint)}
.ds-chb:hover b{color:var(--accent)}
.ds-chb.on span{background:var(--accent);border-color:var(--accent);color:#fff;transform:scale(1.08)}
.ds-chb.done span{border-color:var(--accent);color:var(--accent)}
.ds-chbar{position:absolute;bottom:-1px;height:3px;background:var(--accent);transition:left .45s cubic-bezier(.2,.8,.2,1),width .45s cubic-bezier(.2,.8,.2,1);left:0;width:0}
.js .ds-ch:not(.on){display:none}
.ds-ch.on{animation:dsChIn .55s cubic-bezier(.2,.8,.2,1)}
@keyframes dsChIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.ds-chhead{padding-top:48px;padding-bottom:8px}
.ds-chhead span{font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-faint)}
.ds-chhead h2{font-family:var(--f-display);font-weight:500;font-size:clamp(2.2rem,4.4vw,3.4rem);letter-spacing:-.02em;margin:4px 0 0;line-height:1.05}
.ds-ch .hb-sec.ds-sub{padding-top:clamp(36px,4vw,56px);padding-bottom:clamp(36px,4vw,56px)}
.ds-ch .ds-sub+.ds-sub{border-top:1px solid var(--line)}
.ds-chnext{padding-bottom:72px}
.ds-chnext a{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:22px 26px;border:1px solid var(--line);border-radius:var(--r-md);text-decoration:none;color:var(--fg);background:var(--paper);transition:border-color .25s,transform .25s,background .25s}
.ds-chnext a:hover{border-color:var(--accent);background:var(--accent-wash);transform:translateY(-2px)}
.ds-chnext b{font-family:var(--f-display);font-weight:500;font-size:1.4rem;margin-left:8px}
.ds-chnext svg{width:22px;height:22px;color:var(--accent)}
/* motion */
.ds-map .ob{transform-box:fill-box;transform-origin:center;animation:dsPop .5s cubic-bezier(.3,1.4,.5,1) backwards;animation-delay:calc(var(--i) * 45ms)}
@keyframes dsPop{from{transform:scale(.6)}to{transform:none}}
.ds-map .lk{transition:stroke-dashoffset .9s ease,stroke .2s,opacity .2s}
.ds-tbl tbody tr{animation:dsRow .45s ease backwards;animation-delay:calc(var(--i) * 55ms)}
@keyframes dsRow{from{opacity:0;transform:translateY(8px)}}
.ds-thflow>i svg{animation:dsNudge 1.6s ease-in-out infinite}
@keyframes dsNudge{50%{transform:translateX(4px)}}
.ds-lvp.on .ds-inex{animation:dmFadeUp .5s ease .15s backwards}
.ds-lvl.on{box-shadow:0 6px 18px color-mix(in srgb,var(--accent) 30%,transparent)}
.ds-rank li{animation:dsRow .4s ease backwards;animation-delay:calc(var(--i) * 50ms)}
@media (max-width:980px){
  .ds-chnav{top:56px}
  .ds-chtabs{display:flex}
  .ds-chb{min-width:150px;flex:none}
  .ds-hex{margin-top:24px}
}
@media (prefers-reduced-motion:reduce){.ds-ch.on,.ds-map .ob,.ds-tbl tbody tr,.ds-rank li{animation:none!important}}

/* ================= strategy tracks (tk-) ================= */
.tk-rail{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-top:6px}
.tk-col{display:flex;flex-direction:column;gap:8px}
.tk-stg{position:relative;background:var(--sc);color:#fff;padding:12px 22px 12px 26px;min-height:84px;clip-path:polygon(0 0,calc(100% - 14px) 0,100% 50%,calc(100% - 14px) 100%,0 100%,14px 50%)}
.tk-col:first-child .tk-stg{clip-path:polygon(0 0,calc(100% - 14px) 0,100% 50%,calc(100% - 14px) 100%,0 100%);padding-left:16px}
.tk-stg b{font-size:.75rem;opacity:.8}.tk-stg span{display:block;font-weight:700;font-size:1rem;line-height:1.2}.tk-stg em{display:block;font-style:normal;font-size:.75rem;opacity:.85;margin-top:2px}
.tk-pill{all:unset;box-sizing:border-box;cursor:pointer;display:block;border:1px solid var(--line);border-left:4px solid var(--sc);border-radius:var(--r-md);background:var(--bg);padding:12px 12px;transition:transform .2s,box-shadow .2s,border-color .2s}
.tk-pill b{display:block;font-size:.9rem;line-height:1.25;color:var(--fg)}.tk-pill span{display:block;font-size:.75rem;color:var(--fg-dim);margin-top:4px;line-height:1.35}
.tk-pill:hover,.tk-pill:focus-visible{transform:translateY(-2px);box-shadow:0 8px 20px rgba(5,28,44,.08)}
.tk-pill[aria-current="true"]{background:color-mix(in srgb,var(--sc) 8%,var(--bg));border-color:var(--sc)}
.tk-pill:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tk-view{margin-top:28px}
.tk-panel{border:1px solid var(--line);border-top:5px solid var(--sc);border-radius:var(--r-md);background:var(--bg);padding:28px 28px 32px;animation:dmFade .4s ease}
.tk-head{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);gap:28px;align-items:start;margin-bottom:22px}
.tk-head .k{font-size:.75rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--sc)}
.tk-head h3{font-size:clamp(1.5rem,3vw,2.1rem);margin:6px 0 8px;font-family:var(--f-display,inherit)}
.tk-head .lede{color:var(--fg-dim);margin:0 0 16px;line-height:1.55}
.tk-strip{list-style:none;display:flex;gap:4px;margin:0;padding:0;flex-wrap:wrap}
.tk-strip li{font-size:.6875rem;padding:5px 10px 5px 8px;border-radius:999px;background:var(--paper);color:var(--fg-faint);display:flex;gap:6px;align-items:center}
.tk-strip li b{display:grid;place-items:center;width:16px;height:16px;border-radius:50%;background:var(--line);color:var(--fg-dim);font-size:.625rem}
.tk-strip li.on{background:var(--sc);color:#fff;font-weight:700}.tk-strip li.on b{background:#fff;color:var(--sc)}
.tk-deck .ds-cover{display:block;width:100%;border-radius:var(--r-md);overflow:hidden}
.tk-deck .ds-dl{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}
.tk-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:24px;overflow-x:auto;scrollbar-width:none}
.tk-tabs button{all:unset;cursor:pointer;padding:10px 16px;font-weight:600;font-size:.9rem;color:var(--fg-dim);border-bottom:3px solid transparent;margin-bottom:-1px;white-space:nowrap}
.tk-tabs button[aria-selected="true"]{color:var(--fg);border-bottom-color:var(--sc)}
.tk-tabs button:focus-visible{outline:2px solid var(--accent)}
.tk-mh{font-size:1.05rem;margin:0 0 12px}
.tk-mod{margin-bottom:40px}.tk-mod>.tk-mh{display:none}.tk-mod .hint{margin:-4px 0 14px}
.tk-so{display:flex;gap:14px;align-items:flex-start;background:var(--fg);color:#fff;border-radius:var(--r-md);padding:12px 16px;margin:16px 0 0;font-size:.9rem;line-height:1.5}
.tk-so b{flex:none;font-size:.6875rem;letter-spacing:.12em;text-transform:uppercase;color:#8FACFF;padding-top:3px}
.tk-so.big{font-size:1.02rem;margin:18px 0 28px}
.tk-ov{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);gap:32px}
.tk-ov .lede{line-height:1.6}
.tk-qs{margin:0;padding:0;list-style:none;counter-reset:q;display:grid;gap:8px}
.tk-qs li{counter-increment:q;position:relative;padding:10px 12px 10px 46px;border:1px solid var(--line-soft);border-radius:var(--r-md);font-size:.92rem;line-height:1.45}
.tk-qs li::before{content:counter(q);position:absolute;left:12px;top:9px;width:24px;height:24px;border-radius:50%;background:color-mix(in srgb,var(--sc) 14%,var(--bg));color:var(--sc);font-weight:700;font-size:.75rem;display:grid;place-items:center}
.tk-check{background:var(--paper);border-radius:var(--r-md);padding:20px}
.tk-ring{position:relative;width:120px;height:120px;margin:4px auto 6px}.tk-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.tk-ring circle{fill:none;stroke-width:10}.tk-ring .bg{stroke:var(--line)}.tk-ring .fg{stroke:var(--sc);stroke-linecap:round;stroke-dasharray:314.16;stroke-dashoffset:314.16;transition:stroke-dashoffset .5s}
.tk-ring b{position:absolute;inset:0;display:grid;place-items:center;font-size:1.25rem}
.tk-check .hint{text-align:center;min-height:2.8em}
.tk-ck{all:unset;box-sizing:border-box;cursor:pointer;display:flex;gap:10px;align-items:flex-start;width:100%;padding:9px 10px;border-radius:8px;font-size:.85rem;line-height:1.4;margin-top:4px;background:var(--bg);border:1px solid var(--line-soft)}
.tk-ck svg{flex:none;width:18px;height:18px;padding:2px;border-radius:4px;border:1.5px solid var(--line);color:transparent;margin-top:1px}
.tk-ck[aria-pressed="true"]{border-color:var(--sc)}.tk-ck[aria-pressed="true"] svg{background:var(--sc);border-color:var(--sc);color:#fff}
.tk-ck:focus-visible{outline:2px solid var(--accent)}
.tk-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.tk-card{border:1px solid var(--line);border-top:3px solid var(--sc);border-radius:var(--r-md);padding:16px 18px;background:var(--bg)}
.tk-card span{font-size:.75rem;font-weight:700;color:var(--sc)}.tk-card h4{margin:6px 0 6px;font-size:1rem;line-height:1.3}.tk-card p{margin:0;font-size:.875rem;color:var(--fg-dim);line-height:1.55}
.tk-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:12px;position:relative}
.tk-steps::before{content:"";position:absolute;left:18px;right:18px;top:18px;height:2px;background:repeating-linear-gradient(90deg,var(--sc) 0 8px,transparent 8px 14px);opacity:.5}
.tk-steps li{position:relative}
.tk-steps i{position:relative;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--sc);color:#fff;font-style:normal;font-weight:700;box-shadow:0 0 0 5px var(--bg)}
.tk-steps h4{margin:12px 0 6px;font-size:.95rem;line-height:1.3}.tk-steps p{margin:0;font-size:.84rem;color:var(--fg-dim);line-height:1.5}
.tk-tbl table{width:100%;border-collapse:collapse;font-size:.875rem}
.tk-tbl th,.tk-tbl td{padding:10px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line-soft);line-height:1.45}
.tk-tbl thead th{background:var(--fg);color:#fff;font-size:.78rem;letter-spacing:.02em}
.tk-tbl tbody th{font-weight:600;color:var(--fg)}
.tk-tbl tbody tr:nth-child(even) td,.tk-tbl tbody tr:nth-child(even) th{background:var(--paper)}
.tk-ind tr.on td,.tk-ind tr.on th{background:color-mix(in srgb,var(--sc) 10%,var(--bg))!important}
.tk-ind tr.on th{box-shadow:inset 4px 0 0 var(--sc)}
.tk-two{display:grid;grid-template-columns:1fr auto 1fr;gap:14px;align-items:stretch}
.tk-two>div{border-radius:var(--r-md);padding:18px 20px;background:var(--paper)}
.tk-two>div:first-child{background:color-mix(in srgb,var(--sc) 7%,var(--bg))}
.tk-two h4{margin:0 0 10px;font-size:1rem}.tk-two>div:first-child h4{color:var(--sc)}
.tk-two ul{margin:0;padding-left:18px;font-size:.88rem;line-height:1.55;display:grid;gap:4px}
.tk-two .vs{align-self:center;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--fg);color:#fff;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}
.tk-quad{display:grid;grid-template-columns:34px 1fr;grid-template-rows:1fr auto;gap:8px}
.tk-quad .ya{grid-row:1;writing-mode:vertical-rl;transform:rotate(180deg);display:flex;justify-content:space-between;font-size:.75rem;border-right:2px solid var(--fg);padding-right:6px}
.tk-quad .ya em,.tk-quad .xa em{font-style:normal;color:var(--fg-faint)}
.tk-quad .qg{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tk-quad .q{border-radius:var(--r-md);padding:16px 18px;background:var(--paper);min-height:130px}
.tk-quad .q1{background:color-mix(in srgb,var(--sc) 14%,var(--bg))}.tk-quad .q0,.tk-quad .q3{background:color-mix(in srgb,var(--sc) 6%,var(--bg))}
.tk-quad .q h4{margin:0 0 6px;font-size:.98rem}.tk-quad .q1 h4{color:var(--sc)}.tk-quad .q p{margin:0;font-size:.85rem;color:var(--fg-dim);line-height:1.5}
.tk-quad .xa{grid-column:2;display:flex;justify-content:space-between;font-size:.75rem;border-top:2px solid var(--fg);padding-top:6px}
.tk-meas{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.tk-meas li{display:flex;gap:10px;border:1px solid var(--line-soft);border-radius:var(--r-md);padding:12px;font-size:.85rem;line-height:1.45}
.tk-meas svg{flex:none;width:16px;height:16px;color:var(--sc);margin-top:2px}
.tk-days{grid-template-columns:repeat(3,minmax(0,1fr))}.tk-days .ds-day{border-top-color:var(--sc)}
.tk-fits{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.tk-fit{border-radius:var(--r-md);padding:16px 18px;background:linear-gradient(135deg,color-mix(in srgb,var(--sc) 9%,var(--bg)),var(--bg));border:1px solid color-mix(in srgb,var(--sc) 25%,var(--line))}
.tk-fit b{display:block;font-size:.95rem;margin-bottom:6px}.tk-fit p{margin:0;font-size:.85rem;color:var(--fg-dim);line-height:1.5}
/* tools */
.tk-tool{border:1px solid var(--line);border-radius:var(--r-md);padding:22px;background:var(--paper)}
.tk-gap{display:grid;gap:6px}
.tk-gh,.tk-gr{display:grid;grid-template-columns:minmax(150px,1.1fr) minmax(0,2fr) 110px;gap:14px;align-items:center}
.tk-gh{font-size:.6875rem;color:var(--fg-faint);text-transform:uppercase;letter-spacing:.06em}.tk-gh .lv{display:flex;justify-content:space-between}
.tk-gr{background:var(--bg);border-radius:8px;padding:10px 12px}
.tk-gr .nm b{display:block;font-size:.9rem}.tk-gr .nm small{display:block;color:var(--fg-faint);font-size:.75rem;line-height:1.35}
.tk-bar{position:relative;height:40px}
.tk-bar .g-tr{position:absolute;left:8px;right:8px;top:19px;height:2px;background:var(--line)}
.tk-bar .g-sp{position:absolute;top:17px;height:6px;border-radius:3px;transition:all .3s}
.tk-bar .g-cur,.tk-bar .g-need{position:absolute;top:11px;width:18px;height:18px;margin-left:-9px;border-radius:50%;transition:left .3s}
.tk-bar .g-need{background:var(--bg);border:3px solid;box-sizing:border-box}.tk-bar .g-cur{z-index:1;box-sizing:border-box}
.tk-bar input{position:absolute;left:0;right:0;width:100%;margin:0;height:20px;opacity:0;cursor:pointer}
.tk-bar input.c{top:0}.tk-bar input.n{top:20px}
.tk-gr .stt{font-size:.78rem;font-weight:700;text-align:right}
.tk-gk{display:flex;gap:16px;flex-wrap:wrap;font-size:.75rem;color:var(--fg-dim);margin:4px 0 14px}
.tk-gk i{display:inline-block;width:12px;height:12px;border-radius:50%;vertical-align:-2px;margin-right:4px}
.tk-gsum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:16px 0}
.tk-gsum div{background:var(--bg);border-radius:8px;padding:12px;text-align:center}.tk-gsum b{display:block;font-size:1.6rem}.tk-gsum span{font-size:.75rem;color:var(--fg-dim)}
.tk-fix{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.tk-fix li{background:var(--bg);border-left:4px solid #C8262D;border-radius:6px;padding:10px 12px;font-size:.86rem;line-height:1.45}
.tk-pk{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:22px}
.tk-pq{margin-bottom:14px}.tk-pq p{margin:0 0 6px;font-weight:600;font-size:.9rem}
.tk-pq .ds-qopts{display:flex;flex-wrap:wrap;gap:6px}
.tk-po button{all:unset;cursor:pointer;font-size:.8rem;padding:7px 12px;border-radius:999px;background:var(--bg);border:1px solid var(--line)}
.tk-po button[aria-pressed="true"]{background:var(--sc);border-color:var(--sc);color:#fff}
.tk-po button:focus-visible{outline:2px solid var(--accent)}
.tk-pres{background:var(--bg);border-radius:var(--r-md);padding:18px;position:sticky;top:120px;align-self:start}
.tk-ob{display:grid;gap:8px;margin-bottom:16px}
.tk-ob div{display:grid;grid-template-columns:120px 1fr 34px;gap:8px;align-items:center;font-size:.8rem}
.tk-ob .t{height:10px;border-radius:5px;background:var(--paper);overflow:hidden}.tk-ob .t i{display:block;height:100%;width:0;background:var(--sc);transition:width .4s}
.tk-ob .top{font-weight:700}
.tk-pres h4{margin:0 0 6px;font-size:1.1rem;color:var(--sc)}.tk-pres p{margin:0 0 8px;font-size:.88rem;line-height:1.55;color:var(--fg-dim)}.tk-pres ul{margin:0;padding-left:18px;font-size:.85rem;line-height:1.5}
.tk-calc{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px}
.tk-in{display:grid;gap:8px}
.tk-in label{display:grid;grid-template-columns:1fr 130px;gap:10px;align-items:center;font-size:.84rem;line-height:1.35;background:var(--bg);border-radius:8px;padding:8px 10px}
.tk-in input{font:inherit;width:100%;box-sizing:border-box;padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--fg);text-align:right}
.tk-in small{display:block;color:var(--fg-faint);font-size:.7rem}
.tk-out{display:grid;gap:10px;align-content:start}
.tk-out .o{background:var(--bg);border-radius:8px;padding:12px 14px;display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.tk-out .o span{font-size:.82rem;color:var(--fg-dim)}.tk-out .o b{font-size:1.3rem;font-variant-numeric:tabular-nums}
.tk-out .o.hl{background:var(--sc);color:#fff}.tk-out .o.hl span{color:#fff;opacity:.9}
.tk-vb{background:var(--bg);border-radius:8px;padding:14px}.tk-vb svg{width:100%;height:auto;display:block}
.tk-vb text{font:600 11px var(--f-body,sans-serif);fill:var(--fg-dim)}
.tk-note{font-size:.78rem;color:var(--fg-faint);margin:12px 0 0;line-height:1.5}
@media (max-width:980px){
  .tk-rail{grid-template-columns:repeat(3,minmax(0,1fr))}
  .tk-head,.tk-ov,.tk-pk,.tk-calc{grid-template-columns:1fr}
  .tk-steps{grid-template-columns:1fr 1fr}.tk-steps::before{display:none}
  .tk-pres{position:static}
}
@media (max-width:640px){
  .tk-rail{grid-template-columns:1fr 1fr}
  .tk-panel{padding:20px 16px}
  .tk-steps{grid-template-columns:1fr}
  .tk-two{grid-template-columns:1fr}.tk-two .vs{justify-self:center}
  .tk-gh{display:none}.tk-gr{grid-template-columns:1fr}.tk-gr .stt{text-align:left}
  .tk-days{grid-template-columns:1fr}
  .tk-quad .qg{grid-template-columns:1fr}
  .tk-in label{grid-template-columns:1fr}
  .tk-gsum b{font-size:1.25rem}
}
.tk-head .lede{font-size:1.05rem}.tk-ov .lede{font-size:1rem;color:var(--fg-dim)}
