.itp-page { background: var(--surface-page); color: var(--text-primary); }
.itp-page [hidden] { display: none !important; }
.itp-wrap { margin: 0 auto; width: 100%; max-width: none; padding-left: var(--sp-lg); padding-right: var(--sp-lg); }
.itp-hero { background: linear-gradient(135deg, var(--signal-navy), var(--signal-blue)); color: #fff; padding: var(--sp-xl) 0; }
.itp-hero h1 { font-size: clamp(2rem, 4vw, 2.7rem); font-weight: var(--fw-extrabold); letter-spacing: -.04em; margin: 0 0 var(--sp-sm); }
.itp-hero-lead { font-size: clamp(1.05rem, 2vw, 1.3rem); line-height: 1.55; margin: 0; max-width: 49rem; }
.itp-hero-note { color: rgba(255,255,255,.8); font-size: .92rem; line-height: 1.55; margin: var(--sp-md) 0 0; max-width: 48rem; }
.itp-eyebrow, .itp-sidebar-label { color: var(--signal-blue); font-size: var(--fs-label); font-weight: var(--fw-bold); letter-spacing: .1em; margin: 0 0 var(--sp-sm); text-transform: uppercase; }
.itp-hero .itp-eyebrow { color: var(--signal-green); }
.itp-section-intro { margin-bottom: var(--sp-xl); max-width: 49rem; }
.itp-section-intro h2, .itp-journey h2 { font-size: clamp(1.7rem, 3vw, 2.5rem); font-weight: var(--fw-extrabold); letter-spacing: -.03em; margin: 0 0 var(--sp-sm); }
.itp-section-intro > p:last-child { color: var(--text-secondary); line-height: 1.65; margin: 0; }
.itp-explorer { padding-bottom: var(--sp-3xl); padding-top: var(--sp-3xl); }
.itp-group-tabs { display: grid; gap: var(--sp-sm); grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0 auto var(--sp-md); max-width: 900px; }
.itp-group-tabs .filter-btn { border-radius: var(--radius-md); font-size: 1.2rem; font-weight: var(--fw-bold); min-height: 88px; padding: var(--sp-md) var(--sp-lg); text-align: left; }
.itp-group-tabs span { display: block; font-size: .85rem; font-weight: var(--fw-regular); margin-top: var(--sp-xs); opacity: .82; }
.itp-subsection-rail { display: none; }
.itp-subsection-pills { display: flex; gap: var(--sp-sm); overflow-x: auto; padding: var(--sp-xs) 0 var(--sp-md); scrollbar-width: thin; }
.itp-subsection-pills .filter-btn { flex: 0 0 auto; min-height: 44px; white-space: nowrap; }
.itp-workspace { display: grid; grid-template-columns: clamp(200px, 16vw, 260px) minmax(0, 1fr); min-height: 620px; }
.itp-workspace-static { display: block; min-height: 0; }
.itp-sidebar { background: var(--surface-card); border: 1px solid var(--border-default); border-radius: var(--radius-xl) 0 0 var(--radius-xl); padding: var(--sp-lg) var(--sp-sm); }
.itp-sidebar-label { margin-left: var(--sp-sm); }
.itp-sidebar button { align-items: center; background: transparent; border: 0; border-radius: var(--radius-sm); color: var(--text-secondary); display: flex; font: inherit; font-size: .88rem; gap: var(--sp-sm); justify-content: space-between; min-height: 44px; padding: var(--sp-sm); text-align: left; width: 100%; }
.itp-sidebar button:hover { background: var(--surface-subtle); color: var(--accent-strong); }
.itp-sidebar button.active { background: var(--v3-blue-light); color: var(--accent-strong); font-weight: var(--fw-bold); }
.itp-stage { background: var(--surface-card); border: 1px solid var(--border-default); border-radius: var(--radius-xl); min-width: 0; padding: var(--sp-xl); }
.itp-sidebar:not([hidden]) + .itp-stage { border-left: 0; border-radius: 0 var(--radius-xl) var(--radius-xl) 0; }
.itp-stage-head h3 { color: var(--text-primary); font-size: clamp(1.55rem, 3vw, 2.15rem); font-weight: var(--fw-extrabold); letter-spacing: -.025em; margin: 0 0 var(--sp-sm); }
.itp-stage-head > p:last-child { color: var(--text-secondary); line-height: 1.65; margin: 0; max-width: 48rem; }
.itp-pager { align-items: center; display: flex; gap: var(--sp-sm); margin: var(--sp-lg) 0 var(--sp-md); }
.itp-pager .filter-btn { min-height: 44px; min-width: 44px; padding: var(--sp-xs) var(--sp-sm); }
.itp-pager .filter-btn:disabled, .itp-slide-controls .filter-btn:disabled { cursor: not-allowed; opacity: .45; }
.itp-count { color: var(--text-faint); font-size: var(--fs-label); }
.itp-count strong { color: var(--text-secondary); font-weight: var(--fw-bold); }
.itp-media-frame { align-items: center; background: var(--surface-subtle); border: 1px solid var(--border-default); border-radius: var(--radius-lg); display: flex; justify-content: center; min-height: 330px; overflow: hidden; padding: var(--sp-xl); touch-action: pan-y; }
.itp-media-placeholder { max-width: 34rem; text-align: center; }
.itp-media-placeholder > i { color: var(--signal-blue); display: block; font-size: 2rem; margin-bottom: var(--sp-sm); }
.itp-media-placeholder strong { display: block; font-size: var(--fs-heading); margin-bottom: var(--sp-sm); }
.itp-media-placeholder p { color: var(--text-secondary); line-height: 1.6; margin: 0 auto var(--sp-md); }
.itp-media-placeholder span { background: var(--v3-blue-light); border-radius: var(--radius-xl); color: var(--accent-strong); display: inline-block; font-size: var(--fs-label); font-weight: var(--fw-bold); margin-bottom: var(--sp-md); padding: var(--sp-xs) var(--sp-md); }
.itp-media-caption { color: var(--text-faint); font-size: .82rem; line-height: 1.5; margin: var(--sp-sm) 0 0; }
.itp-slide-controls { align-items: center; display: flex; flex-wrap: wrap; gap: var(--sp-sm); margin-top: var(--sp-md); }
.itp-slide-controls .filter-btn { min-height: 44px; }
.itp-includes { border-top: 1px solid var(--border-default); margin-top: var(--sp-lg); padding-top: var(--sp-md); }
.itp-includes summary { border-radius: var(--radius-sm); color: var(--accent-strong); cursor: pointer; font-weight: var(--fw-bold); list-style-position: outside; margin-left: var(--sp-md); min-height: 44px; padding: var(--sp-sm) var(--sp-xs); }
.itp-includes ul { color: var(--text-secondary); display: grid; gap: var(--sp-sm); line-height: 1.55; margin: var(--sp-sm) 0 0; padding-left: var(--sp-xl); }
.itp-nojs-link { color: var(--text-secondary); line-height: 1.55; margin: var(--sp-lg) 0 0; }
.itp-nojs-link a { color: var(--accent-strong); font-weight: var(--fw-bold); }
.itp-swipe-hint { color: var(--text-secondary); display: none; font-size: var(--fs-label); margin: 0 0 var(--sp-sm); }
.itp-journey { background: var(--surface-subtle); padding: var(--sp-3xl) 0; }
.itp-journey h2 { margin-bottom: var(--sp-xl); }
.itp-journey-steps { display: grid; gap: var(--sp-sm); grid-template-columns: repeat(5, 1fr); list-style: none; margin: 0; padding: 0; }
.itp-journey-steps li { background: var(--surface-card); border: 1px solid var(--border-default); border-radius: var(--radius-lg); min-width: 0; padding: var(--sp-lg); position: relative; }
.itp-journey-steps li:not(:last-child)::after { color: var(--signal-blue); content: "→"; font-size: 1.35rem; position: absolute; right: calc(var(--sp-md) * -1); top: 50%; transform: translateY(-50%); z-index: 1; }
.itp-journey-steps span { color: var(--text-faint); font-size: var(--fs-label); position: absolute; right: var(--sp-sm); top: var(--sp-sm); }
.itp-journey-steps i { color: var(--signal-blue); display: block; font-size: 1.35rem; margin-bottom: var(--sp-md); }
.itp-journey-steps strong, .itp-journey-steps small { display: block; }
.itp-journey-steps small { color: var(--text-secondary); line-height: 1.4; margin-top: var(--sp-xs); }
.itp-organisations { padding-bottom: var(--sp-3xl); padding-top: var(--sp-3xl); }
.itp-organisation-grid { display: grid; gap: var(--sp-lg); grid-template-columns: repeat(3, 1fr); }
.itp-organisation-grid article { background: var(--surface-card); border: 1px solid var(--border-default); border-radius: var(--radius-lg); display: flex; flex-direction: column; padding: var(--sp-xl); }
.itp-organisation-grid article > i { color: var(--signal-blue); font-size: 1.65rem; }
.itp-organisation-grid h3 { font-size: var(--fs-heading); font-weight: var(--fw-bold); margin: var(--sp-md) 0 var(--sp-sm); }
.itp-card-placeholder { background: var(--surface-subtle); border: 1px dashed var(--border-default); border-radius: var(--radius-md); margin: 0 0 var(--sp-md); padding: var(--sp-md); }
.itp-card-placeholder strong, .itp-card-placeholder span { display: block; }
.itp-card-placeholder strong { color: var(--accent-strong); font-size: var(--fs-label); margin-bottom: var(--sp-xs); }
.itp-card-placeholder span { color: var(--text-faint); font-size: .76rem; line-height: 1.45; }
.itp-organisation-grid p { color: var(--text-secondary); flex: 1; line-height: 1.65; margin: 0 0 var(--sp-lg); }
.itp-organisation-grid a { align-items: center; color: var(--accent-strong); display: inline-flex; font-weight: var(--fw-bold); gap: var(--sp-sm); min-height: 44px; text-decoration: none; }
.itp-page button:focus-visible, .itp-page a:focus-visible, .itp-page summary:focus-visible { outline: 3px solid var(--signal-green); outline-offset: 3px; }
@media (max-width: 991.98px) { .itp-journey-steps { grid-template-columns: repeat(3, 1fr); } .itp-journey-steps li::after { display: none; } }
@media (max-width: 767.98px) {
  .itp-wrap { padding-left: var(--sp-md); padding-right: var(--sp-md); }
  .itp-hero { padding-bottom: var(--sp-lg); padding-top: var(--sp-lg); }
  .itp-explorer, .itp-journey, .itp-organisations { padding-bottom: var(--sp-2xl); padding-top: var(--sp-2xl); }
  .itp-group-tabs { background: var(--surface-page); position: sticky; top: 0; z-index: var(--z-sticky); }
  .itp-group-tabs .filter-btn { font-size: 1rem; min-height: 68px; padding: var(--sp-sm); text-align: center; }
  .itp-group-tabs span { display: none; }
  .itp-subsection-rail { border-bottom: 1px solid var(--border-default); display: block; margin-bottom: var(--sp-lg); margin-left: calc(var(--sp-md) * -1); margin-right: calc(var(--sp-md) * -1); padding-left: var(--sp-md); }
  .itp-subsection-pills { padding-right: var(--sp-md); }
  .itp-workspace { display: block; min-height: 0; }
  .itp-sidebar { display: none; }
  .itp-stage, .itp-sidebar:not([hidden]) + .itp-stage { border: 1px solid var(--border-default); border-radius: var(--radius-xl); padding: var(--sp-lg); }
  .itp-media-frame { min-height: 300px; padding: var(--sp-lg); }
  .itp-swipe-hint { display: block; }
  .itp-journey-steps { grid-template-columns: 1fr 1fr; }
  .itp-organisation-grid { grid-template-columns: 1fr; }
}
@media (max-width: 575.98px) { .itp-media-frame { min-height: 280px; } .itp-journey-steps { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .itp-page *, .itp-page *::before, .itp-page *::after { scroll-behavior: auto !important; transition: none !important; } }
.itp-media-frame.itp-media-loaded { min-height: 0; padding: 0; width: 100%; cursor: zoom-in; }
.itp-media-loaded img { display: block; height: auto; width: 100%; max-height: 85vh; object-fit: contain; }
.itp-full-size { align-items: center; display: inline-flex; font: inherit; font-size: var(--fs-label); min-height: 44px; background: none; border: 0; padding: 0; color: var(--accent-strong); text-decoration: underline; }
.itp-viewer-open { overflow: hidden; }
.itp-image-dialog { width: calc(100vw - 32px); max-width: none; height: calc(100dvh - 32px); max-height: none; margin: auto; padding: var(--sp-md); border: 1px solid var(--border-default); border-radius: var(--radius-lg); background: var(--surface-card); color: var(--text-primary); }
.itp-image-dialog[open] { display: flex; flex-direction: column; gap: var(--sp-sm); }
.itp-image-dialog::backdrop { background: rgba(0, 0, 0, .75); }
.itp-image-dialog-header { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-sm); flex-wrap: wrap; flex-shrink: 0; }
.itp-image-dialog-header h2 { font-size: var(--fs-heading); margin: 0; }
.itp-image-dialog-header .filter-btn { min-height: 44px; }
.itp-image-dialog-body { flex: 1; min-height: 0; overflow: auto; display: flex; align-items: center; justify-content: center; }
.itp-image-dialog-body img { display: block; width: 100%; height: 100%; object-fit: contain; }
.itp-image-dialog-body.itp-actual-size { display: block; }
.itp-image-dialog-body.itp-actual-size img { width: auto; height: auto; max-width: none; max-height: none; }
.itp-image-dialog-caption { font-size: var(--fs-label); color: var(--text-secondary); margin: 0; flex-shrink: 0; }
.itp-image-dialog button:focus-visible { outline: 3px solid var(--signal-green); outline-offset: 3px; }
