:root {
    --bg:#0b0d12;
    --bg-soft:#0f1219;
    --surface:#131722;
    --surface-2:#1a2030;
    --surface-3:#20283a;
    --line:#293044;
    --line-soft:#202638;
    --text:#f4f6fb;
    --muted:#9199aa;
    --muted-2:#6f7788;
    --primary:#d9a441;
    --primary-2:#f1c76a;
    --primary-soft:rgba(217,164,65,.12);
    --green:#37c978;
    --green-soft:rgba(55,201,120,.12);
    --red:#ef5b64;
    --blue:#5ba7ff;
    --shadow:0 18px 55px rgba(0,0,0,.24);
    --radius:18px;
}
* {
    box-sizing:border-box
}
html,body {
    margin:0;
    min-height:100%;
    background:radial-gradient(circle at 75% -10%,rgba(91,167,255,.08),transparent 34%),var(--bg);
    color:var(--text);
    font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif
}
body {
    min-height:100vh
}
a {
    color:inherit;
    text-decoration:none
}
button,input,select,textarea {
    font:inherit
}
.shell {
    display:grid;
    grid-template-columns:248px minmax(0,1fr);
    min-height:100vh
}
.sidebar {
    background:rgba(15,18,25,.96);
    border-right:1px solid var(--line-soft);
    padding:22px 14px;
    position:sticky;
    top:0;
    height:100vh;
    display:flex;
    flex-direction:column;
    z-index:20;
    backdrop-filter:blur(18px)
}
.brand {
    padding:5px 10px 24px;
    font-weight:950;
    font-size:20px;
    letter-spacing:-.03em
}
.brand span {
    color:var(--primary)
}
.brand small {
    display:block;
    color:var(--muted);
    font-size:11px;
    letter-spacing:.18em;
    margin-top:4px;
    font-weight:700
}
.nav {
    display:grid;
    gap:3px
}
.nav a {
    display:flex;
    align-items:center;
    gap:11px;
    padding:11px 12px;
    border-radius:12px;
    color:#b7becd;
    font-size:15px;
    font-weight:650;
    transition:.18s ease
}
.nav a:hover {
    background:rgba(255,255,255,.045);
    color:#fff
}
.nav a.active {
    background:var(--primary-soft);
    color:var(--primary-2);
    box-shadow:inset 0 0 0 1px rgba(217,164,65,.16)
}
.nav-icon {
    width:19px;
    text-align:center;
    font-size:17px;
    opacity:.95
}
.nav .scan {
    background:linear-gradient(135deg,var(--primary),var(--primary-2));
    color:#17120a;
    font-weight:900;
    margin-top:16px;
    box-shadow:0 10px 30px rgba(217,164,65,.15)
}
.nav .scan:hover {
    color:#17120a;
    transform:translateY(-1px)
}
.sidebar-footer {
    margin-top:auto;
    padding:14px 10px 2px;
    border-top:1px solid var(--line-soft)
}
.user-pill {
    display:flex;
    align-items:center;
    gap:9px
}
.user-avatar {
    width:34px;
    height:34px;
    border-radius:50%;
    display:grid;
    place-items:center;
    background:linear-gradient(135deg,#293044,#171c28);
    border:1px solid #323b52;
    color:var(--primary-2);
    font-weight:900
}
.user-name {
    font-size:14px;
    font-weight:800
}
.user-logout {
    font-size:12px;
    color:var(--muted);
    margin-top:3px
}
.user-logout:hover {
    color:#fff
}
.main {
    padding:30px 34px 90px;
    max-width:1580px;
    width:100%;
    min-width:0
}
.top {
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:18px;
    margin-bottom:28px
}
.top h1 {
    margin:0;
    font-size:29px;
    line-height:1.05;
    letter-spacing:-.04em
}
.top .top-actions {
    display:flex;
    align-items:center;
    gap:10px
}
.page-kicker {
    font-size:12px;
    color:var(--primary-2);
    text-transform:uppercase;
    letter-spacing:.16em;
    font-weight:900;
    margin-bottom:7px
}
.muted {
    color:var(--muted)
}
.muted-2 {
    color:var(--muted-2)
}
.grid {
    display:grid;
    gap:15px
}
.stats {
    grid-template-columns:repeat(5,minmax(0,1fr))
}
.card {
    background:linear-gradient(180deg,rgba(25,30,43,.96),rgba(18,22,32,.96));
    border:1px solid var(--line);
    border-radius:var(--radius);
    padding:18px;
    box-shadow:0 10px 35px rgba(0,0,0,.08)
}
.card.hover {
    transition:.18s ease
}
.card.hover:hover {
    transform:translateY(-2px);
    border-color:#3a445d;
    box-shadow:var(--shadow)
}
.stat {
    position:relative;
    overflow:hidden;
    min-height:112px
}
.stat:after {
    content:"";
    position:absolute;
    width:90px;
    height:90px;
    right:-35px;
    top:-30px;
    border-radius:50%;
    background:rgba(217,164,65,.07)
}
.stat-label {
    color:var(--muted);
    font-size:13px;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.08em
}
.stat b {
    font-size:31px;
    line-height:1;
    display:block;
    margin-top:11px;
    letter-spacing:-.05em
}
.stat small {
    display:block;
    margin-top:8px;
    color:var(--muted-2);
    font-size:12px
}
.stat-primary b {
    color:var(--primary-2)
}
.dashboard-grid {
    display:grid;
    grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);
    gap:15px;
    margin-top:15px
}
.overview-card {
    min-height:240px;
    display:flex;
    flex-direction:column;
    justify-content:space-between
}
.overview-number {
    font-size:42px;
    font-weight:950;
    letter-spacing:-.06em;
    color:var(--primary-2)
}
.overview-sub {
    color:var(--muted);
    font-size:14px;
    margin-top:6px
}
.metric-row {
    display:flex;
    gap:8px;
    flex-wrap:wrap;
    margin-top:18px
}
.metric-pill {
    padding:8px 10px;
    border-radius:12px;
    background:#10141d;
    border:1px solid var(--line-soft);
    font-size:13px
}
.type-list {
    display:grid;
    gap:11px
}
.type-line {
    display:grid;
    grid-template-columns:minmax(110px,1fr) 2fr auto;
    align-items:center;
    gap:10px;
    font-size:13px
}
.type-name {
    font-weight:750;
    color:#d9deea
}
.type-bar {
    height:7px;
    background:#0d1017;
    border-radius:999px;
    overflow:hidden;
    border:1px solid #23293a
}
.type-bar>span {
    display:block;
    height:100%;
    border-radius:999px;
    background:linear-gradient(90deg,var(--primary),var(--primary-2))
}
.type-count {
    font-weight:850;
    color:var(--muted)
}
.section-head {
    display:flex;
    align-items:end;
    justify-content:space-between;
    gap:12px;
    margin:28px 0 12px
}
.section-title {
    margin:28px 0 12px;
    font-size:20px;
    letter-spacing:-.025em
}
.section-head .section-title {
    margin:0
}
.section-note {
    font-size:12px;
    color:var(--muted)
}
.toolbar {
    display:flex;
    gap:9px;
    flex-wrap:wrap;
    margin-bottom:16px;
    padding:10px;
    background:rgba(19,23,34,.7);
    border:1px solid var(--line-soft);
    border-radius:15px
}
.input,.select {
    background:#10141d;
    border:1px solid var(--line);
    border-radius:11px;
    padding:10px 12px;
    color:#fff;
    min-height:42px;
    outline:none
}
.input:focus,.select:focus {
    border-color:#8f7137;
    box-shadow:0 0 0 3px rgba(217,164,65,.08)
}
.input {
    min-width:220px
}
.select {
    min-width:160px
}
.btn {
    border:0;
    border-radius:11px;
    padding:10px 15px;
    background:linear-gradient(135deg,var(--primary),var(--primary-2));
    color:#151109;
    font-weight:900;
    cursor:pointer;
    transition:.16s ease
}
.btn:hover {
    transform:translateY(-1px);
    filter:brightness(1.04)
}
.btn.secondary {
    background:#252c3b;
    color:#fff;
    border:1px solid #323a4c
}
.btn.danger {
    background:#5a2228;
    color:#fff
}
.btn.ghost {
    background:transparent;
    color:#d6dbe6;
    border:1px solid var(--line)
}
.filter-tabs {
    display:flex;
    gap:6px;
    flex-wrap:wrap;
    margin-bottom:12px
}
.filter-tab {
    padding:8px 11px;
    border-radius:999px;
    background:#141925;
    border:1px solid var(--line);
    color:var(--muted);
    font-size:13px;
    font-weight:800
}
.filter-tab.active {
    background:var(--primary-soft);
    color:var(--primary-2);
    border-color:rgba(217,164,65,.34)
}
.collection-grid {
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(168px,1fr));
    gap:15px
}
.collection-card {
    background:linear-gradient(180deg,#151a26,#11151e);
    border:1px solid var(--line);
    border-radius:16px;
    transition:.18s ease;
    position:relative
}
.collection-card:hover {
    transform:translateY(-3px);
    border-color:#3c465e;
    box-shadow:var(--shadow)
}
.collection-card .image-wrap {
    position:relative;
    background:#0a0d13;
    overflow:hidden
}
.collection-card img {
    display:block;
    width:100%;
    aspect-ratio:59/86;
    object-fit:cover;
    background:#0a0d13
}
.collection-card .image-wrap:after {
    content:"";
    position:absolute;
    left:0;
    right:0;
    bottom:0;
    height:25%;
    background:linear-gradient(transparent,rgba(10,13,19,.5));
    pointer-events:none
}
.collection-card .body {
    padding:11px 11px 12px
}
.collection-card .name {
    font-weight:850;
    font-size:15px;
    line-height:1.25;
    min-height:33px
}
.collection-card .card-type {
    font-size:11px;
    color:var(--muted);
    margin-top:6px
}
.chips {
    display:flex;
    flex-wrap:wrap;
    gap:5px;
    margin-top:9px
}
.chip {
    font-size:11px;
    padding:4px 7px;
    border-radius:999px;
    background:#222939;
    color:#bfc6d4;
    border:1px solid #2b3347;
    line-height:1
}
.chip.gold {
    color:var(--primary-2);
    background:var(--primary-soft);
    border-color:rgba(217,164,65,.2)
}
.chip.green {
    color:#81e3a7;
    background:var(--green-soft);
    border-color:rgba(55,201,120,.2)
}
.qty {
    font-weight:900;
    color:#81e3a7
}
.collection-count-badge {
    position:absolute;
    right:8px;
    top:8px;
    z-index:2;
    padding:5px 8px;
    border-radius:999px;
    background:rgba(8,11,16,.88);
    border:1px solid rgba(255,255,255,.16);
    font-size:12px;
    font-weight:900;
    color:#fff;
    backdrop-filter:blur(10px)
}
.type-badge {
    display:inline-flex;
    align-items:center;
    padding:5px 8px;
    border-radius:999px;
    font-size:11px;
    font-weight:900;
    border:1px solid transparent
}
.type-monster {
    background:rgba(205,125,61,.12);
    color:#efb176;
    border-color:rgba(205,125,61,.23)
}
.type-spell {
    background:rgba(53,183,167,.12);
    color:#71dfd0;
    border-color:rgba(53,183,167,.24)
}
.type-trap {
    background:rgba(194,74,142,.13);
    color:#e393c1;
    border-color:rgba(194,74,142,.25)
}
.type-xyz {
    background:rgba(210,216,230,.1);
    color:#edf1fa;
    border-color:#343a49
}
.type-link {
    background:rgba(65,126,231,.13);
    color:#8bb5ff;
    border-color:rgba(65,126,231,.3)
}
.type-fusion {
    background:rgba(133,81,190,.15);
    color:#c49be9;
    border-color:rgba(133,81,190,.3)
}
.type-synchro {
    background:rgba(235,237,241,.1);
    color:#e6e9ef;
    border-color:#3a404d
}
table {
    width:100%;
    border-collapse:collapse
}
th,td {
    text-align:left;
    padding:11px 10px;
    border-bottom:1px solid var(--line-soft);
    font-size:14px
}
th {
    color:var(--muted);
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.08em;
    font-weight:800
}
tr:last-child td {
    border-bottom:0
}
.table-link {
    color:var(--primary-2);
    font-weight:850
}
.table-link:hover {
    text-decoration:underline
}
.table-card-thumb {
    width:36px;
    border-radius:4px;
    vertical-align:middle;
    margin-right:9px
}
.login-wrap {
    min-height:100vh;
    display:grid;
    place-items:center;
    padding:20px;
    background:radial-gradient(circle at 50% 0,rgba(217,164,65,.08),transparent 38%),var(--bg)
}
.login {
    width:min(430px,100%);
    box-shadow:var(--shadow)
}
.login h1 {
    margin-top:0;
    letter-spacing:-.04em
}
.field {
    display:grid;
    gap:6px;
    margin:13px 0
}
.field label {
    color:var(--muted);
    font-size:13px
}
.field input,.field textarea,.field select {
    width:100%;
    background:#0f131c;
    color:#fff;
    border:1px solid var(--line);
    border-radius:11px;
    padding:11px
}
.alert {
    padding:11px 13px;
    border-radius:11px;
    background:rgba(239,91,100,.16);
    border:1px solid rgba(239,91,100,.22);
    margin:10px 0
}
.ok {
    background:rgba(55,201,120,.12);
    border-color:rgba(55,201,120,.22)
}
.detail {
    display:grid;
    grid-template-columns:minmax(230px,330px) minmax(0,1fr);
    gap:22px;
    align-items:start
}
.detail-image-card {
    position:sticky;
    top:24px
}
.detail img {
    width:100%;
    border-radius:16px;
    display:block;
    box-shadow:0 24px 60px rgba(0,0,0,.28)
}
.card-title {
    font-size:28px;
    line-height:1.08;
    letter-spacing:-.045em;
    margin:10px 0 8px
}
.card-meta-line {
    display:flex;
    gap:7px;
    align-items:center;
    flex-wrap:wrap;
    margin:8px 0 16px
}
.battle-stats {
    display:flex;
    gap:10px;
    margin:18px 0
}
.battle-stat {
    min-width:110px;
    padding:12px 14px;
    border:1px solid var(--line);
    border-radius:13px;
    background:#10141d
}
.battle-stat span {
    display:block;
    color:var(--muted);
    font-size:11px;
    font-weight:800;
    letter-spacing:.08em
}
.battle-stat b {
    display:block;
    font-size:24px;
    margin-top:4px
}
.card-description {
    line-height:1.65;
    color:#d0d6e1;
    font-size:15px;
    padding-top:14px;
    border-top:1px solid var(--line-soft)
}
.empty {
    text-align:center;
    padding:42px 18px;
    color:var(--muted)
}
.location-grid {
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
    gap:13px
}
.location-card {
    display:block;
    padding:17px;
    background:linear-gradient(180deg,#171c29,#111620);
    border:1px solid var(--line);
    border-radius:16px;
    transition:.18s ease
}
.location-card:hover {
    border-color:#3a455c;
    transform:translateY(-2px);
    box-shadow:var(--shadow)
}
.location-icon {
    font-size:23px
}
.location-name {
    font-weight:900;
    margin-top:10px
}
.location-count {
    margin-top:9px;
    color:var(--primary-2);
    font-size:21px;
    font-weight:950
}
.location-count small {
    font-size:12px;
    color:var(--muted);
    font-weight:650
}
.location-detail-head {
    display:flex;
    align-items:center;
    gap:10px;
    margin:22px 0 13px
}
.back-link {
    display:inline-flex;
    align-items:center;
    gap:7px;
    color:var(--muted);
    font-size:13px;
    font-weight:800
}
.back-link:hover {
    color:#fff
}
.mobilebar {
    display:none
}
@media(max-width:1100px) {
    .stats {
        grid-template-columns:repeat(3,1fr)
    }
    .dashboard-grid {
        grid-template-columns:1fr
    }
    .collection-grid {
        grid-template-columns:repeat(auto-fill,minmax(150px,1fr))
    }
}
@media(max-width:850px) {
    .shell {
        display:block
    }
    .sidebar {
        display:none
    }
    .main {
        padding:18px 12px 92px
    }
    .top {
        margin-bottom:20px
    }
    .top h1 {
        font-size:24px
    }
    .stats {
        grid-template-columns:repeat(2,1fr)
    }
    .stat {
        min-height:98px
    }
    .stat b {
        font-size:27px
    }
    .detail {
        grid-template-columns:1fr
    }
    .detail-image-card {
        position:static;
        max-width:260px;
        margin:auto
    }
    .collection-grid {
        grid-template-columns:repeat(2,minmax(0,1fr));
        gap:10px
    }
    .collection-card .name {
        font-size:14px
    }
    .toolbar {
        padding:8px
    }
    .input,.select {
        flex:1;
        min-width:130px
    }
    .mobilebar {
        position:fixed;
        display:grid;
        grid-template-columns:repeat(6,1fr);
        left:8px;
        right:8px;
        bottom:max(8px,env(safe-area-inset-bottom));
        background:rgba(17,21,31,.94);
        border:1px solid #2b3347;
        z-index:99;
        padding:6px;
        border-radius:17px;
        box-shadow:0 18px 50px rgba(0,0,0,.4);
        backdrop-filter:blur(18px)
    }
    .mobilebar a {
        display:grid;
        place-items:center;
        gap:3px;
        font-size:10px;
        color:var(--muted);
        padding:7px 2px;
        border-radius:11px
    }
    .mobilebar a span:first-child {
        font-size:19px;
        line-height:1
    }
    .mobilebar a.active {
        background:var(--primary-soft);
        color:var(--primary-2)
    }
    .mobilebar .scan {
        color:#17120a;
        background:linear-gradient(135deg,var(--primary),var(--primary-2));
        font-weight:900
    }
    .section-title {
        font-size:19px
    }
    .location-grid {
        grid-template-columns:repeat(2,minmax(0,1fr))
    }
}
@media(max-width:480px) {
    .main {
        padding-left:10px;
        padding-right:10px
    }
    .stats {
        gap:9px
    }
    .card {
        padding:14px;
        border-radius:15px
    }
    .collection-grid {
        gap:8px
    }
    .collection-card {
        border-radius:13px
    }
    .collection-card .body {
        padding:9px
    }
    .toolbar {
        gap:6px
    }
    .input,.select,.btn {
        min-height:40px
    }
    .location-grid {
        grid-template-columns:1fr 1fr
    }
    .type-line {
        grid-template-columns:100px 1fr auto
    }
}
/* V1.2 — sélection multiple dans les decks */
.deck-add-toolbar {
    position:sticky;
    top:8px;
    z-index:12;
    display:flex;
    align-items:center;
    gap:10px;
    justify-content:flex-end;
    margin:0 0 14px;
    padding:11px 12px;
    background:rgba(17,21,31,.96);
    border:1px solid var(--line);
    border-radius:15px;
    box-shadow:0 12px 35px rgba(0,0,0,.25);
    backdrop-filter:blur(16px)
}
.deck-add-toolbar>div:first-child {
    margin-right:auto;
    font-size:14px
}
.deck-picker-card {
    cursor:pointer;
    user-select:none
}
.deck-picker-card input.deck-card-check {
    position:absolute;
    opacity:0;
    pointer-events:none
}
.deck-checkmark {
    position:absolute;
    z-index:5;
    left:9px;
    top:9px;
    width:28px;
    height:28px;
    border-radius:9px;
    display:grid;
    place-items:center;
    background:rgba(8,11,16,.86);
    border:1px solid rgba(255,255,255,.25);
    color:transparent;
    font-weight:950;
    transition:.16s ease
}
.deck-picker-card.selected {
    border-color:rgba(217,164,65,.8);
    box-shadow:0 0 0 2px rgba(217,164,65,.18),var(--shadow)
}
.deck-picker-card.selected .deck-checkmark {
    background:linear-gradient(135deg,var(--primary),var(--primary-2));
    color:#17120a;
    border-color:transparent
}
.deck-picker-bottom {
    display:grid;
    grid-template-columns:auto 56px 1fr;
    align-items:center;
    gap:6px;
    margin-top:9px;
    font-size:11px
}
.deck-picker-bottom a {
    text-align:right;
    color:var(--primary-2);
    font-weight:850
}
.deck-qty {
    width:56px;
    background:#0f131c;
    color:#fff;
    border:1px solid var(--line);
    border-radius:8px;
    padding:5px
}
.deck-section-empty {
    grid-column:1/-1
}
.btn:disabled {
    opacity:.45;
    cursor:not-allowed;
    transform:none!important;
    filter:none!important
}
@media(max-width:850px) {
    .deck-add-toolbar {
        top:5px;
        display:grid;
        grid-template-columns:1fr 1fr
    }
    .deck-add-toolbar>div:first-child {
        grid-column:1/-1
    }
    .deck-add-toolbar .select,.deck-add-toolbar .btn {
        width:100%;
        min-width:0
    }
    .deck-picker-bottom {
        grid-template-columns:auto 50px 1fr
    }
}
/* V1.3 — filtres compacts + sélecteur de cartes plein écran */
.catalog-search {
    margin-bottom:16px
}
.catalog-search-row {
    display:grid;
    grid-template-columns:minmax(220px,1fr) auto auto;
    gap:8px;
    align-items:center
}
.catalog-search-input {
    width:100%
}
.compact-tabs {
    margin-top:9px;
    margin-bottom:0
}
.filter-toggle {
    white-space:nowrap
}
.filter-count:not(:empty) {
    display:inline-grid;
    place-items:center;
    min-width:19px;
    height:19px;
    padding:0 5px;
    border-radius:999px;
    background:var(--primary);
    color:#17120a;
    font-size:11px;
    margin-left:4px
}
.filter-drawer {
    display:none;
    margin-top:10px;
    padding:14px;
    border:1px solid var(--line);
    border-radius:15px;
    background:rgba(16,20,29,.96)
}
.filter-drawer.open {
    display:block
}
.filter-drawer-head {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    margin-bottom:12px
}
.filter-reset {
    appearance:none;
    border:0;
    background:transparent;
    color:var(--primary-2);
    font:inherit;
    font-size:12px;
    font-weight:850;
    cursor:pointer
}
.filter-grid {
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:9px
}
.filter-grid label {
    display:grid;
    gap:5px
}
.filter-grid label>span {
    font-size:11px;
    color:var(--muted);
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.05em
}
.filter-grid .select {
    width:100%;
    min-width:0
}
.filter-subtitle {
    font-size:12px;
    font-weight:900;
    color:#dce1eb;
    text-transform:uppercase;
    letter-spacing:.08em;
    margin:16px 0 8px
}
.filter-context[hidden] {
    display:none!important
}
.filter-actions {
    display:flex;
    justify-content:flex-end;
    margin-top:14px
}
.deck-actions-head {
    align-items:center
}
.deck-action-buttons {
    display:flex;
    gap:8px;
    flex-wrap:wrap
}
.section-count {
    display:inline-grid;
    place-items:center;
    min-width:24px;
    height:24px;
    padding:0 7px;
    border-radius:999px;
    background:#202737;
    color:var(--muted);
    font-size:12px;
    margin-left:5px
}
.deck-section-title {
    margin-top:25px
}
body.modal-open {
    overflow:hidden
}
.deck-picker-modal {
    position:fixed;
    inset:0;
    z-index:1000;
    background:rgba(5,7,10,.84);
    backdrop-filter:blur(14px);
    display:none;
    padding:18px
}
.deck-picker-modal.open {
    display:block
}
.deck-picker-shell {
    height:calc(100vh - 36px);
    max-width:1480px;
    margin:auto;
    background:linear-gradient(180deg,#121722,#0d1119);
    border:1px solid #30394c;
    border-radius:22px;
    box-shadow:0 30px 100px rgba(0,0,0,.65);
    display:flex;
    flex-direction:column;
    overflow:hidden
}
.deck-picker-header {
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:17px 20px;
    border-bottom:1px solid var(--line);
    flex:0 0 auto
}
.deck-picker-header h2 {
    margin:2px 0 0;
    font-size:20px
}
.eyebrow {
    font-size:11px;
    color:var(--primary-2);
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.12em
}
.modal-close {
    width:40px;
    height:40px;
    border-radius:12px;
    border:1px solid var(--line);
    background:#202634;
    color:#fff;
    font-size:24px;
    cursor:pointer
}
.deck-picker-form {
    display:flex;
    flex-direction:column;
    min-height:0;
    flex:1
}
.deck-picker-searchbar {
    padding:12px 16px 0;
    display:grid;
    grid-template-columns:1fr auto;
    gap:8px
}
.deck-picker-searchbar .input {
    width:100%
}
.deck-group-tabs {
    padding:8px 16px 0
}
.deck-picker-form .filter-drawer {
    margin:8px 16px 0;
    max-height:34vh;
    overflow:auto
}
.deck-picker-summary {
    padding:9px 17px;
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:10px;
    font-size:13px
}
.inline-check {
    display:flex;
    align-items:center;
    gap:6px;
    color:var(--muted);
    font-size:12px
}
.deck-picker-grid {
    padding:0 16px 16px;
    overflow:auto;
    align-content:start;
    flex:1;
    grid-template-columns:repeat(auto-fill,minmax(145px,1fr))
}
.deck-picker-card.unavailable {
    cursor:not-allowed;
    opacity:.58
}
.deck-picker-card.unavailable img {
    filter:grayscale(1)
}
.deck-picker-card.unavailable:hover {
    transform:none;
    border-color:var(--line);
    box-shadow:none
}
.unavailable-overlay {
    position:absolute;
    inset:0;
    z-index:4;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    padding:10px;
    background:rgba(8,10,14,.42);
    color:#fff
}
.unavailable-overlay strong {
    font-size:12px;
    letter-spacing:.08em;
    background:rgba(8,10,14,.85);
    padding:5px 8px;
    border-radius:999px
}
.unavailable-overlay span {
    font-size:10px;
    margin-top:6px;
    max-width:95%;
    background:rgba(8,10,14,.78);
    padding:4px 7px;
    border-radius:8px
}
.deck-picker-card[hidden] {
    display:none!important
}
.deck-picker-footer {
    flex:0 0 auto;
    display:grid;
    grid-template-columns:1fr auto auto;
    align-items:center;
    gap:10px;
    padding:12px 16px calc(12px + env(safe-area-inset-bottom));
    border-top:1px solid var(--line);
    background:rgba(14,18,26,.98)
}
@media(max-width:900px) {
    .filter-grid {
        grid-template-columns:repeat(2,minmax(0,1fr))
    }
    .deck-picker-modal {
        padding:0
    }
    .deck-picker-shell {
        height:100dvh;
        border-radius:0;
        border:0
    }
    .deck-picker-header {
        padding:13px 12px
    }
    .deck-picker-grid {
        padding:0 10px 12px;
        grid-template-columns:repeat(3,minmax(0,1fr));
        gap:8px
    }
    .deck-picker-searchbar {
        padding:9px 10px 0
    }
    .deck-group-tabs {
        padding:7px 10px 0
    }
    .deck-picker-form .filter-drawer {
        margin:7px 10px 0
    }
    .deck-picker-footer {
        grid-template-columns:1fr 1fr
    }
    .deck-picker-footer>div:first-child {
        grid-column:1/-1
    }
    .deck-picker-footer .select,.deck-picker-footer .btn {
        width:100%;
        min-width:0
    }
}
@media(max-width:560px) {
    .catalog-search-row {
        grid-template-columns:1fr auto
    }
    .catalog-search-row>.btn:last-child {
        grid-column:1/-1
    }
    .filter-grid {
        grid-template-columns:1fr 1fr
    }
    .deck-action-buttons {
        width:100%
    }
    .deck-action-buttons .btn {
        flex:1;
        text-align:center
    }
    .deck-picker-grid {
        grid-template-columns:repeat(2,minmax(0,1fr))
    }
    .deck-picker-card .body {
        padding:8px
    }
    .deck-picker-card .name {
        font-size:13px
    }
    .deck-picker-card .chips {
        gap:3px
    }
    .deck-picker-card .chip {
        font-size:10px
    }
    .deck-picker-summary {
        padding:8px 11px
    }
}
/* V1.4 — correction manuelle d’une identification scanner */
.scan-replace-wrap {
    grid-column:1/-1;
    display:none;
    margin-top:6px;
    padding:10px;
    border:1px solid rgba(255,255,255,.11);
    border-radius:11px;
    background:rgba(9,12,18,.78)
}
.scan-replace-wrap.open {
    display:block
}
.scan-replace-title {
    font-size:11px;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.08em;
    color:#b9c0ce;
    margin-bottom:7px
}
.scan-replace-row {
    display:grid;
    grid-template-columns:1fr auto;
    gap:6px
}
.scan-replace-row input {
    min-width:0;
    width:100%;
    padding:9px 10px;
    border-radius:9px;
    border:1px solid #3a4253;
    background:#111722;
    color:#fff
}
.scan-replace-results {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:6px;
    margin-top:8px;
    max-height:25vh;
    overflow:auto
}
.scan-replace-card {
    display:grid;
    grid-template-columns:42px 1fr;
    gap:7px;
    text-align:left;
    align-items:center;
    padding:6px;
    border:1px solid #353d4e;
    border-radius:9px;
    background:#181e29;
    color:#fff;
    cursor:pointer
}
.scan-replace-card:hover {
    border-color:var(--primary)
}
.scan-replace-card img {
    width:42px;
    border-radius:4px
}
.scan-replace-card strong {
    font-size:11px;
    line-height:1.2
}
.scan-replace-card small {
    display:block;
    color:#969eaf;
    font-size:9px;
    margin-top:3px
}
.scan-replace-state {
    font-size:11px;
    color:#aeb5c4;
    padding:7px 2px
}
.scan-review-actions.three-actions {
    grid-template-columns:1fr 1fr 1fr!important
}
@media(max-width:560px) {
    .scan-review-actions.three-actions {
        grid-template-columns:1fr 1fr!important
    }
    .scan-review-actions.three-actions #change-current-card {
        grid-column:1/-1
    }
    .scan-replace-results {
        grid-template-columns:1fr
    }
    .scan-replace-card {
        grid-template-columns:36px 1fr
    }
    .scan-replace-card img {
        width:36px
    }
}
/* V1.5 — retrait d'un exemplaire depuis un deck */
.deck-owned-card {
    position:relative
}
.deck-card-link {
    display:block;
    color:inherit;
    text-decoration:none
}
.deck-remove-form {
    position: absolute;
    right: 8px;
    bottom: 8px;
    z-index: 5;
    margin: 0;
}
.deck-remove-btn {
    appearance:none;
    border:1px solid rgba(255,255,255,.16);
    background:rgba(13,16,23,.90);
    color:#ff9ca3;
    border-radius:999px;
    min-width:34px;
    height:30px;
    padding:0 9px;
    font-size:13px;
    font-weight:950;
    cursor:pointer;
    backdrop-filter:blur(10px);
    box-shadow:0 5px 18px rgba(0,0,0,.28)
}
.deck-remove-btn:hover {
    background:#6f2630;
    color:#fff;
    border-color:#9b3945;
    transform:translateY(-1px)
}

/* =========================================================
   V1.7 — PERSONNALISATION DES DECKS
   ========================================================= */

.deck-cover-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 16px;
}

.deck-cover-card {
    position: relative;
    min-height: 220px;
    overflow: hidden;
    display: flex;
    align-items: flex-end;
    border: 1px solid color-mix(in srgb, var(--deck-accent) 42%, #293044);
    border-radius: 22px;
    background: #131722;
    color: #f4f6fb;
    text-decoration: none;
    box-shadow: 0 18px 42px rgba(0, 0, 0, 0.22);
    isolation: isolate;
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.deck-cover-card::after {
    content: "";
    position: absolute;
    z-index: 1;
    right: 0;
    bottom: 0;
    left: 0;
    height: 3px;
    background: var(--deck-accent);
}

.deck-cover-card:hover {
    transform: translateY(-4px);
    border-color: var(--deck-accent);
    box-shadow: 0 24px 58px rgba(0, 0, 0, 0.34);
}

.deck-cover-art {
    position: absolute;
    z-index: -3;
    inset: 0;
    background-position: center 24%;
    background-size: cover;
    transform: scale(1.05);
}

.deck-cover-shade {
    position: absolute;
    z-index: -2;
    inset: 0;
    background:
        linear-gradient(180deg, rgba(7, 9, 14, 0.12) 0%, rgba(7, 9, 14, 0.48) 48%, rgba(7, 9, 14, 0.98) 100%),
        linear-gradient(90deg, color-mix(in srgb, var(--deck-accent) 18%, transparent), transparent 55%);
}

.deck-cover-icon {
    position: absolute;
    top: 15px;
    left: 15px;
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    border: 1px solid color-mix(in srgb, var(--deck-accent) 58%, transparent);
    border-radius: 14px;
    background: rgba(9, 12, 18, 0.72);
    color: var(--deck-accent);
    backdrop-filter: blur(10px);
}

.deck-cover-icon svg,
.deck-icon-symbol svg {
    width: 24px;
    height: 24px;
    fill: currentColor;
}

.deck-cover-content {
    width: 100%;
    padding: 68px 18px 18px;
}

.deck-cover-kicker {
    margin-bottom: 4px;
    color: var(--deck-accent);
    font-size:11px;
    font-weight: 950;
    letter-spacing: 0.18em;
}

.deck-cover-name {
    font-size: clamp(21px, 3vw, 30px);
    font-weight: 950;
    line-height: 1.02;
}

.deck-cover-subtitle {
    margin-top: 6px;
    color: #c7cedc;
    font-size:13px;
}

.deck-cover-meta {
    margin-top: 14px;
    display: flex;
    gap: 5px;
    align-items: baseline;
    color: #9aa3b5;
    font-size:12px;
}

.deck-cover-meta strong {
    color: #fff;
    font-size:17px;
}

.deck-cover-meta span {
    margin-left: auto;
    color: #fff;
    font-weight: 800;
}

.deck-customizer {
    margin-bottom: 18px;
    overflow: hidden;
    border: 1px solid #293044;
    border-radius: 16px;
    background: #131722;
}

.deck-customizer > summary {
    padding: 14px 16px;
    display: flex;
    gap: 6px;
    flex-direction: column;
    cursor: pointer;
    list-style: none;
    font-weight: 900;
}

.deck-customizer > summary::-webkit-details-marker {
    display: none;
}

.deck-customizer > summary small {
    color: #9199aa;
    font-size:11px;
    font-weight: 600;
}

.deck-customizer-form {
    padding: 0 16px 16px;
    display: grid;
    grid-template-columns: minmax(180px, 1fr) minmax(180px, 1fr) auto;
    gap: 12px;
    align-items: end;
}

.deck-customizer-form > label {
    display: grid;
    gap: 6px;
}

.deck-customizer-form > label > span,
.deck-icon-picker legend {
    color: #9199aa;
    font-size:11px;
    font-weight: 850;
}

.deck-customizer-form > label small {
    color: #717a8d;
    font-size:10px;
}

.deck-color-input {
    width: 58px;
    height: 42px;
    padding: 3px;
    border: 1px solid #394155;
    border-radius: 10px;
    background: #111620;
    cursor: pointer;
}

.deck-icon-picker {
    grid-column: 1 / -1;
    margin: 0;
    padding: 0;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    border: 0;
}

.deck-icon-option {
    cursor: pointer;
}

.deck-icon-option input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.deck-icon-symbol {
    width: 44px;
    height: 44px;
    display: grid;
    place-items: center;
    border: 1px solid #30384a;
    border-radius: 12px;
    background: #191f2b;
    color: #8f98aa;
}

.deck-icon-option small {
    margin-top: 4px;
    display: block;
    color: #778094;
    font-size:9px;
    text-align: center;
}

.deck-icon-option input:checked + .deck-icon-symbol {
    border-color: #d9a441;
    background: rgba(217, 164, 65, 0.12);
    color: #f1c76a;
    box-shadow: 0 0 0 2px rgba(217, 164, 65, 0.10);
}

@media (max-width: 720px) {
    .deck-cover-grid {
        grid-template-columns: 1fr;
    }

    .deck-cover-card {
        min-height: 190px;
    }

    .deck-customizer-form {
        grid-template-columns: 1fr;
    }

    .deck-icon-picker {
        grid-column: 1;
    }
}


/* =========================================================
   V1.7.1 — STATISTIQUES VISUELLES DES DECKS
   ========================================================= */

.deck-cover-count {
    margin-top: 14px;
    display: flex;
    gap: 5px;
    align-items: baseline;
    color: #9aa3b5;
    font-size:12px;
}

.deck-cover-count strong {
    color: #fff;
    font-size:18px;
}

.deck-type-stats {
    margin-top: 9px;
    display: flex;
    gap: 5px;
    flex-wrap: wrap;
}

.deck-stat-pill {
    padding: 5px 7px;
    border: 1px solid rgba(255, 255, 255, 0.10);
    border-radius: 999px;
    background: rgba(9, 12, 18, 0.66);
    color: #d7dde9;
    font-size:10px;
    font-weight: 800;
    backdrop-filter: blur(8px);
}

.deck-stat-monster {
    border-color: rgba(222, 145, 72, 0.28);
}

.deck-stat-spell {
    border-color: rgba(50, 183, 163, 0.30);
}

.deck-stat-trap {
    border-color: rgba(200, 84, 143, 0.30);
}

.deck-section-stats {
    margin-top: 11px;
    padding-top: 10px;
    display: flex;
    gap: 10px;
    align-items: center;
    border-top: 1px solid rgba(255, 255, 255, 0.10);
}

.deck-section-stats > span:not(.deck-cover-open) {
    display: grid;
    gap: 1px;
}

.deck-section-stats small {
    color: #7f899c;
    font-size:9px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.deck-section-stats strong {
    color: #f4f6fb;
    font-size:14px;
}

.deck-cover-open {
    margin-left: auto;
    color: #fff;
    font-size:11px;
    font-weight: 850;
}


/* =========================================================
   V1.7.2 — SETS AU FORMAT DES DECKS
   ========================================================= */

.deck-action-buttons-only {
    margin: 0 0 20px;
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.set-cover-grid {
    margin-top: 4px;
}

.set-cover-card {
    min-height: 225px;
    cursor: default;
}

.set-cover-card:hover {
    transform: translateY(-2px);
}

.set-cover-art {
    filter: saturate(0.82);
    opacity: 0.84;
}

.set-cover-icon {
    color: #8fc2ff;
    font-size: 22px;
    font-weight: 900;
}

.set-stats-row {
    margin-top: 13px;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.set-stat-pill {
    padding: 6px 8px;
    display: inline-flex;
    gap: 4px;
    align-items: baseline;
    border: 1px solid rgba(91, 167, 255, 0.20);
    border-radius: 999px;
    background: rgba(8, 12, 19, 0.70);
    color: #aeb8ca;
    font-size:10px;
    backdrop-filter: blur(8px);
}

.set-stat-pill strong {
    color: #ffffff;
    font-size:12px;
}

.set-stat-duplicate {
    border-color: rgba(217, 164, 65, 0.28);
}

.set-stat-duplicate strong {
    color: #f1c76a;
}

.set-cover-footer {
    margin-top: 13px;
    padding-top: 10px;
    border-top: 1px solid rgba(255, 255, 255, 0.10);
    color: #7f899c;
    font-size:10px;
    font-weight: 700;
}


/* =========================================================
   V1.7.3 — LOGIN / ESPACEMENTS / FINITIONS
   ========================================================= */

.login-page {
    min-height: 100vh;
}

.login-wrap {
    padding: 34px 20px;
}

.login-shell {
    width: min(440px, 100%);
}

.login-brand {
    margin-bottom: 16px;
    padding: 0 4px;
    font-size: 21px;
}

.login-brand small {
    margin-top: 5px;
}

.login {
    width: 100%;
    padding: 26px;
}

.login-heading {
    margin-bottom: 22px;
}

.login-heading h1 {
    margin: 0;
    font-size: 30px;
    letter-spacing: -0.045em;
}

.login-heading .muted {
    margin: 8px 0 0;
    line-height: 1.5;
}

.login .field {
    margin: 16px 0;
}

.login .field input {
    min-height: 46px;
    padding: 12px 13px;
}

.login-submit {
    width: 100%;
    min-height: 46px;
    margin-top: 7px;
}

.login-help {
    margin: 18px 0 0;
    text-align: center;
    font-size:12px;
}

.login-help a {
    color: var(--primary-2);
    font-weight: 800;
}

/* L'application reste dense, mais laisse un peu plus respirer le contenu. */
@media (max-width: 850px) {
    .main {
        padding: 22px 16px 100px;
    }

    .top {
        margin-bottom: 24px;
    }

    .collection-grid {
        gap: 12px;
    }

    .section-head {
        margin-top: 30px;
        margin-bottom: 14px;
    }
}

@media (max-width: 480px) {
    .main {
        padding-right: 14px;
        padding-left: 14px;
    }

    .collection-grid {
        gap: 10px;
    }

    .login-wrap {
        padding: 28px 16px;
    }

    .login {
        padding: 22px 18px;
    }
}


/* =========================================================
   V1.7.4 — MENU MOBILE + GESTION DES EMPLACEMENTS
   ========================================================= */

@media (max-width: 850px) {
    .mobilebar a {
        font-size:9px;
        padding-right: 1px;
        padding-left: 1px;
    }

    .mobilebar a span:first-child {
        font-size:17px;
    }
}

.location-icon-input {
    min-width: 70px;
    max-width: 80px;
}

.location-management-card {
    min-height: 190px;
    display: flex;
    flex-direction: column;
}

.location-management-card .location-icon {
    width: 45px;
    height: 45px;
    display: grid;
    place-items: center;
    border: 1px solid #30394d;
    border-radius: 14px;
    background: #111620;
}

.location-type-stats {
    margin-top: 12px;
    display: flex;
    gap: 5px;
    flex-wrap: wrap;
}

.location-type-stats span {
    padding: 5px 7px;
    border: 1px solid #2c3548;
    border-radius: 999px;
    background: #111620;
    color: #aeb7c8;
    font-size:10px;
    font-weight: 750;
}

.location-open {
    margin-top: auto;
    padding-top: 14px;
    color: #fff;
    font-size:11px;
    font-weight: 850;
}

.location-page-actions {
    margin-bottom: 20px;
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.location-owned-card {
    padding-bottom: 52px;
}

.location-card-actions {
    position: absolute;
    right: 8px;
    bottom: 8px;
    left: 8px;
    display: flex;
    gap: 6px;
    align-items: center;
    justify-content: flex-end;
}

.location-card-actions form {
    margin: 0;
}

.location-remove-btn {
    width: 36px;
    height: 32px;
    border: 1px solid rgba(239, 91, 100, 0.30);
    border-radius: 999px;
    background: rgba(72, 26, 32, 0.90);
    color: #ffadb3;
    font-size:12px;
    font-weight: 950;
    cursor: pointer;
}

.location-move-form {
    min-width: 0;
    flex: 1;
}

.location-move-select {
    width: 100%;
    height: 32px;
    padding: 0 7px;
    border: 1px solid #30394a;
    border-radius: 9px;
    background: rgba(17, 22, 32, 0.96);
    color: #dce2ed;
    font-size:10px;
}

.location-picker-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(145px, 1fr));
    gap: 10px;
    min-height: 0;
    overflow-y: auto;
    padding: 2px 2px 110px;
}

.location-picker-card {
    height: max-content;
}

@media (max-width: 560px) {
    .location-page-actions {
        display: grid;
        grid-template-columns: 1fr 1fr;
    }

    .location-page-actions .btn:first-child {
        grid-column: 1 / -1;
    }

    .location-picker-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}


/* =========================================================
   V1.7.5 — CACHE LOCAL DES ARTWORKS CROPPED
   ========================================================= */

.set-cache-toolbar {
    margin-bottom: 18px;
    padding: 12px 14px;
    display: flex;
    gap: 12px;
    align-items: center;
    justify-content: space-between;
    border: 1px solid #293044;
    border-radius: 14px;
    background: rgba(19, 23, 34, 0.78);
}

.set-cache-toolbar strong {
    display: block;
    font-size:13px;
}

.set-cache-toolbar small {
    display: block;
    margin-top: 3px;
    color: #9199aa;
    font-size:10px;
}

@media (max-width: 560px) {
    .set-cache-toolbar {
        align-items: stretch;
        flex-direction: column;
    }
}


/* =========================================================
   V1.7.7 — ESPACEMENTS / GRILLES / MENU MOBILE
   ========================================================= */

.page-kicker {
    margin-bottom: 16px;
}

/* Decks et Sets : maximum deux cartes par ligne. */
.deck-cover-grid,
.set-cover-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.deck-cover-grid.is-single > .deck-cover-card,
.set-cover-grid.is-single > .set-cover-card {
    grid-column: 1 / -1;
}

.set-cover-title-bilingual {
    display: grid;
    gap: 3px;
}

.set-cover-title-bilingual strong {
    color: #f4f6fb;
    font-size:13px;
    font-weight: 850;
}

.set-cover-title-bilingual small {
    color: #9199aa;
    font-size:10px;
    line-height: 1.3;
}

/* Menu mobile légèrement plus grand malgré les six entrées. */
@media (max-width: 850px) {
    .mobilebar {
        min-height: 68px;
        padding: 8px 7px;
    }

    .mobilebar a {
        gap: 5px;
        min-height: 50px;
        padding: 7px 2px;
        font-size:10px;
        font-weight: 750;
    }

    .mobilebar a span:first-child {
        font-size: 19px;
    }

    .mobilebar .scan span:first-child {
        font-size: 21px;
    }
}

@media (max-width: 480px) {
    .deck-cover-grid,
    .set-cover-grid {
        gap: 10px;
    }

    .deck-cover-card,
    .set-cover-card {
        min-height: 205px;
        border-radius: 17px;
    }

    .deck-cover-content {
        padding-right: 12px;
        padding-left: 12px;
    }

    .deck-cover-name {
        font-size:20px;
    }
}


/* =========================================================
   V1.8 — CLASSEUR VIRTUEL DES SETS
   ========================================================= */

.set-progress-summary {
    margin-top: 14px;
    display: flex;
    gap: 6px;
    align-items: baseline;
}

.set-progress-summary strong {
    color: #fff;
    font-size: 20px;
    font-weight: 950;
}

.set-progress-summary span,
.set-progress-percent {
    color: #aeb7c8;
    font-size: 10px;
}

.set-progress-track {
    width: 100%;
    height: 7px;
    margin-top: 8px;
    overflow: hidden;
    border: 1px solid #2c3548;
    border-radius: 999px;
    background: rgba(8, 12, 18, 0.75);
}

.set-progress-track > span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #5ba7ff, #8fc2ff);
}

.set-progress-percent {
    margin-top: 5px;
}

.set-detail-hero {
    display: flex;
    gap: 20px;
    align-items: end;
    justify-content: space-between;
    margin-bottom: 18px;
}

.set-detail-code {
    margin-top: 16px;
    color: #8fc2ff;
    font-size: 34px;
    font-weight: 950;
    letter-spacing: -0.04em;
}

.set-detail-name-fr {
    margin-top: 5px;
    font-size: 18px;
    font-weight: 900;
}

.set-detail-name-en {
    margin-top: 4px;
    color: #9199aa;
    font-size: 11px;
}

.set-detail-progress {
    width: min(330px, 100%);
    text-align: right;
}

.set-detail-progress > strong {
    display: block;
    color: #fff;
    font-size: 28px;
    font-weight: 950;
}

.set-detail-progress > span,
.set-detail-progress > small {
    color: #9199aa;
    font-size: 10px;
}

.set-detail-progress .set-progress-track {
    margin-left: auto;
}

.set-import-card {
    display: flex;
    gap: 18px;
    align-items: center;
    justify-content: space-between;
}

.set-import-card strong {
    font-size: 15px;
}

.set-import-card p {
    max-width: 720px;
    margin-bottom: 0;
    line-height: 1.5;
}

.set-binder-toolbar {
    margin-bottom: 14px;
    display: flex;
    gap: 12px;
    align-items: center;
    justify-content: space-between;
}

.set-binder-tabs {
    margin-bottom: 0;
}

.set-image-loader {
    display: flex;
    gap: 10px;
    align-items: center;
}

.set-image-loader > div {
    text-align: right;
}

.set-image-loader strong,
.set-image-loader small {
    display: block;
}

.set-image-loader strong {
    font-size: 11px;
}

.set-image-loader small {
    margin-top: 3px;
    color: #9199aa;
    font-size: 9px;
}

/* Effet classeur : 3 cartes par ligne sur mobile. */
.set-binder-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(155px, 1fr));
    gap: 12px;
}

.set-binder-card {
    min-width: 0;
    overflow: hidden;
    border: 1px solid #293044;
    border-radius: 14px;
    background: linear-gradient(180deg, #151a26, #10141d);
    transition: transform 0.18s ease, border-color 0.18s ease, opacity 0.18s ease;
}

.set-binder-card:hover {
    transform: translateY(-2px);
    border-color: #3c465e;
}

.set-binder-card.missing {
    opacity: 0.72;
}

.set-binder-image-wrap {
    position: relative;
    aspect-ratio: 59 / 86;
    overflow: hidden;
    background: #090c12;
}

.set-binder-image-wrap img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
}

.set-binder-card.missing .set-binder-image-wrap img[data-real="1"] {
    filter: grayscale(0.72) brightness(0.72);
}

.set-owned-badge,
.set-missing-badge {
    position: absolute;
    z-index: 2;
    right: 6px;
    bottom: 6px;
    padding: 4px 6px;
    border-radius: 999px;
    font-size: 8px;
    font-weight: 950;
    backdrop-filter: blur(9px);
}

.set-owned-badge {
    border: 1px solid rgba(55, 201, 120, 0.34);
    background: rgba(12, 56, 31, 0.88);
    color: #9aefba;
}

.set-missing-badge {
    border: 1px solid rgba(255, 255, 255, 0.16);
    background: rgba(10, 13, 19, 0.86);
    color: #c6cdd9;
}

.set-binder-card-body {
    padding: 9px;
}

.set-binder-number {
    color: #f1c76a;
    font-size: 8px;
    font-weight: 900;
}

.set-binder-name {
    min-height: 30px;
    margin-top: 4px;
    font-size: 11px;
    font-weight: 850;
    line-height: 1.2;
}

.set-binder-rarity {
    margin-top: 5px;
    color: #9199aa;
    font-size: 8px;
}

@media (min-width: 900px) {
    .set-binder-grid {
        grid-template-columns: repeat(6, minmax(0, 1fr));
    }
}

@media (max-width: 700px) {
    .set-detail-hero,
    .set-import-card,
    .set-binder-toolbar {
        align-items: stretch;
        flex-direction: column;
    }

    .set-detail-progress {
        width: 100%;
        text-align: left;
    }

    .set-image-loader {
        justify-content: space-between;
    }

    .set-image-loader > div {
        text-align: left;
    }
}

@media (max-width: 560px) {
    .set-binder-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 7px;
    }

    .set-binder-card {
        border-radius: 9px;
    }

    .set-binder-card-body {
        padding: 6px;
    }

    .set-binder-number {
        font-size: 7px;
    }

    .set-binder-name {
        min-height: 27px;
        font-size: 9px;
    }

    .set-binder-rarity {
        font-size: 7px;
    }

    .set-owned-badge,
    .set-missing-badge {
        right: 4px;
        bottom: 4px;
        padding: 3px 5px;
        font-size: 6px;
    }
}


/* =========================================================
   V1.8 — AJOUT EN MASSE DEPUIS UN SET
   ========================================================= */

.set-bulk-toolbar {
    position: sticky;
    z-index: 12;
    top: 10px;
    margin-bottom: 12px;
    padding: 10px;
    display: flex;
    gap: 10px;
    align-items: center;
    justify-content: space-between;
    border: 1px solid #30394d;
    border-radius: 14px;
    background: rgba(15, 19, 28, 0.94);
    box-shadow: 0 12px 34px rgba(0, 0, 0, 0.24);
    backdrop-filter: blur(14px);
}

.set-bulk-select-actions,
.set-bulk-add-actions {
    display: flex;
    gap: 7px;
    align-items: center;
}

.set-bulk-add-actions .select {
    width: auto;
    min-width: 150px;
}

#set-selection-count {
    color: #aeb7c8;
    font-size: 10px;
    white-space: nowrap;
}

