/* /conformance: the self-assessment flow, the 13 domain tiles with their side drawer (tick what you meet) and the "what you get" tiles.
   Shared card classes (.tile) give the lit border. */

/* flow: the fallback list is replaced by the diagram when scripts run */
.cf-fallback { margin: 0; padding-left: 1.25rem; display: grid; gap: .5rem; color: var(--text-dim); font-size: var(--text-body-size); line-height: 1.6; }
.cf-fallback b { color: var(--text); font-weight: 500; }
.cf-flow { max-width: 100%; }
.cf-get-h { margin: var(--space-block) 0 var(--space-head); }

/* the helper bar */
.cf-tool { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-head); }
.cf-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 2rem; padding: 1rem 1.25rem; border: 1px solid var(--border); border-radius: var(--r-control); background: var(--surface-1); }
.cf-profiles { display: flex; flex-wrap: wrap; align-items: center; gap: var(--btn-row); min-width: 0; }
.cf-lab { font-size: var(--text-small-size); letter-spacing: .1em; text-transform: uppercase; color: var(--text-faint); }
.cf-seg > button[aria-pressed="true"] { color: var(--text); background: var(--surface-2); box-shadow: inset 0 0 0 1px var(--border-hover); }
.cf-seg > button:focus-visible { outline: 2px solid var(--brand-blue); outline-offset: 2px; }
.cf-n { margin-left: .45rem; font: 500 var(--text-code-size)/1 var(--mono); color: var(--text-faint); }
.cf-seg > button[aria-pressed="true"] .cf-n { color: var(--text-dim); }

.cf-prog { display: flex; align-items: center; gap: 1rem; position: relative; }
.cf-ring { width: 56px; height: 56px; flex: none; transform: rotate(-90deg); }
.cf-ring circle { fill: none; stroke-width: 5; }
.cf-ring__bg { stroke: var(--border); }
.cf-ring__fg { stroke: var(--brand-blue); stroke-linecap: round; stroke-dasharray: 0 100; }
.is-complete .cf-ring__fg { stroke: var(--valid); }
.cf-ring__t { position: absolute; left: 0; top: 0; width: 56px; height: 56px; display: grid; place-content: center; text-align: center; font: 400 var(--text-code-size)/1 var(--mono); color: var(--text); }
.cf-ring__t i { font-style: normal; font-size: var(--text-small-size); color: var(--text-faint); margin-top: .15rem; }
.cf-prog__txt { display: grid; gap: .2rem; min-width: 0; max-width: 28rem; }
.cf-prog__txt p { margin: 0; font-size: var(--text-body-size); color: var(--text); line-height: 1.45; }
.cf-prog__txt .cf-note { color: var(--text-faint); font-size: var(--text-body-size); }
.cf-note b { color: var(--text-dim); font-weight: 500; }

/* the 15-tile grid: 13 domains + profiles legend + link to the full text (5 x 3) */
.cf-tiles { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .75rem; }
.cf-tile { display: grid; align-content: start; gap: .3rem; padding: .8rem .95rem .9rem; font: inherit; text-align: left; color: inherit; cursor: pointer; min-width: 0; align-items: start; }
.cf-tile--info, .cf-tile--link { cursor: default; }
.cf-tile--link { cursor: pointer; }
.cf-tile--info { border-style: dashed; }
.cf-tile:focus-visible { outline: 2px solid var(--brand-blue); outline-offset: 2px; }
.cf-tile__top { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; }
.cf-tile__n { font: 500 var(--text-small-size)/1 var(--mono); letter-spacing: .06em; text-transform: uppercase; color: var(--text-faint); }
.cf-tile__cnt { font: 500 var(--text-code-size)/1 var(--mono); color: var(--text-dim); }
.is-full .cf-tile__cnt { color: var(--valid); }
.cf-tile__name { font-size: var(--text-card-title-size); font-weight: 500; line-height: 1.3; color: var(--text); }
.cf-tile__line { font-size: var(--text-body-size); line-height: 1.45; color: var(--text-dim); }
.cf-tile.is-out { opacity: .55; }
.cf-fallback-p { grid-column: 1 / -1; margin: 0; color: var(--text-dim); font-size: var(--text-body-size); }

