:root {
  color-scheme: light dark;
  --obsidian: #171412;
  --obsidian-soft: #26211e;
  --amate: #f2e6cc;
  --paper: #fffaf0;
  --ink: #251e19;
  --muted: #73665c;
  --cochineal: #852f2a;
  --cochineal-bright: #aa453a;
  --jade: #225d55;
  --turquoise: #3b7d79;
  --ochre: #bb813a;
  --line: rgba(75, 52, 35, .2);
  --surface: rgba(255, 250, 240, .92);
  --shadow: 0 22px 70px rgba(33, 21, 14, .18);
  --radius: 6px;
  --font-serif: "Alegreya", Georgia, serif;
  --font-sans: "Inter", system-ui, sans-serif;
}

[data-theme="dark"] {
  --paper: #171412;
  --ink: #f4ead5;
  --muted: #b9aa9b;
  --line: rgba(242, 230, 204, .16);
  --surface: rgba(31, 27, 24, .94);
  --cochineal-bright: #d16b5e;
  --turquoise: #5ca39c;
  --shadow: 0 24px 70px rgba(0, 0, 0, .38);
}

@media (prefers-color-scheme: dark) {
  [data-theme="auto"] { --paper:#171412; --ink:#f4ead5; --muted:#b9aa9b; --line:rgba(242,230,204,.16); --surface:rgba(31,27,24,.94); --cochineal-bright:#d16b5e; --turquoise:#5ca39c; --shadow:0 24px 70px rgba(0,0,0,.38); }
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--paper); }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--font-sans); min-width: 320px; }
body::before { content:""; position:fixed; inset:0; z-index:-1; opacity:.14; pointer-events:none; background-image:radial-gradient(circle at 20% 10%, var(--ochre) 0 1px, transparent 1px), linear-gradient(115deg, transparent 48%, var(--line) 49%, transparent 50%); background-size:18px 18px, 72px 72px; }
a { color: inherit; }
button, input, select, textarea { font: inherit; }
button, .button { border: 0; cursor: pointer; }
img { max-width: 100%; }
.skip-link { position:fixed; top:-100px; left:1rem; z-index:1000; padding:.7rem 1rem; background:var(--paper); }
.skip-link:focus { top:1rem; }
.shell { min-height:100vh; display:flex; flex-direction:column; }
.site-header { position:sticky; top:0; z-index:50; min-height:76px; display:flex; align-items:center; gap:1.2rem; padding:.7rem clamp(1rem,4vw,4.5rem); color:#fff7e7; background:rgba(23,20,18,.9); backdrop-filter:blur(16px); border-bottom:1px solid rgba(242,230,204,.18); }
.brand { display:flex; align-items:center; gap:.8rem; text-decoration:none; min-width:max-content; }
.brand img { width:auto; height:42px; max-width:56px; object-fit:contain; background:transparent; }
.site-header .brand img,.sidebar .brand img { content:url('/assets/images/exlibris-white.png'); }
.brand strong { font-family:var(--font-serif); font-size:clamp(1.1rem,2vw,1.45rem); letter-spacing:.02em; }
.main-nav { margin-left:auto; display:flex; align-items:center; gap:.25rem; }
.main-nav a, .icon-button { padding:.7rem .85rem; border-radius:3px; text-decoration:none; color:inherit; background:transparent; }
.main-nav a:hover, .main-nav a:focus-visible, .icon-button:hover { background:rgba(255,255,255,.1); }
.menu-button { display:none; }
.hero { min-height:min(750px,82vh); display:grid; align-items:end; position:relative; overflow:hidden; color:#fff7e7; background:#171412 url('/assets/images/hero-luis-rionda.jpg') right center/cover no-repeat; }
.hero::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(12,11,10,.92) 0%,rgba(12,11,10,.58) 43%,rgba(12,11,10,.08) 78%),linear-gradient(0deg,rgba(12,11,10,.75),transparent 50%); }
.hero-content { position:relative; z-index:1; width:min(720px,90vw); padding:clamp(4rem,10vw,8rem) clamp(1.2rem,6vw,7rem); }
.kicker { display:flex; align-items:center; gap:.6rem; color:#e3c58f; font-size:.76rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase; }
.kicker::before { content:""; width:2.4rem; height:3px; background:var(--cochineal-bright); }
h1,h2,h3 { font-family:var(--font-serif); line-height:.98; margin:.35em 0; text-wrap:balance; }
h1 { font-size:clamp(3.4rem,9vw,7.5rem); font-weight:500; }
h2 { font-size:clamp(2.2rem,5vw,4rem); font-weight:500; }
h3 { font-size:1.6rem; }
.hero p { max-width:590px; font-family:var(--font-serif); font-size:clamp(1.2rem,2.4vw,1.65rem); line-height:1.5; color:#eee1cb; }
.actions { display:flex; flex-wrap:wrap; align-items:center; gap:.75rem; margin-top:1.4rem; }
.button { display:inline-flex; align-items:center; justify-content:center; gap:.55rem; min-height:44px; padding:.72rem 1rem; border-radius:3px; background:var(--cochineal); color:#fff; text-decoration:none; font-weight:600; box-shadow:inset 0 0 0 1px rgba(255,255,255,.08); }
.button:hover { background:var(--cochineal-bright); }
.button.secondary { color:var(--ink); background:transparent; box-shadow:inset 0 0 0 1px var(--line); }
.button.danger { background:#742a26; }
.motif-band { height:22px; background:linear-gradient(135deg,var(--cochineal) 25%,transparent 25%) -11px 0/22px 22px,linear-gradient(225deg,var(--jade) 25%,transparent 25%) -11px 0/22px 22px,linear-gradient(315deg,var(--ochre) 25%,transparent 25%) 0 0/22px 22px,linear-gradient(45deg,var(--obsidian) 25%,var(--amate) 25%) 0 0/22px 22px; }
.section { width:min(1180px,calc(100% - 2rem)); margin:auto; padding:clamp(4rem,8vw,7rem) 0; }
.intro-grid { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(260px,.6fr); gap:clamp(2rem,8vw,7rem); align-items:start; }
.lead { font-family:var(--font-serif); font-size:clamp(1.35rem,2.7vw,2rem); line-height:1.45; }
.fact-card { padding:1.6rem; border-left:6px solid var(--jade); background:var(--surface); box-shadow:var(--shadow); }
.fact-card i { color:var(--cochineal-bright); font-size:1.5rem; }
.page-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; }
.page-card { min-height:280px; display:flex; flex-direction:column; justify-content:end; position:relative; overflow:hidden; padding:1.4rem; color:#fff8e9; background:var(--obsidian-soft); text-decoration:none; border-radius:var(--radius); box-shadow:var(--shadow); }
.page-card::before { content:""; position:absolute; inset:0; background:var(--card-image,linear-gradient(140deg,var(--jade),var(--obsidian))) center/cover; opacity:.64; transition:transform .35s; }
.page-card::after { content:""; position:absolute; inset:0; background:linear-gradient(transparent 20%,rgba(10,9,8,.92)); }
.page-card:hover::before { transform:scale(1.04); }
.page-card > * { position:relative; z-index:1; }
.page-card h3 { margin-bottom:.3rem; }
.page-card p { margin:.2rem 0; color:#e2d7c5; line-height:1.5; }
.research-home { background:color-mix(in srgb,var(--jade),var(--paper) 92%); border-block:1px solid var(--line); }
.research-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.85rem; }
.research-card { min-height:118px; display:grid; grid-template-columns:48px 1fr auto; align-items:center; gap:1rem; padding:1.1rem; color:inherit; text-decoration:none; background:var(--surface); border:1px solid var(--line); border-left:5px solid var(--jade); border-radius:var(--radius); }
.research-card:hover { border-left-color:var(--cochineal-bright); box-shadow:var(--shadow); }
.research-card > i { color:var(--cochineal-bright); font-size:1.55rem; text-align:center; }
.research-card h3 { margin:0 0 .2rem; font-size:1.4rem; }
.research-card p { margin:0; color:var(--muted); line-height:1.4; }
.research-card > span { min-width:32px; padding:.3rem; text-align:center; color:#fff; background:var(--jade); border-radius:99px; }
.research-results { display:grid; gap:.8rem; }
.research-result { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1.2rem 1.4rem; color:inherit; text-decoration:none; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); }
.research-result:hover { border-color:var(--turquoise); }
.research-result h3,.research-result p { margin:.2rem 0; }
.research-result p { color:var(--muted); line-height:1.45; }
.download-list { display:grid; gap:.7rem; }
.download-card { display:grid; grid-template-columns:38px 1fr; align-items:center; gap:.75rem; padding:1rem; color:inherit!important; text-decoration:none; background:var(--surface); border:1px solid var(--line); border-left:4px solid var(--ochre); border-radius:var(--radius); }
.download-card small { display:block; color:var(--muted); font-family:var(--font-sans); }
.year-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:.8rem; }
.year-card { display:grid; grid-template-columns:1fr auto; align-items:center; gap:.2rem 1rem; padding:1.2rem; color:inherit; text-decoration:none; background:var(--surface); border:1px solid var(--line); border-top:5px solid var(--cochineal); border-radius:var(--radius); }
.year-card strong { font-family:var(--font-serif); font-size:2.2rem; }
.year-card span { color:var(--muted); }
.year-card i { grid-column:2; grid-row:1/3; color:var(--cochineal-bright); }
.month-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.8rem; }
.month-card { display:flex; align-items:center; gap:1rem; padding:1.1rem; color:inherit; text-decoration:none; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); }
.month-card > i { color:var(--ochre); font-size:1.5rem; }
.month-card h3,.month-card p { margin:.15rem 0; }
.month-card p { color:var(--muted); }
.article-list { display:grid; gap:.65rem; }
.article-list-item { display:grid; grid-template-columns:minmax(160px,.35fr) minmax(0,1fr) auto; align-items:center; gap:1rem; padding:1rem 1.2rem; color:inherit; text-decoration:none; background:var(--surface); border:1px solid var(--line); border-left:5px solid var(--jade); }
.article-list-item.has-thumbnail { grid-template-columns:120px minmax(150px,.3fr) minmax(0,1fr) auto; }
.article-list-item > img { width:120px; aspect-ratio:16/9; object-fit:cover; border-radius:3px; }
.article-list-item time { color:var(--muted); font-size:.9rem; }
.article-list-item h2 { margin:0; font-size:1.5rem; }
.historical-article { width:min(920px,calc(100% - 2rem)); }
.article-cover { position:relative; overflow:hidden; background-position:center; }
.article-cover.has-cover { background:var(--obsidian); }
.article-cover-image { position:absolute; inset:0; z-index:0; width:100%; height:100%; object-fit:cover; object-position:center; }
.article-cover.has-cover::after { content:""; position:absolute; inset:0; z-index:1; background:linear-gradient(90deg,rgba(20,17,15,.9),rgba(20,17,15,.48) 58%,rgba(20,17,15,.18)); pointer-events:none; }
.article-cover > div { position:relative; z-index:2; }
.footer { margin-top:auto; padding:2.2rem clamp(1rem,4vw,4.5rem); display:flex; flex-wrap:wrap; justify-content:space-between; gap:1rem; color:#d9cdb9; background:var(--obsidian); }
.footer nav { display:flex; flex-wrap:wrap; gap:.5rem 1rem; }
.footer a { color:inherit; text-underline-offset:.2em; }
.footer-socials { align-items:center; }
.footer-socials a { display:grid; width:36px; height:36px; place-items:center; color:#fff8e9; text-decoration:none; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.14); border-radius:50%; }
.footer-socials a:hover,.footer-socials a:focus-visible { color:var(--obsidian); background:var(--ochre); outline:none; }
.footer-meta { align-items:center; }
.article-hero { min-height:390px; display:grid; place-items:end start; padding:clamp(3rem,8vw,7rem) max(1rem,calc((100vw - 1020px)/2)); color:#fff7e7; background:linear-gradient(90deg,rgba(12,10,9,.9),rgba(12,10,9,.28)),var(--article-image,url('/assets/images/hero-luis-rionda.jpg')) center/cover; }
.article-hero h1 { max-width:900px; font-size:clamp(3rem,7vw,6rem); }
.prose { width:min(780px,calc(100% - 2rem)); margin:clamp(3rem,7vw,6rem) auto; font-family:var(--font-serif); font-size:1.25rem; line-height:1.75; }
.prose a { color:var(--cochineal-bright); }
.prose blockquote { margin:2rem 0; padding:.5rem 0 .5rem 1.5rem; border-left:5px solid var(--ochre); font-size:1.4em; }
.youtube-embed { margin:2rem 0; overflow:hidden; background:var(--obsidian); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); }
.youtube-embed iframe { display:block; width:100%; aspect-ratio:16/9; border:0; }
.youtube-embed figcaption { padding:.65rem .9rem; font-family:var(--font-sans); font-size:.88rem; background:var(--surface); }
.youtube-embed figcaption a { display:inline-flex; align-items:center; gap:.45rem; }
.youtube-embed figcaption i { color:#f00; }
.cv-hero { min-height:440px; }
.cv-hero p { max-width:740px; font-size:1.08rem; line-height:1.55; }
.cv-layout { width:min(1480px,calc(100% - 2rem)); margin:0 auto; display:grid; grid-template-columns:280px minmax(0,1fr); gap:clamp(1.5rem,4vw,4rem); align-items:start; padding:clamp(2rem,5vw,4.5rem) 0; }
.cv-toc { position:sticky; top:88px; max-height:calc(100vh - 108px); overflow:auto; padding:1rem; background:var(--surface); border:1px solid var(--line); border-top:5px solid var(--cochineal); border-radius:var(--radius); box-shadow:var(--shadow); }
.cv-toc summary { display:flex; align-items:center; gap:.55rem; padding:.3rem; font-weight:700; cursor:pointer; }
.cv-toc nav { display:grid; gap:.15rem; margin:.7rem 0 1rem; }
.cv-toc nav a { display:grid; grid-template-columns:28px minmax(0,1fr); align-items:start; gap:.4rem; padding:.38rem .45rem; color:var(--muted); text-decoration:none; border-radius:3px; font-size:.84rem; line-height:1.25; }
.cv-toc nav a > span { color:var(--cochineal-bright); font-weight:700; }
.cv-toc nav a:hover,.cv-toc nav a:focus-visible,.cv-toc nav a.active { color:var(--ink); background:var(--line); outline:none; }
.cv-download { width:100%; }
.cv-content { min-width:0; }
.cv-content > header { margin-bottom:2rem; padding-bottom:1.2rem; border-bottom:1px solid var(--line); }
.cv-content > header h2 { margin:.35rem 0 0; font-size:clamp(2.2rem,4vw,3.5rem); }
.cv-native-content { font-family:var(--font-serif); font-size:1.06rem; line-height:1.65; }
.cv-native-content h3 { margin:2rem 0 .8rem; padding-bottom:.35rem; color:var(--jade); border-bottom:2px solid var(--line); font-size:1.55rem; }
.cv-native-content p { margin:.58rem 0; overflow-wrap:anywhere; }
.cv-native-content .cv-bullet,.cv-native-content .cv-sub-bullet { position:relative; padding-left:1.35rem; }
.cv-native-content .cv-bullet::before { content:"•"; position:absolute; left:.15rem; color:var(--cochineal-bright); }
.cv-native-content .cv-sub-bullet { margin-left:1rem; }
.cv-native-content .cv-sub-bullet::before { content:"◦"; position:absolute; left:.15rem; color:var(--ochre); }
.cv-privacy-notice { padding:1.4rem; background:color-mix(in srgb,var(--ochre),var(--surface) 88%); border:1px solid var(--ochre); border-left:6px solid var(--cochineal); border-radius:var(--radius); font-size:1.18rem; }
.cv-content a { color:var(--cochineal-bright); overflow-wrap:anywhere; }
.cv-pagination { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; margin-top:3rem; padding-top:1.5rem; border-top:1px solid var(--line); }
.cv-pagination a:last-child { text-align:right; }
.login-layout { min-height:100vh; display:grid; grid-template-columns:1.2fr .8fr; background:var(--obsidian); }
.login-art { background:linear-gradient(90deg,rgba(23,20,18,.1),rgba(23,20,18,.75)),url('/assets/images/hero-luis-rionda.jpg') center/cover; }
.login-panel { display:grid; place-items:center; padding:2rem; background:var(--paper); }
.form-card { width:min(430px,100%); }
.form-card .brand { color:var(--ink); margin-bottom:3rem; }
.field { display:grid; gap:.4rem; margin-bottom:1rem; }
.field label { font-weight:650; }
.field small { color:var(--muted); line-height:1.35; }
.field input,.field select,.field textarea { width:100%; padding:.78rem .85rem; color:var(--ink); background:var(--surface); border:1px solid var(--line); border-radius:3px; }
.field input:focus,.field select:focus,.field textarea:focus,.editor:focus { outline:3px solid color-mix(in srgb,var(--turquoise),transparent 65%); border-color:var(--turquoise); }
.error { color:#b8463e; }
.admin { min-height:100vh; display:grid; grid-template-columns:260px 1fr; background:color-mix(in srgb,var(--paper),var(--obsidian) 4%); }
.sidebar { position:sticky; top:0; height:100vh; padding:1.2rem; color:#f3e6d2; background:var(--obsidian); }
.sidebar .brand { margin-bottom:2.5rem; }
.sidebar nav { display:grid; gap:.4rem; }
.sidebar nav a,.sidebar nav button { padding:.8rem; color:inherit; text-align:left; text-decoration:none; background:transparent; border-radius:3px; }
.sidebar nav a:hover,.sidebar nav a.active,.sidebar nav button:hover { background:rgba(255,255,255,.09); }
.admin.collapsed { grid-template-columns:82px 1fr; }
.admin.collapsed .sidebar-label,.admin.collapsed .brand strong { display:none; }
.admin.collapsed .sidebar .brand img { width:42px; height:auto; }
.admin-main { min-width:0; }
.admin-header { min-height:72px; display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1rem clamp(1rem,3vw,2.5rem); background:var(--surface); border-bottom:1px solid var(--line); }
.admin-account { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:.65rem; }
.admin-content { padding:clamp(1rem,3vw,2.5rem); }
.admin-content > .content-width { max-width:1300px; margin:auto; }
.table-wrap { overflow-x:auto; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); }
table { width:100%; border-collapse:collapse; }
th,td { padding:.8rem 1rem; text-align:left; border-bottom:1px solid var(--line); white-space:nowrap; }
.compact-table th,.compact-table td { padding:.42rem .65rem; }
.compact-table .button { min-height:32px; padding:.38rem .62rem; font-size:.9rem; }
.compact-row { transition:opacity .15s,background-color .15s; }
.compact-row[draggable="true"] { cursor:grab; }
.sortable-dragging { opacity:.42; }
.drag-handle { display:inline-grid; width:30px; height:30px; place-items:center; color:var(--muted); border-radius:3px; cursor:grab; touch-action:none; }
.drag-handle:hover,.drag-handle:focus-visible { color:var(--cochineal-bright); background:var(--line); outline:none; }
td.truncate { max-width:340px; overflow:hidden; text-overflow:ellipsis; }
td.truncate.expanded { max-width:none; white-space:normal; overflow:visible; }
td.actions-cell,th.actions-cell { position:sticky; right:0; background:var(--surface); box-shadow:-8px 0 14px rgba(0,0,0,.04); }
.status { display:inline-flex; align-items:center; gap:.4rem; padding:.24rem .55rem; border-radius:99px; font-size:.8rem; background:color-mix(in srgb,var(--jade),transparent 82%); }
.status.error { background:color-mix(in srgb,#b8463e,transparent 82%); }
.editor-layout { display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:1.2rem; align-items:start; }
.panel { padding:1.2rem; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); }
.user-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.35rem 1.2rem; }
.form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.35rem 1.2rem; }
.form-span { grid-column:1/-1; }
.checkbox-field { display:flex; align-items:center; gap:.6rem; min-height:44px; }
.checkbox-field input { width:auto; }
.toolbar { display:flex; flex-wrap:wrap; gap:.3rem; padding:.45rem; border:1px solid var(--line); border-bottom:0; background:color-mix(in srgb,var(--surface),var(--ink) 3%); }
.toolbar button { width:38px; height:36px; color:var(--ink); background:transparent; border-radius:3px; }
.toolbar button:hover { background:var(--line); }
.editor { min-height:410px; padding:1rem; overflow:auto; font-family:var(--font-serif); font-size:1.18rem; line-height:1.6; border:1px solid var(--line); background:var(--paper); }
.image-drop { padding:1.25rem; text-align:center; border:2px dashed var(--line); border-radius:var(--radius); }
.image-drop:focus,.image-drop.drag { border-color:var(--turquoise); outline:none; }
.preview-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); gap:.7rem; margin-top:1rem; }
.preview-grid figure { margin:0; min-width:0; }
.preview-grid input { width:100%; margin-top:.35rem; padding:.45rem; color:var(--ink); background:var(--paper); border:1px solid var(--line); }
.preview { position:relative; aspect-ratio:4/3; overflow:hidden; border-radius:4px; background:var(--obsidian); }
.preview img { width:100%; height:100%; object-fit:cover; }
.preview button { position:absolute; top:.35rem; right:.35rem; width:32px; height:32px; border-radius:50%; background:rgba(20,17,15,.82); color:#fff; }
.saved-media { display:grid; gap:.6rem; }
.saved-item { display:grid; grid-template-columns:76px 1fr auto; gap:.6rem; align-items:center; padding:.5rem; border:1px solid var(--line); }
.saved-item img { width:76px; height:58px; object-fit:cover; }
.article-image-manager { display:grid; gap:1rem; margin-top:1.2rem; }
.article-image-heading { display:grid; gap:.65rem; }
.article-image-heading h3,.article-image-heading p,.article-image-slot h4 { margin:.15rem 0; }
.article-image-heading .button { width:100%; }
.article-image-slot { display:grid; gap:.7rem; padding-top:1rem; border-top:1px solid var(--line); }
.article-image-slot > div > small { color:var(--muted); line-height:1.35; }
.article-image-slot .image-drop { padding:.8rem .55rem; }
.article-image-slot .image-drop > i { font-size:1.35rem; }
.article-image-slot .image-drop .actions { display:grid; grid-template-columns:1fr; }
.article-image-slot .image-drop .button { width:100%; min-height:36px; padding:.45rem .55rem; font-size:.86rem; }
.article-image-preview figure { position:relative; margin:0; overflow:hidden; background:var(--paper); border:1px solid var(--line); border-radius:4px; }
.article-image-preview img { display:block; width:100%; aspect-ratio:16/9; object-fit:cover; }
.article-image-preview figcaption { padding:.5rem 2.8rem .5rem .6rem; color:var(--muted); font-size:.78rem; }
.article-image-preview button { position:absolute; right:.35rem; bottom:.3rem; }
.compact-empty { padding:1rem .5rem; }
.attachment-list { display:grid; gap:.55rem; margin-top:1rem; }
.attachment-row { display:grid; grid-template-columns:32px minmax(0,1fr) repeat(4,auto); align-items:center; gap:.4rem; padding:.65rem; border:1px solid var(--line); border-radius:3px; }
.attachment-row > i { color:var(--cochineal-bright); font-size:1.25rem; text-align:center; }
.attachment-thumb { width:32px; height:32px; object-fit:cover; border-radius:3px; }
.attachment-row strong,.attachment-row small { display:block; min-width:0; overflow-wrap:anywhere; }
.attachment-row small { color:var(--muted); }
.file-toolbar { display:grid; grid-template-columns:2fr 1fr; gap:1rem; margin:1rem 0; }
.article-admin-filters { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; margin:1rem 0; }
.period-sort-list { display:flex; flex-wrap:wrap; gap:.35rem; min-height:38px; }
.period-sort-item { display:flex; align-items:center; gap:.25rem; min-height:34px; padding:.12rem .55rem .12rem .15rem; color:var(--ink); background:var(--paper); border:1px solid var(--line); border-radius:3px; cursor:grab; }
td code { display:block; max-width:430px; white-space:normal; overflow-wrap:anywhere; color:var(--jade); }
.empty { padding:3rem 1rem; text-align:center; color:var(--muted); }
.toast { position:fixed; right:1rem; bottom:1rem; z-index:100; max-width:420px; padding:1rem 1.2rem; color:#fff; background:var(--jade); border-radius:4px; box-shadow:var(--shadow); }
.update-notice { position:fixed; right:1rem; bottom:1rem; z-index:110; display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:.8rem; width:min(520px,calc(100% - 2rem)); padding:.85rem; color:#fff8e9; background:var(--obsidian); border:1px solid var(--ochre); border-radius:var(--radius); box-shadow:var(--shadow); }
.update-notice > i { color:var(--ochre); font-size:1.35rem; }
.update-notice strong,.update-notice span { display:block; }
.update-notice span { margin-top:.1rem; color:#d9cdb9; font-size:.9rem; }
.update-notice .button { min-height:38px; }
.spinner { animation:spin 1s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }

@media (max-width:1200px) {
  .hero::after { background:linear-gradient(90deg,rgba(12,11,10,.88) 0%,rgba(12,11,10,.46) 56%,rgba(12,11,10,.08) 100%),linear-gradient(0deg,rgba(12,11,10,.82),transparent 58%); }
}

@media (max-width:900px) {
  .menu-button { display:inline-flex; margin-left:auto; }
  .main-nav { position:absolute; top:100%; left:0; right:0; display:none; padding:.6rem 1rem 1rem; background:rgba(23,20,18,.97); }
  .site-header.nav-open .main-nav { display:grid; }
  .page-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .intro-grid,.editor-layout { grid-template-columns:1fr; }
  .user-form-grid,.form-grid,.file-toolbar,.article-admin-filters { grid-template-columns:1fr; }
  .login-layout { grid-template-columns:1fr; }
  .login-art { display:none; }
  .admin,.admin.collapsed { grid-template-columns:1fr; }
  .sidebar { position:fixed; inset:0 auto 0 0; z-index:70; width:270px; transform:translateX(-100%); transition:transform .2s; }
  .admin.menu-open .sidebar { transform:none; }
  .admin.collapsed .sidebar-label,.admin.collapsed .brand strong { display:inline; }
  .admin.collapsed .sidebar .brand img { width:auto; height:42px; }
  .cv-layout { grid-template-columns:1fr; gap:1.2rem; }
  .cv-toc { top:0; z-index:50; max-height:none; overflow:visible; padding:.7rem; }
  .cv-toc details[open] nav { max-height:48vh; overflow:auto; }
  .cv-download { display:none; }
  .cv-pagination { grid-template-columns:1fr; }
  .cv-pagination span:empty { display:none; }
}
@media (max-width:700px) {
  .page-grid { grid-template-columns:1fr; }
  .research-grid { grid-template-columns:1fr; }
  .month-grid { grid-template-columns:1fr; }
  .article-list-item { grid-template-columns:1fr auto; }
  .article-list-item.has-thumbnail { grid-template-columns:96px 1fr auto; }
  .article-list-item > img { width:96px; grid-row:1/3; }
  .article-list-item.has-thumbnail time { grid-column:2/-1; }
  .article-list-item.has-thumbnail h2 { grid-column:2; }
  .article-list-item time { grid-column:1/-1; }
  .hero { min-height:max(780px,100svh); align-items:end; background-position:88% top; background-size:auto 100%; }
  .hero::after { background:linear-gradient(0deg,rgba(12,11,10,.98) 0%,rgba(12,11,10,.9) 34%,rgba(12,11,10,.24) 65%,rgba(12,11,10,.05) 100%); }
  .hero-content { width:100%; padding:clamp(23rem,57svh,32rem) 1.2rem 3rem; }
  .hero h1 { font-size:clamp(3rem,16vw,5rem); }
  .hero p { font-size:1.15rem; }
  .table-wrap { border:0; background:transparent; overflow:visible; }
  table,thead,tbody,tr,th,td { display:block; }
  thead { display:none; }
  tr { margin-bottom:.8rem; padding:1rem; border:1px solid var(--line); background:var(--surface); }
  .compact-table tr { margin-bottom:.45rem; padding:.55rem .7rem; }
  td { padding:.35rem 0; border:0; white-space:normal; }
  .compact-table td { padding:.22rem 0; }
  td::before { content:attr(data-label); display:block; color:var(--muted); font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; }
  td.actions-cell { position:static; box-shadow:none; background:transparent; }
  .update-notice { grid-template-columns:auto 1fr; }
  .update-notice .button { grid-column:1/-1; width:100%; }
}
