/* Mástil. Music glyphs: a subset of Bravura (© Steinberg Media Technologies GmbH, SIL Open Font License 1.1), renamed “MastilGlyphs” under its reserved-name clause. */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  src: url(/lab/fonts/archivo-latin-ext-wdth-normal.5717f370.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: 'Archivo';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  src: url(/lab/fonts/archivo-latin-wdth-normal.e3a28ead.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: 'Atkinson Hyperlegible';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/lab/fonts/atkinson-hyperlegible-latin-ext-400-normal.61eeb0eb.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;
}
@font-face {
  font-family: 'Atkinson Hyperlegible';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/lab/fonts/atkinson-hyperlegible-latin-400-normal.d64ba838.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: 'Atkinson Hyperlegible';
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url(/lab/fonts/atkinson-hyperlegible-latin-ext-400-italic.90d887d5.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;
}
@font-face {
  font-family: 'Atkinson Hyperlegible';
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url(/lab/fonts/atkinson-hyperlegible-latin-400-italic.bc8825fd.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: 'Atkinson Hyperlegible';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(/lab/fonts/atkinson-hyperlegible-latin-ext-700-normal.840ced16.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;
}
@font-face {
  font-family: 'Atkinson Hyperlegible';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(/lab/fonts/atkinson-hyperlegible-latin-700-normal.140e2bd2.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: 'JetBrains Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/lab/fonts/jetbrains-mono-latin-ext-400-normal.505dfba8.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;
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/lab/fonts/jetbrains-mono-latin-400-normal.14425ba9.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: 'JetBrains Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(/lab/fonts/jetbrains-mono-latin-ext-600-normal.90899aac.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;
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(/lab/fonts/jetbrains-mono-latin-600-normal.400c6bfd.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;
}

:root {
  /* Diseño: tinta sobre papel neutro. El color solo codifica función musical
     (raíz, 3.ª, 5.ª, 7.ª, tensiones). Rail de niveles a la izquierda; el mástil es el héroe de cada lección. */
  --paper: #f2f1ed;
  --surface: #ffffff;
  --ink: #1c1b19;
  --muted: #64605a;
  --line: #dad6ce;
  --accent: #1c1b19;
  --accent-ink: #f2f1ed;
  --soft: #e9e7e1;
  --wood: #3b2a20;
  --fret: #bdb8ad;
  --inlay: #f4ead6;
  --str: #e1dacb;
  --c-R: #e5484d; --t-R: #ffffff;
  --c-3: #f5a524; --t-3: #1c1b19;
  --c-5: #3e7bfa; --t-5: #ffffff;
  --c-7: #8e4ec6; --t-7: #ffffff;
  --c-ext: #2f9e6b; --t-ext: #ffffff;
  --c-alt: #d6409f; --t-alt: #ffffff;
  --c-scale: #e7e3db; --t-scale: #1c1b19;
  --ok: #2f9e6b; --bad: #d4343a; --warn: #b7791f;
  --display: 'Archivo', 'Arial Narrow', 'Helvetica Neue', Arial, sans-serif;
  --sans: 'Atkinson Hyperlegible', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --mono: 'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace;
  --r: 10px;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --paper: #151412; --surface: #1e1d1a; --ink: #eeebe4; --muted: #a39e95; --line: #34322d; --accent: #eeebe4; --accent-ink: #151412; --soft: #282622;
    --wood: #2f2219; --fret: #8f8a80; --inlay: #efe3c8; --str: #cfc6b4;
    --c-R: #ff6369; --c-3: #ffb224; --c-5: #5b95ff; --c-7: #a875e0; --c-ext: #3dc98a; --c-alt: #f065b4; --c-scale: #d6d0c4;
    --ok: #3dc98a; --bad: #ff6369; --warn: #e3a33a;
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --paper: #151412; --surface: #1e1d1a; --ink: #eeebe4; --muted: #a39e95; --line: #34322d; --accent: #eeebe4; --accent-ink: #151412; --soft: #282622;
  --wood: #2f2219; --fret: #8f8a80; --inlay: #efe3c8; --str: #cfc6b4;
  --c-R: #ff6369; --c-3: #ffb224; --c-5: #5b95ff; --c-7: #a875e0; --c-ext: #3dc98a; --c-alt: #f065b4; --c-scale: #d6d0c4;
  --ok: #3dc98a; --bad: #ff6369; --warn: #e3a33a;
  color-scheme: dark;
}
@font-face { font-family: 'MastilGlyphs'; src: url(data:font/woff2;base64,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) format('woff2'); font-display: block; }

* { box-sizing: border-box; }
html, body { margin: 0; }
body { background: var(--paper); color: var(--ink); font-family: var(--sans); font-size: 16px; line-height: 1.55; -webkit-font-smoothing: antialiased; }
a { color: var(--ink); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { text-decoration-thickness: 2px; }
h1, h2, h3, h4 { font-family: var(--display); font-stretch: 85%; line-height: 1.1; text-wrap: balance; margin: 0; }
h1 { font-size: clamp(30px, 4.6vw, 46px); font-weight: 800; letter-spacing: -0.01em; }
h2 { font-size: 22px; font-weight: 750; }
h3 { font-size: 18px; font-weight: 700; }
p { margin: 0.5em 0; }
code { font-family: var(--mono); font-size: 0.88em; background: var(--soft); padding: 1px 5px; border-radius: 4px; }
:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; border-radius: 4px; }
h1[tabindex="-1"]:focus, h1[tabindex="-1"]:focus-visible, .main:focus { outline: none; }
.skip { position: absolute; left: -999px; top: 8px; background: var(--ink); color: var(--paper); padding: 8px 12px; z-index: 50; }
.skip:focus { left: 8px; }
.muted { color: var(--muted); }
.small { font-size: 14px; }
.ok { color: var(--ok); } .bad { color: var(--bad); }
.big { font-family: var(--display); font-size: 1.5em; font-weight: 800; font-stretch: 85%; }

/* ---- marco ---- */
.top { position: sticky; top: 0; z-index: 30; display: flex; align-items: center; gap: 14px; padding: 10px 18px; background: var(--paper); border-bottom: 1px solid var(--line); }
.brand { display: inline-flex; align-items: center; gap: 10px; font-family: var(--display); font-weight: 850; font-stretch: 80%; font-size: 24px; text-decoration: none; letter-spacing: 0.01em; }
.brand-mark { width: 26px; height: 26px; }
.toplinks { margin-left: auto; display: flex; gap: 16px; font-size: 15px; }
.toplinks a { text-decoration: none; color: var(--muted); }
.toplinks a:hover { color: var(--ink); }
.navbtn { display: none; background: none; border: 1px solid var(--line); color: var(--ink); border-radius: 8px; width: 40px; height: 36px; font-size: 18px; cursor: pointer; }
.layout { display: grid; grid-template-columns: 268px minmax(0, 1fr); }
.nav { position: sticky; top: 57px; height: calc(100vh - 57px); overflow-y: auto; padding: 18px 12px 40px 18px; border-right: 1px solid var(--line); }
.nav-g { margin-bottom: 16px; }
.nav-gt { font-family: var(--display); font-stretch: 85%; font-weight: 750; font-size: 12.5px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); margin: 0 0 6px 6px; }
.nav ul { list-style: none; margin: 0; padding: 0; }
.nav-a { display: flex; align-items: center; gap: 9px; padding: 6px 8px; border-radius: 7px; text-decoration: none; font-size: 15px; line-height: 1.3; }
.nav-a:hover { background: var(--soft); }
.nav-a.on { background: var(--ink); color: var(--paper); }
.nav-dot { width: 9px; height: 9px; border-radius: 50%; border: 1.5px solid var(--muted); flex: none; }
.nd-curso { border-color: var(--c-3); background: linear-gradient(90deg, var(--c-3) 50%, transparent 50%); }
.nd-ok { border-color: var(--ok); background: var(--ok); }
.nd-due { border-color: var(--c-R); background: var(--c-R); }
.nd-page { border-radius: 2px; border-color: var(--line); background: var(--line); }
.nav-a.on .nav-dot { border-color: var(--paper); }
.scrim { display: none; }
.main { padding: 26px clamp(16px, 4vw, 44px) 80px; max-width: 1040px; width: 100%; outline: none; }
.main > * + * { margin-top: 18px; }

/* ---- cabeceras ---- */
.hero { padding: 6px 0 4px; }
.hero h1 { font-size: clamp(44px, 8vw, 78px); font-weight: 900; font-stretch: 75%; letter-spacing: -0.015em; }
.eyebrow { font-family: var(--display); font-stretch: 85%; font-size: 13px; font-weight: 750; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); margin-bottom: 6px; }
.lede { font-size: 18px; max-width: 68ch; color: var(--ink); }
.lh-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 10px; }
.lst { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.pill { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; padding: 2px 10px; border-radius: 999px; border: 1px solid var(--line); background: var(--surface); white-space: nowrap; }
.p-curso { border-color: var(--c-3); }
.p-ok { border-color: var(--ok); color: var(--ok); }
.p-due { border-color: var(--c-R); color: var(--c-R); }
.p-nuevo { color: var(--muted); }

/* ---- bloques ---- */
.card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); padding: 18px clamp(14px, 2.4vw, 22px); }
.card > * + * { margin-top: 12px; }
.card-t { margin-bottom: 4px; }
.keyidea { border-left: 4px solid var(--ink); padding: 4px 0 4px 18px; }
.ki-t, .practice h2, .deeper h2 { font-family: var(--display); font-stretch: 85%; font-weight: 750; font-size: 13px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); margin-bottom: 4px; }
.keyidea .ul { margin: 0; }
.ul, .ol { margin: 6px 0; padding-left: 20px; max-width: 72ch; }
.ul li, .ol li { margin: 5px 0; }
.practice { background: var(--soft); border-radius: var(--r); padding: 16px 20px; }
.deeper a { font-weight: 700; }
.note { border: 1px solid var(--line); border-radius: var(--r); padding: 14px 18px; background: var(--surface); }
.note-tip { border-left: 4px solid var(--c-ext); }
.note-warn { border-left: 4px solid var(--c-R); }
.note-t { font-weight: 700; margin-bottom: 4px; }
.nextl { padding-top: 6px; }
.grid2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px; }
.grid2 > .card { margin-top: 0; }
.grid3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; }
.row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.sub { font-size: 15px; font-weight: 700; font-stretch: 90%; margin-top: 18px; }
.det { border: 1px solid var(--line); border-radius: var(--r); padding: 10px 14px; }
.det summary { cursor: pointer; font-weight: 700; }
.linkb { background: none; border: none; padding: 0; color: var(--ink); text-decoration: underline; font: inherit; cursor: pointer; }

