/*
Theme Name: DataPortfolio
Theme URI: https://www.dataportfolio.es
Author: Víctor González
Author URI: https://www.dataportfolio.es
Description: Tema personal de portfolio de datos, automatización e IA. Estética editorial minimalista: tipografía Manrope + JetBrains Mono, acento naranja, contenido dinámico desde WordPress (proyectos, experimentos y artículos como tipos de contenido).
Version: 1.4.37
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: dataportfolio
Tags: portfolio, blog, one-column, custom-menu, featured-images, threaded-comments, translation-ready
*/

/* =========================================================
   DataPortfolio — estilos del tema
   Paleta: fondo neutro casi blanco · texto casi negro
   Display/cuerpo: Manrope · Metadatos: JetBrains Mono
   Acento único: naranja
   ========================================================= */

:root{
  --bg: oklch(0.985 0.001 90);
  --surface: oklch(0.958 0.002 90);
  --fg: oklch(0.17 0.008 45);
  --fg-soft: oklch(0.30 0.008 45);
  --muted: oklch(0.55 0.006 45);
  --border: oklch(0.90 0.004 90);
  --border-soft: oklch(0.94 0.003 90);
  --accent: oklch(0.60 0.17 42);
  --accent-soft: oklch(0.60 0.17 42 / 0.10);
  --dark: oklch(0.155 0.008 45);
  --dark-fg: oklch(0.92 0.004 90);
  --dark-muted: oklch(0.62 0.008 45);
  --font-sans: "Manrope", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  --wrap: 1040px;
  --text: 720px;
  --radius: 10px;
}