/* the side drawer */
.cf-drawer { position: fixed; inset: 0; z-index: 120; display: flex; justify-content: flex-end; }
.cf-drawer[hidden] { display: none; }
.cf-drawer__bd { position: absolute; inset: 0; background: rgba(4, 5, 8, .62); opacity: 0; }
.cf-drawer__panel { position: relative; display: flex; flex-direction: column; width: min(32rem, 100%); height: 100%; background: var(--surface-1); border-left: 1px solid var(--border-hover); box-shadow: -24px 0 60px -20px rgba(0, 0, 0, .7); transform: translateX(2rem); opacity: 0; }
.cf-drawer.is-open .cf-drawer__bd, .cf-drawer.is-open .cf-drawer__panel { opacity: 1; transform: none; }
.cf-drawer__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: 1.25rem 1.25rem 1rem; border-bottom: 1px solid var(--border); }
.cf-drawer__title { display: grid; gap: .3rem; min-width: 0; }
.cf-drawer__title p { margin: 0; }
.cf-drawer__n { font: 500 var(--text-small-size)/1 var(--mono); letter-spacing: .06em; text-transform: uppercase; color: var(--text-faint); }
.cf-drawer__cnt { font-size: var(--text-body-size); color: var(--text-dim); }
.cf-drawer__x { flex: none; display: grid; place-items: center; width: 2.25rem; height: 2.25rem; padding: 0; border: 1px solid var(--border); border-radius: 50%; background: var(--surface-2); color: var(--text-dim); cursor: pointer; }
.cf-drawer__x svg { width: 1rem; height: 1rem; }
.cf-drawer__x:hover { color: var(--text); border-color: var(--border-hover); }
.cf-drawer__x:focus-visible, .cf-drawer__body:focus-visible { outline: 2px solid var(--brand-blue); outline-offset: 2px; }
.cf-drawer__body { flex: 1; min-height: 0; overflow-y: auto; scrollbar-width: thin; padding: .5rem 1.25rem; }
.cf-drawer__note { margin: 0; padding: .8rem 1.25rem; border-top: 1px solid var(--border); font-size: var(--text-body-size); line-height: 1.5; color: var(--text-faint); }
.cf-list { list-style: none; margin: 0; padding: 0; }
.cf-list[hidden] { display: none; }
.cf-list li { border-bottom: 1px solid var(--border); }
.cf-list li:last-child { border-bottom: 0; }
.cf-list li.is-out { opacity: .7; }
.cf-cp { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .8rem; align-items: start; padding: .85rem .25rem; cursor: pointer; border-radius: 8px; }
.cf-cp .bdg { margin-top: .1rem; transition: border-color 120ms var(--ease), color 120ms var(--ease); }
.cf-cp:hover .bdg { border-color: var(--text-dim); color: var(--text); }
.cf-cp:hover .bdg--ok { border-color: var(--valid); }
.cf-cp__t { display: grid; gap: .25rem; min-width: 0; font-size: var(--text-body-size); line-height: 1.55; color: var(--text-dim); }
.cf-cp__t b { font: 500 var(--text-code-size)/1.2 var(--mono); color: var(--text); }
.cf-cb { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.cf-cp:has(.cf-cb:focus-visible) { outline: 2px solid var(--brand-blue); outline-offset: -2px; }
html.cf-lock { overflow: hidden; }

/* the four documents: compact link tiles */
.cf-docs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; }
.cf-doc { display: grid; align-content: start; gap: .35rem; padding: 1rem 1.1rem; }
.cf-doc__id { color: var(--text-faint); overflow-wrap: anywhere; }
.cf-doc__t { color: var(--text); }
.cf-doc__m { font-size: var(--text-body-size); color: var(--text-dim); }

/* what you get */
.cf-get { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }

@media (max-width: 75rem) { .cf-tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); } .cf-docs { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 64rem) { .cf-get { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 47.99rem) {
  .cf-bar { padding: 1rem; }
  .cf-prog { flex-wrap: wrap; }
  .cf-seg { width: 100%; max-width: 100%; min-width: 0; box-sizing: border-box; }
  .cf-n { display: none; }
  .cf-seg > button { flex: 1 0 auto; justify-content: center; }
  .cf-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
  .cf-tile:last-child { grid-column: 1 / -1; }
  .cf-tile { padding: .85rem; }
  .cf-docs { gap: .75rem; }
  .cf-drawer__panel { width: 100%; border-left: 0; }
}
@media (max-width: 30rem) { .cf-docs { grid-template-columns: minmax(0, 1fr); } }

@media (prefers-reduced-motion: no-preference) {
  .cf-ring__fg { transition: stroke-dasharray 300ms var(--ease), stroke 200ms var(--ease); }
  .cf-drawer__bd { transition: opacity 180ms var(--ease); }
  .cf-drawer__panel { transition: transform 220ms var(--ease), opacity 180ms var(--ease); }
}

/* phone: 14 tiles and the full-text link are an odd count, so one column (no tile alone in a half row) */
@media (max-width: 30rem) { .cf-tiles { grid-template-columns: minmax(0, 1fr); } }
