/* MainTable — présentation commune. Chargée après les styles fonctionnels. */
body {
  background: radial-gradient(ellipse at 85% 0%, var(--mt-accent-soft), transparent 35rem), var(--mt-bg);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3 { text-wrap: balance; }
h1 { font-weight: 800; letter-spacing: -.045em; line-height: 1.12; }
h2 { letter-spacing: -.025em; }
p { text-wrap: pretty; }
main a:not(.btn):not(.library-card-visual) { text-underline-offset: .25em; }
main { scroll-margin-top: 7rem; }
.btn {
  --bs-btn-border-radius: var(--mt-radius-control);
  --bs-btn-font-weight: 700;
  --bs-btn-padding-y: .75rem;
  --bs-btn-padding-x: 1.15rem;
  font-size: .88rem;
  line-height: 1.5;
  transition: background-color .18s, border-color .18s, color .18s, transform .18s;
}
.btn-primary { box-shadow: none; }
.btn-outline-light { --bs-btn-bg: transparent; }
.btn:not(:disabled):hover { transform: translateY(-1px); }
.btn-lg { --bs-btn-padding-y: .85rem; --bs-btn-padding-x: 1.3rem; font-size: .95rem; }
.form-control, .form-select {
  min-height: 3.05rem;
  border-radius: var(--mt-radius-control);
  background-color: var(--mt-bg-secondary);
  font-size: .9rem;
  padding-block: .7rem;
}
.form-control:focus, .form-select:focus { background-color: var(--mt-bg-secondary); box-shadow: 0 0 0 3px var(--mt-accent-soft); }
.form-label, .library-filters label, .library-colors legend { font-size: .78rem; font-weight: 700; letter-spacing: .025em; }
.form-control::placeholder { color: var(--mt-text-secondary); opacity: .8; }
.eyebrow, .register-eyebrow, .register-form-eyebrow { color: var(--mt-primary); font-size: .68rem; font-weight: 800; letter-spacing: .16em; }
.eyebrow::before { width: 1.35rem; height: 2px; border-radius: 0; background: var(--mt-primary); box-shadow: none; }
.site-navbar { --bs-navbar-padding-y: .85rem; background: color-mix(in srgb, var(--mt-bg) 94%, transparent); border-color: var(--mt-line-soft); backdrop-filter: blur(20px); }
.site-navbar .brand-mark { width: 2.75rem; height: 2.75rem; }
.site-navbar .brand-name { font-size: 1.3rem; letter-spacing: -.045em; }
.site-navbar .brand-tagline { font-size: .58rem; letter-spacing: .075em; }
.site-navbar .nav-link { position: relative; border-radius: 0; font-size: .8rem; background: transparent; }
.site-navbar .nav-link:hover, .site-navbar .nav-link:focus, .site-navbar .nav-link.active { background: transparent; }
.site-navbar .nav-link.active::after { content: ''; position: absolute; height: 2px; left: .55rem; right: .55rem; bottom: .15rem; background: var(--mt-primary); border-radius: 2px; }
.site-navbar .header-actions { margin-left: .5rem; }
.site-navbar .header-actions .btn { padding: .6rem .8rem; font-size: .76rem; }
.language-picker-toggle, .account-menu-toggle { background: transparent; border-color: var(--mt-line-soft); border-radius: var(--mt-radius-control); }
.dropdown-menu { border-color: var(--mt-line-soft); border-radius: .9rem; box-shadow: var(--mt-shadow-art); }
.site-footer { margin-top: 2rem; background: transparent; border-top: 1px solid var(--mt-border); }
.site-footer .row { padding-top: 1rem; }
.site-footer h2 { font-size: .7rem; letter-spacing: .12em; text-transform: uppercase; margin-bottom: 1.1rem; color: var(--mt-text-secondary); }
.site-footer .footer-link { color: var(--mt-text); font-size: .85rem; }
.site-footer .footer-link:hover { color: var(--mt-primary); }
.site-footer .footer-signature { gap: .8rem; }
.site-footer .footer-signature img { width: 2.5rem; height: 2.5rem; object-fit: contain; }
.site-footer .footer-description { max-width: 25rem; line-height: 1.85; }
.site-footer .footer-bottom { border-top-color: var(--mt-line-soft) !important; font-size: .72rem; }
/* Un même en-tête de contenu, sans panneau autour du titre. */
.page-heading { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 2rem; padding-block: 1rem 2.25rem; margin-bottom: 1.5rem; border-bottom: 1px solid var(--mt-border); }
.page-heading-copy { min-width: 0; max-width: 55rem; }
.page-heading h1, .player-header h1, .legal-content h1 { margin: .85rem 0 1rem; font-size: clamp(2rem, 4.1vw, 3.5rem); }
.page-heading p { max-width: 44rem; margin-bottom: 0; font-size: 1rem; color: var(--mt-text-secondary); }
.page-heading-symbol { position: relative; display: grid; place-items: center; flex: none; width: 5rem; height: 5rem; border-radius: 50%; color: var(--mt-primary); background: var(--mt-accent-soft); font-size: 2rem; }
.page-heading-symbol::after { content: ''; position: absolute; inset: -.8rem; border: 1px solid var(--mt-line-soft); border-radius: 50%; }
.page-heading-meta { display: flex; gap: .65rem; flex-wrap: wrap; margin-top: 1.25rem; }
.page-heading-meta span { font-size: .73rem; color: var(--mt-text-secondary); }
.page-heading-meta span + span::before { content: '/'; margin-right: .65rem; color: var(--mt-text-disabled); }
.card-library, .site-page-main { padding-top: clamp(7.5rem, 10vw, 9rem); padding-bottom: var(--mt-space-section); }
/* Accueil : conserver la maquette, ouvrir ses blocs. */
.hero { padding: 9.5rem 0 4.5rem; }
.hero h1 { max-width: 14ch; font-size: clamp(3rem, 5vw, 4.65rem); line-height: 1.05; letter-spacing: -.06em; }
.hero-copy { font-size: 1rem; line-height: 1.85; }
.hero-note { font-size: .74rem; }
.game-window { border-radius: var(--mt-radius-surface); border-color: var(--mt-line-soft); background: var(--mt-bg-secondary); box-shadow: var(--mt-shadow-art); padding: 1.1rem; }
.table-stage { border: 0; border-radius: .8rem; }
.quick-panel { margin-top: 2.5rem; }
.action-card { padding: 1.4rem 0; border: 0; border-top: 1px solid var(--mt-border); border-radius: 0; background: transparent; }
.action-card:hover { transform: translateY(-2px); border-color: var(--mt-primary); background: transparent; }
.action-icon { width: 2.6rem; height: 2.6rem; border-radius: 50%; background: var(--mt-accent-soft); font-size: 1.1rem; }
.action-card strong { font-size: .92rem; }
.action-card small { font-size: .78rem; margin-top: .3rem; }
.section-space { padding-block: var(--mt-space-section); }
.section-title { font-size: clamp(2rem, 3.6vw, 3.1rem); line-height: 1.14; }
.nav-pills { background: transparent; border: 0; border-bottom: 1px solid var(--mt-border); border-radius: 0; padding: 0; gap: .5rem; }
.nav-pills .nav-link { border-radius: 0; padding: .8rem 1rem; font-size: .85rem; border-bottom: 2px solid transparent; }
.nav-pills .nav-link.active { color: var(--mt-primary); background: transparent; border-bottom-color: var(--mt-primary); }
.mode-panel { background: var(--mt-bg-secondary); border: 0; border-radius: var(--mt-radius-surface); padding: clamp(1.5rem,4vw,3rem); }
.mode-stat { background: transparent; border: 0; border-left: 1px solid var(--mt-border); border-radius: 0; padding: .5rem 0 .5rem 1.25rem; }
.mode-stat strong { font-size: 1.75rem; line-height: 1.25; margin-bottom: .35rem; }
.feature-card { border: 0; border-top: 1px solid var(--mt-border); border-radius: 0; background: transparent; padding: 1.75rem 0 1rem; }
.feature-card .bi { font-size: 1.3rem; }
.feature-card h3 { font-size: 1.05rem; }
.feature-card p { font-size: .88rem; line-height: 1.85; }
.library-panel { background: var(--mt-bg-secondary); border: 0; border-radius: var(--mt-radius-surface); }
.deck-avatar { border-radius: 50%; background: var(--mt-accent-soft); }
.badge-soft { border: 0; background: var(--mt-accent-soft); font-size: .66rem; padding: .5rem .7rem; }
.deck-row strong { font-size: .9rem; }
.deck-row small { font-size: .74rem; }
.cta-panel { position: relative; border: 0; border-block: 1px solid var(--mt-border); border-radius: 0; background: linear-gradient(100deg,var(--mt-accent-soft),transparent 65%); padding: 3rem clamp(1rem,3vw,2.5rem); }
.cta-panel h2 { font-size: clamp(1.7rem,3vw,2.5rem); line-height: 1.18; }
/* Bibliothèque : la recherche est un outil, les cartes sont le contenu. */
.library-filters { padding: 0 0 1.75rem; margin-top: 0; border: 0; border-bottom: 1px solid var(--mt-border); border-radius: 0; background: transparent; gap: 1.25rem; }
.library-filters > .library-name { order: -1; }
.library-filters .form-control, .library-filters .form-select { background-color: var(--mt-bg-secondary); }
.library-name .form-control { padding-left: 1rem; }
.library-filter-actions { gap: 1rem; }
.library-filter-actions .btn-outline-light { border-color: transparent; color: var(--mt-text-secondary); }
.library-color-options label { border-color: transparent; background: transparent; border-radius: 50%; }
.library-color-options .library-color-all { border-radius: var(--mt-radius-control); }
.library-color-options input:checked + label { box-shadow: 0 0 0 1px var(--mt-primary); border-color: transparent; background: var(--mt-accent-soft); }
.library-results { padding-bottom: 1rem; margin-top: 2.25rem; align-items: baseline; }
.library-results strong { font-size: 1.05rem; font-weight: 700; }
.library-results > span { font-size: .78rem; }
.library-grid { gap: 2rem 1.5rem; }
.library-card-visual { border: 0; border-radius: .7rem; box-shadow: 0 .5rem 1.1rem color-mix(in srgb,var(--mt-bg) 45%,transparent); }
.library-card-visual:hover { transform: translateY(-5px); box-shadow: var(--mt-shadow-art); }
.library-card h2 { margin-top: 1rem; font-size: .86rem; line-height: 1.5; letter-spacing: -.01em; }
.library-card p { font-size: .73rem; line-height: 1.5; }
.library-card > small:last-child { font-size: .65rem; letter-spacing: .045em; }
.library-card > .text-secondary { font-size: .66rem; }
.library-pagination { padding-top: 1.5rem; border-top: 1px solid var(--mt-border); font-size: .82rem; }
.library-empty { border-radius: 0; background: transparent; padding: 3rem 1rem; }
/* Fiche carte : image mise en valeur, lecture en colonnes sans boîtes empilées. */
.card-detail-breadcrumb { font-size: .77rem; margin-bottom: 1rem; }
.card-detail-breadcrumb a { color: var(--mt-text-secondary); text-decoration: none; }
.card-detail-layout { grid-template-columns: minmax(0, .75fr) minmax(0, 1.25fr); gap: clamp(2rem,5vw,5rem); margin-top: 2.5rem; }
.card-detail-art { max-width: 24rem; text-align: center; }
.card-turn-image { box-shadow: var(--mt-shadow-art); }
.card-detail-art > p { font-size: .72rem; max-width: 23rem; margin-inline: auto; line-height: 1.65; }
.card-detail-copy > h3 { font-size: 1.5rem; font-weight: 800; }
.card-detail-game { display: flex; align-items: center; gap: .55rem; font-size: .7rem; letter-spacing: .075em; color: var(--mt-text-secondary); text-transform: uppercase; }
.card-detail-game::before { content: ''; width: .35rem; height: .35rem; border-radius: 50%; background: var(--mt-primary); }
.card-detail-mana { display: flex; align-items: center; gap: 1rem; font-size: .78rem; color: var(--mt-text-secondary); margin-block: 1.25rem; }
.card-detail-mana .ms { font-size: 1.35rem; }
.card-facts { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.2rem 2rem; margin-block: 1.5rem 2rem; }
.card-facts > div { display: block; padding: 0; border: 0; min-width: 0; }
.card-facts dt { font-size: .65rem; letter-spacing: .065em; text-transform: uppercase; margin-bottom: .3rem; }
.card-facts dd { color: var(--mt-text); font-weight: 600; font-size: .9rem; }
.card-detail-copy > section { margin-top: 2rem; }
.card-detail-copy section > h2, .card-detail-copy section > h3 { font-size: .72rem; text-transform: uppercase; letter-spacing: .1em; font-weight: 800; margin-bottom: 1rem; color: var(--mt-text-secondary); }
.card-detail-copy .card-rules { margin-bottom: 1.75rem; padding-left: 1.25rem; border-left: 2px solid var(--mt-primary); font-size: .93rem; line-height: 1.85; color: var(--mt-text); }
.card-legalities { gap: .45rem 1.5rem; }
.card-legalities li { font-size: .75rem; border-color: var(--mt-line-soft); padding-block: .5rem; }
.legality-status { font-size: .66rem; display: inline-flex; align-items: center; gap: .3rem; white-space: nowrap; }
.legality-status::before { content: ''; width: .3rem; height: .3rem; background: currentColor; border-radius: 50%; }
.card-detail-copy > .small, .card-detail-copy section > .small { font-size: .69rem; line-height: 1.75; margin-top: 1rem; }
.card-detail-sections { display: block; margin-top: 4rem; }
.card-detail-panel { display: grid; grid-template-columns: minmax(10rem,.75fr) minmax(0,1.25fr); gap: clamp(2rem,5vw,5rem); padding: 2rem 0; background: transparent; border: 0; border-top: 1px solid var(--mt-border); border-radius: 0; }
.card-detail-panel h2 { font-size: 1.05rem; font-weight: 700; line-height: 1.5; }
.card-detail-panel .card-facts { margin-top: 0; }
.card-detail-panel .card-facts dd { font-size: .86rem; }
.card-detail-panel .card-rules { font-size: .9rem; line-height: 1.85; }
.card-ruling + .card-ruling { margin-top: 1.5rem; }
.card-ruling time { font-size: .67rem; letter-spacing: .04em; color: var(--mt-text-secondary); }
.card-ruling p { margin-top: .4rem; font-size: .87rem; line-height: 1.85; }
.card-printings { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .75rem 1.5rem; list-style: none; padding: 0; }
.card-printings li { margin: 0; font-size: .8rem; }
.card-printings a { color: var(--mt-text-secondary); text-decoration: none; }
.card-printings a:hover { color: var(--mt-primary); }
/* Modales : une surface unique, commandes séparées du contenu. */
.modal-content { border-radius: var(--mt-radius-surface); border: 1px solid var(--mt-line-soft); background: var(--mt-bg-secondary); box-shadow: var(--mt-shadow-art); }
.modal-header { padding: 1.25rem 1.5rem; border-color: var(--mt-line-soft); }
.modal-title { font-weight: 700; letter-spacing: -.025em; }
.modal-body { padding: 1.5rem; color: var(--mt-text); }
.modal-footer { padding: 1rem 1.5rem; border-color: var(--mt-line-soft); }
#card-preview .card-detail-layout { gap: 2rem; margin-top: 0; grid-template-columns: minmax(0,.85fr) minmax(0,1.15fr); }
#card-preview .card-detail-art { max-width: 22rem; }
#card-preview .card-detail-copy > h3 { display: none; }
#card-preview .card-facts { gap: 1rem; }
#card-preview .card-detail-copy > section { margin-top: 1.5rem; }
/* Comptes et textes : même langage graphique, formulaires autonomes conservés. */
.player-header { padding-block: 1rem 2.5rem; margin-bottom: 2rem; border-bottom: 1px solid var(--mt-border); }
.player-header > p:last-child { margin-bottom: 0; }
.player-card { border: 0; border-top: 1px solid var(--mt-border); border-radius: 0; background: transparent; padding: 1.5rem 0; }
.player-card h2 { font-weight: 700; }
.preferences-card { max-width: 42rem; }
.preferences-language-option { background: var(--mt-bg-secondary); border-radius: var(--mt-radius-control); }
.account-card { background: transparent; border: 0; border-top: 2px solid var(--mt-primary); border-radius: 0; padding: 2rem 0; }
.account-card h1 { font-size: 2rem; }
.account-feedback { background: var(--mt-bg-secondary); border: 0; border-left: 2px solid var(--mt-info); border-radius: .35rem; padding: .9rem 1rem; }
.account-feedback.is-error { border-left-color: var(--mt-danger); }
.preferences-saved { border-left-color: var(--mt-success); }
.legal-content { max-width: 56rem; }
.legal-content h1 { padding-bottom: 1.5rem; border-bottom: 1px solid var(--mt-border); }
.legal-content section { margin-top: 2rem; padding-top: 1.75rem; border-top: 1px solid var(--mt-line-soft); }
.legal-content section h2 { margin-top: 0; font-size: 1.05rem; }
.legal-content p { font-size: .92rem; line-height: 1.95; }
.legal-draft, .legal-note { background: transparent; border: 0; border-left: 2px solid var(--mt-warning); border-radius: 0; padding: .4rem 0 .4rem 1rem; }
.legal-content .legal-note { border-left-color: var(--mt-primary); }
.login-page { background: radial-gradient(ellipse at 50% 0%,var(--mt-accent-soft),transparent 38rem),var(--mt-bg); }
.login-main { width: min(100%,28rem); }
.login-brand { margin-bottom: 2.75rem; }
.login-card { background: transparent; border: 0; border-top: 2px solid var(--mt-primary); border-radius: 0; padding: 2rem 0 0; box-shadow: none; }
.login-card h1 { color: var(--mt-text); text-align: left; font-size: 2.2rem; line-height: 1.15; }
.login-intro { text-align: left; font-size: .9rem; line-height: 1.8; margin-top: .85rem; }
.login-language { background: transparent; border: 0; }
.login-footer { background: transparent; border-top: 0; }
.login-footer a { color: var(--mt-text-secondary); }
.login-after-card { text-align: left; padding-inline: 0; font-size: .85rem; }
.login-back { color: var(--mt-text-secondary) !important; }
.register-story { border-right: 0; background: linear-gradient(155deg,var(--mt-accent-soft),transparent 60%),var(--mt-bg-secondary); }
.register-story::before { border-color: var(--mt-line-soft); box-shadow: 0 0 0 5rem var(--mt-accent-soft); }
.register-story h2 { font-size: clamp(2.5rem,4vw,4.25rem); letter-spacing: -.06em; line-height: 1.1; }
.register-benefits i { background: transparent; border: 0; border-radius: 0; color: var(--mt-primary); width: 1.75rem; }
.register-benefits li { font-size: .9rem; }
.register-form-shell { width: min(100%,30rem); }
.register-form-shell h1 { font-size: clamp(2rem,3vw,2.8rem); }
.register-form-intro { font-size: .9rem; line-height: 1.8; }
@media(min-width: 992px) {
  .library-filters { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .library-filters > .library-name { grid-column: span 2; }
  .library-filter-actions { align-items: end; }
}
@media(max-width: 1399.98px) {
  .site-navbar .nav-link { font-size: .9rem; padding-block: .75rem !important; }
  .site-navbar .header-actions { margin-left: 0; padding-bottom: .5rem; }
  .site-navbar .header-actions .btn { font-size: .85rem; }
  .site-navbar .nav-link.active::after { right: auto; width: 1.5rem; }
  .hero { padding-top: 8.5rem; }
}
@media(max-width: 991.98px) {
  .hero .game-window { margin-top: .5rem; }
  .card-detail-layout { gap: 2rem; grid-template-columns: minmax(0,.8fr) minmax(0,1.2fr); }
  .card-detail-panel { gap: 2rem; }
  .register-story::before, .register-story::after { display: none; }
}
@media(max-width: 767.98px) {
  .card-detail-layout, #card-preview .card-detail-layout, .card-detail-panel { grid-template-columns: 1fr; }
  .card-detail-art { max-width: 20rem; }
  .card-detail-panel { gap: .75rem; }
  .page-heading-symbol { width: 3.5rem; height: 3.5rem; font-size: 1.4rem; margin-right: .5rem; }
  .page-heading-symbol::after { inset: -.4rem; }
  .page-heading { align-items: flex-start; gap: 1rem; }
}
@media(max-width: 575.98px) {
  .site-navbar .brand-mark { width: 2.2rem; height: 2.2rem; }
  .site-navbar .brand-name { font-size: 1.08rem; }
  .site-navbar .brand-tagline { font-size: .47rem; letter-spacing: .03em; }
  .site-navbar { --bs-navbar-padding-y: .75rem; }
  .page-heading { padding-bottom: 1.5rem; margin-bottom: 1.5rem; }
  .page-heading h1 { font-size: 2.1rem; overflow-wrap: anywhere; }
  .page-heading-symbol { display: none; }
  .page-heading p { font-size: .85rem; }
  .card-library, .site-page-main { padding-top: 7rem; }
  .hero { padding-top: 7.5rem; }
  .hero h1 { font-size: clamp(2.75rem,11vw,3.6rem); }
  .hero-copy { font-size: .94rem; }
  .hero-actions .btn { width: auto; }
  .action-card { padding-block: 1rem; }
  .library-filters { grid-template-columns: 1fr; gap: 1rem; padding-inline: 0; }
  .library-filters > .library-name { grid-column: 1; }
  .library-grid { gap: 1.5rem 1rem; }
  .library-results { gap: .5rem; margin-top: 1.5rem; }
  .library-results strong { font-size: .9rem; }
  .library-card h2 { font-size: .79rem; }
  .library-card p { font-size: .68rem; }
  .card-detail-layout { margin-top: 1.75rem; }
  .card-detail-sections { margin-top: 2rem; }
  .card-facts { gap: 1rem; }
  .card-facts dd { font-size: .82rem; }
  .card-printings { grid-template-columns: 1fr; }
  .modal-header, .modal-body, .modal-footer { padding: 1rem; }
  #card-preview .card-detail-art { max-width: 16rem; }
  .login-card { padding-top: 1.5rem; }
  .login-layout { padding-inline: 1.5rem; }
  .site-footer .row { padding-top: 0; }
  .site-footer .footer-description { font-size: .8rem; }
  .register-form-shell { margin-top: 2rem; }
}
@media(prefers-reduced-motion: reduce) { .btn, .library-card-visual, .action-card { transition: none; } .btn:hover, .library-card-visual:hover, .action-card:hover { transform: none; } }
.set-symbol { object-fit: contain; flex: none; filter: brightness(0) invert(1); opacity: .85; }
.card-edition { display: inline-flex; align-items: center; gap: .6rem; }
.library-card .card-edition { display: flex; align-items: start; gap: .4rem; }
.library-card .set-symbol { margin-top: .08rem; }
.page-heading-symbol .set-symbol { width: 2.25rem; height: 2.25rem; }
.library-set-picker { position: relative; }
.library-selected-symbol { position: absolute; left: .9rem; top: 50%; transform: translateY(-50%); pointer-events: none; }
.library-set-picker:has(.library-selected-symbol:not([hidden])) .form-select { padding-left: 2.9rem; }
@media(min-width: 992px) {
  .library-colors { grid-column: span 2; }
  .library-filter-actions { grid-column: span 1; }
}
/* Les écrans de construction de deck utilisent le même rythme que le catalogue. */
.deck-page { padding: clamp(7.5rem,10vw,9rem) 0 var(--mt-space-section); min-height: 70vh; }
.deck-page h1 { font-size: clamp(2rem,4.1vw,3.5rem); margin-block: .85rem 1rem; }
.deck-intro { max-width: 46rem; line-height: 1.85; }
.deck-panel { background: transparent; border: 0; border-top: 1px solid var(--mt-border); border-radius: 0; padding: 2rem 0; }
@media(max-width:575.98px) { .deck-page { padding-top: 7rem; } }