/* Report data visualisation and editorial layout */
.report-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr);gap:1rem;align-items:start}.report-main,.report-aside{min-width:0}.report-aside{position:sticky;top:5.5rem}.report-grid--forecast{grid-template-columns:repeat(3,1fr)}.report-low{color:var(--muted);font-weight:500}.report-source{color:var(--muted);font-size:.75rem;margin-top:1rem}.report-map{height:190px;border-radius:8px;background:linear-gradient(145deg,#f5f1e9,#e8eff2);position:relative;overflow:hidden;margin-bottom:1rem;border:1px solid var(--border-soft)}.report-map:before{content:"";position:absolute;inset:0;background:linear-gradient(25deg,transparent 48%,rgba(120,140,145,.16) 49%,transparent 51%),linear-gradient(120deg,transparent 48%,rgba(120,140,145,.12) 49%,transparent 51%);background-size:90px 75px;transform:rotate(-8deg) scale(1.3)}.map-label{position:absolute;font-size:.75rem;color:var(--fg-soft);font-weight:600}.map-label--elche{top:27%;left:48%}.map-label--alicante{top:45%;right:10%}.map-pin{position:absolute;color:var(--accent);font-size:2rem;line-height:1;text-shadow:0 1px 2px #fff}.map-pin--0{top:39%;left:51%}.map-pin--1{top:65%;left:37%}.report-station-list{display:grid;gap:.65rem}.report-station{display:grid;grid-template-columns:1fr auto;gap:.15rem .6rem;padding:.7rem;border-top:1px solid var(--border-soft)}.report-station strong{grid-column:1/-1;font-size:.82rem}.report-station b{text-align:right;font-size:1.05rem}.report-station small{color:var(--muted);grid-column:2;text-align:right}.report-svg{display:block;width:100%;height:auto;min-height:180px;color:var(--muted);background:linear-gradient(to bottom,transparent 0 24%,var(--border-soft) 25% 25.5%,transparent 26% 49%,var(--border-soft) 50% 50.5%,transparent 51% 74%,var(--border-soft) 75% 75.5%,transparent 76%)}.report-svg-grid line{stroke:currentColor;stroke-width:1}.report-svg-axis{stroke:var(--border);stroke-width:1}.report-svg-value{font:600 16px var(--font-mono);fill:var(--fg)}.report-svg-label{font:12px var(--font-mono);fill:var(--muted)}.report-chart-legend{font:.72rem var(--font-mono);color:var(--muted);margin-top:.5rem}.report-empty-chart{color:var(--muted);font-size:.85rem;padding:2rem 0}.report-table-wrap{overflow-x:auto}.report-table{width:100%;border-collapse:collapse;font-size:.78rem;white-space:nowrap}.report-table th,.report-table td{padding:.55rem .65rem;border-bottom:1px solid var(--border-soft);text-align:right}.report-table th:first-child,.report-table td:first-child{text-align:left}.report-table thead th{font-weight:700;color:var(--fg)}.report-table tbody th{font-weight:600}.report-table--latest{font-size:.72rem}.report-notes li{margin:.25rem 0}@media(max-width:760px){.report-layout{display:block}.report-aside{position:static}.report-grid--forecast{grid-template-columns:repeat(2,1fr)}.report-svg{min-height:150px}.report-table{font-size:.7rem}.single-report{padding-left:1rem;padding-right:1rem}}

*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{
  font-family:var(--font-sans);
  background:var(--bg);
  color:var(--fg);
  font-size:1.0625rem;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
body.nav-open{position:fixed;left:0;right:0;width:100%;overflow:hidden;}
::selection{background:var(--accent); color:var(--bg);}
a{color:inherit; text-decoration:none;}
a:hover{color:var(--accent);}
img{max-width:100%; height:auto; display:block;}
button{font:inherit; color:inherit; background:none; border:0; cursor:pointer;}
:focus-visible{outline:2px solid var(--accent); outline-offset:3px; border-radius:3px;}
.screen-reader-text{border:0; clip:rect(1px,1px,1px,1px); clip-path:inset(50%); height:1px; margin:-1px; overflow:hidden; padding:0; position:absolute; width:1px; word-wrap:normal;}
.screen-reader-text:focus{background:var(--dark); color:var(--dark-fg); clip:auto; clip-path:none; height:auto; left:0; padding:.6rem 1rem; position:absolute; top:0; width:auto; z-index:100000; font-family:var(--font-mono); font-size:.8rem;}

.wrap{max-width:var(--wrap); margin:0 auto; padding:0 clamp(1.25rem, 5vw, 2.5rem);}
.mono{font-family:var(--font-mono);}
.single-report{padding-top:clamp(3rem,7vw,5.5rem);padding-bottom:clamp(4rem,9vw,7rem)}.report-head{max-width:var(--text);margin-bottom:2.5rem}.report-kicker{color:var(--accent);text-transform:uppercase;letter-spacing:.08em;font-size:.78rem;font-weight:600}.report-subtitle{color:var(--muted);font-size:1.15rem}.report-meta{color:var(--muted);font-size:.78rem;margin-top:1.25rem}.report-callout{display:flex;gap:.8rem;border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.15rem;margin:2rem 0;color:var(--fg-soft);font-size:.92rem}.report-callout span{color:var(--accent);font-size:1.15rem}.report-section{border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;margin:1rem 0;background:color-mix(in oklch,var(--bg) 75%,var(--surface))}.report-section h2{font-size:1.15rem;margin-bottom:1rem}.report-grid{display:grid;gap:.7rem}.report-grid--summary{grid-template-columns:repeat(4,1fr)}.report-grid--forecast{grid-template-columns:repeat(6,1fr)}.report-grid--stations{grid-template-columns:repeat(3,1fr)}.report-stat,.report-card{border:1px solid var(--border-soft);border-radius:8px;padding:.9rem;display:flex;flex-direction:column;gap:.25rem;background:var(--bg)}.report-stat span,.report-card small,.report-station span{color:var(--muted);font-size:.75rem}.report-stat strong{font-size:1.5rem}.report-card b{font-size:1.25rem}.report-icon{font-size:1.7rem;margin:.35rem 0}.report-chart-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.report-chart{border:1px solid var(--border-soft);border-radius:8px;padding:1rem}.report-chart figcaption{font-weight:600;margin-bottom:.8rem}.report-chart-placeholder{min-height:180px;border-bottom:1px solid var(--border);background:repeating-linear-gradient(to bottom,transparent 0 39px,var(--border-soft) 40px);display:flex;align-items:end;justify-content:center;padding-bottom:.5rem;color:var(--muted);font-size:.75rem}.report-notes ul{padding-left:1.2rem}.report-foot{color:var(--muted);font-size:.75rem;padding-top:1rem}@media(max-width:760px){.report-grid--summary,.report-grid--forecast,.report-grid--stations,.report-chart-grid{grid-template-columns:repeat(2,1fr)}.report-section{padding:1rem}.report-stat strong{font-size:1.25rem}}

/* ── Header ─────────────────────────────────────── */
.site-header{
  position:fixed; top:0; left:0; right:0; z-index:100;
  border-bottom:1px solid var(--border-soft);
  background:var(--bg);
  transition:background-color 240ms ease,border-color 240ms ease;
}
.site-header.site-header--hidden,
.site-header.site-header--hidden.site-header--scrolled{background:transparent;border-bottom-color:transparent;pointer-events:none;}
.site-header-spacer{height:64px;}
body.admin-bar .site-header{top:32px;}
.site-header.site-header--scrolled{background:color-mix(in oklch,var(--bg) 94%,transparent);}
.header-inner{
  max-width:var(--wrap); margin:0 auto;
  padding:1.1rem clamp(1.25rem, 5vw, 2.5rem);
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
}
.header-actions{display:flex;align-items:center;gap:1.45rem;}
.site-header .wordmark,
.site-header .nav-toggle{opacity:1;transition:transform 240ms ease,opacity 120ms ease;}
.site-header .primary-nav{transition:transform 240ms ease,opacity 120ms ease;}
.site-header.site-header--hidden .wordmark,
.site-header.site-header--hidden .nav-toggle,
.site-header.site-header--hidden .primary-nav{opacity:0;transform:translateY(var(--site-header-offset,-64px));}
.wordmark{
  font-family:var(--font-mono); font-weight:500; font-size:1.05rem;
  letter-spacing:-0.01em; display:inline-flex; align-items:center; gap:.45em;
  color:var(--fg);
}
.wordmark .dot{width:.55em; height:.55em; background:var(--accent); border-radius:1px; display:inline-block; flex:none;}
.wordmark:hover{color:var(--fg);}
.custom-logo-link{display:block;}
.custom-logo{max-height:34px; width:auto;}
.primary-nav ul{display:flex; gap:1.9rem; list-style:none;}
.primary-nav a{
  font-size:.95rem; color:var(--muted);
  padding:.35rem 0; position:relative;
  transition:color .18s ease;
}
.primary-nav a::after{
  content:""; position:absolute; left:0; bottom:0; height:1px; width:100%;
  background:var(--accent); transform:scaleX(0); transform-origin:left;
  transition:transform .25s ease;
}
.primary-nav a:hover{color:var(--fg);}
.primary-nav a:hover::after{transform:scaleX(1);}
.primary-nav .current-menu-item > a,
.primary-nav .current_page_item > a,
.primary-nav .is-current{color:var(--fg);}
.primary-nav .current-menu-item > a::after,
.primary-nav .current_page_item > a::after,
.primary-nav .is-current::after{transform:scaleX(1);}
.nav-toggle{display:none; position:relative; z-index:60; width:44px; height:44px;}
.nav-toggle span{
  display:block; width:22px; height:2px; background:var(--fg);
  margin:0 auto; position:relative; transition:background .2s ease;
}
.nav-toggle span::before,
.nav-toggle span::after{
  content:""; position:absolute; left:0; width:22px; height:2px; background:var(--fg);
  transition:transform .25s ease, top .25s ease;
}
.nav-toggle span::before{top:-7px;}
.nav-toggle span::after{top:7px;}
.nav-toggle[aria-expanded="true"] span{background:transparent;}
.nav-toggle[aria-expanded="true"] span::before{top:0; transform:rotate(45deg);}
.nav-toggle[aria-expanded="true"] span::after{top:0; transform:rotate(-45deg);}

/* ── Hero ───────────────────────────────────────── */
.hero{padding:clamp(2.7rem, 7vw, 5rem) 0 clamp(3.5rem, 9vw, 6rem); position:relative;}
.hero-grid-bg{
  position:absolute; inset:0; pointer-events:none;
  background-image:
    linear-gradient(to right, var(--border-soft) 1px, transparent 1px),
    linear-gradient(to bottom, var(--border-soft) 1px, transparent 1px);
  background-size:56px 56px;
  -webkit-mask-image:radial-gradient(60% 70% at 30% 10%, black, transparent 75%);
  mask-image:radial-gradient(60% 70% at 30% 10%, black, transparent 75%);
  opacity:.5;
}
.hero-data-canvas{position:absolute; inset:0; width:100%; height:100%; display:block; pointer-events:none; z-index:0;}
.hero > .wrap{position:relative; z-index:1;}
.hero-inner{position:relative; max-width:var(--text);}
.hero-greeting{
  font-family:var(--font-mono); font-size:.95rem; color:var(--muted);
  margin-bottom:1.75rem; display:flex; align-items:center; gap:.5rem;
}
.hero-greeting .caret{
  display:inline-block; width:.5em; height:1.05em; background:var(--accent);
  animation:blink 1.2s steps(1) infinite;
}
.hero-title{
  font-size:clamp(2.6rem, 6.2vw, 4.4rem);
  font-weight:700; line-height:1.04; letter-spacing:-0.022em;
  margin-bottom:1.9rem;
}
.hero-title em{font-style:normal; color:var(--accent);}
.hero-lead{
  font-size:clamp(1.05rem, 1.4vw, 1.2rem); color:var(--fg-soft);
  max-width:60ch; margin-bottom:2.5rem;
}
.hero-ctas{display:flex; flex-wrap:wrap; gap:1.5rem 2.2rem;}
.cta{
  font-size:1.02rem; font-weight:500; color:var(--fg);
  display:inline-flex; align-items:center; gap:.5rem;
  padding:.2rem 0; border-bottom:1px solid var(--border);
  transition:color .18s ease, border-color .18s ease;
}
.cta .arr{font-family:var(--font-mono); color:var(--accent); transition:transform .22s ease;}
.cta:hover{color:var(--accent); border-color:var(--accent);}
.cta:hover .arr{transform:translateX(5px);}

/* ── Sections ───────────────────────────────────── */
section.section{border-top:1px solid var(--border); padding:clamp(3.5rem, 8vw, 6rem) 0;}
/* La portada conserva el ritmo interno de sus bloques y compacta solo la
   distancia exterior entre secciones. El hero mantiene su aire original. */
.home section.section,
.front-page section.section{padding-block:clamp(3rem, 5.8vw, 4rem);}
/* Orden editorial de la portada. Se mantiene la estructura de consultas y se
   alinea la presentación visual con la navegación de la home. */
.home-sections{display:flex;flex-direction:column;}
.home-sections > .hero{order:0;}
.home-sections > #articulos{order:1;}
.home-sections > #experimentos{order:2;}
.home-sections > #proyectos{order:3;}
.home-sections > #reports{order:4;}
.home-sections > #dashboard{order:5;}
.home-sections > #sobre-mi{order:6;}
.sec-head{margin-bottom:clamp(2.25rem, 5vw, 3.5rem); max-width:var(--text);}
.sec-head h2{
  font-size:clamp(1.8rem, 3.6vw, 2.6rem);
  font-weight:700; letter-spacing:-0.02em; line-height:1.1;
}
.sec-head h2 .sec-num{
  font-family:var(--font-mono); font-size:.92em; font-weight:500;
  color:var(--accent); margin-right:.35em; letter-spacing:0;
}
.sec-head .sec-desc{color:var(--muted); margin-top:.8rem; max-width:56ch; font-size:1rem;}
.sec-link{
  margin-top:2rem; display:inline-flex; align-items:center; gap:.5rem;
  font-weight:500; border-bottom:1px solid var(--border); padding-bottom:.15rem;
  transition:color .18s ease, border-color .18s ease;
}
.sec-link .arr{font-family:var(--font-mono); color:var(--accent); transition:transform .22s ease;}
.sec-link:hover{color:var(--accent); border-color:var(--accent);}
.sec-link:hover .arr{transform:translateX(5px);}

/* ── Proyectos (home) ───────────────────────────── */
.project-list{list-style:none;}
.project-item{border-top:1px solid var(--border);}
.project-item:last-child{border-bottom:1px solid var(--border);}
.project-link{
  display:grid; grid-template-columns:170px 1fr auto;
  gap:clamp(1rem, 3vw, 2.2rem); align-items:start;
  padding:clamp(1.6rem, 3.5vw, 2.4rem) clamp(.25rem, 1vw, .75rem);
  transition:background .2s ease;
  color:var(--fg);
}
.project-link:hover{background:var(--surface); color:var(--fg);}
.p-meta{font-family:var(--font-mono); font-size:.78rem; line-height:1.7; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); padding-top:.35rem;}
.p-cat{display:block;}
.p-date{display:block; color:var(--fg-soft); opacity:.8;}
.p-body h3{
  font-size:clamp(1.25rem, 2.4vw, 1.55rem); font-weight:600; letter-spacing:-0.015em;
  margin-bottom:.55rem; transition:color .18s ease;
}
.project-link:hover .p-body h3{color:var(--accent);}
.p-desc{color:var(--fg-soft); max-width:58ch; font-size:.98rem; margin-bottom:.85rem;}
.p-tags{font-family:var(--font-mono); font-size:.8rem; color:var(--muted); letter-spacing:.02em;}
.p-arrow{
  font-family:var(--font-mono); font-size:1.3rem; color:var(--accent);
  padding-top:.2rem; transition:transform .22s ease;
}
.project-link:hover .p-arrow{transform:translateX(6px);}

/* ── Experimentos ───────────────────────────────── */
.exp-list{border-top:1px solid var(--border);}
.exp-row{
  display:grid; grid-template-columns:110px 1fr auto auto;
  gap:1rem 1.4rem; align-items:center;
  padding:1.05rem clamp(.25rem, 1vw, .75rem);
  border-bottom:1px solid var(--border);
  transition:background .2s ease;
}
.exp-row:hover{background:var(--surface);}
.exp-date{font-family:var(--font-mono); font-size:.8rem; color:var(--muted); letter-spacing:.04em;}
.exp-title{font-size:1.05rem; font-weight:600; letter-spacing:-0.01em; transition:color .18s ease;}
.exp-row:hover .exp-title{color:var(--accent);}
.exp-tech{font-family:var(--font-mono); font-size:.78rem; color:var(--muted); letter-spacing:.02em; text-align:right;}
.exp-arrow{font-family:var(--font-mono); color:var(--accent); font-size:1.1rem; transition:transform .22s ease;}
.exp-row:hover .exp-arrow{transform:translateX(5px);}

/* ── Artículos ──────────────────────────────────── */
.post-list{list-style:none;}
.post-item{border-top:1px solid var(--border);}
.post-item:last-child{border-bottom:1px solid var(--border);}
.post-link{display:block; padding:clamp(1.7rem, 3.5vw, 2.4rem) clamp(.25rem, 1vw, .75rem); transition:background .2s ease; color:var(--fg);}
.post-link:hover{background:var(--surface); color:var(--fg);}
.post-date{font-family:var(--font-mono); font-size:.78rem; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); margin-bottom:.6rem; display:block;}
.post-title{
  font-size:clamp(1.35rem, 2.6vw, 1.75rem); font-weight:600; letter-spacing:-0.018em;
  max-width:30ch; margin-bottom:.6rem; transition:color .18s ease;
}
.post-link:hover .post-title{color:var(--accent);}
.post-excerpt{color:var(--fg-soft); max-width:60ch; font-size:.98rem; margin-bottom:.9rem;}
.post-read{font-family:var(--font-mono); font-size:.82rem; color:var(--accent); display:inline-flex; align-items:center; gap:.4rem; letter-spacing:.02em;}
.post-read .arr{transition:transform .22s ease;}
.post-link:hover .post-read .arr{transform:translateX(5px);}

/* ── Dashboard ──────────────────────────────────── */
.dash-panel{
  background:var(--dark); color:var(--dark-fg); border-radius:var(--radius);
  padding:clamp(2rem, 5vw, 3.25rem);
  position:relative; overflow:hidden;
}
.dash-panel::before{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.5;
  background-image:
    linear-gradient(to right, oklch(0.92 0.004 90 / .05) 1px, transparent 1px),
    linear-gradient(to bottom, oklch(0.92 0.004 90 / .05) 1px, transparent 1px);
  background-size:56px 56px;
  -webkit-mask-image:radial-gradient(70% 90% at 80% 0%, black, transparent 80%);
  mask-image:radial-gradient(70% 90% at 80% 0%, black, transparent 80%);
}
.dash-head{position:relative; display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-end; gap:1rem; margin-bottom:2.25rem;}
.dash-head h2{font-size:clamp(1.8rem, 3.6vw, 2.6rem); font-weight:700; letter-spacing:-0.02em; line-height:1.1;}
.dash-head h2 .sec-num{font-family:var(--font-mono); font-size:.92em; font-weight:500; color:var(--accent); margin-right:.35em;}
.dash-sub{color:var(--dark-muted); margin-top:.6rem; font-size:1rem; max-width:52ch;}
.dash-sync{font-family:var(--font-mono); font-size:.78rem; color:var(--dark-muted); letter-spacing:.04em; text-align:right; flex:none;}
.metrics{
  position:relative; display:grid; grid-template-columns:repeat(4, 1fr);
  border:1px solid oklch(0.92 0.004 90 / .12); border-radius:8px; overflow:hidden;
}
.metric{
  padding:clamp(1.4rem, 3vw, 2rem);
}
.metric:not(:nth-child(4n)){border-right:1px solid oklch(0.92 0.004 90 / .12);}
.m-label{font-family:var(--font-mono); font-size:.74rem; text-transform:uppercase; letter-spacing:.1em; color:var(--dark-muted); display:block; margin-bottom:.7rem;}
.m-value{
  font-family:var(--font-mono); font-weight:500;
  font-size:clamp(2.4rem, 4.5vw, 3.4rem); line-height:1; letter-spacing:-0.03em;
  color:var(--dark-fg);
}
.metric:nth-child(5) .m-value{color:var(--accent);}
.dash-cta{
  position:relative; margin-top:2rem; display:inline-flex; align-items:center; gap:.5rem;
  font-weight:500; color:var(--dark-fg); border-bottom:1px solid oklch(0.92 0.004 90 / .3); padding-bottom:.15rem;
  transition:color .18s ease, border-color .18s ease;
}
.dash-cta .arr{font-family:var(--font-mono); color:var(--accent); transition:transform .22s ease;}
.dash-cta:hover{color:var(--accent); border-color:var(--accent);}
.dash-cta:hover .arr{transform:translateX(5px);}

/* ── Ahora ──────────────────────────────────────── */
.now-intro{color:var(--muted); font-size:1rem; margin:-.35rem 0 1.15rem; max-width:56ch;}
.now-list{list-style:none; max-width:900px; border-top:1px solid var(--border-soft);}
.now-item{display:grid; grid-template-columns:3.75rem minmax(280px,1fr) minmax(300px,1.35fr) auto; align-items:center; column-gap:1rem; min-height:5rem; padding:.75rem 0; border-bottom:1px solid var(--border-soft); transition:background-color .18s ease;}
.now-item:hover{background:color-mix(in oklch,var(--surface) 45%,transparent);}
.now-index{font:500 .78rem var(--font-mono); color:var(--accent);}
.now-topic{font-size:clamp(1.1rem,1.8vw,1.45rem); font-weight:500; letter-spacing:-.01em;}
.now-tags{font:400 .73rem/1.45 var(--font-mono); color:var(--muted); letter-spacing:.025em;}
.now-dot{color:var(--accent);}
.now-item .arr{font:400 1.05rem var(--font-mono); color:var(--accent); transition:transform .18s ease;}
.now-item:hover .arr{transform:translateX(5px);}
.now-updated{margin-top:1.15rem; font:400 .72rem var(--font-mono); color:var(--muted);}
.now-updated span{color:var(--accent); margin-right:.45rem;}

/* ── Footer ─────────────────────────────────────── */
.site-footer{border-top:1px solid var(--border); background:var(--bg); padding:clamp(2.5rem,3vw,3.125rem) 0;}
.footer-main{display:grid; grid-template-columns:minmax(13rem,1fr) auto minmax(13rem,1fr); align-items:center; gap:0; padding-bottom:clamp(1.55rem,2vw,2rem);}
.footer-brand{min-width:max-content;}
.footer-brand p{margin-top:.25rem; font:400 .66rem/1.45 var(--font-mono); color:var(--muted); letter-spacing:.015em;}
.footer-nav{justify-self:center; min-width:0; width:max-content;}
.footer-nav ul{display:flex; flex-wrap:wrap; justify-content:center; align-items:center; list-style:none;}
.footer-nav li{display:flex; align-items:center;}
.footer-nav li:not(:last-child)::after{content:""; width:1px; height:.85rem; margin:0 .75rem; background:var(--accent); opacity:.7;}
.footer-nav a{display:inline-block; padding:.2rem 0; color:var(--fg); font-size:.82rem; white-space:nowrap; transition:color .18s ease;}
.footer-nav a:hover{color:var(--accent);}
.footer-actions{justify-self:end; display:flex; align-items:center; justify-content:flex-end; gap:.8rem; font-size:.82rem;}
.footer-search,.footer-contact a{display:inline-block; padding:.2rem 0; color:var(--fg); border-bottom:1px solid transparent; transition:color .18s ease,border-color .18s ease;}
.footer-search:hover,.footer-contact a:hover{color:var(--accent);border-color:var(--accent);}
.footer-search::after{content:""; display:inline-block; width:1px; height:.85rem; margin-left:.8rem; vertical-align:-.12rem; background:var(--accent); opacity:.7;}
.footer-social{display:flex; align-items:center; justify-content:flex-end; gap:.35rem;}
.footer-social a{display:grid; place-items:center; width:2rem; height:2rem; color:var(--fg); transition:color .18s ease;}
.footer-social a:hover{color:var(--accent);}
.footer-social svg{width:1.05rem; height:1.05rem; fill:currentColor;}
.footer-contact{font-size:inherit;}
.footer-legal{display:flex;align-items:center;gap:.55rem;font:400 .66rem var(--font-mono);letter-spacing:.015em;color:var(--muted);white-space:nowrap;}
.footer-legal a{color:inherit;border-bottom:1px solid transparent;transition:color .18s ease,border-color .18s ease;}
.footer-legal a:hover{color:var(--accent);border-color:var(--accent);}
.footer-bottom{border-top:1px solid var(--border); padding-top:clamp(1.55rem,2vw,1.875rem); display:grid; grid-template-columns:max-content max-content max-content; justify-content:space-between; align-items:center; gap:.35rem; font-family:var(--font-mono); font-size:.63rem; line-height:1.5; color:var(--muted); letter-spacing:.015em;}
.footer-copyright{justify-self:center; white-space:nowrap;}
.footer-signature{justify-self:end; white-space:nowrap;}
.footer-heart{color:var(--accent);}

/* ── Página de entrada única (single) ───────────── */
.page-head{max-width:var(--text); padding:clamp(4rem, 10vw, 6.5rem) 0 clamp(2rem, 4vw, 3rem);}
.back-link{
  display:inline-flex; align-items:center; gap:.45rem;
  font-family:var(--font-mono); font-size:.8rem; color:var(--muted); letter-spacing:.04em;
  margin-bottom:2.2rem;
}
.back-link .arr{color:var(--accent); transition:transform .22s ease;}
.back-link:hover{color:var(--accent);}
.back-link:hover .arr{transform:translateX(-4px);}
.entry-kicker{
  font-family:var(--font-mono); font-size:.78rem; text-transform:uppercase; letter-spacing:.1em;
  color:var(--accent); display:block; margin-bottom:1rem;
}
.entry-title{
  font-size:clamp(2rem, 5vw, 3.2rem); font-weight:700; letter-spacing:-0.025em; line-height:1.08;
  margin-bottom:1.25rem; max-width:24ch;
}
.entry-meta{
  font-family:var(--font-mono); font-size:.8rem; color:var(--muted); letter-spacing:.04em;
  display:flex; flex-wrap:wrap; gap:.5rem 1.6rem;
}
.entry-meta a:hover{color:var(--accent);}
.entry-content{max-width:var(--text); padding-bottom:clamp(3.5rem, 8vw, 5rem);}
.entry-content > *{margin-bottom:1.5rem;}
.entry-content p{max-width:65ch;}
.entry-content h2{font-size:1.6rem; font-weight:700; letter-spacing:-0.015em; margin-top:2.5rem;}
.entry-content h3{font-size:1.25rem; font-weight:600; margin-top:2rem;}
.entry-content ul,.entry-content ol{padding-left:1.4rem; max-width:65ch;}
.entry-content li{margin-bottom:.4rem;}
.entry-content a{border-bottom:1px solid var(--border); transition:color .18s ease, border-color .18s ease;}
.entry-content a:hover{color:var(--accent); border-color:var(--accent);}
.entry-content blockquote{border-left:2px solid var(--accent); padding-left:1.25rem; color:var(--fg-soft); font-size:1.1rem;}
.entry-content pre{background:var(--surface); border:1px solid var(--border); border-radius:8px; padding:1.1rem 1.25rem; overflow-x:auto; font-family:var(--font-mono); font-size:.86rem; line-height:1.6;}
.entry-content code{font-family:var(--font-mono); font-size:.86em; background:var(--surface); padding:.15em .4em; border-radius:4px;}
.entry-content pre code{background:none; padding:0;}
.entry-content img{border-radius:8px;}
.entry-content .wp-caption{max-width:100%;}
.entry-content .wp-caption-text{font-family:var(--font-mono); font-size:.78rem; color:var(--muted); margin-top:.6rem; text-align:left; letter-spacing:.02em;}
.aligncenter{text-align:center; margin-left:auto; margin-right:auto;}
.alignleft{float:left; margin-right:1.5rem; margin-bottom:1rem;}
.alignright{float:right; margin-left:1.5rem; margin-bottom:1rem;}

/* ── Archivos / listados ────────────────────────── */
.archive-head{max-width:var(--text); padding:clamp(4rem, 10vw, 6.5rem) 0 clamp(2rem, 4vw, 3.5rem);}
.archive-head .entry-kicker{margin-bottom:.75rem;}
.archive-head h1{font-size:clamp(2rem, 5vw, 3.2rem); font-weight:700; letter-spacing:-0.025em; line-height:1.08;}
.archive-desc{color:var(--muted); margin-top:1rem; max-width:56ch;}

/* ── Paginación ─────────────────────────────────── */
.pagination{max-width:var(--text); padding:2.5rem 0 clamp(4rem, 8vw, 6rem);}
.pagination .nav-links{display:flex; gap:1rem; align-items:center; font-family:var(--font-mono); font-size:.85rem;}
.pagination .page-numbers{padding:.35rem .6rem; border:1px solid var(--border); border-radius:6px; color:var(--muted); transition:color .18s ease, border-color .18s ease;}
.pagination .page-numbers:hover{color:var(--accent); border-color:var(--accent);}
.pagination .page-numbers.current{background:var(--accent); border-color:var(--accent); color:var(--bg);}

/* ── Utilidades WordPress ───────────────────────── */
.sticky .post-title::before{content:"· "; color:var(--accent);}
.gallery{display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:1rem;}
.wp-caption{background:var(--surface); border:1px solid var(--border); border-radius:8px; padding:1rem;}
.wp-caption.alignleft,.wp-caption.alignright{border:none; background:none; padding:0;}
.comment-list{list-style:none; max-width:var(--text);}
.comment-list .comment-body{background:var(--surface); border:1px solid var(--border); border-radius:8px; padding:1.25rem; margin-bottom:1rem;}
.comment-list .fn{font-weight:600;}
.comment-list .comment-metadata{font-family:var(--font-mono); font-size:.78rem; color:var(--muted); margin:.4rem 0;}
.comment-form{margin-top:2.5rem; max-width:var(--text);}
.comment-form input[type="text"],.comment-form input[type="email"],.comment-form input[type="url"],.comment-form textarea{
  width:100%; font:inherit; color:var(--fg); background:var(--surface);
  border:1px solid var(--border); border-radius:8px; padding:.75rem .9rem; margin-bottom:1rem;
}
.comment-form input:focus,.comment-form textarea:focus{outline:2px solid var(--accent); outline-offset:1px; border-color:var(--accent);}
.comment-form .submit{font:inherit; font-weight:600; background:var(--fg); color:var(--bg); border:0; border-radius:8px; padding:.7rem 1.6rem; cursor:pointer; transition:background .18s ease;}
.comment-form .submit:hover{background:var(--accent);}
.widget{margin-bottom:2.5rem;}
.widget-title{font-family:var(--font-mono); font-size:.78rem; text-transform:uppercase; letter-spacing:.1em; color:var(--muted); margin-bottom:1rem;}
.widget ul{list-style:none;}
.widget li{margin-bottom:.5rem;}

/* ── Consentimiento de cookies ────────────────────────── */
.cookie-banner{
  position:fixed;z-index:1000;left:clamp(1rem,3vw,2rem);right:clamp(1rem,3vw,2rem);bottom:clamp(1rem,3vw,2rem);
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:1rem 1.25rem;
  max-width:980px;margin-inline:auto;padding:1.15rem 1.25rem;
  color:var(--dark-fg);background:color-mix(in oklch,var(--dark) 96%,transparent);
  border:1px solid oklch(0.92 0.004 90 / .16);border-radius:12px;
  box-shadow:0 18px 55px oklch(0.08 0.01 45 / .32);backdrop-filter:blur(12px);
  opacity:0;transform:translateY(14px);transition:opacity .22s ease,transform .22s ease;
}
.cookie-banner[hidden]{display:none;}
.cookie-banner.is-visible{opacity:1;transform:translateY(0);}
.cookie-banner__icon{display:grid;place-items:center;width:2.75rem;height:2.75rem;background:oklch(0.24 0.01 45);border-radius:50%;font-size:1.35rem;}
.cookie-banner__eyebrow{margin-bottom:.18rem;font:500 .64rem var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--accent);}
.cookie-banner h2{font-size:1.04rem;line-height:1.3;letter-spacing:-.01em;}
.cookie-banner__content>p:last-of-type{margin-top:.25rem;max-width:62ch;color:var(--dark-muted);font-size:.82rem;line-height:1.5;}
.cookie-banner__policy{display:inline-block;margin-top:.38rem;font:400 .68rem var(--font-mono);color:var(--dark-muted);text-decoration:underline;text-underline-offset:.2em;}
.cookie-banner__policy:hover{color:var(--dark-fg);}
.cookie-banner__actions{display:grid;grid-template-columns:1fr 1fr;gap:.55rem;min-width:300px;}
.cookie-choice{min-height:42px;padding:.62rem .8rem;border:1px solid oklch(0.92 0.004 90 / .28);border-radius:6px;color:var(--dark-fg);font-size:.76rem;font-weight:600;white-space:nowrap;transition:background .18s ease,border-color .18s ease,color .18s ease;}
.cookie-choice:hover{background:var(--accent);border-color:var(--accent);color:var(--bg);}
.cookie-choice:focus-visible{outline-color:var(--dark-fg);}

