﻿/*
Theme Name: Rafael Trabasso
Theme URI: https://rafaeltrabasso.com
Author: Rafael Trabasso
Description: Custom classic theme for rafaeltrabasso.com. No blocks, no page builders. Three templates (home, section, sub-section), bilingual pt-BR/EN via Polylang, self-hosted fonts.
Version: 0.2.0
Requires at least: 6.0
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: rafaeltrabasso
*/

/* ==========================================================================
   Fonts — Google Sans Flex (display/prose) + Azeret Mono (UI/body). Self-hosted.
   ========================================================================== */

@font-face {
  font-family: 'Google Sans Flex';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('fonts/gsflex-latin.woff2') format('woff2-variations');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Google Sans Flex';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('fonts/gsflex-latinext.woff2') format('woff2-variations');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Azeret Mono';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('fonts/azeret-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Azeret Mono';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('fonts/azeret-latinext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Hallmark · macrostructure: Case Collage (Mosby × BBS) · shell: title-tab window
   pre-emit critique: P5 H5 E5 S5 R5 V5 · design-layout-bbs-mosby.md */

:root {
  --font-display: 'Google Sans Flex', system-ui, sans-serif;
  --font-body: 'Azeret Mono', ui-monospace, monospace;
  --font-ui: 'Azeret Mono', ui-monospace, monospace;
  --font-chrome: 'Azeret Mono', ui-monospace, monospace;
  --font-prose: 'Google Sans Flex', system-ui, sans-serif;

  /* Dark palette seeds */
  --navy-electric: #390099;
  --dark-raspberry: #9e0059;
  --hot-fuchsia: #ff0054;
  --blaze-orange: #ff5400;
  --amber-gold: #ffbd00;

  /* Light palette seeds */
  --bright-snow: #f8f9fa;
  --platinum: #e9ecef;
  --alabaster-grey: #dee2e6;
  --pale-slate: #ced4da;
  --pale-slate-2: #adb5bd;
  --slate-grey: #6c757d;
  --iron-grey: #495057;
  --gunmetal: #343a40;
  --carbon-black: #212529;

  /* Arraial palette seeds */
  --ink-black: #001219;
  --dark-teal: #005f73;
  --dark-cyan: #0a9396;
  --pearl-aqua: #94d2bd;
  --vanilla-custard: #e9d8a6;
  --golden-orange: #ee9b00;
  --burnt-caramel: #ca6702;
  --rusty-spice: #bb3e03;
  --oxidized-iron: #ae2012;
  --brown-red: #9b2226;

  /* Dark mode (default): navy void + electric nav accents */
  --color-surround: #07040f;
  --color-stage: #0e0818;
  --color-case: #161022;
  --color-ink: var(--bright-snow);
  --color-muted: var(--pale-slate-2);
  --color-line: color-mix(in srgb, var(--navy-electric) 45%, #2a2038);
  --color-accent: var(--amber-gold);
  --color-on-accent: #000000;
  --color-menu-open: color-mix(in srgb, var(--navy-electric) 42%, #12081c);

  --rt-accent-index: var(--hot-fuchsia);
  --rt-accent-now: var(--blaze-orange);
  --rt-accent-text: var(--amber-gold);
  --rt-accent-image: var(--blaze-orange);
  --rt-accent-web: #b8f000;
  --rt-accent-bio: #ff2d8a;
  --rt-accent-contact: #7b3dff;

  --measure: 65ch;
  --space-3xs: 0.25rem;
  --space-2xs: 0.5rem;
  --space-xs: 0.75rem;
  --space-sm: 1rem;
  --space-md: 1.5rem;
  --space-lg: 2rem;
  --space-xl: 3rem;
  --space-2xl: 4.5rem;
  --space-3xl: 6.5rem;

  --size-body: 0.8125rem; /* 13px — Bio / site default */
  --size-display: clamp(2.5rem, 7vw, 4.5rem);
  --menubar-h: 3.25rem;
  --status-h: 2rem;
  --rt-grid-gap: 0.75rem;
  /* Title breathing room — generous, equal; text-box-trim peels font slack. */
  --rt-title-pad-y: 2.15rem;
  --rt-title-pad-y-optical: 2.15rem;

  /* Motion — one language for layout, chrome, and soft-nav. */
  --rt-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --rt-dur-snap: 160ms;
  --rt-dur-fade: 240ms;
  --rt-dur: 360ms;
  --rt-dur-layout: 480ms;
  --rt-dur-theme: 700ms;
}

.section-palavras, .section-words { --color-accent: var(--rt-accent-text); }
.section-imagens, .section-images { --color-accent: var(--rt-accent-image); }
.section-web, .section-web-works,
.section-codigo, .section-code { --color-accent: var(--rt-accent-web); }
.section-bio, .section-about { --color-accent: var(--rt-accent-bio); }
.section-contato, .section-contact { --color-accent: var(--rt-accent-contact); }
.section-agora, .section-now { --color-accent: var(--rt-accent-now); }
.home {
  --rt-accent-index: #00e5ff;
  --color-accent: var(--rt-accent-index);
}

/* ==========================================================================
   Motion system — sizes + colors always fluid (no channel exceptions).
   Interactive hovers use --rt-dur-snap so they stay snappy.
   ========================================================================== */
body,
.rt-stage,
.rt-main,
.rt-surround {
  transition:
    color var(--rt-dur-theme) var(--rt-ease),
    background-color var(--rt-dur-theme) var(--rt-ease),
    background var(--rt-dur-theme) var(--rt-ease),
    border-color var(--rt-dur-theme) var(--rt-ease);
}
.rt-split {
  transition: grid-template-columns var(--rt-dur-layout) var(--rt-ease);
}
.rt-panel,
.rt-panel--content,
.rt-panel--menu,
.rt-win-frame,
.rt-win,
.rt-win-bar,
.rt-win-title,
.rt-case-head,
.rt-case-head-crumb,
.rt-case-head-main,
.rt-case-head-main--ratios,
.rt-chrome,
.rt-status,
.rt-page-title,
.rt-crumb-item,
.rt-crumb-item a,
.rt-crumb-item span,
.rt-year-grid,
.rt-year-sum,
.rt-media-menu,
.rt-desk-icons,
.rt-media-folders {
  transition:
    color var(--rt-dur-theme) var(--rt-ease),
    background-color var(--rt-dur-theme) var(--rt-ease),
    background var(--rt-dur-theme) var(--rt-ease),
    border-color var(--rt-dur-theme) var(--rt-ease),
    box-shadow var(--rt-dur-theme) var(--rt-ease),
    outline-color var(--rt-dur-theme) var(--rt-ease);
}
.rt-nav-link,
.rt-media-link,
.rt-media-link-title,
.rt-media-folder,
.rt-media-folder-label,
.rt-year-link,
.rt-year-link-title,
.rt-year-sum,
.rt-year-label,
.rt-split-ratio,
.rt-ratio-a,
.rt-ratio-b,
.rtpg-icon,
.rtpg-icon b,
.rtpg-icon i,
a {
  transition:
    color var(--rt-dur-snap) ease,
    background-color var(--rt-dur-snap) ease,
    border-color var(--rt-dur-snap) ease,
    box-shadow var(--rt-dur-snap) ease,
    opacity var(--rt-dur-fade) ease;
}
.rt-win-collapse-slot {
  transition:
    grid-template-rows var(--rt-dur) var(--rt-ease),
    opacity var(--rt-dur-fade) ease;
}
.rt-year-panel {
  transition: grid-template-rows var(--rt-dur) var(--rt-ease);
}
.rt-year-list > li {
  transition:
    grid-template-rows var(--rt-dur) var(--rt-ease),
    opacity var(--rt-dur-fade) ease;
}
@media (prefers-reduced-motion: reduce) {
  :root {
    --rt-dur-snap: 0.01ms;
    --rt-dur-fade: 0.01ms;
    --rt-dur: 0.01ms;
    --rt-dur-layout: 0.01ms;
    --rt-dur-theme: 0.01ms;
  }
}

*, *::before, *::after { box-sizing: border-box; }
html, body { overflow-x: clip; }

/* Blocky 90s/2000s scrollbars — theme-colored */
html {
  scrollbar-width: auto;
  scrollbar-color: var(--color-muted) var(--color-case);
}
*::-webkit-scrollbar {
  width: 14px;
  height: 14px;
}
*::-webkit-scrollbar-track {
  background: var(--color-case);
  border: 1px solid var(--color-line);
}
*::-webkit-scrollbar-thumb {
  background: color-mix(in srgb, var(--color-muted) 75%, var(--color-ink));
  border: 2px solid var(--color-case);
  border-radius: 0;
  box-shadow: inset -1px -1px 0 color-mix(in srgb, #000 35%, transparent),
              inset 1px 1px 0 color-mix(in srgb, #fff 18%, transparent);
}
*::-webkit-scrollbar-thumb:hover {
  background: var(--color-accent);
}
*::-webkit-scrollbar-button {
  display: block;
  width: 14px;
  height: 14px;
  background: color-mix(in srgb, var(--color-line) 80%, var(--color-case));
  border: 1px solid var(--color-case);
  background-repeat: no-repeat;
  background-position: center;
}
*::-webkit-scrollbar-button:single-button:vertical:decrement {
  background-image: linear-gradient(transparent 4px, var(--color-ink) 4px, var(--color-ink) 5px, transparent 5px),
    linear-gradient(45deg, transparent 45%, var(--color-ink) 45%, var(--color-ink) 55%, transparent 55%),
    linear-gradient(-45deg, transparent 45%, var(--color-ink) 45%, var(--color-ink) 55%, transparent 55%);
}
*::-webkit-scrollbar-button:single-button:vertical:increment {
  background-image: linear-gradient(transparent 8px, var(--color-ink) 8px, var(--color-ink) 9px, transparent 9px),
    linear-gradient(135deg, transparent 45%, var(--color-ink) 45%, var(--color-ink) 55%, transparent 55%),
    linear-gradient(-135deg, transparent 45%, var(--color-ink) 45%, var(--color-ink) 55%, transparent 55%);
}
*::-webkit-scrollbar-corner {
  background: var(--color-case);
  border: 1px solid var(--color-line);
}
.rt-gallery-modal-body::-webkit-scrollbar,
.rt-site-frame-body::-webkit-scrollbar,
.rt-win-body::-webkit-scrollbar {
  width: 16px;
  height: 16px;
}

body {
  margin: 0;
  padding: clamp(0.5rem, 3vw, 2rem);
  min-height: 100vh;
  font-family: var(--font-body);
  font-size: var(--size-body);
  font-weight: 400;
  line-height: 1.7;
  letter-spacing: 0.01em;
  color: var(--color-ink);
  background:
    radial-gradient(ellipse at 78% 12%, color-mix(in srgb, var(--hot-fuchsia) 12%, transparent), transparent 26rem),
    radial-gradient(ellipse at 14% 88%, color-mix(in srgb, var(--navy-electric) 16%, transparent), transparent 24rem),
    linear-gradient(165deg, #0a0614 0%, var(--color-stage) 48%, var(--color-surround) 100%);
  -webkit-font-smoothing: antialiased;
  -webkit-text-size-adjust: 100%;
}

img, video, svg { max-width: 100%; height: auto; display: block; }

h1, h2, h3, h4,
.rt-display, .rt-menubar-brand, .rt-menubar-link,
.rt-door-title, .rt-board-title, .rt-win-title {
  font-family: var(--font-display);
  font-style: normal;
}

h1, h2, h3, h4 {
  font-weight: 700;
  line-height: 1.12;
  margin: 0 0 var(--space-md);
  overflow-wrap: anywhere;
}

.rt-display {
  font-size: var(--size-display);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.05;
  margin: 0 0 var(--space-lg);
  text-transform: none;
}

.rt-kicker {
  font-family: var(--font-display);
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin: 0 0 var(--space-sm);
}

p, ul, ol, blockquote { margin: 0 0 var(--space-md); }
a { color: var(--rt-link, inherit); text-decoration-thickness: 1px; text-underline-offset: 0.15em; }
a:hover, a:focus-visible { color: var(--color-accent); }

blockquote {
  border-left: 2px solid var(--color-line);
  margin-left: 0;
  padding-left: var(--space-sm);
  color: var(--color-muted);
}

.skip-link { position: absolute; left: -9999px; }
.skip-link:focus {
  left: var(--space-sm); top: var(--space-sm);
  background: var(--color-case); color: var(--color-ink);
  padding: var(--space-2xs) var(--space-xs); z-index: 200;
}

/* ---- Content stage (not a window) ---- */
.rt-stage {
  width: min(72rem, 100%);
  min-height: calc(100vh - clamp(1rem, 6vw, 4rem));
  margin: 0 auto;
  display: grid;
  gap: var(--space-sm);
  grid-template-rows: auto 1fr auto;
  background: transparent;
}

.rt-main {
  position: relative;
  width: 100%;
  padding: 0;
  min-width: 0;
  min-height: 24rem;
  background: transparent;
  border: 0;
  box-shadow: none;
}

.rt-view {
  display: grid;
  gap: var(--space-sm);
}
/* Soft-nav must not blank the whole view — frames stay; inners fade in JS. */

/* Section window chrome — same rule for every channel (menu + content). */
.section-palavras .rt-panel--menu,
.section-words .rt-panel--menu,
.section-palavras .rt-panel--content,
.section-words .rt-panel--content {
  border-color: color-mix(in srgb, var(--rt-accent-text) 40%, var(--color-line));
}
.section-imagens .rt-panel--menu,
.section-images .rt-panel--menu,
.section-imagens .rt-panel--content,
.section-images .rt-panel--content {
  border-color: color-mix(in srgb, var(--rt-accent-image) 40%, var(--color-line));
}
.section-web .rt-panel--menu,
.section-web-works .rt-panel--menu,
.section-codigo .rt-panel--menu,
.section-code .rt-panel--menu,
.section-web .rt-panel--content,
.section-web-works .rt-panel--content,
.section-codigo .rt-panel--content,
.section-code .rt-panel--content {
  border-color: color-mix(in srgb, var(--rt-accent-web) 40%, var(--color-line));
}
.section-bio .rt-panel--menu,
.section-about .rt-panel--menu,
.section-bio .rt-panel--content,
.section-about .rt-panel--content {
  border-color: color-mix(in srgb, var(--rt-accent-bio) 40%, var(--color-line));
}
.section-contato .rt-panel--menu,
.section-contact .rt-panel--menu,
.section-contato .rt-panel--content,
.section-contact .rt-panel--content {
  border-color: color-mix(in srgb, var(--rt-accent-contact) 40%, var(--color-line));
}
.section-agora .rt-panel--menu,
.section-now .rt-panel--menu,
.section-agora .rt-panel--content,
.section-now .rt-panel--content {
  border-color: color-mix(in srgb, var(--rt-accent-now) 40%, var(--color-line));
}
.section-palavras .rt-panel--content:not(.rt-essay-reader) .rt-page-title,
.section-words .rt-panel--content:not(.rt-essay-reader) .rt-page-title { color: var(--rt-accent-text); }
.section-imagens .rt-page-title,
.section-images .rt-page-title { color: var(--rt-accent-image); }
.section-web .rt-page-title,
.section-web-works .rt-page-title,
.section-codigo .rt-page-title,
.section-code .rt-page-title { color: var(--rt-accent-web); }
.section-bio .rt-page-title,
.section-about .rt-page-title { color: var(--rt-accent-bio); }
.section-contato .rt-page-title,
.section-contact .rt-page-title { color: var(--rt-accent-contact); }
.section-agora .rt-page-title,
.section-now .rt-page-title { color: var(--rt-accent-now); }
.home .rt-page-title { color: var(--rt-accent-index); }
.rt-essay-reader .rt-win-bar--essay .rt-page-title {
  color: var(--color-ink);
}

.rt-page-title {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  flex: 1 1 auto;
  min-width: 0;
  font-family: var(--font-display);
  font-size: clamp(1.55rem, 3.4vw, 2.35rem);
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.03em;
  text-transform: lowercase;
  color: var(--rt-page-title-color, var(--color-ink));
  overflow: visible;
  text-overflow: unset;
  white-space: normal;
  /* Trim to real ink (incl. accents + descenders) so equal pad reads equal. */
  text-box-trim: trim-both;
  text-box-edge: text text;
}

.rt-win-bar--content {
  display: flex;
  align-items: flex-start;
  gap: var(--space-sm);
  justify-content: space-between;
}
/* Door titles (Palavras, Imagens…): same breathing pad as subpage titles. */
.rt-win-bar--toolbar {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  justify-content: space-between;
  padding: var(--rt-title-pad-y) var(--space-md) var(--rt-title-pad-y-optical);
  border-bottom: 1px solid var(--color-line);
  background: transparent;
}
.rt-win-bar--toolbar > .rt-page-title,
.rt-win-bar--toolbar > .rt-page-title-row {
  flex: 1 1 auto;
  min-width: 0;
  padding: 0;
  letter-spacing: -0.03em;
  white-space: normal;
  text-overflow: unset;
  overflow: visible;
  line-height: 1;
  font-weight: 700;
}
/* H1 left, icon pinned to the right edge of the title panel.
   Toolbar pad is the only inset — equal on all sides around the icon. */
.rt-page-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
}
.rt-page-title-row .rt-page-title {
  flex: 1 1 auto;
  min-width: 0;
}
.rt-page-title-icon {
  flex: 0 0 auto;
  /* Always 3× native 32px — matches two-line H1 height, independent of wrap. */
  width: 96px;
  height: 96px;
  object-fit: contain;
  image-rendering: -moz-crisp-edges;
  image-rendering: pixelated;
}
.rt-win-bar--toolbar .rt-win-bar-end {
  flex: 0 0 auto;
  align-self: center;
  margin-left: auto;
}
.rt-win-bar--toolbar .rt-win-controls {
  flex: 0 0 auto;
}

/* Title patterns — crisp overlay on case; section accent title colors stay.
   Motifs: 1 grid · 2 diagonal · 3 horizontal. (PCE knockout lives in .rt-knockout.) */
.rt-win-bar--toolbar[data-rt-title-pattern] {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  --rt-title-pattern-size: 8px;
  --rt-title-pattern-opacity: 0.3;
  --rt-title-pattern-ink: color-mix(in srgb, #a78bfa 32%, var(--color-case));
}
.rt-win-bar--toolbar[data-rt-title-pattern]::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: var(--rt-title-pattern-opacity);
  background-color: var(--rt-title-pattern-ink);
  -webkit-mask-image: var(--rt-title-pattern);
  mask-image: var(--rt-title-pattern);
  -webkit-mask-size: var(--rt-title-pattern-size);
  mask-size: var(--rt-title-pattern-size);
  -webkit-mask-repeat: repeat;
  mask-repeat: repeat;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
}
.rt-win-bar--toolbar[data-rt-title-pattern] > * {
  position: relative;
  z-index: 1;
}
.rt-win-bar--toolbar[data-rt-title-pattern] .rt-page-title {
  text-shadow:
    0 0 0.4rem var(--color-case),
    0 0 0.85rem color-mix(in srgb, var(--color-case) 85%, transparent);
}
[data-rt-title-pattern="1"] {
  --rt-title-pattern: url("assets/patterns/pattern-grid.svg");
  --rt-title-pattern-size: 8px;
}
[data-rt-title-pattern="2"] {
  --rt-title-pattern: url("assets/patterns/pattern-diagonal.svg");
  --rt-title-pattern-size: 8px;
}
[data-rt-title-pattern="3"] {
  --rt-title-pattern: url("assets/patterns/pattern-horizontal.svg");
  --rt-title-pattern-size: 8px;
}

/* PCE dither knockout — opt-in utility (not on title bars).
   Usage: class="rt-knockout" on a surface; ink via --rt-knockout-ink (default accent).
   Letters/content paint #000 so they punch through the dithered accent field. */
.rt-knockout {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: var(--color-stage);
  --rt-knockout-size: 2px;
  --rt-knockout-ink: var(--color-accent);
  color: #000;
}
.rt-knockout::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-color: var(--rt-knockout-ink);
  -webkit-mask-image: url("assets/patterns/pattern-dither.svg");
  mask-image: url("assets/patterns/pattern-dither.svg");
  -webkit-mask-size: var(--rt-knockout-size);
  mask-size: var(--rt-knockout-size);
  -webkit-mask-repeat: repeat;
  mask-repeat: repeat;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
}
.rt-knockout > * {
  position: relative;
  z-index: 1;
  color: #000;
  text-shadow: none;
}
.rt-win-bar--essay .rt-page-title {
  color: var(--color-ink);
}
.rt-win-bar-end {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  flex: 0 0 auto;
  min-width: 0;
  margin-left: auto;
}
.rt-crumb {
  min-width: 0;
  overflow: hidden;
  flex: 1 1 auto;
}
/* Top-level doors: keep trail in DOM for SEO, not painted. */
.rt-crumb--seo {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.rt-status .rt-crumb--seo {
  display: none;
}
.rt-crumb-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: nowrap;
  gap: 0.35rem;
  align-items: center;
  font-family: var(--font-chrome);
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--color-muted);
  text-transform: uppercase;
}
.rt-crumb-item:not(:last-child)::after {
  content: '/';
  margin-left: 0.35rem;
  color: var(--color-accent);
  opacity: 0.9;
  font-weight: 700;
}
.rt-crumb-item a {
  color: inherit;
  text-decoration: none;
}
.rt-crumb-item a:hover { color: var(--color-accent); }
.rt-crumb-item.is-current span {
  color: var(--color-ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 12rem;
  display: inline-block;
  vertical-align: bottom;
}
.text-meta--label {
  display: inline-block;
  max-width: 100%;
  margin: 0 0 var(--space-md);
  padding: 0.35rem 0.55rem;
  /* Match Words menu item gloss (.rt-year-link-gloss). */
  font-family: var(--font-body);
  font-size: var(--size-body);
  font-weight: 400;
  letter-spacing: 0.01em;
  line-height: 1.45;
  color: var(--color-muted);
  background: color-mix(in srgb, var(--color-line) 35%, var(--color-case));
  border: 1px solid var(--color-line);
}

/* Opt-in placement primitive for every new section composition. */
.rt-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  grid-auto-rows: var(--rt-grid-track, 4rem);
  gap: var(--rt-grid-gap);
  min-width: 0;
}
.rt-grid-item {
  grid-column: var(--rt-col, 1) / span var(--rt-span, 12);
  grid-row: var(--rt-row, auto) / span var(--rt-rows, 1);
  min-width: 0;
  min-height: 0;
}

/* ---- Menu chrome (toolbar right + text nav, no pills) ---- */
.rt-menubar {
  position: relative;
  z-index: 50;
  background: transparent;
}

/* Home desk: chrome below the main stacking context so dragged
   windows can paint over header + footer. Window z-index is set in JS. */
body.home.rt-view-desktop .rt-menubar,
body.home.rt-view-desktop .rt-status {
  z-index: 1;
}
body.home.rt-view-desktop .rt-main {
  position: relative;
  z-index: 2;
}

.rt-chrome {
  border: 1px solid var(--color-line);
  background: color-mix(in srgb, var(--color-case) 88%, #000);
}

/* Toolbar row = full-width PCE knockout field (brand + tools). Nav below is separate.
   Same dither recipe as .rt-knockout (2px checker + stage base). */
.rt-toolbar {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm);
  padding: 1.05rem var(--space-md);
  border-bottom: 1px solid var(--color-line);
  color: var(--color-muted);
  font-family: var(--font-body);
  font-size: 0.7rem;
  line-height: 1;
  background: var(--color-stage);
  --rt-knockout-size: 2px;
  --rt-knockout-ink: var(--color-accent);
}
.rt-toolbar::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-color: var(--rt-knockout-ink);
  -webkit-mask-image: url("assets/patterns/pattern-dither.svg");
  mask-image: url("assets/patterns/pattern-dither.svg");
  -webkit-mask-size: var(--rt-knockout-size);
  mask-size: var(--rt-knockout-size);
  -webkit-mask-repeat: repeat;
  mask-repeat: repeat;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
}
/* Dark + arraial: dither ink ~10% lighter. Light mode keeps base ink. */
body:not(.rt-mode-light) .rt-toolbar::before,
body:not(.rt-mode-light) .rt-knockout::before {
  filter: brightness(1.1);
}

/* Home (dark only): dither ink fixed — one door accent, no cycle. */
body.home:not(.rt-mode-light):not(.rt-mode-arraial) .rt-toolbar::before {
  background-color: var(--rt-accent-index);
}

/* Brand = page-title size; letters punch as #000 through the dither field. */
.rt-toolbar-brand {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  flex: 0 1 auto;
  min-width: 0;
  margin: 0;
  padding: 0;
  font-family: var(--font-display);
  font-size: clamp(1.55rem, 3.4vw, 2.35rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1;
  text-decoration: none;
  text-transform: lowercase;
  background: transparent;
  color: #000;
  text-box-trim: trim-both;
  text-box-edge: text text;
}
.rt-toolbar-brand > span {
  color: #000;
  -webkit-text-fill-color: #000;
}
.rt-toolbar-brand:hover,
.rt-toolbar-brand:focus-visible {
  filter: brightness(1.12);
}
.rt-toolbar-brand.is-current {
  filter: none;
}

.rt-toolbar-tools {
  position: relative;
  z-index: 1;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: var(--space-3xs);
  margin-left: auto;
}

.rt-tool {
  min-height: 1.75rem;
  display: inline-flex;
  align-items: center;
  padding: 0.15rem 0.4rem;
  border: 1px solid var(--color-line);
  background: color-mix(in srgb, var(--color-stage) 84%, #000);
  color: inherit;
  font: inherit;
  letter-spacing: 0.04em;
  cursor: pointer;
}
.rt-tool:hover,
.rt-tool:focus-visible {
  color: var(--color-accent);
  border-color: var(--color-accent);
}
.rt-tool.is-active,
.rt-tool.is-active:hover,
.rt-tool.is-active:focus-visible,
.rt-tool[aria-pressed="true"],
.rt-tool[aria-pressed="true"]:hover,
.rt-tool[aria-pressed="true"]:focus-visible,
.rt-mode-btn.is-active,
.rt-mode-btn.is-active:hover,
.rt-mode-btn[aria-pressed="true"],
.rt-mode-btn[aria-pressed="true"]:hover {
  color: var(--color-on-accent);
  background: var(--color-accent);
  border-color: var(--color-accent);
}
.rt-tool:active:not(.is-active):not([aria-pressed="true"]) {
  background: var(--color-line);
}

.rt-menubar-toggle {
  display: none;
  margin-left: 0.25rem;
  font-family: var(--font-ui);
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--color-ink);
  background: transparent;
  border: 1px solid var(--color-line);
  padding: 0.35rem 0.65rem;
  cursor: pointer;
}

.rt-menubar-nav {
  display: flex;
  align-items: stretch;
  gap: 0;
  padding: 0;
  min-width: 0;
}

.rt-menubar-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 0;
  min-width: 0;
  flex: 1 1 auto;
}

.rt-menubar-list > li {
  display: flex;
  align-items: stretch;
}
.rt-menubar-list > li:not(:last-child)::after {
  content: '';
  width: 1px;
  align-self: stretch;
  margin: 0;
  background: color-mix(in srgb, var(--color-ink) 28%, var(--color-line));
}

.rt-nav-link {
  display: inline-flex;
  align-items: center;
  gap: 0.35em;
  margin: 0;
  padding: 0.55rem 0.85rem;
  border: 0;
  border-radius: 0;
  background: transparent;
  font-family: var(--font-ui);
  font-size: 0.78rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  line-height: 1.15;
  text-decoration: none;
  text-transform: uppercase;
  color: var(--color-muted);
  white-space: nowrap;
}
.rt-nav-link:hover,
.rt-nav-link:focus-visible {
  color: var(--color-on-accent);
  background: var(--nav-accent, var(--color-accent));
  outline: none;
}
.is-current .rt-nav-link {
  color: var(--color-on-accent);
  background: var(--nav-accent, var(--color-accent));
}
.rt-nav-link:focus-visible,
.rt-menubar-lang a:focus-visible,
.rt-menubar-toggle:focus-visible,
.rt-tool:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}
.rt-menubar-num {
  font-variant-numeric: tabular-nums;
  color: inherit;
}
.rt-accent--index { --nav-accent: var(--rt-accent-index); color: var(--nav-accent); }
.rt-accent--now { --nav-accent: var(--rt-accent-now); color: var(--nav-accent); }
.rt-accent--text { --nav-accent: var(--rt-accent-text); color: var(--nav-accent); }
.rt-accent--image { --nav-accent: var(--rt-accent-image); color: var(--nav-accent); }
.rt-accent--web,
.rt-accent--code { --nav-accent: var(--rt-accent-web); color: var(--nav-accent); }
.rt-accent--bio { --nav-accent: var(--rt-accent-bio); color: var(--nav-accent); }
.rt-accent--contact { --nav-accent: var(--rt-accent-contact); color: var(--nav-accent); }
.rt-accent--index .rt-menubar-num,
.rt-accent--now .rt-menubar-num,
.rt-accent--text .rt-menubar-num,
.rt-accent--image .rt-menubar-num,
.rt-accent--web .rt-menubar-num,
.rt-accent--bio .rt-menubar-num,
.rt-accent--contact .rt-menubar-num { color: inherit; }
.is-current .rt-nav-link.rt-accent--index,
.is-current .rt-nav-link.rt-accent--now,
.is-current .rt-nav-link.rt-accent--text,
.is-current .rt-nav-link.rt-accent--image,
.is-current .rt-nav-link.rt-accent--web,
.is-current .rt-nav-link.rt-accent--code,
.is-current .rt-nav-link.rt-accent--bio,
.is-current .rt-nav-link.rt-accent--contact {
  color: var(--color-on-accent);
}

.rt-menubar-lang {
  list-style: none;
  margin: 0 0 0 auto;
  padding: 0 0.55rem;
  display: flex;
  gap: 0;
  font-family: var(--font-ui);
  font-size: 0.78rem;
  font-weight: 600;
  align-items: stretch;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.rt-menubar-lang li {
  display: flex;
  align-items: stretch;
}
.rt-menubar-lang li:not(:last-child)::after {
  content: '';
  width: 1px;
  align-self: stretch;
  margin: 0;
  background: var(--color-line);
}
.rt-menubar-lang a {
  display: inline-flex;
  align-items: center;
  padding: 0.55rem 0.75rem;
  border: 0;
  border-radius: 0;
  text-decoration: none;
  color: var(--color-muted);
}
.rt-menubar-lang a:hover,
.rt-menubar-lang a:focus-visible {
  color: var(--color-on-accent);
  background: var(--color-accent);
  outline: none;
}
.rt-menubar-lang .current-lang a {
  color: var(--color-on-accent);
  background: var(--color-accent);
}

/* ---- Status bar ---- */
.rt-status {
  display: flex;
  justify-content: space-between;
  gap: var(--space-md);
  align-items: center;
  min-height: var(--status-h);
  padding: 0.35rem var(--space-md);
  border: 1px solid var(--color-line);
  background: color-mix(in srgb, var(--color-case) 82%, #000);
  box-shadow: 0.2rem 0.2rem 0 color-mix(in srgb, var(--color-case) 55%, transparent);
  font-family: var(--font-body);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  color: var(--color-muted);
  text-transform: lowercase;
}
.rt-status-left,
.rt-status-right {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  min-width: 0;
}
.rt-status-left { flex: 1; }
.rt-status .rt-crumb {
  margin: 0;
  font-size: inherit;
  color: inherit;
}
.rt-status .rt-crumb-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.15rem 0.35rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.rt-status .rt-crumb-item:not(:last-child)::after {
  content: "/";
  margin-left: 0.35rem;
  opacity: 0.55;
}
.rt-status .rt-crumb a {
  color: inherit;
  text-decoration: none;
}
.rt-status .rt-crumb a:hover,
.rt-status .rt-crumb a:focus-visible {
  color: var(--color-accent);
}
.rt-status .rt-crumb-item.is-current span {
  color: var(--color-ink);
  max-width: 14rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: inline-block;
  vertical-align: bottom;
}
.rt-back-top {
  color: inherit;
  text-decoration: none;
  border: 1px solid transparent;
  padding: 0.1rem 0.35rem;
  letter-spacing: 0.06em;
}
.rt-back-top:hover,
.rt-back-top:focus-visible {
  color: var(--color-accent);
  border-color: var(--color-line);
  outline: none;
}
.rt-status-copy { white-space: nowrap; }

/* Dragging removed — minimize tracking stays grid-stable. */

/* Minimize / roll-up — content below reflows with the height change. */
.rt-win-controls {
  display: inline-flex;
  gap: 0.15rem;
  align-items: center;
}
.rt-win-min,
.rt-win-close,
.rt-win-tool {
  min-width: 1.35rem;
  min-height: 1.35rem;
  padding: 0;
  border: 1px solid var(--color-line);
  background: transparent;
  color: var(--color-muted);
  font: inherit;
  line-height: 1;
  cursor: pointer;
}
.rt-win-tool--crt {
  min-width: auto;
  padding: 0 0.35rem;
  letter-spacing: 0.06em;
  font-size: 0.68rem;
  text-transform: uppercase;
}
.rt-win-min:hover,
.rt-win-close:hover,
.rt-win-tool:hover,
.rt-win-tool:focus-visible {
  color: var(--color-accent);
  border-color: var(--color-accent);
  outline: none;
}
.rt-win-tool[aria-pressed="true"] {
  color: var(--color-on-accent);
  background: var(--color-accent);
  border-color: var(--color-accent);
}
.rt-win-tool:disabled {
  opacity: 0.35;
  cursor: default;
  pointer-events: none;
}

.rt-win-collapse-slot {
  display: grid;
  grid-template-rows: 1fr;
  opacity: 1;
  overflow: hidden;
  /* rows/opacity: see motion system */
}
.rt-win-collapse-slot > * {
  overflow: hidden;
  min-height: 0;
}
.rt-win-collapse-inner {
  min-height: 0;
  overflow: hidden;
}
/* Shared roll — minimize control only. Soft-nav uses fade + height morph. */
.is-minimized > .rt-win-collapse-slot,
.is-rolled > .rt-win-collapse-slot {
  grid-template-rows: 0fr;
  opacity: 0;
  pointer-events: none;
}
.is-minimized {
  overflow: hidden;
}
.is-minimized > .rt-win-bar,
.is-minimized > .rt-case-head,
.is-minimized > .rt-essay-toolbar,
.is-rolled > .rt-win-bar,
.is-rolled > .rt-case-head {
  border-bottom-color: transparent;
}
/* Soft-nav content morph: lock height while fading body. */
.rt-win.is-morphing,
.rt-panel.is-morphing,
.rt-win-frame.is-morphing {
  overflow: hidden;
}
@media (prefers-reduced-motion: reduce) {
  .rt-win-collapse-slot {
    transition: none !important;
  }
}

/* Panel reload — opacity only, no horizontal shake */
.rt-reveal-media {
  opacity: 0;
  transition: opacity var(--rt-dur-fade) ease;
}
.rt-reveal-media.is-in { opacity: 1; }

/* ---- Theme modes ---- */
body.rt-mode-light {
  --color-surround: var(--bright-snow);
  --color-stage: var(--platinum);
  --color-case: #ffffff;
  --color-ink: var(--carbon-black);
  --color-muted: var(--slate-grey);
  --color-line: var(--alabaster-grey);
  --color-accent: var(--carbon-black);
  --color-on-accent: var(--bright-snow);
  --color-menu-open: var(--platinum);
  /* Full mono nav — greyscale only */
  --rt-accent-index: var(--carbon-black);
  --rt-accent-now: var(--gunmetal);
  --rt-accent-text: var(--iron-grey);
  --rt-accent-image: var(--iron-grey);
  --rt-accent-web: var(--slate-grey);
  --rt-accent-bio: var(--gunmetal);
  --rt-accent-contact: var(--carbon-black);
  background:
    radial-gradient(ellipse at 78% 12%, color-mix(in srgb, var(--gunmetal) 9%, transparent), transparent 26rem),
    radial-gradient(ellipse at 14% 88%, color-mix(in srgb, var(--alabaster-grey) 40%, transparent), transparent 24rem),
    linear-gradient(165deg, var(--bright-snow) 0%, var(--platinum) 48%, var(--bright-snow) 100%);
}
body.rt-mode-light .rt-menubar-list > li:not(:last-child)::after,
body.rt-mode-light .rt-menubar-lang li:not(:last-child)::after {
  background: color-mix(in srgb, var(--carbon-black) 22%, transparent);
}
/* Title patterns — light: soft grey overlay */
body.rt-mode-light .rt-win-bar--toolbar[data-rt-title-pattern] {
  --rt-title-pattern-opacity: 0.2;
  --rt-title-pattern-ink: color-mix(in srgb, #000 26%, var(--color-case));
}
/* Light mode: all chrome icons → greyscale (matches mono nav). */
body.rt-mode-light .rt-page-title-icon,
body.rt-mode-light img[src*="/icons/"] {
  filter: grayscale(1);
}
/* Light mode: site title is white (knockout holes → white ink). */
body.rt-mode-light .rt-toolbar-brand,
body.rt-mode-light .rt-toolbar-brand > span {
  color: #fff;
  -webkit-text-fill-color: #fff;
}
body.rt-mode-arraial {
  --color-surround: #001219;
  --color-stage: #003844;
  --color-case: #0a4a58;
  --color-ink: #ffffff;
  --color-muted: var(--pearl-aqua);
  --color-line: color-mix(in srgb, var(--dark-cyan) 55%, #00252d);
  --color-accent: var(--golden-orange);
  --color-on-accent: var(--ink-black);
  --color-menu-open: color-mix(in srgb, var(--dark-cyan) 35%, #00252d);
  /* Cool/light accents only — no rust/brown against teal */
  --rt-accent-index: var(--pearl-aqua);
  --rt-accent-now: var(--golden-orange);
  --rt-accent-text: var(--vanilla-custard);
  --rt-accent-image: #7dd3c0;
  --rt-accent-web: #c8f542;
  --rt-accent-bio: #5eead4;
  --rt-accent-contact: var(--pearl-aqua);
  background:
    radial-gradient(ellipse at 78% 12%, color-mix(in srgb, var(--golden-orange) 14%, transparent), transparent 26rem),
    radial-gradient(ellipse at 14% 88%, color-mix(in srgb, var(--pearl-aqua) 16%, transparent), transparent 24rem),
    linear-gradient(165deg, #00252d 0%, #003844 48%, #001219 100%);
}
/* Title patterns — arraial: darker overlay */
body.rt-mode-arraial .rt-win-bar--toolbar[data-rt-title-pattern] {
  --rt-title-pattern-opacity: 0.42;
  --rt-title-pattern-ink: color-mix(in srgb, #000 62%, var(--color-case));
}
/* Arraial knockout dither: theme border teal, not section accents. */
body.rt-mode-arraial .rt-toolbar,
body.rt-mode-arraial .rt-knockout {
  --rt-knockout-ink: var(--color-line);
}
/* Site title = arraial gold (same as H1s / mode button). */
body.rt-mode-arraial .rt-toolbar-brand,
body.rt-mode-arraial .rt-toolbar-brand > span {
  color: var(--golden-orange);
  -webkit-text-fill-color: var(--golden-orange);
}
/* H1s: same gold as the active arraial mode button fill */
body.rt-mode-arraial .rt-page-title,
body.rt-mode-arraial .home .rt-page-title,
body.rt-mode-arraial .rt-essay-reader .rt-win-bar--essay .rt-page-title,
body.rt-mode-arraial .section-palavras .rt-panel--content:not(.rt-essay-reader) .rt-page-title,
body.rt-mode-arraial .section-words .rt-panel--content:not(.rt-essay-reader) .rt-page-title,
body.rt-mode-arraial .section-imagens .rt-page-title,
body.rt-mode-arraial .section-images .rt-page-title,
body.rt-mode-arraial .section-web .rt-page-title,
body.rt-mode-arraial .section-web-works .rt-page-title,
body.rt-mode-arraial .section-codigo .rt-page-title,
body.rt-mode-arraial .section-code .rt-page-title,
body.rt-mode-arraial .section-bio .rt-page-title,
body.rt-mode-arraial .section-about .rt-page-title,
body.rt-mode-arraial .section-contato .rt-page-title,
body.rt-mode-arraial .section-contact .rt-page-title,
body.rt-mode-arraial .section-agora .rt-page-title,
body.rt-mode-arraial .section-now .rt-page-title {
  color: var(--golden-orange);
}

/* ---- BBS window module ---- */
.rt-win {
  display: block;
  background: var(--color-case);
  border: 1px solid var(--color-line);
  color: var(--color-ink);
  text-decoration: none;
  min-width: 0;
}
.rt-win-frame {
  background: var(--color-case);
  border: 1px solid var(--color-line);
  color: var(--color-ink);
  min-width: 0;
}
.rt-win-frame > .rt-case-head {
  border: 0;
  border-bottom: 1px solid var(--color-line);
}
/* First block under the ratio/crumb head: no top border (avoids 2px seam).
   Do not target :first-child inside — that clipped hover borders on the first folder. */
.rt-panel--menu > .rt-case-head + * {
  border-top: 0;
}
.rt-win-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-sm);
  padding: 0.35rem 0.65rem;
  border-bottom: 1px solid var(--color-line);
  background: color-mix(in srgb, var(--color-case) 70%, #000);
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-weight: 500;
}
.rt-win-bar.rt-win-bar--toolbar {
  /* Must beat .rt-win-bar compact chrome — match subpage title breathing room. */
  align-items: center;
  padding: var(--rt-title-pad-y) var(--space-md) var(--rt-title-pad-y-optical);
  border-bottom: 1px solid var(--color-line);
  background: transparent;
}
.rt-win-title { color: var(--color-muted); letter-spacing: 0.04em; }
.rt-win-title-link {
  color: inherit;
  text-decoration: none;
}
.rt-win-title-link:hover,
.rt-win-title-link:focus-visible {
  color: var(--color-accent);
  outline: none;
}
.rt-win--embedded {
  width: 100%;
  min-width: 0;
}
.rt-win-body--preview-host,
.rt-win-body--folder-host {
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.rt-win-body--preview-host > .rt-win--embedded,
.rt-win-body--folder-host > .rt-win--embedded {
  flex: 0 0 auto;
}
/* Imagens / Código desk — content keeps normal panel inset. */
.rt-win-body--desk {
  padding: var(--space-md);
}
.rt-desk-icons {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.55rem 0.4rem;
  align-content: start;
  justify-items: center;
}
.rt-desk-icons.rtpg-icons {
  /* Override home 2-col when both classes apply. */
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

/*
 * Site-wide icon grammar (home / menu / desks).
 * Must live here — channel pages do not always load home.css.
 */
.rtpg-icons {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.45rem 0.35rem;
  align-content: start;
  justify-items: center;
}
.rtpg-icon {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.3rem;
  width: 100%;
  max-width: 8.5rem;
  min-width: 0;
  box-sizing: border-box;
  padding: 0.55rem 0.35rem 0.45rem;
  text-align: center;
  text-decoration: none;
  border: 1px dashed transparent;
  background: transparent;
  color: inherit;
  font: inherit;
  cursor: pointer;
  user-select: none;
  -webkit-user-select: none;
  appearance: none;
  -webkit-appearance: none;
}
.rtpg-icon img {
  width: 64px;
  height: 64px;
  object-fit: contain;
  image-rendering: -moz-crisp-edges;
  image-rendering: pixelated;
  flex: none;
}
.rtpg-icon b {
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  font-family: var(--font-ui, monospace);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1.25;
  color: var(--ico-accent, var(--color-ink));
  overflow-wrap: anywhere;
  word-break: break-word;
}
.rtpg-icon i {
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  font-style: normal;
  font-size: 0.64rem;
  letter-spacing: 0.03em;
  line-height: 1.25;
  color: var(--color-muted);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.rtpg-icon:hover,
.rtpg-icon:focus-visible,
.rtpg-icon.is-active,
.rtpg-icon.is-copied {
  border-color: var(--ico-accent, var(--color-accent));
  background: color-mix(in srgb, var(--ico-accent, var(--color-accent)) 12%, transparent);
  outline: none;
}
.rtpg-icon:hover i,
.rtpg-icon:focus-visible i,
.rtpg-icon.is-active i,
.rtpg-icon.is-copied i {
  color: var(--color-ink);
}

/*
 * Left leaf desks (Imagens / Código): 4-col pack, tight gutters
 * so four 64px icons fit a row. Right-panel folders unchanged.
 */
.rt-win-body--desk > .rt-desk-icons,
.rt-win-body--desk > .rt-desk-icons.rtpg-icons,
.rt-win-body > .rt-imagens-leaves,
.rt-win-body > .rt-codigo-leaves,
.rt-win-body > .rt-imagens-hub-desk {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  justify-content: start;
  justify-items: stretch;
  align-content: start;
  column-gap: 0.3rem;
  row-gap: 0.4rem;
  margin: calc(-1 * var(--space-md)) calc(-1 * var(--space-md)) 0;
  padding: var(--space-md);
  border-bottom: 1px dashed var(--color-line);
}
.rt-win-body--desk > .rt-desk-icons .rtpg-icon,
.rt-win-body > .rt-imagens-leaves .rtpg-icon,
.rt-win-body > .rt-codigo-leaves .rtpg-icon,
.rt-win-body > .rt-imagens-hub-desk .rtpg-icon {
  width: 100%;
  max-width: none;
  box-sizing: border-box;
  padding: 0.55rem 0.35rem 0.45rem;
}
/* .rtpg-body is shared with home windows — never pad section desks via that class. */
.rt-desk-icons.rtpg-body {
  padding: 0;
}
.rt-win-body--desk > .rt-desk-icons.rtpg-body,
.rt-win-body > .rt-imagens-leaves.rtpg-body,
.rt-win-body > .rt-codigo-leaves.rtpg-body,
.rt-win-body > .rt-imagens-hub-desk.rtpg-body {
  padding: var(--space-md);
}

/*
 * Section hub covers (Imagens 3 / Código 2). Same full-bleed strip as
 * left leaf desks; photos instead of Win98 launchers. No extra fill —
 * the panel case color shows through.
 */
.rt-win-body > .rt-hub-stacks {
  margin: calc(-1 * var(--space-md)) calc(-1 * var(--space-md)) 0;
  padding: var(--space-md);
  border-bottom: 1px dashed var(--color-line);
}
.rt-hub-stacks {
  display: flex;
  flex-direction: column;
  gap: 0.7rem;
  min-width: 0;
}
.rt-hub-stacks--codigo {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.65rem 0.5rem;
  align-content: start;
}
.rt-hub-stack {
  display: flex;
  flex-direction: column;
  min-width: 0;
  color: inherit;
  text-decoration: none;
  border: 1px dashed transparent;
  padding: 0.15rem;
}
.rt-hub-stack:hover,
.rt-hub-stack:focus-visible {
  border-color: var(--ico-accent, var(--color-accent));
  outline: none;
}
.rt-hub-stack-pics {
  display: block;
  overflow: hidden;
  margin: 0;
  background: #050506;
  border: 1px solid var(--color-line);
}
.rt-hub-stack-pics img {
  display: block;
  width: 100%;
  height: auto;
  vertical-align: top;
}
.rt-hub-stacks--codigo .rt-hub-stack-pics {
  aspect-ratio: 1 / 1;
}
.rt-hub-stacks--codigo .rt-hub-stack-pics img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
}
.rt-hub-stack-pics--pixel img {
  image-rendering: pixelated;
  image-rendering: -moz-crisp-edges;
  image-rendering: crisp-edges;
}
.rt-hub-stack:hover .rt-hub-stack-pics img,
.rt-hub-stack:focus-visible .rt-hub-stack-pics img {
  opacity: 0.92;
}
.rt-hub-stack-cap {
  display: flex;
  flex-direction: column;
  gap: 0.12rem;
  padding: 0.4rem 0.1rem 0.15rem;
  text-align: center;
}
.rt-hub-stack-cap b {
  font-family: var(--font-ui);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: lowercase;
  color: var(--ico-accent, var(--color-accent));
  overflow-wrap: anywhere;
}
.rt-hub-stack-cap i {
  font-family: var(--font-body);
  font-size: 0.72rem;
  font-style: normal;
  letter-spacing: 0.03em;
  text-transform: lowercase;
  color: var(--color-muted);
}
.rt-hub-stack:hover .rt-hub-stack-cap i,
.rt-hub-stack:focus-visible .rt-hub-stack-cap i {
  color: var(--color-ink);
}

/* Right-panel channel nav — same icon scale as left desks (64px). */
.rt-desk-icons--aside {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.55rem 0.45rem;
  padding: 0.75rem 0.85rem 1rem;
  border-top: 0;
  border-bottom: 1px solid var(--color-line);
  justify-items: stretch;
}
.rt-desk-icons--aside.rtpg-body {
  padding: 0.75rem 0.85rem 1rem;
}
.rt-desk-icons--aside .rtpg-icon {
  width: 100%;
  max-width: none;
  min-width: 0;
  box-sizing: border-box;
  padding: 0.55rem 0.35rem 0.45rem;
}
.rt-desk-icons--aside .rtpg-icon img {
  width: 64px;
  height: 64px;
  image-rendering: pixelated;
}
.rt-desk-icons--aside .rtpg-icon b {
  font-size: 0.78rem;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.rt-desk-icons--aside .rtpg-icon.is-active {
  border-color: var(--ico-accent, var(--color-accent));
  background: color-mix(in srgb, var(--ico-accent, var(--color-accent)) 12%, transparent);
}
.rt-desk-icons--aside .rtpg-icon.is-active b {
  color: var(--ico-accent, var(--color-accent));
}
/* Hub / short channel strips. Imagens = 3 folders in one row; Código = 2. */
.rt-desk-icons--aside.rt-desk-icons--channels {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.rt-codigo-nav .rt-desk-icons--aside.rt-desk-icons--channels {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-bottom: 1px solid var(--color-line);
}
.rt-desk-icons--aside.rt-desk-icons--channels .rtpg-icon {
  width: 100%;
  max-width: none;
  min-width: 0;
}
/* Código labels wrap in the 2-col pack. */
.rt-codigo-nav .rt-desk-icons--aside.rt-desk-icons--channels .rtpg-icon b {
  letter-spacing: 0.02em;
  overflow-wrap: normal;
  word-break: normal;
}
.rt-codigo-nav .rtpg-icon b .rt-ico-tld {
  display: block;
}
/* Each strip owns equal padding so the mid divider sits evenly between them. */
.rt-imagens-nav--aside .rt-imagens-nav-folders.rt-desk-icons--aside,
.rt-imagens-nav--aside .rt-imagens-nav-local.rt-desk-icons--aside {
  padding: 0.75rem 0.85rem;
  border-bottom: 0;
}
.rt-imagens-nav--aside .rt-imagens-nav-folders.rt-desk-icons--aside {
  border-top: 0;
  border-bottom: 1px solid var(--color-line);
}
.rt-imagens-nav--aside .rt-imagens-nav-local.rt-desk-icons--aside {
  border-top: 1px dashed color-mix(in srgb, var(--color-line) 80%, transparent);
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.rt-codigo-nav .rt-imagens-nav-local.rt-desk-icons--aside {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.rt-desk-icons.rt-desk-icons--channels:not(.rt-desk-icons--aside) {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  max-width: 28rem;
  margin-inline: auto;
  padding: 1.25rem 0.75rem 1.5rem;
}
/* Full-width Imagens / Código hubs — room for more icons. */
.rt-split--calm .rt-desk-icons,
.rt-split--calm .rt-desk-icons.rtpg-icons {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  max-width: 52rem;
}
.rt-media-aside-copy {
  padding: 0.85rem 0.9rem 1.1rem;
  font-family: var(--font-body);
  font-size: var(--size-body);
  line-height: 1.55;
  color: var(--color-ink);
}
.rt-imagens-nav + .rt-media-aside-copy,
.rt-codigo-nav + .rt-media-aside-copy {
  border-top: 1px dashed color-mix(in srgb, var(--color-line) 80%, transparent);
}
.rt-media-aside-copy > *:first-child { margin-top: 0; }
.rt-media-aside-copy > *:last-child { margin-bottom: 0; }
.rt-media-aside-copy ul {
  padding-left: 1.15em;
  margin-top: 0.35em;
}
.rt-media-aside-copy li {
  margin: 0 0 0.2em;
}
.rt-media-aside-copy li:last-child {
  margin-bottom: 0;
}
.rt-media-aside-copy .rt-retro-inline {
  margin-top: 0.85rem;
}
.rt-sigilo-lab-open {
  margin-top: 0.85rem;
  padding-top: 0.85rem;
  border-top: 1px dashed color-mix(in srgb, var(--color-line) 80%, transparent);
  justify-items: start;
}
.rt-sigilo-lab-open .rtpg-icon {
  max-width: 8.5rem;
}

/* dedos.info screenshot well — nested window, native pixels, Win95 meter.
 * Inset is the content panel's --space-md (same as Imagens covers). */
.rt-dedos-slides-host {
  box-sizing: border-box;
  padding: 0;
  min-width: 0;
}
.rt-dedos-slides-host[hidden] {
  display: none !important;
}
.rt-dedos-slides {
  --rt-hold: 3s;
  min-width: 0;
  container-type: inline-size;
}
.rt-dedos-slides > .rt-win-bar {
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.15rem 0.3rem 0.15rem 0.5rem;
  background: color-mix(in srgb, var(--color-case) 70%, #000);
}
.rt-dedos-slides > .rt-win-bar .rt-win-title {
  min-width: 0;
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.68rem;
  letter-spacing: 0.02em;
}
.rt-dedos-slides > .rt-win-bar .rt-win-controls {
  flex: none;
}
.rt-dedos-slides-view {
  --rt-pan-x: 0px;
  --rt-pan-y: 0px;
  --rt-pw-crt-duration: 0.9s;
  --rt-pw-crt-phase: 0s;
  position: relative;
  width: 100%;
  /* 16:9 clip plus 200px of extra height (same well for dedos / oyá). */
  aspect-ratio: auto;
  height: calc(100cqw * 9 / 16 + 200px);
  overflow: hidden;
  background: #050506;
  isolation: isolate;
}
.rt-dedos-slides-view.is-crt .rt-pw-crt {
  opacity: 0.85;
  animation-play-state: running;
}
.rt-dedos-slides-view img {
  display: block;
  position: absolute;
  left: 0;
  top: 0;
  width: var(--rt-img-w, 500px);
  height: var(--rt-img-h, 700px);
  max-width: none;
  opacity: 0;
  z-index: 0;
  image-rendering: -moz-crisp-edges;
  image-rendering: pixelated;
  pointer-events: none;
}
.rt-dedos-slides-view img.is-leaving {
  z-index: 1;
}
.rt-dedos-slides-view img.is-on {
  z-index: 2;
  opacity: 1;
}
.rt-dedos-slides-meter {
  padding: 0.35rem 0.45rem 0.45rem;
  background: color-mix(in srgb, var(--color-case) 82%, #000);
  border-top: 1px solid var(--color-line);
}
.rt-dedos-slides-meter-track {
  display: block;
  height: 0.85rem;
  border-style: solid;
  border-width: 2px;
  border-color:
    color-mix(in srgb, #000 65%, var(--color-line))
    var(--color-line)
    var(--color-line)
    color-mix(in srgb, #000 65%, var(--color-line));
  background: color-mix(in srgb, var(--color-case) 50%, #000);
  overflow: hidden;
}
.rt-dedos-slides-meter-fill {
  display: block;
  height: 100%;
  width: 0;
  background-color: var(--rt-accent-web);
  background-image: repeating-linear-gradient(
    90deg,
    var(--rt-accent-web) 0 7px,
    color-mix(in srgb, var(--color-case) 50%, #000) 7px 9px
  );
}
body.rt-mode-light .rt-dedos-slides-meter-fill {
  background-color: #fff;
  background-image: repeating-linear-gradient(
    90deg,
    #fff 0 7px,
    color-mix(in srgb, var(--color-case) 50%, #000) 7px 9px
  );
}

/*
 * Mobile desk: single column. Title (win bar) always first.
 * Default body order follows DOM. Channel folders last when
 * .rt-win-body--folders-end is set (hubs + sub-subs + galleries).
 */
body.rt-view-mobile .rt-split--desk-mobile {
  display: block;
}
body.rt-view-mobile .rt-win-body--desk-mobile {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: var(--space-md);
}
body.rt-view-mobile .rt-win-body--desk-mobile > .rt-desk-icons,
body.rt-view-mobile .rt-win-body--desk-mobile > .rt-imagens-hub-desk,
body.rt-view-mobile .rt-win-body--desk-mobile > nav.rt-desk-icons,
body.rt-view-mobile .rt-win-body--desk-mobile > .rt-gallery {
  padding: 0.55rem 0 0;
  border-top: 1px dashed color-mix(in srgb, var(--color-line) 80%, transparent);
}
body.rt-view-mobile .rt-win-body--desk-mobile > .rt-panel-prose {
  padding: 0.85rem 0 0;
  border-top: 1px dashed color-mix(in srgb, var(--color-line) 80%, transparent);
}
/* Section hub: covers under the title, folders after. No flex reorder. */
body.rt-view-mobile .rt-win-body--desk-mobile > .rt-hub-stacks {
  margin: calc(-1 * var(--space-md)) calc(-1 * var(--space-md)) 0;
  padding: var(--space-md);
  border-bottom: 1px dashed var(--color-line);
}
body.rt-view-mobile .rt-win-body--desk-mobile > .rt-imagens-nav {
  padding: 0.45rem 0 0.35rem;
  border-top: 0;
}
/*
 * Deeper pages only (.rt-win-body--folders-end):
 * leaves (if any) → copy/gallery/slides → channel folders last (before site footer).
 */
body.rt-view-mobile .rt-win-body--folders-end > .rt-imagens-leaves,
body.rt-view-mobile .rt-win-body--folders-end > .rt-codigo-leaves {
  order: 1;
  margin: calc(-1 * var(--space-md)) calc(-1 * var(--space-md)) 0;
  padding: var(--space-md);
  border-bottom: 1px dashed var(--color-line);
}
body.rt-view-mobile .rt-win-body--folders-end > .rt-panel-prose {
  order: 2;
  padding: 0;
  border-top: 0;
}
body.rt-view-mobile .rt-win-body--folders-end > .rt-imagens-leaves + .rt-panel-prose,
body.rt-view-mobile .rt-win-body--folders-end > .rt-codigo-leaves + .rt-panel-prose {
  padding: 0.85rem 0 0;
  border-top: 0;
}
body.rt-view-mobile .rt-win-body--folders-end > .rt-gallery,
body.rt-view-mobile .rt-win-body--folders-end > .rt-desk-icons:not(.rt-imagens-leaves):not(.rt-codigo-leaves),
body.rt-view-mobile .rt-win-body--folders-end > .rt-imagens-hub-desk {
  order: 3;
  padding: 0.55rem 0 0;
  border-top: 1px dashed color-mix(in srgb, var(--color-line) 80%, transparent);
}
body.rt-view-mobile .rt-win-body--folders-end > .rt-imagens-nav {
  order: 9;
  padding: 0.85rem 0 0;
  border-top: 1px dashed color-mix(in srgb, var(--color-line) 80%, transparent);
}
body.rt-view-mobile .rt-win-body--folders-end > [data-rt-deck-aside] {
  order: 10;
}
body.rt-view-mobile .rt-gallery--series .rt-gallery-files,
body.rt-view-mobile .rt-gallery--photos .rt-gallery-files {
  columns: 2;
  column-gap: 0.4rem;
}
body.rt-view-mobile .rt-gallery--series .rt-gallery-file,
body.rt-view-mobile .rt-gallery--photos .rt-gallery-file {
  margin-bottom: 0.4rem;
}
@supports (display: grid-lanes) {
  body.rt-view-mobile .rt-gallery--series .rt-gallery-files,
  body.rt-view-mobile .rt-gallery--photos .rt-gallery-files {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.4rem;
  }
}
body.rt-view-mobile .rt-gallery--series .rt-gallery-file-pic,
body.rt-view-mobile .rt-gallery--photos .rt-gallery-file-pic {
  width: 100%;
  height: auto;
}

/*
 * Mobile pattern: title (win bar) always first.
 * Then doors/archive/side chrome, then lede/copy.
 * Do NOT reorder whole panels — that buries the H1.
 */
body.rt-view-mobile .rt-win-body--desk-mobile > .rt-win-collapse-slot,
body.rt-view-mobile .rt-win-body--desk-mobile > .rt-year-grid,
body.rt-view-mobile .rt-win-body--desk-mobile > .rt-bio-side {
  order: 1;
  padding: 0 0 0.35rem;
  border-top: 0;
}
body.rt-view-mobile .rt-win-body--desk-mobile > .rt-panel-prose {
  order: 2;
}
body.rt-view-mobile .rt-win-body--desk-mobile > .rt-bio-contact {
  order: 3;
  margin-top: 0.85rem;
}
/*
 * Palavras year menu: rows span the content window (no grid gutter),
 * but icon/label share the same left edge as the title + lede (--space-md).
 */
body.rt-view-mobile .rt-win-body--desk-mobile > .rt-win-collapse-slot {
  margin-inline: calc(-1 * var(--space-md));
  margin-bottom: 0.35rem;
  padding: 0;
  align-self: stretch;
}
body.rt-view-mobile .rt-win-body--desk-mobile .rt-year-grid {
  padding: 0;
  border-top: 0;
  gap: 0;
  background: transparent;
}
body.rt-view-mobile .rt-win-body--desk-mobile .rt-year + .rt-year {
  margin-top: -1px; /* shared edge with sibling borders */
}
body.rt-view-mobile .rt-win-body--desk-mobile .rt-year-sum,
body.rt-view-mobile .rt-win-body--desk-mobile .rt-year-link {
  padding-left: var(--space-md);
  padding-right: var(--space-md);
}
body.rt-view-mobile .rt-win-body--desk-mobile > .rt-words-desk {
  order: 3;
  padding: 0.85rem 0 0;
  border-top: 1px dashed color-mix(in srgb, var(--color-line) 80%, transparent);
}

/*
 * Mobile: every desk uses the home icon grammar —
 * centered 3-col cells, dashed hit-box, crisp pixels. No left-pack.
 */
body.rt-view-mobile .rt-desk-icons,
body.rt-view-mobile .rt-desk-icons.rtpg-icons,
body.rt-view-mobile .rt-win-body--desk > .rt-desk-icons,
body.rt-view-mobile .rt-win-body--desk-mobile .rt-desk-icons,
body.rt-view-mobile .rt-win-body--desk-mobile .rt-imagens-nav--aside .rt-imagens-nav-folders,
body.rt-view-mobile .rt-win-body--desk-mobile .rt-desk-icons--aside,
body.rt-view-mobile .rt-imagens-nav .rt-desk-icons,
body.rt-view-mobile .rt-desk-icons--aside,
body.rt-view-mobile .rt-desk-icons--aside.rt-desk-icons--channels {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.45rem 0.35rem;
  justify-content: center;
  justify-items: center;
  align-content: start;
  max-width: none;
  margin-inline: 0;
  padding: 0.55rem 0.15rem 0.65rem;
  border-bottom: 0;
}
body.rt-view-mobile .rt-win-body--desk > .rt-desk-icons .rtpg-icon,
body.rt-view-mobile .rt-desk-icons--aside .rtpg-icon,
body.rt-view-mobile .rt-win-body--desk-mobile .rt-desk-icons--aside .rtpg-icon,
body.rt-view-mobile .rt-desk-icons .rtpg-icon {
  width: 100%;
  max-width: 8.5rem;
  justify-self: center;
}
body.rt-view-mobile .rt-desk-icons .rtpg-icon img,
body.rt-view-mobile .rt-desk-icons--aside .rtpg-icon img {
  width: 64px;
  height: 64px;
  image-rendering: -moz-crisp-edges;
  image-rendering: pixelated;
}
body.rt-view-mobile .rt-imagens-nav--aside .rt-imagens-nav-folders.rt-desk-icons--aside,
body.rt-view-mobile .rt-imagens-nav--aside .rt-imagens-nav-local.rt-desk-icons--aside {
  padding: 0.55rem 0.15rem 0.65rem;
  border-top: 0;
  border-bottom: 0;
}
body.rt-view-mobile .rt-win-body--desk-mobile > .rt-dedos-slides-host {
  align-self: stretch;
}
body.rt-view-mobile .rt-win-body--folders-end > .rt-dedos-slides-host {
  order: 2;
}

.rt-media-folders {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.45rem 0.5rem;
  align-content: start;
  justify-items: center;
  padding: 0.55rem 0.5rem 0.65rem;
  border-top: 0;
  border-bottom: 1px solid var(--color-line);
}
.rt-media-folder {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.25rem;
  width: 100%;
  max-width: 6.5rem;
  padding: 0.4rem 0.2rem 0.35rem;
  text-align: center;
  text-decoration: none;
  color: inherit;
  border: 1px dashed transparent;
  background: transparent;
  font: inherit;
  cursor: pointer;
  min-width: 0;
  box-sizing: border-box;
}
.rt-media-folder img {
  width: 48px;
  height: 48px;
  object-fit: contain;
  image-rendering: -moz-crisp-edges;
  image-rendering: pixelated;
  flex: none;
}
.rt-media-folder-label {
  font-family: var(--font-ui, monospace);
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  line-height: 1.25;
  color: var(--color-ink);
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.rt-media-folder:hover,
.rt-media-folder:focus-visible {
  border-color: var(--color-accent);
  background: color-mix(in srgb, var(--color-accent) 12%, transparent);
  outline: none;
}
button.rtpg-icon {
  appearance: none;
  -webkit-appearance: none;
  margin: 0;
}
.rt-words-desk {
  padding: 0.85rem 0.9rem 1rem;
}
.rt-words-desk-intro {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}
.rt-words-desk-intro > *:first-child { margin-top: 0; }
.rt-words-desk-intro > *:last-child { margin-bottom: 0; }
.rt-codigo-desk-intro {
  margin-top: var(--space-md);
  padding: 0 0.15rem;
}
.rt-codigo-desk-intro > *:first-child { margin-top: 0; }
.rt-codigo-desk-intro > *:last-child { margin-bottom: 0; }
.rt-codigo-leaves + .rt-panel-prose,
.rt-imagens-leaves + .rt-panel-prose {
  margin-top: 0.85rem;
  padding-top: 0;
  border-top: 0;
}
.rt-codigo-leaves + .rt-panel-prose > *:first-child,
.rt-imagens-leaves + .rt-panel-prose > *:first-child { margin-top: 0; }
.rt-codigo-leaves + .rt-codigo-desk-intro,
.rt-imagens-leaves + .rt-gallery-lede,
.rt-imagens-leaves + .rt-gallery {
  margin-top: 0.65rem;
}
@media (max-width: 820px) {
  .rt-desk-icons,
  .rt-desk-icons.rtpg-icons,
  .rt-split--calm .rt-desk-icons,
  .rt-split--calm .rt-desk-icons.rtpg-icons {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    max-width: none;
  }
  .rt-win-body--desk > .rt-desk-icons,
  .rt-win-body > .rt-imagens-leaves,
  .rt-win-body > .rt-codigo-leaves,
  .rt-win-body > .rt-imagens-hub-desk {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    justify-content: start;
    column-gap: 0.3rem;
  }
}

/* Sigilos — lab embed above page copy */
.rt-win-body--sigil {
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.rt-win-body--sigil > .rt-panel-prose {
  padding: var(--space-md);
  border-top: 1px solid var(--color-line);
}
.rt-sigil-embed {
  margin: 0;
  padding: 0;
  background: #08080c;
  border-bottom: 1px solid var(--color-line);
}
.rt-sigil-embed-frame {
  display: block;
  width: 100%;
  min-height: 42rem;
  height: min(78vh, 52rem);
  border: 0;
  background: #08080c;
}
@media (max-width: 820px) {
  .rt-sigil-embed-frame {
    min-height: 36rem;
    height: 70vh;
  }
}
.rt-win-controls { color: var(--color-line); letter-spacing: 0.25em; user-select: none; }
.rt-win-body { padding: var(--space-md); }

a.rt-win:hover { border-color: var(--color-accent); }
a.rt-win:hover .rt-win-title { color: var(--color-accent); }

/* Words essays — Google Sans Flex for long-form. Listing / chrome use Azeret Mono. */
.rt-doc,
.rt-essay-reader {
  width: 100%;
  max-width: none;
  font-family: var(--font-prose);
  color: var(--color-ink);
  background: var(--color-case);
  border: 1px solid var(--color-line);
}
.rt-essay-reader > .rt-win-bar,
.rt-essay-reader > .rt-essay-toolbar {
  font-family: var(--font-body);
}
.rt-essay-reader .rt-win-body {
  padding: var(--space-md) var(--space-md) var(--space-lg);
  color: inherit;
  background: transparent;
  line-height: 1.75;
  font-family: var(--font-prose);
}
.rt-doc-body {
  line-height: 1.75;
  font-family: var(--font-prose);
}
.rt-essay-reader a,
.rt-doc-body a { color: var(--color-accent); }
.rt-essay-reader a:hover,
.rt-doc-body a:hover { color: var(--color-ink); }
.rt-essay-reader .text-meta,
.rt-essay-reader .text-meta--label {
  font-family: var(--font-body);
  color: var(--color-muted);
  font-size: var(--size-body);
  line-height: 1.45;
}

.rt-archive-tools button {
  min-width: 2rem;
  min-height: 1.75rem;
  padding: 0.1rem 0.35rem;
  border: 1px solid currentColor;
  background: transparent;
  color: inherit;
  font-family: var(--font-body);
  font-size: 0.72rem;
  line-height: 1;
  cursor: pointer;
}
.rt-archive-tools button:hover,
.rt-archive-tools button:focus-visible {
  color: var(--color-accent);
  background: color-mix(in srgb, var(--color-accent) 10%, transparent);
}

.prose > * { max-width: 100%; }
.prose img, .prose figure, .prose video { max-width: 100%; }

.rt-agora-loop {
  margin: 0;
  width: 100%;
}
.rt-panel-prose .rt-agora-loop {
  margin-top: 1.2em;
}
.rt-agora-loop video {
  display: block;
  width: 100%;
  height: auto;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
}
body.rt-mode-light .rt-agora-loop video {
  filter: saturate(0);
}

/* ---- Case plane ---- */
.rt-case {
  position: relative;
  display: grid;
  gap: var(--space-md);
  padding: 0;
  background: transparent;
  border: 0;
}


.rt-home-directory::before {
  content: '';
  position: absolute;
  inset: -1px auto auto -1px;
  width: 1.25rem;
  height: 1.25rem;
  border-top: 2px solid var(--color-accent);
  border-left: 2px solid var(--color-accent);
  pointer-events: none;
}

.rt-case-head {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  padding: 0;
  border: 1px solid var(--color-line);
  background: color-mix(in srgb, var(--color-case) 82%, #000);
  color: var(--color-muted);
  font-family: var(--font-chrome);
  font-size: 0.75rem;
  line-height: 1.25;
  letter-spacing: 0.04em;
}
.rt-case-head-crumb {
  /* Follow page accent + site mode/skin (same tokens as the rest of the chrome). */
  padding: 0.85rem 0.65rem;
  border-bottom: 1px solid var(--color-line);
  background: transparent;
  color: var(--color-ink);
  min-width: 0;
}
.rt-case-head-crumb .rt-crumb {
  flex: 1 1 auto;
  margin: 0;
  color: inherit;
}
.rt-case-head-crumb .rt-crumb-list {
  flex-wrap: wrap;
  overflow: visible;
  color: inherit;
  row-gap: 0.1rem;
}
.rt-case-head-crumb .rt-crumb-item:not(:last-child)::after {
  color: var(--color-muted);
  opacity: 0.85;
}
.rt-case-head-crumb .rt-crumb-item a {
  color: var(--color-muted);
}
.rt-case-head-crumb .rt-crumb-item a:hover,
.rt-case-head-crumb .rt-crumb-item a:focus-visible {
  color: var(--color-accent);
  text-decoration: none;
}
.rt-case-head-crumb .rt-crumb-item.is-current {
  min-width: 0;
  flex: 1 1 auto;
}
.rt-case-head-crumb .rt-crumb-item.is-current span {
  color: var(--color-accent);
  max-width: none;
  overflow: visible;
  text-overflow: unset;
  white-space: nowrap;
  display: inline;
}
.rt-case-head-main {
  display: flex;
  justify-content: space-between;
  gap: var(--space-md);
  align-items: center;
  padding: 0.35rem 0.55rem;
  min-width: 0;
}
/* Split ratios occupy the old name/minimize row — equal vertical pad. */
.rt-case-head-main--ratios {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.45rem;
  padding: 0.9rem 0.65rem;
  /* Seam is `.rt-win-frame > .rt-case-head` border-bottom — avoid a doubled line. */
  border-bottom: 0;
  background: var(--color-case);
}
.rt-case-head-main--ratios .rt-split-ratios {
  margin: 0;
  width: 100%;
  gap: 0.4rem;
}
.rt-case-head-main--ratios .rt-split-ratio {
  min-height: 2.65rem;
  padding: 0.4rem;
}
.rt-case-head-main--ratios .rt-ratio-visual {
  height: 1.1rem;
}
.rt-case-head-ratios-extra {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem;
}
/* Compact trial: full-width crumb, then thin ratio ticks. Gated by
   body.rt-compact-case-head — flip RT_COMPACT_CASE_HEAD to undo. */
body.rt-compact-case-head .rt-case-head--compact {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: stretch;
  background: transparent;
}
body.rt-compact-case-head .rt-case-head--compact .rt-case-head-crumb {
  flex: 1 1 100%;
  display: flex;
  align-items: center;
  min-width: 0;
  padding: 0.75rem 0.65rem;
  border-bottom: 1px solid var(--color-line);
  background: transparent;
}
body.rt-compact-case-head .rt-case-head--compact .rt-case-head-crumb .rt-crumb-item,
body.rt-compact-case-head .rt-case-head--compact .rt-case-head-crumb .rt-crumb-item a,
body.rt-compact-case-head .rt-case-head--compact .rt-case-head-crumb .rt-crumb-item span {
  white-space: nowrap;
}
body.rt-compact-case-head .rt-case-head--compact .rt-case-head-main--ratios,
body.rt-compact-case-head .rt-case-head--compact .rt-case-head-main {
  flex: 1 1 100%;
  flex-direction: row;
  align-items: center;
  justify-content: flex-end;
  gap: 0.3rem;
  padding: 0.4rem 0.55rem 0.45rem;
  background: transparent;
}
body.rt-compact-case-head .rt-case-head--compact .rt-split-ratios {
  width: auto;
  flex-wrap: nowrap;
  gap: 0.18rem;
  margin-left: auto;
}
body.rt-compact-case-head .rt-case-head--compact .rt-split-ratio {
  flex: none;
  width: 1.7rem;
  min-height: 1.15rem;
  padding: 0.12rem;
}
body.rt-compact-case-head .rt-case-head--compact .rt-ratio-visual {
  height: 0.5rem;
  width: 100%;
}
.rt-case-head-tools,
.rt-archive-tools {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem;
}

.rt-win-action {
  color: var(--color-accent);
  font-family: var(--font-body);
  font-size: 0.72rem;
  white-space: nowrap;
}

.rt-case--essay .rt-win { font-family: var(--font-body); }




/* ---- Home ---- */
.rt-home {
  display: grid;
  gap: var(--space-lg);
  max-width: 52rem;
}
.rt-home-lede { max-width: 100%; color: var(--color-muted); }
.rt-home-lede a { color: var(--color-ink); }

.rt-disrupt {
  width: min(11rem, 40vw);
  justify-self: end;
  margin-top: calc(var(--space-md) * -1);
}
.rt-disrupt-body {
  min-height: 8rem;
  display: grid;
  place-items: center;
  background: #050506;
  overflow: hidden;
}
.rt-disrupt-body > * { width: 100%; height: 100%; object-fit: cover; max-height: 10rem; }
.rt-status-chip {
  font-family: var(--font-display);
  font-size: 0.75rem;
  color: var(--rt-accent-web);
  letter-spacing: 0.06em;
}

.rt-home-directory {
  position: relative;
  margin-top: var(--space-md);
  padding: var(--space-sm);
  border: 1px solid var(--color-line);
  background:
    radial-gradient(circle at 85% 20%, color-mix(in srgb, var(--rt-accent-web) 9%, transparent), transparent 22rem),
    color-mix(in srgb, var(--color-case) 55%, transparent);
}
.rt-home-board {
  list-style: none;
  margin: var(--space-sm) 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: var(--space-sm);
}
.rt-home-node { grid-column: span 6; }
.rt-home-node--1 { grid-column: span 7; }
.rt-home-node--2 { grid-column: 8 / span 5; margin-top: var(--space-lg); }
.rt-home-node--3 { grid-column: span 5; }
.rt-home-node--4 { grid-column: span 4; margin-top: calc(var(--space-sm) * -1); }
.rt-home-node--5 { grid-column: span 3; margin-top: var(--space-md); }
.rt-door {
  height: 100%;
}
.rt-door-title {
  display: block;
  font-size: 1.35rem;
  font-weight: 700;
  margin-bottom: 0.25rem;
}
.rt-door-gloss {
  display: block;
  color: var(--color-muted);
  font-size: 0.95rem;
  line-height: 1.4;
}
.rt-door--palavras, .rt-door--words { border-color: color-mix(in srgb, var(--rt-accent-text) 58%, var(--color-line)); }
.rt-door--imagens, .rt-door--images { border-color: color-mix(in srgb, var(--rt-accent-image) 58%, var(--color-line)); }
.rt-door--web, .rt-door--web-works,
.rt-door--codigo, .rt-door--code { border-color: color-mix(in srgb, var(--rt-accent-web) 58%, var(--color-line)); }
.rt-door:hover .rt-door-title { color: var(--color-accent); }
.rt-home-signal {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-sm);
  margin-top: var(--space-sm);
  padding: 0.35rem 0.55rem;
  border: 1px dashed var(--color-line);
  color: var(--color-muted);
  font-size: 0.75rem;
  text-decoration: none;
}
.rt-home-tattoo {
  margin-top: var(--space-md);
  border-color: color-mix(in srgb, var(--rt-accent-image) 62%, var(--color-line));
}
.rt-home-tattoo-body {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-sm);
}
.rt-home-tattoo-link {
  flex: 1 1 14rem;
  text-decoration: none;
  color: inherit;
}
.rt-home-tattoo-link:hover .rt-door-title {
  color: var(--color-accent);
}
.rt-home-tattoo-now {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  color: var(--color-muted);
  font-size: 0.75rem;
  text-decoration: none;
  border: 1px dashed var(--color-line);
  padding: 0.3rem 0.5rem;
}

/* ---- Section board (Imagens / Web) ---- */
.section-web .rt-win--board,
.section-web-works .rt-win--board,
.section-codigo .rt-win--board,
.section-code .rt-win--board { border-color: color-mix(in srgb, var(--rt-accent-web) 45%, var(--color-line)); }
.section-imagens .rt-win--board,
.section-images .rt-win--board { border-color: color-mix(in srgb, var(--rt-accent-image) 45%, var(--color-line)); }

/* ---- Split layouts (text + media listings) ---- */
.rt-split {
  display: grid;
  grid-template-columns: 7fr 5fr;
  gap: var(--rt-grid-gap);
  align-items: start;
  min-width: 0;
  width: 100%;
  /* width tween: see motion system (--rt-dur-layout) */
}
.rt-split .rt-panel--content,
.rt-split .rt-panel--menu,
.rt-split > .rt-bio-rail {
  min-width: 0;
}
/* Ratio attribute is the source of truth (incl. after soft-nav).
   Legacy `.is-previewing` used to force 8/4 and fought hub defaults. */
.rt-split[data-rt-split-ratio="9/3"] { grid-template-columns: 9fr 3fr; }
.rt-split[data-rt-split-ratio="8/4"] { grid-template-columns: 8fr 4fr; }
.rt-split[data-rt-split-ratio="7/5"] { grid-template-columns: 7fr 5fr; }
.rt-split[data-rt-split-ratio="6/6"] { grid-template-columns: 6fr 6fr; }
.rt-split.rt-split--calm,
.rt-split[data-rt-split="calm"] {
  grid-template-columns: 1fr;
}

/*
 * Desktop Imagens only: pin the right cabinet while the left column
 * scrolls. Código / Words skipped. Círculo hub is not sticky (leaves
 * under it stay sticky). Sticky lives in the split row
 * (align-items: start); unsticks before footer.
 */
@media (min-width: 821px) {
  body.rt-view-desktop.section-imagens:not(.circulo-hub) .rt-split:is(.rt-split--gallery, .rt-split--media) > .rt-panel--menu,
  body.rt-view-desktop.section-images:not(.circulo-hub) .rt-split:is(.rt-split--gallery, .rt-split--media) > .rt-panel--menu {
    position: sticky;
    top: clamp(0.5rem, 3vw, 2rem);
    z-index: 3;
  }
}

.rt-media-menu {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0;
  border-top: 0;
}
.rt-media-link {
  display: grid;
  gap: 0.2rem;
  padding: 0.85rem 0.9rem;
  border-bottom: 1px solid var(--color-line);
  text-decoration: none;
  color: var(--color-ink);
  background: transparent;
}
.rt-media-link:hover,
.rt-media-link:focus-visible,
.rt-media-link.is-active {
  background: var(--color-accent);
  color: var(--color-on-accent);
  outline: none;
}
.rt-media-link.is-active .rt-media-link-title,
.rt-media-link:hover .rt-media-link-title {
  color: inherit;
}
.rt-media-link-title {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 1.05rem;
  text-transform: lowercase;
}
/* Gloss lives in a desktop-only floating window (.rt-gloss-float) — not in the menu row.
   Lighter than site windows so the hover tip reads as a separate layer. */
.rt-gloss-float {
  --rt-gloss-bg: color-mix(in srgb, var(--color-case) 38%, #ece6f8);
  --rt-gloss-ink: #1c152c;
  --rt-gloss-muted: color-mix(in srgb, #1c152c 72%, transparent);
  --rt-gloss-line: color-mix(in srgb, var(--color-line) 30%, #fff);
  position: fixed;
  z-index: 90;
  width: min(18rem, calc(100vw - 2rem));
  max-width: 18rem;
  margin: 0;
  padding: 0;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transition:
    opacity var(--rt-dur) ease,
    visibility var(--rt-dur) ease;
}
.rt-gloss-float.is-visible {
  opacity: 1;
  visibility: visible;
}
.rt-gloss-float .rt-win {
  background: var(--rt-gloss-bg);
  border-color: var(--rt-gloss-line);
  color: var(--rt-gloss-ink);
  box-shadow: 0.28rem 0.28rem 0 color-mix(in srgb, #000 42%, transparent);
}
.rt-gloss-float .rt-win-body {
  padding: 0.65rem 0.75rem 0.8rem;
}
.rt-gloss-float-text {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--size-body);
  line-height: 1.45;
  color: var(--rt-gloss-muted);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
body.rt-mode-light .rt-gloss-float {
  --rt-gloss-bg: #f4f0ff;
  --rt-gloss-ink: var(--carbon-black);
  --rt-gloss-muted: var(--slate-grey);
  --rt-gloss-line: color-mix(in srgb, var(--carbon-black) 18%, #fff);
}
body.rt-mode-arraial .rt-gloss-float {
  --rt-gloss-bg: color-mix(in srgb, var(--color-case) 32%, #e8f6f4);
  --rt-gloss-ink: #00252d;
  --rt-gloss-muted: color-mix(in srgb, #00252d 70%, transparent);
  --rt-gloss-line: color-mix(in srgb, var(--pearl-aqua) 45%, #fff);
}
body.rt-view-mobile .rt-gloss-float {
  display: none !important;
}

/* ---- Layout pattern: AGENDA TATTOO ---- */
.rt-agenda-tattoo {
  margin: 0;
  padding: 0.65rem 0.55rem 0.75rem;
  border-top: 1px solid var(--color-line);
}
.rt-agenda-tattoo-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-family: var(--font-chrome);
  /* all-small-caps shrinks glyphs — bump size so body text stays readable. */
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  line-height: 1.4;
  text-transform: lowercase;
  font-variant-caps: all-small-caps;
  color: var(--color-ink);
}
.rt-agenda-tattoo-table th,
.rt-agenda-tattoo-table td {
  padding: 0.45rem 0.4rem;
  text-align: left;
  vertical-align: top;
  border: 0;
  word-break: break-word;
}
.rt-agenda-tattoo-table thead th {
  color: var(--color-muted);
  border-bottom: 1px solid var(--color-line);
  font-weight: 700;
}
.rt-agenda-tattoo-table tbody tr:nth-child(odd) {
  background: color-mix(in srgb, var(--color-case) 72%, var(--color-stage));
}
.rt-agenda-tattoo-table tbody tr:nth-child(even) {
  background: color-mix(in srgb, var(--color-menu-open) 55%, var(--color-case));
}
.rt-agenda-tattoo-table th:nth-child(1),
.rt-agenda-tattoo-table td:nth-child(1) { width: 42%; }
.rt-agenda-tattoo-table th:nth-child(2),
.rt-agenda-tattoo-table td:nth-child(2) { width: 30%; }
.rt-agenda-tattoo-table th:nth-child(3),
.rt-agenda-tattoo-table td:nth-child(3) { width: 28%; }

/* ---- Words year grid (Text Menu) ---- */
.rt-archive { min-width: 0; }
.rt-archive-head {
  margin-bottom: 0;
}
.rt-archive-tools {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  align-items: center;
}
.rt-archive-tools button {
  font: inherit;
  font-size: 0.7rem;
  letter-spacing: 0.04em;
  color: var(--color-muted);
  background: transparent;
  border: 1px solid transparent;
  padding: 0.15rem 0.35rem;
  cursor: pointer;
}
.rt-archive-tools button:hover {
  color: var(--color-accent);
  border-color: var(--color-line);
}
.rt-year-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.55rem;
  align-items: start;
  padding: 0.85rem;
  border-top: 1px solid var(--color-line);
  background: color-mix(in srgb, var(--color-stage) 70%, #000);
}
.rt-year {
  border: 1px solid color-mix(in srgb, var(--rt-accent-text) 55%, var(--color-line));
  background: color-mix(in srgb, var(--color-case) 88%, var(--color-stage));
  width: 100%;
  box-sizing: border-box;
  overflow: clip;
}
.rt-year.is-open {
  grid-column: auto;
  border-color: var(--rt-accent-text);
}
.rt-year--random {
  /* Same chrome as year drawers; sits under the year list. */
  margin-top: 0.15rem;
}
/* Year title keeps the blue case fill — never the open purple. */
.rt-year-sum {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  gap: 0.45rem;
  width: 100%;
  padding: 0.75rem 0.85rem;
  cursor: pointer;
  list-style: none;
  border: 0;
  background: color-mix(in srgb, var(--color-case) 88%, var(--color-stage));
  color: inherit;
  font: inherit;
  text-align: left;
}
.rt-year-folder {
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  object-fit: contain;
  image-rendering: -moz-crisp-edges;
  image-rendering: pixelated;
  pointer-events: none;
}
/* Only the year number turns white — not essay titles in the open list. */
.rt-year-sum:hover .rt-year-label,
.rt-year-sum:focus-visible .rt-year-label {
  color: #fff;
}
body.rt-mode-light .rt-year {
  border-color: var(--pale-slate-2);
  background: var(--bright-snow);
}
body.rt-mode-light .rt-year.is-open {
  border-color: var(--carbon-black);
}
body.rt-mode-light .rt-year-sum {
  background: var(--bright-snow);
}
body.rt-mode-light .rt-year-label {
  color: var(--carbon-black);
}
/* Claro: white label needs dark fill — otherwise invisible on snow. */
body.rt-mode-light .rt-year-sum:hover,
body.rt-mode-light .rt-year-sum:focus-visible {
  background: var(--carbon-black);
}
body.rt-mode-light .rt-year-sum:hover .rt-year-label,
body.rt-mode-light .rt-year-sum:focus-visible .rt-year-label {
  color: var(--bright-snow);
}
body.rt-mode-light .rt-year-grid {
  background: var(--platinum);
}
.rt-year-label {
  font-family: var(--font-chrome);
  font-size: 1.05rem;
  font-weight: 700;
  font-variation-settings: 'wght' 700;
  letter-spacing: 0.08em;
  text-transform: lowercase;
  color: var(--rt-accent-text);
}
.rt-year-panel {
  display: grid;
  grid-template-rows: 0fr;
  /* rows tween: see motion system */
}
.rt-year.is-open .rt-year-panel {
  grid-template-rows: 1fr;
}
.rt-year-panel > * {
  overflow: hidden;
  min-height: 0;
}
.rt-year-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0;
  border-top: 0;
}
/* Soft blue → purple wash across the open list (not the year title). */
.rt-year.is-open .rt-year-list {
  --rt-year-blue: color-mix(in srgb, var(--color-case) 88%, var(--color-stage));
  --rt-year-purple: var(--color-menu-open);
  position: relative;
  isolation: isolate;
  padding: 0 0.65rem 0.65rem;
  border-top: 1px solid color-mix(in srgb, var(--rt-accent-text) 35%, var(--color-line));
  background: transparent;
}
.rt-year.is-open .rt-year-list::before {
  content: '';
  position: absolute;
  inset: -1.25rem 0;
  z-index: -1;
  pointer-events: none;
  background:
    linear-gradient(
      180deg,
      var(--rt-year-blue) 0%,
      color-mix(in srgb, var(--rt-year-purple) 18%, var(--rt-year-blue)) 18%,
      color-mix(in srgb, var(--rt-year-purple) 40%, var(--rt-year-blue)) 40%,
      color-mix(in srgb, var(--rt-year-purple) 68%, var(--rt-year-blue)) 68%,
      var(--rt-year-purple) 100%
    );
  filter: blur(14px);
  transform: scaleY(1.08);
  transform-origin: center;
}
body.rt-mode-light .rt-year.is-open .rt-year-list {
  --rt-year-blue: var(--bright-snow);
  --rt-year-purple: var(--color-menu-open);
}
.rt-year-link {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.55rem;
  padding: 0.75rem 0.45rem;
  border-bottom: 1px solid var(--color-line);
  text-decoration: none;
  color: var(--color-ink);
}
.rt-year-list li:last-child .rt-year-link { border-bottom: 0; }
.rt-year-link-head {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 0.75rem;
  min-width: 0;
}
.rt-year-link-icon {
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  object-fit: contain;
  image-rendering: -moz-crisp-edges;
  image-rendering: pixelated;
  pointer-events: none;
}
.rt-year-link-title {
  flex: 1 1 auto;
  min-width: 0;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 1.05rem;
  line-height: 1.25;
  text-transform: lowercase;
  color: var(--color-ink);
}
.rt-year-link-gloss {
  display: block;
  color: var(--color-muted);
  font-family: var(--font-body);
  font-size: var(--size-body);
  line-height: 1.45;
}
.rt-year-link:hover .rt-year-link-title,
.rt-year-link.is-active .rt-year-link-title {
  color: var(--rt-accent-text);
}
.rt-year-link:hover,
.rt-year-link:focus-visible {
  color: var(--color-ink);
}

/* Next essay teaser (under Words reader) — same wash as open year list. */
.rt-next-text {
  margin-top: var(--space-lg);
  padding-top: var(--space-lg);
  border-top: 1px solid var(--rt-accent-text);
}
.rt-next-text-box {
  --rt-year-blue: color-mix(in srgb, var(--color-case) 88%, var(--color-stage));
  --rt-year-purple: var(--color-menu-open);
  display: grid;
  gap: 0;
  width: 100%;
  box-sizing: border-box;
  padding: 0;
  position: relative;
  isolation: isolate;
  overflow: hidden;
  border: 1px solid var(--rt-accent-text);
  background: transparent;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--rt-accent-text) 40%, transparent);
  text-decoration: none;
  color: var(--color-ink);
}
.rt-next-text-box::before {
  content: '';
  position: absolute;
  inset: -1.25rem 0;
  z-index: -1;
  pointer-events: none;
  background:
    linear-gradient(
      180deg,
      var(--rt-year-blue) 0%,
      color-mix(in srgb, var(--rt-year-purple) 18%, var(--rt-year-blue)) 18%,
      color-mix(in srgb, var(--rt-year-purple) 40%, var(--rt-year-blue)) 40%,
      color-mix(in srgb, var(--rt-year-purple) 68%, var(--rt-year-blue)) 68%,
      var(--rt-year-purple) 100%
    );
  filter: blur(14px);
  transform: scaleY(1.08);
  transform-origin: center;
}
.rt-next-text-box:hover,
.rt-next-text-box:focus-visible {
  border-color: var(--rt-accent-text);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--rt-accent-text) 55%, transparent);
  outline: none;
}
.rt-next-text-label {
  display: block;
  padding: 0.75rem 0.85rem;
  font-family: var(--font-chrome);
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--rt-accent-text);
  text-align: left;
  text-transform: lowercase;
  font-variant-caps: all-small-caps;
  border-bottom: 1px solid var(--rt-accent-text);
}
.rt-next-text-body {
  display: flex;
  flex-direction: row-reverse;
  align-items: center;
  gap: var(--space-md);
  padding: 0.75rem 0.85rem;
  min-width: 0;
}
.rt-next-text-icon {
  flex: 0 0 auto;
  margin: 0;
}
.rt-next-text-copy {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.2rem;
  text-align: left;
}
.rt-next-text-title {
  display: block;
  padding: 0;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 1.05rem;
  color: var(--color-ink);
  text-transform: lowercase;
  text-align: left;
}
.rt-next-text-box:hover .rt-next-text-title,
.rt-next-text-box:focus-visible .rt-next-text-title {
  color: var(--rt-accent-text);
}
.rt-next-text-gloss {
  display: block;
  padding: 0;
  color: var(--color-muted);
  font-family: var(--font-body);
  font-size: 0.875rem;
  line-height: 1.4;
  text-align: left;
}
.rt-next-text-box:not(:has(.rt-next-text-gloss)) .rt-next-text-title {
  padding-bottom: 0;
}
body.rt-mode-light .rt-next-text-box {
  --rt-year-blue: var(--bright-snow);
  --rt-year-purple: var(--color-menu-open);
  border-color: var(--carbon-black);
  background: transparent;
  box-shadow: inset 0 0 0 1px var(--carbon-black);
}
body.rt-mode-light .rt-next-text-label {
  color: var(--carbon-black);
}

.rt-year-list > li {
  display: grid;
  grid-template-rows: 1fr;
  /* rows/opacity: see motion system */
}
.rt-year-list > li > * {
  min-height: 0;
  overflow: hidden;
}

.rt-pocket { max-height: 14rem; overflow: hidden; padding: 0; }
.rt-pocket > * { width: 100%; max-height: 14rem; object-fit: cover; }

/* ---- Skins (dedos / Oyá) — chrome morph only; never color (lags every hover). ---- */
body.rt-skin .rt-chrome,
body.rt-skin .rt-status {
  transition: background-color var(--rt-dur-snap) ease, border-color var(--rt-dur-snap) ease;
}
/* Soft-nav: reinforce theme tween (same tokens as always-on chrome). */
body.rt-route-theme,
body.rt-route-theme .rt-chrome,
body.rt-route-theme .rt-status,
body.rt-route-theme .rt-stage,
body.rt-route-theme .rt-main,
body.rt-route-theme .rt-panel,
body.rt-route-theme .rt-win-frame,
body.rt-route-theme .rt-win,
body.rt-route-theme .rt-win-bar,
body.rt-route-theme .rt-win-title,
body.rt-route-theme .rt-page-title,
body.rt-route-theme .rt-case-head,
body.rt-route-theme .rt-case-head-crumb,
body.rt-route-theme .rt-case-head-main,
body.rt-route-theme .rt-crumb-item,
body.rt-route-theme .rt-crumb-item a,
body.rt-route-theme .rt-crumb-item span {
  transition:
    color var(--rt-dur-theme) var(--rt-ease),
    background-color var(--rt-dur-theme) var(--rt-ease),
    background var(--rt-dur-theme) var(--rt-ease),
    border-color var(--rt-dur-theme) var(--rt-ease),
    box-shadow var(--rt-dur-theme) var(--rt-ease),
    outline-color var(--rt-dur-theme) var(--rt-ease);
}
body.rt-skin-blur h1, body.rt-skin-blur h2, body.rt-skin-blur h3,
body.rt-skin-blur p, body.rt-skin-blur li { filter: blur(3px); }

body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) {
  --color-stage: #0b0404;
  --color-case: #140808;
  --color-ink: #c9f2c9;
  --color-muted: #63c063;
  --color-line: #23731f;
  --color-accent: #ff4fd8;
  --color-on-accent: #0a0404;
  --color-surround: #070202;
  --color-menu-open: #2a0820;
  background: var(--color-surround);
  color: var(--color-ink);
}
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-display,
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) h1 { color: #3fd9e8; }
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) a { color: #ffd23f; }
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) a:hover { color: #fff; }
/* Active / hover chrome must beat the global yellow `a` rule (dark-on-dark otherwise). */
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-menubar-list > li.is-current > .rt-nav-link,
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-menubar-list > li.is-current > .rt-nav-link:hover,
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-menubar-list > li.is-current > .rt-nav-link:focus-visible,
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-nav-link:hover,
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-nav-link:focus-visible {
  background: var(--color-accent);
  color: var(--color-on-accent);
  border-color: var(--color-accent);
}
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-menubar-list > li.is-current > .rt-nav-link .rt-menubar-label,
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-nav-link:hover .rt-menubar-label {
  color: inherit;
}
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-media-link:hover,
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-media-link:focus-visible,
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-media-link.is-active {
  background: var(--color-accent);
  color: var(--color-on-accent);
  border-color: var(--color-accent);
}
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-media-link:hover,
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-media-link.is-active,
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-media-link:hover .rt-media-link-title,
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-media-link.is-active .rt-media-link-title {
  color: var(--color-on-accent);
}
/* Page H1 = menu item ink (not cyan content headings / section accent). */
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-page-title {
  color: var(--color-ink);
}
body.rt-skin-dedos.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-win-bar--toolbar[data-rt-title-pattern] {
  --rt-title-pattern-opacity: 0.38;
  --rt-title-pattern-ink: color-mix(in srgb, #63c063 55%, var(--color-case));
}

body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) {
  --color-stage: #000001;
  --color-case: #0a0b10;
  --color-ink: #edeef2;
  --color-muted: rgba(233, 235, 242, 0.72);
  --color-line: rgba(0, 255, 204, 0.35);
  --color-accent: #00ffcc;
  --color-on-accent: #000001;
  --color-surround: #000001;
  --color-menu-open: #003830;
  background: var(--color-surround);
  color: var(--color-ink);
}
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) a { color: var(--color-accent); }
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) a:hover { color: #fff; }
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-menubar-list > li.is-current > .rt-nav-link,
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-menubar-list > li.is-current > .rt-nav-link:hover,
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-menubar-list > li.is-current > .rt-nav-link:focus-visible,
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-nav-link:hover,
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-nav-link:focus-visible {
  background: var(--color-accent);
  color: var(--color-on-accent);
  border-color: var(--color-accent);
}
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-menubar-list > li.is-current > .rt-nav-link .rt-menubar-label,
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-nav-link:hover .rt-menubar-label {
  color: inherit;
}
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-media-link:hover,
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-media-link:focus-visible,
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-media-link.is-active {
  background: var(--color-accent);
  color: var(--color-on-accent);
  border-color: var(--color-accent);
}
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-media-link:hover .rt-media-link-title,
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-media-link.is-active .rt-media-link-title {
  color: var(--color-on-accent);
}
/* Page H1 = menu item ink (beats .section-codigo purple/grey accent). */
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-page-title {
  color: var(--color-ink);
}
body.rt-skin-oya.rt-skin-go:not(.rt-mode-light):not(.rt-mode-arraial) .rt-win-bar--toolbar[data-rt-title-pattern] {
  --rt-title-pattern-opacity: 0.4;
  --rt-title-pattern-ink: color-mix(in srgb, #00ffcc 42%, var(--color-case));
}

@media (prefers-reduced-motion: reduce) {
  body.rt-skin, body.rt-skin * { transition: none !important; }
  .rt-main::before { transition: none; }
}

/* ---- Mobile ---- */
@media (max-width: 820px) {
  body { padding: 0.5rem; }
  .rt-stage {
    min-height: calc(100vh - 1rem);
    gap: 0.5rem;
  }
  .rt-page-title {
    font-size: clamp(1.25rem, 5.5vw, 1.85rem);
    white-space: normal;
  }

  /* Brand left; menu toggle absolute right; no tool chrome.
     Keep stage base so toolbar knockout dither still reads as a full bar. */
  .rt-toolbar,
  .rt-toolbar--mobile {
    position: relative;
    justify-content: flex-start;
    border-bottom: 0;
    box-shadow: none;
    padding: 0.85rem 2.75rem 0.85rem 1.05rem;
  }
  .rt-toolbar-brand {
    margin: 0;
    text-align: left;
  }
  .rt-toolbar-tools { display: none; }
  .rt-toolbar-end {
    position: absolute;
    right: 0.35rem;
    top: 50%;
    transform: translateY(-50%);
    z-index: 1;
    display: flex;
    align-items: stretch;
    gap: 0.25rem;
  }
  .rt-mode-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0;
    padding: 0.35rem 0.5rem;
    min-height: 0;
    border: 0;
    box-shadow: none;
    background: #000;
    color: #fff;
    font-family: var(--font-ui);
    font-size: 0.78rem;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
  }
  .rt-mode-icon:hover,
  .rt-mode-icon:focus-visible {
    background: #000;
    color: #fff;
    outline: none;
  }
  .rt-mode-icon:focus-visible {
    box-shadow: inset 0 0 0 1px #fff;
  }
  .rt-mode-icon-glyph {
    display: block;
    font-family: "Segoe UI Symbol", "Segoe UI", "Apple Symbols", "Noto Sans Symbols 2", sans-serif;
    font-size: 1.5em;
    font-weight: 400;
    line-height: 1;
    color: inherit;
  }
  .rt-menubar-toggle {
    display: inline-flex;
    position: static;
    right: auto;
    top: auto;
    transform: none;
    z-index: 1;
    align-items: center;
    margin: 0;
    min-height: 0;
    border: 0;
    box-shadow: none;
    padding: 0.35rem 0.55rem;
    background: #000;
    color: #fff;
    font-family: var(--font-ui);
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
  }
  .rt-menubar-toggle:hover,
  .rt-menubar-toggle:focus-visible {
    background: #000;
    color: #fff;
    outline: none;
  }
  .rt-menubar-toggle[aria-expanded="true"] {
    color: #fff;
  }
  .rt-menubar-lang--home {
    position: static;
    right: auto;
    top: auto;
    transform: none;
    z-index: 1;
    margin: 0;
    padding: 0;
  }
  /* Instant show/hide kept as fallback; animated path is body.rt-view-mobile below. */
  .rt-menubar-nav {
    display: none;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    padding: 0;
  }
  body.rt-menu-open .rt-menubar-nav { display: flex; }
  .rt-menubar-list {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
  }
  .rt-menubar-list > li:not(:last-child)::after {
    width: auto;
    height: 1px;
    margin: 0;
    align-self: stretch;
  }
  .rt-nav-link {
    display: flex;
    font-size: 0.85rem;
    padding: 0.75rem 0.85rem;
  }
  .rt-menubar-lang { margin: 0; padding: 0; }

  .rt-archive-tools,
  .rt-win-controls { display: none; }
  .rt-win--preview .rt-win-controls { display: inline-flex; }

  .rt-split {
    grid-template-columns: 1fr;
  }
  .rt-status {
    flex-wrap: wrap;
    gap: 0.35rem 0.75rem;
    box-shadow: none;
  }
  /* Truncate only desktop delivery; mobile footer wraps full crumb labels. */
  body.rt-view-desktop .rt-status .rt-crumb-item.is-current span { max-width: 7rem; }
  body.rt-view-desktop .rt-crumb-item.is-current span { max-width: 8rem; }
  .rt-grid-item {
    grid-column: 1 / -1;
    grid-row: auto;
    min-height: auto;
  }

  .rt-disrupt {
    justify-self: start;
    margin-top: 0;
    width: min(9rem, 45vw);
  }
  .rt-year-grid { grid-template-columns: 1fr; }
  .rt-year.is-open { grid-column: span 1; }
  .rt-home-board { grid-template-columns: 1fr; }
  .rt-home-node,
  .rt-home-node--1,
  .rt-home-node--2,
  .rt-home-node--3,
  .rt-home-node--4,
  .rt-home-node--5 {
    grid-column: 1;
    margin-top: 0;
  }
  .rt-archive-head { align-items: flex-start; flex-direction: column; }
  .rt-doc-tools { justify-content: flex-start; }
  .rt-doc-tools button { min-width: 2.75rem; min-height: 2.75rem; }
  .rt-essay-toolbar {
    align-items: flex-start;
    flex-direction: column;
  }
}

@media (min-width: 821px) {
  .rt-home {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "lede disrupt"
      "directory directory";
    column-gap: var(--space-xl);
    align-items: start;
  }
  .rt-home-lede { grid-area: lede; }
  .rt-disrupt { grid-area: disrupt; margin-top: 0; }
  .rt-home-directory { grid-area: directory; }
}

/* Mobile build: brand inset + home lang chip (cookie view, not only MQ). */
body.rt-view-mobile .rt-toolbar--mobile {
  padding-left: 1.05rem;
  padding-right: 5.5rem; /* room for mode + menu / lang */
}
body.rt-view-mobile.home .rt-toolbar--mobile {
  padding-right: 6.25rem;
}
body.rt-view-mobile.home .rt-menubar-toggle {
  display: none;
}
body.rt-view-mobile .rt-toolbar-end {
  position: absolute;
  right: 0.35rem;
  top: 50%;
  transform: translateY(-50%);
  z-index: 1;
  display: flex;
  align-items: stretch;
  gap: 0.25rem;
}
body.rt-view-mobile .rt-mode-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 0.35rem 0.5rem;
  border: 0;
  background: #000;
  color: #fff;
  font-family: var(--font-ui);
  font-size: 0.78rem;
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
}
body.rt-view-mobile .rt-mode-icon:hover,
body.rt-view-mobile .rt-mode-icon:focus-visible {
  background: #000;
  color: #fff;
  outline: none;
}
body.rt-view-mobile .rt-mode-icon:focus-visible {
  box-shadow: inset 0 0 0 1px #fff;
}
body.rt-view-mobile .rt-mode-icon-glyph {
  display: block;
  font-family: "Segoe UI Symbol", "Segoe UI", "Apple Symbols", "Noto Sans Symbols 2", sans-serif;
  font-size: 1.5em;
  font-weight: 400;
  line-height: 1;
  color: inherit;
}
/* Black chips: never use section accent for label color (can be near-black in claro). */
body.rt-view-mobile .rt-menubar-toggle {
  color: #fff;
}
body.rt-view-mobile .rt-menubar-toggle:hover,
body.rt-view-mobile .rt-menubar-toggle:focus-visible,
body.rt-view-mobile .rt-menubar-toggle[aria-expanded="true"] {
  background: #000;
  color: #fff;
}
body.rt-view-desktop .rt-mode-icon,
body.rt-view-desktop .rt-toolbar-end {
  display: none;
}

/*
 * Mobile lang chips — black blocks.
 * Current = white; inactive = light grey (accent can be illegible on black).
 */
body.rt-view-mobile .rt-menubar-lang {
  gap: 0.2rem;
  align-items: stretch;
  display: flex;
}
body.rt-view-mobile .rt-toolbar-end .rt-menubar-lang {
  align-self: stretch;
}
body.rt-view-mobile .rt-menubar-lang li {
  display: flex;
  align-items: stretch;
}
body.rt-view-mobile .rt-menubar-lang li:not(:last-child)::after {
  display: none;
}
body.rt-view-mobile .rt-menubar-lang a {
  display: inline-flex;
  align-items: center;
  padding: 0.35rem 0.55rem;
  background: #000;
  color: #e0e0e0;
  border: 0;
}
body.rt-view-mobile .rt-menubar-lang a:hover,
body.rt-view-mobile .rt-menubar-lang a:focus-visible {
  background: #000;
  color: #fff;
  outline: none;
}
body.rt-view-mobile .rt-menubar-lang .current-lang a,
body.rt-view-mobile .rt-menubar-lang .current-lang a:hover,
body.rt-view-mobile .rt-menubar-lang .current-lang a:focus-visible {
  background: #000;
  color: #fff;
}

/* Mobile footer: crumbs (wrap) → meta row (topo left + © right). */
body.rt-view-mobile .rt-status {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.55rem;
  padding: 0.65rem 1.05rem 0.75rem;
  box-shadow: none;
}
body.rt-view-mobile .rt-status-row--crumbs {
  align-self: stretch;
  min-width: 0;
}
body.rt-view-mobile .rt-status .rt-crumb {
  display: block;
}
body.rt-view-mobile .rt-status .rt-crumb-list {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.15rem 0.35rem;
  white-space: normal;
}
body.rt-view-mobile .rt-status .rt-crumb-item {
  max-width: 100%;
}
body.rt-view-mobile .rt-status .rt-crumb-item a,
body.rt-view-mobile .rt-status .rt-crumb-item.is-current span {
  max-width: none;
  overflow: visible;
  text-overflow: unset;
  white-space: normal;
  display: inline;
  word-break: break-word;
}
body.rt-view-mobile .rt-status-row--meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  min-width: 0;
}
body.rt-view-mobile .rt-back-top {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin: 0;
  padding: 0.28rem 0.5rem;
  background: color-mix(in srgb, var(--color-ink) 10%, transparent);
  color: var(--color-ink);
  border: 1px solid var(--color-line);
  border-radius: 0;
  box-shadow: none;
  font-family: inherit;
  font-size: inherit;
  font-weight: 400;
  letter-spacing: inherit;
  text-transform: inherit;
  text-decoration: none;
  line-height: 1.2;
  cursor: pointer;
  flex: 0 1 auto;
  min-width: 0;
}
body.rt-view-mobile .rt-back-top:hover,
body.rt-view-mobile .rt-back-top:focus-visible {
  background: color-mix(in srgb, var(--color-ink) 16%, transparent);
  color: var(--color-accent);
  border-color: var(--color-line);
  outline: none;
}
body.rt-view-mobile .rt-back-top-icon {
  display: block;
  flex-shrink: 0;
  font-family: "Segoe UI Symbol", "Segoe UI", "Apple Symbols", "Noto Sans Symbols 2", sans-serif;
  font-size: 1.85em;
  font-weight: 400;
  line-height: 1;
}
body.rt-view-mobile .rt-back-top-label {
  font-weight: 400;
}
body.rt-view-mobile .rt-status-copy {
  display: inline-block;
  flex-shrink: 0;
  margin-left: auto;
  white-space: nowrap;
  text-align: right;
}

/*
 * Mobile menu open/close — same 0fr→1fr + fade as year drawers.
 * display:none cannot animate; override the MQ fallback above.
 * Closed: zero footprint (no residual chrome strip under the toolbar).
 */
body.rt-view-mobile .rt-menubar-nav {
  display: grid;
  grid-template-rows: 0fr;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  flex-direction: unset;
  align-items: stretch;
  gap: 0;
  margin: 0;
  padding: 0;
  border: 0;
  overflow: hidden;
  transition:
    grid-template-rows var(--rt-dur) var(--rt-ease),
    opacity var(--rt-dur-fade) ease,
    visibility var(--rt-dur-fade) ease;
}
body.rt-view-mobile.rt-menu-open .rt-menubar-nav {
  display: grid;
  grid-template-rows: 1fr;
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  overflow: visible;
}
body.rt-view-mobile .rt-menubar-nav-slot {
  overflow: hidden;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 0;
}
body.rt-view-mobile.rt-menu-open .rt-menubar-nav-slot {
  gap: 0.65rem;
  padding: 0.55rem 0.55rem 0.75rem;
}

/*
 * Mobile icon menu (off-home). Same door icons as home nav window.
 * Scoped to body.rt-view-mobile so desktop chrome stays untouched.
 */
body.rt-view-mobile .rt-menubar-nav--icons {
  gap: 0;
  padding: 0;
}
body.rt-view-mobile .rt-menubar-doors {
  border: 1px solid var(--color-line);
  background: var(--color-case);
  box-shadow: 0.25rem 0.25rem 0 color-mix(in srgb, #000 45%, transparent);
}
body.rt-view-mobile .rt-menubar-doors-bar {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.35rem 0.55rem;
  border-bottom: 1px solid var(--color-line);
  font-family: var(--font-ui, monospace);
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  color: var(--color-ink);
}
body.rt-view-mobile .rt-menubar-doors-bar img {
  width: 20px;
  height: 20px;
  image-rendering: pixelated;
  flex: none;
}
body.rt-view-mobile .rt-menubar-nav--icons .rt-door-icons {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.45rem 0.35rem;
  align-content: start;
  justify-items: center;
  padding: 0.55rem 0.35rem 0.7rem;
  margin: 0;
}
body.rt-view-mobile .rt-menubar-nav--icons .rtpg-icon {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.3rem;
  width: 100%;
  max-width: 8.5rem;
  min-width: 0;
  box-sizing: border-box;
  padding: 0.55rem 0.25rem 0.45rem;
  text-align: center;
  text-decoration: none;
  border: 1px dashed transparent;
  background: transparent;
  color: inherit;
  font: inherit;
}
body.rt-view-mobile .rt-menubar-nav--icons .rtpg-icon img {
  width: 64px;
  height: 64px;
  object-fit: contain;
  image-rendering: pixelated;
  flex: none;
}
body.rt-view-mobile .rt-menubar-nav--icons .rtpg-icon b {
  display: block;
  width: 100%;
  font-family: var(--font-ui, monospace);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1.25;
  color: var(--ico-accent, var(--color-ink));
  overflow-wrap: anywhere;
}
body.rt-view-mobile .rt-menubar-nav--icons .rtpg-icon i {
  display: block;
  width: 100%;
  font-style: normal;
  font-size: 0.64rem;
  letter-spacing: 0.03em;
  line-height: 1.25;
  color: var(--color-muted);
  overflow-wrap: anywhere;
}
body.rt-view-mobile .rt-menubar-nav--icons .rtpg-icon.is-current,
body.rt-view-mobile .rt-menubar-nav--icons .rtpg-icon:hover,
body.rt-view-mobile .rt-menubar-nav--icons .rtpg-icon:focus-visible {
  border-color: var(--ico-accent, var(--color-accent));
  background: color-mix(in srgb, var(--ico-accent, var(--color-accent)) 12%, transparent);
  outline: none;
}
body.rt-view-mobile .rt-menubar-nav-slot > .rt-menubar-lang {
  align-self: flex-end;
  margin: 0;
  padding: 0;
}

/* ---- Gallery pattern — OS file icons (not masonry) ---- */
.rt-gallery-lede {
  margin-bottom: var(--space-md);
  max-width: 100%;
}
.rt-gallery-context {
  margin: 0 0 0.35rem;
  padding: 0 0.55rem;
  font-family: var(--font-ui, monospace);
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  line-height: 1.35;
  color: var(--color-muted);
  text-transform: lowercase;
}
.rt-gallery-context-link {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 0.18em;
}
.rt-gallery-context-link:hover,
.rt-gallery-context-link:focus-visible {
  color: var(--color-accent);
  outline: none;
}
.rt-gallery {
  position: relative;
}
.rt-gallery-files {
  list-style: none;
  margin: 0;
  padding: 0.65rem 0.55rem 1rem;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(6.5rem, 1fr));
  gap: 0.55rem 0.35rem;
  align-content: start;
  justify-items: center;
}
.rt-gallery-file.is-bare {
  max-width: 6.25rem;
}
.rt-gallery-file.is-bare .rt-gallery-thumb {
  gap: 0;
  padding-bottom: 0.45rem;
}
.rt-gallery-file {
  margin: 0;
  min-width: 0;
  width: 100%;
  max-width: 7.25rem;
}
.rt-gallery-thumb {
  appearance: none;
  -webkit-appearance: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.3rem;
  width: 100%;
  margin: 0;
  padding: 0.45rem 0.3rem 0.4rem;
  border: 1px dashed transparent;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: center;
  cursor: pointer;
  box-sizing: border-box;
}
.rt-gallery-file-pic {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 5.5rem;
  height: 5.5rem;
  padding: 0.2rem;
  border: 1px solid var(--color-line);
  background: color-mix(in srgb, var(--color-case) 78%, #000);
  box-sizing: border-box;
  overflow: hidden;
}
.rt-gallery-file-pic img {
  display: block;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  pointer-events: none;
}
.rt-gallery-file-name {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  max-width: 100%;
  font-family: var(--font-ui, monospace);
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.25;
  color: var(--color-ink);
  overflow-wrap: anywhere;
}
.rt-gallery-file-meta {
  font-style: normal;
  font-size: 0.62rem;
  letter-spacing: 0.04em;
  text-transform: lowercase;
  color: var(--color-muted);
  line-height: 1.2;
}
.rt-gallery-thumb:hover,
.rt-gallery-thumb:focus-visible {
  border-color: var(--color-accent);
  background: color-mix(in srgb, var(--color-accent) 12%, transparent);
  outline: none;
}
.rt-gallery-thumb:hover .rt-gallery-file-pic,
.rt-gallery-thumb:focus-visible .rt-gallery-file-pic {
  border-color: var(--color-accent);
}
.rt-gallery-thumb:hover .rt-gallery-file-name,
.rt-gallery-thumb:focus-visible .rt-gallery-file-name {
  color: var(--color-accent);
}
/* Portrait card decks — fill the 3-col grid; never the 64px file-icon box. */
.rt-gallery--cards .rt-gallery-series {
  margin: 0 0 1.15rem;
}
.rt-gallery--cards .rt-gallery-series:last-child {
  margin-bottom: 0.35rem;
}
.rt-gallery--cards .rt-gallery-series-head {
  margin: 0;
  padding: 0.2rem 0.15rem 0.5rem;
  font-family: var(--font-ui, monospace);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1.3;
  text-transform: lowercase;
  color: var(--color-muted);
}
.rt-gallery--cards .rt-gallery-series-head a {
  color: inherit;
  text-decoration: none;
}
.rt-gallery--cards .rt-gallery-series-head a:hover,
.rt-gallery--cards .rt-gallery-series-head a:focus-visible {
  color: var(--color-accent);
  outline: none;
}
.rt-gallery--cards .rt-gallery-series .rt-gallery-files {
  padding-top: 0;
  padding-bottom: 0.15rem;
}
.rt-gallery--cards .rt-gallery-files {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.85rem 0.65rem;
  padding: 0.35rem 0.15rem 1rem;
  justify-items: stretch;
}
.rt-gallery--cards .rt-gallery-file,
.rt-gallery--cards .rt-gallery-file.is-bare {
  max-width: none;
}
.rt-gallery--cards .rt-gallery-thumb,
.rt-gallery--cards .rt-gallery-file.is-bare .rt-gallery-thumb {
  padding: 0;
  border: 0;
  background: transparent;
}
.rt-gallery--cards .rt-gallery-thumb:hover,
.rt-gallery--cards .rt-gallery-thumb:focus-visible {
  border: 0;
  background: transparent;
}
.rt-gallery--cards .rt-gallery-file-pic {
  width: 100%;
  height: auto;
  padding: 0;
  background: color-mix(in srgb, var(--color-case) 55%, #000);
}
.rt-gallery--cards .rt-gallery-file-pic img {
  width: 100%;
  height: auto;
  max-height: none;
}
/* Desenhos — series rooms, native aspect, no file-icon hole. */
.rt-gallery--series .rt-gallery-series {
  margin: 0 0 1.35rem;
}
.rt-gallery--series .rt-gallery-series:last-child {
  margin-bottom: 0.35rem;
}
.rt-gallery--series .rt-gallery-series-head {
  margin: 0;
  padding: 0.2rem 0.15rem 0.5rem;
  font-family: var(--font-ui, monospace);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1.3;
  text-transform: lowercase;
  color: var(--color-muted);
}
.rt-gallery--series .rt-gallery-files,
.rt-gallery--photos .rt-gallery-files {
  /* Brick pack. Columns work in Chrome; grid-lanes when the engine has it.
   * Círculo --cards stay a even 3-col grid. */
  display: block;
  columns: 3;
  column-gap: 0.65rem;
  padding: 0 0.15rem 0.15rem;
}
.rt-gallery--series .rt-gallery-file,
.rt-gallery--series .rt-gallery-file.is-bare,
.rt-gallery--photos .rt-gallery-file,
.rt-gallery--photos .rt-gallery-file.is-bare {
  display: inline-block;
  width: 100%;
  max-width: none;
  margin: 0 0 0.65rem;
  vertical-align: top;
  break-inside: avoid;
  page-break-inside: avoid;
  -webkit-column-break-inside: avoid;
}
@supports (display: grid-lanes) {
  .rt-gallery--series .rt-gallery-files,
  .rt-gallery--photos .rt-gallery-files {
    display: grid-lanes;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.65rem;
    columns: auto;
  }
  .rt-gallery--series .rt-gallery-file,
  .rt-gallery--series .rt-gallery-file.is-bare,
  .rt-gallery--photos .rt-gallery-file,
  .rt-gallery--photos .rt-gallery-file.is-bare {
    display: block;
    width: auto;
    margin: 0;
  }
}
.rt-gallery--series .rt-gallery-thumb,
.rt-gallery--series .rt-gallery-file.is-bare .rt-gallery-thumb,
.rt-gallery--photos .rt-gallery-thumb,
.rt-gallery--photos .rt-gallery-file.is-bare .rt-gallery-thumb {
  padding: 0;
  border: 0;
  background: transparent;
  align-items: stretch;
  gap: 0.35rem;
}
.rt-gallery--series .rt-gallery-thumb:hover,
.rt-gallery--series .rt-gallery-thumb:focus-visible,
.rt-gallery--photos .rt-gallery-thumb:hover,
.rt-gallery--photos .rt-gallery-thumb:focus-visible {
  border: 0;
  background: transparent;
}
.rt-gallery--series .rt-gallery-file-pic,
.rt-gallery--photos .rt-gallery-file-pic {
  width: 100%;
  height: auto;
  padding: 0;
  background: color-mix(in srgb, var(--color-case) 55%, #000);
}
.rt-gallery--series .rt-gallery-file-pic img,
.rt-gallery--photos .rt-gallery-file-pic img {
  width: 100%;
  height: auto;
  max-height: none;
  image-rendering: auto;
}
.rt-gallery--series .rt-gallery-file-name {
  text-align: left;
  align-self: stretch;
}
.rt-split-ratios {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0;
}
.rt-split-ratio {
  flex: 1 1 3.5rem;
  min-height: 2rem;
  padding: 0.25rem;
  border: 1px solid var(--color-line);
  background: color-mix(in srgb, var(--color-stage) 70%, transparent);
  cursor: pointer;
}
.rt-split-ratio.is-active,
.rt-split-ratio:hover {
  border-color: var(--color-accent);
}
.rt-ratio-visual {
  display: flex;
  gap: 2px;
  width: 100%;
  height: 0.85rem;
}
.rt-ratio-a,
.rt-ratio-b {
  display: block;
  min-width: 0;
  background: color-mix(in srgb, var(--color-ink) 35%, transparent);
}
.rt-ratio-b {
  background: color-mix(in srgb, var(--color-accent) 55%, transparent);
}
.rt-split-ratio.is-active .rt-ratio-a {
  background: var(--color-accent);
}


/* ---- UI board (scattered windows on 12-grid) ---- */
.rt-ui-board {
  align-items: start;
  min-height: calc(var(--rt-grid-track, 4rem) * 6);
}
/* Bio right column: cabinet (retrato + ficha). Contact sits under the letter. */
.rt-bio-side {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 0;
  min-width: 0;
}
.rt-bio-side .rt-win--embedded,
.rt-bio-side .rt-ui-win {
  width: 100%;
  margin: 0;
  border: 0;
  min-height: 0;
}
#contato {
  scroll-margin-top: 4.5rem;
}
.rt-panel--content .rt-bio-contact {
  margin-top: var(--space-lg);
  font-family: var(--font-body);
}
.rt-essay-reader .rt-bio-contact,
.rt-essay-reader .rt-bio-contact .rt-win-bar,
.rt-essay-reader .rt-bio-contact .rt-win-title {
  font-family: var(--font-body);
}
.rt-bio-contact .rt-win-body {
  padding: var(--space-md);
  overflow: hidden;
  font-family: var(--font-body);
}
.rt-bio-contact .rtpg-contact-icons {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.45rem 0.35rem;
  align-content: start;
  justify-items: center;
}
.rt-ui-win {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}
.rt-ui-win .rt-win-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
}
/* Height follows content — never scroll the window chrome */
.rt-ui-win.rt-win--fit {
  align-self: start;
  height: auto;
  overflow: visible;
}
.rt-ui-win.rt-win--fit .rt-win-body {
  flex: 0 0 auto;
  overflow: hidden;
  padding: 0;
}

/* ---- Typed windows ---- */

/* multimedia */
.rt-win--multimedia .rt-win-body { padding: 0; overflow: hidden; }
.rt-mm { display: flex; flex-direction: column; min-width: 0; }
.rt-mm-frame {
  width: 100%;
  background: #000;
  border: 1px solid var(--color-line);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  box-sizing: border-box;
}
.rt-mm-frame--landscape.rt-mm-frame--empty { aspect-ratio: 16 / 9; }
.rt-mm-frame--portrait.rt-mm-frame--empty { aspect-ratio: 3 / 4; }
.rt-mm-empty { width: 100%; height: 100%; min-height: 4rem; }
.rt-mm-slide {
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
}
.rt-mm-slide[hidden] { display: none !important; }
.rt-mm-slide img,
.rt-mm-slide video {
  max-width: 100%;
  height: auto;
  width: auto;
  display: block;
  vertical-align: middle;
}
.rt-mm-frame.is-letterbox .rt-mm-slide img,
.rt-mm-frame.is-letterbox .rt-mm-slide video {
  max-width: none;
  /* natural size already < frame; keep centered on black */
}
.rt-mm-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  padding: 0.35rem 0.5rem;
  border-top: 1px solid var(--color-line);
  background: color-mix(in srgb, var(--color-case) 70%, #000);
}
.rt-mm-count {
  font-family: var(--font-chrome);
  font-size: 0.72rem;
  color: var(--color-muted);
  min-width: 3.5rem;
  text-align: center;
}

/* text — Azeret Mono, scrollable, alternate float images */
.rt-win--text {
  font-family: var(--font-chrome);
}
.rt-win--text .rt-win-body {
  padding: 0;
  overflow: hidden;
  max-height: calc(var(--rt-grid-track, 4rem) * var(--rt-rows, 4));
}
.rt-wt {
  font-family: var(--font-chrome);
  font-size: 0.8125rem;
  line-height: 1.55;
  padding: 0.85rem 1rem 1rem;
  overflow: auto;
  max-height: inherit;
  height: 100%;
}
.rt-wt img {
  max-width: 42%;
  height: auto;
  margin: 0.35rem 0 0.65rem;
  border: 1px solid var(--color-line);
}
.rt-wt img:nth-of-type(odd) {
  float: right;
  margin-left: 0.85rem;
}
.rt-wt img:nth-of-type(even) {
  float: left;
  margin-right: 0.85rem;
}
.rt-wt::after {
  content: "";
  display: table;
  clear: both;
}

/* stats */
.rt-win--stats .rt-win-body { padding: 0.55rem 0.65rem 0.7rem; }
.rt-stats {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-chrome);
  font-size: 0.75rem;
}
.rt-stats th,
.rt-stats td {
  padding: 0.35rem 0.4rem;
  vertical-align: middle;
  border-bottom: 1px solid color-mix(in srgb, var(--color-line) 70%, transparent);
}
.rt-stats th {
  text-align: left;
  font-weight: 500;
  color: var(--color-muted);
  white-space: nowrap;
  width: 1%;
}
.rt-stats-bar-cell { width: 100%; }
.rt-stats-bar {
  height: 0.65rem;
  background: color-mix(in srgb, var(--color-case) 55%, #000);
  border: 1px solid var(--color-line);
  overflow: hidden;
}
.rt-stats-bar-fill {
  display: block;
  height: 100%;
  width: calc(var(--rt-stat, 0) * 1%);
  background: linear-gradient(
    90deg,
    color-mix(in srgb, var(--color-accent) 55%, #000),
    var(--color-accent)
  );
}
.rt-stats-val {
  text-align: right;
  font-variant-numeric: tabular-nums;
  color: var(--color-ink);
  width: 1%;
  white-space: nowrap;
}

/* experimental — live embeds, no scroll */
.rt-win--experimental .rt-win-body { padding: 0; overflow: hidden; }
.rt-xpt {
  width: 100%;
  overflow: hidden;
  line-height: 0;
}
.rt-xpt iframe,
.rt-xpt video,
.rt-xpt img {
  max-width: 100%;
  display: block;
}
.rt-xpt > *:not(iframe):not(video):not(img) {
  line-height: 1.45;
  padding: 0.65rem;
}

/* information — main + key/value table, height fits */
.rt-win--information .rt-win-body { padding: 0; overflow: hidden; }
.rt-info { display: flex; flex-direction: column; min-width: 0; }
.rt-info-main {
  padding: 0.65rem 0.75rem;
  border-bottom: 1px solid var(--color-line);
  font-family: var(--font-chrome);
  font-size: 0.8125rem;
  line-height: 1.5;
}
.rt-info-main--void {
  display: none;
}
.rt-info-main:not(.rt-info-main--void):empty,
.rt-info-main--void:only-child {
  display: none;
}
.rt-info-main img,
.rt-info-main video {
  max-width: 100%;
  height: auto;
  display: block;
  border: 1px solid var(--color-line);
  background: #000;
}
.rt-info-fields {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-chrome);
  font-size: 0.75rem;
}
.rt-info-fields th,
.rt-info-fields td {
  padding: 0.4rem 0.75rem;
  border-bottom: 1px solid color-mix(in srgb, var(--color-line) 70%, transparent);
  vertical-align: top;
}
.rt-info-fields th {
  width: 36%;
  text-align: left;
  font-weight: 500;
  color: var(--color-muted);
}
.rt-info-fields tr:last-child th,
.rt-info-fields tr:last-child td {
  border-bottom: 0;
}

/* utility — gimmick controls */
.rt-win--utility .rt-win-body { padding: 0.55rem 0.65rem; overflow: hidden; }
.rt-util {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}
.rt-util-btn {
  font-family: var(--font-body);
  font-size: 0.72rem;
  padding: 0.35rem 0.55rem;
  border: 1px solid var(--color-line);
  background: color-mix(in srgb, var(--color-case) 80%, #000);
  color: var(--color-ink);
  cursor: pointer;
}
.rt-util-btn:hover,
.rt-util-btn:focus-visible {
  color: var(--color-on-accent);
  background: var(--color-accent);
  border-color: var(--color-accent);
  outline: none;
}

/* preview — width-fit film strip + CRT */
.rt-win--preview > .rt-win-bar {
  padding: 0.55rem 0.75rem;
  min-height: 2.6rem;
}
.rt-win--preview > .rt-win-bar .rt-win-title {
  font-size: clamp(1.35rem, 2.2vw, 1.65rem);
  font-weight: 700;
  letter-spacing: 0.01em;
  text-transform: lowercase;
  color: var(--color-ink);
  line-height: 1.15;
}
.rt-win--preview .rt-win-body {
  padding: 0;
  overflow: hidden;
}
.rt-pw {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.rt-pw-stage {
  position: relative;
  width: 100%;
  margin: 0;
  padding: 0;
  overflow: hidden;
  background: #050506;
  border-bottom: 1px solid var(--color-line);
  isolation: isolate;
  container-type: inline-size;
  container-name: rt-pw;
  --rt-pw-crt-duration: 0.9s;
  --rt-pw-crt-phase: 0s;
  /* Fallback before cqi / JS measure. % of a max-content strip is indefinite — avoid. */
  --rt-pw-stage-w: 100%;
}
@supports (width: 1cqi) {
  .rt-pw-stage {
    /* Cell = stage width from first paint (no wait for JS; no intrinsic-img FOUC). */
    --rt-pw-stage-w: 100cqi;
  }
}
/* Aspect only when empty — loaded strip height follows width-scaled images. */
.rt-pw-stage--landscape.rt-pw-stage--empty { aspect-ratio: 16 / 9; }
.rt-pw-stage--portrait.rt-pw-stage--empty { aspect-ratio: 3 / 4; }
.rt-pw-stage--empty {
  min-height: 8rem;
}
.rt-pw-empty {
  width: 100%;
  height: 100%;
  min-height: 8rem;
  background: #050506;
}
.rt-pw-viewport {
  position: relative;
  width: 100%;
  overflow: hidden;
  z-index: 1;
}
.rt-pw-strip {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  width: max-content;
  max-width: none;
  will-change: transform;
  transform: translate3d(0, 0, 0);
}
.rt-pw-pass {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  flex: 0 0 auto;
}
.rt-pw-cell {
  margin: 0;
  box-sizing: border-box;
  flex: 0 0 var(--rt-pw-stage-w);
  width: var(--rt-pw-stage-w);
  max-width: var(--rt-pw-stage-w);
  display: block;
  overflow: hidden;
  background: #050506;
}
.rt-pw-link {
  display: block;
  width: 100%;
  color: inherit;
  text-decoration: none;
}
.rt-pw-cell img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  pointer-events: none;
}
@supports (width: 1cqi) {
  .rt-pw-cell img {
    /* Constrain the img itself — not only the cell — so decode never paints at intrinsic size. */
    width: 100cqi;
    max-width: 100cqi;
  }
}
/* CRT — crawling scanlines; opacity fade (never display:none — kills transition). */
.rt-pw-crt {
  display: block;
  position: absolute;
  inset: 0;
  z-index: 4;
  pointer-events: none;
  background: repeating-linear-gradient(
    to bottom,
    transparent 0 2px,
    rgba(0, 0, 0, 0.22) 2px 3px
  );
  background-size: 100% 3px;
  opacity: 0;
  mix-blend-mode: multiply;
  transition: opacity var(--rt-dur-snap) ease;
  animation: rt-pw-crt-scroll var(--rt-pw-crt-duration) linear infinite;
  animation-delay: var(--rt-pw-crt-phase);
  animation-play-state: paused;
}
.rt-pw-stage.is-crt .rt-pw-crt {
  opacity: 0.85;
  animation-play-state: running;
}
/* Off-screen / non-focused / CRT off: freeze crawl. */
.rt-pw-stage.is-pw-paused .rt-pw-crt,
.rt-pw-stage:not(.is-crt) .rt-pw-crt {
  animation-play-state: paused;
}
@keyframes rt-pw-crt-scroll {
  from { background-position: 0 0; }
  to { background-position: 0 3px; }
}
.rt-pw-desc {
  font-family: var(--font-body);
  font-size: var(--size-body);
  line-height: 1.55;
  padding: 0.85rem 1rem 1rem;
  color: var(--color-ink);
}
.rt-pw-desc > *:first-child { margin-top: 0; }
.rt-pw-desc > *:last-child { margin-bottom: 0; }
@media (prefers-reduced-motion: reduce) {
  .rt-pw-crt {
    transition: none;
  }
  .rt-pw-stage.is-crt .rt-pw-crt,
  .rt-dedos-slides-view.is-crt .rt-pw-crt {
    animation: none !important;
  }
}

/* folder — static cover entry (channel / subdirectory) */
.rt-win--folder > .rt-win-bar {
  padding: 0.55rem 0.75rem;
  min-height: 2.6rem;
}
.rt-win--folder > .rt-win-bar .rt-win-title {
  font-size: clamp(1.35rem, 2.2vw, 1.65rem);
  font-weight: 700;
  letter-spacing: 0.01em;
  text-transform: lowercase;
  color: var(--color-ink);
  line-height: 1.15;
}
.rt-win--folder .rt-win-body {
  padding: 0;
  overflow: hidden;
}
.rt-folder {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.rt-folder-cover {
  margin: 0;
  padding: 0;
  overflow: hidden;
  background: #050506;
  border-bottom: 1px solid var(--color-line);
}
.rt-folder-cover--empty {
  min-height: 8rem;
  aspect-ratio: 16 / 9;
}
.rt-folder-cover--portrait.rt-folder-cover--empty {
  aspect-ratio: 3 / 4;
}
.rt-folder-link {
  display: block;
  color: inherit;
  text-decoration: none;
}
.rt-folder-cover img {
  display: block;
  width: 100%;
  height: auto;
  vertical-align: top;
}
.rt-folder-copy {
  padding: 0.75rem 1rem 1rem;
}
.rt-folder-meta {
  margin: 0;
  font-family: var(--font-body);
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  text-transform: lowercase;
  color: var(--color-muted);
}
.rt-folder-desc {
  margin: 0.45rem 0 0;
  font-family: var(--font-body);
  font-size: var(--size-body);
  line-height: 1.55;
  color: var(--color-ink);
}
.rt-folder-desc > *:first-child { margin-top: 0; }
.rt-folder-desc > *:last-child { margin-bottom: 0; }
.rt-win--folder .rt-win-title-link:hover,
.rt-folder-link:hover img {
  opacity: 0.92;
}

.rt-ui-linklist {
  list-style: none;
  margin: 0;
  padding: 0;
}
.rt-ui-linklist a {
  display: block;
  padding: 0.55rem 0.65rem;
  border-bottom: 1px solid var(--color-line);
  text-decoration: none;
}
.rt-ui-linklist a:hover,
.rt-ui-linklist a:focus-visible {
  color: var(--color-on-accent);
  background: var(--color-accent);
}
.rt-split--calm {
  display: grid;
  grid-template-columns: 1fr;
}
.rt-text-menu-tools,
.rt-media-menu-tools {
  padding: 0.55rem 0.65rem 0;
  border-bottom: 1px solid var(--color-line);
}
/* Modal as shell window, not a foreign lightbox */
.rt-gallery-modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: grid;
  place-items: center;
  padding: var(--space-md);
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--rt-dur-fade) ease;
}
.rt-gallery-modal.is-open {
  opacity: 1;
  pointer-events: auto;
}
.rt-gallery-modal[hidden] { display: none !important; }
/* Translucent dark veil + quiet pixel texture (site still faintly visible). */
.rt-gallery-modal-scrim,
.rt-site-frame-scrim {
  position: absolute;
  inset: 0;
  border: 0;
  padding: 0;
  margin: 0;
  cursor: pointer;
  isolation: isolate;
  overflow: hidden;
  background: color-mix(in srgb, #000 68%, transparent);
}
.rt-gallery-modal-scrim::before,
.rt-site-frame-scrim::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0.12;
  background-color: #000;
  -webkit-mask-image: url("assets/patterns/pattern-grid.svg");
  mask-image: url("assets/patterns/pattern-grid.svg");
  -webkit-mask-size: 8px;
  mask-size: 8px;
  -webkit-mask-repeat: repeat;
  mask-repeat: repeat;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
}
body.rt-mode-light .rt-gallery-modal-scrim,
body.rt-mode-light .rt-site-frame-scrim {
  background: color-mix(in srgb, #000 52%, transparent);
}
body.rt-mode-light .rt-gallery-modal-scrim::before,
body.rt-mode-light .rt-site-frame-scrim::before {
  opacity: 0.1;
  background-color: #000;
}
body.rt-mode-arraial .rt-gallery-modal-scrim,
body.rt-mode-arraial .rt-site-frame-scrim {
  background: color-mix(in srgb, #001219 72%, transparent);
}
body.rt-mode-arraial .rt-gallery-modal-scrim::before,
body.rt-mode-arraial .rt-site-frame-scrim::before {
  opacity: 0.12;
  background-color: #000;
}
.rt-gallery-modal-win {
  --rt-zoom-img-w: 52rem;
  position: relative;
  z-index: 1;
  width: min(52rem, 100%);
  max-width: min(52rem, 100%);
  max-height: min(92vh, 56rem);
  display: flex;
  flex-direction: column;
  transform: translateY(0.75rem) scale(0.97);
  opacity: 0;
  transition:
    width var(--rt-dur-layout) var(--rt-ease),
    max-width var(--rt-dur-layout) var(--rt-ease),
    max-height var(--rt-dur-layout) var(--rt-ease),
    transform var(--rt-dur) var(--rt-ease),
    opacity var(--rt-dur-fade) ease;
}
.rt-gallery-modal.is-open .rt-gallery-modal-win {
  transform: none;
  opacity: 1;
}
.rt-gallery-modal-win.is-zoomed {
  width: min(calc(var(--rt-zoom-img-w) + 2.5rem), 96vw);
  max-width: min(calc(var(--rt-zoom-img-w) + 2.5rem), 96vw);
  max-height: 94vh;
}
.rt-gallery-modal-body {
  overflow: auto;
  display: grid;
  gap: var(--space-md);
  align-items: start;
  transition: gap var(--rt-dur) ease;
}
@media (min-width: 721px) {
  .rt-gallery-modal-body:not(.is-zoomed) {
    grid-template-columns: minmax(0, 1.4fr) minmax(12rem, 0.7fr);
    grid-template-areas: "fig meta";
  }
  .rt-gallery-modal-body:not(.is-zoomed) .rt-gallery-modal-figure { grid-area: fig; }
  .rt-gallery-modal-body:not(.is-zoomed) .rt-gallery-meta { grid-area: meta; }
}
.rt-gallery-modal-body.is-zoomed {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}
.rt-gallery-modal-title {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  flex: 1 1 auto;
  font-family: var(--font-body) !important;
  font-weight: 600;
  color: var(--color-ink);
  letter-spacing: 0.02em;
  min-width: 0;
  overflow: hidden;
}
.rt-gallery-modal-filename {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}
.rt-gallery-modal-ig {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  color: inherit;
  text-decoration: none;
  flex: none;
  line-height: 1;
}
.rt-gallery-modal-ig:hover,
.rt-gallery-modal-ig:focus-visible {
  color: var(--color-accent);
  outline: none;
}
.rt-gallery-modal-ig-icon {
  flex: 0 0 auto;
  display: block;
  width: 1.35rem;
  height: 1.35rem;
  shape-rendering: geometricPrecision;
}
.rt-gallery-modal-ig-handle {
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-weight: 600;
  line-height: 1;
}
/* Tattoo modal: one column, image only, no meta/zoom.
   Size is 100% JS-driven (contain in viewport); no CSS max-height that clips. */
.rt-gallery-modal.is-tattoo .rt-gallery-modal-win {
  width: auto;
  min-width: min(16rem, 100%);
  max-width: none;
  max-height: none;
  overflow: visible;
  transition:
    transform var(--rt-dur) var(--rt-ease),
    opacity var(--rt-dur-fade) ease;
}
.rt-gallery-modal.is-tattoo .rt-gallery-modal-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0;
  padding: 0;
  overflow: visible;
  flex: 0 0 auto;
  max-height: none;
}
.rt-gallery-modal.is-tattoo .rt-gallery-meta,
.rt-gallery-modal.is-tattoo [data-rt-gallery-zoom] {
  display: none !important;
}
.rt-gallery-modal.is-tattoo .rt-gallery-modal-figure {
  width: auto;
  max-height: none;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  overflow: visible;
  cursor: default;
  display: block;
  transition: none;
}
.rt-gallery-modal.is-tattoo .rt-gallery-modal-figure img {
  max-height: none;
  max-width: none;
  width: auto;
  height: auto;
  margin: 0;
  display: block;
  object-fit: contain;
  transition: opacity var(--rt-dur-snap) ease;
}
.rt-gallery-modal.is-tattoo .rt-win-bar {
  align-items: center;
}
.rt-gallery-modal.is-tattoo .rt-gallery-modal-title {
  display: flex;
  align-items: center;
  font-weight: 500;
  font-size: 0.78rem;
  letter-spacing: 0.01em;
  line-height: 1;
  padding-right: 0.5rem;
  min-height: 1.75rem;
}
.rt-gallery-modal.is-tattoo .rt-gallery-modal-tools {
  align-self: center;
}
.rt-gallery-modal-tools {
  display: inline-flex;
  align-items: center;
  gap: 0.15rem;
  margin-left: auto;
  flex: none;
}
.rt-gallery-nav {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.75rem;
  min-height: 1.75rem;
  padding: 0;
  border: 1px solid transparent;
  background: transparent;
  color: var(--color-muted);
  font-family: var(--font-body);
  font-size: 1.1rem;
  line-height: 1;
  cursor: pointer;
}
.rt-gallery-nav:hover,
.rt-gallery-nav:focus-visible,
.rt-gallery-nav[aria-pressed="true"] {
  color: var(--color-on-accent);
  background: var(--color-accent);
  outline: none;
}
.rt-gallery-nav:disabled {
  opacity: 0.35;
  pointer-events: none;
}
.rt-gallery-modal-figure {
  margin: 0;
  padding: 0.65rem 0;
  background: #050506;
  border: 1px solid var(--color-line);
  overflow: hidden;
  max-height: min(70vh, 40rem);
  cursor: zoom-in;
  transition:
    padding var(--rt-dur) var(--rt-ease),
    background-color var(--rt-dur) ease,
    border-color var(--rt-dur) ease,
    max-height var(--rt-dur-layout) var(--rt-ease);
}
.rt-gallery-modal-body.is-zoomed .rt-gallery-modal-figure {
  padding: 0;
  background: transparent;
  border-color: transparent;
  max-height: none;
  width: 100%;
  overflow: visible;
  cursor: zoom-out;
}
.rt-gallery-modal-figure img {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: calc(70vh - 1.5rem);
  object-fit: contain;
  margin: 0 auto;
  transition:
    max-width var(--rt-dur-layout) var(--rt-ease),
    max-height var(--rt-dur-layout) var(--rt-ease),
    width var(--rt-dur-layout) var(--rt-ease);
}
.rt-gallery-modal-body.is-zoomed .rt-gallery-modal-figure img {
  width: auto;
  max-width: min(100%, var(--rt-zoom-img-w, 100%));
  height: auto;
  max-height: none;
}

.rt-gallery-meta {
  margin: 0;
  font-size: 0.85rem;
  transition:
    opacity var(--rt-dur-fade) ease,
    transform var(--rt-dur) var(--rt-ease);
}
.rt-gallery-meta.is-exit-right {
  opacity: 0;
  transform: translateX(1.25rem);
  pointer-events: none;
}
.rt-gallery-meta.is-enter-top {
  opacity: 0;
  transform: translateY(-0.75rem);
  pointer-events: none;
}
.rt-gallery-modal-body.is-zoomed .rt-gallery-meta {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 0.75rem 1.25rem;
  width: 100%;
  order: -1;
}
.rt-gallery-modal-body.is-zoomed .rt-gallery-meta.is-in {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}
.rt-gallery-modal-body.is-zoomed .rt-gallery-meta > div {
  margin: 0;
  padding: 0 0.85rem 0 0;
  border-bottom: 0;
  border-right: 1px dashed var(--color-line);
}
.rt-gallery-modal-body.is-zoomed .rt-gallery-meta > div:last-child {
  border-right: 0;
  padding-right: 0;
}
.rt-gallery-meta > div {
  display: grid;
  gap: 0.15rem;
  margin: 0 0 var(--space-sm);
  padding-bottom: var(--space-2xs);
  border-bottom: 1px dashed var(--color-line);
}
.rt-gallery-meta > div[hidden] {
  display: none;
}
.rt-gallery-meta dt {
  color: var(--color-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 0.68rem;
}
.rt-gallery-meta dd {
  margin: 0;
}
.rt-gallery-meta [data-rt-gallery-desc] {
  white-space: pre-wrap;
}
@media (prefers-reduced-motion: reduce) {
  .rt-gallery-modal-win,
  .rt-gallery-modal-figure,
  .rt-gallery-modal-figure img,
  .rt-gallery-meta {
    transition: none !important;
  }
}
body.rt-gallery-open,
body.rt-site-frame-open,
body.rt-leave-site-open {
  overflow: hidden;
}

/* Mobile: leave-site confirm (outbound tarodeyala etc.). */
.rt-leave-site {
  position: fixed;
  inset: 0;
  z-index: 210;
  display: grid;
  place-items: center;
  padding: var(--space-md);
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--rt-dur-fade, 0.18s) ease;
}
.rt-leave-site.is-open {
  opacity: 1;
  pointer-events: auto;
}
.rt-leave-site[hidden] { display: none !important; }
.rt-leave-site-scrim {
  position: absolute;
  inset: 0;
  border: 0;
  padding: 0;
  margin: 0;
  cursor: pointer;
  background: color-mix(in srgb, #000 68%, transparent);
}
.rt-leave-site-win {
  position: relative;
  z-index: 1;
  width: min(22rem, 100%);
  border: 1px solid var(--color-line);
  background: var(--color-case);
}
.rt-leave-site-body {
  padding: 0.9rem 0.95rem 1rem;
}
.rt-leave-site-body p {
  margin: 0 0 0.85rem;
  font-family: var(--font-body);
  font-size: var(--size-body);
  line-height: 1.45;
  color: var(--color-ink);
}
.rt-leave-site-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.45rem;
}
.rt-leave-site-go,
.rt-leave-site-back {
  min-height: 2.1rem;
  padding: 0.35rem 0.5rem;
  border: 1px solid var(--color-line);
  background: transparent;
  color: var(--color-ink);
  font-family: var(--font-ui, monospace);
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  text-transform: lowercase;
  cursor: pointer;
}
.rt-leave-site-go:hover,
.rt-leave-site-go:focus-visible,
.rt-leave-site-back:hover,
.rt-leave-site-back:focus-visible {
  color: var(--color-accent);
  border-color: var(--color-accent);
  outline: none;
}
.rt-leave-site-go {
  color: var(--color-on-accent);
  background: var(--color-accent);
  border-color: var(--color-accent);
}
.rt-leave-site-go:hover,
.rt-leave-site-go:focus-visible {
  color: var(--color-on-accent);
  filter: brightness(1.08);
}

/* sigilo-lab: no modal title bar — chrome lives in the iframe brand row. */
.rt-lab-frase,
.rt-lab-end {
  display: none !important;
}
.rt-site-frame-win.is-lab > .rt-win-bar {
  display: none !important;
}
.rt-site-frame-win.is-lab > .rt-site-frame-body {
  flex: 1 1 auto;
  min-height: 0;
}

/* Artwork sites (dedos / Oyá) in a site UI window */
.rt-site-frame {
  position: fixed;
  inset: 0;
  z-index: 220;
  display: grid;
  place-items: center;
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--rt-dur-fade) ease;
}
.rt-site-frame.is-open {
  opacity: 1;
  pointer-events: auto;
}
.rt-site-frame-win {
  position: relative;
  z-index: 1;
  width: 95vw;
  height: 95vh;
  max-width: 95vw;
  max-height: 95vh;
  display: flex;
  flex-direction: column;
  background: var(--color-case);
  border: 1px solid var(--color-line);
  box-shadow: 0.35rem 0.35rem 0 color-mix(in srgb, #000 55%, transparent);
}
/* sigilo-lab: wide enough for equal panels; 90% so it isn't glued to the chrome */
.rt-site-frame-win.is-lab {
  width: min(1100px, 96vw);
  height: 90%;
  max-width: 96vw;
  max-height: 90%;
}
.rt-site-frame-tools {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-left: auto;
}
.rt-site-frame-ext {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.75rem;
  min-height: 1.75rem;
  text-decoration: none;
  color: var(--color-muted);
  border: 1px solid transparent;
  font-family: var(--font-body);
}
.rt-site-frame-ext:hover,
.rt-site-frame-ext:focus-visible {
  color: var(--color-on-accent);
  background: var(--color-accent);
  outline: none;
}
.rt-site-frame-body {
  flex: 1 1 auto;
  min-height: 0;
  padding: 0 !important;
  overflow: hidden;
}
.rt-site-frame-body iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  background: #000;
}

/* Mobile: same site-frame, full viewport (desktop keeps ~95vw/95vh). */
body.rt-view-mobile .rt-site-frame-win,
body.rt-view-mobile .rt-site-frame-win.is-lab {
  width: 100vw;
  height: 100vh;
  max-width: 100vw;
  max-height: 100vh;
  box-shadow: none;
  border-left: 0;
  border-right: 0;
  border-top: 0;
}

@media (max-width: 820px) {
  .rt-gallery-files {
    grid-template-columns: repeat(auto-fill, minmax(5.5rem, 1fr));
    gap: 0.4rem 0.25rem;
  }
  .rt-gallery-file-pic {
    width: 4.75rem;
    height: 4.75rem;
  }
  .rt-gallery--cards .rt-gallery-files {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.5rem 0.3rem;
  }
  .rt-gallery--cards .rt-gallery-file-pic {
    width: 100%;
    height: auto;
  }
  .rt-gallery--series .rt-gallery-files,
  .rt-gallery--photos .rt-gallery-files {
    columns: 2;
    column-gap: 0.4rem;
  }
  .rt-gallery--series .rt-gallery-file,
  .rt-gallery--photos .rt-gallery-file {
    margin-bottom: 0.4rem;
  }
  @supports (display: grid-lanes) {
    .rt-gallery--series .rt-gallery-files,
    .rt-gallery--photos .rt-gallery-files {
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 0.4rem;
    }
  }
  .rt-gallery--series .rt-gallery-file-pic,
  .rt-gallery--photos .rt-gallery-file-pic {
    width: 100%;
    height: auto;
  }
  .rt-split[data-rt-split-ratio="9/3"],
  .rt-split[data-rt-split-ratio="8/4"],
  .rt-split[data-rt-split-ratio="7/5"],
  .rt-split[data-rt-split-ratio="6/6"] {
    grid-template-columns: 1fr;
  }
}

/* ---- Hover / mouseover: always instant. Soft-nav morph keeps its own inline/slot transitions. ---- */
a,
button,
[type="button"],
summary,
.rt-nav-link,
.rt-menubar-label,
.rt-media-link,
.rt-media-link-title,
.rt-year,
.rt-year-link,
.rt-year-link-title,
.rt-year-label,
.rt-year-sum,
.rt-tool,
.rt-mode-btn,
.rt-win-min,
.rt-win-close,
.rt-win-tool,
.rt-win-title-link,
.rt-win-title,
.rt-archive-tools button,
.rt-split-ratio,
.rt-next-text-box,
.rt-next-text-title,
.rt-next-text-label,
.rt-crumb-item a,
.rt-back-top,
.rt-menubar-lang a,
.rt-ui-linklist a,
.rt-util-btn,
.rt-gallery-nav,
.rt-gallery-modal-ig,
.rt-gallery-modal-ig-handle,
.rt-gallery-file,
.rt-gallery-thumb,
.rt-gallery-thumb img,
.rt-gallery-file-pic,
.rt-gallery-file-name,
.rt-site-frame-ext,
.rt-home-tattoo-link,
.rt-door,
.rt-door-title,
.rt-toolbar-brand,
.rt-page-title,
.rt-essay-reader a,
a.rt-win {
  transition: none !important;
  transition-delay: 0s !important;
}
