/* GridLock — Coordination Leaderboard. Everything is scoped to body.project-discovery / .pd-* */
.project-discovery {
  --pd-ink:#f5f7fa; --pd-muted:#b6cdce; --pd-dim:#94b4b6; --pd-mint:#8bc4b9; --pd-glow:#9ef0da;
  --pd-surface:rgba(12,32,40,.86); --pd-surface-2:rgba(24,56,66,.7); --pd-line:rgba(139,196,185,.26); --pd-line-strong:rgba(139,196,185,.5);
  --pd-desc:#5db8ff; --pd-gpc:#e8a33d;
  --tier-must:#ff6b72; --tier-land:#ff9f5a; --tier-logistics:#f4d35e; --tier-crews:#69d391; --tier-none:#7fa5a8;
  margin:0; min-height:100vh; color:var(--pd-ink); font:500 16px/1.55 "IBM Plex Sans",system-ui,sans-serif; color-scheme:dark; overflow-x:hidden;
}
.project-discovery *, .project-discovery *::before, .project-discovery *::after { box-sizing:border-box; }
.project-discovery [hidden] { display:none !important; }
.project-discovery a { color:var(--pd-glow); text-underline-offset:3px; }
.project-discovery button { font:inherit; color:inherit; }
.project-discovery :focus-visible { outline:2px solid var(--pd-glow); outline-offset:3px; border-radius:4px; }
.pd-sr-only { position:absolute !important; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

/* ambient grid (decorative; never geography) */
.pd-grid { position:fixed; inset:-72px; z-index:-1; pointer-events:none; opacity:.55;
  background-image:linear-gradient(rgba(139,196,185,.09) 1px,transparent 1px),linear-gradient(90deg,rgba(139,196,185,.09) 1px,transparent 1px),radial-gradient(circle,rgba(158,240,218,.5) 1.4px,transparent 2px);
  background-size:72px 72px; -webkit-mask-image:radial-gradient(ellipse at 70% 20%,#000 0,transparent 75%); mask-image:radial-gradient(ellipse at 70% 20%,#000 0,transparent 75%);
  animation:pd-drift 60s linear infinite; }
@keyframes pd-drift { to { transform:translate3d(72px,72px,0); } }
.pd-skip { position:absolute; left:12px; top:-60px; z-index:50; background:var(--pd-glow); color:#0b2b30 !important; padding:10px 14px; border-radius:6px; font-weight:700; text-decoration:none; }
.pd-skip:focus { top:12px; }

/* header */
.pd-header { position:relative; display:flex; align-items:center; justify-content:space-between; gap:22px; min-height:84px; padding:0 5%; border-bottom:1px solid rgba(139,196,185,.16); }
.pd-header::after { content:""; position:absolute; left:0; bottom:-1px; height:2px; width:24%; background:linear-gradient(90deg,transparent,var(--pd-glow),transparent); opacity:.7; animation:pd-signal 9s ease-in-out infinite; }
@keyframes pd-signal { 0%,100% { transform:translateX(0); } 50% { transform:translateX(320%); } }
.pd-brand { display:flex; align-items:center; gap:14px; color:var(--pd-ink) !important; font-size:24px; font-weight:700; letter-spacing:2.2px; text-decoration:none; }
.pd-mark { display:grid; grid-template-columns:repeat(2,1fr); gap:5px; width:34px; height:34px; flex:none; }
.pd-mark i { border:1.5px solid var(--pd-ink); border-radius:2px; } .pd-mark i:last-child { background:var(--pd-ink); }
.pd-nav { display:flex; align-items:center; gap:28px; }
.pd-nav a { color:var(--pd-muted); text-decoration:none; font-size:16px; font-weight:600; padding:30px 0; border-bottom:2px solid transparent; white-space:nowrap; }
.pd-nav a:hover { color:var(--pd-ink); } .pd-nav a[aria-current="page"] { color:var(--pd-ink); border-color:var(--pd-mint); }
.pd-status { display:flex; align-items:center; gap:8px; color:var(--pd-muted); font-size:11px; font-weight:600; white-space:nowrap; }
.pd-status i { width:6px; height:6px; border-radius:50%; background:var(--pd-mint); animation:pd-ping 2.6s ease-out infinite; }
@keyframes pd-ping { 0% { box-shadow:0 0 0 0 rgba(139,196,185,.6); } 100% { box-shadow:0 0 0 9px rgba(139,196,185,0); } }

/* hero */
.pd-main { max-width:1280px; margin:0 auto; padding:22px 5% 90px; }
.pd-eyebrow { margin:0 0 6px; font:500 12px "IBM Plex Mono",monospace; letter-spacing:1.6px; color:var(--pd-mint); }
.pd-hero h1 { margin:0 0 10px; font-family:"IBM Plex Sans",sans-serif; font-size:clamp(40px,5.2vw,72px); line-height:1.12; letter-spacing:-2px; font-weight:700; padding-bottom:4px; color:#bce6de; }
@supports ((background-clip:text) or (-webkit-background-clip:text)) { .pd-hero h1 { background-image:linear-gradient(110deg,#9edfff 0%,#b6a4ff 18%,#f5a6d5 36%,#ffd49b 54%,#bce99e 72%,#91e4d6 86%,#9edfff 100%); background-size:250% 100%; -webkit-background-clip:text; background-clip:text; color:transparent; animation:pd-flow 7s linear infinite; } }
@keyframes pd-flow { from { background-position:0% 50%; } to { background-position:166.6667% 50%; } }
.pd-lede { max-width:52em; margin:0 0 18px; color:var(--pd-muted); font-size:17px; }
.pd-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin:0 0 10px; }
.pd-stats > div { display:flex; flex-direction:column; padding:10px 16px; border:1px solid var(--pd-line); border-radius:10px; background:linear-gradient(160deg,var(--pd-surface-2),var(--pd-surface)); }
.pd-stats dt { order:2; color:var(--pd-muted); font-size:13px; font-weight:600; }
.pd-stats dd { order:1; margin:0; font:500 clamp(26px,2.4vw,32px)/1.15 "IBM Plex Mono",monospace; }
.pd-help { margin:8px 2px 0; color:var(--pd-dim); font-size:13px; line-height:1.5; }
.pd-scopenote { margin:0 0 4px; }

/* shared bits */
.pd-btn { min-height:38px; padding:6px 14px; border-radius:8px; border:1px solid var(--pd-line-strong); background:var(--pd-mint); color:#0e343b; font-weight:700; font-size:14px; cursor:pointer; transition:transform .15s, background .15s; }
.pd-btn:hover:not(:disabled) { background:#b3d8cf; transform:translateY(-1px); }
.pd-btn:disabled { opacity:.5; cursor:default; }
.pd-btn-ghost { background:transparent; color:var(--pd-glow); } .pd-btn-ghost:hover:not(:disabled) { background:rgba(139,196,185,.16); }
.pd-chip { display:inline-flex; align-items:center; gap:5px; padding:2px 9px; border:1px solid var(--pd-line-strong); border-radius:999px; font:500 12px/1.6 "IBM Plex Mono",monospace; color:var(--pd-muted); }
.pd-badges { display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }
.pd-geo-verified { color:#c8f1d6; border-color:rgba(105,211,145,.55); background:rgba(89,179,125,.14); }
.pd-geo-estimated { color:#cfeefc; border-color:rgba(93,184,255,.55); border-style:dashed; background:rgba(93,184,255,.1); }
.pd-geo-unresolved { color:#d6dcde; border-color:rgba(190,200,203,.45); border-style:dotted; }
.pd-tier.is-must { background:rgba(229,72,77,.16); border-color:rgba(255,107,114,.55); color:#ffd3d5; }
.pd-tier.is-land { background:rgba(242,153,74,.16); border-color:rgba(255,159,90,.55); color:#ffddc2; }
.pd-tier.is-logistics { background:rgba(242,201,76,.14); border-color:rgba(244,211,94,.55); color:#fff0ad; }
.pd-tier.is-crews { background:rgba(89,179,125,.16); border-color:rgba(105,211,145,.5); color:#c8f1d6; }
.pd-util { display:inline-flex; align-items:center; gap:6px; font:600 12px "IBM Plex Mono",monospace; letter-spacing:.4px; }
.pd-util.is-desc { color:#9ad3ff; } .pd-util.is-gpc { color:#f2c273; }
.pd-dot { display:inline-block; width:9px; height:9px; }
.pd-dot-desc { border-radius:50%; background:var(--pd-desc); } .pd-dot-gpc { background:var(--pd-gpc); transform:rotate(45deg) scale(.9); }
.pd-state { padding:44px 24px; text-align:center; color:var(--pd-muted); }
.pd-state h3 { margin:6px 0 8px; color:var(--pd-ink); font-size:20px; } .pd-state p { margin:0 auto 16px; max-width:34em; }
.pd-state-icon { font-size:34px; color:var(--pd-glow); }
.pd-spinner { display:inline-block; width:30px; height:30px; border:3px solid rgba(139,196,185,.3); border-top-color:var(--pd-glow); border-radius:50%; animation:pd-spin .9s linear infinite; }
@keyframes pd-spin { to { transform:rotate(360deg); } }

/* board head */
.pd-board { margin-top:18px; border:1px solid var(--pd-line-strong); border-radius:14px; background:linear-gradient(180deg,rgba(18,46,56,.9),rgba(10,28,36,.9)); box-shadow:0 24px 60px -30px rgba(0,0,0,.8); }
.pd-board:focus { outline:none; }
.pd-board-head { padding:20px 22px 14px; border-bottom:1px solid var(--pd-line); }
.pd-board-head h2 { margin:0 0 12px; font-size:26px; letter-spacing:-.5px; }
.pd-recipe { display:flex; flex-wrap:wrap; align-items:center; gap:8px 6px; margin:0 0 10px; padding:0; list-style:none; counter-reset:step; }
.pd-recipe li { display:inline-flex; align-items:center; gap:6px; counter-increment:step; }
.pd-recipe li span { padding:5px 12px; border:1px solid var(--pd-line-strong); border-radius:999px; background:rgba(139,196,185,.12); font-weight:600; font-size:14px; }
.pd-recipe li:first-child span { background:var(--pd-mint); color:#0e343b; border-color:var(--pd-mint); }
.pd-recipe li:not(:last-child)::after { content:"→"; color:var(--pd-glow); font-weight:700; margin-left:2px; }
.pd-how summary { cursor:pointer; color:var(--pd-glow); font-weight:600; font-size:14px; padding:4px 0; }
.pd-how-body { padding:12px 14px; margin-top:6px; border:1px solid var(--pd-line); border-radius:10px; background:rgba(8,24,30,.6); font-size:14px; }
.pd-how-body ol { margin:0 0 10px; padding-left:22px; } .pd-how-body li { margin:0 0 8px; } .pd-how-body li span { display:block; color:var(--pd-muted); } .pd-how-body p { margin:0; color:var(--pd-muted); }
.pd-boardbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px 16px; margin-top:8px; }
.pd-legend { display:flex; flex-wrap:wrap; gap:6px; margin:0; padding:0; list-style:none; }
.pd-legend a { text-decoration:none; } .pd-legend a:hover { filter:brightness(1.2); }
.pd-tools { display:flex; flex-wrap:wrap; align-items:center; gap:8px 10px; }
.pd-count { font:500 13px "IBM Plex Mono",monospace; color:var(--pd-muted); }
.pd-note-bar { display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; padding:10px 22px; background:rgba(244,211,94,.1); border-bottom:1px solid rgba(244,211,94,.3); color:#f7e7a3; font-size:14px; }
.pd-note-bar .pd-btn { min-height:32px; padding:3px 12px; }
#pd-board-body { padding:6px 22px 22px; }

/* tier groups */
.pd-group { margin:20px 0 0; scroll-margin-top:12px; }
.pd-group-head { display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 12px; margin:0 0 12px; font-size:18px; font-weight:700; }
.pd-group-head::before { content:""; align-self:center; width:12px; height:12px; border-radius:50%; background:var(--tier-none); }
.pd-group.is-must .pd-group-head::before { background:var(--tier-must); box-shadow:0 0 14px var(--tier-must); }
.pd-group.is-land .pd-group-head::before { background:var(--tier-land); box-shadow:0 0 14px var(--tier-land); }
.pd-group.is-logistics .pd-group-head::before { background:var(--tier-logistics); box-shadow:0 0 14px var(--tier-logistics); }
.pd-group.is-crews .pd-group-head::before { background:var(--tier-crews); box-shadow:0 0 14px var(--tier-crews); }
.pd-group-head small { color:var(--pd-muted); font:500 13px "IBM Plex Mono",monospace; }
.pd-group-meaning { flex-basis:100%; margin:0; color:var(--pd-muted); font-size:14px; font-weight:500; }
.pd-lb { list-style:none; margin:0; padding:0; display:grid; gap:16px; }

/* one opportunity: DESC project <-> Georgia Power project */
.pd-pair { --tier:var(--tier-none); position:relative; padding:16px 18px 14px 22px; border:1px solid var(--pd-line); border-left:6px solid var(--tier); border-radius:14px; background:rgba(20,48,58,.6); scroll-margin-top:14px; animation:pd-rise .45s ease both; }
.pd-pair.is-must { --tier:var(--tier-must); } .pd-pair.is-land { --tier:var(--tier-land); } .pd-pair.is-logistics { --tier:var(--tier-logistics); } .pd-pair.is-crews { --tier:var(--tier-crews); }
.pd-pair:hover { border-color:var(--pd-line-strong); border-left-color:var(--tier); }
.pd-pair.is-focus { box-shadow:0 0 0 2px var(--pd-glow),0 14px 36px -16px rgba(158,240,218,.55); background:rgba(40,88,100,.55); }
@keyframes pd-rise { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:none; } }
.pd-pair-head { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; margin-bottom:14px; }
.pd-rank { display:grid; place-items:center; width:46px; height:46px; flex:none; border-radius:50%; border:2px solid var(--tier); background:rgba(8,24,30,.75); font:600 19px "IBM Plex Mono",monospace; }
.pd-pair-key { font-weight:700; font-size:17px; } .pd-pair-sub { color:var(--pd-muted); font-size:14px; }
.pd-toggle { margin-left:auto; }
.pd-pair-body { display:grid; grid-template-columns:minmax(0,1fr) minmax(170px,230px) minmax(0,1fr); align-items:stretch; gap:14px; }
.pd-proj { min-width:0; padding:12px 14px; border:1px solid var(--pd-line); border-top:3px solid var(--pd-desc); border-radius:10px; background:rgba(10,28,36,.7); }
.pd-proj.is-gpc { border-top-color:var(--pd-gpc); }
.pd-proj.is-focus { border-color:var(--pd-glow); box-shadow:0 0 0 1px var(--pd-glow); }
.pd-proj-name { display:block; margin:6px 0 4px; font-size:17px; font-weight:600; line-height:1.4; color:var(--pd-ink) !important; text-decoration:none; overflow-wrap:anywhere; }
.pd-proj-name:hover { text-decoration:underline; }
.pd-proj-meta { display:block; color:var(--pd-muted); font-size:14px; }
.pd-link { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; color:var(--tier); text-align:center; min-width:0; }
.pd-link-km { font:600 18px "IBM Plex Mono",monospace; color:var(--pd-ink); }
.pd-link-tier { font-size:13px; font-weight:700; }
.pd-arrow { display:block; width:100%; height:26px; overflow:visible; }
.pd-arrow-v { display:none; }
.pd-arrow line { stroke:currentColor; stroke-width:3; stroke-linecap:round; stroke-dasharray:7 8; animation:pd-dash 1.1s linear infinite; }
.pd-arrow path { fill:currentColor; }
@keyframes pd-dash { to { stroke-dashoffset:-30; } }
.pd-pair.is-must .pd-arrow line { stroke-dasharray:none; animation:none; stroke-width:4; }
.pd-pair-desc { margin:14px 2px 0; font-size:16px; } .pd-pair-desc span { color:var(--pd-muted); }
.pd-signals { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:12px; }
.pd-signal { padding:10px 12px; border:1px solid var(--pd-line); border-radius:10px; background:rgba(8,24,30,.5); min-width:0; }
.pd-signal-title { margin:0 0 6px; font:600 11px "IBM Plex Mono",monospace; letter-spacing:1.2px; color:var(--pd-mint); }
.pd-signal svg { display:block; width:100%; height:auto; }
.pd-signal-cap { margin:6px 0 0; color:var(--pd-muted); font-size:13px; line-height:1.4; }
.pd-zone { fill:rgba(255,255,255,.08); } .pd-zone.is-must { fill:var(--tier-must); } .pd-zone.is-land { fill:var(--tier-land); } .pd-zone.is-logistics { fill:var(--tier-logistics); } .pd-zone.is-crews { fill:var(--tier-crews); }
.pd-zone { opacity:.3; } .pd-zone.on { opacity:.95; }
.pd-marker { fill:#fff; stroke:#0b2b30; stroke-width:2; }
.pd-bar-desc { fill:var(--pd-desc); } .pd-bar-gpc { fill:var(--pd-gpc); }
.pd-bar-overlap { fill:rgba(158,240,218,.28); stroke:var(--pd-glow); stroke-width:1; stroke-dasharray:3 2; }
.pd-scale { display:flex; justify-content:space-between; margin:4px 0 0; font:500 11px "IBM Plex Mono",monospace; color:var(--pd-dim); }
.pd-why { margin:12px 2px 0; padding-top:10px; border-top:1px dashed var(--pd-line); color:var(--pd-muted); font-size:13px; }

/* details (built on demand) */
.pd-details { margin-top:14px; padding-top:14px; border-top:1px solid var(--pd-line); }
.pd-details h3 { margin:0 0 10px; font:600 12px "IBM Plex Mono",monospace; letter-spacing:1.3px; color:var(--pd-mint); }
.pd-analysis { display:grid; gap:10px; margin-bottom:16px; }
.pd-note { margin:0; padding:10px 14px; border-left:3px solid var(--pd-mint); border-radius:0 8px 8px 0; background:rgba(139,196,185,.1); font-size:15px; }
.pd-impact { display:grid; gap:9px; padding:16px; border:1px solid rgba(139,196,185,.42); border-radius:12px; background:linear-gradient(145deg,rgba(139,196,185,.1),rgba(8,24,30,.55)); font-size:15px; }
.pd-impact-kicker { color:var(--pd-mint); font:600 11px "IBM Plex Mono",monospace; letter-spacing:1.2px; }
.pd-impact-value { display:grid; gap:3px; padding:12px 14px; border-left:3px solid var(--pd-glow); border-radius:0 8px 8px 0; background:rgba(8,24,30,.48); }
.pd-impact-rate { font-size:24px; font-weight:700; line-height:1.2; color:var(--pd-ink); }
.pd-impact-range { color:var(--pd-muted); font-size:16px; font-weight:600; line-height:1.3; }
.pd-impact-base { font-weight:600; }
.pd-impact-disclaimer, .pd-impact-caution, .pd-impact p { margin:0; }
.pd-impact-norm { color:var(--pd-muted); }
.pd-impact-disclaimer, .pd-impact-caution { padding:10px 12px; border-radius:8px; }
.pd-impact-caution { border-left:3px solid var(--tier-logistics); background:rgba(244,211,94,.08); }
.pd-impact-disclaimer { background:rgba(139,196,185,.08); color:var(--pd-muted); }
.pd-impact-list { margin:0; padding-left:20px; }
.pd-impact-evidence { color:var(--pd-muted); }
.pd-impact-method summary { cursor:pointer; font-weight:600; }
.pd-impact-method p { margin:8px 0 0; } .pd-impact-formula { font-weight:600; }
.pd-impact-assumption { padding:9px 11px; border:1px dashed var(--pd-line-strong); border-radius:8px; color:var(--pd-muted); }
.pd-impact a { color:inherit; text-decoration:underline; }
.pd-note.is-warn { border-left-color:var(--tier-logistics); background:rgba(244,211,94,.1); }
.pd-detail-cols { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.pd-col { min-width:0; padding:12px 14px; border:1px solid var(--pd-line); border-top:3px solid var(--pd-desc); border-radius:10px; background:rgba(10,28,36,.6); }
.pd-col.is-gpc { border-top-color:var(--pd-gpc); }
.pd-col h4 { margin:0 0 6px; font-size:16px; overflow-wrap:anywhere; }
.pd-col h5 { margin:14px 0 4px; font:600 11px "IBM Plex Mono",monospace; letter-spacing:1.2px; color:var(--pd-mint); }
.pd-facts { display:grid; margin:0; }
.pd-facts > div { display:grid; grid-template-columns:minmax(96px,150px) minmax(0,1fr); gap:2px 12px; padding:6px 0; border-bottom:1px dashed var(--pd-line); font-size:14px; }
.pd-facts > div:last-child { border-bottom:0; }
.pd-facts dt { color:var(--pd-muted); font-weight:600; } .pd-facts dd { margin:0; overflow-wrap:anywhere; }
.pd-missing { color:var(--pd-dim); font-style:italic; }
.pd-limits { margin:0; padding:0; list-style:none; display:grid; gap:6px; font-size:14px; }
.pd-limits li { position:relative; padding-left:22px; }
.pd-limits li::before { content:"!"; position:absolute; left:0; top:2px; width:15px; height:15px; border-radius:50%; background:rgba(244,211,94,.2); color:#f7e7a3; font:700 10px/15px "IBM Plex Mono",monospace; text-align:center; }
.pd-explorer-link { display:inline-block; margin-top:10px; font-size:14px; font-weight:600; }

@media (max-width:1180px) { .pd-status { display:none; } .pd-nav { gap:20px; } }
@media (max-width:900px) {
  .pd-pair-body { grid-template-columns:minmax(0,1fr); gap:6px; }
  .pd-link { flex-direction:row; flex-wrap:wrap; justify-content:center; gap:4px 14px; padding:2px 0; }
  .pd-arrow-h { display:none; } .pd-arrow-v { display:block; width:26px; height:44px; }
  .pd-link-km, .pd-link-tier { flex:none; }
  .pd-signals, .pd-detail-cols { grid-template-columns:minmax(0,1fr); }
  .pd-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:820px) {
  .pd-header { flex-wrap:wrap; padding-top:14px; min-height:0; }
  .pd-nav { order:3; width:100%; flex-wrap:wrap; justify-content:flex-start; gap:0 22px; }
  .pd-nav a { padding:14px 0 10px; font-size:14px; }
}
@media (max-width:620px) {
  .pd-main { padding:24px 12px 96px; } .pd-header { padding:14px 16px 0; } .pd-brand { font-size:20px; }
  .pd-hero { padding:0 4px; } .pd-hero h1 { font-size:clamp(34px,9vw,43px); letter-spacing:-1.3px; } .pd-lede { font-size:16px; }
  .pd-stats { gap:8px; }
  .pd-board-head { padding:16px 14px 12px; } #pd-board-body { padding:4px 10px 16px; }
  .pd-pair { padding:14px 12px 12px 14px; border-left-width:5px; }
  .pd-facts > div { grid-template-columns:minmax(0,1fr); }
  .pd-toggle { margin-left:0; width:100%; }
}
@media (prefers-reduced-motion:reduce) {
  .pd-grid, .pd-header::after, .pd-status i, .pd-hero h1, .pd-pair, .pd-spinner, .pd-arrow line { animation:none !important; }
  .pd-btn:hover:not(:disabled) { transform:none; } .pd-hero h1 { background-position:50% 50%; }
}
@media (forced-colors:active) { .pd-hero h1 { background:none; color:CanvasText; } .pd-pair.is-focus { outline:3px solid Highlight; } }
