/* ==========================================================================
   Entity pages: project, community, area, developer.

   Class names are deliberately distinct from the article furniture
   (opi-emast not opi-masthead, opi-facts-panel not opi-facts) so nothing here
   can partially override a component defined in another file. That failure
   mode is what put a box round the FAQ and pushed its text into the border.
   ========================================================================== */

.opi-entity{--opi-col:min(100% - var(--space-12),1080px)}
.opi-entity>*{width:var(--opi-col);margin-inline:auto}

/* --- masthead ----------------------------------------------------------- */
.opi-emast{padding:var(--space-12) 0 var(--space-10);border-bottom:1px solid var(--border-1)}
.opi-emast__label{margin:0 0 var(--space-3);font-family:var(--font-mono);font-size:var(--text-overline);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--accent)}
.opi-emast__title{margin:0;font-family:var(--font-display);font-size:var(--text-display-2);line-height:var(--leading-tight);letter-spacing:var(--tracking-display);font-weight:var(--weight-display);color:var(--text-1)}
.opi-emast__dek{margin:var(--space-5) 0 0;max-width:60ch;font-size:var(--text-body-lg);line-height:var(--leading-body);color:var(--text-2)}
.opi-emast__where{margin:var(--space-5) 0 0;font-size:var(--text-body-sm);color:var(--text-3)}
.opi-emast__where a{color:var(--text-2);text-decoration:underline;text-underline-offset:2px;text-decoration-color:var(--border-2)}
.opi-emast__where a:hover{color:var(--link-hover);text-decoration-color:currentColor}
.opi-emast__asof{margin:var(--space-4) 0 0;font-family:var(--font-mono);font-size:var(--text-caption);color:var(--text-3)}
.opi-emast__figure{margin:var(--space-10) 0 0}
.opi-emast__figure img{display:block;width:100%;height:auto}

/* --- key facts ---------------------------------------------------------- */
.opi-facts-panel{margin:var(--space-12) auto}
.opi-facts-panel__title{margin:0 0 var(--space-6);font-family:var(--font-mono);font-size:var(--text-overline);letter-spacing:var(--tracking-caps);text-transform:uppercase;font-weight:var(--weight-semibold);color:var(--text-3)}
.opi-facts-panel__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 var(--space-8);margin:0;border-top:1px solid var(--border-1)}
.opi-kv{padding:var(--space-5) 0;border-bottom:1px solid var(--border-1)}
.opi-kv dt{margin:0 0 var(--space-2);font-size:var(--text-caption);letter-spacing:var(--tracking-slight);text-transform:uppercase;color:var(--text-3)}
.opi-kv dd{margin:0;font-size:var(--text-h4);line-height:1.3;font-weight:var(--weight-semibold);color:var(--text-1)}
.opi-kv dd a{color:var(--link);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--accent)}
.opi-kv dd a:hover{color:var(--link-hover)}
.opi-kv__note{display:block;margin-top:var(--space-2);font-size:var(--text-caption);font-weight:var(--weight-regular);color:var(--text-3)}

/* --- payment plan, unit mix, drive times -------------------------------- */
.opi-terms{margin:var(--space-12) auto}
.opi-terms h2,.opi-conn h2,.opi-rel h2,.opi-prov h2{margin:0 0 var(--space-5);font-family:var(--font-display);font-size:var(--text-h3);line-height:var(--leading-snug);font-weight:var(--weight-bold);color:var(--text-1)}
.opi-terms__table{width:100%;border-collapse:collapse;font-size:var(--text-body-sm)}
.opi-terms__table th{padding:0 var(--space-4) var(--space-3) 0;text-align:left;font-family:var(--font-mono);font-size:var(--text-overline);letter-spacing:var(--tracking-caps);text-transform:uppercase;font-weight:var(--weight-semibold);color:var(--text-3);border-bottom:1px solid var(--text-1)}
.opi-terms__table td{padding:var(--space-4) var(--space-4) var(--space-4) 0;border-bottom:1px solid var(--border-1);color:var(--text-2);vertical-align:top}
.opi-terms__table th:last-child,.opi-terms__table td:last-child{padding-right:0}
.opi-ent-num,th.opi-ent-num{text-align:right;font-variant-numeric:tabular-nums}
td.opi-ent-num{color:var(--text-1);font-weight:var(--weight-medium)}
.opi-terms__note{margin:var(--space-4) 0 0;font-size:var(--text-caption);line-height:1.55;color:var(--text-3)}
.opi-terms__warn{margin:var(--space-4) 0 0;padding:var(--space-3) var(--space-4);background:var(--warning-bg);border-left:3px solid var(--warning);font-size:var(--text-body-sm);color:var(--text-1)}


/* --- related ------------------------------------------------------------ */
.opi-rel{margin:var(--space-12) auto}
.opi-rel__lede{margin:0 0 var(--space-6);max-width:66ch;font-size:var(--text-body-sm);line-height:var(--leading-body);color:var(--text-2)}
.opi-rel__empty{margin:0;font-size:var(--text-body-sm);color:var(--text-3)}
.opi-rel__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1px;margin:0;padding:0;list-style:none;background:var(--border-1);border-block:1px solid var(--border-1)}
.opi-rel__card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-5);background:var(--surface-card)}
.opi-rel__link{font-size:var(--text-body);font-weight:var(--weight-semibold);line-height:1.35;color:var(--text-1);text-decoration:none}
.opi-rel__link:hover{color:var(--link-hover);text-decoration:underline;text-underline-offset:3px}
.opi-rel__meta{font-family:var(--font-mono);font-size:var(--text-caption);color:var(--text-3)}

