/* Shared interaction layer: content stays visible without JavaScript. */
/* The white artwork gets a transparent alpha channel after both logo layers
   are composited, so the idle frame cannot ghost through moving shapes. */
.header .header-logo{position:relative;display:block;width:clamp(112px,13vw,164px);height:84px;overflow:hidden;flex-shrink:0;background:transparent}
.header-logo-filter{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
.header-logo-media{position:absolute;inset:0;display:block;pointer-events:none}
.header-logo-image,.header-logo-video{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:none;object-fit:contain;pointer-events:none}
.header-logo-video{opacity:0}
.header-logo.is-playing .header-logo-video{opacity:1;transition:opacity .12s linear}
.header .header-logo:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
@media(max-width:760px){.header .header-logo{width:132px;height:64px}}
@media(prefers-reduced-motion:reduce){.header-logo.is-playing .header-logo-video{transition:none}}
/* The requested homepage opening: artwork first, then copy moving forward.
   The head guard expires automatically if the animation script cannot load. */
.hero-intro-pending .hero-art,.hero.is-home-intro .hero-art{animation:none;transform:scale(1.07)}
.hero-intro-pending .hero-shade{opacity:.18}
.hero-intro-pending .hero-content>*,.hero-intro-pending .hero-foot,.hero-intro-pending .art-note{opacity:0;pointer-events:none}
.hero.is-home-intro .hero-content>*{transform-origin:left center}
.hero-art{animation:studio-art-drift 24s ease-in-out infinite alternate;animation-play-state:paused}
.hero.has-art-motion .hero-art{animation-play-state:running}
@keyframes studio-art-drift{from{transform:scale(1)}to{transform:scale(1.025) translate3d(-.25%,.15%,0)}}
body{transition:background-color .22s,color .22s}
.perspective-controls{position:relative;isolation:isolate}
.perspective-option{position:relative;z-index:1}
.faction-indicator{position:absolute;top:0;left:0;z-index:0;background:var(--accent);pointer-events:none;visibility:hidden}
.has-faction-motion .faction-indicator{visibility:visible;transition:transform .22s cubic-bezier(.2,.7,.2,1),width .22s,background-color .22s}
.perspective-controls.has-faction-motion .perspective-option[aria-pressed="true"]{background:transparent}
.page-progress{position:fixed;left:0;top:0;height:3px;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left;z-index:1200;pointer-events:none}
.header{transition:box-shadow .25s,background-color .25s}.header.has-scrolled{box-shadow:0 12px 32px #0005;backdrop-filter:blur(14px)}
#navigation a{position:relative}#navigation a::after{content:"";position:absolute;bottom:3px;left:0;right:0;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .22s}#navigation a:hover::after,#navigation a.is-current::after{transform:scaleX(1)}
.button,.format-button,.project-nav a,.text-link,.home-directory a{transition:background-color .22s,color .22s,border-color .22s,box-shadow .22s,transform .22s}
.button:hover{transform:none;box-shadow:0 6px 18px #0003}
.project-card,.miniature-format-card,.story-card,.team-member{transition:border-color .25s,box-shadow .25s,transform .25s}
.project-card:hover,.miniature-format-card:hover,.story-card:hover{border-color:var(--accent);box-shadow:0 8px 24px #0002}
.project-card,.miniature-format-card,.story-card{position:relative;isolation:isolate}
.project-card::before,.miniature-format-card::before,.story-card::before{content:"";position:absolute;inset:1px;z-index:-1;pointer-events:none;opacity:0;background:radial-gradient(300px circle at var(--spotlight-x,50%) var(--spotlight-y,0%),color-mix(in srgb,var(--accent) 9%,transparent),transparent 70%);transition:opacity .18s}
.project-card:hover::before,.miniature-format-card:hover::before,.story-card:hover::before,.project-card:focus-within::before,.miniature-format-card:focus-within::before,.story-card:focus-within::before{opacity:1}
.motion-arrow{display:inline-block;transition:transform .16s ease-out}
:is(.button,.text-link,.format-button,.project-nav a,.stl-range-foot a):is(:hover,:focus-visible) .motion-arrow{transform:translate(var(--arrow-x,2px),var(--arrow-y,-2px))}
.team-member:hover,.team-member:focus-within{border-color:var(--accent)}
.home-directory a{position:relative}.home-directory a:hover{z-index:1}.home-directory a:focus-visible{z-index:2}
.project-card:focus-within,.story-card:focus-within,.miniature-format-card:focus-within{outline:2px solid var(--accent);outline-offset:3px}
:where(a,button,input,select,summary):focus-visible{outline:2px solid var(--accent);outline-offset:4px}
/* Route headings receive focus for reading order, without a control outline. */
:is(h1,h2,h3,h4)[tabindex="-1"]:focus{outline:none}
.faction-image{position:relative}.faction-image img{transition:transform .7s cubic-bezier(.2,.7,.2,1)}.faction-image:hover img{transform:scale(1.025)}
.artwork-expand{position:absolute;top:16px;right:16px;z-index:3;min-height:42px;padding:9px 14px;border:1px solid #ffffff70;background:#090e10d9;color:#fff;font:inherit;font-size:12px;cursor:pointer;backdrop-filter:blur(8px)}
.artwork-expand:hover{background:var(--accent);color:var(--accent-ink)}
.artwork-dialog{width:min(1100px,95vw);max-width:95vw;max-height:92dvh;padding:48px 16px 16px;background:#0c1112;color:#eee;border:1px solid #60716d;overflow:auto}.artwork-dialog::backdrop{background:#000e}
.artwork-dialog img{display:block;width:100%;max-height:75dvh;object-fit:contain;height:auto}.artwork-dialog p{font-size:13px;line-height:1.6;max-width:65ch;margin:12px auto 0;color:#b8c9c4}.artwork-close{position:absolute;right:12px;top:8px;background:transparent;color:#fff;border:1px solid #60716d;padding:8px 12px;cursor:pointer}
.artwork-dialog[open]{animation:artwork-arrive .16s ease-out}.artwork-dialog::backdrop{animation:artwork-backdrop .16s ease-out}
@keyframes artwork-arrive{from{opacity:.92}to{opacity:1}}@keyframes artwork-backdrop{from{opacity:0}to{opacity:1}}
.rules-search{max-width:54rem;margin:0 0 36px;padding:22px;border:1px solid var(--line);background:var(--panel)}.rules-search label{display:block;font-weight:600;margin-bottom:9px}.rules-search-row{display:flex;gap:10px}.rules-search input{flex:1;min-width:0;min-height:48px;border:1px solid var(--line);background:var(--bg);color:var(--paper);padding:12px;font:inherit}.rules-search button,.reader-tools button{background:var(--panel);color:var(--paper);border:1px solid var(--line);padding:10px 14px;font:inherit;cursor:pointer;min-height:44px}.rules-search button:hover,.reader-tools button:hover{border-color:var(--accent)}.rules-search button:disabled,.reader-tools button:disabled{opacity:.4;cursor:default}.rules-search p{font-size:13px;color:var(--subtle);margin:10px 0 0}.rule-chapter[hidden]{display:none!important}.rule-chapter{scroll-margin-top:100px}
.reader-tools{display:flex;align-items:center;justify-content:space-between;gap:15px;border-block:1px solid var(--line);padding:14px 0;margin:28px 0}.reader-tools>div{display:flex;gap:6px}.reading-estimate{font-size:13px;color:var(--subtle)}
.story-body p,.story-body li,.story-body .ricos-content p,.story-body .ricos-content li{font-size:var(--reading-size,18px)!important;line-height:1.85!important}
.back-top{transition:background-color .2s,transform .2s}.back-top:hover{transform:translateY(-4px)}
@media(hover:none){.project-card:hover,.miniature-format-card:hover,.story-card:hover,.button:hover,.home-directory a:hover,.faction-image:hover img{transform:none}}
@media(max-width:600px){.rules-search{padding:16px}.reader-tools{gap:8px}.reader-tools button{padding:9px 11px}.artwork-expand{top:10px;right:10px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.project-card:hover,.miniature-format-card:hover,.story-card:hover,.button:hover,.home-directory a:hover,.faction-image:hover img,.back-top:hover{transform:none}}
@media(prefers-reduced-motion:reduce){.hero-art{animation:none!important;transform:none!important}.motion-arrow{transform:none!important}.hero-intro-pending .hero-content>*,.hero-intro-pending .hero-foot,.hero-intro-pending .art-note{opacity:1!important;transform:none!important;pointer-events:auto!important}.hero-intro-pending .hero-shade{opacity:1!important}}
@media print{.page-progress,.rules-search,.reader-tools,.artwork-expand{display:none!important}.rule-chapter[hidden]{display:block!important}}
