/* The Nuclear Map — Naked Nuclear embeddable artifact */
:root{
  --bg:#0e1116;
  --panel:#161b22;
  --panel-2:#1c232d;
  --ink:#e8edf2;
  --muted:#94a3b8;
  --line:#28313d;
  --accent:#f5c518;      /* nuclear yellow */
  --accent-ink:#0e1116;
  --radius:12px;
  /* type colors */
  --t-construction:#e8751a;
  --t-funding:#2e86de;
  --t-grant:#16a085;
  --t-scholarship:#8e44ad;
  --t-doe-rfp:#c0392b;
  --t-partnership:#27ae60;
  --t-approval:#2980b9;
  --t-restart:#f39c12;
  --t-closure:#7f8c8d;
  --t-funding-round:#1abc9c;
  --t-coal-to-nuclear:#a1673a;
  --t-policy:#5b7089;
  --t-workforce:#e0489b;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg);color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
  overflow-wrap:break-word;
  word-wrap:break-word;
}
.wrap{max-width:1200px;margin:0 auto;padding:16px}

/* Header */
.hdr{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.hdr .brand{display:flex;align-items:center;gap:10px;min-width:0;flex:1 1 260px}
.hdr .brand-txt{min-width:0}
.radmark{width:30px;height:30px;flex:0 0 auto}
.hdr h1{font-size:20px;margin:0;letter-spacing:.3px}
.hdr h1 b{color:var(--accent)}
.hdr .sub{color:var(--muted);font-size:12.5px;margin-top:2px}
.spacer{flex:1}

/* Domain toggle */
.domain-toggle{display:flex;gap:6px;background:var(--panel);border:1px solid var(--line);
  border-radius:999px;padding:4px}
.domain-toggle button{
  border:0;background:transparent;color:var(--muted);font-size:12.5px;font-weight:600;
  padding:6px 12px;border-radius:999px;cursor:pointer}
.domain-toggle button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}

/* View toggle (Map / Timeline / List) */
.view-toggle{display:inline-flex;gap:4px;background:var(--panel);border:1px solid var(--line);
  border-radius:10px;padding:4px;margin:0 0 12px}
.view-toggle button{
  border:0;background:transparent;color:var(--muted);font-size:13px;font-weight:700;
  padding:8px 18px;border-radius:7px;cursor:pointer;transition:.12s;letter-spacing:.2px}
.view-toggle button:hover{color:var(--ink)}
.view-toggle button[aria-selected="true"]{background:var(--accent);color:var(--accent-ink)}

/* Filter chips / legend */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.chip{display:inline-flex;align-items:center;gap:7px;cursor:pointer;user-select:none;
  background:var(--panel);border:1px solid var(--line);color:var(--ink);
  padding:6px 11px;border-radius:999px;font-size:12px;font-weight:600;transition:.12s;
  max-width:100%}
.chip .dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto}
.chip[aria-pressed="false"]{opacity:.38}
.chip:hover{border-color:var(--accent)}
.chip-tools{margin-left:auto;display:flex;gap:8px}
.chip-tools button{background:transparent;border:1px solid var(--line);color:var(--muted);
  border-radius:999px;font-size:11.5px;padding:6px 11px;cursor:pointer}
.chip-tools button:hover{color:var(--ink);border-color:var(--accent)}

/* Views */
.view[hidden]{display:none}
.section-label{font-size:11px;text-transform:uppercase;letter-spacing:1.4px;color:var(--muted);
  margin:0 0 6px 2px;font-weight:700}