/* ── Responsive ─────────────────────────────────── */
@media (max-width: 860px){
  .nav-toggle{display:block;}
  .header-actions{gap:.45rem;}
  .primary-nav{
    position:fixed; inset:0; z-index:50;
    background:var(--bg);
    display:flex; align-items:center; justify-content:center;
    opacity:0; visibility:hidden; transition:transform 240ms ease, opacity .22s ease, visibility .22s;
  }
  .primary-nav.open{opacity:1; visibility:visible;}
  .primary-nav ul{flex-direction:column; gap:1.4rem; text-align:center;}
  .primary-nav a{font-size:1.5rem; font-weight:600;}
  .project-link{grid-template-columns:1fr; gap:.9rem;}
  .p-arrow{display:none;}
  .metrics{grid-template-columns:repeat(2, 1fr);}
  .metric{border-bottom:1px solid oklch(0.92 0.004 90 / .12);}
  .metric:not(:nth-child(4n)){border-right:0;}
  .metric:nth-child(odd){border-right:1px solid oklch(0.92 0.004 90 / .12);}
  .metric:nth-child(odd):last-child{border-right:0;}
  .metric:nth-last-child(-n+2){border-bottom:0;}
  .footer-main{grid-template-columns:minmax(0,1fr) auto; gap:1.25rem 1.5rem;}
  .footer-nav{grid-column:1 / -1; grid-row:2; justify-self:center; width:100%;}
  .footer-nav ul{justify-content:center;}
  .footer-actions{grid-column:2;grid-row:1;}
  .footer-bottom{grid-template-columns:1fr auto; gap:1rem 1.5rem;}
  .footer-legal{grid-column:1 / -1; grid-row:2; justify-self:center;}
  .footer-copyright{justify-self:start;}
  .now-item{grid-template-columns:3rem minmax(0,1fr) auto; row-gap:.3rem;}
  .now-tags{grid-column:2 / -1;}
}

