.case-page { background:var(--paper); }
.case-nav nav > a { font-size:12px; }
.case-hero { position:relative; overflow:hidden; background:var(--ink); color:#fff; padding:52px 0 0; }
.case-hero::before { content:""; position:absolute; inset:0; background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px); background-size:44px 44px; mask-image:linear-gradient(to bottom,#000,transparent 94%); }
.case-hero::after { content:""; position:absolute; width:650px; height:650px; right:-220px; top:-250px; border-radius:50%; background:radial-gradient(circle,rgba(29,139,130,.23),rgba(198,106,43,.07) 45%,transparent 70%); }
.case-hero .wrap { position:relative; z-index:2; }
.case-breadcrumb { display:inline-flex; margin-bottom:40px; color:#8da6ae; text-decoration:none; font:500 9px var(--mono); text-transform:uppercase; letter-spacing:.08em; }
.case-breadcrumb:hover { color:#fff; }
.case-hero-layout { display:grid; grid-template-columns:1.2fr .8fr; gap:70px; align-items:end; }
.case-hero .eyebrow { margin:0 0 12px; color:#E2A63A; font:600 10px var(--mono); text-transform:uppercase; letter-spacing:.14em; }
.case-hero h1 { max-width:850px; margin:0; font:700 clamp(48px,7vw,78px)/.94 var(--display); letter-spacing:-.05em; }
.case-deck { max-width:760px; margin:24px 0 0; color:#b7c8cd; font-size:18px; }
.case-actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:26px; }
.case-facts { border-top:1px solid rgba(255,255,255,.13); }
.case-facts div { display:grid; grid-template-columns:115px 1fr; gap:18px; padding:13px 0; border-bottom:1px solid rgba(255,255,255,.13); }
.case-facts span { color:#78949d; font:500 8px var(--mono); text-transform:uppercase; letter-spacing:.08em; }
.case-facts strong { color:#edf4f5; font-size:11.5px; }
.case-metrics { display:grid; grid-template-columns:repeat(4,1fr); margin-top:62px; border-top:1px solid rgba(255,255,255,.13); }
.case-metrics > div { padding:24px 24px 28px; border-right:1px solid rgba(255,255,255,.11); }
.case-metrics > div:first-child { padding-left:0; }
.case-metrics > div:last-child { border-right:0; }
.case-metrics strong { display:block; color:#fff; font:700 37px/1 var(--display); letter-spacing:-.03em; }
.case-metrics span { display:block; margin-top:7px; color:#c5d3d7; font-size:11px; font-weight:700; }
.case-metrics small { display:block; margin-top:3px; color:#78949d; font:400 8px var(--mono); }
.case-shell { display:grid; grid-template-columns:190px minmax(0,830px); justify-content:center; gap:76px; padding-top:76px; padding-bottom:112px; }
.case-toc { position:sticky; top:104px; align-self:start; }
.case-toc > p { margin:0 0 15px; color:var(--engineering-dark); font:600 9px var(--mono); text-transform:uppercase; letter-spacing:.1em; }
.case-toc nav { display:flex; flex-direction:column; border-left:1px solid var(--line); }
.case-toc a { position:relative; padding:7px 0 7px 16px; color:var(--muted); text-decoration:none; font-size:11.5px; }
.case-toc a::before { content:""; position:absolute; left:-1px; top:7px; bottom:7px; width:2px; background:transparent; }
.case-toc a:hover,.case-toc a.is-current { color:var(--ink); font-weight:700; }
.case-toc a.is-current::before { background:linear-gradient(var(--engineering),var(--analytics)); }
.toc-stack { margin-top:28px; padding-top:18px; border-top:1px solid var(--line); }
.toc-stack span { color:var(--analytics-dark); font:600 8px var(--mono); text-transform:uppercase; letter-spacing:.08em; }
.toc-stack p { margin:8px 0 0; color:var(--muted); font:400 9px/1.8 var(--mono); }
.case-content { min-width:0; }
.case-section { padding:0 0 78px; scroll-margin-top:98px; }
.case-section + .case-section { padding-top:72px; border-top:1px solid var(--line); }
.case-index { margin:0 0 14px; color:var(--engineering-dark); font:600 9px var(--mono); text-transform:uppercase; letter-spacing:.1em; }
.case-section h2 { max-width:780px; margin:0 0 22px; font:700 clamp(34px,5vw,50px)/1.02 var(--display); letter-spacing:-.04em; }
.case-section > p:not(.case-index):not(.case-lead):not(.note) { margin:0 0 18px; color:#43555c; font-size:15.5px; }
.case-lead { margin:0 0 30px; color:#40535a; font-size:18px; line-height:1.75; }
.two-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.info-card { padding:24px; border:1px solid var(--line); border-radius:16px; background:#fff; }
.info-card span { color:var(--analytics-dark); font:600 8px var(--mono); text-transform:uppercase; letter-spacing:.08em; }
.info-card h3 { margin:15px 0 8px; font:700 21px/1.15 var(--display); }
.info-card p { margin:0; color:#4C5E65; font-size:12.5px; }
.callout { margin:26px 0 0; padding:20px 23px; border-left:4px solid var(--bridge); border-radius:0 13px 13px 0; background:var(--paper-2); color:#3C5057; font-size:14px; }
.callout strong { color:var(--ink); }
.arch-card { margin:30px 0 26px; padding:24px; border-radius:18px; background:var(--ink); color:#fff; box-shadow:var(--shadow-soft); }
.arch-head { display:flex; justify-content:space-between; gap:20px; margin-bottom:20px; }
.arch-head span { color:#E2A63A; font:600 8px var(--mono); text-transform:uppercase; letter-spacing:.08em; }
.arch-head strong { font-size:12px; }
.arch-flow { display:grid; grid-template-columns:repeat(5,1fr); gap:10px; align-items:center; }
.arch-node { min-height:110px; display:flex; flex-direction:column; justify-content:center; padding:14px; border:1px solid rgba(255,255,255,.13); border-radius:12px; background:rgba(255,255,255,.04); }
.arch-node b { color:#fff; font-size:11px; }
.arch-node small { margin-top:5px; color:#819ba4; font:400 8px var(--mono); }
.arch-node.eng { border-color:rgba(198,106,43,.44); }
.arch-node.ana { border-color:rgba(29,139,130,.48); }
.arch-arrow { display:none; }
.steps { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-top:22px; }
.steps article { padding:22px; border-top:3px solid var(--analytics); border-radius:4px 4px 14px 14px; background:var(--paper-2); }
.steps article:nth-child(2) { border-top-color:var(--bridge); }
.steps article:nth-child(3) { border-top-color:var(--engineering); }
.steps span { color:var(--engineering-dark); font:600 8px var(--mono); }
.steps h3 { margin:18px 0 7px; font-size:14px; }
.steps p { margin:0; color:#4E5F66; font-size:11.5px; }
.decision-list { display:flex; flex-direction:column; gap:12px; }
.decision { overflow:hidden; border:1px solid var(--line); border-radius:14px; background:#fff; }
.decision-head { display:flex; justify-content:space-between; gap:18px; padding:17px 19px; background:var(--paper-2); border-bottom:1px solid var(--line); }
.decision-head span { color:var(--engineering-dark); font:600 8px var(--mono); text-transform:uppercase; }
.decision-head strong { font-size:11.5px; }
.decision-body { padding:17px 19px; }
.decision-body p { margin:0 0 9px; color:#4E6067; font-size:12px; }
.decision-body p:last-child { margin-bottom:0; }
.results { overflow:hidden; border:1px solid var(--line); border-radius:14px; background:#fff; }
.result-row { display:grid; grid-template-columns:1.45fr .9fr .9fr .8fr; gap:14px; align-items:center; min-height:55px; padding:12px 17px; border-top:1px solid var(--line); }
.result-row:first-child { border-top:0; }
.result-head { min-height:42px; background:var(--paper-2); color:#55666D; font:600 8px var(--mono); text-transform:uppercase; letter-spacing:.07em; }
.result-row strong { font-size:11.5px; }
.result-row span { color:#40535a; font:400 10px var(--mono); }
.result-row em { color:var(--analytics-dark); font-size:11px; font-style:normal; font-weight:800; }
.result-callout { display:grid; grid-template-columns:170px 1fr; gap:22px; align-items:center; margin-top:18px; padding:22px; border-radius:14px; background:var(--ink); color:#fff; }
.result-callout span { color:#78949d; font:500 8px var(--mono); text-transform:uppercase; }
.result-callout strong { display:block; margin-top:4px; font:700 21px var(--display); }
.result-callout p { margin:0; color:#b4c5ca; font-size:12px; }
.ownership { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.ownership article { padding:24px; border:1px solid var(--line); border-radius:15px; background:#fff; }
.ownership h3 { margin:0 0 13px; font:700 21px var(--display); }
.ownership ul { margin:0; padding:0; list-style:none; }
.ownership li { position:relative; padding:8px 0 8px 18px; border-top:1px solid var(--line); color:var(--muted); font-size:11.5px; }
.ownership li::before { content:"✓"; position:absolute; left:0; color:var(--analytics-dark); font-weight:800; }
.figure { margin:28px 0 0; overflow:hidden; border:1px solid var(--line); border-radius:15px; background:#fff; }
.figure img { display:block; width:100%; max-height:500px; object-fit:contain; background:#fff; }
.figure figcaption { padding:12px 15px; border-top:1px solid var(--line); color:#51636A; font-size:10.5px; }
.case-cta { background:var(--ink); color:#fff; padding:76px 0; }
.case-cta .wrap { display:grid; grid-template-columns:1fr auto; gap:44px; align-items:end; }
.case-cta h2 { max-width:760px; margin:0; font:700 clamp(34px,5vw,52px)/1 var(--display); letter-spacing:-.04em; }
.case-cta .actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:9px; }

@media (max-width:980px) {
  .case-hero-layout { grid-template-columns:1fr; gap:38px; }
  .case-facts { max-width:650px; }
  .case-shell { grid-template-columns:1fr; gap:0; }
  .case-toc { position:static; display:grid; grid-template-columns:95px 1fr; gap:14px; margin-bottom:58px; padding:16px; border:1px solid var(--line); border-radius:13px; background:#fff; }
  .case-toc > p { margin:0; }
  .case-toc nav { display:grid; grid-template-columns:repeat(4,1fr); border-left:0; }
  .case-toc a { padding:4px 7px; }
  .case-toc a::before,.toc-stack { display:none; }
  .arch-flow { grid-template-columns:1fr 1fr; }
  .arch-node:last-child { grid-column:1/-1; }
}
@media (max-width:700px) {
  .case-hero { padding-top:36px; }
  .case-breadcrumb { margin-bottom:28px; }
  .case-hero h1 { font-size:clamp(42px,13vw,62px); }
  .case-deck { font-size:16px; }
  .case-metrics { grid-template-columns:1fr 1fr; }
  .case-metrics > div:nth-child(2) { border-right:0; }
  .case-metrics > div:nth-child(-n+2) { border-bottom:1px solid rgba(255,255,255,.11); }
  .case-metrics > div:nth-child(3) { padding-left:0; }
  .case-shell { padding-top:52px; padding-bottom:78px; }
  .case-toc { grid-template-columns:1fr; }
  .case-toc nav { grid-template-columns:1fr 1fr; }
  .case-section { padding-bottom:62px; }
  .case-section + .case-section { padding-top:58px; }
  .two-grid,.ownership,.steps { grid-template-columns:1fr; }
  .arch-flow { grid-template-columns:1fr; }
  .arch-node:last-child { grid-column:auto; }
  .decision-head { flex-direction:column; gap:7px; }
  .result-row { grid-template-columns:1.2fr .8fr .8fr; }
  .result-row > :nth-child(2) { display:none; }
  .result-callout { grid-template-columns:1fr; gap:10px; }
  .case-cta .wrap { grid-template-columns:1fr; }
  .case-cta .actions { justify-content:flex-start; }
}

/* ==========================================================================\n   V4 case-study refinement : MyReport + readable technical detail\n   ========================================================================== */
.case-nav nav > a{font-size:13px}
.case-breadcrumb{font-size:10px}
.case-hero .eyebrow{font-size:10.5px}
.case-deck{font-size:19px;line-height:1.65}
.case-facts span{font-size:9px}.case-facts strong{font-size:12.5px}
.case-metrics span{font-size:12px}.case-metrics small{font-size:9px}
.case-toc>p{font-size:10px}.case-toc a{font-size:12.5px;line-height:1.45}
.case-index{font-size:10px}
.case-section>p:not(.case-index):not(.case-lead):not(.note){font-size:16px;line-height:1.72}
.case-lead{font-size:18.5px;line-height:1.72}
.info-card span{font-size:9px}.info-card p{font-size:13.5px;line-height:1.6}
.arch-head span{font-size:9px}.arch-head strong{font-size:13px}.arch-node b{font-size:12px}.arch-node small{font-size:9px;line-height:1.45}
.steps span{font-size:9px}.steps h3{font-size:15px}.steps p{font-size:12.5px;line-height:1.55}
.decision-head span{font-size:9px}.decision-head strong{font-size:12.5px}.decision-body p{font-size:13px;line-height:1.58}
.result-head{font-size:9px}.result-row strong{font-size:12.5px}.result-row span{font-size:10.5px}.result-row em{font-size:12px}
.ownership li{font-size:12.5px}.figure figcaption{font-size:11.5px}

.myreport-suite{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:28px 0 24px}
.myreport-suite article{min-height:178px;padding:20px;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:0 8px 22px rgba(16,35,46,.035)}
.myreport-suite article>span{color:var(--engineering-dark);font:600 9px var(--mono)}
.myreport-suite h3{margin:28px 0 8px;color:#10232E;font:700 18px/1.05 var(--display)}
.myreport-suite p{margin:0;color:var(--muted);font-size:13px;line-height:1.55}
.myreport-flow{display:flex;align-items:center;justify-content:center;gap:7px;flex-wrap:wrap;margin:24px 0 0;padding:18px;border:1px solid rgba(255,255,255,.08);border-radius:15px;background:#10232E;color:#DDE7EA}
.myreport-flow span{padding:8px 10px;border:1px solid rgba(255,255,255,.13);border-radius:8px;background:rgba(255,255,255,.04);font:600 9px var(--mono)}
.myreport-flow .emphasis{border-color:rgba(226,166,58,.55);color:#F2C878}
.myreport-flow i{color:#E2A63A;font-style:normal}

@media(max-width:820px){.myreport-suite{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.myreport-suite{grid-template-columns:1fr}.myreport-flow{align-items:stretch;flex-direction:column}.myreport-flow i{transform:rotate(90deg);text-align:center}}


/* ==========================================================================\n   V5 case-study refinement : architecture comparison + project management\n   ========================================================================== */
.architecture-compare-detail{margin:30px 0 18px;padding:22px;border-radius:18px;background:#10232E;box-shadow:var(--shadow-soft)}
.architecture-compare-detail .architecture-state{padding:18px}
.architecture-compare-detail .architecture-state-head strong{max-width:240px;font-size:14px}
.architecture-compare-detail .architecture-step{font-size:12.5px;padding:12px 13px}
.architecture-compare-detail .architecture-step small{font-size:10px}
.architecture-delta{margin:0 0 26px;padding:17px 20px;border-left:4px solid var(--engineering);border-radius:0 12px 12px 0;background:#FFF8F0;color:#45575f;font-size:13.5px;line-height:1.6}
.architecture-delta strong{color:#10232E}
.delivery-phases{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;margin:28px 0 14px}
.delivery-phases article{min-height:188px;padding:19px;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:0 7px 20px rgba(16,35,46,.025)}
.delivery-phases span,.management-grid>article>span{color:var(--engineering-dark);font:700 9px var(--mono);text-transform:uppercase;letter-spacing:.07em}
.delivery-phases h3{margin:28px 0 8px;color:#10232E;font:700 17px/1.08 var(--display)}
.delivery-phases p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.58}
.management-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:14px 0 0}
.management-grid>article{padding:21px;border-top:3px solid var(--analytics);border-radius:4px 4px 14px 14px;background:var(--paper-2)}
.management-grid>article:nth-child(2){border-top-color:var(--bridge)}
.management-grid>article:nth-child(3){border-top-color:var(--engineering)}
.management-grid h3{margin:18px 0 8px;color:#10232E;font:700 18px/1.08 var(--display)}
.management-grid p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.58}
.release-flow{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:25px 0 0;padding:17px;border:1px solid var(--line);border-radius:14px;background:#fff}
.release-flow span{padding:8px 10px;border-radius:8px;background:#F3F5F6;color:#31454e;font:700 9px var(--mono);text-align:center}
.release-flow i{color:var(--engineering-dark);font-style:normal}
@media(max-width:980px){.delivery-phases{grid-template-columns:1fr 1fr}.management-grid{grid-template-columns:1fr 1fr}.management-grid>article:last-child{grid-column:1/-1}}
@media(max-width:700px){.architecture-compare-detail{padding:14px}.architecture-compare-detail .architecture-state-head strong{max-width:none}.delivery-phases,.management-grid{grid-template-columns:1fr}.management-grid>article:last-child{grid-column:auto}.release-flow{align-items:stretch;flex-direction:column}.release-flow i{transform:rotate(90deg);text-align:center}}


/* ==========================================================================\n   External validation & recognition : secondary proof after technical results\n   ========================================================================== */
.recognition-block{margin-top:28px;padding-top:24px;border-top:1px solid var(--line)}
.recognition-heading{display:grid;grid-template-columns:190px 1fr;gap:22px;align-items:start;margin-bottom:16px}
.recognition-heading>span{color:var(--engineering-dark);font:700 9px var(--mono);text-transform:uppercase;letter-spacing:.09em}
.recognition-heading h3{margin:0;color:var(--ink);font:700 22px/1.1 var(--display)}
.recognition-heading p{grid-column:2;margin:6px 0 0;color:var(--muted);font-size:12.5px;line-height:1.55}
.recognition-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.recognition-grid article{padding:20px;border:1px solid var(--line);border-radius:14px;background:#fff}
.recognition-grid article:first-child{border-top:3px solid var(--analytics)}
.recognition-grid article:last-child{border-top:3px solid var(--engineering)}
.recognition-grid span{color:var(--muted);font:700 9px var(--mono);text-transform:uppercase;letter-spacing:.07em}
.recognition-grid strong{display:block;margin-top:10px;color:var(--ink);font:700 22px/1.05 var(--display)}
.recognition-grid p{margin:9px 0 0;color:var(--muted);font-size:12.5px;line-height:1.55}
@media(max-width:700px){.recognition-heading{grid-template-columns:1fr;gap:5px}.recognition-heading p{grid-column:auto}.recognition-grid{grid-template-columns:1fr}}


/* V3 QA pass: technical labels and captions should be readable on mobile. */
.case-breadcrumb, .case-hero .eyebrow, .case-facts span,
.case-metrics small, .case-toc>p, .case-index,
.info-card span, .arch-head span, .arch-node small,
.steps span, .decision-head span, .result-head,
.myreport-suite article>span, .myreport-flow span,
.delivery-phases span, .management-grid>article>span,
.release-flow span, .recognition-heading>span, .recognition-grid span,
.result-callout span {
  font-size:12px;
  line-height:1.5;
}
.architecture-compare-detail .architecture-step small { font-size:12px; }
.result-row span, .figure figcaption { font-size:12px; line-height:1.55; }
@media (max-width:700px) {
  .result-row { gap:8px; }
  .myreport-flow span, .release-flow span { white-space:normal; overflow-wrap:anywhere; }
}


/* V4 : guided, accessible architecture comparison; content stays visible without JS. */
.architecture-voice{margin:19px 0 13px!important;color:#455D66!important;font-size:15px!important;line-height:1.7!important;font-style:italic}
.architecture-walkthrough{display:none;margin:22px 0 0;padding:18px 20px;border:1px solid #D9E0E4;border-radius:13px;background:#F8FAFB}
.has-js .architecture-walkthrough{display:block}
.walkthrough-label{margin:0 0 10px;color:#9C5417;font:700 11px/1.5 var(--mono);letter-spacing:.09em}
.walkthrough-controls{display:flex;flex-wrap:wrap;gap:7px}
.walkthrough-button{min-height:40px;padding:9px 12px;border:1px solid #C8D5DB;border-radius:9px;background:#fff;color:#1B3A4B;font:700 13px/1.3 var(--sans);cursor:pointer}
.walkthrough-button:hover{border-color:#B5651D;background:#FFF8F0}
.walkthrough-button.is-active,.walkthrough-button[aria-pressed="true"]{border-color:#1B3A4B;background:#1B3A4B;color:#fff}
.walkthrough-explainer{max-width:780px;min-height:2.5em;margin:12px 0 0;color:#405963;font-size:14px;line-height:1.58}
.has-js .architecture-compare-detail .architecture-state{transition:opacity .18s ease,border-color .18s ease,box-shadow .18s ease}
.has-js .architecture-compare-detail[data-focus="before"] .architecture-state.after,.has-js .architecture-compare-detail[data-focus="after"] .architecture-state.before{opacity:.56}
.has-js .architecture-compare-detail[data-focus="before"] .architecture-state.before,.has-js .architecture-compare-detail[data-focus="after"] .architecture-state.after{border-color:#E2A63A;box-shadow:inset 0 0 0 1px #E2A63A}
@media(max-width:560px){.architecture-walkthrough{padding:15px}.walkthrough-button{flex:1 1 auto}.walkthrough-explainer{min-height:4.3em}}
@media(prefers-reduced-motion:reduce){.has-js .architecture-compare-detail .architecture-state{transition:none}}
/* Non-selected comparison remains readable during guided focus. */
.has-js .architecture-compare-detail[data-focus="before"] .architecture-state.after,.has-js .architecture-compare-detail[data-focus="after"] .architecture-state.before{opacity:.84}

/* V4.4 : BI case: four step analytical workflow and report cards */
.arch-flow-four{grid-template-columns:repeat(4,minmax(0,1fr))}
.arch-flow-four .arch-node{min-width:0}
.bi-report-grid{margin-top:8px}
.bi-report-grid .info-card{border-top:3px solid #B5651D}
.bi-report-grid .info-card:nth-child(even){border-top-color:#1B3A4B}
.case-page .bi-report-grid .info-card span{font-size:12px}
@media(max-width:980px){.arch-flow-four{grid-template-columns:repeat(2,minmax(0,1fr))}.arch-flow-four .arch-node:last-child{grid-column:auto}}
@media(max-width:600px){.arch-flow-four{grid-template-columns:minmax(0,1fr)}.bi-report-grid{grid-template-columns:1fr}}


/* V4.5 : Alshadows: authentic demonstration visuals and responsive Power BI embed */
.bi-subtitle{margin:34px 0 8px;color:var(--ink);font:700 clamp(22px,3vw,30px)/1.18 var(--display)}
.bi-gallery-intro{max-width:760px;margin:0 0 18px!important;color:var(--muted);font-size:14px!important;line-height:1.65}
.bi-screen-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:20px 0 30px}
.bi-screen-shot{display:flex;min-width:0;flex-direction:column;overflow:hidden;margin:0;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:0 8px 22px rgba(16,35,46,.035)}
.bi-screen-shot img{display:block;width:100%;height:240px;object-fit:contain;background:#EAF2FB}
.bi-screen-shot figcaption{display:flex;flex:1;flex-direction:column;gap:7px;padding:15px 17px;border-top:1px solid var(--line)}
.bi-screen-shot figcaption strong{color:var(--ink);font:700 15px/1.3 var(--display)}
.bi-screen-shot figcaption span{color:var(--muted);font-size:12.5px;line-height:1.55}
.bi-live-panel{scroll-margin-top:100px;margin:32px 0 0;padding:26px;border:1px solid var(--line);border-radius:17px;background:#F4F7F8}
.bi-live-panel h3{margin:0 0 11px;color:var(--ink);font:700 clamp(23px,3vw,31px)/1.15 var(--display)}
.bi-live-intro{margin:0 0 16px;color:#405963;font-size:14px;line-height:1.7}
.bi-live-button{display:inline-flex;margin-bottom:20px;max-width:100%;text-decoration:none}
.bi-embed-wrap{width:100%;aspect-ratio:16/10;min-height:370px;overflow:hidden;border:1px solid #D1DCE2;border-radius:12px;background:#E3EDF3}
.bi-embed-wrap iframe{display:block;width:100%;height:100%;border:0;background:#E3EDF3}
.bi-embed-note{margin:14px 0 0;color:#50636B;font-size:12.5px;line-height:1.6}
@media(max-width:700px){.bi-screen-gallery{grid-template-columns:1fr}.bi-screen-shot img{height:auto;max-height:360px}.bi-live-panel{padding:17px}.bi-embed-wrap{min-height:360px;aspect-ratio:3/4}}
@media(max-width:380px){.bi-embed-wrap{min-height:320px}.bi-live-button{font-size:12px}}

/* V5.0 : reviewed ML and cybersecurity case studies */
.requirements-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:24px 0}
.requirements-grid article{padding:19px;border:1px solid var(--line);border-radius:14px;background:#fff}
.requirements-grid span{display:block;color:var(--engineering-dark);font:700 11px/1.45 var(--mono);text-transform:uppercase;letter-spacing:.06em}
.requirements-grid strong{display:block;margin:9px 0 7px;color:var(--ink);font:700 15px/1.3 var(--display)}
.requirements-grid p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.58}
.review-note,.environment-note{margin:22px 0;padding:18px 20px;border-left:4px solid var(--engineering);border-radius:0 12px 12px 0;background:#FFF8F0;color:#405963}
.environment-note{border-left-color:var(--analytics);background:#F2F8F8}
.review-note strong,.environment-note strong{display:block;margin-bottom:6px;color:var(--ink);font:700 14px/1.35 var(--display)}
.review-note p,.environment-note p{margin:0;font-size:13px;line-height:1.65}
.case-list{margin:18px 0 0;padding-left:22px;color:var(--muted)}
.case-list li{margin:0 0 9px;font-size:13.5px;line-height:1.65}
.two-figure-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:24px 0}
.compact-figure{margin:0!important}
.compact-figure img{max-height:360px;object-fit:contain}
.network-diagram{position:relative;display:grid;grid-template-columns:minmax(150px,1fr) 110px minmax(175px,1.15fr) 110px minmax(150px,1fr);align-items:center;gap:9px;margin:27px 0;padding:22px;border:1px solid var(--line);border-radius:16px;background:#F8FAFB}
.network-node{padding:16px 12px;border:1px solid #C8D5DB;border-radius:12px;background:#fff;color:#10232E;font:700 14px/1.3 var(--display);text-align:center;box-shadow:0 5px 14px rgba(16,35,46,.04)}
.network-node small{display:block;margin-top:5px;color:#60747d;font:500 10px/1.45 var(--mono)}
.network-node.attacker{border-top:3px solid var(--analytics)}
.network-node.pivot{border-top:3px solid var(--engineering)}
.network-node.target{border-top:3px solid var(--bridge)}
.network-link{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#50717a;font:700 26px/1 var(--display);text-align:center}
.network-link span{margin-top:5px;color:#6d7f86;font:600 9px/1.3 var(--mono);text-transform:uppercase;letter-spacing:.04em}
.network-link.tunnel{color:#B5651D}
.blocked-link{position:absolute;left:18%;right:18%;bottom:9px;display:flex;justify-content:center;gap:8px;color:#8A3843;font:700 10px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.04em}
.blocked-link span{font-size:14px}
.network-diagram.after{background:#10232E;border-color:#10232E}
.network-diagram.after .network-node{background:#17313E;border-color:rgba(255,255,255,.16);color:#fff;box-shadow:none}
.network-diagram.after .network-node small{color:#AEC0C7}
.network-diagram.after .network-link span{color:#E2C59A}
@media(max-width:900px){.requirements-grid{grid-template-columns:1fr 1fr}.requirements-grid article:last-child{grid-column:1/-1}.network-diagram{grid-template-columns:1fr;gap:10px}.network-link{transform:rotate(90deg);min-height:28px}.network-link span{transform:rotate(-90deg);position:absolute;margin-left:80px}.blocked-link{position:static}.two-figure-grid{grid-template-columns:1fr}}
@media(max-width:620px){.requirements-grid{grid-template-columns:1fr}.requirements-grid article:last-child{grid-column:auto}.review-note,.environment-note{padding:16px}.network-diagram{padding:15px}}


/* ==========================================================================
   V5.1 : differentiated storytelling for Spam, Glass and Ligolo
   ========================================================================== */
.project-summary{margin:26px 0;padding:22px 24px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 8px 22px rgba(16,35,46,.025)}
.project-summary strong{display:block;margin-bottom:8px;color:var(--ink);font:700 18px/1.25 var(--display)}
.project-summary p{margin:0;color:#405963;font-size:14px;line-height:1.7}
.signal-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:24px 0}
.signal-strip article{padding:18px;border:1px solid var(--line);border-radius:14px;background:#fff}
.signal-strip span{display:block;color:var(--engineering-dark);font:700 11px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.06em}
.signal-strip strong{display:block;margin-top:9px;color:var(--ink);font:700 26px/1 var(--display)}
.signal-strip p{margin:7px 0 0;color:var(--muted);font-size:12.5px;line-height:1.55}
.length-compare{display:grid;grid-template-columns:120px 1fr 70px;gap:10px;align-items:center;margin:10px 0}
.length-compare b{font-size:12px}.length-track{height:12px;border-radius:999px;background:#E8EEF0;overflow:hidden}.length-track i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--analytics),var(--engineering))}.length-compare em{font:700 12px var(--mono);font-style:normal;color:var(--ink);text-align:right}
.keyword-cloud{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 0}.keyword-cloud span{padding:7px 10px;border:1px solid #D5E0E4;border-radius:999px;background:#F8FAFB;color:#304952;font:600 11px var(--mono)}
.dual-model{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:26px 0}.model-lane{padding:22px;border:1px solid var(--line);border-radius:16px;background:#fff}.model-lane:first-child{border-top:4px solid var(--analytics)}.model-lane:last-child{border-top:4px solid var(--engineering)}.model-lane>span{color:var(--muted);font:700 11px var(--mono);text-transform:uppercase;letter-spacing:.06em}.model-lane h3{margin:10px 0 8px;font:700 22px/1.1 var(--display)}.model-lane p{margin:0;color:var(--muted);font-size:13px;line-height:1.6}.lane-flow{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:15px}.lane-flow b{padding:7px 9px;border-radius:8px;background:#F3F6F7;font:600 10px var(--mono)}.lane-flow i{font-style:normal;color:var(--engineering-dark)}
.glass-type-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:22px 0}.glass-type{padding:16px;border:1px solid var(--line);border-radius:13px;background:#fff}.glass-type b{display:block;color:var(--engineering-dark);font:700 12px var(--mono)}.glass-type span{display:block;margin-top:6px;color:var(--ink);font-size:13px;font-weight:700}.glass-type small{display:block;margin-top:4px;color:var(--muted);font-size:11px;line-height:1.45}
.chemistry-notes{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:22px 0}.chemistry-notes article{padding:20px;border:1px solid var(--line);border-radius:14px;background:#fff}.chemistry-notes strong{font:700 20px var(--display)}.chemistry-notes p{margin:8px 0 0;color:var(--muted);font-size:13px;line-height:1.6}
.cv-folds{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin:20px 0}.cv-fold{padding:13px 8px;border:1px solid #D5E0E4;border-radius:10px;background:#fff;text-align:center}.cv-fold b{display:block;color:var(--ink);font:700 13px var(--mono)}.cv-fold small{display:block;margin-top:5px;color:var(--muted);font-size:10px}.cv-note{margin-top:10px;color:var(--muted);font-size:12px;line-height:1.6}
.attack-path{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:25px 0}.attack-step{position:relative;padding:18px 15px;border:1px solid var(--line);border-radius:14px;background:#fff}.attack-step:not(:last-child)::after{content:'→';position:absolute;right:-11px;top:50%;z-index:2;transform:translateY(-50%);color:var(--engineering-dark);font-weight:800}.attack-step span{color:var(--engineering-dark);font:700 10px var(--mono)}.attack-step strong{display:block;margin:9px 0 6px;color:var(--ink);font:700 15px/1.2 var(--display)}.attack-step p{margin:0;color:var(--muted);font-size:11.5px;line-height:1.55}
.defense-matrix{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:20px 0}.defense-matrix article{padding:20px;border-left:4px solid var(--analytics);border-radius:0 13px 13px 0;background:#F4F8F8}.defense-matrix article:nth-child(even){border-left-color:var(--engineering);background:#FFF8F0}.defense-matrix h3{margin:0 0 7px;font:700 17px/1.2 var(--display)}.defense-matrix p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.6}
.resources-box{margin-top:26px;padding:20px;border:1px solid var(--line);border-radius:14px;background:#F8FAFB}.resources-box h3{margin:0 0 10px;font:700 18px var(--display)}.resources-box p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.6}.resources-box .case-actions{margin-top:14px}
@media(max-width:900px){.signal-strip,.glass-type-grid{grid-template-columns:1fr 1fr}.attack-path{grid-template-columns:1fr}.attack-step:not(:last-child)::after{content:'↓';right:auto;left:50%;top:auto;bottom:-17px;transform:translateX(-50%)}.cv-folds{grid-template-columns:repeat(5,1fr)}}
@media(max-width:700px){.dual-model,.chemistry-notes,.defense-matrix{grid-template-columns:1fr}.signal-strip,.glass-type-grid{grid-template-columns:1fr}.length-compare{grid-template-columns:90px 1fr 60px}.cv-folds{grid-template-columns:1fr}.cv-fold{display:flex;justify-content:space-between;align-items:center}.case-hero h1{font-size:clamp(40px,12vw,58px)}}

/* V5.2 : network threat detection case study */
.ntd-split{grid-template-columns:repeat(3,minmax(0,1fr))}
.ntd-mobile img{max-width:300px;margin-inline:auto;display:block}
@media (max-width:700px){.ntd-split{grid-template-columns:1fr}}

/* ===== V5.3 : narrative components ===== */
.glossary{margin:24px 0;padding:18px 20px;border:1px solid var(--line);border-left:4px solid var(--copper);border-radius:14px;background:#fff}
.glossary-title{margin:0 0 10px;font:600 11px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--copper-text)}
.glossary dl{margin:0;display:grid;gap:12px}
.glossary dl div{display:grid;grid-template-columns:minmax(150px,210px) 1fr;gap:14px}
.glossary dt{font:700 15px/1.4 var(--display);color:var(--ink)}
.glossary dd{margin:0;color:var(--ink-text);line-height:1.6}
.method-box{margin:22px 0;padding:18px 22px;border-radius:14px;background:var(--paper-2)}
.method-box>strong{display:block;margin-bottom:8px;font:700 15px/1.4 var(--display);color:var(--ink)}
.method-steps{margin:0;padding-left:22px;display:grid;gap:6px;line-height:1.6}
.method-steps li::marker{color:var(--copper);font-weight:700}
.case-transition{margin:30px 0 0;padding-left:16px;border-left:2px solid var(--copper);font-style:italic;color:var(--muted)}
.pipeline{display:grid;gap:12px;margin:22px 0}
.pipe-lane{padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:#fff}
.pipe-name{margin:0 0 8px;font:700 13px/1.4 var(--mono);color:var(--copper-text)}
.pipe-steps{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pipe-steps span{padding:6px 10px;border-radius:8px;background:var(--paper-2);font:500 13px/1.3 var(--sans);color:var(--ink)}
.pipe-steps span+span::before{content:"→";margin-right:8px;color:var(--copper)}
.results.cols-5 .result-row{grid-template-columns:1.5fr repeat(4,1fr)}
.results.cols-4 .result-row{grid-template-columns:1.6fr repeat(3,1fr)}
@media (max-width:700px){.glossary dl div{grid-template-columns:1fr;gap:2px}.results.cols-5 .result-row,.results.cols-4 .result-row{grid-template-columns:1fr 1fr}}

/* Ligolo diagram: the "blocked" label gets its own row instead of overlapping the nodes */
.network-diagram .blocked-link{position:static;grid-column:1/-1;margin-top:4px;padding-top:10px;border-top:1px dashed rgba(138,56,67,.35)}

/* ===== V5.3 : one visual identity per project ===== */
body.theme-spam{--ink:#0B2A2C;--night:#0B2A2C;--copper:#0F9488;--copper-text:#0B7268;--copper-light:#5EEAD4;--engineering:#0F9488;--engineering-dark:#0B7268;--bridge:#0F9488}
body.theme-spam .case-hero::before{background-image:repeating-linear-gradient(135deg,rgba(94,234,212,.06) 0 2px,transparent 2px 22px)}
body.theme-spam .case-hero::after{background:radial-gradient(circle,rgba(20,184,166,.32),rgba(94,234,212,.08) 45%,transparent 70%)}
body.theme-glass{--ink:#1B1840;--night:#1B1840;--copper:#6D5CE8;--copper-text:#5340CC;--copper-light:#C4B5FD;--engineering:#6D5CE8;--engineering-dark:#5340CC;--bridge:#6D5CE8}
body.theme-glass .case-hero::before{background-image:radial-gradient(rgba(196,181,253,.16) 1.4px,transparent 1.6px);background-size:26px 26px}
body.theme-glass .case-hero::after{background:radial-gradient(circle,rgba(139,92,246,.34),rgba(196,181,253,.08) 45%,transparent 70%)}
body.theme-ligolo{--ink:#0A1A13;--night:#0A1A13;--copper:#16A34A;--copper-text:#15803D;--copper-light:#86EFAC;--engineering:#16A34A;--engineering-dark:#15803D;--bridge:#16A34A}
body.theme-ligolo .case-hero::before{background-image:linear-gradient(rgba(134,239,172,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(134,239,172,.06) 1px,transparent 1px);background-size:22px 22px}
body.theme-ligolo .case-hero::after{background:radial-gradient(circle,rgba(34,197,94,.26),rgba(134,239,172,.06) 45%,transparent 70%)}
body.theme-ntd{--ink:#121417;--night:#121417;--copper:#E8650A;--copper-text:#B44D00;--copper-light:#FFB27A;--engineering:#E8650A;--engineering-dark:#B44D00;--bridge:#E8650A}
body.theme-ntd .case-hero::after{background:radial-gradient(circle,rgba(255,114,0,.34),rgba(0,150,199,.10) 45%,transparent 70%)}
body[class*="theme-"] .case-hero .eyebrow,body[class*="theme-"] .case-index{color:var(--copper-light)}
body[class*="theme-"] .case-content .case-index{color:var(--copper-text)}
body[class*="theme-"] .button-primary{background:var(--copper);border-color:var(--copper)}
body[class*="theme-"] .case-metrics strong{color:var(--copper-light)}
.ntd-mobile img{max-width:300px;margin-inline:auto;display:block}


/* ===== V5.7 : Big Data Hadoop / Spark case study ===== */
body.theme-bigdata{--ink:#102A43;--night:#0B1F33;--copper:#168AAD;--copper-text:#0B6F8A;--copper-light:#8AD7E8;--engineering:#168AAD;--engineering-dark:#0B6F8A;--bridge:#4C78A8}
body.theme-bigdata .case-hero::before{background-image:linear-gradient(rgba(138,215,232,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(138,215,232,.06) 1px,transparent 1px);background-size:28px 28px}
body.theme-bigdata .case-hero::after{background:radial-gradient(circle,rgba(22,138,173,.30),rgba(76,120,168,.08) 46%,transparent 72%)}
.bigdata-arch{margin:26px 0;padding:20px;border:1px solid #CFE0E8;border-radius:18px;background:#F5FAFC}
.bigdata-platform{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 18px;border-radius:12px;background:#102A43;color:#fff}
.bigdata-platform span{font:700 11px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:#8AD7E8}.bigdata-platform strong{font:700 16px var(--display)}
.bigdata-lanes{display:grid;grid-template-columns:1.35fr 1fr;gap:14px;margin-top:14px}.bigdata-lanes article{padding:20px;border:1px solid #D5E3EA;border-radius:14px;background:#fff}.bigdata-lanes article:first-child{border-top:4px solid #168AAD}.bigdata-lanes article:last-child{border-top:4px solid #4C78A8}.bigdata-lanes article>span{font:700 10px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:#0B6F8A}.bigdata-lanes h3{margin:8px 0 12px;font:700 20px/1.15 var(--display);color:#102A43}.bigdata-lanes p{margin:14px 0 0;color:var(--muted);font-size:12.5px;line-height:1.6}.bigdata-nodes{display:flex;flex-wrap:wrap;gap:7px}.bigdata-nodes b{padding:7px 9px;border-radius:8px;background:#EDF5F8;color:#234B5A;font:600 10px var(--mono)}
.terminal-proof img{background:#121212;object-fit:contain}.theme-bigdata .figure img{max-height:620px;object-fit:contain}.theme-bigdata .compact-figure img{max-height:360px}
@media(max-width:760px){.bigdata-lanes{grid-template-columns:1fr}.bigdata-platform{align-items:flex-start;flex-direction:column}}

.finding-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:24px 0}
.finding-card{padding:20px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(180deg,#fff 0%,#f8fbfc 100%)}
.finding-card span{display:block;color:var(--engineering-dark);font:700 11px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.06em}
.finding-card strong{display:block;margin:8px 0 7px;color:var(--ink);font:700 22px/1.15 var(--display)}
.finding-card p{margin:0;color:var(--muted);font-size:13.5px;line-height:1.6}
.insight-callout{margin:26px 0;padding:22px 24px;border-left:4px solid var(--engineering);background:#f3f8fa;border-radius:0 14px 14px 0;color:#29434e;line-height:1.7}
.insight-callout strong{color:var(--ink)}
@media(max-width:900px){.finding-grid{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.finding-grid{grid-template-columns:1fr}}


/* V6.0 project identities: same system, clearer visual orientation per case study */
body.theme-horti{--ink:#1B252B;--night:#1B252B;--copper:#C46B32;--copper-text:#9E4F22;--copper-light:#F0B787;--engineering:#C46B32;--engineering-dark:#9E4F22;--analytics:#536D76;--analytics-dark:#3B535C;--bridge:#C46B32}
body.theme-horti .case-hero::before{background-image:linear-gradient(90deg,rgba(240,183,135,.075) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px);background-size:58px 100%,100% 28px}
body.theme-horti .case-hero::after{background:radial-gradient(circle,rgba(196,107,50,.34),rgba(83,109,118,.08) 45%,transparent 72%)}
body.theme-food{--ink:#223128;--night:#223128;--copper:#C9971E;--copper-text:#7E5D11;--copper-light:#E6C96A;--engineering:#C9971E;--engineering-dark:#7E5D11;--analytics:#5D7649;--analytics-dark:#3F5633;--bridge:#9A7A28}
body.theme-food .case-hero::before{background-image:radial-gradient(rgba(230,201,106,.14) 1.5px,transparent 1.6px);background-size:31px 31px}
body.theme-food .case-hero::after{background:radial-gradient(ellipse,rgba(93,118,73,.34),rgba(201,151,30,.16) 46%,transparent 72%)}
body.theme-bi{--ink:#142A45;--night:#142A45;--copper:#D69B2D;--copper-text:#A87618;--copper-light:#F1D487;--engineering:#D69B2D;--engineering-dark:#A87618;--analytics:#4077A6;--analytics-dark:#2C5B82;--bridge:#D69B2D}
body.theme-bi .case-hero::before{background-image:linear-gradient(rgba(64,119,166,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(64,119,166,.08) 1px,transparent 1px);background-size:34px 34px}
body.theme-bi .case-hero::after{background:radial-gradient(circle at 70% 35%,rgba(214,155,45,.28),rgba(64,119,166,.13) 48%,transparent 72%)}
body.theme-adversarial{--ink:#2A1734;--night:#2A1734;--copper:#C94C9D;--copper-text:#973474;--copper-light:#F2A7D6;--engineering:#C94C9D;--engineering-dark:#973474;--analytics:#7C5BA6;--analytics-dark:#5D4380;--bridge:#C94C9D}
body.theme-adversarial .case-hero::before{background-image:repeating-linear-gradient(112deg,rgba(242,167,214,.075) 0 2px,transparent 2px 21px)}
body.theme-adversarial .case-hero::after{background:radial-gradient(circle,rgba(201,76,157,.31),rgba(124,91,166,.11) 46%,transparent 72%)}
body.theme-dfir{--ink:#0D2230;--night:#0D2230;--copper:#2AA6B8;--copper-text:#1E7F8D;--copper-light:#8EDBE3;--engineering:#2AA6B8;--engineering-dark:#1E7F8D;--analytics:#517C9B;--analytics-dark:#365F7D;--bridge:#2AA6B8}
body.theme-dfir .case-hero::before{background-image:linear-gradient(135deg,rgba(142,219,227,.06) 25%,transparent 25%),linear-gradient(225deg,rgba(142,219,227,.04) 25%,transparent 25%);background-size:34px 34px}
body.theme-dfir .case-hero::after{background:radial-gradient(circle,rgba(42,166,184,.3),rgba(81,124,155,.1) 46%,transparent 72%)}
body.theme-horti .figure,body.theme-food .figure,body.theme-bi .figure,body.theme-adversarial .figure,body.theme-dfir .figure{border-top:3px solid var(--copper)}
body[class*="theme-"] .case-cta .section-kicker{color:var(--copper-light)!important}

/* ========================================================================
   V7 case-study system: light enterprise shell, project accents as metadata
   ======================================================================== */
.case-page{
  --v7-blue:#1F4E9E;
  --v7-blue-dark:#163A75;
  --v7-bg:#F3F6F8;
  --v7-line:#DCE3E8;
  --v7-ink:#1F2328;
  --v7-muted:#5E6B78;
  background:#fff;
  color:var(--v7-ink);
}
.case-page .site-nav{background:rgba(255,255,255,.95);border-bottom:1px solid var(--v7-line);backdrop-filter:blur(16px)}
.case-page .brand-mark{background:var(--v7-blue);box-shadow:0 7px 18px rgba(31,78,158,.16)}
.case-page .site-nav nav>a{color:#46535E}
.case-page .site-nav nav>a::after{background:var(--v7-blue)}
.case-page .site-nav nav .language-switcher{border-color:var(--v7-line);background:#F7F9FA}
.case-page .site-nav nav .language-switcher a[aria-current="page"]{background:#fff;color:var(--v7-blue-dark);box-shadow:0 1px 5px rgba(31,35,40,.08)}
.case-page .nav-cta{background:var(--v7-blue);color:#fff!important;border-radius:999px}
.case-page .nav-cta:hover{background:var(--v7-blue-dark)}

.case-page .case-hero{padding:54px 0 0;background:linear-gradient(180deg,#fff,#F8FAFC);color:var(--v7-ink);border-top:4px solid var(--copper);border-bottom:1px solid var(--v7-line)}
.case-page .case-hero::before,.case-page .case-hero::after{display:none}
.case-page .case-breadcrumb{margin-bottom:34px;color:#687783;font-size:10px;text-transform:none;letter-spacing:.02em}
.case-page .case-breadcrumb:hover{color:var(--v7-blue)}
.case-page .case-hero-layout{grid-template-columns:minmax(0,1.15fr) minmax(300px,.65fr);gap:62px;align-items:start}
.case-page .case-hero .eyebrow,body[class*="theme-"] .case-hero .eyebrow{display:inline-flex;margin:0 0 14px;padding:6px 9px;border-radius:999px;background:color-mix(in srgb,var(--copper) 11%,white);color:var(--copper-text);font-size:10px;letter-spacing:.08em}
.case-page .case-hero h1{max-width:900px;color:var(--v7-ink);font-size:clamp(44px,6vw,72px);line-height:.98}
.case-page .case-deck{max-width:780px;color:#52616C;font-size:18px;line-height:1.65}
.case-page .case-actions{margin-top:28px}
.case-page .case-actions .button-primary,body[class*="theme-"] .case-actions .button-primary{background:var(--v7-blue);border-color:var(--v7-blue);color:#fff}
.case-page .case-actions .button-primary:hover{background:var(--v7-blue-dark);border-color:var(--v7-blue-dark)}
.case-page .case-actions .button-outline{border-color:#C9D3DA;color:#34424D;background:#fff}
.case-page .case-actions .button-outline:hover{border-color:#AEBCC6;color:var(--v7-blue-dark)}
.case-page .case-facts{overflow:hidden;border:1px solid var(--v7-line);border-radius:14px;background:#fff;box-shadow:0 8px 24px rgba(31,35,40,.035)}
.case-page .case-facts div{grid-template-columns:105px 1fr;padding:13px 15px;border-bottom:1px solid var(--v7-line)}
.case-page .case-facts div:last-child{border-bottom:0}
.case-page .case-facts span{color:#65727C;font-size:9px}
.case-page .case-facts strong{color:#2A3540;font-size:12.5px}
.case-page .case-metrics{margin-top:50px;border:1px solid var(--v7-line);border-bottom:0;border-radius:15px 15px 0 0;background:#fff;box-shadow:0 -4px 24px rgba(31,35,40,.025)}
.case-page .case-metrics>div{padding:22px 24px;border-right:1px solid var(--v7-line)}
.case-page .case-metrics>div:first-child{padding-left:24px}
.case-page .case-metrics strong,body[class*="theme-"] .case-metrics strong{color:var(--v7-blue-dark);font-size:32px}
.case-page .case-metrics span{color:#40505C;font-size:11.5px}
.case-page .case-metrics small{color:#65727C;font-size:9.5px}

.case-page .case-shell{grid-template-columns:205px minmax(0,850px);gap:72px;padding-top:72px;padding-bottom:108px}
.case-page .case-toc{padding:17px;border:1px solid var(--v7-line);border-radius:13px;background:#fff;box-shadow:0 7px 20px rgba(31,35,40,.03)}
.case-page .case-toc>p{color:var(--v7-blue);font-size:9.5px}
.case-page .case-toc nav{border-left:0}
.case-page .case-toc a{padding:7px 10px;border-radius:7px;color:#66747F;font-size:12px}
.case-page .case-toc a::before{display:none}
.case-page .case-toc a:hover,.case-page .case-toc a.is-current{background:#EDF5FC;color:var(--v7-blue-dark);font-weight:700}
.case-page .toc-stack{border-top-color:var(--v7-line)}
.case-page .toc-stack span{color:var(--v7-blue-dark)}
.case-page .toc-stack p{color:#65727C}
.case-page .case-section{padding-bottom:72px}
.case-page .case-section+.case-section{padding-top:66px;border-top:1px solid var(--v7-line)}
.case-page .case-index,body[class*="theme-"] .case-content .case-index{color:var(--v7-blue);font-size:9.5px}
.case-page .case-section h2{color:var(--v7-ink);font-size:clamp(32px,4.4vw,48px)}
.case-page .case-section>p:not(.case-index):not(.case-lead):not(.note){color:#465761}
.case-page .case-lead{color:#465761}
.case-page .info-card,.case-page .decision,.case-page .results,.case-page .ownership article,.case-page .figure,.case-page .project-summary,.case-page .signal-strip article,.case-page .model-lane,.case-page .glass-type,.case-page .chemistry-notes article,.case-page .attack-step,.case-page .pipe-lane,.case-page .finding-card{border-color:var(--v7-line);box-shadow:0 6px 18px rgba(31,35,40,.025)}
.case-page .callout,.case-page .method-box,.case-page .resources-box{background:#F7FAFC}
.case-page .case-transition{border-left-color:var(--v7-blue);color:#687680}
.case-page .result-callout{background:var(--v7-blue-dark)}
.case-page .result-callout span{color:#A9C7DE}
.case-page .result-callout p{color:#D3E2EE}
.case-page .figure img{background:#fff}
.case-page .figure figcaption{background:#FBFCFD;color:#5C6B76}
.case-page .arch-card{background:#0B3555;box-shadow:0 12px 30px rgba(22,58,117,.10)}
.case-page .case-cta{padding:68px 0;background:var(--v7-blue-dark);color:#fff}
.case-page .case-cta .section-kicker,body[class*="theme-"] .case-cta .section-kicker{color:#BFDFFF!important}
.case-page .case-cta .button-primary{background:#fff!important;border-color:#fff!important;color:var(--v7-blue-dark)!important}
.case-page .case-cta .button-outline{border-color:rgba(255,255,255,.35);color:#fff}

@media(max-width:980px){
  .case-page .case-hero-layout{grid-template-columns:1fr;gap:34px}
  .case-page .case-facts{max-width:680px}
  .case-page .case-shell{grid-template-columns:1fr;gap:0}
  .case-page .case-toc{display:block;margin-bottom:44px;overflow-x:auto;white-space:nowrap;scrollbar-width:none}
  .case-page .case-toc::-webkit-scrollbar{display:none}
  .case-page .case-toc>p{display:none}
  .case-page .case-toc nav{display:flex;flex-direction:row;gap:5px}
  .case-page .case-toc a{flex:none}
}
@media(max-width:700px){
  .case-page .case-hero{padding-top:42px}
  .case-page .case-breadcrumb{margin-bottom:25px}
  .case-page .case-hero h1{font-size:clamp(39px,11.8vw,56px)}
  .case-page .case-deck{font-size:16.5px}
  .case-page .case-metrics{grid-template-columns:repeat(2,1fr)}
  .case-page .case-metrics>div{border-bottom:1px solid var(--v7-line)}
  .case-page .case-metrics>div:nth-child(2){border-right:0}
  .case-page .case-metrics>div:nth-child(n+3){border-bottom:0}
  .case-page .case-shell{padding-top:52px;padding-bottom:82px}
  .case-page .case-section{padding-bottom:58px}
  .case-page .case-section+.case-section{padding-top:55px}
  .case-page .case-cta .wrap{grid-template-columns:1fr;align-items:start}
  .case-page .case-cta .actions{justify-content:flex-start}
}
/* V7 contrast refinements for project accent labels on light surfaces. */
body.theme-ligolo{--copper-text:#0C6A2D}
body.theme-bi{--copper-text:#76500F}
body.theme-dfir{--copper-text:#155F69}

/* ========================================================================
   V7.1 case-study refinement: professional feed/card reading experience
   ======================================================================== */
.case-page.case-v71{background:#EEF2F6}
.case-page.case-v71 .case-hero{padding:28px 0 0;background:#EEF2F6;border:0}
.case-page.case-v71 .case-hero>.wrap{
  padding:30px 30px 0;border:1px solid #D8E0E6;border-radius:16px 16px 0 0;
  background:#fff;box-shadow:0 4px 18px rgba(31,35,40,.045);
}
.case-page.case-v71 .case-breadcrumb{margin-bottom:26px}
.case-page.case-v71 .case-hero h1{font-size:clamp(40px,5.4vw,64px)}
.case-page.case-v71 .case-deck{font-size:16.5px}
.case-page.case-v71 .case-facts{border-radius:12px;box-shadow:none}
.case-page.case-v71 .case-metrics{margin-top:38px;border-radius:12px 12px 0 0;box-shadow:none}
.case-page.case-v71 .case-metrics strong{font-size:28px}
.case-page.case-v71 .case-shell{grid-template-columns:190px minmax(0,870px);gap:28px;padding-top:18px;padding-bottom:22px}
.case-page.case-v71 .case-toc{top:84px;border-radius:12px;box-shadow:none}
.case-page.case-v71 .case-content{min-width:0}
.case-page.case-v71 .case-section{
  padding:30px;margin:0 0 14px;border:1px solid #D8E0E6!important;border-radius:14px;background:#fff;
  box-shadow:0 3px 14px rgba(31,35,40,.035);scroll-margin-top:86px;
}
.case-page.case-v71 .case-section+.case-section{padding-top:30px}
.case-page.case-v71 .case-section h2{font-size:clamp(29px,3.8vw,42px);margin-bottom:18px}
.case-page.case-v71 .case-lead{font-size:16.5px;line-height:1.65}
.case-page.case-v71 .info-card,
.case-page.case-v71 .decision,
.case-page.case-v71 .results,
.case-page.case-v71 .ownership article,
.case-page.case-v71 .figure,
.case-page.case-v71 .project-summary,
.case-page.case-v71 .signal-strip article,
.case-page.case-v71 .model-lane,
.case-page.case-v71 .glass-type,
.case-page.case-v71 .chemistry-notes article,
.case-page.case-v71 .attack-step,
.case-page.case-v71 .pipe-lane,
.case-page.case-v71 .finding-card{box-shadow:none;border-radius:11px}
.case-page.case-v71 .case-cta{padding:0 0 30px;background:#EEF2F6}
.case-page.case-v71 .case-cta .wrap{padding:30px;border-radius:16px;background:#163A75}
.case-page.case-v71 .case-cta h2{font-size:clamp(30px,4vw,44px)}

@media(max-width:980px){
  .case-page.case-v71 .case-shell{grid-template-columns:1fr;gap:0;padding-top:14px}
  .case-page.case-v71 .case-toc{top:auto;margin-bottom:14px;border-radius:12px}
}
@media(max-width:700px){
  .case-page.case-v71 .case-hero{padding-top:14px}
  .case-page.case-v71 .case-hero>.wrap{padding:20px 16px 0;border-radius:14px 14px 0 0}
  .case-page.case-v71 .case-hero h1{font-size:clamp(35px,10.5vw,49px)}
  .case-page.case-v71 .case-metrics{margin-top:28px}
  .case-page.case-v71 .case-metrics>div{padding:16px}
  .case-page.case-v71 .case-metrics>div:first-child{padding-left:16px}
  .case-page.case-v71 .case-metrics strong{font-size:23px}
  .case-page.case-v71 .case-section{padding:21px 16px;margin-bottom:12px;border-radius:12px}
  .case-page.case-v71 .case-section+.case-section{padding-top:21px}
  .case-page.case-v71 .case-cta .wrap{padding:24px 18px;border-radius:14px}
}


/* V7.2.1: restrained accents unique to each project, consistent shared shell */
body.theme-horti{--case-accent:#A85F26;--case-tint:#FCF3EB}
body.theme-food{--case-accent:#476A54;--case-tint:#EEF5F0}
body.theme-bi{--case-accent:#866123;--case-tint:#FCF7EC}
body.theme-bigdata{--case-accent:#1664AB;--case-tint:#EAF3FB}
body.theme-ntd{--case-accent:#A9482B;--case-tint:#FAEFEA}
body.theme-adversarial{--case-accent:#6B4E92;--case-tint:#F3EFF9}
body.theme-dfir{--case-accent:#216977;--case-tint:#EDF6F8}
body.theme-spam{--case-accent:#415F92;--case-tint:#EEF3FB}
body.theme-glass{--case-accent:#69528B;--case-tint:#F5F0FA}
body.theme-ligolo{--case-accent:#257449;--case-tint:#EDF7F0}
.case-page.case-v71 .case-hero>.wrap{position:relative;border-top:5px solid var(--case-accent,#1F4E9E);background:linear-gradient(120deg,#fff 0%,#fff 62%,var(--case-tint,#F6F9FC) 100%)}
.case-page.case-v71 .case-hero .eyebrow{background:var(--case-tint,#F5F8FC);color:var(--case-accent,#1F4E9E)}
.case-page.case-v71 .case-metrics strong{color:var(--case-accent,#1F4E9E)}
.case-page.case-v71 .case-toc>p,.case-page.case-v71 .case-index{color:var(--case-accent,#1F4E9E)}
.case-page.case-v71 .case-toc a.is-current{color:var(--case-accent,#1F4E9E);background:var(--case-tint,#EDF5FC)}
.case-page.case-v71 .case-content>.case-section:first-child{border-left:4px solid var(--case-accent,#1F4E9E)!important}
.case-page.case-v71 .case-cta .wrap{border-top:5px solid var(--case-accent,#1F4E9E)}
@media(max-width:700px){.case-page.case-v71 .case-hero>.wrap{border-top-width:4px}}

/* V7.2.2 : consistent, source-grounded technology listing on every case study */
.case-hero .v722-tech-stack{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;margin:0 0 28px;padding:17px 0 0;border-top:1px solid #D8E0E6}
.case-hero .v722-tech-stack h2{flex:0 0 auto;margin:4px 0 0;font:700 11px/1.45 var(--display);color:#23466A;letter-spacing:0}
.case-hero .v722-tech-chips{display:flex;align-items:center;flex-wrap:wrap;gap:7px;flex:1}
.case-hero .v722-tech-chips span{display:inline-block;padding:6px 10px;border:1px solid #CDDCE8;border-radius:999px;background:#F2F7FB;color:#264C69;font:650 10px/1.2 var(--sans)}
.case-hero .v722-tech-stack p{flex:0 0 100%;margin:0;color:#5A6C77;font:400 11px/1.5 var(--sans)}
@media(max-width:620px){.case-hero .v722-tech-stack{padding-top:14px;gap:9px}.case-hero .v722-tech-stack h2{flex-basis:100%}.case-hero .v722-tech-chips span{font-size:10px}}

/* V7.2.3: consistent supplied diagrams and unified blue guided-reading controls. */
.v723-pipeline-figure{margin:26px 0 18px;padding:10px;border:1px solid #c7d9ed;border-radius:14px;background:#edf4fc;overflow:auto}
.v723-pipeline-figure img{display:block;width:100%;height:auto;min-width:660px}
.v723-architecture-image{position:relative;display:block;padding:16px;border:1px solid #c8daf0;border-radius:18px;overflow:hidden;background:#fff;box-shadow:0 6px 24px rgba(31,78,158,.08)}
.v723-architecture-image img{display:block;width:100%;height:auto;border-radius:10px}
.has-js .v723-architecture-image::before,.has-js .v723-architecture-image::after{content:"";position:absolute;z-index:1;top:16px;bottom:16px;width:calc(50% - 16px);pointer-events:none;background:rgba(255,255,255,.6);opacity:0;transition:opacity .22s ease}
.has-js .v723-architecture-image::before{left:16px}
.has-js .v723-architecture-image::after{right:16px}
.has-js .v723-architecture-image[data-focus="before"]::after{opacity:1}
.has-js .v723-architecture-image[data-focus="after"]::before{opacity:1}
.case-page .architecture-walkthrough{background:#f3f8fe;border-color:#c5dcf5}
.case-page .architecture-walkthrough .walkthrough-label{color:#1F4E9E}
.case-page .architecture-walkthrough .walkthrough-button{border:1px solid #b7cee9;color:#174e86;background:#fff}
.case-page .architecture-walkthrough .walkthrough-button:hover{background:#e9f3ff;border-color:#1F4E9E}
.case-page .architecture-walkthrough .walkthrough-button.is-active,.case-page .architecture-walkthrough .walkthrough-button[aria-pressed="true"]{background:#1F4E9E;color:white;border-color:#1F4E9E}
.case-page .architecture-walkthrough .walkthrough-button:focus-visible{outline:3px solid #69b4fc;outline-offset:3px}
@media(max-width:620px){.v723-architecture-image{padding:6px;border-radius:10px}.v723-architecture-image img{border-radius:6px}.has-js .v723-architecture-image::before,.has-js .v723-architecture-image::after{top:6px;bottom:6px;width:calc(50% - 6px)}.has-js .v723-architecture-image::before{left:6px}.has-js .v723-architecture-image::after{right:6px}}
@media(prefers-reduced-motion:reduce){.has-js .v723-architecture-image::before,.has-js .v723-architecture-image::after{transition:none}}

.v723-pipeline-figure,.v723-architecture-image{position:relative}
.v723-pipeline-figure .v723-case-image-zoom,.v723-architecture-image .v723-case-image-zoom{border-radius:12px}


/* V7.2.5 - readable technology chips and clear keyboard focus on case-study pages */
.case-hero .v722-tech-stack h2{font-size:12px;line-height:1.4}
.case-hero .v722-tech-chips span{font-size:11.5px;line-height:1.3;padding:7px 11px}
.case-hero .v722-tech-stack p{font-size:12.5px;line-height:1.6}
.case-page :is(a,button):focus-visible{outline:3px solid #1F4E9E;outline-offset:3px}
@media(max-width:620px){.case-hero .v722-tech-chips span{font-size:11px}}

/* V7.2.7: numbered procedure lists */
.case-steps{margin:8px 0 18px;padding-left:1.4em;display:grid;gap:4px}
.case-steps li{padding-left:.2em}
