/* ═══════════════════════════════════════════════════════════════════════════
   Impression — « document sobre » (maquette A de mockups/share-print/, retenue le
   2026-09-19), dans la présentation des documents officiels coréens :
   organisme émetteur sur filet épais, cartouche à cases, titre encadré, plan en
   □ / ○ / -, tableaux à filets pleins, mention « 끝. », page « - 1 - ».

   Chargée en media="print" : ne coûte rien à l'écran. Avant cette feuille, une fiche
   secteur sortait en 23 pages presque blanches : à la largeur d'une feuille A4 le
   site passe en version mobile (barre d'onglets et sommaire répétés sur chaque
   page) et les blocs révélés au défilement restaient à opacity: 0.

   La feuille d'impression propre au simulateur de /guide/ reste dans site.css.
   ═══════════════════════════════════════════════════════════════════════════ */

@page {
    size: A4;
    margin: 20mm 20mm 22mm;
    @bottom-center { content: "- " counter(page) " -"; font: 9pt "Noto Sans KR", "Malgun Gothic", sans-serif; color: #000; }
}

/* ── 1. Ce qui n'appartient pas au document ─────────────────────────────── */
.topbar, .site-header, .site-footer, .skip-link, .flash-stack,
.mn-tabs, .mn-cta, .mn-all, .pn-bar, .pn-veil, .pn-sheet, .pn-up,
.lx-subnav, .fp-subnav, .nd-nav, .gc-toc-box,
.sh-btn, .sh-sheet, .cta-band, .dc-band, .ft-ribbon, .srcpop, .hsc-hint,
.breadcrumb, .detail-aside, .sx-hero-cta, .hero-actions, .scroll-cue, .btn, .sx-doc-teaser, .ib-wm,
[class*="logo"], [class*="-thumb"], [class*="-avatar"],
form, button, video, audio, iframe, canvas, dialog,
[data-mn-cta], [hidden] { display: none !important; }

/* Photos et pictogrammes : un document sobre n'en porte pas. Les cartes et schémas
   vectoriels du contenu (carte des zones, chaîne de valeur) restent. */
img, picture, svg.icon, svg.ext, .icon, .ib-ico, [class*="-photo"], [class*="-media"], [class*="-cover"],
.news-hero-img, .sx-hero-bg, .hero-bg { display: none !important; }
.pr-only img { display: inline-block !important; }

/* ── 2. Tout remettre à plat, noir sur blanc ────────────────────────────── */
*, *::before, *::after {
    color: #000 !important; background: transparent !important; box-shadow: none !important; text-shadow: none !important;
    animation: none !important; transition: none !important; filter: none !important; backdrop-filter: none !important;
    -webkit-text-fill-color: #000 !important;
}
/* Blocs révélés au défilement : visibles d'office. */
.fade-in, .js .fade-in, .vc-node, [class*="reveal"] { opacity: 1 !important; transform: none !important; }
.detail-aside, .pt-card, .sx-eco-media, .em-bio-head, .lv-hero-top { position: static !important; }

html, body { background: #fff !important; display: block !important; height: auto !important; min-height: 0 !important; }
body { font: 10.5pt/1.7 "Noto Sans KR", "Malgun Gothic", "Apple SD Gothic Neo", sans-serif; word-break: keep-all; overflow-wrap: anywhere; }
.pr-only { display: block !important; }
.container, .site-main, main, section, article, .detail-layout, .detail-body {
    width: auto !important; max-width: none !important; min-height: 0 !important; height: auto !important;
    margin-inline: 0 !important; padding-inline: 0 !important; }
section, [class*="-sec"], [class*="-hero"], .page-hero { padding-block: 0 !important; margin-block: 0 0 5mm !important; min-height: 0 !important; height: auto !important; border: 0 !important; }
[class*="-hero"] *, .page-hero * { position: static !important; }
/* Les héros sont des grilles à colonnes étroites : le titre encadré prend toute la largeur. */
[class*="-hero"], [class*="-hero"] > div, [class*="-hero"] .container, [class*="-hero"] .container > div, .page-hero .container {
    display: block !important; width: auto !important; max-width: none !important; }
/* Un bloc à débordement masqué ou à confinement ne se coupe pas entre deux pages : il saute
   en entier à la page suivante et laisse un blanc. */
main, main * { overflow: visible !important; contain: none !important; content-visibility: visible !important; }

/* ── 3. En-tête : organisme émetteur et cartouche ───────────────────────── */
.pr-org { display: flex; align-items: center; gap: 3mm; border-bottom: 2.2pt solid #000 !important; padding-bottom: 2.5mm; margin-bottom: 3mm; }
.pr-org img { width: 9mm; height: 6mm; }
.pr-org strong { font-size: 13pt; font-weight: 900; letter-spacing: -.01em; }
.pr-org span { margin-left: auto; font-size: 9pt; }
.pr-meta { width: 100%; border-collapse: collapse; margin: 0 0 7mm; font-size: 9pt; min-width: 0 !important; }
.pr-meta th, .pr-meta td { border: .6pt solid #000 !important; padding: 1.4mm 2.5mm; text-align: left; vertical-align: middle; }
.pr-meta th { width: 20mm; text-align: center; font-weight: 700; background: #ececec !important; print-color-adjust: exact; -webkit-print-color-adjust: exact; white-space: nowrap; }

/* ── 4. Titre encadré, plan en □ / ○ / - ────────────────────────────────── */
h1 { font-size: 18pt !important; line-height: 1.35 !important; font-weight: 900 !important; letter-spacing: -.02em !important; text-align: center;
     border-top: 2.2pt solid #000 !important; border-bottom: .8pt solid #000 !important; padding: 4mm 3mm !important; margin: 0 0 5mm !important; max-width: none !important; }
.lead, .page-hero .lead, [class*="-hero"] p { font-weight: 400 !important; font-size: 10.5pt !important; max-width: none !important; margin: 0 0 3mm !important; }
.eyebrow, [class*="eyebrow"], [class*="-kicker"] { font-size: 8.5pt !important; letter-spacing: .08em !important; margin: 0 0 1mm !important; font-weight: 700 !important; }
h2 { font-size: 13pt !important; line-height: 1.4 !important; font-weight: 800 !important; margin: 7mm 0 2.5mm !important; padding: 0 0 1.2mm !important;
     border-bottom: .6pt solid #000 !important; text-align: left !important; max-width: none !important; }
h2::before { content: "□ " !important; font-weight: 400; position: static !important; display: inline !important; width: auto !important; height: auto !important; }
h3 { font-size: 11.5pt !important; line-height: 1.45 !important; font-weight: 700 !important; margin: 4.5mm 0 1.5mm !important; text-align: left !important; }
h3::before { content: "○ " !important; font-weight: 400; position: static !important; display: inline !important; width: auto !important; height: auto !important; }
h4, h5 { font-size: 10.5pt !important; font-weight: 700 !important; margin: 3mm 0 1mm !important; }
h1, h2, h3, h4, h5 { break-after: avoid; break-inside: avoid; }
.pr-only h2::before, .pr-only h3::before { content: none !important; }
p { margin: 0 0 2.5mm !important; max-width: none !important; orphans: 3; widows: 3; }
ul, ol { margin: 0 0 3mm !important; padding-left: 5mm !important; }
main ul { list-style: none !important; }
main ul > li { position: relative; }
main ul > li::before { content: "-" !important; position: absolute !important; left: -4mm; top: 0; width: auto !important; height: auto !important; display: block !important; border: 0 !important; }
li { margin-bottom: 1mm !important; break-inside: avoid; }
a { text-decoration: none !important; }
main .source-note a, main .srcn a { word-break: break-all; }
/* Les sources gardent leur adresse : c'est ce qu'un lecteur papier peut vérifier. */
.source-note a[href^="http"]::after { content: " <" attr(href) ">"; font-size: 8pt; word-break: break-all; }

/* ── 5. Chiffres, cartes, grilles ───────────────────────────────────────── */
[class*="-grid"], [class*="-cards"], [class*="-figs"], [class*="-stats"], [class*="-list"] { gap: 2.5mm !important; }
[class*="-card"], [class*="-box"], blockquote { border-radius: 0 !important; }
[class*="-fig"], [class*="-stat"], figure, blockquote, tr, .source-note { break-inside: avoid; }
/* « -cards » est un conteneur de cartes, pas une carte : ni cadre, ni interdiction de coupure. */
[class*="-card"]:not([class*="-cards"]), .card, [class*="-box"], blockquote { border: .6pt solid #000 !important; padding: 2.5mm 3mm !important; margin: 0 0 2.5mm !important; }
[class*="-card"] [class*="-card"], [class*="-box"] [class*="-card"] { border: 0 !important; padding: 0 !important; }

/* ── 6. Tableaux à filets pleins ────────────────────────────────────────── */
main table { width: 100% !important; min-width: 0 !important; border-collapse: collapse !important; font-size: 9.5pt; margin: 2mm 0 4mm !important; }
main th, main td { border: .6pt solid #000 !important; padding: 1.5mm 2.2mm !important; text-align: left; vertical-align: top; }
main th { background: #ececec !important; text-align: center; font-weight: 700; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
main thead { display: table-header-group; }
[class*="-scroll"], [class*="scroll-x"], .table-wrap { overflow: visible !important; }

/* ── 7. Schémas vectoriels conservés ────────────────────────────────────── */
main svg:not(.icon):not(.ext) { max-width: 100% !important; max-height: 95mm !important; height: auto; break-inside: avoid; }

/* ── 8. Pied : « 끝. » et cartouche de l'émetteur ───────────────────────── */
.pr-foot { margin-top: 8mm; break-inside: avoid; }
.pr-end { text-align: right; font-weight: 700; margin: 0 0 5mm !important; }
.pr-issuer { border: .6pt solid #000 !important; border-top: 2.2pt solid #000 !important; padding: 2.5mm 3mm; display: flex; flex-wrap: wrap; gap: 1mm 5mm; font-size: 9pt; }
.pr-issuer strong { font-weight: 900; }
.pr-note { font-size: 8.5pt; margin: 2mm 0 0 !important; }

/* ── 9. Blocs qui chevauchent le héros à l'écran ────────────────────────── */
.sx-figures, .sector-strip, .gd-heads, .gc-facts, .cta-contacts, .sector-card .sector-card-badge { margin-top: 3mm !important; }

/* ── 10. Outils interactifs ─────────────────────────────────────────────── */
/* Un simulateur n'a pas de sens sur papier : le document renvoie au site (cartouche de pied). */
.bm-sim, [data-bench-sim] { display: none !important; }
/* Décors animés : carte et tableau des départs du héros d'accueil, carte de la bannière logistique. */
.gw-map, .gw-board, .gw-tint, .gw-acts, .lg-banner svg, .lg-banner-actions, .arrow-link, .sector-card-more { display: none !important; }
.lg-banner * { position: static !important; }
/* En-têtes de colonnes cliquables du tableau des médailles : le libellé, sans le bouton. */
main th button { display: inline !important; border: 0 !important; padding: 0 !important; font: inherit !important; font-size: 7.5pt !important; }
main th .sr-only { position: static !important; width: auto !important; height: auto !important; margin: 0 !important; clip: auto !important; clip-path: none !important; white-space: normal !important; font-size: 7.5pt; }

/* ── 11. Coupures de page ───────────────────────────────────────────────── */
/* Seules les cartes feuilles : une carte qui en contient d'autres est un grand bloc et doit pouvoir se couper. */
/* Une carte longue (listes, tableau, plusieurs paragraphes) doit pouvoir se couper, sinon elle
   saute en entier à la page suivante et laisse une page presque vide. */
[class*="-card"]:not([class*="-cards"]):not(:has([class*="-card"], .card, h2, ul, ol, table, p ~ p)),
.card:not(:has(ul, ol, table, p ~ p)), [class*="-tile"]:not([class*="-tile-"]):not([class*="-tiles"]), [class*="-row"]:not(:has(h2, h3)) { break-inside: avoid; }
main * { box-sizing: border-box !important; max-width: 100% !important; }
/* Un cadre photo vidé de son image garde sa hauteur (aspect-ratio, min-height) : on la lui retire. */
main *:not(svg):not(svg *) { aspect-ratio: auto !important; min-height: 0 !important; }
.gw, .gw * { min-height: 0 !important; height: auto !important; position: static !important; }

/* Les filets d'un tableau à bordures fusionnées débordent d'un demi-filet : sans cette marge, le
   bord droit des cartouches est rogné par la limite de la page. */
html, body { width: auto !important; margin: 0 !important; }
body { padding: 0 1pt 0 .5pt !important; }

/* ── 12. Constats de l'audit page par page (tools/audit-print/audit.py) ─── */
/* Navigation entre fiches, boutons de liens, flèches « ouvrir » : sans objet sur papier. */
.gc-nav, .gc-actions, .link-row, .gi-go, .pn-next, [class*="-pager"], [class*="pagination"] { display: none !important; }
/* Cartes d'institution : le logo masqué laissait le texte dans une colonne d'un mot de large. */
.gi-card, .gi-body { display: block !important; }
/* Adresses des sources : elles se coupent n'importe où plutôt que de sortir de la page. */
main .source-note li, main .srcn li, main .blk-source, main .blk-source *, main .source-note a, main .srcn a {
    white-space: normal !important; overflow-wrap: anywhere !important; word-break: break-all; }
/* Tuiles (accords, atouts) : le pictogramme masqué laissait une grande case vide. */
[class*="-tile"]:not([class*="-tile-"]):not([class*="-tiles"]) { display: block !important; height: auto !important; border: .6pt solid #000 !important; border-radius: 0 !important; padding: 2.5mm 3mm !important; }
[class*="-tile-ico"] { display: none !important; }
/* La liste des sources est une grille : ses cases refusent de rétrécir sous la largeur d'une adresse. */
main .srcn ol, main .srcn ul { display: block !important; }
main .srcn li, main .srcn li * { min-width: 0 !important; white-space: normal !important; overflow-wrap: anywhere !important; }
/* Carte à deux colonnes (photo + texte) : une rangée de grille ne se coupe pas proprement entre
   deux pages ; en bloc, la carte commence là où il reste de la place. */
.fp-visits, .fp-visit-card, .fp-visit-body, [class*="-card"]:has(> [class*="-media"]), [class*="-card"]:has(> [class*="-photo"]) { display: block !important; }
/* Marges de fin de page de l'écran (dégagement du pied de page, colonnes de mise en page) : elles
   suffisaient à envoyer « 끝. » et le cartouche seuls sur une page de plus. */
main, .site-main, .detail-layout, .detail-body, main > *:last-child { padding-block: 0 !important; margin-block: 0 !important; }
.detail-layout { display: block !important; }
/* Légende posée sur une photo : la photo est masquée, la légende revient dans le fil du texte. */
main figure, main figure * { position: static !important; }
main figcaption { padding: 0 !important; margin: 0 0 2mm !important; }
/* Textes tronqués à N lignes et cartes à hauteur fixe : sur papier tout le texte s'affiche, sans
   chevaucher le bloc suivant. */
main *:not(svg):not(svg *) { -webkit-line-clamp: unset !important; line-clamp: unset !important; max-height: none !important; text-overflow: clip !important; }
/* Formulaires masqués : leur carte et leurs filtres partent avec eux. */
.ct-form-card, .dc-filter, .dc-tags, [class*="-filter"], [class*="-toolbar"] { display: none !important; }
/* Fiches de documents : en grille à rangées égales, une rangée entière sautait à la page suivante. */
.dc-list, .dc-row { display: block !important; }
.dc { display: block !important; width: auto !important; }
/* Une image dont la classe contient « -hero » échappait au masquage (la règle des héros, plus
   spécifique, la remettait en bloc) : photo pleine page en tête de /living/. */
img:not(.pr-keep), picture:not(.pr-keep), [class*="-hero-img"], [class*="-hero-bg"], [class*="-poster"] { display: none !important; }
.pr-only img:not(.pr-keep) { display: inline-block !important; }
/* /living/ et /logistics/ : film, carte d'embarquement, cartes animées et rails de cartes sont des
   objets d'écran ; le document garde les chiffres, les textes et les sources. */
.lv-cine, .bpA, .bpB, .lv-dots, .lv-rail-btn, .lv-hero-logo, .lv-sec svg, .lv-hero svg, .lg-hero svg, .lg-hero [class*="legend"], .rm-ui, [data-reach-ui] { display: none !important; }
[class*="-rail"], [class*="-track"] { display: block !important; transform: none !important; }
[class*="-rail"] > *, [class*="-track"] > * { width: auto !important; margin: 0 0 2.5mm !important; }
.lg-hero, .lg-hero * { position: static !important; }
/* Mosaïques « bento » : rangées à hauteur fixe et chiffres posés en absolu se chevauchaient. */
[class*="-bento"], [class*="-tiles"] { display: block !important; }
[class*="-tile"] *, [class*="-tile-num"] { position: static !important; }
[class*="-tile-num"] { font-size: 16pt !important; line-height: 1.2 !important; display: block; }
[class*="-tabs"] { display: none !important; }
/* Bandeaux défilants : une ligne sans retour dépasse la page, et Chrome rétrécit alors tout le document. */
.nd-ticker, [class*="-ticker"], [class*="-marquee"] { display: none !important; }
/* Textes réservés aux lecteurs d'écran : remis dans le flux par les règles ci-dessus, ils reprenaient
   leur largeur réelle et faisaient déborder la page. (Exception voulue : les en-têtes de tableau.) */
.sr-only, .visually-hidden, .wr-help, .wr-form { display: none !important; }
main th .sr-only { display: inline !important; }
/* Tableau des médailles : douze colonnes sur 170 mm. */
.bm-table { table-layout: fixed !important; font-size: 8pt !important; }
.bm-table th, .bm-table td { padding: 1mm .8mm !important; word-break: keep-all; overflow-wrap: anywhere; }
.bm-table .bm-cname, .bm-table .bm-c { width: 26mm; }
/* Rails de cartes : marges de défilement et décalages d'écran remis à zéro. */
[class*="-rail"], [class*="-track"] { padding: 0 !important; margin-inline: 0 !important; left: 0 !important; }
[class*="-rail"] > *, [class*="-track"] > * { max-width: 100% !important; flex: none !important; }
[class*="-rail"]::before, [class*="-rail"]::after { display: none !important; content: none !important; }
[class*="-rail"] > * { width: auto !important; min-width: 0 !important; transform: none !important; left: auto !important; margin-left: 0 !important; translate: none !important; }
/* Fiche de document en bandeau : ses colonnes à largeur minimale dépassaient la page. */
.dc, .dc > *, .dc-body, .dc-foot { display: block !important; width: auto !important; }
.dc * { min-width: 0 !important; white-space: normal !important; }
.dc::before, .dc::after, .dc *::before, .dc *::after { display: none !important; content: none !important; }
/* Carte régionale interactive (tnmap.js) : remise dans le flux, elle s'étalait en aplat sombre sur
   plusieurs pages. Les sites qu'elle situe sont déjà listés en toutes lettres à côté. */
.tn-map, [data-tnmap], .lg-zoom { display: none !important; }
/* Cartes d'actualité : la vignette masquée gardait sa place (rangées de grille à hauteur égale) —
   deux cartes par page. En liste simple, une douzaine d'articles tiennent sur une feuille. */
.news-grid, [class*="news-grid"], .news-list { display: block !important; }
.news-card { display: block !important; height: auto !important; border: 0 !important; border-bottom: .6pt solid #000 !important; padding: 2mm 0 !important; margin: 0 !important; break-inside: avoid; }
.news-card .thumb, .nd-fig-on-photo { display: none !important; }
.news-card .body { padding: 0 !important; }

/* ── 13. Aucun aplat sombre (demande du 19/09/2026 : « ça va finir toute l'encre ») ─────────── */
/* Les cartes sombres (accueil, logistique, régions) sont masquées plus haut. Garde-fou pour tout
   schéma vectoriel qui resterait : ses grands fonds passent en blanc, ses tracés en noir fin. */
main svg:not(.icon):not(.ext) rect, main svg:not(.icon):not(.ext) [class*="bg"], main svg:not(.icon):not(.ext) [class*="sea"],
main svg:not(.icon):not(.ext) [class*="land"] { fill: #fff !important; stroke: #000 !important; stroke-width: .4pt !important; }