@media (max-width: 782px){
  body.admin-bar .site-header{top:46px;}
}

@media (max-width: 600px){
  .home section.section,
  .front-page section.section{padding-block:3rem;}
  .hero{padding-top:2.4rem;}
  .hero-ctas{flex-direction:column; gap:1rem;}
  .now-item{min-height:0; padding:1rem 0;}
  .now-topic{font-size:1.1rem;}
  .now-tags{font-size:.68rem;}
  .exp-row{grid-template-columns:1fr auto; gap:.5rem 1rem;}
  .exp-date{grid-column:1;}
  .exp-title{grid-column:1 / -1;}
  .exp-tech{grid-column:1; text-align:left; grid-row:3;}
  .exp-arrow{grid-column:2; grid-row:2 / span 2; align-self:center;}
  .metrics{grid-template-columns:1fr;}
  .metric{border-right:0 !important; border-bottom:1px solid oklch(0.92 0.004 90 / .12);}
  .metric:nth-last-child(1){border-bottom:0;}
  .dash-head{flex-direction:column; align-items:flex-start;}
  .alignleft,.alignright{float:none; margin:0 0 1.5rem;}
  .cookie-banner{grid-template-columns:auto 1fr;padding:1rem;}
  .cookie-banner__content{grid-column:2;}
  .cookie-banner__actions{grid-column:1/-1;min-width:0;width:100%;}
  .site-footer{padding:2.5rem 0;}
  .footer-main{display:flex; flex-direction:column; align-items:center; gap:1rem; padding-bottom:2rem; text-align:center;}
  .footer-nav ul{justify-content:center; gap:.15rem 0;}
  .footer-actions{align-items:center; justify-self:auto;}
  .footer-legal{justify-content:center; flex-wrap:wrap; white-space:normal;}
  .footer-nav li:not(:last-child)::after{margin-inline:.55rem;}
  .footer-bottom{display:flex; flex-direction:column; text-align:center; gap:.65rem; padding-top:1.5rem;}
  .footer-copyright,.footer-signature{justify-self:auto; white-space:normal;}
}

@keyframes blink{0%,49%{opacity:1;} 50%,100%{opacity:0;}}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important;}
}

/* ── Editorial archives ─────────────────────────── */
.page-hero{padding:clamp(4.5rem,10vw,7.5rem) 0 clamp(3rem,7vw,5rem);border-bottom:1px solid var(--border);}
.page-hero-inner{max-width:var(--text);}
.page-kicker{display:flex;align-items:center;gap:.5rem;margin-bottom:1.2rem;color:var(--accent);font-size:.82rem;letter-spacing:.08em;}
.page-kicker .caret{width:.5em;height:1.05em;background:var(--accent);animation:blink 1.2s steps(1) infinite;}
.page-title,.article-title,.x-title{font-size:clamp(2.35rem,6vw,4.1rem);line-height:1.04;letter-spacing:-.028em;max-width:20ch;}

