/* Feedback, orientation and short transitions; the original palette stays intact. */
html.lb-blog{--ease-out:cubic-bezier(.23,1,.32,1);--ease-in-out:cubic-bezier(.77,0,.175,1);--ease-drawer:cubic-bezier(.32,.72,0,1);--lb-fast:160ms;--lb-enter:240ms;scroll-padding-top:100px;-webkit-text-size-adjust:100%;}
html.lb-blog :is(button,[role=button],summary){-webkit-tap-highlight-color:transparent;user-select:none;}
html.lb-blog :is(button,[role=button]){touch-action:manipulation;}
html.lb-blog :is(.dc-article,.dc-note,.dc-portals>a){transition:transform 200ms var(--ease-out),border-color var(--lb-fast) ease,background-color var(--lb-fast) ease;}
html.lb-blog :is(.dc-article,.dc-note,.dc-portals>a):active{transform:translateY(1px);}
html.lb-blog :is(.lb-menu-close,.dc-side-search button,.lb-search button,.fabtn):active{transform:scale(.97);}
html.lb-blog :is(.lb-menu-close,.dc-side-search button,.lb-search button,.fabtn){transition:transform var(--lb-fast) var(--ease-out),color var(--lb-fast) ease;}
html.lb-blog :is(.dc-side-menu a,.dc-page-index a,[data-blog-toc] a,.dc-side-topics a,.lb-hero-links a,.lb-footer a){transition:color var(--lb-fast) ease,border-color var(--lb-fast) ease,background-color var(--lb-fast) ease;}
html.lb-blog :is(.dc-page-index>a,[data-blog-toc] a){position:relative;}
html.lb-blog :is(.dc-page-index>a,[data-blog-toc] a)::before{content:'';position:absolute;left:-11px;top:calc(50% - 2px);width:4px;height:4px;background:var(--lb-accent);opacity:0;transition:opacity var(--lb-fast) ease;}
html.lb-blog :is(.dc-page-index>a,[data-blog-toc] a)[aria-current]::before{opacity:1;}
html.lb-blog .dc-side-services summary>span{transition:transform 200ms var(--ease-out);}
html.lb-blog .lb-hero-links a{position:relative;}
html.lb-blog .lb-hero-links a::after{content:'';position:absolute;bottom:-2px;left:0;right:0;height:1px;background:currentColor;transform:scaleX(.25);transform-origin:left;transition:transform 200ms var(--ease-out);}
html.lb-blog [data-lb-pending]{color:var(--lb-accent)!important;text-decoration:underline!important;text-decoration-thickness:1px!important;text-underline-offset:6px;}
/* The existing camera and ray envelope owns the transition timing. It remains
   behind the readable page; the unmasked ring can now visibly gather and release. */
html.lb-blog.long-haloflux-active #long-haloflux.long-halo-cinematic{z-index:-1;background:transparent;}
html.lb-blog #long-haloflux.long-halo-cinematic canvas{mask-image:none;-webkit-mask-image:none;}
html.lb-blog #long-haloflux .long-halo-transit-caption{display:none!important;}
html.lb-blog #nprogress .bar{background:var(--lb-accent);height:2px;box-shadow:none;}
html.lb-blog #nprogress .peg{box-shadow:none;}
html.lb-blog #nprogress .spinner{display:none;}
html.lb-blog :is(.dc-section,#post_content h2,#post_content h3){scroll-margin-top:8px;}
html.lb-blog .dc-section{scroll-margin-top:8px!important;}
html.lb-blog #navbar-main .dropdown-menu{transform-origin:20px 0;}
/* Original custom CSS reveals menus only on hover. Honor Bootstrap's opened
   state as well so keyboard activation and touch use the same visible menu. */
html.lb-blog #navbar-main .dropdown-menu.show{visibility:visible;pointer-events:auto;opacity:1;transform:translateY(0);transition:none;}
@media(hover:hover) and (pointer:fine){
 html.lb-blog :is(.dc-article):hover{transform:translateY(-3px);border-color:rgba(217,166,183,.55);}
 html.lb-blog :is(.dc-note,.dc-portals>a):hover{transform:translateX(3px);}
 html.lb-blog .lb-hero-links a:hover::after{transform:scaleX(1);}
 html.lb-blog .dc-side-topics a:hover{background:rgba(217,166,183,.09);border-color:var(--lb-accent);}
}
/* Read the real Halo envelope, with no separate loading timeline or exit wait. */
html.lb-blog{--lb-route-amount:0;--lb-route-release:0;}
html.lb-blog[data-lb-route=loading] #main{opacity:calc(1 - .22 * var(--lb-route-amount,0));transition:none;will-change:opacity;}
html.lb-blog[data-lb-route=arriving] #main{opacity:calc(.78 + .22 * var(--lb-route-release,0));transform:translateY(calc((1 - var(--lb-route-release,0)) * 6px));transition:none;will-change:opacity,transform;}
html.lb-blog[data-lb-input=keyboard][data-lb-route] #main{opacity:1;transform:none;transition:none;}
@media(prefers-reduced-motion:reduce){html.lb-blog[data-lb-route] #main{opacity:1;transform:none;transition:none;}}
@media(max-width:991.98px){
 html.lb-blog .lb-menu-close{position:sticky;top:0;right:auto;float:right;margin:-20px -10px -24px 0;z-index:3;background:var(--lb-bg);border:1px solid var(--lb-line);border-radius:2px;}
 html.lb-blog #leftbar.lb-sidebar{height:100dvh;max-height:100dvh!important;overscroll-behavior:contain;transition:transform var(--lb-enter) var(--ease-drawer),visibility 0s linear var(--lb-enter)!important;padding-top:max(38px,env(safe-area-inset-top,0px))!important;}
 html.lb-blog.leftbar-opened #leftbar.lb-sidebar{transition:transform var(--lb-enter) var(--ease-drawer),visibility 0s!important;}
 html.lb-blog #sidebar_mask{display:block!important;visibility:hidden;opacity:0;pointer-events:none;background:rgba(10,8,12,.62);transition:opacity 200ms ease,visibility 0s linear 200ms;}
 html.lb-blog.leftbar-opened #sidebar_mask{visibility:visible;opacity:1;pointer-events:auto;transition:opacity 200ms ease,visibility 0s;}
 html.lb-blog #navbar_global{transform-origin:calc(100% - 26px) 20px;}
 html.lb-blog :is(.dc-side-search input,input,textarea,select){font-size:16px;}
}
/* Keyboard navigation is immediate; reduced motion keeps gentle color feedback. */
html.lb-blog[data-lb-input=keyboard] :is(#leftbar.lb-sidebar,#sidebar_mask,.dc-side-services summary>span,.lb-hero-links a::after){transition-duration:0s!important;}
@media(prefers-reduced-motion:reduce){
 html.lb-blog :is(.dc-article,.dc-note,.dc-portals>a,.fabtn,.lb-menu-close){transform:none!important;transition:color 125ms ease,border-color 125ms ease,background-color 125ms ease!important;}
 html.lb-blog :is(#leftbar.lb-sidebar,#sidebar_mask,.dc-side-services summary>span,.lb-hero-links a::after){transition-duration:0s!important;}
}