.set-card-check {
    position: absolute;
    z-index: 4;
    top: 5px;
    left: 5px;
    cursor: pointer;
}

.set-card-check input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.set-card-check span {
    width: 25px;
    height: 25px;
    display: grid;
    place-items: center;
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 8px;
    background: rgba(9, 12, 18, 0.82);
    color: transparent;
    font-size: 12px;
    font-weight: 950;
    backdrop-filter: blur(8px);
}

.set-card-check input:checked + span {
    border-color: #d9a441;
    background: #d9a441;
    color: #11151d;
}

.set-binder-card.selected {
    border-color: #d9a441;
    box-shadow: 0 0 0 2px rgba(217, 164, 65, 0.15);
}

@media (max-width: 760px) {
    .set-bulk-toolbar {
        position: static;
        align-items: stretch;
        flex-direction: column;
    }

    .set-bulk-select-actions,
    .set-bulk-add-actions {
        width: 100%;
        flex-wrap: wrap;
    }

    .set-bulk-select-actions .btn {
        flex: 1 1 auto;
    }

    .set-bulk-add-actions .select {
        min-width: 0;
        flex: 1 1 150px;
    }

    #add-selected-set-cards {
        flex: 1 1 180px;
    }
}

@media (max-width: 560px) {
    .set-card-check span {
        width: 22px;
        height: 22px;
        border-radius: 7px;
        font-size: 10px;
    }

    .set-bulk-toolbar {
        padding: 8px;
    }

    .set-bulk-select-actions .btn {
        padding-right: 7px;
        padding-left: 7px;
        font-size: 8px;
    }
}