/* ── Búsqueda ───────────────────────────────────── */
.search-hero{padding:clamp(2.5rem,5.5vw,4rem) 0 clamp(3rem,7vw,5rem);border-bottom:1px solid var(--border);}
.search-hero-inner{max-width:var(--text);}
.search-title{font-size:clamp(2.35rem,6vw,4.1rem);line-height:1.04;letter-spacing:-.028em;max-width:17ch;}
.search-intro{margin-top:1rem;max-width:56ch;color:var(--muted);font-size:1.05rem;}
.search-form{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.75rem;align-items:center;margin-top:2.4rem;padding:0 0 .7rem;border-bottom:2px solid var(--fg);}
.search-form-icon{font:1.55rem/1 var(--font-mono);color:var(--accent);}
.search-form input{min-width:0;width:100%;border:0;background:transparent;color:var(--fg);font:500 clamp(1.05rem,2.2vw,1.35rem) var(--font-sans);outline:0;}
.search-form input::placeholder{color:var(--muted);}
.search-form button{padding:.55rem .85rem;border:1px solid var(--fg);border-radius:5px;background:var(--fg);color:var(--bg);font-size:.82rem;transition:background .18s ease,border-color .18s ease;}
.search-form button:hover{background:var(--accent);border-color:var(--accent);}
.search-results{padding-top:clamp(2.7rem,5vw,4rem)!important;}
.search-results-head{display:flex;justify-content:space-between;align-items:end;gap:1.25rem;margin-bottom:1.2rem;}
.search-count{color:var(--muted);font-size:.78rem;}
.search-type-nav{display:flex;gap:.45rem;flex-wrap:wrap;justify-content:flex-end;}
.search-type-nav a{display:inline-flex;gap:.35rem;padding:.4rem .55rem;border:1px solid var(--border);border-radius:5px;color:var(--muted);font:400 .72rem var(--font-mono);transition:color .18s ease,border-color .18s ease,background .18s ease;}
.search-type-nav a:hover{color:var(--accent);border-color:var(--accent);}
.search-type-nav a.is-active{border-color:var(--fg);background:var(--fg);color:var(--bg);}
.search-type-nav b{font-weight:500;opacity:.7;}
.search-list{border-top:1px solid var(--border);}
.search-result{display:grid;grid-template-columns:130px minmax(0,1fr) auto;gap:1.5rem;align-items:start;padding:1.55rem .4rem;border-bottom:1px solid var(--border);}
.search-result-type{padding-top:.27rem;color:var(--muted);font-size:.72rem;letter-spacing:.07em;text-transform:uppercase;}
.search-result h2{font-size:clamp(1.15rem,2vw,1.4rem);line-height:1.22;letter-spacing:-.016em;}
.search-result h2 a:hover{color:var(--accent);}
.search-result-body>p:not(.search-result-meta){margin-top:.45rem;max-width:62ch;color:var(--fg-soft);font-size:.93rem;}
.search-result-meta{margin-top:.8rem;color:var(--muted);font-size:.72rem;letter-spacing:.025em;}
.search-result-arrow{padding-top:.18rem;color:var(--accent);font:1.3rem/1 var(--font-mono);}
.search-result-arrow:hover{transform:translateX(4px);color:var(--accent);}
.search-empty{padding:2.5rem 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);}
.search-empty h2{font-size:1.25rem;letter-spacing:-.015em;}.search-empty p{margin-top:.45rem;color:var(--muted);}
@media(max-width:700px){.search-results-head{display:block}.search-type-nav{justify-content:flex-start;margin-top:1rem}.search-result{grid-template-columns:minmax(0,1fr) auto;gap:.55rem 1rem;padding:1.3rem 0}.search-result-type{grid-column:1/-1;padding:0}.search-result-arrow{grid-column:2;grid-row:2/4;align-self:center}.search-form{margin-top:2rem}.search-form button{font-size:.74rem;}}
.page-intro{margin-top:1.4rem;max-width:58ch;font-size:clamp(1.08rem,2vw,1.25rem);color:var(--fg-soft);}
.page-sub{margin-top:.75rem;max-width:62ch;color:var(--muted);}
.archive-count{margin-top:1.8rem;color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;}
.topic-nav{border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:thin;}
.topic-nav+.topic-nav{border-top:0;background:var(--surface);}
.topic-nav ul{display:flex;gap:1.65rem;list-style:none;min-width:max-content;padding:1rem 0;}
.topic-nav a{font-family:var(--font-mono);font-size:.78rem;color:var(--muted);padding:.45rem 0;border-bottom:1px solid transparent;}
.topic-nav a:hover,.topic-nav a.is-active{color:var(--fg);border-color:var(--accent);}
.x-philosophy{display:flex;flex-wrap:wrap;gap:.6rem 1rem;margin-top:1.7rem;color:var(--muted);font-size:.78rem;}
.x-philosophy span:nth-child(even){color:var(--accent);}
.archive-list .post-link{padding-block:2.2rem;}
.post-meta,.post-foot{display:flex;flex-wrap:wrap;gap:.4rem .8rem;color:var(--muted);font-size:.76rem;letter-spacing:.025em;}
.post-meta{margin-bottom:.75rem}.post-foot{justify-content:space-between;max-width:62ch;margin:.9rem 0;}
.post-cat{color:var(--fg-soft)}
.pagination-links{padding:2.6rem 0 clamp(4rem,8vw,6rem);}
.pagination-links .nav-links{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem;font-family:var(--font-mono);font-size:.8rem;}
.pagination-links .page-numbers{padding:.45rem .7rem;border:1px solid var(--border);border-radius:5px;color:var(--muted);}
.pagination-links .current{background:var(--accent);border-color:var(--accent);color:var(--bg);}
.empty-state{padding:3rem 0 6rem;color:var(--muted);}

/* ── Gutenberg and long-form content ───────────── */
.page-content,.article-content{width:min(var(--text),calc(100% - 2.5rem));margin-inline:auto;padding:clamp(3rem,7vw,5.5rem) 0;}
.single-project .page-content{padding-top:clamp(1.75rem,3vw,2.75rem);}
.article-content{width:100%;}
.page-content>*+*,.article-content>*+*{margin-top:1.5rem;}
.page-content h2,.article-content h2{margin-top:3.25rem;font-size:clamp(1.55rem,3vw,2rem);line-height:1.2;letter-spacing:-.018em;}
.page-content h3,.article-content h3{margin-top:2.35rem;font-size:1.28rem;line-height:1.3;}
.page-content :is(ul,ol),.article-content :is(ul,ol){padding-left:1.4rem;}
.page-content li,.article-content li{margin:.4rem 0;}
.page-content a,.article-content a{border-bottom:1px solid var(--border);}
.page-content blockquote,.article-content blockquote{border-left:2px solid var(--accent);padding:.25rem 0 .25rem 1.25rem;color:var(--fg-soft);font-size:1.12rem;}
.page-content :is(pre,.wp-block-code),.article-content :is(pre,.wp-block-code),.code-block{overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:8px;}
.page-content pre,.article-content pre,.code-block pre{padding:1.1rem 1.25rem;font:400 .86rem/1.65 var(--font-mono);}
.page-content code,.article-content code{font-family:var(--font-mono);font-size:.86em;background:var(--surface);padding:.12em .35em;border-radius:3px;}
.page-content pre code,.article-content pre code{background:none;padding:0;}
.code-head{display:flex;justify-content:space-between;align-items:center;padding:.55rem .8rem;border-bottom:1px solid var(--border);font:400 .72rem var(--font-mono);color:var(--muted);}
.code-copy{font:inherit;color:var(--muted);}.code-copy:hover{color:var(--accent);}
.page-content figure,.article-content figure{margin-block:2.5rem;}
.page-content figcaption,.article-content figcaption{margin-top:.65rem;font:400 .75rem/1.5 var(--font-mono);color:var(--muted);}
.page-content .alignwide,.article-content .alignwide,.fig-wide{width:min(var(--wrap),calc(100vw - 2.5rem));max-width:none;margin-left:50%;transform:translateX(-50%);}
.page-content .alignfull,.article-content .alignfull{width:100vw;max-width:none;margin-left:50%;transform:translateX(-50%);}
.wp-block-table,.table-wrap{overflow-x:auto;}
.page-content table,.article-content table{width:100%;border-collapse:collapse;font-size:.92rem;}
.page-content :is(th,td),.article-content :is(th,td){padding:.75rem .85rem;border-bottom:1px solid var(--border);text-align:left;vertical-align:top;}
.page-content th,.article-content th{font:500 .76rem var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);}
.cookie-policy .page-content{padding-bottom:clamp(4rem,9vw,7rem);}
.cookie-policy .page-content>p:first-child{max-width:62ch;color:var(--fg-soft);}
.cookie-policy .page-content h2{max-width:62ch;}
.cookie-table-wrap{margin-top:2rem;}
.cookie-table{min-width:640px;}
.cookie-table thead{background:var(--surface);}
.cookie-table th,.cookie-table td{border:1px solid var(--border);}
.cookie-table th{white-space:nowrap;}
.cookie-table code{background:none;padding:0;font-size:.9em;}
.contact-faq{max-width:62ch;margin-top:3rem;padding:1.35rem 1.45rem;border:1px solid var(--border);border-radius:8px;}
.contact-faq h2{margin:0;font-size:1.35rem;}
.contact-faq ul{margin:1.1rem 0 0;padding-left:1.25rem;}
.contact-faq li{padding-left:.1rem;margin:.85rem 0;}
.contact-faq li:last-child{margin-bottom:0;}
.contact-faq strong,.contact-faq span{display:block;}
.contact-faq span{margin-top:.2rem;}
.wp-block-separator{border:0;border-top:1px solid var(--border);margin-block:4rem!important;}
.wp-block-columns{display:flex;gap:1.5rem;align-items:stretch}.wp-block-column{flex:1;min-width:0;}
.wp-block-buttons{display:flex;flex-wrap:wrap;gap:.8rem}.wp-block-button__link{display:inline-block;padding:.7rem 1.1rem!important;border:1px solid var(--fg)!important;border-radius:6px;background:var(--fg);color:var(--bg);}.is-style-outline .wp-block-button__link{background:transparent;color:var(--fg);}
.callout{display:grid;grid-template-columns:85px 1fr;gap:1rem;padding:1.25rem;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:7px;background:var(--surface);}
.callout-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);}

