/* Shared tokens for future feed blocks and theme components. */
:root{--accent-hover:#a71e37;--accent-soft:#f198a8;--accent-panel:#24151d;--accent-glow:#c7244226;--accent-line:color-mix(in srgb,var(--red) 42%,var(--line));--on-accent-muted:color-mix(in srgb,#fff 78%,var(--red));--reveal-duration:.7s;--reveal-distance:20px;--loader-duration:1.2s;--lab-accent:var(--red);--lab-background:var(--bg);--lab-surface:var(--panel);--lab-text:var(--text);--lab-muted:var(--muted)}

/* Nothing is hidden until the observer has been successfully registered. */
.lab-reveal-pending{opacity:0;transform:translateY(var(--reveal-distance));transition:opacity var(--reveal-duration) ease,transform var(--reveal-duration) ease}
.lab-reveal-pending.lab-reveal-visible{opacity:1;transform:translateY(0)}

.lab-loader[hidden]{display:none}
.lab-loader{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:24px;background:#090d12f7;color:var(--text);pointer-events:none;visibility:visible}
/* CSS fail-safe also dismisses the decorative overlay if JS stops after activation. */
.lab-loader.is-active{animation:boot-expire 0s 3.5s forwards}
.boot-frame{width:min(100%,510px);border:1px solid var(--accent-line);padding:24px;position:relative;background:linear-gradient(var(--accent-glow) 1px,transparent 1px),linear-gradient(90deg,var(--accent-glow) 1px,transparent 1px);background-size:30px 30px}
.boot-frame::before,.boot-frame::after{content:"";position:absolute;width:30px;height:30px;border:2px solid var(--accent-soft)}
.boot-frame::before{top:-2px;left:-2px;border-right:0;border-bottom:0}.boot-frame::after{bottom:-2px;right:-2px;border-left:0;border-top:0}
.boot-top,.boot-bottom{display:flex;justify-content:space-between;gap:15px;font-size:8px;letter-spacing:.08em;color:var(--accent-soft)}
.boot-reticle{position:relative;display:grid;place-items:center;width:min(66vw,240px);aspect-ratio:1;margin:30px auto;overflow:hidden}
.boot-ring{position:absolute;inset:5%;border:1px dashed var(--accent-soft);border-radius:50%;animation:boot-rotate 6s linear infinite}
.boot-ring::before{content:"";position:absolute;inset:10%;border:3px solid transparent;border-top-color:var(--accent-soft);border-bottom-color:var(--accent-soft);border-radius:50%}
.boot-cross{position:absolute;inset:0;background:linear-gradient(transparent calc(50% - .5px),var(--accent-line) 50%,transparent calc(50% + .5px)),linear-gradient(90deg,transparent calc(50% - .5px),var(--accent-line) 50%,transparent calc(50% + .5px))}
.boot-core{font:italic 900 90px/1 var(--mono);color:var(--accent-soft);position:relative}.boot-core>span{position:absolute;bottom:-6px;right:-27px;font-size:50px;font-style:normal;color:var(--green)}
.boot-scan{position:absolute;inset:0;background:linear-gradient(transparent 48%,var(--accent-glow) 49%,var(--accent-soft) 50%,transparent 51%);animation:boot-scan var(--loader-duration) ease-in-out both}
.boot-title{text-align:center;font-size:20px;letter-spacing:.2em;margin-bottom:8px}.boot-caption{text-align:center;font-size:11px;color:var(--muted);margin-bottom:25px}
.boot-progress{height:3px;background:var(--line);overflow:hidden;margin-bottom:20px}.boot-progress>span{display:block;width:100%;height:100%;background:var(--accent-soft);transform-origin:left;animation:boot-progress var(--loader-duration) linear both}
.boot-hint{text-align:center;font-size:10px;color:var(--muted);margin:20px 0 0}
@keyframes boot-rotate{to{transform:rotate(360deg)}}@keyframes boot-scan{from{transform:translateY(-48%)}to{transform:translateY(48%)}}@keyframes boot-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes boot-expire{to{visibility:hidden;opacity:0}}

/* A plugin can opt into these wrappers; its own blocks/shortcodes remain editable. */
.lab-feed{background:var(--lab-surface);color:var(--lab-text);padding:clamp(18px,4vw,40px);border:1px solid var(--line)}
.lab-feed a{color:var(--accent-soft)}.lab-feed-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:20px}

/* Keep touch targets and form text practical on narrow screens. */
@media(max-width:900px){.menu-toggle,.primary-navigation a,.social-link,.footer-links a,.back-top{min-height:44px;display:inline-flex;align-items:center}.primary-navigation .menu{align-items:flex-start}.primary-navigation .sub-menu a{display:flex}.footer-links ul{gap:12px 24px}}
@media(max-width:640px){input:not([type=checkbox]):not([type=radio]):not([type=submit]),textarea,select{font-size:16px}.button,.text-link,.page-numbers,.search-submit{min-height:44px}.news-row{min-height:72px}.hero-grid>*{min-width:0}.boot-frame{padding:18px}.boot-top,.boot-bottom{font-size:7px;flex-wrap:wrap}.boot-title{font-size:17px}.lab-feed{margin-inline:0}.site-footer{padding-bottom:max(26px,env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){.lab-loader{display:none!important}.lab-reveal-pending{opacity:1!important;transform:none!important;transition:none!important}}