/* ---- controles ---- */
.controls { display: flex; flex-wrap: wrap; gap: 12px 18px; align-items: flex-end; }
.fld { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.fld-l { font-size: 12.5px; font-weight: 700; color: var(--muted); letter-spacing: 0.02em; }
.fld-wide { flex: 1 1 100%; }
select, .inp-n, .inp-t { font: inherit; font-size: 15px; color: var(--ink); background: var(--surface); border: 1px solid var(--line); border-radius: 8px; padding: 7px 10px; min-height: 38px; max-width: 100%; }
.inp-n { width: 110px; }
.inp-t { width: 100%; font-family: var(--mono); font-size: 12px; }
.seg { display: inline-flex; flex-wrap: wrap; gap: 4px; background: var(--soft); padding: 3px; border-radius: 9px; }
.seg-b { font: inherit; font-size: 14px; border: none; background: transparent; color: var(--ink); padding: 6px 11px; border-radius: 7px; cursor: pointer; min-height: 32px; }
.seg-b:hover { background: var(--surface); }
.seg-b.on { background: var(--ink); color: var(--paper); }
.btn { font: inherit; font-size: 15px; font-weight: 700; border: 1px solid var(--ink); background: var(--surface); color: var(--ink); padding: 8px 14px; border-radius: 8px; cursor: pointer; min-height: 38px; text-decoration: none; display: inline-flex; align-items: center; gap: 6px; }
.btn:hover { background: var(--soft); }
.btn-primary { background: var(--accent); color: var(--accent-ink); }
.btn-primary:hover { background: var(--accent); opacity: 0.88; }
.btn-ghost { border-color: var(--line); font-weight: 600; }
.btn-sm { font-size: 14px; padding: 6px 11px; min-height: 34px; }
.btn-ico { padding: 4px 9px; min-height: 30px; }
.btn:disabled { opacity: 0.55; cursor: default; }
.rng { display: inline-flex; align-items: center; gap: 10px; }
.rng input { width: 170px; accent-color: var(--ink); }
.rng-o { font-family: var(--mono); font-size: 13px; min-width: 7ch; }
.tg { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; font-size: 14px; user-select: none; }
.tg-i { position: absolute; opacity: 0; width: 1px; height: 1px; }
.tg-s { width: 34px; height: 20px; border-radius: 999px; background: var(--line); position: relative; transition: background 0.15s; flex: none; }
.tg-s::after { content: ''; position: absolute; left: 3px; top: 3px; width: 14px; height: 14px; border-radius: 50%; background: var(--surface); transition: transform 0.15s; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }
.tg-i:checked + .tg-s { background: var(--ink); }
.tg-i:checked + .tg-s::after { transform: translateX(14px); }
.tg-i:focus-visible + .tg-s { outline: 2px solid var(--ink); outline-offset: 2px; }

/* ---- colores por función ---- */
.r-R { --rb: var(--c-R); --rt: var(--t-R); }
.r-3 { --rb: var(--c-3); --rt: var(--t-3); }
.r-5 { --rb: var(--c-5); --rt: var(--t-5); }
.r-7 { --rb: var(--c-7); --rt: var(--t-7); }
.r-ext { --rb: var(--c-ext); --rt: var(--t-ext); }
.r-alt { --rb: var(--c-alt); --rt: var(--t-alt); }
.r-scale { --rb: var(--c-scale); --rt: var(--t-scale); }
.legend { display: flex; flex-wrap: wrap; gap: 8px 16px; font-size: 14px; }
.lg { display: inline-flex; align-items: center; gap: 7px; }
.lg i { width: 14px; height: 14px; border-radius: 50%; background: var(--rb); border: 1px solid rgba(0, 0, 0, 0.25); }
.lg.r-R i { border-radius: 4px; }

/* fórmula */
.fx { display: flex; flex-wrap: wrap; gap: 6px; }
.fx-i { display: flex; flex-direction: column; align-items: center; min-width: 48px; padding: 5px 8px 6px; border-radius: 9px; background: var(--rb); color: var(--rt); border: 2px solid transparent; }
.fx-c { font-family: var(--display); font-stretch: 85%; font-weight: 800; font-size: 17px; line-height: 1.1; }
.fx-n { font-size: 13px; opacity: 0.92; }
.fx-s { font-size: 11px; opacity: 0.85; }
.fx-diff { border-color: var(--ink); box-shadow: 0 0 0 2px var(--surface) inset; }
.r-scale.fx-i { border: 1px solid var(--line); }
.steps { display: flex; flex-wrap: wrap; gap: 4px; font-family: var(--mono); font-size: 13px; }
.st { padding: 2px 8px; border-radius: 6px; border: 1px solid var(--line); }
.st-1 { background: var(--soft); }
.st-3 { border-color: var(--c-alt); color: var(--c-alt); font-weight: 700; }

/* cabecera de acorde */
.chordhead { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; }
.sym { font-family: var(--display); font-weight: 900; font-stretch: 80%; font-size: 48px; line-height: 1; letter-spacing: -0.01em; }
.sym-sm { font-size: 30px; }
.chordhead p { margin: 2px 0 0; max-width: 60ch; }
.cx-viz { display: flex; flex-wrap: wrap; gap: 18px; align-items: flex-start; }
.cx-t { font-size: 12.5px; font-weight: 700; color: var(--muted); margin-bottom: 6px; }
.ladder { display: flex; flex-direction: column; align-items: flex-start; }
.lad-n { display: flex; align-items: baseline; gap: 10px; padding: 3px 10px; border-radius: 7px; background: var(--rb); color: var(--rt); min-width: 110px; }
.lad-n b { font-family: var(--display); font-stretch: 85%; font-size: 16px; min-width: 30px; }
.lad-gap { font-family: var(--mono); font-size: 12px; color: var(--muted); padding: 1px 0 1px 18px; border-left: 2px solid var(--line); margin-left: 12px; }

/* ---- diapasón ---- */
.fb-wrap { margin-top: 8px; }
.fb-scroll { overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; border-radius: 8px; }
.fb { display: block; width: 100%; height: auto; }
.fb-wood { fill: var(--wood); }
.fb-fret { stroke: var(--fret); stroke-width: 2.2; }
.fb-nut { fill: #efe8d8; }
.fb-str { stroke: var(--str); opacity: 0.85; }
.fb-str-o { stroke: var(--muted); opacity: 0.6; }
.fb-inlay { fill: var(--inlay); opacity: 0.33; }
.fb-num { fill: var(--muted); font: 600 10px var(--mono); text-anchor: middle; }
.fb-num-k { fill: var(--ink); }
.fb-cell { fill: transparent; cursor: pointer; }
.fb-cell:hover { fill: rgba(255, 255, 255, 0.09); }
.mk { cursor: pointer; }
.mk-b { fill: var(--rb); stroke: rgba(0, 0, 0, 0.45); stroke-width: 1; }
.mk-t { fill: var(--rt); font-family: var(--sans); font-weight: 700; text-anchor: middle; dominant-baseline: central; pointer-events: none; }
.mk-dim { opacity: 0.4; }
.mk-acc .mk-b { fill: #a8a296; }
.mk-ring { fill: none; stroke: #ffffff; stroke-width: 2; stroke-dasharray: 3 2.5; }
.fb-pulse { fill: none; stroke: #ffffff; stroke-width: 3; transform-box: fill-box; transform-origin: center; animation: pulse 0.5s ease-out forwards; pointer-events: none; }
.fb-pulse.good { stroke: var(--c-ext); }
.fb-pulse.bad { stroke: var(--c-R); }
@keyframes pulse { from { transform: scale(0.8); opacity: 1; } to { transform: scale(1.7); opacity: 0; } }
.fb-compact .fb-num { font-size: 9px; }

/* ---- diagramas de acorde ---- */
.cboxes { display: flex; flex-wrap: wrap; gap: 10px; }
.cbw { margin: 0; padding: 6px 6px 8px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface); width: 132px; text-align: center; cursor: default; }
.cbw[role="button"] { cursor: pointer; }
.cbw[role="button"]:hover { border-color: var(--ink); }
.cbox { width: 100%; height: auto; display: block; }
.cb-fret { stroke: var(--muted); stroke-width: 1; }
.cb-str { stroke: var(--ink); stroke-width: 1.1; }
.cb-nut { fill: var(--ink); }
.cb-pos { fill: var(--ink); font: 700 11px var(--sans); text-anchor: end; }
.cb-x { fill: var(--muted); font: 700 13px var(--sans); text-anchor: middle; }
.cb-open { fill: var(--surface); stroke: var(--rb); stroke-width: 2.2; }
.cbw figcaption { display: flex; flex-direction: column; font-size: 12.5px; line-height: 1.25; }
.cbw figcaption b { font-size: 14px; }
.cbw figcaption span { color: var(--muted); }

/* ---- notación ---- */
.mg { font-family: 'MastilGlyphs'; fill: var(--ink); }
.st-l, .st-led, .st-bar { stroke: var(--ink); stroke-width: 1; }
.st-end { stroke-width: 3; }
.st-stem { stroke: var(--ink); stroke-width: 1.1; }
.st-beam { fill: var(--ink); }
.st-lab, .rn-c { fill: var(--muted); font: 600 11px var(--sans); text-anchor: middle; }
.rn-rest .rn-c { opacity: 0.7; }
.staff, .rhy { display: block; max-width: 100%; height: auto; }
.rn.on .mg, .rn.on .st-stem { fill: var(--c-5); stroke: var(--c-5); }
.rn.on .rn-c { fill: var(--c-5); }
.rn.good .mg { fill: var(--ok); } .rn.meh .mg { fill: var(--warn); } .rn.miss .mg { fill: var(--bad); }
.st-art { fill: var(--muted); }
.stfigs { display: flex; flex-wrap: wrap; gap: 16px; }
.stfig { margin: 0; }
.stfig figcaption { font-size: 13px; color: var(--muted); }
.mapgrid { display: grid; grid-template-columns: 170px minmax(0, 1fr); gap: 12px; align-items: center; }
.qgrid { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: 16px; align-items: center; }
.qstaff svg { width: 100%; }
.scstaff { padding-top: 8px; overflow-x: auto; }

/* ---- tablatura ---- */
.tab-wrap { overflow-x: auto; }
.tab { display: block; width: 100%; max-width: 900px; height: auto; }
.tb-l, .tb-bar { stroke: var(--muted); stroke-width: 1; }
.tb-tab { fill: var(--muted); font: 700 9px var(--mono); }
.tb-bg { fill: var(--surface); }
.tb-t { fill: var(--ink); font: 600 12px var(--mono); text-anchor: middle; }
.tb-fg { fill: var(--muted); font: 600 10px var(--mono); text-anchor: middle; }
.tb-n.on .tb-bg { fill: var(--c-5); }
.tb-n.on .tb-t { fill: #ffffff; }

/* ---- juegos ---- */
.q-prompt { font-size: 18px; min-height: 30px; }
.q-stat { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 14px; color: var(--muted); }
.q-stat b { color: var(--ink); }
.ans { display: flex; flex-wrap: wrap; gap: 6px; }
.btn-ans { font-weight: 600; border-color: var(--line); }
.btn-ans.right { border-color: var(--ok); color: var(--ok); }
.tap-pad { width: 100%; min-height: 84px; border: 2px dashed var(--line); background: var(--soft); color: var(--muted); border-radius: var(--r); font: inherit; font-size: 16px; cursor: pointer; touch-action: manipulation; user-select: none; }
.tap-pad.hit { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.count { font-family: var(--display); font-stretch: 85%; font-size: 22px; font-weight: 800; min-height: 28px; }
.rresult { font-size: 16px; }
.rstage { overflow-x: auto; }
.figs { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; }
.fig { border: 1px solid var(--line); border-radius: 9px; padding: 8px 10px; cursor: pointer; }
.fig:hover { border-color: var(--ink); }
.fig-h { display: flex; justify-content: space-between; gap: 8px; }

/* ---- tablas ---- */
.tblw { overflow-x: auto; }
.tbl, .cmp { border-collapse: collapse; width: 100%; font-size: 14.5px; }
.tbl th, .tbl td, .cmp th, .cmp td { text-align: left; padding: 7px 10px; border-bottom: 1px solid var(--line); vertical-align: top; }
.tbl th { font-size: 12.5px; color: var(--muted); font-weight: 700; }
.num { text-align: right; font-variant-numeric: tabular-nums; }
.tbl-click tbody tr { cursor: pointer; }
.tbl-click tbody tr:hover { background: var(--soft); }
.cmp th { font-size: 12.5px; color: var(--muted); }
.cmp .dh { color: var(--ink); text-decoration: underline; text-decoration-color: var(--c-alt); text-underline-offset: 4px; }
.cmp .dc { background: var(--soft); }
.cmp-sym { font-family: var(--display); font-stretch: 85%; font-size: 18px !important; color: var(--ink) !important; white-space: nowrap; }
.cchip { display: inline-flex; flex-direction: column; align-items: center; min-width: 40px; padding: 3px 6px; border-radius: 7px; background: var(--rb); color: var(--rt); margin: 1px; }
.cchip b { font-family: var(--display); font-stretch: 85%; font-size: 15px; line-height: 1.1; }
.cchip i { font-style: normal; font-size: 12px; }
.r-scale.cchip { border: 1px solid var(--line); }
.cnone { color: var(--muted); }
.diffs p { margin: 4px 0; }

/* ---- escalera de séptimas, diatónicos ---- */
.chain { display: flex; flex-direction: column; gap: 2px; }
.ch-row { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding: 8px 10px; border-radius: 9px; cursor: pointer; border: 1px solid transparent; }
.ch-row:hover { border-color: var(--line); background: var(--soft); }
.ch-sym { font-family: var(--display); font-stretch: 85%; font-size: 22px; min-width: 92px; }
.ch-arrow { font-size: 13px; color: var(--muted); padding-left: 24px; }
.dia { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 8px; }
.dia-c { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: left; font: inherit; padding: 10px; border-radius: 9px; border: 1px solid var(--line); border-top: 4px solid var(--line); background: var(--surface); color: var(--ink); cursor: pointer; }
.dia-c:hover { background: var(--soft); }
.dia-c.on { background: var(--ink); color: var(--paper); }
.dia-c b { font-family: var(--display); font-stretch: 85%; font-size: 20px; }
.dia-r { font-family: var(--mono); font-size: 13px; }
.dia-n, .dia-f { font-size: 12.5px; opacity: 0.8; }
.fn-T { border-top-color: var(--c-5); } .fn-SD { border-top-color: var(--c-ext); } .fn-D { border-top-color: var(--c-R); }
.why { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 18px; }
.mode-name p { margin: 4px 0; }

/* ---- reproductor en vivo ---- */
.lp { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 10px 20px; padding: 14px 16px; background: var(--ink); color: var(--paper); border-radius: var(--r); }
.lp-main { display: flex; align-items: baseline; flex-wrap: wrap; gap: 6px 18px; }
.lp-chord { font-family: var(--display); font-stretch: 80%; font-weight: 900; font-size: 52px; line-height: 1; }
.lp-next { opacity: 0.75; font-size: 15px; }
.lp-scale { font-size: 15px; opacity: 0.9; }
.lp-dots { display: inline-flex; gap: 6px; }
.lp-dots i { width: 12px; height: 12px; border-radius: 50%; border: 2px solid var(--paper); opacity: 0.6; }
.lp-dots i.on { background: var(--paper); opacity: 1; }
.minis { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 10px; }
.mini b { font-family: var(--display); font-stretch: 85%; font-size: 18px; }
.eqv { font-size: 15px; }
.idlist { display: flex; flex-wrap: wrap; gap: 8px; }
.idc { display: flex; flex-direction: column; align-items: flex-start; font: inherit; text-align: left; padding: 8px 12px; border-radius: 9px; border: 1px solid var(--line); background: var(--surface); color: var(--ink); cursor: pointer; }
.idc b { font-family: var(--display); font-stretch: 85%; font-size: 20px; }
.idc span { font-size: 12.5px; color: var(--muted); }
.idc.top { border-color: var(--ink); border-width: 2px; }

/* ---- temporizador y rutina ---- */
.timer { display: flex; flex-direction: column; gap: 10px; }
.t-big { font-family: var(--display); font-stretch: 80%; font-weight: 900; font-size: 64px; line-height: 1; font-variant-numeric: tabular-nums; }
.t-name { font-weight: 700; }
.t-bar { height: 6px; background: var(--soft); border-radius: 99px; overflow: hidden; }
.t-bar i { display: block; height: 100%; width: 0; background: var(--ink); transition: width 0.9s linear; }
.pblocks { list-style: none; padding: 0; margin: 0; counter-reset: b; }
.pb { position: relative; padding: 10px 12px 10px 42px; border-radius: 9px; border: 1px solid transparent; }
.pb::before { counter-increment: b; content: counter(b); position: absolute; left: 10px; top: 10px; width: 22px; height: 22px; border-radius: 50%; background: var(--soft); font: 700 12px var(--mono); display: grid; place-items: center; }
.pb.on { border-color: var(--ink); background: var(--soft); }
.pb-h { display: flex; justify-content: space-between; gap: 10px; align-items: center; }
.pb p { margin: 4px 0; }
.wsteps { padding-left: 20px; margin: 0; }
.wsteps li { padding: 6px 8px; border-radius: 8px; }
.wsteps li.on { background: var(--soft); outline: 1px solid var(--ink); }

/* ---- inicio y progreso ---- */
.kpis { display: flex; flex-wrap: wrap; gap: 18px; }
.kpis > div { display: flex; flex-direction: column; }
.kpis b { font-family: var(--display); font-stretch: 80%; font-weight: 900; font-size: 40px; line-height: 1; font-variant-numeric: tabular-nums; }
.kpis span { font-size: 13px; color: var(--muted); }
.kpis-l b { font-size: 52px; }
.week { display: flex; gap: 6px; }
.wd { display: flex; flex-direction: column; align-items: center; gap: 2px; width: 40px; padding: 6px 0; border-radius: 8px; border: 1px solid var(--line); font-size: 12px; }
.wd-1 { background: var(--soft); } .wd-2 { background: var(--muted); color: var(--paper); } .wd-3 { background: var(--ink); color: var(--paper); }
.wd-d { font-weight: 700; } .wd-m { font-family: var(--mono); font-size: 11px; }
.sync { font-size: 13px; }
.route h2 { margin-bottom: 8px; }
.rt-g { padding: 10px 0; border-top: 1px solid var(--line); }
.rt-h { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 6px; }
.rt-l { display: flex; flex-wrap: wrap; gap: 6px; }
.chip { text-decoration: none; font-size: 14px; padding: 4px 11px; border-radius: 999px; border: 1px solid var(--line); background: var(--surface); }
.chip:hover { border-color: var(--ink); }
.ch-curso { border-color: var(--c-3); }
.ch-ok { background: var(--ink); color: var(--paper); border-color: var(--ink); }

/* ---- investigación y recursos ---- */
.research { display: grid; gap: 12px; }
.rs { display: grid; grid-template-columns: 54px minmax(0, 1fr); gap: 12px; padding: 16px 18px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); }
.rs-n { font-family: var(--display); font-stretch: 80%; font-weight: 900; font-size: 34px; line-height: 1; color: var(--muted); }
.rs p { max-width: 70ch; }
.rs-app { border-left: 3px solid var(--c-ext); padding-left: 10px; }
.rs-src a { color: var(--muted); }
.res { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 14px; }
.resl { list-style: none; padding: 0; margin: 0; }
.resl li { padding: 6px 0; border-bottom: 1px solid var(--line); }
.resl li:last-child { border-bottom: none; }
.resl a { font-weight: 700; }

#toast { position: fixed; left: 50%; bottom: 24px; transform: translate(-50%, 30px); background: var(--ink); color: var(--paper); padding: 10px 16px; border-radius: 10px; font-size: 15px; opacity: 0; pointer-events: none; transition: opacity 0.2s, transform 0.2s; z-index: 60; max-width: calc(100% - 32px); }
#toast.on { opacity: 1; transform: translate(-50%, 0); }

/* ---- móvil ---- */
@media (max-width: 860px) {
  .navbtn { display: inline-grid; place-items: center; }
  .toplinks { display: none; }
  .layout { grid-template-columns: minmax(0, 1fr); }
  .nav { position: fixed; top: 57px; left: 0; bottom: 0; height: auto; width: min(300px, 86vw); background: var(--paper); z-index: 40; transform: translateX(-105%); transition: transform 0.2s; border-right: 1px solid var(--line); }
  body.nav-open .nav { transform: none; }
  body.nav-open .scrim { display: block; position: fixed; inset: 57px 0 0 0; background: rgba(0, 0, 0, 0.35); z-index: 35; }
  .main { padding-top: 18px; }
  .sym { font-size: 40px; }
  .lp-chord { font-size: 42px; }
  .mapgrid, .qgrid { grid-template-columns: minmax(0, 1fr); }
  .rng input { width: 130px; }
}
@media (max-width: 420px) {
  .lede { font-size: 16.5px; }
  .seg-b { padding: 6px 9px; font-size: 13.5px; }
  .cbw { width: 116px; }
  .t-big { font-size: 52px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* ===================== Nivel 5 · Standards y contenido nuevo ===================== */
.smufl { font-family: 'MastilGlyphs'; font-style: normal; line-height: 1; }
.pill-soft { background: var(--soft); border-color: transparent; }
.btn-ans.ok { border-color: var(--ok); color: var(--ok); }
.btn-ans.bad { border-color: var(--bad); color: var(--bad); }
.ans-col { flex-direction: column; align-items: stretch; }
.ans-col .btn-ans { justify-content: flex-start; text-align: left; }

/* cifrado tipo lead sheet */
.chart { display: flex; flex-direction: column; gap: 10px; }
.ch-sec { display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 8px; align-items: start; }
.ch-lab { font-family: var(--display); font-stretch: 85%; font-weight: 850; font-size: 18px; width: 28px; height: 28px; display: grid; place-items: center; border: 2px solid var(--ink); border-radius: 6px; margin-top: 6px; }
.ch-bars { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-left: 2px solid var(--ink); }
.ch-bar { position: relative; display: flex; gap: 4px; align-items: stretch; min-height: 64px; padding: 16px 6px 6px; border-right: 1px solid var(--ink); border-bottom: 1px solid var(--line); }
.ch-bar.on { background: color-mix(in srgb, var(--c-3) 14%, transparent); }
.ch-bar.hid { background: repeating-linear-gradient(135deg, var(--soft) 0 6px, transparent 6px 12px); cursor: pointer; }
.ch-n { position: absolute; top: 2px; left: 5px; font: 600 10.5px var(--mono); color: var(--muted); }
.ch-chd { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; justify-content: flex-end; gap: 1px; padding: 0 2px 3px; border-bottom: 3px solid transparent; border-radius: 2px; }
.ch-chd.on .ch-s { color: var(--c-R); }
.ch-s { font-family: var(--display); font-stretch: 82%; font-weight: 800; font-size: clamp(15px, 1.9vw, 20px); line-height: 1.05; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-tg { font-size: 11px; font-weight: 700; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-rn, .ch-sc { font-style: normal; font-size: 11.5px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-rn { font-family: var(--mono); color: var(--ink); }
.bk-iiVI, .clg-iiVI { border-bottom-color: var(--c-5); }
.bk-iiVi, .clg-iiVi { border-bottom-color: var(--c-7); }
.bk-iiV, .bk-iiVx, .clg-iiV { border-bottom-color: var(--fret); }
.bk-VI, .clg-VI { border-bottom-color: var(--c-3); }
.bk-subVI, .bk-iiVsub, .clg-subVI { border-bottom-color: var(--c-ext); }
.bl { border-bottom-style: dotted; }
.bl-iiVI { border-bottom-color: var(--c-5); } .bl-iiVi { border-bottom-color: var(--c-7); } .bl-iiVx, .bl-VI { border-bottom-color: var(--c-3); } .bl-subVI, .bl-iiVsub { border-bottom-color: var(--c-ext); }
.ch-leg { display: flex; flex-wrap: wrap; gap: 6px 14px; color: var(--muted); }
.clg { border-bottom: 3px solid; padding-bottom: 1px; }
@media (max-width: 640px) { .ch-bars { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ch-sec { grid-template-columns: 24px minmax(0, 1fr); } .ch-lab { width: 22px; height: 22px; font-size: 14px; } }

/* biblioteca */
.tgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px; }
.tcard { display: flex; flex-direction: column; gap: 3px; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--r); background: var(--surface); text-decoration: none; }
.tcard:hover { border-color: var(--ink); }
.tc-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 4px; }
.tc-lvl { letter-spacing: 2px; font-size: 12px; color: var(--muted); }
.tc-t { font-family: var(--display); font-stretch: 85%; font-weight: 800; font-size: 20px; line-height: 1.1; }
.tc-c, .tc-m { font-size: 13.5px; color: var(--muted); }
.tc-tags { font-size: 12.5px; }
.steps-ck { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.steps-ck li { display: flex; gap: 8px; align-items: flex-start; }
.steps-ck input { width: 18px; height: 18px; margin-top: 3px; accent-color: var(--ink); flex: none; }
.steps-ck label { cursor: pointer; }
.layers { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 8px; }
.layers li { display: flex; gap: 10px; align-items: flex-start; border: 1px solid var(--line); border-radius: 9px; padding: 9px 11px; }
.layers li div { display: flex; flex-direction: column; font-size: 14px; }
.ly-n { flex: none; width: 26px; height: 26px; border-radius: 50%; background: var(--ink); color: var(--paper); display: grid; place-items: center; font-weight: 800; font-size: 13px; }
.mq-q { font-size: 16.5px; }
.mq-big { font-size: 30px; font-weight: 700; margin: 4px 0 8px; }

/* mapa de lectura */
.road { display: flex; flex-direction: column; gap: 10px; }
.rd-row { display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 8px; }
.rd-bars { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-left: 2px solid var(--ink); }
.rd-bar { position: relative; min-height: 70px; padding: 22px 8px 8px 10px; border-right: 1px solid var(--ink); display: flex; align-items: flex-end; }
.rd-bar.on { background: color-mix(in srgb, var(--c-3) 18%, transparent); }
.rd-open { padding-left: 22px; }
.rd-close { padding-right: 22px; border-right-width: 4px; }
.rd-dbl, .rd-fin { border-right: 4px double var(--ink); }
.rd-e { border-top: 2px solid var(--ink); }
.rd-end { position: absolute; top: 3px; left: 7px; font-weight: 800; font-size: 12px; }
.rd-es::before { content: ''; position: absolute; left: 0; top: 0; height: 16px; border-left: 2px solid var(--ink); }
.rd-es .ch-n { left: 24px; }
.rd-segno { position: absolute; top: -6px; left: 30px; font-size: 26px; }
.rd-tocoda { position: absolute; top: 2px; right: 6px; font-size: 12px; font-weight: 700; display: inline-flex; align-items: center; gap: 3px; }
.rd-tocoda .smufl { font-size: 20px; }
.rd-ds { position: absolute; bottom: -18px; right: 4px; font-size: 12px; font-weight: 700; font-style: italic; }
.rd-glyph { font-size: 24px; }
.rd-rep { position: absolute; top: 50%; transform: translateY(-50%); font-size: 34px; }
.rd-repl { left: -2px; } .rd-repr { right: 2px; }
.rd-order span { padding: 1px 3px; border-radius: 4px; }
.rd-order span.on { background: var(--ink); color: var(--paper); }
.mono { font-family: var(--mono); }

/* voicings y escalas */
.minis-c { grid-template-columns: repeat(auto-fill, minmax(136px, 1fr)); }
.minis-row { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 6px; }
.minis-row .cbw { flex: none; }
.scopts { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }
.scopt { flex-direction: column; align-items: flex-start; gap: 2px; text-align: left; font-weight: 500; border-color: var(--line); padding: 9px 12px; height: auto; }
.scopt b { font-size: 15px; }
.scopt span { font-size: 13.5px; color: var(--muted); }
.scopt i { font-style: normal; font-size: 12.5px; font-family: var(--mono); }
.scopt.on { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.tag-av { font-size: 11.5px; color: var(--bad) !important; }
.tag-up { font-size: 11.5px; background: var(--soft); border-radius: 999px; padding: 0 8px; color: var(--ink) !important; }
.subs { display: flex; flex-direction: column; gap: 10px; }
.sub-row { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 10px; align-items: center; }
.sub-l { font-weight: 700; font-size: 14px; }
.sub-bars { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-left: 2px solid var(--ink); }
.sub-bars .ch-bar { min-height: 46px; padding-top: 8px; }
.sub-bars .ch-s { flex: 1 1 0; }
.ch-s.chg { color: var(--c-R); }
@media (max-width: 640px) { .sub-row { grid-template-columns: 1fr; } .sub-bars, .rd-bars { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.scrollx { overflow-x: auto; }
.phr { display: flex; flex-direction: column; gap: 8px; }
.phr-in { display: flex; flex-direction: column; min-width: 980px; }
.phr-in svg { display: block; }

/* ===================== Diccionario ===================== */
.quick { margin: 4px 0 6px; }
.inp-s { font: inherit; font-size: 15px; color: var(--ink); background: var(--surface); border: 1px solid var(--line); border-radius: 8px; padding: 7px 10px; min-height: 38px; width: 200px; max-width: 100%; }
.rootbar { display: flex; flex-wrap: wrap; gap: 6px; }
.rootb { display: flex; flex-direction: column; align-items: center; justify-content: center; min-width: 52px; min-height: 52px; padding: 5px 8px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface); color: var(--ink); cursor: pointer; font: inherit; line-height: 1.15; }
.rootb b { font-family: var(--display); font-stretch: 85%; font-weight: 850; font-size: 19px; }
.rootb span { font-size: 12px; color: var(--muted); }
.rootb-a { background: var(--soft); min-width: 46px; }
.rootb:hover { border-color: var(--ink); }
.rootb.on { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.rootb.on span { color: var(--paper); opacity: 0.8; }
.enh { margin: 10px 0 0; padding: 8px 12px; border-left: 4px solid var(--c-3); background: var(--soft); border-radius: 6px; }
.dic { display: grid; grid-template-columns: minmax(250px, 330px) minmax(0, 1fr); gap: 16px; align-items: start; }
.dic.dic-table { display: none; }
.dic-side { position: sticky; top: 70px; max-height: calc(100vh - 86px); overflow-y: auto; border: 1px solid var(--line); border-radius: var(--r); background: var(--surface); padding: 10px 12px 14px; }
.dic-card { margin-top: 0; min-width: 0; }
.dic-detail > * + * { margin-top: 12px; }
.dic-cat { font-family: var(--display); font-stretch: 85%; font-weight: 750; font-size: 12.5px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); margin: 12px 0 6px; }
.dic-cat:first-child { margin-top: 2px; }
.dic-tiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.dic-tiles-w { grid-template-columns: 1fr; }
.dtile { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; text-align: left; padding: 7px 9px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); color: var(--ink); cursor: pointer; font: inherit; min-width: 0; }
.dtile b { font-family: var(--display); font-stretch: 82%; font-weight: 850; font-size: 18px; line-height: 1.1; }
.dtile b.dt-sc { font-size: 15.5px; }
.dtile span { font-size: 12px; color: var(--muted); line-height: 1.2; }
.dtile i { font-style: normal; font-family: var(--mono); font-size: 11.5px; overflow-wrap: anywhere; }
.dtile:hover { border-color: var(--ink); }
.dtile.on { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.dtile.on span { color: var(--paper); opacity: 0.8; }
.dic-vt { font-weight: 700; font-size: 14px; margin-top: 14px; }
.dtbl .dt-cat th { font-family: var(--display); font-stretch: 85%; text-transform: uppercase; letter-spacing: 0.06em; background: var(--soft); color: var(--ink); }
.dtbl tr.on, .hcmp tr.on { background: color-mix(in srgb, var(--c-3) 12%, transparent); }
.dtbl .dt-name { font-size: 13.5px; color: var(--muted); min-width: 150px; }
.dtbl td { white-space: nowrap; }
.dfacts th { white-space: nowrap; width: 1%; }
.hrow { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.hc { display: flex; flex-direction: column; align-items: stretch; gap: 2px; min-width: 0; }
.hc-b { display: flex; flex-direction: column; align-items: center; gap: 1px; padding: 7px 4px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); color: var(--ink); cursor: pointer; font: inherit; min-width: 0; }
.hc-b:hover, .hcell:hover, .dprog:hover { border-color: var(--ink); }
.hc-b b, .hcell b { font-family: var(--display); font-stretch: 80%; font-weight: 850; font-size: clamp(13px, 1.5vw, 17px); line-height: 1.1; white-space: nowrap; }
.hc-b i { font-style: normal; font-family: var(--mono); font-size: 10.5px; color: var(--muted); text-align: center; overflow-wrap: anywhere; }
.hc-r { font-family: var(--mono); font-size: 11.5px; color: var(--muted); }
.hc-key .hc-b { border-bottom: 3px solid var(--c-alt); }
.hc-key .hc-r::after { content: ' ●'; color: var(--c-alt); }
.hc-l { font-size: 12px; text-align: center; }
.hrow-fn { margin-top: 2px; }
.hfn { font-size: 11px; text-align: center; padding: 2px 0; border-radius: 5px; background: var(--soft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hfn-D { background: color-mix(in srgb, var(--c-R) 18%, transparent); }
.hfn-S { background: color-mix(in srgb, var(--c-5) 18%, transparent); }
.hfn-T { background: color-mix(in srgb, var(--c-ext) 18%, transparent); }
.hcell { display: flex; flex-direction: column; align-items: flex-start; gap: 0; padding: 4px 8px; border: 1px solid transparent; border-radius: 7px; background: none; color: var(--ink); cursor: pointer; font: inherit; }
.hcmp td { padding: 3px 4px; }
.hcmp th { white-space: nowrap; }
.dprogs { display: flex; flex-wrap: wrap; gap: 8px; }
.dprog { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); color: var(--ink); cursor: pointer; font: inherit; }
.dprog b { font-family: var(--display); font-stretch: 85%; font-size: 16px; }
@media (max-width: 980px) {
  .dic { grid-template-columns: 1fr; }
  .dic-side { position: static; max-height: 44vh; }
  .dic-tiles { grid-template-columns: repeat(auto-fill, minmax(128px, 1fr)); }
  .dic-tiles-w { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
}
@media (max-width: 640px) {
  .hrow { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .rootb { min-width: 44px; min-height: 46px; padding: 4px 6px; }
  .rootb-a { min-width: 42px; }
}


/* Added for the web version of Mástil, after the artifact's own styles (.vitepress/lab.ts puts the page together) */

/* The link to the other language, at the end of the top bar; on phones the quick links hide and it stays */
.langlink {
  margin-left: 4px;
  padding: 3px 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  font-family: var(--mono);
  font-size: 12.5px;
  font-weight: 600;
  text-decoration: none;
  color: var(--muted);
}

.langlink:hover {
  border-color: var(--ink);
  color: var(--ink);
}

/* Under the lessons, in line with them: where the lab lives and where its data stays */
.foot {
  margin: 0 0 0 268px;
  padding: 18px clamp(16px, 4vw, 44px) 28px;
  border-top: 1px solid var(--line);
  font-size: 14px;
  color: var(--muted);
}

.foot a {
  color: inherit;
}

@media (max-width: 860px) {
  .langlink {
    margin-left: auto;
  }

  .foot {
    margin-left: 0;
  }
}
