/* Content links stay native anchors: no OS select overlay or hover requirement. */
.section-jump{position:fixed;z-index:80;left:50%;right:auto;bottom:max(10px,env(safe-area-inset-bottom));transform:translateX(-50%);width:max-content;max-width:calc(100vw - 24px);display:block;padding:0;background:none;border:0}
.section-jump>button{min-height:48px;display:flex;align-items:center;gap:10px;border:1px solid var(--accent);border-radius:28px;padding:10px 20px;background:var(--surface);color:var(--ink);font:600 1rem/1.4 'Segoe UI',sans-serif;box-shadow:0 3px 20px var(--shadow);cursor:pointer}
#contents-panel{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);display:block;width:min(580px,calc(100vw - 24px));max-height:min(70vh,620px);max-height:min(70dvh,620px);overflow:auto;overscroll-behavior:contain;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 8px 36px var(--shadow)}
#contents-panel[hidden]{display:none}.contents-heading{display:flex;align-items:start;justify-content:space-between;gap:16px;margin-bottom:12px}.contents-heading p{margin:0;font-size:.875rem;color:var(--muted)}#contents-close{min-width:44px;min-height:44px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);cursor:pointer;font-size:1rem}.contents-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.contents-links a{display:flex;align-items:center;min-height:48px;padding:12px!important;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);font-size:1rem!important;line-height:1.4;text-decoration:none}.contents-links a:hover,.contents-links a[aria-current]{border-color:var(--accent);background:var(--soft)}.contents-links a:focus-visible,#contents-close:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.contents-help{display:flex;align-items:center;gap:12px;margin:16px 0}.contents-help a{display:inline-flex;min-height:44px;align-items:center;text-decoration:underline}.contents-footer{display:flex;gap:24px;margin-top:16px;font-size:.9375rem}.topic-page{padding-bottom:110px}.topic-page [id],.iommu-lab h2,.iommu-lab summary{scroll-margin-top:24px}
#dma-status{width:100%;max-width:none;box-sizing:border-box;overflow-wrap:anywhere}#dma-status strong,#dma-status span{display:block}#dma-status span{font:1rem/1.7 'Segoe UI',sans-serif;margin-top:8px}.dma-panel>progress{display:block;width:100%;max-width:none;height:12px;margin:20px 0 12px}.iommu-lab input,.iommu-lab select{max-width:100%;min-width:0}.iommu-lab .sim-fields>*,.iommu-lab .pcie-groups>*{min-width:0}.buffer-controls>*{max-width:100%}.buffer-controls select{min-width:0}.topic-page code{overflow-wrap:anywhere}.table-scroll{max-width:100%}
@media(max-width:700px){.contents-links{grid-template-columns:1fr}.section-jump>button{min-width:160px;justify-content:center}.iommu-lab .sim-fields,.iommu-lab #mapping-form,.iommu-lab .pcie-groups,.iommu-lab .root-diagram,.iommu-lab .dma-memories,.iommu-lab .dma-example-grid,.iommu-lab .ats-state-grid{grid-template-columns:1fr}.iommu-lab .sim-panel{padding:18px 14px}.iommu-lab .panel-heading{align-items:start;gap:10px;flex-wrap:wrap}.iommu-lab .preset-actions{display:grid;grid-template-columns:1fr;gap:10px}.iommu-lab .preset-actions>button{width:100%;min-height:48px;margin:0;white-space:normal;text-align:left}.iommu-lab button,.buffer-controls button{min-height:44px;white-space:normal;line-height:1.5}.iommu-lab input,.iommu-lab select,.buffer-controls input,.buffer-controls select{font-size:16px;min-height:48px}.iommu-lab .byte-grid{grid-template-columns:repeat(8,minmax(0,1fr))}.iommu-lab .byte-grid>span{min-width:0;font-size:.8rem;padding:5px 2px}.iommu-lab .event-slots{grid-template-columns:repeat(2,minmax(0,1fr))}.iommu-lab .path-map,.iommu-lab .interrupt-path{flex-wrap:wrap}.iommu-lab .trace-table-wrap{max-width:100%;overflow-x:auto}.iommu-lab .register-summary,.iommu-lab .memory-window{white-space:pre-wrap;overflow-wrap:anywhere}.iommu-lab .field-name{min-height:0}.buffer-controls{align-items:stretch}.buffer-controls>button{flex:1 1 180px}.buffer-panel h2{font-size:1.4rem}.ring-slots{grid-template-columns:repeat(2,minmax(0,1fr))}.topic-nav{gap:8px}.topic-nav a{display:flex;align-items:center;min-height:44px;padding:6px 10px;border:1px solid var(--line);border-radius:6px}.notes-body header nav a{min-height:44px;display:inline-flex;align-items:center}.notes-body header{gap:10px}.notes-body .shell{width:calc(100% - 24px)}.notes-body .code-top{align-items:start}.notes-body .code-actions{align-items:stretch}.notes-body .code-actions>*{min-height:44px}.notes-body .sim-panel p,.notes-body .buffer-panel p{overflow-wrap:anywhere}}
@media(max-width:380px){.iommu-lab .dma-route{grid-template-columns:1fr}.ring-slot{padding:9px}.contents-links a{padding:10px!important}}

.buffer-controls input{font:1rem/1.5 ui-monospace,Consolas,monospace;min-height:48px;min-width:0;max-width:100%;padding:10px 12px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:8px}.buffer-controls label{min-width:0}.contents-help{flex-wrap:wrap}#command-catalogue summary{overflow-wrap:anywhere}#register-result{overflow-wrap:anywhere}.iommu-lab .pcie-groups input[type=checkbox]{min-height:18px;height:18px;width:18px}.iommu-lab .pcie-groups label{min-height:44px;align-items:center}

body:has(#remix[open]) .section-jump{visibility:hidden}

.dma-events li,.stage-button,.gcr3-slot,.root-card dd,#fault-diagnosis h3{overflow-wrap:anywhere}
@media(max-width:700px){.notes-body .code-lab .syntax-editor textarea,.notes-body .code-lab .syntax-highlight,.notes-body .code-lab .code-gutter{font-size:16px;line-height:1.8}}
/* Reusable source files and an address map that reads vertically on phones. */
/* Editor tabs in the VS Code style: one scrolling row above the editor. */.cpp-file-tabs{display:flex;overflow-x:auto;margin:0;border:1px solid var(--line);border-bottom:0;border-radius:8px 8px 0 0;background:color-mix(in srgb,var(--bg) 90%,var(--ink));scrollbar-width:thin}.code-lab .cpp-file-tabs button{flex:none;display:flex;align-items:center;gap:7px;min-height:40px;padding:0 14px;border:0;border-right:1px solid var(--line);border-top:2px solid transparent;border-radius:0;color:var(--muted);background:transparent;font:13px/1 ui-monospace,Consolas,monospace;white-space:nowrap;cursor:pointer}.code-lab .cpp-file-tabs button::before{content:"C++";font:700 9px/1 ui-monospace,Consolas,monospace;color:#519aba}.code-lab .cpp-file-tabs button[data-file$=".hpp"]::before{content:"H";font-size:11px;color:#a074c4}.code-lab .cpp-file-tabs button:hover{color:var(--ink)}.code-lab .cpp-file-tabs button[aria-selected=true]{background:var(--bg);color:var(--ink);border-top-color:var(--accent)}.code-lab .cpp-file-tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media(pointer:coarse){.code-lab .cpp-file-tabs button{min-height:44px}}.map-node:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.map-controls{display:flex;gap:16px;flex-wrap:wrap}.map-controls label{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer}.map-controls input[type=checkbox]{width:20px;height:20px;min-height:20px;accent-color:var(--accent)}.map-legend{font-size:.9375rem;color:var(--muted)}.address-map-layout{display:grid;grid-template-columns:minmax(230px,.8fr) minmax(0,1.2fr);gap:24px;align-items:start}.address-map-route{list-style:none;padding:0;margin:0;max-height:720px;overflow:auto;padding-right:8px}.address-map-route>li{position:relative;padding:0 0 24px}.address-map-route>li:not(:last-child):after{content:'↓';display:block;text-align:center;color:var(--muted);height:24px}.map-node{width:100%;text-align:left;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:10px;padding:14px 16px;color:var(--ink);background:var(--bg);cursor:pointer;font:inherit;white-space:normal}.map-node span,.map-node code{display:block;font-size:.9375rem;margin-top:6px;overflow-wrap:anywhere}.map-node[aria-pressed=true]{background:var(--soft);outline:2px solid var(--accent);outline-offset:-2px}.map-endpoint{padding:14px 16px!important;border:1px dashed var(--line);border-radius:10px;margin-bottom:24px}.map-endpoint strong,.map-endpoint span{display:block}.map-endpoint span{font-size:.9375rem;color:var(--muted)}.map-failure{border-style:solid;border-color:var(--accent)}.map-inspector{padding:24px;border:1px solid var(--line);border-radius:14px;min-width:0;background:var(--bg)}.map-inspector .eyebrow{margin-top:0}.map-inspector h3{font-size:1.5rem;line-height:1.3}.map-slots{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:4px;margin:20px 0}.map-slot{text-align:center;padding:8px 2px;border:1px solid var(--line);border-radius:4px}.map-slot strong,.map-slot small{display:block}.map-slot small{font-size:.75rem}.map-slot.selected{border-color:var(--accent);background:var(--soft)}.map-recipe{list-style:none;padding:0}.map-recipe>li{border-top:1px solid var(--line);padding:16px 0}.map-recipe p{margin:8px 0 0}.map-inspector dd{margin:4px 0 16px;font-family:ui-monospace,Consolas,monospace;overflow-wrap:anywhere}.map-inspector dt{font-weight:600}.map-note{padding:12px;border-left:3px solid var(--accent);font-size:.9375rem}
@media(max-width:900px){.address-map-layout{grid-template-columns:1fr}.address-map-route{max-height:340px;border:1px solid var(--line);border-radius:10px;padding:12px}.map-inspector{padding:18px}}@media(max-width:500px){.map-slots{grid-template-columns:repeat(4,minmax(0,1fr))}.map-controls{display:block}}

/* Architecture reference and decoder share the existing topic layout. */
#ga-decoded{max-width:100%;padding:16px;background:var(--bg);border:1px solid var(--line);border-radius:8px;white-space:pre-wrap;overflow-wrap:anywhere;font: .9375rem/1.7 ui-monospace,Consolas,monospace}
.alignment-help{padding:12px 16px;margin:16px 0;background:var(--bg);border-left:3px solid var(--accent)}
.alignment-help p{margin:8px 0}.alignment-help #gpa-alignment,.alignment-help #spa-alignment{font-weight:600}

.topic-page .buffer-panel a,.alignment-help a{text-decoration:underline;text-underline-offset:3px}
.table-hint{display:none}@media(max-width:700px){.buffer-panel .table-hint{display:block;font-size:.875rem;color:var(--muted);margin-bottom:0}}
/* R31: on a phone the translation path is a column, so its arrows point down. */
@media (max-width:600px){.iommu-lab .path-map{flex-direction:column;align-items:stretch;gap:6px}.iommu-lab .path-map strong{text-align:left}.iommu-lab .path-map .path-arrow{align-self:flex-start;margin-left:22px;transform:rotate(90deg);line-height:1}}