/* --- provenance --------------------------------------------------------- */
.opi-prov{margin:var(--space-16) auto var(--space-20);padding-top:var(--space-8);border-top:1px solid var(--border-1)}
.opi-prov h2{font-size:var(--text-h4)}
.opi-prov__unverified{margin:0 0 var(--space-8);padding:var(--space-5) var(--space-6);background:var(--surface-sunken);border-left:3px solid var(--warning)}
.opi-prov__unverified p{margin:0 0 var(--space-4);font-size:var(--text-body-sm);line-height:1.6;color:var(--text-2)}
.opi-prov__unverified ul{margin:0;padding-left:var(--space-5)}
.opi-prov__unverified li{margin:0 0 var(--space-2);font-size:var(--text-body-sm);line-height:1.55;color:var(--text-1)}
.opi-prov__sources ol{margin:0;padding-left:var(--space-5)}
.opi-prov__sources li{margin:0 0 var(--space-2);font-size:var(--text-body-sm);color:var(--text-2)}
.opi-prov__sources a{color:var(--link);text-decoration:underline;text-underline-offset:2px;text-decoration-color:var(--border-2)}
.opi-prov__sources a:hover{color:var(--link-hover)}
.opi-prov__stamp{margin:var(--space-6) 0 0;font-family:var(--font-mono);font-size:var(--text-caption);color:var(--text-3)}

/* --- archives ----------------------------------------------------------- */
.opi-arch__head{padding:var(--space-16) 0 var(--space-10);border-bottom:1px solid var(--border-1)}
.opi-arch__head h1{margin:0;font-family:var(--font-display);font-size:var(--text-display-2);line-height:var(--leading-tight);letter-spacing:var(--tracking-display);color:var(--text-1)}
.opi-arch__lede{margin:var(--space-5) 0 0;max-width:60ch;font-size:var(--text-body-lg);line-height:var(--leading-body);color:var(--text-2)}
.opi-arch__empty{margin:var(--space-12) auto;padding:var(--space-8);background:var(--surface-sunken);font-size:var(--text-body);color:var(--text-2)}

@media(max-width:900px){
  .opi-entity{--opi-col:min(100% - var(--space-8),1080px)}
  .opi-emast{padding:var(--space-10) 0 var(--space-8)}
  .opi-emast__title{font-size:var(--text-h1)}
  .opi-facts-panel__grid{grid-template-columns:1fr}
}
@media(max-width:640px){
  .opi-entity{--opi-col:min(100% - var(--space-6),1080px)}
  .opi-rel__grid{grid-template-columns:1fr}
  .opi-terms__table{font-size:var(--text-caption)}
}
/* --- archive grid ------------------------------------------------------- */
.opi-arch__grid{gap:1px!important;margin:var(--space-12) auto var(--space-16);padding:0;list-style:none;background:var(--border-1);border-block:1px solid var(--border-1)}
.opi-arch__grid>li{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-6);background:var(--surface-card)}
.opi-arch__title{margin:0;font-family:var(--font-display);font-size:var(--text-h4);line-height:1.3;font-weight:var(--weight-bold)}
.opi-arch__title a{color:var(--text-1);text-decoration:none}
.opi-arch__title a:hover{color:var(--link-hover);text-decoration:underline;text-underline-offset:3px}
.opi-arch__excerpt{margin:0;font-size:var(--text-body-sm);line-height:1.55;color:var(--text-2)}
.opi-arch__excerpt .wp-block-post-excerpt__more-link{display:inline-block;margin-top:var(--space-2);font-family:var(--font-mono);font-size:var(--text-caption);color:var(--accent)}
.opi-arch__pagination{margin:0 auto var(--space-20);padding-top:var(--space-6);border-top:1px solid var(--border-1);font-family:var(--font-mono);font-size:var(--text-body-sm)}
.opi-arch__pagination a{color:var(--link);text-decoration:none}
.opi-arch__pagination a:hover{color:var(--link-hover);text-decoration:underline}
.opi-arch__pagination .current{font-weight:var(--weight-bold);color:var(--accent)}
@media(max-width:900px){.opi-arch__grid{grid-template-columns:repeat(2,1fr)!important}}
@media(max-width:640px){.opi-arch__grid{grid-template-columns:1fr!important}.opi-arch__head{padding:var(--space-12) 0 var(--space-8)}.opi-arch__head h1{font-size:var(--text-h1)}}
/* --- emirate regulatory context ----------------------------------------- */
.opi-em{margin:var(--space-12) auto;padding:var(--space-8) 0;border-block:1px solid var(--border-1)}
.opi-em__lede{margin:0 0 var(--space-6);max-width:66ch;font-size:var(--text-body);line-height:var(--leading-body);color:var(--text-2)}
.opi-em h3{margin:var(--space-8) 0 var(--space-3);font-family:var(--font-mono);font-size:var(--text-overline);letter-spacing:var(--tracking-caps);text-transform:uppercase;font-weight:var(--weight-semibold);color:var(--accent)}
.opi-em p{max-width:70ch;font-size:var(--text-body-sm);line-height:var(--leading-body);color:var(--text-2)}
.opi-em__caveat{margin:var(--space-8) 0 0;padding:var(--space-5) var(--space-6);background:var(--surface-sunken);border-left:3px solid var(--warning)}
.opi-em__caveat p{margin:0 0 var(--space-3)}
.opi-em__caveat ul{margin:0;padding-left:var(--space-5)}
.opi-em__caveat li{margin:0 0 var(--space-2);font-size:var(--text-body-sm);line-height:1.55;color:var(--text-1)}
.opi-em__src{margin:var(--space-6) 0 0;font-family:var(--font-mono);font-size:var(--text-caption);color:var(--text-3)}
.opi-em__src a{color:var(--text-2);text-decoration:underline;text-underline-offset:2px}
.opi-em__src a:hover{color:var(--link-hover)}