/* ==========================================================================
   Nombres — single stylesheet
   1 tokens · 2 base · 3 layout · 4 header · 5 controls · 6 hero · 7 cards
   8 generator & results · 9 community · 10 prose · 11 blog · 12 footer
   13 utilities · 14 responsive
   ========================================================================== */

/* ---------- 1. Tokens ---------- */
:root{
  --ink:#123a5c; --ink-2:#2c4f6e; --muted:#69808f;
  --paper:#fff; --cream:#fff8ee; --cream-2:#fdf1e3;
  --red:#e2365a; --red-soft:#fdeaef;
  --green:#0e8a5f; --green-soft:#e8f5ef;
  --amber:#f0a63b; --amber-soft:#fdf1dd;
  --blue:#2f6fd0; --blue-soft:#eaf1fc;
  --pink:#e0569b; --pink-soft:#fdebf4;
  --line:rgb(18 58 92/.10); --line-2:rgb(18 58 92/.16);
  --shadow:0 1px 2px rgb(18 58 92/.06),0 8px 24px rgb(18 58 92/.05);
  --shell:1180px; --text:820px; --pad:24px; --pad-m:15px; --radius:14px;
  --font-body:"Be Vietnam Pro",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-head:"Baloo 2",system-ui,sans-serif;
  --font-serif:"Playfair Display",Georgia,serif;
  --font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
[data-theme=dark]{
  --ink:#f2f6fa; --ink-2:#cfdbe6; --muted:#93a6b5;
  --paper:#131c26; --cream:#0e1620; --cream-2:#16212d;
  --red:#ff5c7c; --red-soft:#2b1720;
  --green:#2fb37f; --green-soft:#12241d;
  --amber:#ffbe5c; --amber-soft:#241d10;
  --blue:#6ea2f5; --blue-soft:#141d2b;
  --pink:#ff7ab5; --pink-soft:#26141f;
  --line:rgb(255 255 255/.10); --line-2:rgb(255 255 255/.18);
  --shadow:0 1px 2px rgb(0 0 0/.4),0 10px 30px rgb(0 0 0/.35);
  color-scheme:dark;
}

/* ---------- 2. Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:78px}
/* A long unbreakable token in the content — an MD5, a URL, a 30-character nickname —
   otherwise widens its container and pushes the whole page sideways on a phone. */
body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--font-body);font-size:17px;line-height:1.65;text-wrap:pretty;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:var(--red);text-decoration:none}
a:hover{color:var(--ink)}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer}
h1,h2,h3,h4{font-family:var(--font-head);line-height:1.18;margin:0}
p{margin:0 0 16px}
ul,ol{margin:0 0 16px;padding-left:22px}
li+li{margin-top:8px}
table{border-collapse:collapse}
:focus-visible{outline:2px solid var(--red);outline-offset:2px}
[hidden]{display:none!important}