/* ── Article detail ─────────────────────────────── */
article.single-article,article.single-project,article.single-experiment{max-width:var(--wrap);padding-inline:clamp(1.25rem,5vw,2.5rem);}
.article-shell,.project-shell,.x-shell{max-width:var(--text);margin-inline:auto;}
.article-head,.project-head,.single-experiment .x-shell>header{padding:clamp(2.75rem,6vw,4.5rem) 0 clamp(1.5rem,3vw,2.5rem);}
.single-project .project-head{padding-bottom:clamp(1.25rem,2.5vw,2rem);}
.breadcrumb{display:flex;gap:.65rem;margin-bottom:2.25rem;font-size:.76rem;color:var(--muted);}.breadcrumb .sep{color:var(--accent);}.breadcrumb a:hover{color:var(--accent);}
.article-kicker,.project-kicker{margin-bottom:1rem;color:var(--accent);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;}
.article-dek,.project-desc{margin-top:1.4rem;font-size:clamp(1.05rem,2vw,1.22rem);color:var(--fg-soft);max-width:62ch;}
.article-meta,.project-stack,.project-links{display:flex;flex-wrap:wrap;gap:.6rem 1.35rem;margin-top:1.35rem;color:var(--muted);font-size:.76rem;}
.project-links:empty{display:none}.project-links a:hover{color:var(--accent);}
.toc{margin:0 0 1rem;padding:1.35rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);}.toc-label{margin-bottom:.65rem;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;}.toc ol{padding-left:1.25rem;columns:2;column-gap:2rem}.toc li{margin:.35rem 0;font-size:.9rem;break-inside:avoid;}
.single-article .article-content{padding-block:clamp(1.75rem,3vw,2.75rem);}
.single-project .page-content{padding-block:clamp(1.5rem,3vw,2.25rem);}
.article-end{padding:1.75rem 0;border-top:1px solid var(--border);}.fin{color:var(--muted);text-align:center;font-size:.75rem;letter-spacing:.12em;}.article-tags,.share{display:flex;flex-wrap:wrap;gap:.7rem 1rem;align-items:center;margin-top:1.25rem;font-size:.78rem}.article-tags a{padding:.35rem .6rem;border:1px solid var(--border);border-radius:5px;}.share-label{color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.share button{font:inherit;color:inherit}.share :is(a,button):hover{color:var(--accent);}
.prevnext{display:grid;grid-template-columns:1fr 1fr;border-block:1px solid var(--border);margin-top:clamp(1rem,2vw,1.5rem)}.prevnext>a{display:flex;flex-direction:column;gap:.45rem;padding:1rem 0}.prevnext>a:last-child{text-align:right;border-left:1px solid var(--border);padding-left:1rem}.pn-label{font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}.pn-title{font-weight:600;}
.author{padding:1.75rem 0;border-bottom:1px solid var(--border);}.author-name{font-size:1.35rem}.author-bio{margin-top:.65rem;color:var(--fg-soft);max-width:60ch;}
.related{padding:clamp(2.5rem,5vw,4rem) 0}.related .sec-head{margin-bottom:1.5rem;}

/* ── Projects ───────────────────────────────────── */
.featured-project{padding:clamp(2rem,5vw,3.5rem);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);}
.fp-kicker,.project-kicker{display:flex;justify-content:space-between;gap:1rem}.fp-kicker{font-size:.76rem;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}.fp-title{margin-top:1.1rem;font-size:clamp(1.8rem,4vw,2.8rem);letter-spacing:-.025em}.fp-desc{margin-top:.8rem;max-width:62ch;color:var(--fg-soft)}.fp-stack{margin-top:1rem;color:var(--muted);font-size:.78rem}.fp-metrics{display:flex;flex-wrap:wrap;gap:1px;margin-top:2rem;background:var(--border);border:1px solid var(--border);}.fp-metric{display:flex;flex-direction:column;gap:.3rem;min-width:120px;flex:1;padding:1rem;background:var(--bg)}.fp-value{font-size:1.5rem}.fp-label{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.project-link--archive{grid-template-columns:150px minmax(0,1fr) auto auto;align-items:center}.project-link--archive .p-body h2{font-size:clamp(1.25rem,2.4vw,1.55rem);margin-bottom:.55rem}.p-status{display:inline-block;margin-top:.55rem;padding:.2rem .42rem;border:1px solid var(--border);border-radius:4px;font-size:.66rem;line-height:1.2}.p-result{font:400 .75rem var(--font-mono);color:var(--muted);white-space:nowrap}
.metrics-light{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));border:1px solid var(--border);border-radius:8px;overflow:hidden}.metric-light{display:flex;flex-direction:column;gap:.55rem;padding:1.25rem;border-right:1px solid var(--border)}.metric-light:last-child{border-right:0}.metric-light .m-value{font-size:clamp(1.7rem,4vw,2.5rem);color:var(--fg)}.metric-light .m-label{margin:0;color:var(--muted)}
.project-shell>.metrics-light{margin-bottom:1.5rem}.project-overview,.stack-grid,.decisions,.screens-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--border);border:1px solid var(--border)}.ov-item,.stack-item,.decision,.screenshot{padding:1.2rem;background:var(--bg)}.ov-label,.stack-role{font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}.ov-item p{margin-top:.4rem}.stack-item{display:flex;justify-content:space-between;gap:1rem}.decision h3{margin-top:0}.d-row{display:grid;grid-template-columns:80px 1fr;gap:1rem;margin-top:1rem}.d-label{font-size:.68rem;color:var(--muted)}
.diagram{padding:1.5rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);text-align:center;overflow-x:auto}.diagram-row{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem}.diagram-node{display:inline-block;padding:.45rem .75rem;border:1px solid var(--border);border-radius:5px;background:var(--bg);font:400 .78rem var(--font-mono)}.diagram-arrow{padding:.4rem;color:var(--accent)}.diagram-label{margin:.5rem;color:var(--muted);font:400 .68rem var(--font-mono);text-transform:uppercase}.mixed-list{list-style:none}.mixed-item{border-top:1px solid var(--border)}.mixed-item:last-child{border-bottom:1px solid var(--border)}.mixed-item a{display:block;padding:1.5rem 0}.mixed-item h2{margin:.25rem 0;font-size:1.35rem}.mixed-item p{color:var(--fg-soft)}
.dp-architecture{border:1px solid var(--border);border-radius:8px;background:var(--surface);overflow:hidden;text-align:left}.dp-architecture__intro{display:flex;justify-content:space-between;gap:1rem;padding:.85rem 1rem;border-bottom:1px solid var(--border);color:var(--muted);font-size:.78rem}.dp-architecture__intro .mono{color:var(--accent);font-size:.68rem;letter-spacing:.08em}.dp-architecture__layout{display:grid;grid-template-columns:minmax(0,1fr) 205px;gap:1rem;padding:1rem}.dp-architecture__viewport{overflow:auto;border:1px solid var(--border);border-radius:6px;background:var(--bg)}.dp-architecture__canvas{position:relative;width:820px;height:430px;background-image:linear-gradient(var(--border-soft) 1px,transparent 1px),linear-gradient(90deg,var(--border-soft) 1px,transparent 1px);background-size:28px 28px}.dp-architecture__edges{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.dp-architecture__edge{fill:none;stroke:var(--border);stroke-width:2}.dp-architecture__edge.is-active{stroke:var(--accent);stroke-width:3}.dp-arch-node{position:absolute;left:var(--x);top:var(--y);width:120px;min-height:55px;padding:.55rem .65rem;border:1px solid var(--border);border-left:3px solid var(--muted);border-radius:6px;background:var(--bg);text-align:left;transform:translateY(0);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.dp-arch-node:hover,.dp-arch-node:focus-visible{border-color:var(--accent);transform:translateY(-2px)}.dp-arch-node.is-active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.dp-arch-node small{display:block;margin-bottom:.25rem;color:var(--muted);font:400 .58rem var(--font-mono);letter-spacing:.06em}.dp-arch-node strong{font-size:.76rem;line-height:1.2}.dp-arch-node.is-trigger{border-left-color:#4b9b71}.dp-arch-node.is-api{border-left-color:var(--accent)}.dp-arch-node.is-source{border-left-color:#c68d3a}.dp-arch-node.is-database{border-left-color:#8c73b8}.dp-arch-node.is-destination{border-left-color:#b96b72}.dp-architecture__flows{display:flex;flex-direction:column;gap:.55rem}.dp-arch-flow{padding:.75rem;border:1px solid var(--border);border-radius:6px;text-align:left;background:var(--bg);transition:border-color .18s ease,background .18s ease}.dp-arch-flow:hover,.dp-arch-flow.is-active{border-color:var(--accent);background:var(--accent-soft)}.dp-arch-flow strong,.dp-arch-flow small{display:block}.dp-arch-flow strong{font-size:.78rem}.dp-arch-flow small{margin-top:.25rem;color:var(--muted);font-size:.68rem}.dp-architecture__fallback{margin:0;padding:1rem;color:var(--muted);font-size:.85rem}

/* ── Experiments ────────────────────────────────── */
.exp-row--archive{grid-template-columns:130px minmax(0,1fr) auto auto;align-items:center;padding-block:1.4rem}.exp-meta{display:flex;flex-direction:column;gap:.35rem;font-size:.72rem;color:var(--muted)}.exp-cat{color:var(--fg-soft)}.exp-body .exp-title h2{font-size:1.1rem;line-height:1.35}.exp-desc{margin:.35rem 0;color:var(--fg-soft);font-size:.9rem}.exp-result{display:inline-block;padding:.25rem .45rem;border:1px solid var(--border);border-radius:4px;font:400 .68rem var(--font-mono);white-space:nowrap}.is-worked{border-color:color-mix(in oklch,var(--accent) 35%,var(--border))}.is-failed{color:var(--fg-soft)}
article.single-experiment{padding-top:clamp(2rem,5vw,3.5rem)}
.single-experiment .x-shell>header{padding:0}
.single-experiment .page-content{padding-top:clamp(1rem,2vw,1.75rem);padding-bottom:clamp(1rem,2vw,1.75rem)}
.x-title{max-width:26ch;margin-bottom:1rem;font-size:clamp(1.7rem,3.6vw,2.5rem);line-height:1.1}
.x-result-line{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:1.2rem;color:var(--muted);font-size:.78rem;letter-spacing:.04em}
.snapshot{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(1.5rem,3vw,2.5rem);margin:clamp(2rem,4vw,2.5rem) 0;border-block:1px solid var(--border)}
.single-experiment .snapshot{margin-bottom:clamp(1rem,2vw,1.5rem)}
.snap-item{padding:1.1rem 0;border-bottom:1px solid var(--border-soft)}
.snap-item.wide{grid-column:1/-1}.snap-item.snap-result{grid-column:1/-1}
.snap-label,.verdict-label,.x-next-label,.x-rel-label{display:block;margin-bottom:.45rem;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}
.snap-label,.verdict-label{color:var(--accent)}
.snap-item p{margin:0;color:var(--fg-soft);font-size:.98rem}
.verdict{display:grid;grid-template-columns:160px 1fr;gap:1rem clamp(1.5rem,3vw,2rem);align-items:start;margin:clamp(2rem,4vw,2.5rem) 0;padding:clamp(1.5rem,3vw,2.25rem) 0;border-block:1px solid var(--border)}
.verdict-value{display:block;margin-bottom:.7rem;color:var(--accent);font-size:clamp(1.4rem,2.6vw,1.9rem)}
.verdict p{margin:0;color:var(--fg-soft);max-width:55ch}
.x-next{margin:clamp(2rem,4vw,2.5rem) 0;padding:clamp(1.5rem,3vw,2.25rem) 0;border-block:1px solid var(--border)}
.single-experiment .x-next{margin-block:clamp(1.25rem,2vw,1.75rem);padding-block:clamp(1rem,2vw,1.5rem)}
.x-next-label{margin-bottom:.9rem}
.x-rel{margin:clamp(2rem,4vw,2.5rem) 0;padding-top:1.5rem;border-top:1px solid var(--border)}
.x-rel-label{margin-bottom:1rem}
.x-rel-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:1rem clamp(1.5rem,3vw,2rem);padding:.55rem 0;border-bottom:1px solid var(--border-soft)}
.x-rel-type{width:7rem;flex:none;color:var(--accent);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}
.single-experiment .prevnext{margin-top:clamp(1rem,2vw,1.5rem)}
.back-link-row{padding:1rem 0 2rem}
.single-experiment .back-link-row{padding:1rem 0 1.5rem}

/* ── Approved Gutenberg patterns ────────────────── */
.layers{list-style:none!important;padding:0!important;counter-reset:layers}.layers li{display:grid;grid-template-columns:minmax(120px,.8fr) 2fr;gap:1rem;padding:1rem 0;border-top:1px solid var(--border);counter-increment:layers}.layers li:last-child{border-bottom:1px solid var(--border)}.layers li::before{content:counter(layers,decimal-leading-zero);grid-column:1;font:400 .7rem var(--font-mono);color:var(--accent)}.layers li strong{grid-column:1}.layers li span{grid-column:2;grid-row:1/3;color:var(--fg-soft)}
.key-metric,.x-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:8px;overflow:hidden}.km-item,.x-fact{display:flex;flex-direction:column;gap:.45rem;padding:1.25rem;background:var(--bg)}.km-value,.x-fact-value{font:500 clamp(1.8rem,4vw,2.7rem) var(--font-mono)}.km-caption,.x-fact-label{color:var(--muted);font-size:.78rem}.x-result-big{display:inline-block;padding:.45rem .65rem;border:1px solid var(--accent);border-radius:5px;color:var(--accent)}
.principles,.tools-grid{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1px!important;background:var(--border);border:1px solid var(--border)}.principles>.wp-block-column,.tools-col{padding:1.2rem;background:var(--bg)}.principle-num{display:block;margin-bottom:.8rem;color:var(--accent);font-size:.72rem}.tools-col ul{list-style:none;padding:0}.tools-col li{padding:.35rem 0;border-bottom:1px solid var(--border-soft)}
.next-steps,.changelog{list-style:none!important;padding:0!important}.next-steps li,.changelog li{display:flex;justify-content:space-between;gap:1rem;padding:.85rem 0;border-top:1px solid var(--border)}.next-steps li:last-child,.changelog li:last-child{border-bottom:1px solid var(--border)}.step-status,.changelog time{font:400 .7rem var(--font-mono);color:var(--muted);white-space:nowrap}
.chart-embed,.shot-panel{min-height:180px;padding:1rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);overflow:hidden}.screens-grid .large{grid-column:1/-1}.shot-panel{display:grid;place-items:center;font:400 .75rem var(--font-mono);color:var(--muted)}
.link-stack,.contact-links,.author-links{display:flex;flex-wrap:wrap;gap:.8rem 1.3rem}.key-ideas{margin-top:2.5rem}.evolved{margin-top:2rem;padding:1.2rem;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.evolved-label{display:block;margin-bottom:.6rem;font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}.stack-tech{font-weight:600}.is-active,.is-completed,.is-worked,.is-ok{border-color:color-mix(in oklch,var(--accent) 40%,var(--border))}.is-archived,.is-failed{opacity:.72}

@media (max-width:760px){
  .wp-block-columns,.project-overview,.stack-grid,.decisions,.screens-grid{grid-template-columns:1fr;flex-direction:column}
  .dp-architecture__intro{display:block}.dp-architecture__intro span+span{display:block;margin-top:.3rem}.dp-architecture__layout{grid-template-columns:1fr;padding:.75rem}.dp-architecture__flows{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.dp-arch-flow{padding:.6rem}.dp-arch-flow strong{font-size:.7rem}.dp-arch-flow small{font-size:.61rem}
  .layers li{grid-template-columns:1fr}.layers li span{grid-column:1;grid-row:auto}.next-steps li,.changelog li{align-items:flex-start}
  .toc ol{columns:1}.project-link--archive,.exp-row--archive{grid-template-columns:1fr auto}.project-link--archive .p-meta,.project-link--archive .p-body{grid-column:1}.project-link--archive .p-result{grid-column:1}.project-link--archive .p-arrow{display:block;grid-column:2;grid-row:1/4}.exp-row--archive .exp-meta,.exp-row--archive .exp-body{grid-column:1}.exp-row--archive .exp-result{grid-column:1}.exp-row--archive .exp-arrow{grid-column:2;grid-row:1/4}.snapshot{grid-template-columns:1fr}.snapshot .snap-item{grid-column:1;border-bottom:1px solid var(--border-soft)}.snapshot .snap-item:last-child{border-bottom:0}.prevnext{grid-template-columns:1fr}.prevnext>a:last-child{border-left:0;border-top:1px solid var(--border);padding-left:0;text-align:left}.verdict{grid-template-columns:1fr;gap:.5rem}.callout{grid-template-columns:1fr}.metric-light{border-right:0;border-bottom:1px solid var(--border)}.metric-light:last-child{border-bottom:0}
}

/* ── Automatic report dashboard v2 ─────────────── */
body.single-report{width:auto;max-width:none;margin:0;padding:0}
.report-page{max-width:1180px;padding-top:clamp(2rem,3vw,2.5rem);padding-bottom:clamp(3rem,7vw,5rem)}
.report-top{display:grid;grid-template-columns:minmax(0,1.85fr) minmax(310px,1fr);gap:clamp(1rem,2vw,1.5rem);align-items:stretch}
.report-hero{display:grid;grid-template-rows:auto 1fr auto;gap:1rem;min-width:0}
.report-head{max-width:none;margin:0;padding:.8rem 0 1.2rem}
.report-page .article-title{max-width:15ch;margin:.3rem 0 .35rem;font-size:clamp(2.65rem,4.5vw,4rem);line-height:.98;letter-spacing:-.055em}
.report-page .article-title span{display:inline-block;font-size:.55em;vertical-align:.08em;letter-spacing:0}
.report-subtitle{font-size:clamp(1rem,1.7vw,1.2rem);line-height:1.45}
.report-meta{display:flex;flex-wrap:wrap;gap:.35rem .7rem;margin-top:1.45rem;font-size:.7rem}
.report-callout{margin:0;padding:1rem 1.1rem;background:color-mix(in oklch,var(--surface) 45%,var(--bg));font-size:.82rem;line-height:1.55}
.report-quick-read{align-self:center;padding:1rem 0;border-block:1px solid var(--border-soft)}
.report-quick-label{margin-bottom:.35rem;color:var(--accent);font-size:.65rem;text-transform:uppercase;letter-spacing:.08em}
.report-quick-read>p:not(.report-quick-label){max-width:62ch;color:var(--fg-soft);font-size:.88rem;line-height:1.55}
.report-quick-read>div{display:flex;flex-wrap:wrap;gap:.7rem 2rem;margin-top:.8rem}.report-quick-read>div span{display:flex;flex-direction:column}.report-quick-read small{color:var(--muted);font-size:.61rem}.report-quick-read strong{font-size:.9rem}
.report-panel{min-width:0;margin:0;padding:1.15rem;border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in oklch,var(--bg) 82%,var(--surface));box-shadow:0 8px 24px rgba(35,28,20,.025)}
.report-panel h2{margin:0 0 .9rem;font-size:1.05rem;line-height:1.25}
.report-panel-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.report-panel-head>span{color:var(--fg-soft);font-size:.66rem}
.report-summary{display:flex;flex-direction:column;padding:1.25rem}
.report-summary-lead{display:grid;grid-template-columns:78px 1fr;grid-template-rows:auto auto;align-items:center;gap:0 .85rem;margin:.45rem 0 0;padding:.7rem 0}
.report-summary-icon{grid-row:1/3;font-size:3.9rem;line-height:1}
.report-summary-lead strong{font:600 clamp(2.3rem,4vw,3.25rem)/1 var(--font-sans);letter-spacing:-.04em}
.report-summary-lead>span:last-child{color:var(--muted);font-size:1.55rem;font-weight:600}
.report-summary-caption{margin-bottom:.8rem;color:var(--fg-soft);font-size:.76rem}
.report-summary-grid{display:grid;grid-template-columns:1fr 1fr;margin-inline:-1.25rem;border-block:1px solid var(--border-soft)}
.report-summary-grid>div{display:flex;flex-direction:column;gap:.2rem;padding:.8rem 1.25rem;border-right:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft)}
.report-summary-grid>div:nth-child(even){border-right:0}.report-summary-grid>div:nth-last-child(-n+2){border-bottom:0}
.report-summary-grid span{color:var(--muted);font-size:.68rem}.report-summary-grid strong{font-size:1rem}
.report-panel-foot{margin-top:auto;padding-top:.75rem;color:var(--muted);font-size:.61rem;line-height:1.4}
.report-dashboard{display:grid;grid-template-columns:minmax(0,1.85fr) minmax(310px,1fr);gap:clamp(.8rem,1.5vw,1rem);align-items:stretch;margin-top:1rem}
.report-forecast{grid-column:1}.report-stations{grid-column:2}.report-temperature{grid-column:1}.report-latest{grid-column:2}.report-comparison{grid-column:1}.report-accuracy{grid-column:2}
.report-forecast-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:0;border:1px solid var(--border-soft);border-radius:8px;overflow:hidden}
.report-day{display:flex;min-height:220px;flex-direction:column;align-items:center;padding:.9rem .65rem;border-right:1px solid var(--border-soft);text-align:center}.report-day:last-child{border-right:0}
.report-day>strong{font-size:.76rem}.report-day small{color:var(--muted);font-size:.64rem}.report-day-icon{margin:.7rem 0;font-size:2rem}.report-day b{font-size:1.25rem}.report-day-low{color:var(--muted);font-size:1rem}.report-day-details{margin-top:.55rem;line-height:1.5}
.report-map{height:185px;margin:0 0 .7rem;background:linear-gradient(145deg,#f5f0e7,#dfe9ed);border-color:var(--border-soft)}
.report-station-list{gap:0}.report-station{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.65rem;align-items:center;padding:.75rem .15rem;border-top:1px solid var(--border-soft)}
.report-station>div{display:flex;min-width:0;flex-direction:column}.report-station>div:last-child{text-align:right}.report-station strong{grid-column:auto;font-size:.69rem;line-height:1.3;overflow-wrap:anywhere}.report-station span,.report-station small{color:var(--muted);font-size:.6rem}.report-station b{font-size:.9rem}
.report-temperature,.report-accuracy{display:flex;flex-direction:column}.report-chart-legend{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin:.15rem 0 .45rem;font-size:.64rem}.report-chart-legend span{display:inline-flex;align-items:center;gap:.35rem}.report-chart-legend i{width:16px;height:2px;background:var(--series)}
.report-svg{width:100%;min-height:0;background:none;overflow:visible}.report-svg-grid line{stroke:var(--border-soft)}.report-svg-grid text{font:10px var(--font-mono);fill:var(--muted)}.report-svg--bars rect{fill:var(--accent)}.report-svg--bars .report-svg-value{font:600 15px var(--font-sans)}.report-svg--bars .report-svg-label{font:12px var(--font-mono)}
.report-chart-subtitle{margin-top:-.75rem;color:var(--fg-soft);font-size:.78rem}.report-accuracy .report-panel-foot{font-size:.68rem}
.report-table-wrap{margin-inline:-.25rem}.report-table{table-layout:auto;font-size:.66rem;line-height:1.35}.report-table th,.report-table td{padding:.48rem .4rem}.report-table thead th{white-space:normal;vertical-align:bottom}.report-table tbody th{white-space:nowrap}.report-table--latest{table-layout:fixed;font-size:.66rem}.report-table--latest th:first-child{width:36%}.report-table--latest thead th:not(:first-child){font-size:.6rem;line-height:1.25;overflow-wrap:anywhere}
.report-latest,.report-comparison{display:flex;flex-direction:column}
.report-data-warning{margin:-.15rem 0 .75rem;padding:.6rem .7rem;border-left:2px solid var(--accent);background:var(--accent-soft);color:var(--fg-soft);font-size:.68rem;line-height:1.45}
.report-notes{margin-top:1rem;padding:1rem 1.2rem}.report-notes h2{color:var(--fg);font-size:.83rem}.report-notes h2:first-letter{color:var(--accent)}.report-notes ul{padding-left:1.2rem}.report-notes li{margin:.18rem 0;color:var(--fg-soft);font-size:.72rem}
.report-foot{display:flex;justify-content:center;gap:.6rem;padding:1.2rem 0 0;text-align:center;font-size:.62rem}

/* ── Weekly weather report ─────────────────────── */
.report-page--weekly{max-width:1180px}.report-weekly-head{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:2rem;align-items:start;padding:.8rem 0 1.5rem}.report-page--weekly .article-title{max-width:none}.report-weekly-description{max-width:65ch;color:var(--fg-soft);font-size:.9rem;line-height:1.45}.report-week-card{display:flex;gap:.85rem;align-items:flex-start;padding:1.2rem 1.15rem;border-radius:var(--radius);background:linear-gradient(135deg,#f3f8ff,#edf5ff);color:#0b326a}.report-week-card>span{font-size:1.55rem;line-height:1}.report-week-card div{display:flex;flex-direction:column;gap:.12rem}.report-week-card small{font-size:.68rem}.report-week-card strong{font-size:1.06rem;line-height:1.25}.report-week-card em{color:#587097;font-size:.7rem;font-style:normal}.report-weekly-quick{display:flex;gap:1rem;margin-bottom:1rem;padding:1.1rem 1.2rem;border:1px solid #f3e5d9;border-radius:var(--radius);background:#fff9f3}.report-weekly-quick>div{max-width:78ch}.report-weekly-quick p:last-child{color:var(--fg-soft);font-size:.88rem;line-height:1.55}.report-weekly-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin-bottom:1rem}.report-weekly-kpi{display:flex;min-height:145px;flex-direction:column;gap:.35rem;padding:1rem;border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in oklch,var(--bg) 84%,var(--surface))}.report-weekly-kpi-label{display:flex;align-items:center;gap:.45rem;color:var(--fg-soft);font-size:.72rem;font-weight:600}.report-weekly-icon{color:var(--accent);font:700 .62rem var(--font-mono);text-transform:uppercase}.report-weekly-kpi>strong{margin:.1rem 0 .3rem;font-size:1.55rem;letter-spacing:-.04em}.report-weekly-delta{margin:0;font-size:.7rem;font-weight:600}.report-weekly-delta small{display:block;margin-top:.1rem;color:var(--muted);font-weight:400}.report-weekly-delta.is-up,.report-weekly-summary .is-up{color:#c42f2f}.report-weekly-delta.is-down,.report-weekly-summary .is-down{color:#16854b}.report-weekly-delta.is-flat,.report-weekly-summary .is-flat{color:var(--fg-soft)}.report-weekly-grid{display:grid;gap:1rem;margin-top:1rem}.report-weekly-grid--lead{grid-template-columns:minmax(0,1.55fr) minmax(330px,1fr)}.report-weekly-grid--comparisons{grid-template-columns:repeat(3,minmax(0,1fr))}.report-weekly-chart{margin:0}.report-weekly-chart figcaption h2{margin-bottom:.75rem}.report-weekly-summary{min-width:0}.report-weekly-summary .report-table{font-size:.68rem}.report-weekly-summary .report-table th,.report-weekly-summary .report-table td{padding:.43rem .32rem}.report-weekly-line,.report-weekly-bars{min-width:0}.report-weekly-bars .report-svg-label{font-size:10px}.report-chart-legend i.is-dashed{background:repeating-linear-gradient(to right,var(--series) 0 5px,transparent 5px 8px)}.report-weekly-conclusions{background:linear-gradient(135deg,#f1f7ff,#edf6ff)}.report-weekly-conclusions h2{color:#0d4ea6}.report-weekly-conclusions ul{margin:0;padding-left:1.15rem}.report-weekly-conclusions li{margin:.38rem 0;color:var(--fg-soft);font-size:.76rem;line-height:1.45}.report-weekly-daily{margin-top:1rem}.report-weekly-table-scroll{overflow-x:auto}.report-weekly-daily .report-table{min-width:860px;font-size:.65rem}.report-weekly-daily .report-table th,.report-weekly-daily .report-table td{padding:.48rem .4rem;text-align:center}.report-weekly-daily .report-table th:first-child{text-align:left;white-space:nowrap}.report-weekly-notes{margin-top:1rem}

@media(max-width:900px){
  .report-top,.report-dashboard{grid-template-columns:minmax(0,1.6fr) minmax(270px,1fr)}
  .report-page .article-title{font-size:clamp(2.4rem,6vw,3.7rem)}
}
@media(max-width:760px){
  .report-page{padding-inline:1rem;padding-top:2rem}
  .report-top,.report-dashboard{display:grid;grid-template-columns:1fr}
  .report-summary,.report-forecast,.report-stations,.report-temperature,.report-latest,.report-comparison,.report-accuracy{grid-column:1}
  .report-head{padding-top:0}.report-hero{display:block}.report-quick-read{margin:1rem 0}.report-callout{margin-bottom:0}.report-summary{margin-top:0}
  .report-forecast-grid{grid-template-columns:repeat(3,minmax(0,1fr));overflow-x:auto}.report-day{min-width:0;min-height:210px;padding:.75rem .4rem}.report-day b{font-size:1.05rem}.report-day-details{font-size:.58rem}
  .report-dashboard{margin-top:.8rem;gap:.8rem}.report-panel{padding:1rem}.report-summary-grid{margin-inline:-1rem}.report-summary-grid>div{padding:.75rem 1rem}
  .report-temperature{overflow:hidden}.report-svg{min-width:520px}.report-svg--bars{min-width:0}.report-temperature .report-svg{transform-origin:left top}
  .report-table{font-size:.62rem}.report-notes li{font-size:.7rem}
  .report-weekly-head{grid-template-columns:1fr;gap:1rem}.report-week-card{max-width:350px}.report-weekly-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.report-weekly-grid--lead,.report-weekly-grid--comparisons{grid-template-columns:1fr}.report-weekly-chart .report-svg{min-width:0}.report-weekly-line{min-width:590px!important}.report-weekly-temperature{overflow-x:auto}.report-weekly-summary .report-table{font-size:.64rem}
}

/* Weekly KPI cards: use their horizontal space for the comparisons. */
.report-weekly-kpi{display:grid;min-height:145px;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);grid-template-rows:auto 1fr 1fr;column-gap:1rem;row-gap:.15rem}
.report-weekly-kpi-label{grid-column:1/-1}
.report-weekly-kpi>strong{grid-row:2/4;align-self:center;margin:0}
.report-weekly-delta{align-self:center;margin:0;padding-left:.85rem;border-left:1px solid var(--border-soft)}
.report-weekly-delta{font-size:.92rem;line-height:1.15}
.report-weekly-delta small{margin-top:.2rem;font-size:.72rem;line-height:1.25}
@media(max-width:760px){
  .report-weekly-kpi{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);column-gap:.6rem;padding:.85rem}
  .report-weekly-delta{padding-left:.6rem}
}

/* Weekly comparison charts: compact legend, readable scale and bar labels. */
.report-weekly-chart figcaption h2{font-size:1.1rem;line-height:1.3}
.report-weekly-chart .report-chart-legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:.35rem .7rem;margin:.7rem 0 .1rem;font-size:.62rem}
.report-weekly-chart .report-chart-legend span{min-width:0;white-space:nowrap}
.report-weekly-bars .report-svg-value{font:600 12px var(--font-mono)}
.report-weekly-bars .report-svg-label{font:600 13px var(--font-mono);fill:var(--fg-soft)}
@media(max-width:760px){
  .report-weekly-chart .report-chart-legend{grid-template-columns:1fr 1fr;font-size:.58rem}
}

/* Give the nine-bar temperature comparison the room it needs. */
@media(min-width:761px){
  .report-weekly-grid--comparisons>:nth-child(1){grid-column:1/span 2;grid-row:2}
  .report-weekly-grid--comparisons>:nth-child(2){grid-column:2;grid-row:1}
  .report-weekly-grid--comparisons>:nth-child(3){grid-column:3;grid-row:1}
  .report-weekly-grid--comparisons>:nth-child(4){grid-column:1;grid-row:1}
  .report-weekly-grid--comparisons>:nth-child(5){grid-column:3;grid-row:2}
}

/* Larger chart typography; the wide temperature comparison stays lighter. */
.report-weekly-chart .report-chart-legend{font-size:.75rem}
.report-weekly-bars .report-svg-value{font:600 14px var(--font-mono)}
.report-weekly-bars .report-svg-label{font:600 14px var(--font-mono)}
.report-weekly-bars .report-svg-grid text{font-size:11px}
@media(min-width:761px){
  .report-weekly-grid--comparisons>:nth-child(1) .report-svg-value{font-weight:500}
  .report-weekly-grid--comparisons>:nth-child(1) .report-svg-label{font-weight:500}
}

/* Report coverage replaces the redundant period card in the weekly header. */
.report-week-card{align-items:center}
.report-week-card>span{display:grid;flex:0 0 28px;place-items:center;width:28px;height:28px;aspect-ratio:1;border:2px solid currentColor;border-radius:50%;font-size:1rem;font-weight:700}
.report-week-card strong{font-size:1.12rem}
.report-week-card b{color:#315581;font-size:.72rem;font-weight:500}
.report-week-card em{line-height:1.45}
