/* Shared, source-attributed book and video presentation. */
body .publications { padding:clamp(60px,7vw,100px) 24px; background:#f2f5fa; color:#14263e; }
.publications__inner { max-width:1200px; margin:0 auto; }
.publications__heading { display:flex; justify-content:space-between; align-items:end; gap:28px; margin-bottom:34px; }
body .publications__heading small { color:#2857b8; font-size:11px; font-weight:800; letter-spacing:.12em; }
body .publications__heading h2 { margin:12px 0 0; color:#14263e!important; font-size:clamp(28px,3.3vw,42px); line-height:1.28; letter-spacing:-.04em; word-break:keep-all; }
body .publications__heading p { margin:0; max-width:380px; color:#52637b!important; font-size:15px; line-height:1.85; word-break:keep-all; }
.publications__grid { display:grid; grid-template-columns:minmax(0,1.12fr) minmax(0,1fr); gap:24px; align-items:stretch; }
.publications__book,.publications__channel { min-width:0; border:1px solid #dbe3ee; border-radius:20px; background:#fff; }
.publications__book { display:grid; grid-template-columns:minmax(170px,.95fr) minmax(0,1fr); gap:28px; padding:32px; align-items:center; }
.publications__book-stage { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:34px; align-self:stretch; min-width:0; min-height:340px; padding:22px 10px; border-radius:12px; background:radial-gradient(ellipse at 50% 40%,#fff 10%,#f9edbf 100%); perspective:1100px; text-decoration:none; }
.publications__book-object { position:relative; display:block; width:min(100%,210px); aspect-ratio:300/385; transform-style:preserve-3d; transform:rotateY(-20deg) rotateX(5deg) rotateZ(-3deg); box-shadow:16px 22px 22px -14px #503d4166; }
.publications__book-object img { position:relative; display:block; width:100%; height:auto; border-radius:1px 3px 3px 1px; transform:translateZ(12px); box-shadow:inset 2px 0 5px #0001; }
.publications__book-object::before { content:""; position:absolute; top:0; left:-12px; width:24px; height:100%; background:linear-gradient(90deg,#bc9700,#e9bd10 35%,#f7da5f); transform:rotateY(-90deg); }
.publications__book-object::after { content:""; position:absolute; top:2%; right:-11px; width:24px; height:96%; background:repeating-linear-gradient(90deg,#f9f8f0 0 2px,#c8c5b6 2px 3px); transform:rotateY(90deg); border-block:1px solid #c3bd9b; }
body .publications__stage-caption { color:#665a34!important; font-size:11px; line-height:1.5; letter-spacing:.02em; }
.publications__book-copy { min-width:0; }
body .publications .publications__label { display:block; color:#52637b!important; font-size:10px; font-weight:800; line-height:1.6; letter-spacing:.07em; }
body .publications__book h3 { margin:12px 0; color:#14263e!important; font-size:clamp(24px,2.3vw,30px); line-height:1.22; letter-spacing:-.04em; }
body .publications .publications__authors { color:#344c6b!important; font-size:12px; font-weight:700; }
body .publications__book-copy>p,.publications__channel-copy p,.publications__credits p { margin:0 0 16px; color:#52637b!important; font-size:13px; line-height:1.85; word-break:keep-all; overflow-wrap:anywhere; }
.publications__links { display:flex; flex-wrap:wrap; gap:0 16px; }
body .publications__links a,body .publications__channel-head>a { display:inline-flex; align-items:center; justify-content:space-between; gap:8px; min-height:44px; color:#2455b4!important; font-size:12px; font-weight:800; text-decoration:none; }
.publications__links a:hover,.publications__channel-head>a:hover { text-decoration:underline; text-underline-offset:4px; }
.publications__credits { margin-top:14px; border-top:1px solid #e0e6ef; padding-top:8px; }
body .publications__credits summary { padding:10px 0; color:#334d6e!important; font-size:12px; line-height:1.7; cursor:pointer; }
body .publications__credits p { font-size:12px; margin:6px 0 10px; }
.publications__channel { display:flex; flex-direction:column; padding:24px; }
.publications__channel-head { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:0 12px; margin-bottom:10px; }
.publications__video { display:block; overflow:hidden; border:1px solid #152233; border-radius:10px; background:#07090d; text-decoration:none; }
.publications__video>img { display:block; width:100%; height:auto; aspect-ratio:4/3; object-fit:contain; }
body .publications .publications__video-caption { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:7px 12px; padding:14px 16px; background:#142238; color:#fff!important; font-size:11px; font-weight:600; line-height:1.5; }
body .publications .publications__video-caption span,body .publications .publications__video-caption i { color:#fff!important; }
.publications__video-caption i { display:inline-block; margin-right:6px; font-size:10px; font-style:normal; }
.publications__channel-copy { padding:20px 0 0; }
body .publications__channel-copy h3 { color:#14263e!important; margin:0 0 10px; font-size:21px; line-height:1.35; letter-spacing:-.025em; }
.publications__channel-copy p { margin-bottom:0; }
.publications a:focus-visible,.publications summary:focus-visible { outline:3px solid #2565d8; outline-offset:4px; border-radius:4px; }
.publications--compact .publications__heading { align-items:center; }
.publications--compact .publications__heading h2 { font-size:clamp(26px,3vw,34px); }
.publications--compact .publications__book { grid-template-columns:140px minmax(0,1fr); padding:24px; gap:24px; }
.publications--compact .publications__book-stage { min-height:250px; padding:16px 12px; gap:24px; }
.publications--compact .publications__book-object { max-width:116px; }
.publications--compact .publications__channel { display:grid; grid-template-columns:160px minmax(0,1fr); gap:14px 20px; align-content:center; }
.publications--compact .publications__channel-head { grid-column:1/-1; margin:0; }
.publications--compact .publications__channel-copy { padding:8px 0 0; }
.publications--compact .publications__video-caption { padding:10px; }
.publications--compact .publications__video-caption>span:first-child { display:block; }
.publications--compact .publications__channel-copy h3 { font-size:18px; }
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  .publications__book-object { transition:transform .4s ease,box-shadow .4s ease; }
  .publications__book-stage:hover .publications__book-object { transform:rotateY(-9deg) rotateX(2deg) rotateZ(-1deg) translateY(-4px); box-shadow:20px 30px 28px -14px #503d4155; }
  .publications__video { transition:box-shadow .2s ease; }
  .publications__video:hover { box-shadow:0 0 0 4px #2455b425; }
}
@media(prefers-reduced-motion:reduce) {
  .publications *, .publications *::before, .publications *::after { animation:none!important; transition:none!important; }
  .publications__book-object { transform:rotateY(-12deg); }
}
@media(max-width:1100px) {
  .publications__grid { grid-template-columns:1fr; }
  .publications__book { grid-template-columns:minmax(180px,.7fr) minmax(0,1fr); }
  .publications__channel { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:16px 28px; align-items:center; }
  .publications__channel-head { grid-column:1/-1; margin:0; }
  .publications__channel-copy { padding:0; }
  .publications--compact .publications__grid { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .publications--compact .publications__book { grid-template-columns:100px minmax(0,1fr); gap:18px; padding:20px; }
  .publications--compact .publications__book-stage { padding:12px 6px; }
  .publications--compact .publications__book h3 { font-size:23px; }
  .publications--compact .publications__channel { grid-template-columns:1fr; gap:14px; padding:20px; }
  .publications--compact .publications__video { max-width:230px; }
  .publications--compact .publications__channel-copy { padding:0; }
}
@media(max-width:700px) {
  .publications__heading { display:block; }
  .publications__heading p { margin-top:18px; }
  .publications__heading p br { display:none; }
  .publications--compact .publications__grid { grid-template-columns:1fr; }
  .publications--compact .publications__book { grid-template-columns:130px minmax(0,1fr); }
  .publications--compact .publications__channel { grid-template-columns:140px minmax(0,1fr); }
}
@media(max-width:500px) {
  body .publications { padding:52px 20px; }
  .publications__book { grid-template-columns:1fr; padding:24px; gap:24px; }
  .publications__book-stage { min-height:310px; }
  .publications__book-object { width:180px; max-width:100%; }
  .publications__book-copy h3 br { display:none; }
  .publications__channel { display:flex; padding:20px; gap:0; align-items:stretch; }
  .publications__channel-head { margin-bottom:10px; }
  .publications__channel-copy { padding-top:20px; }
  .publications--compact .publications__book { grid-template-columns:90px minmax(0,1fr); gap:16px; padding:18px; }
  .publications--compact .publications__book-stage { min-height:190px; padding:14px 5px; }
  .publications--compact .publications__book-copy h3 { font-size:21px; }
  .publications--compact .publications__book-copy h3 br { display:block; }
  .publications--compact .publications__channel { display:flex; padding:18px; gap:0; }
  .publications--compact .publications__video { max-width:none; }
  .publications--compact .publications__channel-copy { padding-top:18px; }
}

/* Official tools referenced by the book; logos remain on an uncluttered white surface. */
.publications__tools{margin:4px 0 16px}.publications__tools-label{display:block;margin-bottom:7px;color:#52637b;font-size:11px;font-weight:700}.publications__tools-list{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.publications__tool{display:inline-flex;align-items:center;justify-content:center;min-width:80px;min-height:60px;padding:12px 14px;border:1px solid #e4eaf2;border-radius:8px;background:#fff}.publications__tool img{display:block;width:auto;height:30px;max-width:100%;object-fit:contain}.publications__tool img[alt="OpenCV"]{height:40px}.publications__tool:focus-visible{outline:3px solid #2457d6;outline-offset:3px}.publications__tools-credit{display:block;margin-top:7px;color:#5e6b7d;font-size:10px;line-height:1.5;overflow-wrap:anywhere}

.publications__tool sup{align-self:flex-start;margin-left:3px;color:#52637b;font-size:10px;line-height:1}
.publications__tools-credit { scroll-margin-top:112px; }

body .publications__tools-credit{margin-top:8px;font-size:10px;line-height:1.45;color:#5e6b7d}body .publications__tools-credit summary{display:inline-block;cursor:pointer;font-size:11px;color:#52637b}body .publications__tools-credit small{display:block;margin-top:6px;font-size:10px!important;line-height:1.5!important;color:#5e6b7d!important}body .publications__tools-credit summary:focus-visible{outline:3px solid #2457d6;outline-offset:3px}

/* Additional verified publications remain separate from the featured book. */
.publications__collection { margin-top:28px; }
.publications__collection-head { display:flex; align-items:end; justify-content:space-between; gap:16px; margin-bottom:16px; }
body .publications__collection-head h3 { margin:0; color:#14263e!important; font-size:22px; line-height:1.35; letter-spacing:-.03em; }
body .publications__collection-head p { margin:0; color:#52637b!important; font-size:13px; line-height:1.6; word-break:keep-all; }
.publications__catalog { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.publications__catalog-book { display:flex; flex-direction:column; min-width:0; padding:14px; border:1px solid #dbe3ee; border-radius:16px; background:#fff; }
.publications__catalog-cover { display:flex; align-items:center; justify-content:center; min-height:200px; padding:20px; border-radius:10px; background:#edf2f7; text-decoration:none; }
.publications__catalog-cover img { display:block; width:auto; max-width:100%; height:190px; object-fit:contain; box-shadow:6px 9px 14px #10223a28; }
.publications__catalog-copy { display:flex; flex:1; flex-direction:column; align-items:flex-start; padding:16px 3px 2px; }
body .publications__catalog-role { color:#2857b8!important; font-size:11px; font-weight:800; }
body .publications__catalog-copy h4 { margin:7px 0 8px; color:#14263e!important; font-size:17px; line-height:1.45; word-break:keep-all; overflow-wrap:anywhere; }
body .publications__catalog-copy p { margin:0 0 8px; color:#52637b!important; font-size:12px; line-height:1.65; word-break:keep-all; overflow-wrap:anywhere; }
body .publications__catalog-copy a { margin-top:auto; padding-top:8px; color:#2455b4!important; font-size:12px; font-weight:800; text-decoration:none; }
.publications__catalog-copy a:hover { text-decoration:underline; text-underline-offset:4px; }
.publications__more-videos { grid-column:1/-1; width:100%; margin-top:18px; }
body .publications__more-videos h4 { margin:0 0 12px; color:#14263e!important; font-size:14px; line-height:1.4; }
.publications__more-videos-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.publications__more-videos .publications__video { min-width:0; }
.publications__more-videos .publications__video>img { aspect-ratio:4/3; object-fit:cover; }
body .publications .publications__more-videos .publications__video-caption { min-height:58px; padding:10px 12px; font-size:11px; }
.publications--compact .publications__more-videos .publications__video-caption>span:first-child { display:block; }
@media(max-width:900px) { .publications__catalog { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:500px) {
  .publications__collection-head { display:block; }
  body .publications__collection-head p { margin-top:6px; }
  .publications__catalog { gap:10px; }
  .publications__catalog-book { padding:10px; }
  .publications__catalog-cover { min-height:160px; padding:14px; }
  .publications__catalog-cover img { height:145px; }
  body .publications__catalog-copy h4 { font-size:15px; }
}