/* ---------- 3. Layout ---------- */
.shell{width:100%;max-width:var(--shell);margin:0 auto;padding:0 var(--pad)}
.section{padding:58px 0}
.section--paper{background:var(--paper)}
.section--cream{background:var(--cream)}
.section--cream2{background:var(--cream-2);border-block:1px solid var(--line)}
.section--green{background:var(--green);color:#fff}
.section__title{font-size:26px;font-weight:800;margin-bottom:18px}
.grid{display:grid;gap:14px}
.grid--auto{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
.grid--cards{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
.grid--fit{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.grid--feature{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:24px}
.center{text-align:center}
.stack-head{max-width:660px;margin:0 auto 30px;text-align:center}
.lead{font-size:18px;color:var(--ink-2)}
.muted{color:var(--muted)}
.row-between{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.push{margin-left:auto}
.title-xl{font-size:clamp(32px,5vw,58px);font-weight:800;letter-spacing:-1px}
.title-l{font-size:clamp(28px,3.4vw,36px);font-weight:800}
.title-m{font-size:clamp(24px,3vw,32px);font-weight:800}
.title-s{font-size:23px;font-weight:700}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link:focus{position:fixed;top:10px;left:10px;z-index:99;width:auto;height:auto;clip:auto;margin:0;padding:10px 16px;background:var(--ink);color:var(--cream);border-radius:10px}

/* ---------- 4. Header ---------- */
.site-header{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--paper) 90%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.site-header__bar{display:flex;align-items:center;gap:18px;padding-block:12px}
.brand{display:flex;flex-direction:column;line-height:1.05;flex:none}
.brand__name{font-family:var(--font-head);font-weight:800;font-size:26px;color:var(--ink);letter-spacing:-.5px}
.brand__by{font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.02em}
.nav{flex:1 1 auto;min-width:0;margin-left:14px}
.nav__list{display:flex;flex-wrap:wrap;gap:10px 22px;margin:0;padding:0;list-style:none}
.nav__list li{margin:0;position:relative}
.nav__list a{color:var(--ink-2);font-weight:500;font-size:16px;white-space:nowrap}
.nav__list a:hover{color:var(--red)}
.nav__list .current-menu-item>a,.nav__list .current_page_item>a{color:var(--red);font-weight:700}
.nav__list .sub-menu{display:none;position:absolute;top:100%;left:0;z-index:5;min-width:200px;margin:0;padding:8px;list-style:none;background:var(--paper);border:1px solid var(--line-2);border-radius:12px;box-shadow:var(--shadow)}
.nav__list li:hover>.sub-menu,.nav__list li:focus-within>.sub-menu{display:block}
.nav__list .sub-menu li{margin:0}
.nav__list .sub-menu a{display:block;padding:7px 10px;border-radius:8px}
.nav__list .sub-menu a:hover{background:var(--cream-2)}
.header__tools{display:flex;align-items:center;gap:10px;margin-left:auto;flex:none}
.pill-btn{display:flex;align-items:center;gap:6px;padding:7px 10px;border:1px solid var(--line-2);background:var(--paper);border-radius:999px;font-size:14px;font-weight:600;color:var(--ink-2)}
.flag{width:18px;height:13px;border-radius:2px;overflow:hidden;display:flex;flex:none}
.flag i{flex:1}
.flag i:nth-child(1){background:#0e8a5f}
.flag i:nth-child(2){background:#fff}
.flag i:nth-child(3){background:#e2365a}
.icon-btn{width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--line-2);background:var(--paper);border-radius:999px;color:var(--ink-2)}

/* Mobile drawer */
.drawer{position:fixed;inset:0;z-index:70;background:rgb(9 20 30/.5);backdrop-filter:blur(2px)}
.drawer__sheet{position:absolute;inset:0 0 0 auto;width:min(360px,90vw);padding:20px;overflow:auto;background:var(--paper);border-left:1px solid var(--line-2);display:flex;flex-direction:column;gap:18px}
.drawer__head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.drawer__list{display:grid;gap:4px;margin:0;padding:0;list-style:none}
.drawer__list li{margin:0}
.drawer__list a{display:block;padding:11px 12px;border-radius:10px;color:var(--ink);font-weight:600}
.drawer__list a:hover{background:var(--cream-2)}
.drawer__nav--sub .drawer__list a{font-weight:500;font-size:15px;color:var(--ink-2)}
.drawer__list .sub-menu{margin:0;padding-left:12px;list-style:none}

/* ---------- 5. Controls ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 24px;border:0;border-radius:999px;font-weight:700;text-decoration:none;line-height:1.2}
.btn--red{background:var(--red);color:#fff}
.btn--red:hover{color:#fff;filter:brightness(1.06)}
.btn--green{background:var(--green);color:#fff;box-shadow:var(--shadow)}
.btn--green:hover{color:#fff}
.btn--ghost{background:var(--paper);color:var(--ink);border:1px solid var(--line-2)}
.btn--ink{background:var(--ink);color:var(--cream)}
.btn--ink:hover{color:var(--cream)}
.btn--sm{padding:10px 18px;font-size:15px;white-space:nowrap}
.link-btn{background:none;border:0;padding:0;color:var(--red);font-size:14px;font-weight:700}
.chips{display:flex;flex-wrap:wrap;gap:9px}
.chip{padding:8px 16px;border-radius:999px;border:1px solid var(--line-2);background:var(--paper);color:var(--ink-2);font-size:14px;font-weight:600}
.chip[aria-pressed=true]{background:var(--red);border-color:var(--red);color:#fff}
.tag{display:inline-flex;padding:4px 11px;border-radius:999px;font-size:13px;font-weight:700;background:var(--cream-2);color:var(--ink-2)}
.tag--red{background:var(--red-soft);color:var(--red)}
.tag--green{background:var(--green-soft);color:var(--green)}
.tag--blue{background:var(--blue-soft);color:var(--blue)}
.tag--pink{background:var(--pink-soft);color:var(--pink)}
.tag--amber{background:var(--amber-soft);color:#a3701a}
.field{display:flex;flex-wrap:wrap;gap:10px;background:var(--paper);padding:8px;border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow);max-width:560px}
.field input{flex:1;min-width:160px;border:0;outline:none;background:transparent;padding:12px 16px;font-size:17px}
.field--onGreen{background:#fff;border:0;margin:0 auto}
.field--onGreen input{color:#123a5c}
.field--center{margin:0 auto}
.field--flat{border-radius:var(--radius);max-width:640px}
.searchform{display:flex;gap:8px}
.searchform input{flex:1;min-width:0;padding:11px 14px;border:1px solid var(--line-2);border-radius:999px;background:var(--paper);outline:none}

/* ---------- 6. Hero ---------- */
.hero{position:relative;overflow:hidden;background:linear-gradient(160deg,var(--cream-2),var(--cream) 60%)}
.hero__banner{position:absolute;inset:0 0 auto 0;height:26px;display:flex;opacity:.9}
.hero__banner i{flex:1;clip-path:polygon(0 0,100% 0,100% 55%,50% 100%,0 55%)}
.hero__banner i:nth-child(6n+1){background:#0e8a5f}
.hero__banner i:nth-child(6n+2){background:#fff}
.hero__banner i:nth-child(6n+3){background:#e2365a}
.hero__banner i:nth-child(6n+4){background:#f0a63b}
.hero__banner i:nth-child(6n+5){background:#2f6fd0}
.hero__banner i:nth-child(6n+6){background:#e0569b}
.hero__grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:40px;align-items:center;padding-block:64px 56px;position:relative}
.hero__text .lead{max-width:38ch;margin:18px 0 26px}
.hero__chips{margin-top:18px}
.hero__gen{max-width:560px}
.hero__gen .gen__panels{margin-top:16px}
.hero__gen .gen__deco[open]{max-width:none}
.hero__gen .gen__deco{max-width:none}
.hero__art:empty{display:none}
.hero__art{border:1px solid var(--line-2);border-radius:24px;min-height:340px;display:grid;align-content:center;gap:16px;padding:28px;background:linear-gradient(150deg,var(--paper),var(--cream-2))}
.hero__art b{display:block;font-size:clamp(22px,2.6vw,34px);line-height:1.35;word-break:break-word;font-weight:600}
.hero__art b:nth-child(1){font-family:var(--font-serif);font-style:italic;color:var(--red)}
.hero__art b:nth-child(2){font-family:var(--font-head);font-weight:800;color:var(--ink)}
.hero__art b:nth-child(3){color:var(--blue)}
.hero--404{padding:56px 0 44px;text-align:center}
.error-code{font-family:var(--font-head);font-weight:800;font-size:clamp(64px,14vw,140px);line-height:1;margin:0;color:var(--red);opacity:.22}
.error-lead{max-width:56ch;margin:14px auto 26px}
.error-search{max-width:420px;margin:22px auto 0}
.features{padding-block:36px}
.feature{text-align:center;padding:0 6px}
.feature__icon{display:flex;justify-content:center;margin-bottom:8px}
.feature__title{font-family:var(--font-head);font-weight:700;font-size:17px}
.feature__text{font-size:15px;color:var(--muted)}
.cta{padding:52px 0}
.cta__lead{margin:10px 0 22px;color:rgb(255 255 255/.9)}
.cta .title-l,.cta .title-m{color:#fff}

/* ---------- 7. Cards ---------- */
.name-card,.style-card{display:flex;flex-direction:column;justify-content:space-between;gap:10px;min-height:126px;text-align:left;padding:16px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.name-card:hover,.style-card:hover{border-color:var(--red)}
.name-card__value{font-size:20px;font-weight:500;word-break:break-word;line-height:1.4}
.name-card__meta{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:14px;color:var(--muted)}
.name-card__copy{color:var(--red);font-weight:600;margin-left:auto}
.style-card{min-height:118px}
.style-card--blue{background:var(--blue-soft)}
.style-card--red{background:var(--red-soft)}
.style-card__head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:14px;font-weight:600;color:var(--muted)}
.style-card__sample{font-size:26px;line-height:1.35;word-break:break-word}
.trend-card{display:flex;flex-direction:column;justify-content:space-between;gap:6px;min-height:104px;text-align:left;padding:16px;background:var(--cream);border:1px solid var(--line);border-radius:var(--radius)}
.trend-card:hover{border-color:var(--green)}
.trend-card__head{display:flex;align-items:center;justify-content:space-between;font-size:14px;font-weight:600;color:var(--muted)}
.trend-card__hot{color:var(--green)}
.trend-card__value{font-size:19px;font-weight:600;word-break:break-word}
.pair-card{display:flex;flex-direction:column;justify-content:space-between;gap:10px;min-height:124px;padding:16px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.pair-card__name{display:flex;align-items:center;gap:6px;background:none;border:0;padding:0;font-weight:700;color:var(--red);text-align:left}
.pair-card__nick{padding:10px 12px;border:1px dashed var(--line-2);border-radius:10px;background:var(--cream);font-size:18px;line-height:1.4;text-align:left;word-break:break-word}
.pair-card__nick:hover{border-style:solid;border-color:var(--red)}
.pair-card__meta{font-size:13px;color:var(--muted);font-weight:600}
.randombox{display:flex;flex-wrap:wrap;align-items:center;gap:14px;padding:18px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.randombox__label{font-size:15px;color:var(--muted);font-weight:600}
.randombox__name{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border:0;border-radius:999px;background:var(--red);color:#fff;font-weight:700;font-size:18px}
.podium{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px;margin-top:20px}
.podium__item{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;min-height:162px;padding:36px 20px 22px;background:var(--paper);border:2px solid var(--red);border-radius:18px;box-shadow:var(--shadow)}
.podium__item:nth-child(2){border-color:var(--amber)}
.podium__item:nth-child(3){border-color:var(--green)}
.podium__rank{position:absolute;top:-16px;width:32px;height:32px;border-radius:999px;background:var(--red);color:#fff;display:grid;place-items:center;font-family:var(--font-head);font-weight:800;font-size:17px;border:3px solid var(--red-soft)}
.podium__item:nth-child(2) .podium__rank{background:var(--amber)}
.podium__item:nth-child(3) .podium__rank{background:var(--green)}
.podium__name{font-size:24px;font-weight:600;text-align:center;line-height:1.45;word-break:break-word}
.rank-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:14px;margin-top:16px}
.rank-row{display:flex;align-items:center;gap:14px;min-height:64px;padding:15px 18px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);text-align:left}
.rank-row:hover{border-color:var(--red)}
.rank-row__n{font-size:15px;font-weight:700;color:var(--muted);min-width:20px}
.rank-row__name{font-size:19px;font-weight:500;word-break:break-word;line-height:1.4}

/* ---------- 8. Generator & results ---------- */
.gen{max-width:var(--shell);margin:0 auto;padding:28px var(--pad);scroll-margin-top:80px}
.gen .field{max-width:640px}
/* The two pills sit side by side until one is opened, then that one takes the row. */
.gen__panels{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.gen__deco{max-width:640px}
.gen__panels>.gen__deco{flex:0 1 auto}
.gen__panels>.gen__deco[open]{flex:1 1 100%}
.gen__deco>summary{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid var(--line-2);border-radius:999px;background:var(--paper);font-size:14px;font-weight:600;color:var(--ink-2);cursor:pointer;list-style:none}
.gen__deco>summary::-webkit-details-marker{display:none}
.gen__deco-grid{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px;padding:16px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius)}
.gen__deco-field{flex:1 1 180px;margin:0}
.gen__deco-field select{width:100%;padding:10px 12px;border:1px solid var(--line-2);border-radius:10px;background:var(--cream);max-width:100%}
.res{padding:12px 0 44px;background:var(--cream)}
.res__title{margin-bottom:6px}
.res__name{color:var(--red);word-break:break-word}
.res__note{margin:0 0 18px}
.res-sec{margin-top:30px}
.res-sec__head{font-size:20px;font-weight:700;margin-bottom:12px;color:var(--ink-2)}
.chipbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:14px 0 8px}
.chipbar__label{font-size:14px;font-weight:600;color:var(--muted)}
.chipbar__row{display:flex;flex-wrap:wrap;gap:6px}
.chipbar__item{padding:7px 10px;min-width:38px;border:1px solid var(--line);border-radius:10px;background:var(--paper);font-size:18px;line-height:1.2}
.chipbar__item:hover{border-color:var(--red);background:var(--red-soft)}
.palette{display:grid;gap:16px;width:100%}
.palette__group{margin:0}
.palette__label{font-size:14px;font-weight:700;color:var(--muted);margin:0 0 8px}
.gen__deco-grid--palette{max-height:340px;overflow:auto}

/* ---------- 9. Community & blocks ---------- */
.blocks{display:grid;gap:34px}
.block{margin:44px auto;max-width:var(--shell);padding-inline:var(--pad);scroll-margin-top:80px}
/* A block that already sits inside a container must not add a second one, or it ends up
   with twice the side padding and a narrower box than everything around it. */
.blocks .block,.shell .block,.prose .block{max-width:none;margin-inline:0;padding-inline:0}
.blocks .block{margin:0}
.block__sub{margin:6px 0 18px}
.block__msg{min-height:22px;margin:10px 0 0;font-weight:600;font-size:15px}
.block__msg.is-ok{color:var(--green)}
.block__msg.is-bad{color:var(--red)}
.community-card{display:flex;flex-direction:column;justify-content:space-between;gap:10px;min-height:104px;padding:14px 16px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.community-card__value{font-size:19px;line-height:1.4;text-align:left;background:none;border:0;padding:0;word-break:break-word}
.community-card__bar{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted)}
.community-card__vote{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border:1px solid var(--line-2);border-radius:999px;background:transparent;font-size:13px;font-weight:700}
.community-card__vote:hover{border-color:var(--green);color:var(--green)}
.community-card__vote.is-down:hover{border-color:var(--red);color:var(--red)}
.community-card__vote[disabled]{opacity:.55}
.community-card__meta{margin-left:auto;font-size:12px}
.votebar{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px}
.vote{display:inline-flex;align-items:center;gap:9px;padding:12px 22px;border-radius:999px;border:1.5px solid var(--line-2);background:var(--paper);color:var(--ink);font-weight:700;font-size:16px}
.vote[aria-pressed=true]{border-color:var(--green);background:var(--green-soft);color:var(--green)}
.vote--down[aria-pressed=true]{border-color:var(--red);background:var(--red-soft);color:var(--red)}
.vote--male[aria-pressed=true]{border-color:var(--blue);background:var(--blue-soft);color:var(--blue)}
.vote--female[aria-pressed=true]{border-color:var(--pink);background:var(--pink-soft);color:var(--pink)}
.genderbar{height:10px;margin-top:14px;border-radius:999px;background:var(--pink-soft);overflow:hidden;max-width:420px}
.genderbar span{display:block;height:100%;background:var(--blue);transition:width .25s ease}
.cloud{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline}
.cloud button{max-width:100%;min-width:0;background:none;border:0;padding:2px 4px;line-height:1.3;color:var(--ink-2)}
.cloud button:hover{color:var(--red)}
.share{display:flex;gap:8px;flex-wrap:wrap}
.share button{padding:9px 14px;border-radius:10px;border:1px solid var(--line-2);background:var(--paper);color:var(--ink-2);font-size:14px;font-weight:600}
.share button:hover{border-color:var(--red);color:var(--red)}
.rating{max-width:760px;margin:0 auto;border:1px solid var(--line-2);border-radius:20px;padding:28px;background:var(--cream);text-align:center}
.rating__actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:18px}
.rating__thanks{display:none;margin:16px 0 0;font-weight:600;color:var(--green)}
.rating__thanks.is-open{display:block}
.page-single__rating{padding-block:32px 52px}
/* The feedback box is a band of its own on the front page. Without this it inherits only
   a background colour and sits flush against the call to action underneath it. */
.rating-band{padding:52px 0}
.prose .rating{margin-block:36px 0}

/* ---------- 10. Prose & page body ---------- */
.page-hero{background:linear-gradient(160deg,var(--cream-2),var(--cream) 70%);border-bottom:1px solid var(--line);padding:44px 0 36px}
.page-hero .title-xl{margin-top:12px;max-width:22ch}
.page-hero .lead{margin-top:14px;max-width:60ch}
.page-body{padding:34px 0 20px;background:var(--paper)}
/* One left edge for the whole page.
   The editor's text is capped at a readable measure, but it starts exactly where every
   other section starts instead of being centred on its own — a centred text column steps
   in and out against the full-shell blocks above and below it, and over a long page that
   is what reads as ragged. The offset is the shell's own gutter, floored at --pad so it
   never goes negative on a narrow screen. */
.page-body>*{
  width:100%;
  max-width:calc(var(--text) + var(--pad) * 2);
  /* Floor at 0, not at --pad: below the shell width the offset must disappear entirely.
     A left margin on a box that is already 100% wide pushes it past the right edge —
     which is exactly one --pad of overflow on a phone, and the gutters stop matching. */
  margin-inline:max(0px,calc((100% - var(--shell)) / 2)) auto;
  padding-inline:var(--pad);
}
.page-body>.gen,.page-body>.block,.page-body>.blocks,.page-body>.shell,.page-body>.palette{max-width:var(--shell);margin-inline:auto}
.page-body>.prose{max-width:calc(var(--text) + var(--pad) * 2);margin-inline:max(0px,calc((100% - var(--shell)) / 2)) auto}
.page-body>.rating{max-width:calc(760px + var(--pad) * 2);margin-inline:auto}
/* Bands paint a background across the viewport and constrain themselves with .shell. */
.page-body>.section,.page-body>.res{max-width:none;margin-inline:0;padding-inline:0}
.page-body>p,.page-body>h2,.page-body>h3,.page-body>h4,.page-body>ul,.page-body>ol,.page-body>figure,.page-body>blockquote,.page-body>table,.page-body>div:not([class]){color:var(--ink-2)}
.page-body>h2{font-family:var(--font-head);font-size:27px;font-weight:800;margin-block:36px 10px;color:var(--ink)}
.page-body>h3{font-family:var(--font-head);font-size:23px;font-weight:700;margin-block:30px 8px;color:var(--ink)}
.page-body>h4{font-family:var(--font-head);font-size:19px;font-weight:700;margin-block:24px 8px;color:var(--ink)}
.page-body img{border-radius:var(--radius)}
.prose{max-width:820px}
.prose h2{font-size:27px;font-weight:800;margin:32px 0 10px}
.prose h3{font-size:23px;font-weight:700;margin:28px 0 8px}
.prose p,.prose li{color:var(--ink-2)}
.prose img{border-radius:var(--radius)}
.block--copy{margin-inline:auto}
blockquote,.wp-block-quote{border-left:4px solid var(--red);padding:14px 18px;background:var(--red-soft);border-radius:0 var(--radius) var(--radius) 0;margin:0 auto 20px}
blockquote p{margin:0;font-style:italic;color:var(--ink)}
.wp-block-table,.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);margin:18px auto 6px}
.wp-block-table table,.table-wrap table{width:100%;min-width:600px;font-size:16px}
.wp-block-table th,.table-wrap th{text-align:left;padding:14px 16px;border-bottom:1px solid var(--line);font-family:var(--font-head);font-size:16px}
.wp-block-table td,.table-wrap td{padding:13px 16px;border-bottom:1px solid var(--line);color:var(--ink-2)}
.cover{min-height:260px;border:1px solid var(--line);border-radius:18px;display:grid;place-items:center;background:var(--cream-2);margin-bottom:28px;overflow:hidden}
.cover--real{min-height:0;border:0}
.cover img{border-radius:18px;width:100%}
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:14px;color:var(--muted);font-weight:600}
.crumbs a{color:var(--muted)}
.crumbs a:hover{color:var(--red)}
.crumbs [aria-current]{color:var(--ink)}

/* ---------- 11. Blog ---------- */
.blog-hero{background:linear-gradient(160deg,var(--cream-2),var(--cream) 70%);border-bottom:1px solid var(--line);padding:52px 0 40px}
.blog-hero__lead{max-width:52ch;margin-top:14px}
.blog-hero__chips,.blog-hero__search{margin-top:22px}
.blog-hero__search{max-width:420px}
.featured-wrap{padding:44px 0 20px}
.featured{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:stretch;border:1px solid var(--line);border-radius:20px;overflow:hidden;background:var(--paper);box-shadow:var(--shadow);color:inherit}
.featured:hover{color:inherit;border-color:var(--red)}
.featured__body{padding:30px}
.featured__title{margin:14px 0 10px}
.featured__excerpt{color:var(--ink-2)}
.featured__art{min-height:240px;background:var(--cream-2);border-left:1px solid var(--line)}
.featured__art img{width:100%;height:100%;object-fit:cover}
.featured__meta{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px;font-size:14px;color:var(--muted);font-weight:600}
.featured__cat{color:var(--green)}
.more{display:inline-flex;align-items:center;gap:8px;margin-top:20px;color:var(--red);font-weight:700}
.list-wrap{padding:26px 0 60px}
.list-head{margin-bottom:18px}
.post-list{display:grid;gap:12px}
.post-row{display:flex;gap:18px;align-items:flex-start;padding:18px;background:var(--paper);border:1px solid var(--line);border-radius:16px;color:inherit;box-shadow:var(--shadow)}
.post-row:hover{color:inherit;border-color:var(--red)}
.post-row__n{flex:none;width:62px;height:62px;border-radius:14px;display:grid;place-items:center;font-family:var(--font-head);font-weight:800;font-size:20px;background:var(--cream-2);color:var(--ink-2)}
.post-row__body{display:flex;flex-direction:column;gap:6px;min-width:0}
.post-row__meta{display:flex;flex-wrap:wrap;gap:10px;align-items:center;font-size:13px;font-weight:700;color:var(--muted)}
.post-row__title{font-family:var(--font-head);font-weight:700;font-size:21px;line-height:1.25}
.post-row__excerpt{font-size:16px;color:var(--ink-2)}
.post-row__go{align-self:center;color:var(--muted);flex:none}
.pager,.navigation.pagination{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:34px}
.pager .nav-links,.navigation .nav-links{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.page-numbers{min-width:42px;padding:10px 14px;border-radius:12px;border:1px solid var(--line-2);background:var(--paper);color:var(--ink-2);font-weight:700;font-size:15px;text-align:center}
.page-numbers.current{background:var(--ink);border-color:var(--ink);color:var(--cream)}
.article-hero{background:linear-gradient(160deg,var(--cream-2),var(--cream) 70%);border-bottom:1px solid var(--line);padding:44px 0 36px}
.article-hero h1{font-size:clamp(28px,4.4vw,46px);font-weight:800;margin-top:12px;max-width:24ch;letter-spacing:-.8px}
.byline{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:18px;font-size:15px;color:var(--muted);font-weight:600}
.byline__avatar{width:38px;height:38px;border-radius:999px;background:var(--red);color:#fff;display:grid;place-items:center;font-family:var(--font-head);font-weight:800}
.byline__name{color:var(--ink)}
.article-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:44px;align-items:start;padding-block:34px 60px}
.article-cta{margin:28px 0}
.aside{position:sticky;top:88px;display:grid;gap:20px}
.aside__box{border:1px solid var(--line);border-radius:16px;padding:18px;background:var(--paper);box-shadow:var(--shadow)}
.aside__title{font-family:var(--font-head);font-weight:700;font-size:16px;margin-bottom:10px}
.toc{display:grid;gap:8px}
.toc a{font-size:15px;color:var(--ink-2);line-height:1.4}
.toc a:hover{color:var(--red)}
.related{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px}
.related__card{display:flex;flex-direction:column;gap:8px;padding:18px;background:var(--paper);border:1px solid var(--line);border-radius:16px;color:inherit;box-shadow:var(--shadow)}
.related__card:hover{color:inherit;border-color:var(--red)}
.related__title{font-family:var(--font-head);font-weight:700;font-size:19px;line-height:1.3}
.related__meta{font-size:14px;color:var(--muted);font-weight:600}
.back-link{margin-top:30px}
.empty-state{padding:60px 0}
.empty-state .searchform{max-width:420px;margin:0 auto}
.comments-wrap{padding-block:20px 50px}

/* ---------- 12. Footer & mobile nav ---------- */
.site-footer{background:#0f1a24;color:#dfe7ee}
.site-footer__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:34px;padding-block:52px 26px}
.site-footer__title{font-family:var(--font-head);font-size:16px;color:#fff;margin-bottom:12px}
.site-footer__list{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.site-footer__list li{margin:0}
.site-footer__list a,.site-footer p{color:#a9b9c6;font-size:15px}
.site-footer__list a:hover{color:#fff}
.site-footer__brand{font-family:var(--font-head);font-weight:800;font-size:26px;color:#fff;margin-bottom:10px}
.site-footer__bottom{display:flex;flex-wrap:wrap;gap:10px;padding-block:16px 30px;border-top:1px solid rgb(255 255 255/.1);font-size:14px;color:#8fa2b1}
.mobnav{display:none;position:fixed;left:12px;right:12px;bottom:12px;z-index:60;align-items:flex-end;justify-content:space-between;gap:4px;padding:10px 12px;border-radius:22px;background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(14px);border:1px solid var(--line-2);box-shadow:0 12px 34px rgb(18 58 92/.18)}
.mobnav a,.mobnav button{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;padding:4px 2px;border:0;background:none;color:var(--ink-2);min-height:46px;font-size:11.5px;font-weight:700;text-align:center}
.mobnav a[aria-current=page]{color:var(--red)}
.mobnav__icon{width:34px;height:34px;border-radius:12px;display:grid;place-items:center}
.mobnav a[aria-current=page] .mobnav__icon{background:var(--red-soft)}
.mobnav__fab{width:54px;height:54px;margin-top:-26px;border-radius:999px;display:grid;place-items:center;background:linear-gradient(160deg,var(--red),#ff7b52);color:#fff;box-shadow:0 8px 20px rgb(226 54 90/.45)}
.mobnav .is-fab{color:var(--red)}

/* Names are arbitrary Unicode and carry no guaranteed break opportunity — a styled
   nickname can be one unbreakable run 40 glyphs long. `anywhere` rather than
   `break-word` on purpose: only `anywhere` also shrinks the element's min-content
   width, and that is what lets a flex or grid item holding one fit its track instead
   of pushing the whole page sideways. */
.name-card__value,.community-card__value,.rank-row__name,.podium__name,.pair-card__nick,
.trend-card__value,.res__name,.res-sec__head,.cloud button,.chipbar__item,.style-card__sample{overflow-wrap:anywhere}
.rank-row__name,.podium__name,.community-card__value,.name-card__value{min-width:0}

/* ---------- 13. Back to top ---------- */
/* Sits clear of the mobile tab bar, which is itself fixed to the bottom. */
.to-top{position:fixed;right:18px;bottom:24px;z-index:55;width:46px;height:46px;display:grid;place-items:center;border:1px solid var(--line-2);border-radius:999px;background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(10px);color:var(--ink-2);box-shadow:var(--shadow);opacity:0;transform:translateY(10px);transition:opacity .18s ease,transform .18s ease}
.to-top.is-visible{opacity:1;transform:none}
.to-top:hover{color:var(--red);border-color:var(--red)}

/* ---------- 14. Toast ---------- */
.toast{position:fixed;left:50%;bottom:104px;z-index:80;transform:translate(-50%,16px);opacity:0;pointer-events:none;max-width:min(90vw,420px);background:var(--ink);color:var(--cream);padding:12px 20px;border-radius:999px;font-weight:600;font-size:15px;text-align:center;box-shadow:0 10px 30px rgb(0 0 0/.25);transition:opacity .18s ease,transform .18s ease}
.toast.is-visible{opacity:1;transform:translate(-50%,0)}

/* ---------- 14. Responsive ---------- */
@media (max-width:1050px){
  .nav__list{gap:10px 16px}
  .header__cta{display:none}
}
@media (max-width:900px){
  :root{--pad:var(--pad-m)}
  body{padding-bottom:88px}
  .nav,.pill-btn{display:none}
  .mobnav{display:flex}
  .to-top{right:14px;bottom:100px;width:42px;height:42px}
  .hero__art,.aside{display:none}
  .hero__grid{grid-template-columns:1fr;padding-block:40px 36px;gap:24px}
  .section{padding:44px 0}
  .featured{grid-template-columns:1fr}
  .featured__art{border-left:0;border-top:1px solid var(--line);min-height:180px}
  .article-layout{grid-template-columns:1fr;padding-block:24px 48px}
  .box-edge{padding:0!important;margin-inline:0!important;background:transparent!important;border:0!important;box-shadow:none!important}
  .bleed,.wp-block-table,.table-wrap{margin-inline:calc(var(--pad-m) * -1);width:calc(100% + var(--pad-m) * 2);border-radius:0;border-inline:0}
  .grid--auto{grid-template-columns:repeat(auto-fill,minmax(158px,1fr))}
  .cloud button{font-size:clamp(14px,4.4vw,22px)!important}
}
@media (max-width:560px){
  .grid--cards,.related,.rank-list{grid-template-columns:1fr}
  /* Five one-per-row feature blocks is a lot of scrolling for five short labels. */
  .grid--feature{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
  .post-row{gap:12px;padding:14px}
  .post-row__n{width:46px;height:46px;font-size:16px;border-radius:12px}
  .post-row__go{display:none}
  .rating{padding:20px 16px;border-radius:16px}
  .style-card{padding:14px;min-height:92px}
  .field{padding:6px}
  .field input{padding:11px 12px;font-size:16px}
  .btn{padding:12px 20px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition:none!important;animation:none!important}
}
@media print{
  .site-header,.mobnav,.toast,.to-top,.aside,.section--green,.drawer,.gen{display:none}
  body{background:#fff;padding:0}
}

/* ==========================================================================
   Páginas de nombre (per-name). Rejillas de copiado, tablas y notas.
   Regla de diseño: el ancho de cada item lo decide su CONTENIDO, no una
   cuadrícula fija. Los glifos decorativos tienen anchos muy distintos entre
   sí; encajarlos en columnas iguales los aplasta y rompe los marcos.
   ========================================================================== */

.nnn-grid {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 18px 0 26px;
	padding: 0;
	list-style: none;
}

/* flex-grow reparte el sobrante de CADA fila entre sus items, así la línea
   queda llena de borde a borde sin estirar unos items mucho más que otros.
   flex-basis: auto mantiene el ancho natural del glifo como punto de partida. */
.nnn-item {
	flex: 1 0 auto;
	min-width: max-content;
	max-width: 100%;
	margin: 0;
	padding: 10px 14px;
	border: 1px solid var(--nnn-border, #e2e6ea);
	border-radius: 10px;
	background: var(--nnn-card, #fff);
	color: inherit;
	font: inherit;
	/* Sin font-weight: los bloques Unicode ya traen su propio grosor.
	   Forzar negrita sobre ellos los deforma y en varios bloques el navegador
	   sustituye la fuente entera por una de respaldo. */
	font-weight: 400;
	font-size: 1.05rem;
	line-height: 1.5;
	text-align: center;
	white-space: nowrap;
	cursor: pointer;
	transition: border-color .15s ease, transform .15s ease;
}

.nnn-item:hover,
.nnn-item:focus-visible {
	border-color: var(--nnn-accent, #28a745);
	transform: translateY(-1px);
}

/* Los nombres montados son más largos: dejarlos partir si hace falta. */
.nnn-grid--montados .nnn-item,
.nnn-grid--comunidad .nnn-item {
	white-space: normal;
	word-break: break-word;
}

.nnn-item--wide {
	display: inline-block;
	width: 100%;
	text-align: left;
}

/* Tablas: nunca deben desbordar el cuerpo del artículo. */
.nnn-scroll {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	margin: 18px 0 26px;
}

.nnn-table {
	width: 100%;
	min-width: 480px;
	border-collapse: collapse;
	font-size: .97rem;
}

.nnn-table th,
.nnn-table td {
	padding: 10px 12px;
	border-bottom: 1px solid var(--nnn-border, #e2e6ea);
	text-align: left;
	vertical-align: top;
}

.nnn-table thead th {
	background: var(--nnn-head, #f6f8fa);
	font-weight: 600;
	white-space: nowrap;
}

.nnn-table code {
	font-size: .88em;
	white-space: nowrap;
}

.nnn-lede {
	font-size: 1.08rem;
	line-height: 1.7;
}

.nnn-note {
	margin: 16px 0;
	padding: 12px 14px;
	border-left: 3px solid var(--nnn-accent, #28a745);
	background: #f6faf7;
	border-radius: 0 8px 8px 0;
}

.nnn-verif {
	margin-top: 30px;
	padding-top: 16px;
	border-top: 1px solid var(--nnn-border, #e2e6ea);
	font-size: .92rem;
	opacity: .82;
}

.nnn-steps { padding-left: 1.2em; }
.nnn-steps li { margin-bottom: .6em; }
.nnn-rel li { margin-bottom: .5em; }

/* Las imágenes del artículo se adaptan al ancho; nunca alto fijo, que en
   móvil estira y deforma la foto. */
.prose .nnn-fig { margin: 26px 0; }
.prose .nnn-fig img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 12px;
}
.prose .nnn-fig figcaption {
	margin-top: 8px;
	font-size: .9rem;
	opacity: .75;
}

@media (max-width: 640px) {
	.nnn-item { font-size: 1rem; padding: 9px 12px; }
	.nnn-grid { gap: 6px; }
}

/* Un post que lleva el generador se lee como pagina de herramienta: las
   rejillas de simbolos necesitan todo el ancho de la columna de texto.
   El aside SE MANTIENE: ahi vive el indice del articulo, y estas paginas
   tienen diez secciones - quitarlo dejaria al lector sin forma de saltar. */
.post-single--tool .prose { max-width: none; }

/* Índice del artículo (inc/toc.php). Los H3 van sangrados para que se vea de un
   vistazo qué cuelga de qué; no se usa lista numerada porque las secciones no
   tienen orden obligatorio de lectura. */
.toc__link {
	display: block;
	padding: 5px 0;
	font-size: .94rem;
	line-height: 1.45;
	text-decoration: none;
	color: inherit;
	border-left: 2px solid transparent;
	padding-left: 10px;
	transition: border-color .15s ease, color .15s ease;
}
.toc__link:hover,
.toc__link:focus-visible {
	border-left-color: var(--nnn-accent, #28a745);
}
.toc__link--h3 {
	padding-left: 24px;
	font-size: .88rem;
	opacity: .82;
}
/* El salto deja el encabezado pegado al borde superior; este margen lo despega. */
.prose h2[id],
.prose h3[id] { scroll-margin-top: 84px; }