/* V1.8.3 — apparition en direct des images du classeur */
.set-binder-image-wrap img {
    transition:
        opacity 0.24s ease,
        transform 0.24s ease,
        filter 0.24s ease;
}

.set-binder-image-wrap img.loading-swap {
    opacity: 0.18;
    transform: scale(0.96);
}

.set-binder-image-wrap {
    transition:
        box-shadow 0.42s ease,
        border-color 0.42s ease;
}

.set-binder-image-wrap.image-ready-flash {
    box-shadow:
        inset 0 0 0 2px rgba(217, 164, 65, 0.95),
        inset 0 0 28px rgba(217, 164, 65, 0.28);
}

.set-binder-image-wrap.image-ready-flash::after {
    content: "✓";
    position: absolute;
    z-index: 5;
    top: 50%;
    left: 50%;
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    transform: translate(-50%, -50%);
    border-radius: 999px;
    background: rgba(217, 164, 65, 0.94);
    color: #11151d;
    font-size: 18px;
    font-weight: 950;
    animation: set-image-ready-pop 0.52s ease both;
}

@keyframes set-image-ready-pop {
    0% {
        opacity: 0;
        transform: translate(-50%, -50%) scale(0.7);
    }

    35% {
        opacity: 1;
        transform: translate(-50%, -50%) scale(1.08);
    }

    100% {
        opacity: 0;
        transform: translate(-50%, -50%) scale(1);
    }
}


