/* D365Forge website. Hand-written; the HTML pages are generated by scripts/build-site.py. */
:root { --ink:#1b2430; --muted:#5a6675; --accent:#1f4e79; --accent-2:#2e7d6b; --line:#d9e0e8; --bg:#f6f8fb; --card:#fff; --warn:#8a5a00;
  --brand-blue:#0072bc; --brand-orange:#d47a1c; --brand-orange-text:#b8620f; }
* { box-sizing: border-box; }
body { margin:0; font-family: "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif; color:var(--ink); background:var(--bg); line-height:1.55; }
.wrap { max-width: 1100px; margin: 0 auto; padding: 0 20px; }
a { color: var(--accent); }
code { font-family: Consolas, "Cascadia Mono", Menlo, monospace; font-size: .92em; background:#eef2f7; padding:1px 5px; border-radius:4px; }
pre { background:#0f1b2a; color:#e6edf5; padding:14px 16px; border-radius:8px; overflow-x:auto; }
pre code { background:none; color:inherit; padding:0; }
header.top { background:#fff; color:var(--ink); border-bottom:3px solid var(--brand-orange); }
header.top .wrap { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; padding-top:12px; padding-bottom:12px; }
header.top .brand { display:inline-flex; align-items:center; gap:10px; text-decoration:none; }
header.top .brand img { width:40px; height:40px; display:block; }
header.top .wordmark { font-weight:800; font-size:1.3rem; letter-spacing:.3px; color:var(--brand-blue); }
header.top .wordmark span { color:var(--brand-orange-text); }
header.top nav a { color:var(--accent); text-decoration:none; margin-left:18px; font-size:.95rem; }
header.top nav a.active, header.top nav a:hover { color:var(--brand-blue); text-decoration:underline; text-underline-offset:4px; }
main { padding: 28px 20px 48px; }
footer { border-top:1px solid var(--line); color:var(--muted); font-size:.88rem; padding:18px 0 28px; background:#fff; }
h1 { font-size:2rem; margin:.2em 0 .3em; color:var(--accent); }
h2 { color:var(--accent); margin-top:1.6em; }
.lead { font-size:1.12rem; color:var(--muted); max-width: 820px; }
.hero { background:#fff; border:1px solid var(--line); border-top:5px solid var(--brand-blue); border-radius:14px; padding:30px 34px; margin-bottom:26px;
  display:grid; grid-template-columns:auto minmax(0,1fr); gap:34px; align-items:center; }
.hero-logo h1 { margin:0; line-height:0; }
.hero-logo img { width:302px; max-width:100%; height:auto; }
.hero p { color:var(--ink); font-size:1.15rem; max-width: 760px; margin-top:0; }
.buttons { display:flex; gap:12px; flex-wrap:wrap; margin-top:18px; }
.btn { display:inline-block; padding:10px 18px; border-radius:8px; background:var(--brand-blue); color:#fff; font-weight:600; text-decoration:none; border:1px solid var(--brand-blue); }
.btn.ghost { background:#fff; color:var(--brand-blue); border:1px solid var(--brand-blue); }
.notice { background:#fff7e6; border:1px solid #f0d9a8; color:var(--warn); border-radius:10px; padding:12px 16px; margin: 0 0 22px; }
.cards { display:grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap:16px; }
.card { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:18px 20px; }
.card h3 { margin-top:0; color:var(--accent); }
.stat { font-size:2rem; font-weight:700; color:var(--accent-2); }
.chips { display:flex; flex-wrap:wrap; gap:8px; margin: 8px 0 4px; }
.chip { background:#fff; border:1px solid var(--line); border-radius:999px; padding:4px 12px; font-size:.9rem; text-decoration:none; color:var(--ink); }
.chip small { color:var(--muted); }
.steps { counter-reset: step; list-style:none; padding:0; }
.steps li { counter-increment: step; position:relative; padding-left:44px; margin-bottom:14px; }
.steps li::before { content: counter(step); position:absolute; left:0; top:0; width:30px; height:30px; border-radius:50%; background:var(--accent-2); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:700; }
.authors { display:grid; grid-template-columns: repeat(auto-fit, minmax(360px, 1fr)); gap:18px; }
.author { display:flex; flex-direction:column; }
.author p { line-height:1.6; }
.author-head { display:flex; gap:18px; align-items:center; margin-bottom:6px; }
.author-head img { width:104px; height:104px; border-radius:50%; object-fit:cover; flex:none; border:3px solid #fff; box-shadow:0 0 0 2px var(--line); }
.author-head h3 { margin:0 0 4px; }
.author-head p { margin:0; }
.author .headline { color:var(--muted); font-size:.95rem; line-height:1.4; }
.author .links { margin-top:6px; font-size:.95rem; }
.author .project-role { border-top:1px solid var(--line); padding-top:10px; margin-bottom:4px; margin-top:auto; }
@media (max-width:480px) { .authors { grid-template-columns:1fr; } .author-head { flex-direction:column; align-items:flex-start; } }
.controls { position:sticky; top:0; background:var(--bg); padding:10px 0 6px; z-index:2; }
.controls input[type=search] { width:100%; padding:11px 14px; border:1px solid var(--line); border-radius:8px; font-size:1rem; }
.filters { margin-top:8px; display:flex; gap:8px; flex-wrap:wrap; }
.filters button { border:1px solid var(--line); background:#fff; border-radius:999px; padding:5px 14px; cursor:pointer; }
.filters button.on { background:var(--accent); color:#fff; border-color:var(--accent); }
#count { color:var(--muted); font-size:.9rem; }
.dept { background:#fff; border:1px solid var(--line); border-left:5px solid var(--accent); border-radius:10px; padding:6px 20px 12px; margin:16px 0; }
.dept.layer-delivery { border-left-color:#4a7fb0; }
.dept.layer-reviewer { border-left-color:#a14b4b; }
.dept.layer-tailoring { border-left-color:var(--accent-2); }
.dept h2 { margin-top:.6em; }
.meta { color:var(--muted); font-size:.88rem; }
.badge { font-size:.72rem; vertical-align:middle; padding:2px 8px; border-radius:999px; background:#f6e3e3; color:#8a2f2f; margin-left:6px; }
ul.skills { list-style:none; padding:0; display:grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap:10px; }
ul.skills li { border:1px solid var(--line); border-radius:8px; padding:10px 12px; background:#fbfcfe; }
ul.skills li p { margin:.35em 0 0; font-size:.92rem; }
.status { float:right; font-size:.72rem; padding:2px 8px; border-radius:999px; background:#eef2f7; color:var(--muted); }
.status.draft { background:#fff3d6; color:var(--warn); }
.status.reviewed, .status.stable { background:#dff3ec; color:#1d6b55; }
.notice.reviewed { background:#e9f7f1; border-color:#bfe3d4; color:#1d6b55; }
.contributors { display:grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap:16px; margin:18px 0 8px; }
.contributor { display:flex; gap:16px; align-items:center; }
.contributor h3 { margin:0 0 2px; }
.contributor p { margin:0; }
.contributor .headline { color:var(--muted); font-size:.92rem; }
.contributor .links { margin-top:6px; font-size:.95rem; }
.initials { flex:none; width:64px; height:64px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-weight:700; font-size:1.25rem; color:#fff; background:linear-gradient(135deg,var(--brand-blue),var(--brand-orange)); }
table.grid { width:100%; border-collapse:collapse; background:#fff; }
table.grid th, table.grid td { border:1px solid var(--line); padding:8px 10px; text-align:left; vertical-align:top; font-size:.94rem; }
table.grid th { background:#eef2f7; }
form fieldset { background:#fff; border:1px solid var(--line); border-radius:10px; margin:0 0 16px; padding:14px 18px; }
form legend { font-weight:700; color:var(--accent); padding:0 6px; }
form label { display:block; font-size:.9rem; margin:8px 0 2px; color:var(--muted); }
form input[type=text], form input[type=number], form input[type=month], form select, form textarea { width:100%; padding:8px 10px; border:1px solid var(--line); border-radius:6px; font:inherit; }
.row { display:grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap:10px; }
.person { border:1px dashed var(--line); border-radius:8px; padding:10px 12px; margin:10px 0; }
button.action { background:var(--accent); color:#fff; border:0; border-radius:8px; padding:9px 16px; cursor:pointer; font-weight:600; }
button.secondary { background:#fff; color:var(--accent); border:1px solid var(--accent); border-radius:8px; padding:7px 14px; cursor:pointer; }
textarea#yaml { font-family: Consolas, Menlo, monospace; font-size:.85rem; min-height: 320px; }
@media (max-width: 760px) { .hero { padding:24px 20px; grid-template-columns:1fr; gap:14px; justify-items:start; } .hero-logo img { width:240px; } header.top nav a { margin-left:10px; } }
blockquote { margin:1rem 0; padding:12px 16px; border-left:4px solid var(--accent-2); background:#eef5f3; border-radius:0 8px 8px 0; overflow-wrap:anywhere; }
main.wrap { padding-top:28px; padding-bottom:48px; }
blockquote > :first-child { margin-top:0; }
blockquote > :last-child { margin-bottom:0; }
.crumbs { color:var(--muted); font-size:.92rem; margin:0 0 6px; }
dl.facts { display:grid; grid-template-columns:max-content 1fr; gap:6px 18px; background:#fff; border:1px solid var(--line); border-radius:10px; padding:12px 16px; margin:8px 0 22px; font-size:.94rem; }
dl.facts dt { color:var(--muted); font-weight:600; }
dl.facts dd { margin:0; }
dl.facts .status { float:none; }
.callout { background:#eef5f3; border:1px solid #cfe3dc; border-radius:10px; padding:12px 16px; margin:8px 0 22px; }
.table-wrap { overflow-x:auto; margin:12px 0 18px; }
.sources { border-top:1px solid var(--line); margin-top:32px; }
@media (max-width:640px) { dl.facts { grid-template-columns:1fr; } }
.label { display:block; font-size:.9rem; margin:8px 0 2px; color:var(--muted); }
.checks { display:flex; flex-wrap:wrap; gap:4px 14px; }
.checks label { display:inline-flex; align-items:center; gap:4px; margin:2px 0; color:var(--ink); }
form h3 { font-size:1rem; margin:16px 0 4px; color:var(--accent); }
.integration, .legacy, .skill { align-items:end; border-top:1px dashed var(--line); padding-top:6px; margin-top:6px; }
.row-actions { display:flex; align-items:flex-end; }
#status ul { margin:6px 0 0; padding-left:20px; }
.check-problems { background:#fdecec; border:1px solid #f1c2c2; color:#7a1f1f; border-radius:10px; padding:12px 16px; margin:0 0 12px; }
.check-warnings { background:#fff7e6; border:1px solid #f0d9a8; color:var(--warn); border-radius:10px; padding:12px 16px; margin:0 0 12px; }
.check-ok { background:#dff3ec; border:1px solid #b9e2d4; color:#1d6b55; border-radius:10px; padding:12px 16px; margin:0 0 12px; }
[hidden] { display:none !important; }
