/* 311 REPORT PAGE GROUP — shared stylesheet. Edit here to change every report page. */
:root {
  --ink: var(--b-night-2,#0d0d1f);
  --blue: var(--b-blue,#2F2F91);
  --purple: var(--b-magenta,#96069D);
  --pink: var(--b-accent,#D92A79);
  --cyan: #007fae;
  --cyan-bright: #2ac8ff;
  --paper: #f6f7fb;
  --white: #fff;
  --muted: #606779;
  --line: #dfe2ea;
  --wrap: min(1160px, calc(100vw - 48px));
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--white); font-family: var(--b-font,futura-pt,"Futura PT",Futura,"Helvetica Neue",Arial,sans-serif); font-size: 16px; line-height: 1.55; overflow-x: hidden; }
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input { font: inherit; }
:focus-visible { outline: 3px solid var(--cyan-bright); outline-offset: 3px; }
.wrap { width: var(--wrap); margin: 0 auto; }
.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 { position: fixed; left: 16px; top: -70px; z-index: 1000; padding: 10px 14px; background: #fff; color: #111; font-weight: 700; }
.skip-link:focus { top: 16px; }

.header { height: 72px; display: flex; align-items: center; gap: 44px; padding: 0 max(24px, calc((100vw - 1320px) / 2)); color: #fff; background: var(--blue); }
.logo { display: inline-flex; align-items: center; gap: 11px; flex-shrink: 0; }
.logo strong { font-size: 1.6rem; line-height: 1; letter-spacing: -.08em; }
.logo span { font-size: .7rem; letter-spacing: .18em; font-weight:700; }
.header nav { margin-left: auto; display: flex; gap: 30px; }
.header nav a { color: rgba(255,255,255,.75); font-size: .76rem; font-weight: 700; }
.header nav a:hover, .header nav a:focus-visible { color: #fff; }
.header-action { margin-left: 12px; padding: 10px 15px; border: 1px solid rgba(255,255,255,.45); font-size: .72rem; font-weight:700; }
.header-action:hover, .header-action:focus-visible { background: #fff; color: var(--blue); }

.hero { color: #fff; background: linear-gradient(135deg, #d931ae 0%, #8f179e 42%, var(--b-blue,#2F2F91) 100%); }
.hero-inner { width: var(--wrap); min-height: 720px; margin: 0 auto; padding: 76px 0; display: grid; grid-template-columns: 1.35fr .65fr; align-items: center; gap: 70px; }
.kicker, .section-tag { margin: 0 0 22px; color: var(--blue); font-size: .7rem; line-height: 1.2; text-transform: uppercase; letter-spacing: .16em; font-weight:700; }
.kicker { color: rgba(255,255,255,.72); }
.hero h1 { max-width: 760px; margin: 0; font-size: clamp(4rem, 6.4vw, 5.8rem); line-height: .9; letter-spacing: -.06em; text-transform: uppercase; }
.hero-question { margin: 32px 0 10px; font-size: clamp(1.45rem, 2vw, 2rem); line-height: 1.25; }
.hero-summary { max-width: 590px; margin: 0; color: rgba(255,255,255,.78); font-size: 1.06rem; }
.hero-actions, .speaker-actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 32px; }
.button { min-height: 50px; display: inline-flex; align-items: center; justify-content: center; gap: 18px; padding: 0 21px; border: 1px solid transparent; font-size: .72rem; text-transform: uppercase; letter-spacing: .09em; font-weight:700; transition: background .2s, color .2s, border-color .2s; }
.button-light { background: #fff; color: var(--blue); }
.button-light:hover, .button-light:focus-visible { background: var(--cyan); color: #fff; }
.button-clear { color: #fff; border-color: rgba(255,255,255,.45); }
.button-clear:hover, .button-clear:focus-visible { border-color: #fff; background: rgba(255,255,255,.1); }
.button-dark { background: var(--blue); color: #fff; }
.button-dark:hover, .button-dark:focus-visible { background: var(--pink); }
.hero-meta { margin: 25px 0 0; color: rgba(255,255,255,.58); font-size: .72rem; letter-spacing: .06em; }
.cover { width: min(310px, 100%); margin: 0 auto; }
.cover img { width: 100%; height: auto; object-fit: contain; box-shadow: 24px 28px 55px rgba(17,12,60,.34); }
.cover figcaption { margin-top: 16px; color: rgba(255,255,255,.65); text-align: center; font-size: .7rem; text-transform: uppercase; letter-spacing: .12em; }

.answer, .findings, .ranking, .inside, .method, .speaker, .faq, .download { padding: 96px 0; }
.answer { background: var(--white); }
.answer-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: 84px; align-items: start; }
h2 { margin: 0; font-size: clamp(2.5rem, 4.5vw, 4.6rem); line-height: .98; letter-spacing: -.055em; }
.answer-grid > div { padding-top: 4px; color: var(--muted); font-size: 1.04rem; }
.answer-grid > div p:first-child { margin-top: 0; color: var(--ink); }
.key-numbers { margin-top: 60px; display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.key-numbers article { min-height: 150px; display: flex; flex-direction: column; justify-content: center; gap: 9px; padding: 24px; border-right: 1px solid var(--line); }
.key-numbers article:last-child { border-right: 0; }
.key-numbers strong { font-size: clamp(2.7rem, 4.5vw, 4.6rem); line-height: 1; letter-spacing: -.06em; color: var(--blue); }
.key-numbers span { max-width: 210px; color: var(--muted); font-size: .72rem; line-height: 1.4; text-transform: uppercase; letter-spacing: .08em; font-weight: 700; }
.key-numbers .accent strong { color: var(--pink); }

.findings { background: var(--paper); }
.section-heading { max-width: 820px; margin-bottom: 50px; }
.section-heading.narrow { max-width: 760px; }
.section-heading > p:last-child { max-width: 650px; margin: 24px 0 0; color: var(--muted); }
.finding-list { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.finding-list article { min-height: 250px; padding: 30px; background: #fff; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.finding-list span, .measure-grid span { color: var(--cyan); font-size: .68rem; letter-spacing: .12em; font-weight:700; }
.finding-list h3 { margin: 36px 0 12px; font-size: 1.35rem; line-height: 1.15; letter-spacing: -.025em; }
.finding-list p { margin: 0; color: var(--muted); font-size: .9rem; }

.ranking { color: #fff; background: var(--ink); }
.ranking .section-tag, .ranking .rank-score { color: var(--cyan-bright); }
.ranking-top { display: grid; grid-template-columns: 1fr 360px; gap: 60px; align-items: end; margin-bottom: 40px; }
.ranking-top p:last-child { max-width: 610px; color: rgba(255,255,255,.6); }
.search input { width: 100%; height: 52px; padding: 0 16px; color: #fff; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.22); outline: none; }
.search input::placeholder { color: rgba(255,255,255,.48); }
.search input:focus { border-color: var(--cyan); }
.rank-table { border: 1px solid rgba(255,255,255,.16); }
.rank-head, .rank-row { display: grid; grid-template-columns: 80px 1fr 100px 130px; gap: 16px; align-items: center; }
.rank-head { min-height: 46px; padding: 0 22px; color: rgba(255,255,255,.46); background: rgba(255,255,255,.05); font-size: .64rem; text-transform: uppercase; letter-spacing: .1em; font-weight:700; }
.rank-row { min-height: 58px; padding: 8px 22px; border-top: 1px solid rgba(255,255,255,.1); }
.rank-row:hover, .rank-row.highlight { background: rgba(16,174,229,.08); }
.rank-no { color: rgba(255,255,255,.48); font-size: .75rem; }
.rank-country { font-weight:700; }
.rank-score { font-variant-numeric: tabular-nums; font-weight:700; }
.tier { justify-self: start; padding: 4px 9px; border-radius: 20px; color: rgba(255,255,255,.76); background: rgba(255,255,255,.1); font-size: .58rem; text-transform: uppercase; letter-spacing: .06em; font-weight:700; }
.rank-table button { width: 100%; height: 54px; color: #fff; background: transparent; border: 0; border-top: 1px solid rgba(255,255,255,.14); cursor: pointer; font-size: .7rem; text-transform: uppercase; letter-spacing: .08em; font-weight:700; }
.rank-table button:hover, .rank-table button:focus-visible { background: rgba(255,255,255,.05); }
.empty-result { margin: 0; padding: 30px 22px; color: rgba(255,255,255,.6); }

.inside { background: #fff; }
.measure-grid { margin-top: 50px; display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.measure-grid article { min-height: 195px; padding: 25px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.measure-grid h3 { margin: 34px 0 8px; font-size: 1.1rem; }
.measure-grid p { margin: 0; color: var(--muted); font-size: .86rem; }

.method { background: var(--paper); }
.method-grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: 90px; align-items: start; }
.checks { border-top: 1px solid var(--line); }
.checks article { display: grid; grid-template-columns: 190px 1fr; gap: 24px; padding: 23px 0; border-bottom: 1px solid var(--line); }
.checks p { margin: 0; color: var(--muted); }

.speaker { color: #fff; background: linear-gradient(135deg, #bc249f, #262176); }
.section-tag.light { color: rgba(255,255,255,.7); }
.speaker-head { display: grid; grid-template-columns: 1.25fr .75fr; gap: 90px; align-items: end; }
.speaker-head h2 { max-width: 760px; }
.speaker-head > p { margin: 0 0 5px; color: rgba(255,255,255,.75); font-size: 1.05rem; }
.session-grid { margin-top: 52px; display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid rgba(255,255,255,.24); border-left: 1px solid rgba(255,255,255,.24); }
.session-grid article { min-height: 240px; padding: 28px; border-right: 1px solid rgba(255,255,255,.24); border-bottom: 1px solid rgba(255,255,255,.24); background: rgba(255,255,255,.06); }
.session-grid span { color: var(--cyan-bright); font-size: .7rem; letter-spacing: .12em; font-weight:700; }
.session-grid h3 { margin: 46px 0 12px; font-size: 1.45rem; line-height: 1.15; }
.session-grid p { margin: 0; color: rgba(255,255,255,.7); }
.speaker-cta { margin-top: 28px; padding: 28px 30px; display: flex; align-items: center; justify-content: space-between; gap: 40px; color: var(--ink); background: #fff; }
.speaker-cta strong { display: block; font-size: 1.1rem; }
.speaker-cta p { max-width: 650px; margin: 7px 0 0; color: var(--muted); }
.speaker-cta .speaker-actions { margin: 0; flex-wrap: nowrap; align-items: center; }
.speaker-link { flex-shrink: 0; color: var(--blue); font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; font-weight:700; }
.speaker-link:hover, .speaker-link:focus-visible { color: var(--pink); }
.trusted { margin-top: 70px; padding-top: 28px; border-top: 1px solid rgba(255,255,255,.18); }
.trusted > span { display: block; margin-bottom: 20px; color: rgba(255,255,255,.55); font-size: .66rem; text-transform: uppercase; letter-spacing: .12em; }
.trusted > div { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 16px 28px; }
.trusted b { color: rgba(255,255,255,.84); }

.faq { background: #fff; }
.faq-grid { display: grid; grid-template-columns: .7fr 1.3fr; gap: 90px; }
.faq details { border-top: 1px solid var(--line); }
.faq details:last-child { border-bottom: 1px solid var(--line); }
.faq summary { min-height: 72px; display: flex; align-items: center; justify-content: space-between; gap: 30px; list-style: none; cursor: pointer; font-weight:700; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary span { font-size: 1.4rem; font-weight: 400; transition: transform .2s; }
.faq details[open] summary span { transform: rotate(45deg); }
.faq details p { max-width: 650px; margin: -4px 50px 22px 0; color: var(--muted); }

.download { text-align: center; background: var(--paper); }
.download h2 { font-size: clamp(2.5rem, 4vw, 4rem); }
.download p { margin: 14px 0 28px; color: var(--muted); }

footer { min-height: 110px; display: flex; align-items: center; gap: 45px; padding: 24px max(24px, calc((100vw - 1320px) / 2)); color: rgba(255,255,255,.58); background: #111120; }
footer p { font-size: .64rem; text-transform: uppercase; letter-spacing: .1em; }
footer > div { margin-left: auto; display: flex; gap: 28px; font-size: .68rem; }
footer a:hover, footer a:focus-visible { color: #fff; }

@media (max-width: 900px) {
  .header nav { display: none; }
  .header-action { margin-left: auto; }
  .hero-inner { min-height: 650px; grid-template-columns: 1fr .55fr; gap: 40px; }
  .answer-grid, .method-grid, .speaker-head, .faq-grid { gap: 50px; }
  .speaker-cta { align-items: flex-start; flex-direction: column; }
  .measure-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 680px) {
  :root { --wrap: calc(100vw - 32px); }
  .header { height: 64px; padding: 0 16px; }
  .logo span { display: none; }
  .header-action { padding: 8px 10px; font-size: .62rem; }
  .hero-inner { min-height: auto; padding: 70px 0; grid-template-columns: 1fr; gap: 50px; }
  .hero h1 { font-size: clamp(3rem, 12vw, 3.8rem); }
  .cover { width: min(270px, 78vw); }
  .answer, .findings, .ranking, .inside, .method, .speaker, .faq, .download { padding: 72px 0; }
  .answer-grid, .ranking-top, .method-grid, .speaker-head, .faq-grid { grid-template-columns: 1fr; gap: 30px; }
  h2 { font-size: 2.65rem; }
  .key-numbers { grid-template-columns: 1fr 1fr; }
  .key-numbers article:nth-child(2) { border-right: 0; }
  .key-numbers article:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .finding-list, .measure-grid { grid-template-columns: 1fr; }
  .finding-list article { min-height: auto; }
  .rank-head, .rank-row { grid-template-columns: 52px 1fr 66px; gap: 10px; padding-left: 14px; padding-right: 14px; }
  .rank-head span:last-child, .rank-row .tier { display: none; }
  .checks article { grid-template-columns: 1fr; gap: 6px; }
  .session-grid { grid-template-columns: 1fr; }
  .session-grid article { min-height: auto; }
  .session-grid h3 { margin-top: 28px; }
  .speaker-cta { padding: 24px; }
  .speaker-cta .speaker-actions { width: 100%; align-items: stretch; flex-direction: column; }
  .speaker-cta .button { width: 100%; }
  .speaker-link { padding: 8px 0; text-align: center; }
  .trusted > div { justify-content: flex-start; }
  footer { flex-wrap: wrap; gap: 10px 25px; padding: 25px 18px; }
  footer > div { width: 100%; margin: 0; justify-content: space-between; }
}

@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } * { transition: none !important; } }

/* email gate */

:root{--line:#dfe2ea}
/* ===== Email gate modal ===== */
.gate{position:fixed;inset:0;background:rgba(15,10,35,.55);backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;padding:20px;z-index:1000}
.gate.on{display:flex}
.gate .sheet{background:#fff;border-radius:20px;max-width:440px;width:100%;padding:clamp(24px,4vw,36px);box-shadow:0 40px 90px rgba(10,6,40,.5);position:relative;text-align:center}
.gate .x2{position:absolute;top:14px;right:16px;background:none;border:0;font-size:1.3rem;color:#626777;cursor:pointer}
.gate .ic{width:52px;height:52px;border-radius:16px;background:var(--b-accent-tint,#fdeef7);display:flex;align-items:center;justify-content:center;margin:0 auto 16px}
.gate .ic svg{width:26px;height:26px;fill:var(--pink)}
.gate h3{font-size:1.3rem;font-weight:700;text-transform:uppercase;letter-spacing:.01em;color:var(--ink)}
.gate p{color:#626777;margin:10px 0 18px;font-size:.9rem}
.gate .rn{color:var(--pink);font-weight:700}
.gate input{width:100%;padding:.9em 1.1em;border:1.5px solid var(--line);border-radius:16px;font:inherit;font-size:1rem;margin-bottom:12px}
.gate input:focus{outline:0;border-color:var(--pink)}
.gate .fine{font-size:.7rem;color:#626777;margin-top:14px}
.gate .gbtn{width:100%;justify-content:center;display:inline-flex;align-items:center;gap:6px;background:var(--pink);color:#fff;font-weight:700;font-size:.82rem;text-transform:uppercase;letter-spacing:.04em;border:0;border-radius:999px;padding:.9em 1.2em;cursor:pointer}
.gate .gbtn.ink{background:var(--ink)}
.gate .doneic{background:#e7f7ee}
.gate .doneic svg{fill:#1a9d5a}
/* email gate v2: option 05 form + S5 success */
.gate .sheet{max-width:500px;max-height:calc(100vh - 40px);overflow:auto}
.gate form,.gate #g311-done{text-align:left}
.gate form h3,.gate form>p,.gate #g311-done h3,.gate #g311-done>p{text-align:center}
.gate .g-row{display:flex;gap:12px}
.gate .g-row .g-f{flex:1 1 0;min-width:0}
.gate .g-f{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.gate .g-f label{font-size:.8rem;font-weight:700;color:var(--ink)}
.gate .g-f input{margin-bottom:0}
.gate input.bad{border-color:var(--pink);background:var(--b-accent-tint,#fdeef7)}
.gate .g-choice{border:0;padding:0;margin:4px 0 14px;display:flex;flex-direction:column;gap:8px}
.gate .g-choice legend{font-size:.8rem;font-weight:700;color:var(--ink);margin-bottom:8px;padding:0}
.gate .g-opt{display:flex;gap:12px;align-items:center;padding:11px 14px;border:2px solid var(--line);border-radius:16px;cursor:pointer;background:#fff}
.gate .g-opt:has(input:checked){border-color:var(--pink);background:var(--b-accent-tint,#fdeef7)}
.gate .g-opt input{width:18px;height:18px;margin:0;padding:0;accent-color:var(--pink);flex-shrink:0}
.gate .g-opt span{display:flex;flex-direction:column;gap:1px}
.gate .g-opt b{font-size:.88rem;color:var(--ink)}
.gate .g-opt small{font-size:.75rem;color:#626777}
.gate .g-err{color:#b01d88;font-weight:700;font-size:.82rem;margin:0 0 12px;text-align:center}
.gate #g311-open{text-decoration:none}
.gate .gbtn.gline{background:#fff;color:var(--ink);border:2px solid var(--line);margin-top:10px;text-decoration:none}
.gate .gbtn.gline:hover{border-color:var(--pink);background:var(--b-accent-tint,#fdeef7)}
.gate .gbtn[hidden]{display:none}
.gate .g-next{display:flex;flex-direction:column;gap:10px;margin-top:18px}
.gate .g-next-h{font-size:.8rem;font-weight:700;color:var(--ink)}
.gate .g-mini{display:flex;gap:12px;align-items:center;padding:10px;border:1.5px solid var(--line);border-radius:16px;text-decoration:none;color:var(--ink);transition:border-color .2s,background .2s}
.gate .g-mini:hover{border-color:var(--pink);background:var(--b-accent-tint,#fdeef7)}
.gate .g-thumb{width:48px;height:68px;flex-shrink:0;border-radius:6px;overflow:hidden;background:linear-gradient(150deg,var(--b-magenta,#96069D),var(--b-accent,#D92A79));display:block}
.gate .g-thumb.land{width:84px;height:59px}
.gate .g-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.gate .g-mt{font-size:.88rem;font-weight:700;line-height:1.25}
@media(max-width:480px){.gate .g-row{flex-direction:column;gap:0}}

/* report sub-navigation */
/* universal layout rules */
.hero-inner>*{min-width:0}
.hero.h1-compact h1{font-size:clamp(2.6rem,4.6vw,4.4rem)!important;max-width:12ch}
.measure-grid.c5,.measure-grid.c10{grid-template-columns:repeat(5,1fr)}
.measure-grid.c3,.measure-grid.c6,.measure-grid.c9{grid-template-columns:repeat(3,1fr)}
@media (max-width:1100px){.measure-grid.c5,.measure-grid.c10,.measure-grid.c3,.measure-grid.c6,.measure-grid.c9{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.measure-grid[class*=" c"]{grid-template-columns:1fr}.hero h1{font-size:clamp(28px,8.6vw,52px)!important;overflow-wrap:break-word}.key-numbers article{min-width:0;padding:18px 12px}}
/* STAT RULE: a stat never wraps onto two lines; report.js shrinks the whole row evenly to fit */
.key-numbers strong{white-space:nowrap;display:block}

.key-numbers article{justify-content:flex-start!important}
/* report sub-navigation stays attached directly under the site header while scrolling */

/* report navigation strip: design 08, lilac pills, larger (locked 5 Oct 2026) */

/* in-page navigation strip: now the universal component in global.css (311 UNIVERSAL COMPONENT) */