/* V1.8.5 — stabilité des visuels de Sets */
.set-cover-card .deck-cover-art {
    display: block;
    opacity: 0.88;
}

.set-cover-card .deck-cover-shade {
    display: block;
}

.set-cover-card .deck-cover-content {
    position: relative;
    z-index: 2;
}


/* V1.8.6 — covers Sets 100 % locales et fallback fiable */
.set-cover-art {
    overflow: hidden;
}

.set-cover-art img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    object-position: center 24%;
}

.set-cover-card .set-cover-art {
    opacity: 0.88;
}

.set-cover-reset-form{margin:0 0 12px}
.set-card-cover-button{position:absolute;z-index:5;top:5px;right:5px;width:25px;height:25px;border:1px solid rgba(255,255,255,.22);border-radius:8px;background:rgba(9,12,18,.82);color:#d9a441;font:inherit;font-size:13px;font-weight:900;cursor:pointer;backdrop-filter:blur(8px);transition:transform .18s ease,border-color .18s ease}
.set-card-cover-button:hover{transform:translateY(-1px);border-color:#d9a441}

/* Cartes manquantes dans le classeur d'un Set */
.set-binder-card img {
    transition:
        filter .25s ease,
        opacity .25s ease,
        transform .25s ease;
}

.set-binder-card.missing img {
    filter: grayscale(0.5);
}

/* =========================================================
   FINAL — TABLE "MES EXEMPLAIRES" MOBILE
   ========================================================= */

.table-scroll {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
}

.table-scroll table {
    width: 100%;
    min-width: 650px;
    table-layout: auto;
}

.table-scroll th,
.table-scroll td {
    max-width: 260px;
    overflow-wrap: anywhere;
    word-break: normal;
    vertical-align: middle;
}

/* Évite qu'un parent grid/flex soit élargi par le tableau. */
.card:has(.table-scroll) {
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
}

@media (max-width: 700px) {
    .table-scroll table {
        min-width: 620px;
    }

    .table-scroll th,
    .table-scroll td {
        padding-right: 9px;
        padding-left: 9px;
    }
}


/* =========================================================
   V1.9 — PAGINATION / GESTION DE COLLECTION
   ========================================================= */

.catalog-search-row {
    align-items: center;
}

.collection-manage-toggle {
    width: 42px;
    min-width: 42px;
    padding-right: 0;
    padding-left: 0;
    font-size: 16px;
}

.collection-manage-toggle.active {
    border-color: rgba(239,91,100,.48);
    background: rgba(239,91,100,.12);
    color: #ffadb3;
}

.collection-manage-card {
    overflow: visible;
}

.collection-card-link {
    display: block;
    color: inherit;
    text-decoration: none;
}

.collection-select-check {
    position: absolute;
    z-index: 8;
    top: 8px;
    left: 8px;
    display: none;
    cursor: pointer;
}

.collection-select-check input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.collection-select-check span {
    width: 29px;
    height: 29px;
    display: grid;
    place-items: center;
    border: 1px solid rgba(255,255,255,.25);
    border-radius: 9px;
    background: rgba(8,11,16,.86);
    color: transparent;
    font-size: 13px;
    font-weight: 950;
    backdrop-filter: blur(9px);
}

.collection-select-check input:checked + span {
    border-color: #ef5b64;
    background: #ef5b64;
    color: #fff;
}

.collection-manage-mode .collection-select-check {
    display: block;
}

.collection-manage-mode .collection-manage-card {
    cursor: pointer;
}

.collection-manage-card.selected-for-delete {
    border-color: rgba(239,91,100,.72);
    box-shadow: 0 0 0 2px rgba(239,91,100,.12);
}

.collection-manage-card.selected-for-delete img {
    opacity: .72;
}

.collection-manage-bar {
    position: fixed;
    z-index: 40;
    right: 22px;
    bottom: 22px;
    left: calc(250px + 22px);
    display: none;
    gap: 14px;
    align-items: center;
    justify-content: space-between;
    padding: 12px 14px;
    border: 1px solid #343d52;
    border-radius: 15px;
    background: rgba(16,20,29,.94);
    box-shadow: 0 18px 50px rgba(0,0,0,.38);
    backdrop-filter: blur(16px);
}

.collection-manage-mode .collection-manage-bar {
    display: flex;
}

.collection-manage-bar strong,
.collection-manage-bar small {
    display: block;
}

.collection-manage-bar small {
    margin-top: 2px;
    color: var(--muted);
    font-size: 10px;
}

.collection-manage-bar-actions {
    display: flex;
    gap: 8px;
    align-items: center;
}

.btn.danger {
    border-color: rgba(239,91,100,.32);
    background: rgba(104,31,38,.88);
    color: #ffb2b7;
}

.btn.danger:hover {
    border-color: rgba(239,91,100,.58);
    background: rgba(128,37,45,.94);
}

.btn.danger:disabled {
    opacity: .42;
    cursor: not-allowed;
}

.collection-pagination {
    margin: 24px 0 8px;
    display: flex;
    gap: 6px;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
}

.pagination-page,
.pagination-arrow {
    min-width: 38px;
    height: 38px;
    padding: 0 10px;
    display: grid;
    place-items: center;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: #131824;
    color: #bac2d1;
    font-size: 12px;
    font-weight: 850;
    transition: .18s ease;
}

.pagination-page:hover,
.pagination-arrow:hover,
.pagination-page.active {
    border-color: rgba(217,164,65,.42);
    background: var(--primary-soft);
    color: var(--primary-2);
}

.pagination-ellipsis {
    padding: 0 4px;
    color: var(--muted);
}

.collection-delete-modal {
    position: fixed;
    z-index: 1000;
    inset: 0;
    display: none;
    place-items: center;
    padding: 18px;
    background: rgba(5,7,11,.76);
    backdrop-filter: blur(8px);
}

.collection-delete-modal.open {
    display: grid;
}

.collection-delete-modal-open {
    overflow: hidden;
}

.collection-delete-dialog {
    width: min(620px,100%);
    max-height: min(760px,90vh);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid #343d52;
    border-radius: 20px;
    background: #111620;
    box-shadow: 0 28px 80px rgba(0,0,0,.5);
}

.collection-delete-head {
    padding: 18px 18px 12px;
    display: flex;
    gap: 16px;
    align-items: flex-start;
    justify-content: space-between;
    border-bottom: 1px solid var(--line-soft);
}

.collection-delete-head h2 {
    margin: 0;
}

.collection-delete-warning {
    margin: 14px 16px 0;
    padding: 11px 12px;
    border: 1px solid rgba(239,91,100,.22);
    border-radius: 11px;
    background: rgba(239,91,100,.08);
    color: #cdd3df;
    font-size: 11px;
    line-height: 1.45;
}

.collection-delete-preview {
    min-height: 0;
    overflow-y: auto;
    padding: 12px 16px;
    display: grid;
    gap: 7px;
}

.collection-delete-preview-card {
    padding: 7px;
    display: grid;
    grid-template-columns: 48px 1fr;
    gap: 10px;
    align-items: center;
    border: 1px solid var(--line-soft);
    border-radius: 10px;
    background: #0e131c;
}

.collection-delete-preview-card img,
.collection-delete-preview-placeholder {
    width: 48px;
    aspect-ratio: 59/86;
    display: block;
    object-fit: cover;
    border-radius: 5px;
    background: #080b10;
}

.collection-delete-preview-card strong,
.collection-delete-preview-card span,
.collection-delete-preview-card small {
    display: block;
}

.collection-delete-preview-card strong {
    font-size: 11px;
}

.collection-delete-preview-card span,
.collection-delete-preview-card small {
    margin-top: 2px;
    color: var(--muted);
    font-size: 9px;
}

.collection-delete-footer {
    padding: 12px 16px 16px;
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    border-top: 1px solid var(--line-soft);
}

.collection-card-rarity {
    margin-top: 7px !important;
    font-size: 11px !important;
}

/* =========================================================
   V1.9 — MAINTENANCE
   ========================================================= */

.maintenance-grid {
    display: grid;
    gap: 14px;
    grid-template-columns: repeat(2,minmax(0,1fr));
}

.maintenance-card {
    display: flex;
    gap: 14px;
    align-items: flex-start;
    flex-wrap: wrap;
}

.maintenance-card h2 {
    margin: 0;
}

.maintenance-card > div:nth-child(2) {
    min-width: 0;
    flex: 1;
}

.maintenance-card > .btn {
    width: 100%;
    margin-top: auto;
}

.maintenance-icon {
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: #10151f;
    font-size: 18px;
}

.maintenance-danger-card {
    border-color: rgba(239,91,100,.25);
}

.maintenance-note {
    margin: 10px 0 0;
    color: #80899a;
    font-size: 10px;
    line-height: 1.45;
}

.maintenance-dialog form {
    padding: 15px 17px 17px;
}

.maintenance-confirm-copy {
    margin-bottom: 12px;
    color: #b6becc;
    font-size: 11px;
    line-height: 1.5;
}

.maintenance-confirm-copy strong {
    color: #ffadb3;
}

.maintenance-confirm-input {
    margin-bottom: 14px;
}

@media (max-width: 850px) {
    .collection-manage-bar {
        right: 10px;
        bottom: 82px;
        left: 10px;
    }

    .maintenance-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 600px) {
    .collection-manage-bar {
        align-items: stretch;
        flex-direction: column;
    }

    .collection-manage-bar-actions {
        display: grid;
        grid-template-columns: 1fr 1fr;
    }

    .collection-manage-bar-actions .btn.danger {
        grid-column: 1 / -1;
    }

    .collection-delete-dialog {
        max-height: 88vh;
        border-radius: 16px;
    }

    .catalog-search-row {
        flex-wrap: wrap;
    }

    .catalog-search-input {
        flex: 1 1 100%;
    }
}


/* =========================================================
   V1.9.1 — GESTION QUANTITÉS / DECKS IMPACTÉS
   ========================================================= */

.collection-tabs-actions {
    margin-bottom: 12px;
    display: flex;
    gap: 8px;
    align-items: stretch;
    justify-content: space-between;
}

.collection-tabs-actions .filter-tabs {
    margin-bottom: 0;
    flex: 1;
}

.collection-tabs-actions .collection-manage-toggle {
    width: auto;
    min-width: 38px;
    height: fit-content;
    margin: 0;
    padding: 6px 22px;
    flex: 0 0 auto;
    margin-top: 9px;
}

.collection-delete-preview-info {
    min-width: 0;
}

.collection-delete-decks {
    margin-top: 7px;
    padding-top: 6px;
    border-top: 1px solid var(--line-soft);
    display: grid;
    gap: 2px;
}

.collection-delete-decks b {
    color: #9da7b8;
    font-size: 9px;
}

.collection-delete-decks span {
    color: #d4dae5;
}

.collection-delete-quantity {
    margin-top: 8px;
    display: flex;
    gap: 5px;
    align-items: center;
}

.collection-delete-quantity > span {
    margin-right: 4px;
    color: #aab2c0;
    font-size: 9px;
}

.collection-delete-qty-input {
    width: 46px;
    height: 30px;
    border: 1px solid var(--line);
    border-radius: 7px;
    background: #0b1018;
    color: #fff;
    text-align: center;
    font-weight: 850;
    appearance: textfield;
}

.collection-delete-qty-input::-webkit-inner-spin-button,
.collection-delete-qty-input::-webkit-outer-spin-button {
    appearance: none;
}

.collection-qty-step {
    width: 30px;
    height: 30px;
    display: grid;
    place-items: center;
    border: 1px solid #323b50;
    border-radius: 7px;
    background: #171d29;
    color: #fff;
    font-size: 15px;
    cursor: pointer;
}

.collection-delete-quantity small {
    margin-left: 2px;
    color: var(--muted);
    font-size: 9px;
}

.card-delete-copy-form {
    display: flex;
    gap: 5px;
    align-items: center;
}

.card-delete-qty {
    width: 62px;
    min-width: 62px;
    padding: 7px 8px;
}

.card-delete-copy-btn {
    width: 34px;
    min-width: 34px;
    padding-right: 0;
    padding-left: 0;
}

.card-delete-deck-warning {
    margin-top: 5px;
    display: block;
    max-width: 180px;
    color: #e4a3a8;
    font-size: 9px;
    line-height: 1.3;
}

.deck-change-warning {
    margin: 10px 0 16px;
    padding: 10px 12px;
    border: 1px solid rgba(239,91,100,.28);
    border-radius: 11px;
    background: rgba(239,91,100,.09);
    color: #ffadb3;
    font-size: 12px;
    font-weight: 800;
}

.deck-cover-change-warning {
    margin-top: 8px;
    padding: 6px 8px;
    width: max-content;
    max-width: 100%;
    border: 1px solid rgba(239,91,100,.3);
    border-radius: 8px;
    background: rgba(78,24,30,.5);
    color: #ffb0b5;
    font-size: 10px;
    font-weight: 850;
}

.deck-card-unavailable {
    border-color: rgba(239,91,100,.28);
}

.deck-card-unavailable .image-wrap img {
    filter: grayscale(.8);
    opacity: .46;
}

.deck-missing-overlay {
    pointer-events: none;
}

@media (max-width: 600px) {
    .collection-tabs-actions {
        gap: 6px;
    }

    .collection-tabs-actions .filter-tabs {
        gap: 4px;
        flex-wrap: nowrap;
        overflow-x: auto;
    }

    .collection-tabs-actions .filter-tab {
        white-space: nowrap;
    }

    .collection-delete-quantity {
        flex-wrap: wrap;
    }
}


/* =========================================================
   V1.9.2 — CONFIRMATION DE SUPPRESSION
   ========================================================= */

.action-success-toast {
    position: fixed;
    z-index: 1200;
    top: 18px;
    right: 18px;
    width: min(390px,calc(100vw - 36px));
    padding: 11px 12px;
    display: flex;
    gap: 10px;
    align-items: center;
    border: 1px solid rgba(55,201,120,.34);
    border-radius: 14px;
    background: rgba(15,25,22,.96);
    color: #e8fff0;
    box-shadow: 0 18px 55px rgba(0,0,0,.38);
    backdrop-filter: blur(15px);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-10px) scale(.98);
    transition:
        opacity .22s ease,
        transform .22s ease,
        visibility .22s ease;
}

.action-success-toast.visible {
    opacity: 1;
    visibility: visible;
    transform: translateY(0) scale(1);
}

.action-success-icon {
    width: 34px;
    height: 34px;
    flex: 0 0 34px;
    display: grid;
    place-items: center;
    border-radius: 999px;
    background: rgba(55,201,120,.15);
    color: #81e3a7;
    font-size: 18px;
    font-weight: 950;
}

.action-success-copy {
    min-width: 0;
    flex: 1;
}

.action-success-copy strong,
.action-success-copy span {
    display: block;
}

.action-success-copy strong {
    font-size: 12px;
}

.action-success-copy span {
    margin-top: 2px;
    color: #aebdb4;
    font-size: 10px;
    line-height: 1.35;
}

.action-success-close {
    width: 28px;
    height: 28px;
    flex: 0 0 28px;
    display: grid;
    place-items: center;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: #9aa9a0;
    font-size: 18px;
    cursor: pointer;
}

.action-success-close:hover {
    background: rgba(255,255,255,.06);
    color: #fff;
}

@media (max-width: 600px) {
    .action-success-toast {
        top: 10px;
        right: 10px;
        width: calc(100vw - 20px);
    }
}


/* V1.9.3 — retrait d'une carte de la sélection à quantité 0 */
.collection-delete-preview-card {
    transition:
        opacity .16s ease,
        transform .16s ease,
        max-height .16s ease,
        margin .16s ease,
        padding .16s ease;
}

.collection-delete-preview-card.removing {
    opacity: 0;
    transform: scale(.97);
}


/* =========================================================
   V1.9.4 — CURSEURS / COMPTEUR
   ========================================================= */

/* Le + / − reflète immédiatement les limites du compteur. */
.collection-qty-step:disabled {
    opacity: .32;
    cursor: not-allowed;
    filter: grayscale(1);
}

/*
 * Curseur cohérent sur tous les éléments interactifs natifs
 * et sur les contrôles personnalisés de l'application.
 */
button:not(:disabled),
.btn:not(:disabled),
a.btn,
.filter-tab,
.filter-toggle,
.collection-manage-toggle,
.collection-select-check,
.collection-qty-step:not(:disabled),
.modal-close,
.action-success-close,
.deck-remove-form button:not(:disabled),
.deck-cover-card,
input[type="checkbox"]:not(:disabled),
input[type="radio"]:not(:disabled),
select:not(:disabled),
label[for] {
    cursor: pointer;
}

button:disabled,
.btn:disabled,
select:disabled,
input[type="checkbox"]:disabled,
input[type="radio"]:disabled {
    cursor: not-allowed;
}


/* =========================================================
   V1.9.5 — CONFIRMATION CENTRÉE
   ========================================================= */

.action-success-toast {
    top: 50%;
    right: auto;
    left: 50%;
    width: min(520px,calc(100vw - 32px));
    min-height: 112px;
    padding: 18px 20px;
    gap: 14px;
    border-radius: 18px;
    transform: translate(-50%,calc(-50% - 12px)) scale(.96);
}

.action-success-toast.visible {
    transform: translate(-50%,-50%) scale(1);
}

.action-success-icon {
    width: 48px;
    height: 48px;
    flex-basis: 48px;
    font-size: 24px;
}

.action-success-copy strong {
    font-size: 15px;
}

.action-success-copy span {
    margin-top: 5px;
    font-size: 12px;
}

.action-success-close {
    width: 34px;
    height: 34px;
    flex-basis: 34px;
    align-self: flex-start;
    font-size: 21px;
}

@media (max-width: 600px) {
    .action-success-toast {
        top: 50%;
        right: auto;
        left: 50%;
        width: calc(100vw - 24px);
        min-height: 104px;
        transform: translate(-50%,calc(-50% - 10px)) scale(.96);
    }

    .action-success-toast.visible {
        transform: translate(-50%,-50%) scale(1);
    }
}

/* =========================================================
   V1.9.5 — CHARGEMENT ÉCHELONNÉ DES IMAGES DE SET
   ========================================================= */

.set-binder-image-wrap.image-pending {
    position: relative;
    background:
        radial-gradient(
            circle at center,
            rgba(217,164,65,.08),
            rgba(10,13,19,.98) 58%
        );
}

.set-binder-image-wrap.image-pending::before {
    content: "";
    position: absolute;
    z-index: 4;
    top: 50%;
    left: 50%;
    width: 24px;
    height: 24px;
    margin: -12px 0 0 -12px;
    border: 2px solid rgba(255,255,255,.13);
    border-top-color: rgba(217,164,65,.95);
    border-radius: 999px;
    pointer-events: none;
    animation: set-thumb-loader .72s linear infinite;
}

.set-binder-image-wrap.image-pending img {
    opacity: .18;
}

.set-binder-image-wrap:not(.image-pending) img {
    opacity: 1;
    transition:
        opacity .24s ease,
        filter .25s ease,
        transform .25s ease;
}

.set-binder-image-wrap.image-load-error::before {
    display: none;
}

@keyframes set-thumb-loader {
    to {
        transform: rotate(360deg);
    }
}


/* =========================================================
   V1.9.6 — DÉPLACEMENT EMPLACEMENTS
   ========================================================= */

.location-group-tabs {
    margin: 10px 0 12px;
}

.location-picker-bottom {
    grid-template-columns: auto 64px 1fr;
}

.location-picker-bottom a {
    justify-self: end;
}

#location-move-selected:disabled {
    opacity: .42;
    cursor: not-allowed;
}


/* =========================================================
   V1.9.7 — SUPPRESSION DEPUIS UN EMPLACEMENT
   ========================================================= */

.location-delete-dialog {
    width: min(560px,100%);
}

.location-delete-preview-card {
    grid-template-columns: 64px 1fr;
}

.location-delete-preview-card img,
.location-delete-preview-card .collection-delete-preview-placeholder {
    width: 64px;
}

.location-card-actions .location-delete-open {
    cursor: pointer;
}

/* V1.9.8 — backlinks uniformes */
.app-back-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0 0 14px;
    text-decoration: none;
    cursor: pointer;
}


/* =========================================================
   V1.9.9 — RETRAIT D'UNE CARTE DU DECK
   ========================================================= */

.deck-remove-dialog {
    width: min(560px,100%);
}

.deck-remove-preview-card {
    grid-template-columns: 64px 1fr;
}

.deck-remove-preview-card img,
.deck-remove-preview-card .collection-delete-preview-placeholder {
    width: 64px;
}

.deck-remove-preview-card small {
    margin-top: 5px;
    display: block;
    color: var(--muted);
    font-size: 9px;
}
