/* Post-local styles for interactive modules. Everything is scoped under .ixm-fig / .ixm
   so it cannot leak into site styles; it also resets the global .prose rules that would
   otherwise reach inside (table display:block, ul display:grid, svg max-width). */
.prose .ixm-fig{margin:2.25em 0}
.prose .ixm-fig > figcaption{margin-top:calc(.7em + 6px)}
.ixm{--ix-blue:#0288d1;--ix-blue-d:#0369a1;--ix-ind:#6366f1;--ix-red:#e11d48;--ix-teal:#0d9488;--ix-amber:#b45309;--ix-h:#0f1b2d;--ix-t:#33404f;--ix-s:#5b6675;--ix-p2:#f1f8fe;--ix-l:rgba(15,23,42,.09);--ix-l2:rgba(15,23,42,.15);
  position:relative;background:#fff;border:1px solid var(--ix-l2);border-radius:14px;overflow:hidden;font-family:var(--fb,Inter,system-ui,sans-serif);font-size:.92rem;line-height:1.5;color:var(--ix-t)}
.ixm *,.ixm *::before,.ixm *::after{box-sizing:border-box}
.ixm-head{display:flex;flex-direction:column;gap:2px;padding:.8rem 1rem .75rem;border-bottom:1px solid var(--ix-l);background:var(--ix-p2)}
.ixm-kicker{font-family:var(--fm,'JetBrains Mono',monospace);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ix-blue-d)}
.ixm-title{font-family:var(--fd,'Space Grotesk',sans-serif);font-weight:600;font-size:1.06rem;line-height:1.3;color:var(--ix-h)}
.ixm-live{padding:1rem}
.ixm-sub{margin:.9rem 0 .4rem!important;font-family:var(--fm,monospace);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ix-s)}
.ixm-live > :first-child,.ixm-live .ixm-sub:first-child{margin-top:0!important}
.ixm p{margin:0}
.ixm ul,.ixm ol{display:block;padding-left:0;margin:0;list-style:none;gap:0}
.ixm li::marker{content:none}
.ixm svg{display:block;width:100%;height:auto;max-width:none;overflow:visible}
.ixm table{display:table;width:100%;margin:0;border:0;border-radius:0;font-size:.84rem;background:#fff}
.ixm .ixm-table{overflow-x:auto;border:1px solid var(--ix-l);border-radius:10px}
.ixm th{font-size:.6rem;padding:7px 10px}
.ixm td{padding:7px 10px}
.ixm code{font-size:.8em;padding:0 4px}
.ixm a{font-weight:500}
.ix-fallback{display:none;width:100%;height:auto;border-radius:0!important}
/* No-JS and print: show the static PNG where one exists; the text content stays readable either way. */
.ixm:not(.ixm-ready):has(.ix-fallback) .ix-fallback{display:block}
.ixm:not(.ixm-ready) [aria-hidden="true"]:empty{display:none}
.ixm:not(.ixm-ready) .ix-fallback{margin:1rem 1rem 0;width:auto;max-width:calc(100% - 2rem);height:auto;border:1px solid var(--ix-l);border-radius:10px!important}
/* Controls */
.ixm-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 .8rem}
.ixm-controls[hidden]{display:none}
.ixm-chips{display:flex;flex-wrap:wrap;gap:6px}
.ixm .chip,.ixm .btn{appearance:none;font:500 .8rem/1.2 var(--fb,Inter,sans-serif);color:var(--ix-t);background:#fff;border:1px solid var(--ix-l2);border-radius:999px;padding:6px 12px;cursor:pointer;transition:background .15s,border-color .15s,color .15s;min-height:34px}
.ixm .btn{border-radius:8px}
.ixm .chip:hover,.ixm .btn:hover{border-color:var(--ix-blue);color:var(--ix-blue-d)}
.ixm .chip[aria-pressed="true"]{background:var(--ix-blue);border-color:var(--ix-blue);color:#fff}
.ixm .btn-primary{background:var(--ix-h);border-color:var(--ix-h);color:#fff}
.ixm .btn-primary:hover{background:var(--ix-blue-d);color:#fff}
.ixm button:focus-visible,.ixm a:focus-visible,.ixm [tabindex]:focus-visible,.ixm input:focus-visible{outline:2px solid var(--ix-blue);outline-offset:2px}
.ixm-search input{font:400 .85rem var(--fb,Inter,sans-serif);padding:7px 12px;border:1px solid var(--ix-l2);border-radius:8px;min-width:240px;max-width:100%;min-height:34px}
.ixm .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* SVG shared */
.ixm .sv-lbl{font:500 11px var(--fm,monospace);fill:var(--ix-s)}
.ixm .sv-lbl-d{font:600 12px var(--fb,Inter,sans-serif);fill:var(--ix-h)}
.ixm .sv-box{fill:#fff;stroke:var(--ix-l2);stroke-width:1}
.ixm .sv-street{stroke:#e2e8f0;stroke-width:6;stroke-linecap:round;fill:none}
.ixm .sv-block{fill:#f8fafc;stroke:#e2e8f0}
.ixm .sv-park{fill:#e7f6ef;stroke:#cfe9dd}
.ixm .sv-water{fill:#e3f1fb}


/* Long verbatim URLs and hostnames in prose wrap instead of widening the page */
.prose p,.prose li,.prose td,.prose blockquote{overflow-wrap:break-word}
.prose p code,.prose li code,.prose td code{overflow-wrap:anywhere}

/* ---- Wide document figures ---- */
.prose figure.fig-pad.wide-doc{max-width:none}
.prose .doc-page img{border-radius:4px;border:1px solid var(--line,#e2e8f0)}
.prose .table-wrap table{display:table}

/* ---- Rowe page + lightbox ---- */
.rl-wrap{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:18px;align-items:start}
.rl-open{position:relative;display:block;border:1px solid var(--ix-l2);border-radius:8px;overflow:hidden;background:#f8fafc;cursor:zoom-in}
.rl-open img{display:block;width:100%;height:auto;border-radius:0!important;margin:0!important}
.rl-zoom{position:absolute;right:8px;bottom:8px;font:600 .7rem var(--fb,sans-serif);background:rgba(15,27,45,.82);color:#fff;border-radius:999px;padding:4px 10px}
.rl-list li{padding:.45rem 0;border-bottom:1px solid var(--ix-l);font-size:.86rem}
.rl-list li:last-child{border-bottom:0}
.rl-list code{word-break:break-all}
.rl-dialog{border:0;padding:0;max-width:min(96vw,1100px);max-height:94vh;background:#0b1220;border-radius:10px}
.rl-dialog::backdrop{background:rgba(2,6,23,.82)}
.rl-dialog img{display:block;max-width:100%;max-height:calc(94vh - 52px);height:auto;margin:0 auto}
.rl-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;color:#cbd5e1;font:500 .78rem var(--fb,sans-serif)}
.rl-bar a{color:#7dd3fc}
.rl-bar button{appearance:none;border:1px solid rgba(255,255,255,.3);background:transparent;color:#fff;border-radius:8px;padding:5px 12px;font:600 .8rem var(--fb,sans-serif);cursor:pointer;min-height:34px}

/* ---- Loop ---- */
.lp-stage{max-width:560px;margin:0 auto .6rem}
.lp-list{counter-reset:none}
.lp-node{padding:.55rem .7rem;margin:0 0 6px;border:1px solid var(--ix-l2);border-left:4px solid var(--ix-l2);border-radius:8px;background:#fff;font-size:.88rem;transition:background .2s,border-color .2s}
.lp-node.on{background:#fff1f2;border-left-color:var(--ix-red)}
.lp-n{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--ix-h);color:#fff;font:600 .72rem var(--fm,monospace);margin-right:4px}
.lp-node.on .lp-n{background:var(--ix-red)}
.lp-ex{display:block;margin-top:3px;font-size:.78rem;color:var(--ix-s)}
.lp-ex code{word-break:break-all}
.lp-status{font:500 .76rem var(--fm,monospace);color:var(--ix-s)}
.ixm .lp-ring{fill:none;stroke:var(--ix-l2);stroke-width:2;stroke-dasharray:4 5}
.ixm .lp-c{fill:#fff;stroke:var(--ix-l2);stroke-width:1.5;cursor:pointer;transition:fill .2s,stroke .2s}
.ixm .lp-g.on .lp-c{fill:#fff1f2;stroke:var(--ix-red);stroke-width:2.5}
.ixm .lp-t{font:700 15px var(--fd,sans-serif);fill:var(--ix-h);text-anchor:middle;pointer-events:none}
.ixm .lp-s{font:500 10px var(--fm,monospace);fill:var(--ix-s);text-anchor:middle;pointer-events:none}
.ixm .lp-arrow{fill:none;stroke:var(--ix-blue);stroke-width:2}
.ixm .lp-mid{font:600 11px var(--fm,monospace);fill:var(--ix-blue-d);text-anchor:middle;letter-spacing:.08em}

/* ---- CLI box ---- */
.prose .cli-box{margin:1.8em 0;padding:16px 18px;border-radius:12px;background:#0f1b2d;color:#e2e8f0}
.prose .cli-box p{margin:.2em 0 .7em;font-size:.92rem;color:#cbd5e1}
.prose .cli-box .cli-h{font:600 .7rem var(--fm,monospace);letter-spacing:.14em;text-transform:uppercase;color:#7dd3fc;margin:0 0 .4em}
.prose .cli-box pre{margin:0 0 .7em;padding:12px;border-radius:8px;background:#020617;overflow-x:auto;font-size:.78rem;line-height:1.55}
.prose .cli-box code{background:transparent;color:#e2e8f0;padding:0}
.prose .cli-box p code{color:#fde68a}

/* ---- Host finder ---- */
.hf-sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 .9rem}
.hf-sum p{background:var(--ix-p2);border-radius:10px;padding:8px 10px;font-size:.78rem;color:var(--ix-s)}
.fe-big{display:block;font:700 1.5rem/1.1 var(--fd,sans-serif);color:var(--ix-h)}
.fe-red{color:var(--ix-red)}.fe-blue{color:var(--ix-blue-d)}
.hf-controls select{font:400 .85rem var(--fb,Inter,sans-serif);padding:7px 10px;border:1px solid var(--ix-l2);border-radius:8px;min-height:34px;max-width:100%;background:#fff}
.hf-count{font:500 .76rem var(--fm,monospace);color:var(--ix-s)}
.hf-static-note{font-size:.8rem;color:var(--ix-s);margin:0 0 .5rem!important}
.ixm-ready .hf-static-note{display:none}
.hf-scroll{max-height:560px;overflow:auto}
.ixm .hf-table th{position:sticky;top:0;background:#f8fafc;z-index:1;text-align:left}
.ixm .hf-table td{vertical-align:top;border-top:1px solid var(--ix-l);font-size:.8rem}
.hf-row{font:500 .7rem var(--fm,monospace);color:var(--ix-s);white-space:nowrap}
.hf-dept{display:block;font-size:.72rem;color:var(--ix-s)}
.hf-col{display:block;margin:0 0 6px}
.hf-table{table-layout:fixed}
.ixm .hf-table th:nth-child(1){width:46px}.ixm .hf-table th:nth-child(2){width:26%}.ixm .hf-table th:nth-child(4){width:24%}
.hf-lab{display:block;font:600 .62rem var(--fm,monospace);letter-spacing:.06em;text-transform:uppercase;color:var(--ix-s)}
.hf-h{display:flex;flex-wrap:nowrap;align-items:center;gap:5px;margin:2px 0;min-width:0}
.hf-h code{word-break:break-all;background:#f1f5f9;border-radius:4px;min-width:0}
.hf-b{font:600 .6rem var(--fm,monospace);border-radius:999px;padding:1px 7px;letter-spacing:.02em;white-space:nowrap}
.hf-ok .hf-b{background:#dcfce7;color:#166534}
.hf-nx .hf-b{background:#ffe4e6;color:#9f1239}
.hf-na .hf-b{background:#f1f5f9;color:#475569}
.hf-mm{display:block;font-size:.72rem;color:var(--ix-amber)}
.hf-none{color:var(--ix-s);font-style:italic}
.hf-note{font-size:.76rem;color:var(--ix-t)}
.hf-note p{margin:0 0 .3em!important}
.ixm .hf-copy{appearance:none;flex:none;border:1px solid var(--ix-l2);background:#fff;border-radius:6px;font:500 .62rem var(--fb,sans-serif);padding:1px 6px;min-height:22px;cursor:pointer;color:var(--ix-blue-d)}
.ixm .hf-b{flex:none}
.hf-dl{margin-top:.7rem!important;font-size:.84rem}
.hf-dl a{font-weight:600}

/* ---- M365 table ---- */
.ixm .m3-table th[scope="row"]{font-size:.8rem;text-transform:none;letter-spacing:0;white-space:normal;min-width:110px;text-align:left;background:#f8fafc}
.ixm .m3-table td{vertical-align:top;border-top:1px solid var(--ix-l);font-size:.82rem}


/* ---- Release explorer ---- */
.fe-sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 .9rem}
.fe-sum p{background:var(--ix-p2);border-radius:10px;padding:8px 10px;font-size:.78rem;color:var(--ix-s)}
.fe-legend{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:.76rem;color:var(--ix-s);margin:0 0 .6rem!important}
.fe-doc{margin:0 0 .8rem}
.fe-h{font-size:.84rem;font-weight:600;margin:0 0 .35rem!important}
.fe-h span{display:block;font:500 .7rem var(--fm,monospace);color:var(--ix-s)}
.fe-grid{display:flex!important;flex-wrap:wrap;gap:4px}
.ixm .pg{display:inline-flex;align-items:center;justify-content:center;width:28px;height:34px;border-radius:4px;font:500 .64rem var(--fm,monospace);text-decoration:none;border:1px solid var(--ix-l2);color:var(--ix-t);background:#fff;transition:transform .12s,opacity .2s}
.ixm .pg.st{background:#1e293b;border-color:#1e293b;color:#cbd5e1}
.ixm .pg.st.acct{box-shadow:inset 0 -3px 0 var(--ix-amber)}
.ixm .pg.st.gap{outline:2px dashed #fda4af;outline-offset:1px}
.ixm .pg.sm{background:#e0f2fe;border-color:#7dd3fc;color:#075985}
.ixm .pg.key{box-shadow:inset 0 -3px 0 var(--ix-red)}
.ixm a.pg:hover,.ixm a.pg:focus-visible{transform:translateY(-2px)}
.fe-legend .pg{width:auto;min-width:20px;height:20px;padding:0 4px}
.fe-detail{margin-top:.4rem!important;font:500 .76rem var(--fm,monospace);color:var(--ix-t);min-height:1.5em}
.fe-doc.dim .pg{opacity:.25}
.ixm:not(.ixm-ready) .fe-detail{display:none}

.ixm .fe-grid li::before,.ixm .fe-grid li::after{content:none!important;display:none!important}
.ixm .fe-grid li{margin:0;padding:0}
.ixm .fe-grid{gap:4px}
/* Responsive */
@media(max-width:720px){
  .ixm .m3-table,.ixm .m3-table tbody,.ixm .m3-table tr,.ixm .m3-table th,.ixm .m3-table td{display:block;width:auto}
  .ixm .m3-table thead{display:none}
  .ixm .m3-table tr{border-top:1px solid var(--ix-l2);padding:6px 0}
  .ixm .m3-table th[scope="row"]{background:transparent;font-size:.86rem;padding:6px 10px 2px}
  .ixm .m3-table td{border-top:0;padding:3px 10px}
  .ixm .m3-table td::before{content:attr(data-label);display:block;font:600 .6rem var(--fm,monospace);letter-spacing:.06em;text-transform:uppercase;color:var(--ix-s)}
  .rl-wrap{grid-template-columns:1fr}
  .rl-open{max-width:320px;margin:0 auto}
  .hf-sum,.fe-sum{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ixm-search input{min-width:0;width:100%}
  .ixm-search{flex:1 1 100%}
  .ixm-live{padding:.8rem}
  .hf-scroll{max-height:480px}
  .hf-table{min-width:560px}
  .hf-controls label{flex:1 1 100%;min-width:0}
  .hf-controls select{width:100%}
  .ixm .hf-table td,.ixm .hf-table th{padding:6px 7px}
}
@media (prefers-reduced-motion:reduce){
  .ixm *,.ixm *::before,.ixm *::after{transition:none!important;animation:none!important}
}
@media print{
  .ixm-controls,.hf-copy,.rl-zoom{display:none!important}
  .hf-scroll{max-height:none;overflow:visible}
  .ixm-fig,.doc-page,.cli-box{break-inside:avoid}
  .hf-table tr{break-inside:avoid}
}
.hf-print-note{display:none}
@media print{.hf-dyn{display:none}.hf-print-note{display:block;font-size:.8rem;color:var(--ix-s)}}

/* primary documents table: stacked cards on phones */
@media(max-width:600px){
  .docs-tw{overflow-x:visible}
  .docs-table,.docs-table tbody,.docs-table tr,.docs-table td{display:block;width:auto}
  .docs-table thead{display:none}
  .docs-table tr{border-top:1px solid #dbe3ec;padding:8px 0}
  .docs-table td{border:0!important;padding:2px 0!important}
  .docs-table td:first-child{font-weight:600;padding-bottom:4px!important}
  .docs-table td:not(:first-child)::before{content:attr(data-label) ": ";font-weight:600;color:#475569}
}

/* worked-example boxes */
.prose .example-box{margin:1.6rem 0;padding:14px 18px 6px;border:1px solid #c7d7ea;border-left:4px solid #1d4ed8;border-radius:10px;background:#f3f7fd}
.prose .example-box .ex-k{margin:0 0 2px;font:700 .66rem/1.2 var(--fm,ui-monospace,monospace);letter-spacing:.09em;text-transform:uppercase;color:#1d4ed8}
.prose .example-box .ex-t{margin:0 0 .5rem;font-weight:700;font-size:1.02rem;color:#0f172a}
.prose .example-box p{font-size:.97rem}
.prose .example-box > :last-child{margin-bottom:10px}
/* checklists */
.prose .checklist-box{margin:1.4rem 0;padding:14px 18px;border:1px solid #d6dee8;border-radius:10px;background:#fff}
.prose .checklist-box .cl-h{margin:0 0 6px;font:700 .72rem/1.2 var(--fm,ui-monospace,monospace);letter-spacing:.08em;text-transform:uppercase;color:#334155}
.prose .checklist-box .cl-list{margin:0;padding:0;list-style:none}
.prose .checklist-box .cl-list li{position:relative;margin:.35rem 0;padding-left:1.7rem;font-size:.96rem}
.prose .checklist-box .cl-list li::before{content:"";position:absolute;left:0;top:.28em;width:.95em;height:.95em;border:2px solid #1d4ed8;border-radius:3px;box-sizing:border-box}
.prose .checklist-box.cl-end .cl-list li::before{border-color:#0f766e}
@media print{.prose .example-box,.prose .checklist-box{break-inside:avoid}}