/* ---------- Vertical Timeline ---------- */
.vtimeline-scroll{
  position:relative;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  max-height:70vh;min-height:320px;overflow-y:auto;overflow-x:hidden;
  scrollbar-width:thin;scrollbar-color:var(--line) transparent;
  outline:none;
}
.vtimeline-scroll::-webkit-scrollbar{width:9px}
.vtimeline-scroll::-webkit-scrollbar-thumb{background:var(--line);border-radius:9px}
.vtimeline-inner{position:relative;padding:0 14px 18px}
/* the vertical line */
.vtimeline-inner::before{
  content:"";position:absolute;top:0;bottom:0;left:23px;width:2px;
  background:var(--line);border-radius:2px;
}
/* sticky year header */
.vt-year{
  position:sticky;top:0;z-index:3;
  background:var(--panel);
  margin:0 -14px;padding:12px 14px 8px;
  border-bottom:1px solid var(--line);
}
.vt-year .yr{
  display:inline-block;font-size:15px;font-weight:800;color:var(--accent);
  letter-spacing:.5px;background:var(--panel-2);border:1px solid var(--line);
  border-radius:999px;padding:3px 14px;
}
.vt-year .yr-count{color:var(--muted);font-size:11.5px;font-weight:600;margin-left:8px}
/* entry */
.vt-entry{
  position:relative;margin:0 0 10px 42px;padding:10px 12px;
  background:var(--panel-2);border:1px solid var(--line);border-left-width:4px;
  border-radius:9px;cursor:pointer;transition:.12s;max-width:100%;
}
.vt-entry:first-of-type{margin-top:12px}
.vt-entry:hover{border-color:var(--accent);background:#222b36}
.vt-entry .vt-dot{
  position:absolute;left:-27px;top:14px;width:14px;height:14px;border-radius:50%;
  border:3px solid var(--panel);box-shadow:0 0 0 1px var(--line);
}
.vt-entry .vt-title{font-size:13.5px;font-weight:700;line-height:1.3;margin:0 0 6px;
  overflow-wrap:break-word;word-break:break-word}
.vt-entry .vt-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.vt-entry .vt-date{color:var(--muted);font-size:11.5px}
.vt-badge{display:inline-block;font-size:10px;font-weight:800;text-transform:uppercase;
  letter-spacing:.6px;color:#fff;padding:2px 8px;border-radius:999px;max-width:100%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- List view ---------- */
.list-box{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden}
.list-row{
  display:flex;align-items:center;gap:12px;padding:12px 14px;cursor:pointer;
  border-bottom:1px solid var(--line);transition:.12s;
}
.list-row:last-child{border-bottom:0}
.list-row:hover{background:var(--panel-2)}
.list-row .lr-date{flex:0 0 92px;color:var(--muted);font-size:11.5px;font-weight:600;line-height:1.3}
.list-row .lr-main{flex:1 1 auto;min-width:0}
.list-row .lr-title{font-size:13.5px;font-weight:700;line-height:1.3;
  overflow-wrap:break-word;word-break:break-word}
.list-row .lr-org{color:var(--muted);font-size:11.5px;margin-top:2px;
  overflow-wrap:break-word;word-break:break-word}
.list-row .lr-badge{flex:0 0 auto}

/* Map */
.map-wrap{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:10px 10px 4px;position:relative;
  display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}
#usmap{flex:1 1 340px;min-width:0;width:auto;height:auto;display:block}
.state{fill:#232c37;stroke:#0e1116;stroke-width:1;transition:fill .12s}
.state.has{fill:#2c3947;cursor:pointer}
.state.has:hover{fill:#3a4a5c}
.state.selected{fill:#4a3d12;stroke:var(--accent);stroke-width:1.5}
.inset-label{fill:var(--muted);font-size:11px;font-weight:700}
.marker{cursor:pointer;stroke:#0e1116;stroke-width:1.2}
.marker:hover{stroke:#fff;stroke-width:2}
.marker-count{fill:#fff;font-size:10px;font-weight:800;text-anchor:middle;pointer-events:none;dominant-baseline:central}
.national-tray{position:sticky;top:12px;flex:0 0 210px;align-self:flex-start;
  max-height:calc(100vh - 24px);overflow:auto;background:rgba(22,27,34,.92);
  border:1px solid var(--line);border-radius:10px;padding:8px 10px;max-width:210px}
.national-tray h4{margin:0 0 6px;font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}
.national-tray .nat-item{display:flex;align-items:flex-start;gap:6px;cursor:pointer;font-size:11.5px;
  padding:3px 4px;border-radius:6px;line-height:1.3}
.national-tray .nat-item:hover{background:var(--panel-2)}
.national-tray .nat-item .dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto;margin-top:3px}
.national-tray .nat-item span:last-child{min-width:0;overflow-wrap:break-word;word-break:break-word}
.empty-note{color:var(--muted);font-size:13px;padding:24px 14px;text-align:center}
.map-wrap .empty-note{flex:1 1 100%}

/* Detail modal */
.modal-back{position:fixed;inset:0;background:rgba(4,7,11,.66);display:none;
  align-items:center;justify-content:center;padding:18px;z-index:50}
.modal-back.open{display:flex}
.modal{background:var(--panel);border:1px solid var(--line);border-radius:16px;
  max-width:520px;width:100%;max-height:88vh;overflow:auto;border-top-width:5px}
.modal-inner{padding:22px}
.modal .m-type{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:800;
  text-transform:uppercase;letter-spacing:1px;padding:4px 10px;border-radius:999px;color:#fff;
  max-width:100%;overflow-wrap:break-word}
.modal h2{font-size:20px;margin:12px 0 4px;line-height:1.25;
  overflow-wrap:break-word;word-break:break-word}
.modal .m-meta{color:var(--muted);font-size:13px;margin-bottom:14px;
  overflow-wrap:break-word;word-break:break-word}
.modal .m-grid{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;font-size:13.5px;
  padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:14px}
.modal .m-grid dt{color:var(--muted);font-weight:600}
.modal .m-grid dd{margin:0;min-width:0;overflow-wrap:break-word;word-break:break-word}
.modal .m-summary{font-size:14px;line-height:1.55;color:#d4dbe3;margin-bottom:18px;
  overflow-wrap:break-word;word-break:break-word}
.badge-status{display:inline-block;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;
  background:var(--panel-2);border:1px solid var(--line);color:var(--ink)}
.m-source{display:inline-flex;align-items:center;gap:8px;background:var(--accent);color:var(--accent-ink);
  font-weight:800;font-size:13.5px;text-decoration:none;padding:11px 16px;border-radius:10px;
  max-width:100%;overflow-wrap:break-word}
.m-source:hover{filter:brightness(1.05)}
.m-close{position:sticky;top:0;float:right;background:transparent;border:0;color:var(--muted);
  font-size:24px;line-height:1;cursor:pointer;padding:4px 6px}
.m-close:hover{color:var(--ink)}
.pill-partner{display:inline-block;background:var(--panel-2);border:1px solid var(--line);
  border-radius:999px;padding:2px 9px;font-size:12px;margin:0 4px 4px 0;
  max-width:100%;overflow-wrap:break-word}

.foot{color:var(--muted);font-size:11px;text-align:center;margin:16px 0 4px;line-height:1.9}
.foot a{color:var(--muted)}
.correction-link{color:var(--accent);text-decoration:none;font-weight:700;font-size:12px}
.correction-link:hover{text-decoration:underline}

@media (max-width:640px){
  .wrap{padding:10px}
  .hdr h1{font-size:17px}
  .domain-toggle{order:3;width:100%;justify-content:center}
  .view-toggle{width:100%;justify-content:stretch}
  .view-toggle button{flex:1 1 0;padding:9px 6px}
  .modal-inner{padding:16px}
  .map-wrap{gap:8px}
  #usmap{flex:1 1 100%}
  .national-tray{position:static;flex:1 1 100%;max-width:none;margin-top:0;max-height:60vh}
  .vtimeline-scroll{max-height:72vh}
  .list-row{flex-wrap:wrap;gap:6px 12px}
  .list-row .lr-date{flex-basis:100%;order:-1}
}
