/* Odyssey Content Roadmap v2 — scoped editorial visual system. */
/* All rules enter through an .ody-v2-* root so legacy console routes retain console.css. */
.shell-mode-launchpad:has(.ody-v2-home),.shell-mode-roadmap:has(.ody-v2-page),.shell-mode-internal:has(.ody-v2-page),.ody-v2-home,.ody-v2-page,.ody-v2-inspector-layer{--ody-v2-canvas:#f4f0e8;--ody-v2-paper:#fbf8f2;--ody-v2-white:#fffdfa;--ody-v2-ink:#171816;--ody-v2-muted:#625e56;--ody-v2-faint:#eee9df;--ody-v2-subtopic:#e4ded3;--ody-v2-rule:#c8c1b5;--ody-v2-rule-strong:#817b71;--ody-v2-orange:#8f3b00;--ody-v2-orange-bright:#e87924;--ody-v2-focus:#145ea8;--ody-v2-error:#941f1f;--ody-v2-error-soft:#f5e9e5;--ody-v2-success:#176b4d;--ody-v2-success-soft:#e7f0eb;--ody-v2-info-soft:#e8eef4;--ody-v2-inverse:#fffdf8;--ody-v2-header-h:52px;--ody-v2-content-max:1600px;--ody-v2-reading:760px;--ody-v2-ease:cubic-bezier(.2,.8,.2,1);min-width:0;color:var(--ody-v2-ink);font-family:var(--font-stack,"Amazon Ember","Segoe UI",Arial,"Microsoft YaHei",sans-serif)}
.ody-v2-page,.ody-v2-page *,.ody-v2-home,.ody-v2-home *,.ody-v2-inspector-layer,.ody-v2-inspector-layer *{box-sizing:border-box}
.ody-v2-page [hidden],.ody-v2-home [hidden],.ody-v2-inspector-layer[hidden],.ody-v2-inspector-layer [hidden]{display:none!important}
body:has(.ody-v2-page),body:has(.ody-v2-home){min-width:320px;overflow-x:hidden;overflow-x:clip;background:var(--ody-v2-canvas,#f4f0e8)}
.shell-mode-roadmap:has(.ody-v2-page) .sidebar,.shell-mode-internal:has(.ody-v2-page) .sidebar{display:none!important}
.shell-mode-roadmap:has(.ody-v2-page) .content,.shell-mode-internal:has(.ody-v2-page) .content{min-width:0;min-height:calc(100vh - var(--ody-v2-header-h));min-height:calc(100dvh - var(--ody-v2-header-h));margin:var(--ody-v2-header-h) 0 0;padding:0;overflow-x:hidden;overflow-x:clip;background:var(--ody-v2-canvas)}
.shell-mode-roadmap:has(.ody-v2-page) .content>.page,.shell-mode-internal:has(.ody-v2-page) .content>.page{max-width:none}
.ody-v2-page{width:min(100%,var(--ody-v2-content-max));margin:0 auto;padding:clamp(28px,4vw,60px) clamp(20px,4vw,64px) 72px;overflow-wrap:anywhere;background:var(--ody-v2-canvas)}
.ody-v2-page h1,.ody-v2-page h2,.ody-v2-page h3,.ody-v2-home h1,.ody-v2-home h2,.ody-v2-home h3,.ody-v2-inspector-layer h2,.ody-v2-inspector-layer h3{color:inherit}
.ody-v2-page button,.ody-v2-page input,.ody-v2-page textarea,.ody-v2-page select,.ody-v2-inspector-layer button{font:inherit}
.ody-v2-page code,.ody-v2-inspector-layer code{min-width:0;color:inherit;font-family:Consolas,"SFMono-Regular","Courier New",monospace;font-size:.88em;line-height:1.5;overflow-wrap:anywhere;word-break:break-word}
.ody-v2-page .btn,.ody-v2-context-link,.ody-v2-preview-link,.ody-v2-inspector-close,.ody-v2-inspector-copy,.ody-v2-inspector-open,.ody-v2-inspector-details-link,.ody-v2-copy-button,.ody-v2-open-link{display:inline-flex;min-width:44px;min-height:44px;align-items:center;justify-content:center;gap:8px;padding:9px 14px;border:1px solid var(--ody-v2-rule-strong);border-radius:1px;background:transparent;color:var(--ody-v2-ink);box-shadow:none;font-size:13px;font-weight:700;line-height:1.25;text-align:center;text-decoration:none;cursor:pointer;transition:background-color 160ms var(--ody-v2-ease),color 160ms var(--ody-v2-ease),border-color 160ms var(--ody-v2-ease)}
.ody-v2-page .btn-primary,.ody-v2-preview-link--primary,.ody-v2-inspector-details-link{border-color:var(--ody-v2-ink);background:var(--ody-v2-ink);color:var(--ody-v2-inverse)}
.ody-v2-page .btn:hover:not(:disabled),.ody-v2-context-link:hover,.ody-v2-preview-link:hover,.ody-v2-inspector-close:hover,.ody-v2-inspector-copy:hover,.ody-v2-inspector-open:hover,.ody-v2-inspector-details-link:hover,.ody-v2-copy-button:hover,.ody-v2-open-link:hover{border-color:var(--ody-v2-ink);background:var(--ody-v2-ink);color:var(--ody-v2-inverse);text-decoration:underline;text-underline-offset:3px}
.ody-v2-page .btn-primary:hover:not(:disabled),.ody-v2-preview-link--primary:hover,.ody-v2-inspector-details-link:hover{background:transparent;color:var(--ody-v2-ink)}
.ody-v2-page button:disabled,.ody-v2-page input:disabled,.ody-v2-page select:disabled,.ody-v2-page textarea:disabled{cursor:not-allowed;opacity:.54}
.ody-v2-page a:focus-visible,.ody-v2-page button:focus-visible,.ody-v2-page input:focus-visible,.ody-v2-page select:focus-visible,.ody-v2-page textarea:focus-visible,.ody-v2-page [tabindex]:focus-visible,.ody-v2-home a:focus-visible,.ody-v2-home button:focus-visible,.ody-v2-inspector-layer a:focus-visible,.ody-v2-inspector-layer button:focus-visible,.ody-v2-inspector-layer [tabindex]:focus-visible{outline:3px solid var(--ody-v2-focus);outline-offset:3px;border-radius:1px;box-shadow:none}
.ody-v2-live-region,.ody-v2-inspector-live,.ody-v2-settings-live{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.ody-v2-eyebrow,.ody-v2-preview-eyebrow,.ody-v2-edit-kicker{margin:0 0 12px;color:var(--ody-v2-orange);font-size:11px;font-weight:800;letter-spacing:.12em;line-height:1.3;text-transform:uppercase}
.ody-v2-preview-banner,.ody-v2-preview-disclosure{display:inline-flex;width:max-content;max-width:100%;min-height:30px;align-items:center;margin:16px 0 0;padding:5px 10px;border:1px solid var(--ody-v2-ink);border-left:4px solid var(--ody-v2-orange);border-radius:1px;background:transparent;color:var(--ody-v2-ink);font-size:12px;font-weight:800;letter-spacing:.04em;line-height:1.25}
/* Homepage journey supplements text; it never carries unique business information. */
.shell-mode-launchpad .ody-v2-home{overflow:visible}
.ody-v2-home .ody-v2-home__hero{isolation:isolate}
.ody-v2-home .ody-v2-journey{position:relative;width:min(100%,390px);min-height:120px;margin-top:auto;padding-top:20px;color:var(--ody-v2-ink);user-select:none}
.ody-v2-home .ody-v2-journey::before,.ody-v2-home .ody-v2-journey::after{position:absolute;color:var(--ody-v2-muted);font-size:9px;font-weight:800;letter-spacing:.14em}
.ody-v2-home .ody-v2-journey::before{content:"START";left:0;bottom:3px}.ody-v2-home .ody-v2-journey::after{content:"NEXT";top:6px;right:0;color:var(--ody-v2-orange)}
.ody-v2-home .ody-v2-journey__svg{display:block;width:100%;height:auto;overflow:visible}
.ody-v2-home .ody-v2-journey__line{color:var(--ody-v2-rule-strong);stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset var(--ody-journey-reveal-duration,760ms) var(--ody-v2-ease)}
.ody-v2-home .ody-v2-journey__origin{color:var(--ody-v2-ink)}.ody-v2-home .ody-v2-journey__marker{color:var(--ody-v2-rule-strong)}
.ody-v2-home .ody-v2-journey__marker:last-child,.ody-v2-home .ody-v2-journey__destination{color:var(--ody-v2-orange-bright)}
.ody-v2-home .ody-v2-journey[data-reveal-state="complete"] .ody-v2-journey__line,.ody-v2-home .ody-home-journey--revealed .ody-v2-journey__line{stroke-dashoffset:0}
.ody-v2-home[data-reveal-state="pending"] .ody-home-eyebrow,.ody-v2-home[data-reveal-state="pending"] .ody-home-title,.ody-v2-home[data-reveal-state="pending"] .ody-home-purpose{opacity:0;transform:translateY(10px)}
.ody-v2-home .ody-home-eyebrow,.ody-v2-home .ody-home-title,.ody-v2-home .ody-home-purpose{opacity:1;transform:translateY(0);transition:opacity 420ms var(--ody-v2-ease),transform 420ms var(--ody-v2-ease)}
.ody-v2-home .ody-route-row{transition:background-color 160ms var(--ody-v2-ease),color 160ms var(--ody-v2-ease),border-color 160ms var(--ody-v2-ease)}.ody-v2-home .ody-route-mark{transition:transform 160ms var(--ody-v2-ease)}
/* Roadmap masthead and control plane. */
.ody-v2-roadmap{position:relative}.ody-v2-roadmap-masthead,.ody-v2-module-masthead,.ody-v2-settings-masthead{min-width:0;border-bottom:1px solid var(--ody-v2-rule-strong)}
/* Roadmap keeps one soft rule here instead of a second one right beneath it in the controls region. */
.ody-v2-roadmap-masthead{display:grid;grid-template-columns:minmax(0,1fr);gap:24px 40px;padding:8px 0 30px 24px;border-left:2px solid var(--ody-v2-orange);border-bottom-color:var(--ody-v2-rule)}
.ody-v2-roadmap-masthead-copy{min-width:0;max-width:900px}.ody-v2-new-module{min-width:132px}
/* "+ New module" rides the Filters row, pushed to the far right. */
.ody-v2-roadmap-search .ody-v2-new-module{margin-left:auto}
.ody-v2-roadmap-title,.ody-v2-settings-title{margin:0;color:var(--ody-v2-ink);font-size:clamp(42px,5vw,72px);font-weight:740;letter-spacing:-.055em;line-height:.98}
.ody-v2-roadmap-intro,.ody-v2-settings-intro{max-width:62ch;margin:16px 0 0;color:var(--ody-v2-ink);font-size:clamp(16px,1.3vw,20px);line-height:1.45}
/* No border-top here (the masthead already draws the line above this region) and no border-bottom (spacing alone separates it from Fields/the table). */
.ody-v2-roadmap-workspace{min-width:0;margin-top:24px}.ody-v2-roadmap-controls{min-width:0;padding:18px 0 4px}
.ody-v2-roadmap-loading-shell,.ody-v2-roadmap-toolbar{display:grid;grid-template-columns:minmax(280px,1fr);gap:10px;align-items:stretch;min-width:0}
.ody-v2-roadmap-loading-shell{padding-top:18px;border-top:1px solid var(--ody-v2-rule)}.ody-v2-roadmap-loading-shell .ody-v2-honest-state{grid-column:1/-1}
/* My modules sits beside the search box on one line; the row never wraps to a second line. */
.ody-v2-roadmap-search{display:flex;flex-wrap:nowrap;align-items:center;gap:18px;min-width:0}
.ody-v2-roadmap-search .ody-v2-roadmap-search-input{flex:1;min-width:0}
.ody-v2-my-modules{display:flex;flex:none;align-items:center;gap:10px;min-width:max-content}
.ody-v2-my-modules .ody-v2-filter-option-label{min-height:auto;padding:0;white-space:nowrap}
.ody-v2-roadmap-search-input,.ody-v2-filter-search,.ody-v2-edit-control:not([type="checkbox"]){width:100%;max-width:none;min-width:0;min-height:44px;padding:9px 11px;border:1px solid var(--ody-v2-rule-strong);border-radius:1px;background:var(--ody-v2-white);color:var(--ody-v2-ink);box-shadow:none;font-size:14px;line-height:1.35}
.ody-v2-roadmap-search-input::placeholder,.ody-v2-filter-search::placeholder,.ody-v2-edit-control::placeholder{color:var(--ody-v2-muted);opacity:1}
/* Filters, Fields, selected chips. */
.ody-v2-disclosure:not([hidden]){display:block;min-width:0;margin-top:16px;padding:20px 0 4px;border-top:1px solid var(--ody-v2-rule)}
/*
 * The Filters trigger and body are separate elements (not nested <details>),
 * so the trigger stays one fixed small box in both states, and the body is
 * free to span the full controls width in normal flow (never floating).
 */
/* Plain text + small triangle, no button box: Filters now reads as a label, not a control chrome. */
.ody-v2-filters-trigger{display:flex;flex:none;min-width:44px;min-height:44px;align-items:center;gap:6px;padding:9px 4px;border:0;background:transparent;color:var(--ody-v2-ink);cursor:pointer;white-space:nowrap}
.ody-v2-filters-trigger:hover .ody-v2-filters-summary-label{text-decoration:underline;text-underline-offset:3px}
.ody-v2-filters-summary-label{flex:none;font-size:12px;font-weight:800;letter-spacing:.06em;line-height:1.3;text-transform:uppercase}
.ody-v2-filters-summary-preview{display:none;max-width:260px;overflow:hidden;color:var(--ody-v2-muted);font-size:12px;line-height:1.3;white-space:nowrap;text-overflow:ellipsis}
.ody-v2-filters-trigger:not(.is-open) .ody-v2-filters-summary-preview{display:inline-block}
.ody-v2-filters-summary-chevron{flex:none;width:16px;margin-left:4px;color:var(--ody-v2-orange);font-size:18px;font-weight:800;line-height:1;text-align:center}
.ody-v2-filters-summary-chevron::before{content:"\25BE"}
.ody-v2-filters-trigger.is-open .ody-v2-filters-summary-chevron::before{content:"\25B4"}
/* Full width, in normal flow: expanding Filters pushes the table below it down, it never floats over it. Rounded and shadowed, softer than the app's usual sharp 1px rule. */
.ody-v2-filters-body{width:100%;margin-top:14px;padding:18px;border:1px solid var(--ody-v2-rule);border-radius:8px;background:var(--ody-v2-white);box-shadow:0 2px 10px rgba(23,24,22,.06)}
/* Each dimension is its own select-styled dropdown: label above, value+triangle box below, floating panel beneath. */
.ody-v2-filter-dropdown-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px 16px;min-width:0}
.ody-v2-filter-dropdown{position:relative;min-width:0}
.ody-v2-filter-dropdown-trigger{display:flex;flex-direction:column;min-width:0;min-height:44px;gap:4px;cursor:pointer;list-style:none}
.ody-v2-filter-dropdown-trigger::-webkit-details-marker{display:none}
.ody-v2-filter-dropdown-label{min-width:0;color:var(--ody-v2-orange);font-size:11px;font-weight:800;letter-spacing:.04em;line-height:1.3;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ody-v2-filter-dropdown-box{display:flex;min-height:38px;align-items:center;justify-content:space-between;gap:8px;padding:7px 10px;border:1px solid var(--ody-v2-rule-strong);border-radius:1px;background:var(--ody-v2-white)}
.ody-v2-filter-dropdown-value{min-width:0;overflow:hidden;color:var(--ody-v2-ink);font-size:13px;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}
.ody-v2-filter-dropdown-chevron{flex:none;color:var(--ody-v2-muted);font-size:10px;line-height:1}
.ody-v2-filter-dropdown-chevron::before{content:"\25BE"}
.ody-v2-filter-dropdown[open]>.ody-v2-filter-dropdown-trigger .ody-v2-filter-dropdown-chevron::before{content:"\25B4"}
.ody-v2-filter-dropdown[open]>.ody-v2-filter-dropdown-trigger .ody-v2-filter-dropdown-box{border-color:var(--ody-v2-ink)}
.ody-v2-filter-dropdown-panel{position:absolute;top:calc(100% + 4px);left:0;z-index:20;width:min(280px,90vw);padding:12px;border:1px solid var(--ody-v2-rule-strong);border-radius:1px;background:var(--ody-v2-white);box-shadow:0 8px 24px rgba(23,24,22,.16)}
.ody-v2-filter-search{min-height:44px;margin-bottom:6px;font-size:13px}.ody-v2-filter-options{max-height:220px;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.ody-v2-filter-option-list,.ody-v2-field-list,.ody-v2-active-filter-list,.ody-v2-tree-list,.ody-v2-module-list,.ody-v2-inspector-list,.ody-v2-code-list,.ody-v2-value-list,.ody-v2-quarter-list{margin:0;padding:0;list-style:none}
.ody-v2-filter-option-label{display:flex;min-width:0;min-height:44px;align-items:center;gap:10px;padding:7px 4px;color:var(--ody-v2-ink);font-size:13px;line-height:1.35;cursor:pointer}.ody-v2-filter-option-label:hover{background:var(--ody-v2-faint)}
.ody-v2-filter-checkbox,.ody-v2-field-checkbox,.ody-v2-settings-checkbox,.ody-v2-edit-control[type="checkbox"]{box-sizing:content-box;flex:none;width:22px;height:22px;margin:0;padding:11px;accent-color:var(--ody-v2-orange)}
.ody-v2-filter-option-text{min-width:0;overflow-wrap:anywhere}.ody-v2-filter-empty,.ody-v2-filter-hint,.ody-v2-field-hint{margin:8px 0 0;color:var(--ody-v2-muted);font-size:12px;line-height:1.45}
/* My modules now rides in the dropdown-grid flow (same row as the last dropdowns), not a separate bordered row below. */
.ody-v2-filter-assignment{display:flex;grid-column:span 2;min-width:0;flex-wrap:wrap;gap:4px 16px;align-items:center;align-self:center}.ody-v2-filter-assignment .ody-v2-filter-hint{margin:0;flex:1;min-width:160px}
.ody-v2-field-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 20px;margin-bottom:12px}.ody-v2-field-option{min-width:0;border-bottom:1px solid var(--ody-v2-rule)}
/* "xx matching modules" rides the far right of the Fields row, above the table. */
.ody-v2-fields-row{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:20px 0 14px}
.ody-v2-fields-row .ody-v2-roadmap-result-heading{margin-left:auto}
.ody-v2-active-filters{min-width:0;margin-top:12px}.ody-v2-active-filter-list{display:flex;min-width:0;flex-wrap:wrap;gap:8px;align-items:center}
.ody-v2-active-filter-chip{display:inline-flex;min-width:44px;min-height:44px;align-items:center;padding:7px 11px;border:1px solid var(--ody-v2-rule-strong);border-left:3px solid var(--ody-v2-orange);border-radius:1px;background:var(--ody-v2-paper);color:var(--ody-v2-ink);font-size:12px;font-weight:700;line-height:1.25;cursor:pointer}.ody-v2-active-filter-chip:hover{border-color:var(--ody-v2-ink);text-decoration:line-through}.ody-v2-clear-all{background:transparent}
/* Hierarchical registry: true desktop table inside its own controlled viewport. */
.ody-v2-roadmap-body{display:grid;grid-template-columns:minmax(0,1fr);gap:28px;align-items:start;min-width:0}.ody-v2-roadmap-body:has(.ody-v2-inspector-layer--desktop){grid-template-columns:minmax(0,1fr) minmax(320px,390px)}
.ody-v2-roadmap-registry-column,.ody-v2-roadmap-registry-host,.ody-v2-roadmap-inspector-host{min-width:0}
/* Result count now lives as the rightmost toolbar item, not a block heading above the table. */
.ody-v2-roadmap-result-heading{display:flex;min-width:0;min-height:44px;align-items:center;justify-content:flex-end;margin:0;padding:0 4px;color:var(--ody-v2-muted);font-size:13px;font-weight:700;letter-spacing:.015em;line-height:1.4;white-space:nowrap}
/* Fields now renders as its own select-styled dropdown where that heading used to sit. */
.ody-v2-fields-dropdown{display:inline-block;width:auto;min-width:170px;margin:0}
/* "Table fields" label sits beside its dropdown box, not stacked above it like the Filters dimensions. */
.ody-v2-fields-dropdown-trigger{flex-direction:row;align-items:center;gap:10px}
.ody-v2-fields-dropdown-trigger .ody-v2-filter-dropdown-label{flex:none;white-space:nowrap}
.ody-v2-fields-dropdown-trigger .ody-v2-filter-dropdown-box{flex:1;min-width:140px}
.ody-v2-fields-dropdown-panel{width:min(320px,90vw)}
.ody-v2-fields-dropdown-panel .ody-v2-field-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px;margin-bottom:10px}
.ody-v2-fields-dropdown-panel .ody-v2-field-option{font-size:13px}
.ody-v2-fields-dropdown-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}
.ody-v2-registry-viewport{position:relative;width:100%;max-width:100%;min-width:0;overflow-x:auto;border-top:1px solid var(--ody-v2-rule-strong);border-bottom:1px solid var(--ody-v2-rule-strong);background:var(--ody-v2-white);overscroll-behavior-x:contain;overscroll-behavior-y:auto;-webkit-overflow-scrolling:touch}
.ody-v2-registry-table{width:max-content;min-width:100%;margin:0;border:0;border-collapse:separate;border-spacing:0;table-layout:fixed;background:var(--ody-v2-white);color:var(--ody-v2-ink);font-size:13px}
.ody-v2-registry-header,.ody-v2-registry-cell,.ody-v2-tree-cell{min-width:0;padding:12px 14px;border:0;border-right:1px solid var(--ody-v2-rule);border-bottom:1px solid var(--ody-v2-rule);vertical-align:top;text-align:left}
.ody-v2-registry-header{position:sticky;top:0;z-index:3;height:48px;padding-right:24px;border-bottom-color:var(--ody-v2-rule-strong);background:var(--ody-v2-paper);color:var(--ody-v2-ink);font-size:11px;font-weight:800;letter-spacing:.055em;line-height:1.3;text-transform:uppercase;white-space:nowrap}.ody-v2-registry-header-label{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis}
.ody-v2-sticky-module{position:sticky!important;left:0!important;background-clip:padding-box!important;box-shadow:1px 0 0 var(--ody-v2-rule-strong)}.ody-v2-registry-header.ody-v2-sticky-module{z-index:5!important;background:var(--ody-v2-paper)!important}.ody-v2-registry-cell.ody-v2-sticky-module{z-index:2!important;background:var(--ody-v2-white)!important}
.ody-v2-column-resize{position:absolute;top:0;right:-22px;z-index:6;width:44px;min-width:44px;height:100%;min-height:44px;padding:0;border:0;background:transparent;color:var(--ody-v2-rule-strong);cursor:col-resize;touch-action:none}.ody-v2-column-resize::after{content:"";position:absolute;top:8px;bottom:8px;left:50%;width:1px;background:currentColor}.ody-v2-column-resize:hover,.ody-v2-column-resize:focus-visible{color:var(--ody-v2-orange)}
.ody-v2-tree-cell{padding:0;border-right:0}.ody-v2-topic-row .ody-v2-tree-cell{border-top:1px solid var(--ody-v2-ink);border-bottom-color:var(--ody-v2-ink);background:var(--ody-v2-ink);color:var(--ody-v2-inverse)}.ody-v2-subtopic-row .ody-v2-tree-cell{background:var(--ody-v2-subtopic);color:var(--ody-v2-ink)}
.ody-v2-tree-toggle{display:grid;width:100%;min-width:44px;min-height:48px;grid-template-columns:22px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 14px;border:0;border-left:4px solid transparent;border-radius:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.ody-v2-tree-toggle--subtopic{padding-left:34px}.ody-v2-tree-toggle:hover,.ody-v2-tree-toggle[aria-expanded="true"]{border-left-color:var(--ody-v2-orange-bright)}
.ody-v2-topic-row .ody-v2-tree-toggle:hover,.ody-v2-topic-row .ody-v2-tree-toggle[aria-expanded="true"]{background:#292b28}.ody-v2-subtopic-row .ody-v2-tree-toggle:hover,.ody-v2-subtopic-row .ody-v2-tree-toggle[aria-expanded="true"]{background:var(--ody-v2-paper)}
.ody-v2-chevron{width:22px;font-size:17px;line-height:1;text-align:center}.ody-v2-tree-label{min-width:0;font-weight:780;letter-spacing:.01em;line-height:1.35;overflow-wrap:anywhere}.ody-v2-tree-count{color:inherit;font-size:11px;font-variant-numeric:tabular-nums;font-weight:700;line-height:1.3;white-space:nowrap}.ody-v2-subtopic-row .ody-v2-tree-count{color:var(--ody-v2-muted)}
.ody-v2-module-row{background:var(--ody-v2-white);color:var(--ody-v2-ink);cursor:pointer}.ody-v2-module-row:hover .ody-v2-registry-cell,.ody-v2-module-row:hover .ody-v2-sticky-module{background:var(--ody-v2-faint)!important}.ody-v2-module-row:focus{outline:none}.ody-v2-module-row:focus-visible .ody-v2-registry-cell{border-top:2px solid var(--ody-v2-focus);border-bottom:2px solid var(--ody-v2-focus)}.ody-v2-module-row:focus-visible .ody-v2-registry-cell:first-child{box-shadow:inset 4px 0 0 var(--ody-v2-orange),1px 0 0 var(--ody-v2-rule-strong)}
.ody-v2-measure{min-width:0;max-width:100%}.ody-v2-registry-table .ody-v2-module-identity,.ody-v2-module-card .ody-v2-module-identity{display:flex;min-width:0;flex-direction:column;align-items:flex-start;gap:4px}
.ody-v2-registry-table .ody-v2-module-title,.ody-v2-module-card .ody-v2-module-title{display:inline-flex;width:100%;min-width:44px;min-height:44px;align-items:center;justify-content:flex-start;padding:4px 0;border:0;background:transparent;color:var(--ody-v2-ink);font-size:14px;font-weight:760;line-height:1.35;text-align:left;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:3px;cursor:pointer;overflow-wrap:anywhere}.ody-v2-registry-table .ody-v2-module-title:hover,.ody-v2-module-card .ody-v2-module-title:hover{text-decoration-color:var(--ody-v2-ink)}
.ody-v2-registry-table .ody-v2-module-title-cn,.ody-v2-module-card .ody-v2-module-title-cn{color:var(--ody-v2-muted);font-size:12px;line-height:1.4;overflow-wrap:anywhere}
.ody-v2-site-list,.ody-v2-code-list{display:flex;min-width:0;flex-wrap:wrap;gap:5px}.ody-v2-site-chip,.ody-v2-value-tag{display:inline-flex;max-width:100%;min-height:26px;align-items:center;padding:3px 7px;border:1px solid var(--ody-v2-rule-strong);border-radius:1px;background:var(--ody-v2-paper);color:var(--ody-v2-ink);font-size:11px;font-weight:750;line-height:1.2;overflow-wrap:anywhere}.ody-v2-value-tag--completed{border-left:4px solid var(--ody-v2-success)}.ody-v2-value-tag--in-progress,.ody-v2-value-tag--update{border-left:4px solid var(--ody-v2-orange)}
.ody-v2-empty-value,.ody-v2-metadata-value.is-empty,.ody-v2-inspector-value--empty{color:var(--ody-v2-muted);font-style:italic}.ody-v2-cell-text,.ody-v2-registry-cell,.ody-v2-code-value{min-width:0;overflow-wrap:anywhere}
.ody-v2-code-value{display:flex;width:100%;align-items:flex-start;gap:8px}.ody-v2-code-value code{flex:1 1 auto;min-width:0}.ody-v2-copy-button{flex:none;padding-inline:10px;font-size:11px}.ody-v2-cell-link{display:inline-flex;min-width:44px;min-height:44px;align-items:center;color:var(--ody-v2-ink);font-weight:700;text-decoration:underline;text-underline-offset:3px}
/* Tablet/mobile use a semantic list, never a table restyled as blocks. */
.ody-v2-topic-list{min-width:0;border-top:1px solid var(--ody-v2-rule-strong)}.ody-v2-topic-item,.ody-v2-subtopic-item,.ody-v2-module-list-item{min-width:0}
.ody-v2-topic-item>.ody-v2-tree-toggle{min-height:54px;background:var(--ody-v2-ink);color:var(--ody-v2-inverse)}.ody-v2-subtopic-item>.ody-v2-tree-toggle{min-height:50px;padding-left:32px;border-bottom:1px solid var(--ody-v2-rule-strong);background:var(--ody-v2-subtopic);color:var(--ody-v2-ink)}
.ody-v2-module-list{background:var(--ody-v2-white)}.ody-v2-module-list-item{border-bottom:1px solid var(--ody-v2-rule)}.ody-v2-module-card{min-width:0;padding:18px 18px 20px 48px;background:var(--ody-v2-white);cursor:pointer}.ody-v2-module-card:hover{background:var(--ody-v2-faint)}.ody-v2-module-card:focus-visible{outline:3px solid var(--ody-v2-focus);outline-offset:-3px;box-shadow:inset 4px 0 0 var(--ody-v2-orange)}
.ody-v2-module-card-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 24px;min-width:0;margin:12px 0 0}.ody-v2-module-card-field{display:grid;grid-template-columns:minmax(96px,.72fr) minmax(0,1.28fr);gap:8px;min-width:0;padding-top:9px;border-top:1px solid var(--ody-v2-rule)}
.ody-v2-module-card-field dt{color:var(--ody-v2-muted);font-size:11px;font-weight:800;letter-spacing:.035em;line-height:1.4;text-transform:uppercase}.ody-v2-module-card-field dd{min-width:0;margin:0;color:var(--ody-v2-ink);overflow-wrap:anywhere}
/* Metadata Inspector: right rail, tablet in-flow panel, and mobile viewport sheet. */
.ody-v2-roadmap-inspector-host:empty{display:none}.ody-v2-inspector-layer{min-width:0}.ody-v2-metadata-inspector{display:flex;min-width:0;flex-direction:column;border:1px solid var(--ody-v2-rule-strong);border-top:4px solid var(--ody-v2-ink);background:var(--ody-v2-paper);color:var(--ody-v2-ink)}
.ody-v2-inspector-layer--desktop,.ody-v2-metadata-inspector--desktop{width:100%}.ody-v2-metadata-inspector--desktop{position:sticky;top:calc(var(--ody-v2-header-h) + 20px);max-height:calc(100vh - var(--ody-v2-header-h) - 40px);max-height:calc(100dvh - var(--ody-v2-header-h) - 40px)}
.ody-v2-inspector-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--ody-v2-rule-strong)}.ody-v2-inspector-title{margin:0;color:var(--ody-v2-ink);font-size:14px;font-weight:800;letter-spacing:.05em;line-height:1.3;text-transform:uppercase}.ody-v2-inspector-close{padding-inline:10px}
.ody-v2-inspector-body{min-height:0;padding:18px 16px;overflow:auto;overscroll-behavior:contain}.ody-v2-inspector-module-title{margin:0;color:var(--ody-v2-ink);font-size:22px;font-weight:740;letter-spacing:-.025em;line-height:1.16}.ody-v2-inspector-module-title-cn{margin:7px 0 0;color:var(--ody-v2-muted);font-size:14px;line-height:1.45}
.ody-v2-inspector-group{min-width:0;margin-top:24px;padding-top:12px;border-top:1px solid var(--ody-v2-rule-strong)}.ody-v2-inspector-group-title{margin:0 0 4px;color:var(--ody-v2-orange);font-size:11px;font-weight:850;letter-spacing:.08em;line-height:1.3;text-transform:uppercase}.ody-v2-inspector-fields{margin:0}
.ody-v2-inspector-field{display:grid;grid-template-columns:minmax(112px,.75fr) minmax(0,1.25fr);gap:10px;min-width:0;padding:10px 0;border-bottom:1px solid var(--ody-v2-rule)}.ody-v2-inspector-field-label{color:var(--ody-v2-muted);font-size:11px;font-weight:750;line-height:1.4}.ody-v2-inspector-field-value{min-width:0;margin:0;color:var(--ody-v2-ink);font-size:12px;line-height:1.45;overflow-wrap:anywhere}
.ody-v2-inspector-list-item{min-width:0;padding:3px 0;overflow-wrap:anywhere}.ody-v2-inspector-list-item+.ody-v2-inspector-list-item{border-top:1px dotted var(--ody-v2-rule)}.ody-v2-inspector-list-value,.ody-v2-inspector-full-value,.ody-v2-inspector-value{display:block;min-width:0;overflow-wrap:anywhere;word-break:break-word}
.ody-v2-inspector-copy,.ody-v2-inspector-open{margin-top:6px;padding:7px 9px;font-size:11px}.ody-v2-inspector-list-item .ody-v2-inspector-copy{margin:5px 0 0}.ody-v2-inspector-footer{display:flex;min-width:0;flex-wrap:wrap;gap:10px;align-items:center;padding:14px 16px;border-top:1px solid var(--ody-v2-rule-strong);background:var(--ody-v2-canvas)}
.ody-v2-inspector-layer--tablet{width:100%;margin-top:8px}.ody-v2-metadata-inspector--tablet{width:100%;max-height:none}.ody-v2-metadata-inspector--tablet .ody-v2-inspector-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;overflow:visible}.ody-v2-metadata-inspector--tablet .ody-v2-inspector-module-title,.ody-v2-metadata-inspector--tablet .ody-v2-inspector-module-title-cn{grid-column:1/-1}.ody-v2-metadata-inspector--tablet .ody-v2-inspector-group{align-self:start}
.ody-v2-inspector-layer--mobile{position:fixed;inset:var(--ody-v2-header-h) 0 0;z-index:145;display:flex;width:100%;height:calc(100vh - var(--ody-v2-header-h));height:calc(100dvh - var(--ody-v2-header-h));background:var(--ody-v2-canvas)}.ody-v2-metadata-inspector--mobile{width:100%;height:100%;border-width:0;border-top-width:4px}.ody-v2-metadata-inspector--mobile .ody-v2-inspector-body{flex:1 1 auto}.ody-v2-metadata-inspector--mobile .ody-v2-inspector-footer{padding-bottom:max(14px,env(safe-area-inset-bottom))}
/* Metadata-only Module Details, read view and edit/conflict states. */
.ody-v2-module-details{max-width:1320px}.ody-v2-module-masthead{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:16px;padding:4px 0 18px}.ody-v2-context-link{padding-inline:0;border-color:transparent;text-decoration:underline;text-underline-offset:3px}.ody-v2-context-link:hover{padding-inline:12px}
.ody-v2-module-details>.ody-v2-preview-banner{margin:24px 0 0}.ody-v2-module-details>.ody-v2-inline-notice{margin-top:20px}.ody-v2-module-details>.ody-v2-module-identity,.ody-v2-module-details>.ody-v2-metadata-edit-form>.ody-v2-module-identity{margin-top:34px}
.ody-v2-module-details .ody-v2-module-identity{display:block;min-width:0}.ody-v2-module-details .ody-v2-module-title{max-width:24ch;margin:0;color:var(--ody-v2-ink);font-size:clamp(38px,5vw,68px);font-weight:740;letter-spacing:-.05em;line-height:1}.ody-v2-module-details .ody-v2-module-title-cn{max-width:50ch;margin:14px 0 0;color:var(--ody-v2-muted);font-size:clamp(17px,1.7vw,22px);line-height:1.4}
.ody-v2-module-status-line{display:flex;min-width:0;flex-wrap:wrap;gap:8px;margin-top:20px}.ody-v2-status-text,.ody-v2-active-text{display:inline-flex;min-height:30px;align-items:center;padding:5px 9px;border:1px solid var(--ody-v2-rule-strong);border-radius:1px;background:transparent;color:var(--ody-v2-ink);font-size:12px;font-weight:750}.ody-v2-active-text{border-left:4px solid var(--ody-v2-success)}
.ody-v2-module-actions{display:flex;min-width:0;flex-wrap:wrap;gap:10px;margin-top:28px}.ody-v2-metadata-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 36px;min-width:0;margin-top:44px;border-top:1px solid var(--ody-v2-ink)}
.ody-v2-metadata-group,.ody-v2-title-editors{min-width:0;padding:26px 0 34px;border-bottom:1px solid var(--ody-v2-rule-strong)}.ody-v2-metadata-group-title{margin:0 0 14px;color:var(--ody-v2-orange);font-size:12px;font-weight:850;letter-spacing:.075em;line-height:1.3;text-transform:uppercase}.ody-v2-metadata-list{min-width:0;margin:0}
.ody-v2-metadata-row{display:grid;grid-template-columns:minmax(140px,.7fr) minmax(0,1.3fr);gap:18px;min-width:0;padding:13px 0;border-top:1px solid var(--ody-v2-rule)}.ody-v2-metadata-label{color:var(--ody-v2-muted);font-size:12px;font-weight:750;line-height:1.45}.ody-v2-metadata-description{min-width:0;margin:0;color:var(--ody-v2-ink);font-size:13px;line-height:1.5;overflow-wrap:anywhere}.ody-v2-metadata-value{min-width:0;overflow-wrap:anywhere}
.ody-v2-lessons-list{margin:0;padding-left:20px}.ody-v2-lessons-list li+li{margin-top:5px}.ody-v2-value-list li,.ody-v2-code-list-item{padding:3px 0}.ody-v2-code-list{flex-direction:column}.ody-v2-code-list-item{display:grid;grid-template-columns:minmax(52px,auto) minmax(0,1fr);gap:8px;min-width:0;border-bottom:1px dotted var(--ody-v2-rule)}.ody-v2-code-locale{color:var(--ody-v2-muted);font-size:11px;font-weight:800}.ody-v2-open-link{text-decoration:underline;text-underline-offset:3px}
.ody-v2-quarter-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.ody-v2-quarter-list li{min-width:0;padding:8px;border:1px solid var(--ody-v2-rule);text-align:center}.ody-v2-quarter-label,.ody-v2-quarter-value{display:block}.ody-v2-quarter-label{color:var(--ody-v2-muted);font-size:10px;font-weight:800}.ody-v2-quarter-value{margin-top:2px;font-variant-numeric:tabular-nums;font-weight:750}
.ody-v2-metadata-edit-form{min-width:0}.ody-v2-title-editors{margin-top:34px;border-top:1px solid var(--ody-v2-ink)}.ody-v2-edit-kicker{margin-bottom:10px}.ody-v2-edit-version{margin:14px 0 0;color:var(--ody-v2-muted);font-size:12px;font-family:Consolas,"Courier New",monospace}
.ody-v2-edit-group .ody-v2-metadata-list,.ody-v2-title-editors .ody-v2-metadata-list{margin:0}.ody-v2-edit-row[data-field-class="read-only"],.ody-v2-edit-row[data-field-class="immutable"]{background:rgba(228,222,211,.38)}.ody-v2-editor{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;min-width:0}.ody-v2-edit-subfield{min-width:0}.ody-v2-edit-label{display:block;margin-bottom:5px;color:var(--ody-v2-muted);font-size:11px;font-weight:750}.ody-v2-edit-control[type="checkbox"]{vertical-align:middle}
.ody-v2-field-error{margin-top:7px;padding:8px 10px;border-left:4px solid var(--ody-v2-error);background:var(--ody-v2-error-soft);color:var(--ody-v2-error);font-size:12px;font-weight:700}.ody-v2-edit-actions,.ody-v2-conflict-actions,.ody-v2-edit-error-actions,.ody-v2-state-actions{display:flex;min-width:0;flex-wrap:wrap;gap:10px;margin-top:22px}
.ody-v2-conflict-state,.ody-v2-edit-error-state,.ody-v2-inline-notice,.ody-v2-retained-draft{min-width:0;margin-top:22px;padding:16px 18px;border:1px solid var(--ody-v2-rule-strong);border-left:5px solid var(--ody-v2-orange);background:var(--ody-v2-paper)}.ody-v2-conflict-state{border-left-style:double;border-left-width:8px}.ody-v2-edit-error-state,.ody-v2-inline-notice.is-error{border-left-color:var(--ody-v2-error);background:var(--ody-v2-error-soft)}.ody-v2-inline-notice.is-success{border-left-color:var(--ody-v2-success);background:var(--ody-v2-success-soft)}.ody-v2-inline-notice.is-info{border-left-color:var(--ody-v2-focus);background:var(--ody-v2-info-soft)}
.ody-v2-conflict-state h2,.ody-v2-edit-error-state h2{margin:0 0 8px;font-size:20px}.ody-v2-conflict-state p,.ody-v2-edit-error-state p{margin:0;line-height:1.5}.ody-v2-retained-draft summary{min-height:44px;padding:10px 0;font-weight:750;cursor:pointer}.ody-v2-retained-draft-list{margin:8px 0 0}.ody-v2-retained-draft-row{display:grid;grid-template-columns:minmax(140px,.7fr) minmax(0,1.3fr);gap:14px;padding:9px 0;border-top:1px solid var(--ody-v2-rule)}.ody-v2-retained-draft-row dt{color:var(--ody-v2-muted);font-size:11px}.ody-v2-retained-draft-row dd{min-width:0;margin:0;overflow-wrap:anywhere}
/* Honest loading, empty and error states remain page-contextual rather than modal. */
.ody-v2-honest-state{min-width:0;padding:36px 0;border-top:4px solid var(--ody-v2-ink);border-bottom:1px solid var(--ody-v2-rule-strong)}.ody-v2-error-state,.ody-v2-roadmap-state--error{border-top-color:var(--ody-v2-error)}.ody-v2-loading-state,.ody-v2-roadmap-state--loading{border-top-style:dashed}.ody-v2-state-title{max-width:24ch;margin:0;color:var(--ody-v2-ink);font-size:clamp(28px,4vw,48px);font-weight:720;letter-spacing:-.035em;line-height:1.05}.ody-v2-state-copy{max-width:60ch;margin:14px 0 0;color:var(--ody-v2-muted);font-size:15px;line-height:1.55}
/* Preview destination pages: a restrained editorial statement, not fake workflow UI. */
.ody-v2-preview-page{width:min(100%,1280px);min-height:calc(100vh - var(--ody-v2-header-h));min-height:calc(100dvh - var(--ody-v2-header-h));margin:0 auto;padding:clamp(48px,9vh,104px) clamp(20px,5vw,72px) 64px;background:var(--ody-v2-canvas);color:var(--ody-v2-ink)}
.ody-v2-preview-header{max-width:900px;padding:0 0 38px 26px;border-left:2px solid var(--ody-v2-orange);border-bottom:1px solid var(--ody-v2-rule-strong)}.ody-v2-preview-disclosure{margin:0 0 22px;border-style:dashed}.ody-v2-preview-eyebrow{margin-bottom:12px}
.ody-v2-preview-title{max-width:18ch;margin:0;color:var(--ody-v2-ink);font-size:clamp(46px,7vw,88px);font-weight:740;letter-spacing:-.06em;line-height:.96}.ody-v2-preview-purpose{max-width:62ch;margin:24px 0 0;color:var(--ody-v2-ink);font-size:clamp(17px,1.6vw,22px);line-height:1.5}
.ody-v2-preview-context{width:min(100%,var(--ody-v2-reading));min-width:0;margin:38px 0 0;padding:22px 0;border-top:1px solid var(--ody-v2-rule-strong);border-bottom:1px solid var(--ody-v2-rule-strong)}.ody-v2-preview-context[data-context-state="unavailable"]{padding-left:16px;border-left:5px double var(--ody-v2-error)}.ody-v2-preview-context-title{margin:0 0 12px;color:var(--ody-v2-ink);font-size:21px}.ody-v2-preview-context-message{max-width:60ch;margin:0;color:var(--ody-v2-muted);font-size:15px;line-height:1.55}.ody-v2-preview-context-list{display:grid;grid-template-columns:minmax(110px,.45fr) minmax(0,1.55fr);gap:0 18px;margin:0}.ody-v2-preview-context-label,.ody-v2-preview-context-value{padding:10px 0;border-top:1px solid var(--ody-v2-rule)}.ody-v2-preview-context-label{color:var(--ody-v2-muted);font-size:12px;font-weight:800}.ody-v2-preview-context-value{min-width:0;margin:0;overflow-wrap:anywhere}.ody-v2-preview-context-value--code{font-family:Consolas,"Courier New",monospace;font-size:12px}.ody-v2-preview-actions{display:flex;min-width:0;flex-wrap:wrap;gap:10px;margin-top:28px}
/* Settings is a short preference ledger, not a card wall. */
.ody-v2-settings{max-width:1040px}.ody-v2-settings-masthead{padding:8px 0 30px 24px;border-left:2px solid var(--ody-v2-orange)}.ody-v2-settings-section{min-width:0;padding:28px 0;border-bottom:1px solid var(--ody-v2-rule-strong)}.ody-v2-settings-section-title{margin:0;color:var(--ody-v2-ink);font-size:22px;letter-spacing:-.02em}.ody-v2-settings-section-hint{max-width:64ch;margin:8px 0 0;color:var(--ody-v2-muted);font-size:13px;line-height:1.5}
.ody-v2-settings-identity-list{display:grid;grid-template-columns:minmax(120px,.45fr) minmax(0,1.55fr);gap:0 18px;width:min(100%,680px);margin:18px 0 0}.ody-v2-settings-identity-list dt,.ody-v2-settings-identity-list dd{min-width:0;margin:0;padding:11px 0;border-top:1px solid var(--ody-v2-rule)}.ody-v2-settings-identity-list dt{color:var(--ody-v2-muted);font-size:12px;font-weight:800}.ody-v2-settings-identity-value{overflow-wrap:anywhere}.ody-v2-settings-identity-id{font-family:Consolas,"Courier New",monospace;font-size:12px}.ody-v2-settings-identity-unavailable{grid-column:1/-1;margin:0;color:var(--ody-v2-muted)}
.ody-v2-settings-form{min-width:0}.ody-v2-settings-preference{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:24px;align-items:center;min-width:0;min-height:72px;padding:14px 0;border-top:1px solid var(--ody-v2-rule)}.ody-v2-settings-preference:first-of-type{margin-top:18px}.ody-v2-settings-preference-copy{min-width:0}.ody-v2-settings-preference-label{display:flex;min-width:44px;min-height:44px;align-items:center;margin:-10.75px 0;padding:10.75px 0;color:var(--ody-v2-ink);font-size:15px;font-weight:750;line-height:1.5;cursor:pointer}.ody-v2-settings-preference-label::after{content:"";position:absolute;inset:0}.ody-v2-settings-preference-hint{position:relative;margin:4px 0 0;color:var(--ody-v2-muted);font-size:12px;line-height:1.45;pointer-events:none}.ody-v2-settings .ody-v2-settings-checkbox{position:relative;z-index:1;box-sizing:border-box;width:44px;height:44px;min-width:44px;min-height:44px;margin:0;padding:0;justify-self:center}.ody-v2-settings-actions{display:flex;margin-top:24px}.ody-v2-settings-save{min-width:150px}
/* Tablet: 768–1023 uses semantic list and in-flow Inspector. */
@media (max-width:1023px){.ody-v2-page{padding:32px clamp(24px,5vw,48px) 56px}.ody-v2-home .ody-home-hero{grid-template-columns:minmax(0,1fr) minmax(180px,32%)}.ody-v2-home .ody-v2-journey{grid-column:2;grid-row:1/span 3;width:100%;min-height:100px;margin:0;align-self:end}.ody-v2-field-list{grid-template-columns:repeat(3,minmax(0,1fr))}.ody-v2-roadmap-body,.ody-v2-roadmap-body:has(.ody-v2-inspector-layer--desktop){grid-template-columns:minmax(0,1fr)}.ody-v2-metadata-groups{gap:0 24px}.ody-v2-module-details .ody-v2-module-title{max-width:20ch}.ody-v2-roadmap-loading-shell,.ody-v2-roadmap-toolbar{grid-template-columns:minmax(0,1fr)}.ody-v2-roadmap-toolbar .btn,.ody-v2-roadmap-loading-shell .btn{width:100%}}
/* Mobile: 320–767 is a single-column list with a full-width Inspector sheet. */
@media (max-width:767px){.ody-v2-page{padding:24px 20px 48px}.ody-v2-home .ody-home-hero{display:block}.ody-v2-home .ody-v2-journey{display:block;width:min(100%,300px);min-height:86px;margin:18px 0 0;padding-top:12px}.ody-v2-roadmap-masthead{grid-template-columns:minmax(0,1fr);gap:20px;align-items:start;padding:6px 0 24px 18px}.ody-v2-roadmap-masthead-actions,.ody-v2-new-module{width:100%}.ody-v2-roadmap-title,.ody-v2-settings-title{font-size:clamp(40px,12vw,56px)}.ody-v2-roadmap-intro,.ody-v2-settings-intro{font-size:16px}.ody-v2-roadmap-loading-shell,.ody-v2-roadmap-toolbar{grid-template-columns:minmax(0,1fr)}.ody-v2-roadmap-search{flex-wrap:wrap}.ody-v2-roadmap-search-input{font-size:16px}.ody-v2-disclosure:not([hidden]){padding-top:14px}.ody-v2-field-list{grid-template-columns:minmax(0,1fr);gap:8px}.ody-v2-filter-dropdown-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ody-v2-filter-dropdown-panel{left:0;right:0;width:auto}.ody-v2-filter-assignment{grid-column:span 2;flex-direction:column;align-items:flex-start;gap:6px 0}.ody-v2-active-filter-list,.ody-v2-active-filter-item,.ody-v2-active-filter-chip,.ody-v2-clear-all{width:100%}.ody-v2-active-filter-chip,.ody-v2-clear-all{justify-content:flex-start}.ody-v2-tree-toggle{grid-template-columns:22px minmax(0,1fr);gap:8px}.ody-v2-tree-count{grid-column:2;white-space:normal}.ody-v2-module-card{padding:16px 12px 18px 38px}.ody-v2-module-card-fields{grid-template-columns:minmax(0,1fr);gap:8px}.ody-v2-module-card-field{grid-template-columns:minmax(92px,.72fr) minmax(0,1.28fr)}.ody-v2-module-masthead{align-items:flex-start;flex-direction:column}.ody-v2-module-details>.ody-v2-module-identity,.ody-v2-module-details>.ody-v2-metadata-edit-form>.ody-v2-module-identity{margin-top:28px}.ody-v2-module-details .ody-v2-module-title{font-size:clamp(36px,11vw,52px)}.ody-v2-module-actions,.ody-v2-edit-actions,.ody-v2-conflict-actions,.ody-v2-edit-error-actions,.ody-v2-state-actions{display:grid;grid-template-columns:minmax(0,1fr)}.ody-v2-module-actions .btn,.ody-v2-edit-actions .btn,.ody-v2-conflict-actions .btn,.ody-v2-edit-error-actions .btn,.ody-v2-state-actions .btn{width:100%}.ody-v2-metadata-groups{grid-template-columns:minmax(0,1fr);margin-top:34px}.ody-v2-metadata-row,.ody-v2-retained-draft-row{grid-template-columns:minmax(0,1fr);gap:5px}.ody-v2-quarter-list{grid-template-columns:repeat(2,minmax(0,1fr))}.ody-v2-preview-page{padding:38px 20px 48px}.ody-v2-preview-header{padding:0 0 28px 18px}.ody-v2-preview-title{font-size:clamp(42px,13vw,60px)}.ody-v2-preview-context{margin-top:28px}.ody-v2-preview-context-list,.ody-v2-settings-identity-list{grid-template-columns:minmax(0,1fr)}.ody-v2-preview-context-label{padding-bottom:2px}.ody-v2-preview-context-value{padding-top:2px}.ody-v2-preview-actions{display:grid;grid-template-columns:minmax(0,1fr)}.ody-v2-preview-link{width:100%}.ody-v2-settings-masthead{padding:6px 0 24px 18px}.ody-v2-settings-preference{grid-template-columns:minmax(0,1fr) 44px;gap:14px}.ody-v2-settings-save{width:100%}.ody-v2-metadata-inspector--tablet .ody-v2-inspector-body{grid-template-columns:minmax(0,1fr)}.ody-v2-inspector-field{grid-template-columns:minmax(100px,.7fr) minmax(0,1.3fr)}}
@media (max-width:374px){.ody-v2-page,.ody-v2-preview-page{padding-inline:16px}.ody-v2-roadmap-loading-shell,.ody-v2-roadmap-toolbar{grid-template-columns:minmax(0,1fr)}.ody-v2-roadmap-search{grid-column:1}.ody-v2-module-card{padding-left:28px}.ody-v2-module-card-field,.ody-v2-inspector-field{grid-template-columns:minmax(0,1fr);gap:4px}.ody-v2-tree-toggle{padding-inline:9px}.ody-v2-tree-toggle--subtopic,.ody-v2-subtopic-item>.ody-v2-tree-toggle{padding-left:20px}.ody-v2-inspector-header,.ody-v2-inspector-body,.ody-v2-inspector-footer{padding-inline:12px}}
/* Compact 1280×720 desktop keeps control plane and hierarchy visible without shrinking type. */
@media (min-width:1024px) and (max-height:760px){.ody-v2-page{padding-top:24px;padding-bottom:44px}.ody-v2-roadmap-masthead{padding-bottom:22px}.ody-v2-roadmap-title{font-size:clamp(42px,4vw,58px)}.ody-v2-roadmap-workspace{margin-top:18px}.ody-v2-preview-page{padding-top:42px}.ody-v2-preview-title{font-size:clamp(46px,5.6vw,70px)}.ody-v2-metadata-inspector--desktop{top:calc(var(--ody-v2-header-h) + 12px);max-height:calc(100dvh - var(--ody-v2-header-h) - 24px)}}
/* Motion stops in deterministic final states. */
@media (prefers-reduced-motion:reduce){.ody-v2-home *,.ody-v2-home *::before,.ody-v2-home *::after,.ody-v2-page *,.ody-v2-page *::before,.ody-v2-page *::after,.ody-v2-inspector-layer *,.ody-v2-inspector-layer *::before,.ody-v2-inspector-layer *::after{animation:none!important;scroll-behavior:auto!important;transition:none!important}.ody-v2-home[data-reveal-state="pending"] .ody-home-eyebrow,.ody-v2-home[data-reveal-state="pending"] .ody-home-title,.ody-v2-home[data-reveal-state="pending"] .ody-home-purpose{opacity:1;transform:none}.ody-v2-home .ody-v2-journey__line{stroke-dashoffset:0}.ody-v2-home .ody-route-mark{transform:none!important}}
/* Grayscale/high-contrast relies on labels, indentation, rules and border patterns. */
@media (monochrome),(prefers-contrast:more){.ody-v2-page,.ody-v2-inspector-layer{--ody-v2-rule:currentColor;--ody-v2-rule-strong:currentColor}.ody-v2-topic-row .ody-v2-tree-cell,.ody-v2-topic-item>.ody-v2-tree-toggle{border:2px solid currentColor}.ody-v2-subtopic-row .ody-v2-tree-cell,.ody-v2-subtopic-item>.ody-v2-tree-toggle{border:1px dashed currentColor}.ody-v2-preview-banner,.ody-v2-preview-disclosure,.ody-v2-active-filter-chip,.ody-v2-conflict-state{border-left-style:double;border-left-width:5px}.ody-v2-value-tag{border-color:currentColor}}
@media (forced-colors:active){.ody-v2-home,.ody-v2-page,.ody-v2-inspector-layer,.ody-v2-metadata-inspector,.ody-v2-registry-viewport,.ody-v2-registry-table,.ody-v2-registry-header,.ody-v2-registry-cell,.ody-v2-topic-row .ody-v2-tree-cell,.ody-v2-subtopic-row .ody-v2-tree-cell,.ody-v2-topic-item>.ody-v2-tree-toggle,.ody-v2-subtopic-item>.ody-v2-tree-toggle,.ody-v2-module-card,.ody-v2-disclosure,.ody-v2-preview-context,.ody-v2-settings-section{background:Canvas;color:CanvasText;forced-color-adjust:auto}.ody-v2-page a,.ody-v2-inspector-layer a{color:LinkText}.ody-v2-page a:focus-visible,.ody-v2-page button:focus-visible,.ody-v2-page input:focus-visible,.ody-v2-page select:focus-visible,.ody-v2-page textarea:focus-visible,.ody-v2-page [tabindex]:focus-visible,.ody-v2-home a:focus-visible,.ody-v2-inspector-layer a:focus-visible,.ody-v2-inspector-layer button:focus-visible{outline:3px solid Highlight;outline-offset:3px}.ody-v2-preview-banner,.ody-v2-preview-disclosure,.ody-v2-active-filter-chip,.ody-v2-conflict-state{border-left-style:double;border-left-color:CanvasText}.ody-v2-subtopic-row .ody-v2-tree-cell,.ody-v2-subtopic-item>.ody-v2-tree-toggle{border-style:dashed}.ody-v2-chevron,.ody-v2-column-resize{color:CanvasText}.ody-v2-site-chip,.ody-v2-value-tag,.ody-v2-registry-header,.ody-v2-registry-cell,.ody-v2-metadata-inspector,.ody-v2-inspector-field,.ody-v2-metadata-row,.ody-v2-settings-preference{border-color:CanvasText}}
/* Explicit hook completions keep every renderer state independently addressable. */
.ody-v2-journey__markers{pointer-events:none}
.ody-v2-export-live{isolation:isolate}
.ody-v2-filters-panel,.ody-v2-fields-panel,.ody-v2-settings-preferences{min-width:0}
.ody-v2-export{white-space:nowrap}
.ody-v2-module-title--table,.ody-v2-module-title--list{max-width:100%}
.ody-v2-registry-header-row{height:48px}
.ody-v2-tree-cell--topic,.ody-v2-tree-cell--subtopic{width:100%}
.ody-v2-subtopic-list{margin:0;padding:0;list-style:none}
.ody-v2-update-metadata,.ody-v2-update-module{min-width:148px}
