/* Site-wide progressive interaction layer. Dark is the existing default.
   Appending one stylesheet prevents changes to the content and SEO templates. */
.interaction-rail { position:fixed; z-index:1075; inset:auto auto 18px 18px; display:flex; flex-wrap:nowrap; align-items:center; gap:5px; padding:5px; max-width:calc(100vw - 112px); border:1px solid rgba(149,193,239,.3); border-radius:15px; background:rgba(26,35,46,.96); color:#e7f0fa; box-shadow:0 7px 34px rgba(0,0,0,.17); }
.interaction-rail button { display:inline-flex; align-items:center; justify-content:center; gap:.55rem; min-height:42px; padding:7px 12px; border:0; border-radius:9px; background:transparent; color:inherit; font:600 .76rem/1.3 Inter,system-ui,sans-serif; cursor:pointer; white-space:nowrap; }
.interaction-rail button:hover,.interaction-rail button:focus-visible { color:#f5fbff; background:#334860; }
.interaction-rail button:focus-visible { outline:2px solid #bddfff; outline-offset:2px; }
#hub-shortcuts { width:38px; font-size:1rem; }
.site-toast { padding:.7rem .9rem; border:1px solid #81b4e1; border-radius:11px; background:#253a50; color:#f0f8ff; box-shadow:0 8px 30px rgba(0,0,0,.22); animation:hub-toast-in .23s ease-out both; font:.82rem/1.4 Inter,system-ui,sans-serif; }
#site-toasts { position:fixed; z-index:1900; inset:auto 16px 90px auto; display:grid; gap:8px; max-width:min(350px,calc(100vw - 32px)); pointer-events:none; }
@keyframes hub-toast-in { from {opacity:0;transform:translateY(12px)} to {opacity:1;transform:translateY(0)} }
.hub-dialog { width:min(600px,calc(100% - 24px)); max-height:min(680px,90dvh); overflow-y:auto; position:fixed; inset:0; margin:auto; padding:clamp(1.15rem,4vw,1.75rem); background:#1a2532; color:#eaf2fa; border:1px solid rgba(125,180,240,.36); border-radius:20px; box-shadow:0 28px 100px rgba(0,0,0,.43); }
.hub-dialog::backdrop { background:rgba(3,9,15,.73); backdrop-filter:blur(6px); }
.hub-dialog-head { display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem; }
.hub-dialog h2 { margin:0;font:600 clamp(1.25rem,3vw,1.6rem)/1.3 Inter,system-ui,sans-serif; }
.hub-close { width:44px;height:44px;border:1px solid rgba(150,196,244,.3);border-radius:12px;background:#28384b;color:#e9f2fb;cursor:pointer;font-size:1.4rem; }
.hub-label { display:block;margin:0 0 .5rem;font-size:.82rem;color:#b3c9dc; }
#hub-command-search { width:100%;min-height:49px;padding:.7rem .85rem;color:#f2f8ff;background:#111a24;border:1px solid #557997;border-radius:12px;font:500 .94rem/1.3 Inter,system-ui,sans-serif; }
.hub-command-results { display:grid;gap:6px;max-height:340px;overflow-y:auto;margin:1rem 0 0; }
.hub-command { display:grid;gap:2px;text-align:left;padding:.8rem .9rem;min-height:56px;border:1px solid transparent;border-radius:11px;background:transparent;color:#edf4fb;cursor:pointer;font:500 .91rem/1.35 Inter,system-ui,sans-serif; }
.hub-command small { color:#a1b8cd;font-size:.77rem; }
.hub-command:hover,.hub-command[aria-selected="true"] { background:#2c4054;border-color:#618cb5; }
.hub-hint { margin:.85rem 0 0;color:#a9c0d4;font-size:.72rem; }
.hub-shortcuts { display:grid;grid-template-columns:minmax(125px,1fr) 1.6fr;gap:.9rem;align-items:baseline; }
.hub-shortcuts dt { font:700 .8rem/1.4 Inter,system-ui,sans-serif;color:#bddbfa; }
.hub-shortcuts dd { margin:0;color:#d6e3ee;font-size:.85rem; }
.hub-back-top { position:fixed;z-index:1074;bottom:18px;right:18px;width:51px;height:51px;display:grid;place-items:center;padding:3px;border:1px solid rgba(136,186,233,.4);border-radius:50%;color:#d4e7fa;background:#26364a;opacity:0;visibility:hidden;transform:translateY(12px);transition:opacity .25s ease,transform .25s ease,visibility .25s ease;cursor:pointer; }
.hub-back-top.is-visible { opacity:1;visibility:visible;transform:none; }
.hub-back-top:focus-visible { outline:2px solid #9fcfff;outline-offset:3px; }
.hub-back-top svg {width:42px;height:42px;}
.hub-ring-track {stroke:#455d73;stroke-width:2;fill:none;}
.hub-ring-progress {stroke:#9fceff;stroke-width:2.7;fill:none;stroke-dasharray:125.66;stroke-dashoffset:calc(125.66 * (1 - var(--progress,0)));transform-origin:center;transform:rotate(-90deg);}
.hub-ring-arrow {stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none;}
.hub-reveal-ready {opacity:.92;transform:translateY(8px);transition:opacity .65s cubic-bezier(.22,1,.36,1),transform .65s cubic-bezier(.22,1,.36,1);}
.hub-reveal-ready.hub-revealed {opacity:1;transform:none;}
.hub-celebration {position:fixed;inset:48% 40% auto;z-index:2100;pointer-events:none;}
.hub-celebration span {position:absolute;width:6px;height:10px;left:50%;top:0;background:hsl(calc(190 + var(--i)*10) 66% 75%);animation:hub-celebrate .95s ease-out both;}
@keyframes hub-celebrate {to{opacity:0;transform:translate(calc((var(--i) - 9)*15px),calc((var(--i) - 9)*7px)) rotate(200deg)}}

/* Light theme v2 — coherent design tokens shared by the homepage, project
   archive, Skills, standalone case studies, and utility routes.
   Keep the existing dark palette untouched. */
html[data-theme="light"] {
  color-scheme: light;
  --ux-bg: #f3f6fa;
  --ux-ink: #192c40;
  --ux-muted: #465d74;
  --ux-accent: #245f96;
  --ux-line: rgba(38, 70, 103, .22);
  --color-bg: #f3f6fa;
  --color-bg-raised: #fff;
  --color-bg-soft: #e8f0f8;
  --color-text: #192c40;
  --color-muted: #435c73;
  --color-accent: #245f96;
  --color-accent-soft: rgba(36, 95, 150, .1);
  --color-border: rgba(38, 70, 103, .17);
  --color-border-strong: rgba(38, 70, 103, .29);
  --shadow-soft: 0 16px 45px rgba(32, 63, 90, .12);
  --surface: #f3f6fa;
  --surface-raised: #fff;
  --ink: #192c40;
  --muted: #465d74;
  --accent: #245f96;
  --line: rgba(38, 70, 103, .2);
  --soft-line: rgba(38, 70, 103, .15);
  --archive-ice: #245f96;
  --archive-line: rgba(38, 70, 103, .3);
  background-color: #f3f6fa;
}
/* Foundation: override hard-coded backgrounds, without changing geometry. */
html[data-theme="light"] body,
html[data-theme="light"] body.utility-page,
html[data-theme="light"] body.project-case-study {
  background: #f3f6fa !important;
  color: #192c40 !important;
}
html[data-theme="light"] :is(main, section, article, aside, footer, nav) { color: inherit; }
html[data-theme="light"] :is(.site-nav-wrap, .nav-wrap, .site-header, body.is-scrolled .site-nav, body.is-scrolled .nav) {
  background: rgba(248, 251, 255, .96) !important;
  border-color: rgba(38, 70, 103, .18) !important;
  box-shadow: 0 7px 24px rgba(34, 64, 96, .06);
}
html[data-theme="light"] :is(.site-nav, .nav, .nav-links, .site-nav-links, .utility-header, .utility-footer, .breadcrumbs) {
  color: #243d55;
  border-color: rgba(38, 70, 103, .18);
}
html[data-theme="light"] :is(.site-nav-links a, .nav-links a, .breadcrumbs, .utility-header a) { color: #344c63; }
html[data-theme="light"] :is(.site-nav-links a:hover, .nav-links a:hover, .site-nav-links a[aria-current], .nav-links a[aria-current], .site-nav-links a:focus-visible) { color: #144d7d; }
html[data-theme="light"] :is(.section-kicker, .eyebrow, .hero-eyebrow, .kicker, .card-kicker, .story-kicker, .research-direction .eyebrow, .type, .num, .project-number, .section-no, .utility-eyebrow) { color: #255f95; }
html[data-theme="light"] :is(.hero-bio, .hero-bio strong, .hero-image-caption, .section-intro, .card-copy, .about-copy p, .intro, .lede, .research-lede, .project-note, .note, .desc, .limitations, .context, .faq-answer, .inventory-card p, .utility-intro, .card-copy, .contact-copy p) { color: #435c73; }
/* Cards and content shells. Both simple and gradient dark surfaces are converted. */
html[data-theme="light"] :is(.surface-card, .project-card, .project-card-featured, .inventory-card,
  .inventory-tools, .tools-grid > p, .case-section, .metric, .project-metric,
  .research-direction, .research-evidence-card, .faq-item, .project, .archive .project,
  .archive-explorer, .skills-explorer, .utility-search, .utility-result, .utility-directory a,
  .contact-form, .story-panel, .story-section .story-panel, .contact-card, .card,
  .writing-card, .public-proof, .project-compare-card, .skills-no-results) {
  background: #fff !important;
  color: #192c40;
  border-color: rgba(44, 82, 116, .21) !important;
  box-shadow: 0 8px 30px rgba(38, 66, 98, .045);
}
html[data-theme="light"] :is(.project-metric, .research-evidence-card .project-metric,
  .project-card .project-tag, .project-tag, .tag, .skill-list li,
  .research-evidence-card .research-methods li) {
  background: #f1f6fb !important;
  border-color: #c2d2e1 !important;
  color: #36526e;
}
html[data-theme="light"] :is(.project-metric strong, .research-evidence-card .project-metric strong,
  .metric strong, .num, .project-number, .section-no) { color: #245f96; }
html[data-theme="light"] :is(.project-metric span, .research-evidence-card .project-metric span,
  .metric span, .tag, .archive .project .tag, .project-note,
  .archive .project .type, .archive .project .desc, .archive .project .note,
  .archive .project .project-note, .note, .research-direction p,
  .research-evidence-card :is(.context, .limitations, li),
  .tools-grid > p, .inventory-tools .tools-grid strong,
  .archive-meta, .archive-chapter, .archive-count, .archive-field label,
  .skills-explorer-head p, .archive-empty, .archive-empty p) {
  color: #435b72 !important;
}
html[data-theme="light"] :is(.tools-grid strong, .inventory-card h3, .research-evidence-card h3, .archive .project h2,
  .archive-empty h3, .skill-card h3, .case-section h2, .story-panel h3) {
  color: #192c40 !important;
}
html[data-theme="light"] :is(.story-head p:last-child, .story-panel p, .story-panel .story-kicker) {
  color: #425d77;
}
html[data-theme="light"] .story-visual {
  background: radial-gradient(circle, rgba(36, 95, 150, .1), transparent 68%);
}
html[data-theme="light"] .story-visual :is(path,circle,rect) { stroke: #326e9f; }
html[data-theme="light"] .story-visual svg { filter: none; }
/* Links, selected tabs, buttons and cards: dark text on pale surfaces. */
html[data-theme="light"] :is(a:not(.hero-button-primary):not(.button-primary), .research-direction a,
  .research-evidence-card a, .research-approach a, .story-panel a, .faq-answer a) {
  text-decoration-color: rgba(36, 95, 150, .5);
}
html[data-theme="light"] :is(.story-controls button, .nav-toggle, .archive-clear,
  .archive-copy, .archive-top, .archive .project .archive-tag,
  .archive .project .archive-copy, .skills-explorer-search button,
  .hub-secondary-button, .project-choice-row button, .skill-controls button,
  .utility-action:not(.primary), .utility-search button:not(:hover),
  .project-link, .pill-link:not(.primary), .action:not(.primary),
  .contact-links .text-link, .hub-close, .case-collapse) {
  background: #eaf2fa !important;
  color: #234a71 !important;
  border-color: #b8cce0 !important;
}
html[data-theme="light"] :is(.story-controls button:hover, .archive-clear:hover, .archive-topic:hover,
  .skills-explorer-search button:hover, .hub-secondary-button:hover, .utility-action:not(.primary):hover,
  .project-link:hover, .archive .project .archive-tag:hover) {
  background: #dceaf7 !important;
  color: #163e66 !important;
}
html[data-theme="light"] :is(.archive-topic, .skills-areas button, .archive .project .archive-tag) {
  background: #f1f6fb;
  color: #31516f;
  border-color: #b8cce0;
}
html[data-theme="light"] :is(.archive-topic[aria-pressed="true"], .skills-areas button[aria-pressed="true"],
  .hub-secondary-button[aria-pressed="true"], .project-choice-row button[aria-pressed="true"],
  .skill-controls button[aria-pressed="true"]) {
  background: #245f96 !important;
  color: #fff !important;
  border-color: #245f96 !important;
}
html[data-theme="light"] :is(.pill-link.primary, .action.primary, .hero-button-primary,
  .contact-form button.button-primary, .utility-action.primary,
  .utility-search button[type="submit"], .contact-form-submit, .button-primary) {
  background: #245f96 !important;
  color: #fff !important;
  border-color: #245f96 !important;
}
html[data-theme="light"] :is(.pill-link.primary:hover, .action.primary:hover,
  .contact-form button.button-primary:hover, .utility-action.primary:hover) {
  background: #194e7e !important;
}
html[data-theme="light"] :is(.contact-form-field label, .contact-form-field, .archive-field label,
  .skills-explorer-search label, .utility-search label, .hub-label) { color: #304d68; }
html[data-theme="light"] :is(input, textarea, select, .archive-field input,
  .archive-field select, .skills-explorer-search input,
  .contact-form .contact-form-field input,
  .contact-form .contact-form-field textarea,
  .utility-search input) {
  background: #f9fbfe !important;
  color: #1b3046 !important;
  border-color: #9fb8ce !important;
}
html[data-theme="light"] :is(input, textarea)::placeholder { color: #536d84 !important; }
html[data-theme="light"] :is(.contact-form-status, .footer-copyright) { color: #405b73; }
html[data-theme="light"] .contact-form-status[data-state="success"] { color: #206246; }
html[data-theme="light"] .contact-form-status[data-state="error"] { color: #9b352b; }
html[data-theme="light"] :is(.faq-item summary, .faq-item summary::after, .faq-answer a) { color: #244e75; }
html[data-theme="light"] .faq-item[open] { background: #edf4fb !important; }
/* The new fixed widgets and native dialog controls must match the selected theme. */
html[data-theme="light"] .interaction-rail {
  background: rgba(251, 253, 255, .97);
  color: #203b55;
  border-color: #adc5da;
}
html[data-theme="light"] .interaction-rail button { color: #244b6f; }
html[data-theme="light"] .interaction-rail button:hover,
html[data-theme="light"] .interaction-rail button:focus-visible {
  background: #dceaf7; color: #143c63;
}
html[data-theme="light"] .hub-dialog {
  background: #fff; color: #1b3046; border-color: #9db9d1;
}
html[data-theme="light"] .hub-close { background: #eaf2fa; color: #234a71; border-color: #b7cde0; }
html[data-theme="light"] .hub-command { color: #1b3046; }
html[data-theme="light"] .hub-command small,
html[data-theme="light"] .hub-hint, html[data-theme="light"] .hub-shortcuts dd { color: #49627a; }
html[data-theme="light"] .hub-shortcuts dt { color: #235d92; }
html[data-theme="light"] .hub-command:hover,
html[data-theme="light"] .hub-command[aria-selected="true"] {
  background: #e7f1fa; border-color: #91b7d5; color: #163a5b;
}
html[data-theme="light"] .hub-back-top,
html[data-theme="light"] .archive-top {
  background: #fff !important; color: #1d527f !important; border-color: #a5bfd6 !important;
}
html[data-theme="light"] .hub-ring-track { stroke: #b4c9dc; }
html[data-theme="light"] .hub-ring-progress { stroke: #245f96; }
html[data-theme="light"] .site-toast { background: #eff6fd; color: #213a53; border-color: #9fbcd7; }
/* Project glyphs and technical diagrams are intentionally colorful, not inverted. */
html[data-theme="light"] .project-symbol {
  background: #e7f0f9; border-color: #acc7dd;
  --symbol-ink: #255f92; --symbol-highlight: #19476e;
}
html[data-theme="light"] .archive .project .archive-sigil.project-symbol {
  background: #e7f0f9; border-color: #acc7dd;
}
html[data-theme="light"] #skills-directory .inventory-card .skills-visual {
  background: #eaf2f9; border-color: #aac7dd; color: #285e90;
}
html[data-theme="light"] .skills-visual .skill-trace { stroke: #285e90; }
html[data-theme="light"] .skills-visual .skill-accent { stroke: #194e80; fill: rgba(36, 95, 150, .12); }
html[data-theme="light"] .archive-orbit { opacity: .35; }
/* Keep the one small-dot pattern, but tint it darker against light paper. */
html[data-theme="light"] body::before {
  background-image: radial-gradient(circle, rgba(60, 110, 155, .47) 1px, transparent 1.5px);
  opacity: .32;
}
html[data-theme="light"] body::after {
  background-image: radial-gradient(circle, rgb(23 105 169 / .96) 1px, transparent 1.5px);
  opacity: 0;
}
@media (hover: hover) and (pointer: fine) {
  html[data-theme="light"] body.dots-active:not(.motion-disabled)::after { opacity: 1; }
}
/* Standalone case-study stylesheet includes higher-specificity dark text rules. */
html[data-theme="light"] .project-case-study .case-section :is(p,li),
html[data-theme="light"] .project-case-study .lede,
html[data-theme="light"] .project-case-study .metric span,
html[data-theme="light"] .project-case-study footer,
html[data-theme="light"] .project-case-study .breadcrumbs,
html[data-theme="light"] .project-case-study .eyebrow {
  color: #435c73 !important;
}
html[data-theme="light"] .project-case-study :is(.metric strong,.case-section strong) {
  color: #225b90;
}
html[data-theme="light"] .project-case-study .case-section h2 { color: #192c40; }
html[data-theme="light"] .project-case-study .related { border-color: #bed0df; }
/* Additional route-specific widgets and live-search components. */
html[data-theme="light"] :is(.project-selection-tools, .skill-compare-toolbar,
  .case-actions, .case-interactive-toc, .utility-hints) { color: #314b65; }
html[data-theme="light"] :is(.project-compare-card, .project-compare-grid,
  .pinned-skill-content a, .case-fold-body, .project-compare-card p,
  .project-compare-card small, .case-interactive-toc a) {
  color: #36536b;
}
html[data-theme="light"] .project-compare-card { background: #f9fcff !important; }
html[data-theme="light"] .project-compare-card h3 { color: #192c40; }
html[data-theme="light"] .project-compare-card a { color: #1b5b91; }
html[data-theme="light"] :is(.pinned-skill-content a,.case-interactive-toc) { border-color: #bbcfdf; }
html[data-theme="light"] :is(.skill-controls button,.project-choice-row button) { color: #234a71; }
html[data-theme="light"] :is(.skills-visual,.hub-ring-arrow) { color: #245f96; }
html[data-theme="light"] .skills-explorer .skills-areas button[aria-pressed="true"] { color: #fff !important; }
html[data-theme="light"] .utility-result strong { color: #245f96; }
html[data-theme="light"] .utility-result span { color: #465d74; }
/* Existing homepage pill links and public-proof bands have dark assumptions. */
html[data-theme="light"] :is(.public-proof, .public-proof-link, .writing-card,
  .contact-links .text-link, .about-fact) { border-color: rgba(38,70,103,.24); }
html[data-theme="light"] :is(.public-proof a, .public-proof p, .writing-card p,
  .writing-card small, .about-fact-label, .footer-links a) { color: #425b73; }
html[data-theme="light"] .hero-image-caption {
  background: rgba(255,255,255,.96); color: #34526f; border-color: #b9cde0;
}
html[data-theme="light"] .faq-item summary { color: #1d3750; }
html[data-theme="light"] .interaction-rail button[aria-pressed="true"] {
  background: #245f96; color: #fff;
}
/* Explicit reduced-motion and coarse-pointer fallbacks. */
@media (prefers-reduced-motion:reduce) {
  .hub-reveal-ready{opacity:1;transform:none;transition:none;}
  .hub-back-top,.hub-command,.site-toast,.hub-celebration span{animation:none!important;transition:none!important;}
  .hub-celebration{display:none;}
}
/* No bottom control may be clipped on mobile or cover the end of the page.
   Respect platform home indicators and both notch insets. */
.interaction-rail .hub-rail-icon { display:inline-flex; align-items:center; justify-content:center; width:1.25rem; flex:0 0 1.25rem; font-size:1.12rem; line-height:1; }
.interaction-rail .hub-rail-label {display:inline-block;white-space:nowrap;}
.interaction-rail .hub-rail-state {display:inline-block;flex:none;margin-left:.1rem;padding:.23rem .48rem;border:1px solid rgba(150,196,244,.26);border-radius:7px;font-size:.72rem;font-weight:650;line-height:1.15;opacity:1;white-space:nowrap;}
html[data-theme="light"] .interaction-rail .hub-rail-state {background:#e4eff8;color:#23527b;border-color:#b5cede;}
.interaction-rail #hub-shortcuts {width:auto;font-size:inherit;}
.hub-help-content p {line-height:1.65;color:#b6cde1;font-size:.88rem;}
.hub-help-links {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;margin:1rem 0;}
.hub-help-links a {min-height:46px;display:flex;align-items:center;justify-content:center;padding:.6rem;
  border:1px solid #5a84a8;border-radius:10px;background:#2a4055;color:#eff8ff;text-decoration:none;font-weight:650;}
.hub-help-links a:focus-visible {outline:2px solid #b7dfff;outline-offset:3px;}
html[data-theme="light"] .hub-help-content p {color:#435b72;}
html[data-theme="light"] .hub-help-links a {background:#e8f2fb;color:#1d517e;border-color:#b3ccdf;}
@media (max-width:760px), (pointer:coarse) and (max-width:1024px) {
  body { padding-bottom:calc(100px + env(safe-area-inset-bottom, 0px)) !important; }
  .interaction-rail {
    position:fixed;top:auto;left:0;right:0;bottom:0;width:100%;max-width:none;
    display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;
    padding:7px max(7px,env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px))
      max(7px,env(safe-area-inset-left,0px));
    border-left:0;border-right:0;border-bottom:0;border-radius:16px 16px 0 0;
    box-sizing:border-box;overflow:visible;
  }
  .interaction-rail button,.interaction-rail #hub-shortcuts {
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:3px;min-width:0;width:100%;min-height:65px;padding:5px 2px;
    border-radius:10px;font-size:.67rem;line-height:1.1;white-space:normal;
  }
  .interaction-rail .hub-rail-icon {font-size:1.3rem;line-height:1;}
  .interaction-rail .hub-rail-state {display:inline-block;margin:0;padding:.12rem .45rem;font-size:.64rem;}
  .interaction-rail .hub-rail-label {display:block;font-size:.67rem;font-weight:650;}
  .hub-back-top {right:12px;bottom:calc(95px + env(safe-area-inset-bottom, 0px));width:48px;height:48px;}
  #site-toasts {bottom:calc(150px + env(safe-area-inset-bottom, 0px));}
  .hub-dialog {width:calc(100% - 16px);padding:1rem;max-height:88dvh;}
}
@media (max-width:360px) {
  .interaction-rail {gap:4px;padding-left:4px;padding-right:4px;}
  .interaction-rail button,.interaction-rail #hub-shortcuts {padding:5px 1px;font-size:.62rem;}
  .interaction-rail .hub-rail-label {font-size:.62rem;}
}

/* Keep desktop back-to-top clear of the CV assistant launcher and panel.
   Do not depend on hover reporting: desktop browsers and accessibility tools differ. */
@media (min-width: 768px) {
  body:has(#cv-chat-floating) .hub-back-top { bottom: clamp(6.25rem, 10vh, 7.5rem); }
  body:has(#cv-chat-window[aria-hidden="false"]) .hub-back-top {
    opacity: 0; visibility: hidden; pointer-events: none;
  }
}


/* Desktop floating controls occupy distinct regions. The CV assistant lives
   bottom-right; Back to top sits above the left-side navigation dock. */
@media (min-width:761px) and (hover:hover) and (pointer:fine) {
  .hub-back-top { left:18px; right:auto; bottom:84px; }
}

/* Desktop footer protection: prevent controls covering copyright/navigation.
   The mobile bottom dock stays visible at every scroll position. */
@media (min-width: 761px) {
  .interaction-rail {
    transition: opacity .2s ease, visibility .2s ease, transform .2s ease;
  }
  .interaction-rail.is-footer-visible {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateY(10px);
  }
}
@media (prefers-reduced-motion: reduce) {
  .interaction-rail.is-footer-visible { transition: none; }
}
