:root {
  --ink:#171717; --muted:#5b5b57; --paper:#f7f7f4; --panel:#fff; --line:#d3d3ce;
  --line-dark:#3c3c39; --red:#bc2f27; --red-dark:#96251f; --soft-red:#fff1ef;
  --header:#151515; --max:1120px;
  --sans:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --mono:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:var(--sans); line-height:1.65; }
a { color:inherit; }
a:focus-visible { outline:3px solid var(--red); outline-offset:3px; }
.skip-link { position:fixed; z-index:10; top:-5rem; left:1rem; background:var(--red); color:#fff; padding:.6rem .8rem; font-weight:800; }
.skip-link:focus { top:1rem; }
.site-header { background:var(--header); color:#fff; border-bottom:3px solid var(--red); }
.header-inner { width:min(var(--max),calc(100% - 2rem)); min-height:4.25rem; margin:auto; display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.brand { display:inline-flex; gap:.55rem; align-items:baseline; color:#fff; text-decoration:none; font-weight:900; letter-spacing:.045em; }
.brand::before { content:"//"; color:var(--red); font-family:var(--mono); }
.brand small { color:#b9b9b4; font-size:.66rem; letter-spacing:.1em; }
.return-link { color:#fff; font:700 .75rem var(--mono); text-decoration:none; border:1px solid #777; padding:.5rem .65rem; }
.return-link:hover { background:var(--red); border-color:var(--red); }
.container { width:min(var(--max),calc(100% - 2rem)); margin:auto; }
.case-hero { padding:clamp(3rem,7vw,6.3rem) 0 3rem; background:#fff; border-bottom:1px solid var(--line); }
.kicker,.meta-label { margin:0 0 .65rem; color:var(--red); font:800 .72rem/1.2 var(--mono); letter-spacing:.095em; }
h1,h2,h3,p { margin-top:0; }
h1 { max-width:900px; margin-bottom:1.1rem; font-size:clamp(2.3rem,6.2vw,4.7rem); line-height:.98; letter-spacing:-.058em; }
.summary { max-width:780px; margin:0; color:#3e3e3b; font-size:clamp(1.02rem,2vw,1.22rem); }
.tags { display:flex; flex-wrap:wrap; gap:.4rem; list-style:none; padding:0; margin:1.4rem 0 0; }
.tags li { border:1px solid #aaa; padding:.25rem .45rem; color:#454541; font:700 .68rem var(--mono); }
.meta-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:1px; margin:2rem 0 0; background:var(--line-dark); border:1px solid var(--line-dark); }
.meta-grid div { min-height:83px; padding:.85rem; background:#f1f1ed; }
.meta-grid span { display:block; margin-bottom:.25rem; color:var(--red-dark); font:800 .65rem var(--mono); letter-spacing:.08em; }
.meta-grid strong { display:block; font-size:.84rem; line-height:1.35; }
.case-body { padding:clamp(2.8rem,6vw,5.5rem) 0; }
.body-grid { display:grid; grid-template-columns:minmax(0,1fr) 220px; gap:clamp(2rem,6vw,6rem); }
.article-content { min-width:0; }
.article-content section { margin-bottom:3.2rem; scroll-margin-top:1rem; }
.article-content h2 { padding-top:.55rem; border-top:3px solid var(--ink); margin-bottom:.9rem; font-size:clamp(1.45rem,3vw,2.25rem); line-height:1.1; letter-spacing:-.035em; }
.article-content h3 { margin:1.45rem 0 .45rem; font-size:1.08rem; }
.article-content p { color:#3f3f3b; }
.article-content ul { padding-left:1.2rem; color:#3f3f3b; }
.article-content li + li { margin-top:.45rem; }
.technical-note { margin:1.2rem 0; padding:1rem 1.1rem; border-left:3px solid var(--red); background:var(--soft-red); color:#403b39; }
.technical-note strong { display:block; margin-bottom:.25rem; color:var(--red-dark); font-size:.84rem; }
.section-photo { margin:1.25rem 0; border:1px solid var(--line-dark); background:#fff; }
.section-photo img { display:block; width:100%; max-height:360px; object-fit:contain; padding:.75rem; background:#fff; }
.section-photo figcaption { padding:.75rem .9rem; border-top:1px solid var(--line-dark); color:#4b4b47; font-size:.86rem; }
.section-photo figcaption a { color:var(--red-dark); font-weight:800; text-decoration:none; }
.section-photo figcaption a:hover { text-decoration:underline; }
.diagram { margin:1.4rem 0; padding:1.25rem; background:#1d1d1b; color:#fff; overflow:auto; }
.diagram pre { margin:0; font:700 .76rem/1.55 var(--mono); white-space:pre; }
.diagram .accent { color:#ffaaa4; }
.decision-list { display:grid; gap:1px; margin:1.3rem 0; border:1px solid var(--line-dark); background:var(--line-dark); }
.decision-list div { padding:1rem; background:#fff; }
.decision-list h3 { margin:0 0 .25rem; color:var(--ink); font-size:1rem; }
.decision-list p { margin:0; font-size:.92rem; }
.equipment-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; margin:1.35rem 0; }
.equipment-card { border:1px solid var(--line-dark); background:#fff; overflow:hidden; }
.equipment-card figure { margin:0; height:190px; background:#fff; border-bottom:1px solid var(--line-dark); }
.equipment-card img { display:block; width:100%; height:100%; object-fit:contain; padding:.7rem; }
.equipment-card div { padding:1rem; }
.equipment-card h3 { margin:0 0 .35rem; font-size:1rem; }
.equipment-card p { margin:0 0 .55rem; color:#3f3f3b; font-size:.9rem; }
.equipment-card a { color:var(--red-dark); font:800 .7rem var(--mono); text-decoration:none; }
.equipment-card a:hover { text-decoration:underline; }
.side-index { align-self:start; position:sticky; top:1rem; padding:1rem; border-top:3px solid var(--red); background:#ecece7; }
.side-index h2 { margin:0 0 .6rem; font-size:.78rem; letter-spacing:.08em; }
.side-index a { display:block; padding:.35rem 0; color:#484844; font-size:.82rem; text-decoration:none; }
.side-index a:hover { color:var(--red-dark); text-decoration:underline; }
.confidentiality { margin-top:2rem; padding:1rem 1.1rem; border:1px solid var(--line-dark); font:700 .72rem/1.55 var(--mono); color:#4b4b47; }
.next-case { display:flex; justify-content:space-between; align-items:center; gap:1rem; border-top:1px solid var(--line-dark); padding-top:1.5rem; color:var(--red-dark); font-weight:800; }
.next-case a { text-decoration:none; }
.next-case a:hover { text-decoration:underline; }
.site-footer { background:var(--header); color:#c8c8c4; }
.footer-inner { width:min(var(--max),calc(100% - 2rem)); margin:auto; padding:1.25rem 0; display:flex; justify-content:space-between; gap:1rem; font-size:.78rem; }
.mono { font-family:var(--mono); }
@media (max-width:760px) {
  .meta-grid { grid-template-columns:repeat(2,1fr); }
  .equipment-grid { grid-template-columns:1fr; }
  .body-grid { grid-template-columns:1fr; }
  .side-index { display:none; }
}
@media (max-width:500px) {
  .header-inner,.container,.footer-inner { width:min(calc(100% - 1.25rem),var(--max)); }
  .brand small { display:none; }
  h1 { font-size:clamp(2.25rem,13vw,3.3rem); }
  .meta-grid { grid-template-columns:1fr; }
  .footer-inner { display:block; }
  .footer-inner p + p { margin-top:.4rem; }
  .diagram { padding:1rem; }
}
