/* MALYA V28 · Étape 2 — tokens visuels centralisés. Aucune règle métier. */
:root {
  --color-brand:#183A30;
  --color-brand-hover:#245344;
  --color-brand-contrast:#FFFFFF;
  --color-accent:#C89A4A;
  --color-accent-contrast:#262017;
  --color-background:#F9F8F4;
  --color-surface:#FFFFFF;
  --color-surface-muted:#F0F3EE;
  --color-text:#20342B;
  --color-text-muted:#50675A;
  --color-border:#CED9CF;
  --color-success:#206B42;
  --color-warning:#875800;
  --color-error:#AC302D;
  --color-info:#175C84;
  --color-focus:#A57424;
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;
  --space-5:20px;--space-6:24px;--space-7:28px;--space-8:32px;
  --radius-sm:8px;--radius-md:12px;--radius-lg:18px;--radius-xl:24px;
  --shadow-1:0 2px 10px rgba(20,48,37,.08);
  --shadow-2:0 14px 38px rgba(20,48,37,.14);
  --font-display:'Manrope',system-ui,-apple-system,sans-serif;
  --font-body:'DM Sans',system-ui,-apple-system,sans-serif;
  --z-content:1;--z-navigation:120;--z-dialog:9000;--z-toast:10000;
}
/* Contrôle de la palette sombre opt-in. Aucun basculement automatique non validé. */
:root[data-theme="dark"] {
  --color-background:#111D18;--color-surface:#21382D;
  --color-surface-muted:#283B34;--color-text:#F4F4ED;
  --color-text-muted:#CDD8CE;--color-border:#52665B;
  --color-brand-contrast:#FFFFFF;
  color-scheme:dark;
}

@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;600;700;800&display=swap');
:root{--green:#103e37;--deep:#082b27;--jade:#177667;--gold:#bd9961;--ivory:#f8f6f0;--card:#fff;--line:#e4e9e3;--muted:#64736d;--ink:#1e2d28;--danger:#c45048}*{box-sizing:border-box}body{margin:0;background:var(--ivory);color:var(--ink);font:14px 'DM Sans',sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}.layout{display:grid;grid-template-columns:246px minmax(0,1fr);min-height:100vh}.side{background:var(--deep);color:#e8f1eb;padding:25px 16px;position:sticky;top:0;height:100vh;overflow:auto}.brand{font:800 26px Manrope;letter-spacing:2px;color:#f8f2df;margin:5px 10px 6px}.subtitle{font-size:11px;letter-spacing:2px;color:#c0b296;margin:0 10px 25px}.navbtn{display:block;width:100%;border:0;background:none;text-align:left;color:#c9d8d0;border-radius:12px;padding:13px 14px;margin:3px 0}.navbtn:hover,.navbtn.active{background:#205247;color:#fff}.main{padding:26px 32px;min-width:0}.top{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:28px}.top h1{font:800 26px Manrope;margin:4px 0}.muted{color:var(--muted)}.tag{display:inline-block;color:#865f28;background:#fbf4e6;padding:5px 11px;border-radius:100px;font-size:11px;font-weight:700}.button{border:0;background:var(--green);color:#fff;border-radius:10px;padding:11px 17px;font-weight:700}.button.alt{background:#e8f0ec;color:var(--green)}.button.danger{background:#faebea;color:#a33731}.button:disabled{opacity:.5;cursor:not-allowed}.login{max-width:450px;margin:10vh auto;background:white;border:1px solid var(--line);box-shadow:0 30px 80px #15473b17;border-radius:26px;padding:36px}.login h1{font:800 31px Manrope;color:var(--green);margin:0}.login p{color:var(--muted)}.field{display:flex;flex-direction:column;gap:7px;margin:12px 0;min-width:0}.field label{font-size:12px;color:#52665b;font-weight:700}.field input,.field select,.field textarea,.filter{padding:12px;border-radius:9px;border:1px solid #d6dfd8;background:white;color:var(--ink);width:100%;min-width:0}.field textarea{min-height:80px}.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.stat,.card{background:var(--card);border:1px solid var(--line);border-radius:19px;padding:20px;box-shadow:0 6px 25px #16433306}.stat strong{font:800 23px Manrope;display:block;margin:12px 0 5px}.stat small{color:var(--muted)}.cols{display:grid;grid-template-columns:2fr 1fr;gap:18px;margin-top:18px}.sectionhead{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:18px 0}.sectionhead h2{font:800 19px Manrope;margin:0}.tablewrap{overflow:auto;background:white;border:1px solid var(--line);border-radius:17px}table{border-collapse:collapse;width:100%;min-width:650px}th,td{padding:14px 15px;text-align:left;border-bottom:1px solid #edf0ec}th{font-size:11px;letter-spacing:.6px;color:#627269;text-transform:uppercase;background:#f8faf7}td{font-size:13px}.pill{border-radius:20px;background:#e9f3ed;color:#146655;padding:5px 9px;font-weight:700;font-size:11px}.pill.warn{background:#fff3df;color:#856326}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:15px 0}.toolbar .filter{max-width:290px}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 15px}.drawer{position:fixed;inset:0;background:#081e19a6;z-index:20;display:flex;justify-content:flex-end}.drawer .panel{width:min(610px,100%);background:#fff;padding:25px;overflow:auto;height:100%}.panel h2{font:800 23px Manrope}.notice{padding:13px 15px;background:#f0f7f2;border-radius:11px;color:#335c49;margin:14px 0}.empty{padding:50px 20px;text-align:center;color:#819087}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.link{border:0;background:none;color:var(--jade);text-decoration:underline;padding:5px}.spark{height:180px;width:100%}#toast{position:fixed;right:20px;bottom:18px;z-index:100;background:#0d443a;color:white;padding:14px 20px;border-radius:12px;display:none;max-width:450px}#toast.err{background:#ad3735}a{color:var(--jade)}@media(max-width:1100px){.grid{grid-template-columns:repeat(2,1fr)}.cols{grid-template-columns:1fr}}@media(max-width:750px){.layout{grid-template-columns:1fr}.side{height:auto;position:relative;padding:10px;display:flex;align-items:center;gap:10px;overflow:auto}.brand{font-size:17px;margin:0}.subtitle{display:none}.navbtn{width:auto;white-space:nowrap}.main{padding:15px}.top h1{font-size:21px}.grid{grid-template-columns:1fr 1fr}.formgrid{grid-template-columns:1fr}.login{margin:5vh 12px}.stat strong{font-size:18px}}

/* MALYA Signature / LWS — design system V2 */
:root{--green:#0e4037;--deep:#092b25;--jade:#1c7968;--gold:#c7a36c;--ivory:#f7f5ef;--line:#dfe9e1;--ink:#20332d}
body{background:radial-gradient(ellipse at 90% -12%,#e7efe7 0,transparent 45%),var(--ivory);font-size:14px;-webkit-font-smoothing:antialiased}
.side{background:linear-gradient(165deg,#0e4237,#092820 80%);border-right:1px solid #245549;box-shadow:12px 0 45px #0a40300a}
.brand{letter-spacing:3px;font-size:27px}.subtitle{color:#d4bb8c}
.navbtn{transition:background .18s,transform .18s;font-weight:600}.navbtn:hover{transform:translateX(3px)}.navbtn.active{background:#2a6958;box-shadow:inset 3px 0 0 #d2ac75}
.main{max-width:1750px;width:100%;margin:0 auto;padding:30px 38px}.top{border-bottom:1px solid var(--line);padding-bottom:20px}
.top h1{font-size:29px;letter-spacing:-.7px}.stat,.card,.tablewrap{box-shadow:0 12px 40px #07382b0b,0 2px 5px #07382b05;border-color:#e0e9e1;transition:box-shadow .18s}
.stat:hover,.card:hover{box-shadow:0 16px 44px #07382b13}.stat strong{font-size:27px;letter-spacing:-.5px}
.button{border-radius:12px;padding:12px 18px;transition:filter .15s,transform .15s}.button:hover:not(:disabled){filter:brightness(1.07);transform:translateY(-1px)}
.field input:focus,.field textarea:focus,.field select:focus,.filter:focus{outline:3px solid #b5d8c8;outline-offset:1px;border-color:#2e7a62}
th{background:#f2f7f2}tbody tr:hover{background:#f5faf6}.panel{box-shadow:-18px 0 55px #031d1540}.login{border-top:5px solid var(--gold)}
@media(max-width:750px){.main{padding:15px}.side{box-shadow:none}.navbtn{font-size:12px}.top h1{font-size:22px}.grid{grid-template-columns:1fr 1fr}.stat{padding:14px}}
@media(max-width:420px){.grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}

/* Version correctifs UX, centrage des modales et photographie locale */
.login{position:relative;z-index:1;overflow:hidden;max-width:460px;box-shadow:0 35px 90px #04190f70;border:1px solid #ffffff5c;backdrop-filter:blur(13px)}
body:has(.login){background:linear-gradient(115deg,#092c28a8,#0c4035bd),url('assets/hero.jpg') center / cover fixed no-repeat!important;min-height:100vh}
body:has(.login) #app{min-height:100vh;display:grid;place-items:center;padding:24px}
body:has(.login) .login h1{letter-spacing:5px;font-size:45px}
.drawer{position:fixed!important;inset:0!important;display:flex!important;align-items:center!important;justify-content:center!important;overflow:auto;padding:20px;z-index:1000;background:#071b1ac2;backdrop-filter:blur(5px)}
.panel{position:relative!important;top:auto!important;right:auto!important;left:auto!important;max-width:780px!important;width:min(100%,780px)!important;max-height:calc(100vh - 42px);overflow-y:auto;margin:auto!important;border-radius:22px!important;box-shadow:0 28px 100px #00140e6e!important}
.modal-open{overflow:hidden}
.panel .sectionhead{position:sticky;top:0;z-index:2;background:#fff;padding:12px 0;border-bottom:1px solid var(--line)}
.preview-img{max-width:100%;max-height:180px;object-fit:contain;margin-top:8px;border-radius:12px;border:1px solid var(--line)}
.button.danger{color:#a9372e;background:#ffeded;border:1px solid #f1aaaa}
.login::before{content:'';position:absolute;inset:0 0 auto;height:5px;background:linear-gradient(90deg,#c7a36c,#f3e2be)}
@media(max-width:650px){.drawer{padding:10px!important}.panel{max-height:calc(100dvh - 20px);border-radius:15px!important}.login{width:100%}}

/* PRESTIGE DORE — maquette de référence : landing professionnelle */
:root{--malya-gold:#eba919;--malya-orange:#e5a01c;--malya-night:#10191a}
.landing{min-height:100svh;position:relative;display:flex;flex-direction:column;color:#fff;background:#1a241e url('assets/hero.jpg') center center/cover no-repeat;isolation:isolate}
.landing-shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#080f0ddc 0%,#0b120db5 45%,#090d0cb3 100%)}
.landing-nav{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:25px clamp(22px,5vw,86px);max-width:1680px;width:100%;margin:auto auto 0}
.landing-logo{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none}.landing-logo b{font:800 28px Manrope;letter-spacing:1px}.landing-logo small{display:block;letter-spacing:1.8px;font-weight:700;font-size:9px;color:#ffead0}.landing-mark{font-size:32px;color:var(--malya-gold)}
.landing-links{display:flex;align-items:center;gap:clamp(12px,2vw,35px)}.landing-links a{color:#f9f7f2;text-decoration:none;font-weight:650;font-size:13px}.landing-links a:hover{color:var(--malya-gold)}
.landing-outline,.landing-primary{border-radius:999px;border:1px solid #e7b454;background:#9f6a2133;color:#fff;padding:13px 24px;font-weight:800;transition:transform .16s,background .16s}.landing-outline:hover{background:#d19a3e50}.landing-primary{border-color:var(--malya-gold);background:linear-gradient(115deg,#ffcb50,#e7a116);color:#18180e;box-shadow:0 8px 35px #b97e1840}.landing-primary:hover{transform:translateY(-2px);background:#ffca45}.landing-primary.full{width:100%;margin-top:16px}
.landing-center{flex:1;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(290px,.8fr);align-items:center;gap:50px;max-width:1530px;padding:75px clamp(22px,5vw,86px) 85px;width:100%;margin:auto}
.landing-copy{max-width:760px}.landing-pill{display:inline-flex;align-items:center;border:1px solid #dfc47756;border-radius:50px;background:#194835ad;padding:9px 14px;font-size:10px;color:#e4f5d6;font-weight:800;letter-spacing:1.2px}
.landing-copy h1{font:800 clamp(42px,4.5vw,72px)/1.12 Manrope,sans-serif;letter-spacing:-2.8px;margin:24px 0}.landing-copy h1 em{color:#ffc04c;font-style:normal}.landing-copy p{color:#f2f0e9;max-width:610px;font-size:16px;line-height:1.75}.landing-actions{display:flex;gap:13px;flex-wrap:wrap;margin-top:30px}.landing-actions .large{padding:14px 29px}
.landing-features{padding:30px;border-radius:25px;background:#070c0b9e;border:1px solid #f2e8bc36;backdrop-filter:blur(12px);display:grid;gap:24px;max-width:430px;justify-self:end}.landing-features>div{display:flex;align-items:center;gap:17px}.landing-features span{font-size:30px;width:40px;text-align:center;color:#ffc045}.landing-features p{margin:0;display:grid;gap:5px}.landing-features b{font-size:15px}.landing-features small{color:#c9d0c8}
.landing-service-row{width:calc(100% - 50px);max-width:1450px;margin:0 auto 38px;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.landing-service-row>div{display:grid;grid-template-columns:40px 1fr;align-content:center;gap:1px 12px;padding:18px 20px;border-radius:17px;color:#232e25;background:#fff;box-shadow:0 10px 30px #08100860}.landing-service-row span{grid-row:span 2;font-size:25px;color:#da961c}.landing-service-row b{font-size:14px}.landing-service-row small{font-size:12px;color:#6a7770}
.landing-login-backdrop{position:fixed;z-index:2500;inset:0;background:#050d0ac9;display:grid;place-items:center;padding:20px;backdrop-filter:blur(9px)}.landing-login-backdrop[hidden]{display:none!important}.landing-login-panel{color:#19332b;background:#fff;position:relative;border-radius:26px;padding:35px;width:min(440px,100%);box-shadow:0 26px 100px #0009}.landing-login-panel h2{font:800 27px Manrope;margin:18px 0 9px}.landing-login-panel>p{color:#68726d;line-height:1.6}.landing-login-panel .landing-pill{color:#78521c;background:#fff4da;border-color:#ffe1a7}.landing-login-panel .field input{border-radius:12px;padding:15px}.landing-login-panel .auth-note{display:block;text-align:center;margin-top:18px;color:#82908a}.landing-x{position:absolute;right:20px;top:17px;border:0;background:#f4f4f0;border-radius:50%;width:34px;height:34px;font-size:23px;color:#233a30}
/* Premium back-office harmonisé */
.side{background:linear-gradient(160deg,#161d1b,#243a2f)}.navbtn.active{background:#bc891c26;box-shadow:inset 3px 0 0 #ffbe3c}.subtitle{color:#e4b859}.button{background:#184c3f}.button.alt{background:#f4f1e7;color:#604a20}.top .tag{background:#fff2d7;color:#8b641e}.stat:hover{border-color:#e2bd76}
@media(max-width:1050px){.landing-links{display:none}.landing-center{grid-template-columns:1fr;gap:30px;padding-top:45px}.landing-features{justify-self:start;max-width:none;grid-template-columns:repeat(2,minmax(0,1fr))}.landing-service-row{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.landing-nav{padding:18px 22px}.landing-logo b{font-size:21px}.landing-logo small{font-size:7px}.landing-center{padding:35px 22px 48px}.landing-copy h1{font-size:42px;letter-spacing:-1.8px}.landing-copy p{font-size:14px}.landing-features{grid-template-columns:1fr;padding:20px;gap:14px}.landing-service-row{margin-bottom:20px;gap:8px;width:calc(100% - 30px)}.landing-service-row>div{padding:12px;grid-template-columns:28px 1fr}.landing-service-row span{font-size:20px}.landing-service-row b{font-size:12px}.landing-service-row small{font-size:10px}}


.landing-logo img{width:54px;height:54px;object-fit:contain;filter:drop-shadow(0 8px 25px rgba(0,0,0,.22))}
.landing-logo .wordmark{display:flex;flex-direction:column;gap:2px}
.auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:8px}
.auth-brand img{width:64px;height:64px;object-fit:contain}
.auth-brand-text b{display:block;font:800 28px Manrope;letter-spacing:1px;color:#16342c}
.auth-brand-text small{display:block;font-size:10px;letter-spacing:1.6px;color:#8b6a30;font-weight:800}
.side-brand-wrap{display:flex;align-items:center;gap:10px;margin:4px 8px 14px}.side-brand-wrap img{width:48px;height:48px;object-fit:contain;border-radius:12px;background:#fff;padding:4px}.side-brand-wrap .brand{margin:0}.side-brand-wrap .subtitle{margin:0}
@media(max-width:600px){.landing-logo img{width:44px;height:44px}.auth-brand img{width:56px;height:56px}}

/* MALYA admin central exclusif, catalogue avec visuels */
.admin-wrap{min-height:100vh;background:#f6f5f1;color:#20322a}.admin-header{padding:15px clamp(18px,4vw,70px);background:#171d1b;color:#fff;display:flex;align-items:center;gap:15px}.admin-header img{width:62px;height:62px;object-fit:contain}.admin-header strong{font:800 28px Manrope;display:block;color:#f1b33f}.admin-header small{color:#d6d4ce}.admin-header button{margin-left:auto}.admin-heading,.admin-area{max-width:1420px;margin:0 auto;padding:28px clamp(18px,4vw,55px)}.admin-heading{padding-bottom:8px}.admin-heading h1{font:800 clamp(29px,4vw,47px) Manrope;margin:12px 0}.admin-heading p{color:#6c7b72;max-width:790px;line-height:1.65}.admin-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-bottom:28px}.admin-stats>div{padding:24px;background:white;border:1px solid #e2e7e3;border-radius:18px}.admin-stats span{display:block;color:#708177}.admin-stats strong{display:block;font:800 35px Manrope;margin-top:8px;color:#ad7c20}.admin-catalog{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:19px}.admin-tile{background:#fff;border:1px solid #e6e9e3;border-radius:20px;overflow:hidden;box-shadow:0 10px 35px #1c31200b;cursor:pointer;transition:transform .2s,box-shadow .2s}.admin-tile:hover{transform:translateY(-4px);box-shadow:0 16px 38px #18261e20}.admin-tile img{width:100%;height:170px;object-fit:cover}.admin-tile>div{padding:20px}.admin-tile h3{font:800 19px Manrope;margin:12px 0 5px}.admin-tile small{display:block;color:#738176;margin-bottom:17px}.admin-profile{display:grid;grid-template-columns:minmax(100px,180px) 1fr;gap:18px;align-items:center}.admin-profile img{width:100%;height:170px;object-fit:cover;border-radius:16px}.admin-profile h2{margin:0 0 9px}@media(max-width:650px){.admin-header small{display:none}.admin-header img{width:44px;height:44px}.admin-header strong{font-size:21px}.admin-stats{grid-template-columns:1fr}.admin-profile{grid-template-columns:1fr}.admin-profile img{height:170px}}

.line-table td{min-width:145px}.line-table select,.line-table input{border:1px solid #d6dfd8;background:white;border-radius:9px;padding:11px;width:100%;min-width:120px}.line-table tr:nth-child(even){background:#f9faf7}

/* V8 : lisibilité, interactions accessibles, cartes premium */
:root{--malya-gold:#d6a442}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #f0b94b;outline-offset:3px}
.admin-tile,.card,.stat{transition:transform .18s ease,box-shadow .18s ease}
.admin-tile:hover{transform:translateY(-3px);box-shadow:0 20px 45px #141b1b25}
.admin-tile img{background:#f4f1e8;object-fit:cover}
.tablewrap{overscroll-behavior-x:contain}
.landing{background-position:center;background-attachment:scroll}
.landing-shade{background:linear-gradient(100deg,rgba(11,22,21,.84),rgba(11,22,21,.53) 60%,rgba(11,22,21,.65))}
@media(max-width:650px){.landing-features{display:none}.landing-center{padding-top:16px}.landing-copy h1{font-size:clamp(34px,9vw,47px)}.admin-catalog{grid-template-columns:1fr}.admin-header{flex-wrap:wrap}.landing-service-row{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.admin-tile,.card,.stat{transition:none!important}}

.readiness-card{border:1px solid #e8d4ac;border-radius:18px;padding:20px;margin:18px 0;background:#fffcf6}.readiness-card h3{margin-top:0;color:#543d18}.readiness-card p{line-height:1.55;margin:9px 0}

/* Console centrale de supervision V9 */
.admin-section-nav{display:flex;flex-wrap:wrap;gap:9px;margin:18px 0 25px}.admin-section-nav button{background:#fff;color:#364940;border:1px solid #dedfd3;border-radius:999px;font-weight:800;padding:13px 19px;cursor:pointer}.admin-section-nav button.active{background:#25362f;color:#eac778;border-color:#25362f}.admin-risk{background:#fff8e5;color:#6f5319;border:1px solid #ead7a2}.admin-area[hidden]{display:none!important}.admin-area .toolbar label{font-size:12px;color:#435449;font-weight:700;display:flex;flex-direction:column;gap:5px}.admin-area .tablewrap{overflow-x:auto}.admin-area td{white-space:nowrap}.admin-area .admin-stats{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:1000px){.admin-area .admin-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.admin-area .admin-stats{grid-template-columns:1fr}}

/* V11 - hauteur de modale et défilement fiables */
html,body{min-height:100%;overflow-x:hidden}body.modal-open{overflow:hidden!important}
.drawer{height:100dvh!important;overflow-y:auto!important;overscroll-behavior:contain;align-items:flex-start!important}
.drawer .panel{flex:0 0 auto;margin:0 auto!important;max-height:calc(100dvh - 32px)!important;overflow:auto!important;overscroll-behavior:contain;scrollbar-gutter:stable}
.admin-profile{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.admin-profile img{width:160px;height:120px;object-fit:cover;border-radius:16px}
.admin-area{min-height:50vh}.readiness-card{margin-top:20px;padding:18px;border:1px solid #e6e0d2;border-radius:14px;background:#fcfaf5}
@media(max-width:650px){.drawer .panel{max-height:calc(100dvh - 12px)!important}.admin-profile img{width:100%;height:180px}}

/* V12 : modales défilables même après une action sur les onglets */
html{scrollbar-gutter:stable}body.modal-open #app{pointer-events:none}.drawer{position:fixed!important;inset:0!important;height:100dvh!important;overflow:auto!important;align-items:flex-start!important;touch-action:pan-y!important}.drawer .panel{max-height:calc(100dvh - 24px)!important;overflow:auto!important;overscroll-behavior:contain!important;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable}.panel .sectionhead{top:0!important;z-index:4!important}@media(max-width:650px){.drawer{padding:6px!important}.drawer .panel{max-height:calc(100dvh - 12px)!important}}


/* MALYA PRESTIGE V14 — VISUAL SYSTEM: visuels only, no business logic changes */
:root{--green:#18372f;--deep:#102822;--jade:#28745b;--gold:#c49a51;--ivory:#faf8f3;--line:#e6e9e1;--ink:#18332b;--malya-gold:#e5b75d}
html{scroll-behavior:smooth;scrollbar-gutter:stable}body{background:linear-gradient(130deg,#f9f8f4 8%,#f2f4ed 64%,#faf7ef);color:#1f3430;line-height:1.5}button{touch-action:manipulation}button,a,.navbtn{transition:transform .22s cubic-bezier(.2,.8,.2,1),box-shadow .22s,background .22s,color .22s,filter .22s}button:focus-visible,a:focus-visible,.navbtn:focus-visible{outline:3px solid #d3a44b;outline-offset:3px}button:active{transform:scale(.98)!important}
/* Landing: brighter premium atmosphere while keeping the approved photography */
.landing{background-position:center 53%;background-attachment:scroll;overflow:hidden}.landing-shade{background:linear-gradient(105deg,rgba(9,23,19,.80) 0%,rgba(13,32,24,.69) 42%,rgba(13,29,24,.48) 100%)}.landing:after{content:'';position:absolute;z-index:-1;inset:auto -10% -27% -10%;height:45%;background:radial-gradient(ellipse at center,#d3a75c2e,transparent 70%);pointer-events:none}
.landing-nav{border-bottom:1px solid #f7e7bd30;background:linear-gradient(to bottom,#14291d55,transparent);margin-top:0;backdrop-filter:blur(3px)}.landing-center{padding-top:clamp(45px,8vh,110px);padding-bottom:clamp(38px,8vh,88px)}.landing-copy h1{max-width:810px;text-wrap:balance;text-shadow:0 10px 40px #02130d64}.landing-copy h1 em{color:#f7c86e}.landing-copy p{color:#fffcf0;max-width:580px}.landing-pill{border-color:#f8d28c80;color:#fbe2a4;background:#123b2bcc}.landing-primary{background:linear-gradient(128deg,#f9d88b 0%,#e7b65b 52%,#b97c31 100%);color:#18291f;border:1px solid #f8dfaa;box-shadow:0 12px 30px #0c1b1540,0 4px 15px #d99d3e40}.landing-primary:hover{box-shadow:0 14px 38px #c398525e;transform:translateY(-3px)}.landing-features{border:1px solid #fff9df4d;background:linear-gradient(140deg,#091b15ba,#10271cb7);border-radius:28px;box-shadow:0 28px 80px #071a1269}.landing-features>div{padding:5px 3px;transition:transform .2s}.landing-features>div:hover{transform:translateX(5px)}.landing-features span{color:#f6c66e}.landing-service-row>div{border:1px solid #f0dfc1;border-radius:22px;box-shadow:0 15px 45px #14251a3b;transition:transform .25s,box-shadow .25s}.landing-service-row>div:hover{transform:translateY(-7px);box-shadow:0 22px 48px #10281d60}.landing-service-row span{color:#b98942}
.landing-login-panel{border:1px solid #e9d3ad;border-radius:30px;box-shadow:0 30px 100px #020e0a91}.landing-login-panel:before{content:'';position:absolute;inset:0 0 auto;height:5px;border-radius:30px 30px 0 0;background:linear-gradient(90deg,#9e7634,#f6d996,#a47e43)}
/* Workspace */
.layout{grid-template-columns:260px minmax(0,1fr)}.side{background:linear-gradient(165deg,#142d26 0%,#0e2420 75%,#0a1d1a);border-right:1px solid #3a523e;box-shadow:10px 0 35px #1b373012}.navbtn{border-radius:13px;min-height:44px;margin:5px 0;letter-spacing:.05px}.navbtn:hover{background:#2d503f;transform:translateX(4px)}.navbtn.active{background:linear-gradient(92deg,#c3984840,#28725b28);border:1px solid #edcb9040;color:#fff;box-shadow:inset 3px 0 #efc77c}.main{padding:clamp(18px,2.7vw,40px) clamp(16px,3vw,48px)}.top{align-items:flex-start;flex-wrap:wrap;gap:16px;padding-bottom:24px}.top h1{font-size:clamp(22px,2.2vw,34px);line-height:1.15}.tag{letter-spacing:1px}.stat,.card,.tablewrap,.admin-card{border:1px solid #e4e8dd!important;border-radius:23px!important;background:linear-gradient(156deg,#fff,#fffefa);box-shadow:0 10px 38px #1c493010,0 3px 8px #18382b05;transition:transform .23s,box-shadow .23s,border-color .23s}.stat:hover,.card:hover,.admin-card:hover{transform:translateY(-3px);border-color:#dac196!important;box-shadow:0 18px 45px #2647311c}.stat strong{color:#204c3a}.sectionhead h2{letter-spacing:-.5px}.button{background:linear-gradient(110deg,#245d48,#174b3c);border:1px solid #1e5a42;min-height:42px;box-shadow:0 6px 16px #164b3221}.button.alt{border:1px solid #e7dabc;background:#f9f5eb;color:#63512d;box-shadow:none}.button:hover:not(:disabled){box-shadow:0 9px 19px #173e2a31}.field label{color:#3e554a}.field input,.field textarea,.field select,.filter{border:1px solid #dbe4d7;border-radius:13px;min-height:43px;box-shadow:0 2px 5px #243b2708}.field input:focus,.field textarea:focus,.field select:focus,.filter:focus{outline:3px solid #e9cea06e;outline-offset:1px;border-color:#b3924d}th{background:#f5f7f2;letter-spacing:.6px;color:#476253}th,td{padding:13px 16px}tbody tr:hover{background:#fcf8ef}.tablewrap{scrollbar-width:thin;scrollbar-color:#c4ad7c #f5f3ed}.panel{border-radius:26px!important;border:1px solid #e0d7c5;box-shadow:0 32px 100px #020f0a77!important}.drawer{backdrop-filter:blur(9px);overscroll-behavior:contain}.panel .sectionhead{border-bottom:1px solid #e7dfce}.notice{border:1px solid #dfebdb;background:#f2f8f0}.pill{border:1px solid #d4e6d7}
/* Admin */
.admin-wrap{background:linear-gradient(130deg,#fbfaf6,#f4f6f0 65%,#fdf8ef)}.admin-header{background:linear-gradient(110deg,#0f2821,#1d3e30);box-shadow:0 10px 36px #0e302329}.admin-heading h1{letter-spacing:-1.6px}.admin-card{overflow:hidden}.admin-card img{object-fit:cover}.admin-area{padding-top:18px}
/* Motion: only entrance and hover, automatically disabled for reduced motion */
@keyframes malya-enter{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@keyframes malya-glow{0%,100%{filter:drop-shadow(0 0 0 #eebd5500)}50%{filter:drop-shadow(0 0 11px #eebd5544)}}
.landing-copy,.landing-features,.landing-service-row{animation:malya-enter .75s both}.landing-features{animation-delay:.12s}.landing-service-row{animation-delay:.23s}.landing-logo img{animation:malya-glow 6s ease-in-out infinite}.stat,.admin-card{animation:malya-enter .4s ease-out both}.stat:nth-child(2),.admin-card:nth-child(2){animation-delay:.04s}.stat:nth-child(3),.admin-card:nth-child(3){animation-delay:.08s}.stat:nth-child(4),.admin-card:nth-child(4){animation-delay:.12s}
/* Responsive touch and scroll */
@media(max-width:1100px){.layout{grid-template-columns:220px minmax(0,1fr)}.main{padding:23px}.landing-features{justify-self:stretch;max-width:100%}}
@media(max-width:800px){.layout{display:block}.side{height:auto;position:sticky;top:0;z-index:150;display:flex;align-items:center;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;padding:10px 12px;gap:8px}.side-brand-wrap{flex:0 0 auto;margin:0}.side-brand-wrap img{width:38px;height:38px}.side-brand-wrap .brand{font-size:18px}.side-brand-wrap .subtitle{display:none}.side .navbtn{flex:0 0 auto;width:auto;padding:11px 14px;white-space:nowrap;font-size:12px}.main{padding:20px 14px}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.landing-center{grid-template-columns:1fr;gap:30px}.landing-features{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-header{flex-wrap:wrap}.admin-header button{margin-left:0}.drawer{padding:12px}}
@media(max-width:560px){.landing-nav{padding:18px 17px}.landing-center{padding:35px 20px}.landing-copy h1{font-size:clamp(36px,9vw,46px);letter-spacing:-1.6px}.landing-features{grid-template-columns:1fr}.landing-service-row{grid-template-columns:repeat(2,minmax(0,1fr));width:calc(100% - 28px);gap:10px}.landing-service-row>div{padding:12px 9px;min-width:0}.landing-service-row b{font-size:12px}.landing-service-row small{font-size:10px}.grid{grid-template-columns:1fr}.cols,.formgrid{grid-template-columns:1fr}.top .row{width:100%}.main{padding:14px 12px}.stat,.card{padding:16px}.panel{max-height:calc(100dvh - 16px)!important;border-radius:18px!important}.drawer{padding:8px!important}.landing-login-panel{padding:26px 19px}.admin-heading,.admin-area{padding-left:15px;padding-right:15px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.landing-copy,.landing-features,.landing-service-row,.landing-logo img,.stat,.admin-card{animation:none!important}.stat,.card,.admin-card,.landing-service-row>div{transition:none!important}}

/* Centre de notifications V17 */
.notification-list{max-height:55vh;overflow:auto;display:grid;gap:10px;overscroll-behavior:contain}
.notification-item{display:flex;justify-content:space-between;align-items:start;gap:16px;border:1px solid #dfe9e1;border-radius:16px;padding:16px;background:#fff}
.notification-item.is-new{background:#fffaf0;border-color:#dec89b}
.notification-item b{color:#20382f}.notification-item small{display:block;color:#7c827c;margin:5px 0}.notification-item p{margin:0;white-space:pre-wrap;line-height:1.55}
@media(max-width:560px){.notification-item{flex-direction:column}.notification-item button{align-self:flex-start}}

/* V18 reporting ergonomics */
.report-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:20px 0}
.report-head .toolbar label{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-weight:650}
.report-head .toolbar .filter{max-width:180px}
.report-head .cols{margin-top:18px}.report-head .cols .card{min-width:0}
@media(max-width:1000px){.report-stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.report-stats{grid-template-columns:1fr}.report-head{padding:14px}.report-head .toolbar .filter{max-width:100%}}
@media print{.side,.top,.report-head .toolbar,.landing-nav{display:none!important}.layout{display:block}.main{padding:0}.report-head{box-shadow:none;border:0}}

/* V19 — Photo de profil / contraste / affichage responsive */
.profile-picture{width:112px;height:112px;border-radius:50%;object-fit:cover;border:3px solid #c79f5d;box-shadow:0 6px 20px #18382b22;display:block;margin:8px 0 14px}.field input[type=file]{min-height:44px}.card img,.tablewrap img{object-fit:cover} @media(max-width:650px){.profile-picture{width:88px;height:88px}.landing-center{padding-top:22px}}

/* MALYA — fiches collaborateurs */
.staff-editor-head{display:flex;gap:16px;align-items:center;padding:14px 0 22px;border-bottom:1px solid var(--line);margin-bottom:14px}
.staff-editor-head img{width:70px;height:70px;object-fit:cover;border-radius:18px;background:#f4f0e9;border:1px solid var(--line)}
.staff-editor-head strong,.staff-editor-head small{display:block}.staff-editor-head small{margin-top:5px;color:var(--muted)}
@media(max-width:620px){.staff-editor-head img{width:58px;height:58px}}

.privacy-footer{text-align:center;margin:0 0 20px}.privacy-footer a{color:#fff;text-decoration:underline;text-underline-offset:4px;font-size:12px}

/* MALYA V23 — Accueil épuré et connexion accessible */
body.auth-open{overflow:hidden!important}
body.auth-open #app{pointer-events:auto!important}
body.auth-open .landing-login-backdrop,body.auth-open .landing-login-panel,body.auth-open #login,body.auth-open #login *{pointer-events:auto!important}
.landing-login-backdrop{isolation:isolate;z-index:3000!important;overflow-y:auto;overscroll-behavior:contain}
.landing-login-panel{z-index:1;max-height:calc(100dvh - 32px);overflow-y:auto;touch-action:pan-y}
.landing-login-panel input{position:relative;z-index:2;pointer-events:auto!important;background:#fff!important;color:#17352b!important;opacity:1!important;caret-color:#17352b}
.landing-login-panel button[type=submit]{position:relative;z-index:2;pointer-events:auto!important}
.landing-login-panel::before{pointer-events:none}
.landing-shade,.landing::after{pointer-events:none}
.landing-nav{margin-top:0;margin-bottom:0}
.landing-center{grid-template-columns:1fr;justify-content:center;align-content:center;min-height: min(72vh,740px);max-width:1180px;padding-top:80px;padding-bottom:80px}
.landing-copy{max-width:890px}.landing-copy h1{max-width:920px}.landing-copy p{max-width:650px}
.privacy-footer{position:relative;text-align:center;margin:0 auto 25px;padding:0 20px}.privacy-footer a{color:#f7e1b5;text-decoration:underline;text-underline-offset:4px}
@media(max-width:600px){.landing-center{min-height:65vh;padding:32px 20px}.landing-login-backdrop{padding:8px}.landing-login-panel{padding:24px 18px;max-height:calc(100dvh - 16px)}}

/* V24 : fenêtres hors de #app, saisie et scroll rétablis partout */
html,body{overflow-x:clip;overflow-y:auto;min-height:100%}
body.modal-open{overflow:hidden!important}
body.modal-open #app{pointer-events:auto!important}
#portal{position:relative;z-index:3500}
#portal:empty{display:none}
#portal .drawer{position:fixed!important;inset:0!important;z-index:3501!important;display:flex!important;align-items:flex-start!important;justify-content:center!important;overflow-y:auto!important;overscroll-behavior:contain;pointer-events:auto!important;padding:clamp(8px,2vh,22px)!important;-webkit-overflow-scrolling:touch}
#portal .panel{position:relative!important;flex:0 0 auto!important;width:min(780px,100%)!important;max-width:100%!important;height:auto!important;max-height:none!important;overflow:visible!important;margin:0 auto!important;border-radius:22px!important;pointer-events:auto!important}
#portal .panel .sectionhead{position:sticky;top:0!important;z-index:3!important;background:#fff;display:flex;align-items:center;justify-content:space-between;gap:12px}
#portal .panel input,#portal .panel textarea,#portal .panel select,#portal .panel button{pointer-events:auto!important;opacity:1}
#portal .panel button:disabled{opacity:.55!important;cursor:not-allowed}
#portal .panel .tablewrap{max-width:100%;overflow-x:auto!important}
.landing-login-backdrop:not([hidden]){pointer-events:auto!important}
.landing-login-panel,.landing-login-panel *{pointer-events:auto}
@media(max-width:650px){#portal .drawer{padding:8px!important}#portal .panel{padding:18px!important;border-radius:16px!important}#portal .panel .sectionhead{flex-wrap:wrap}}

/* MALYA V25 — navigation stable, catalogue photo, formulaires ergonomiques */
@media(min-width:801px){.layout{min-height:100dvh;align-items:stretch}.side{position:sticky!important;top:0!important;height:100dvh!important;max-height:100dvh!important;overflow-y:auto!important;overflow-x:hidden;background:#142d26!important;overscroll-behavior:contain;scrollbar-color:#9b845b #142d26;scrollbar-width:thin}.main{min-width:0}.top{position:sticky;top:0;z-index:60;background:#f9f8f4f2;backdrop-filter:blur(12px);padding:12px 8px 16px;margin-top:-12px}}
@media(max-width:800px){.side{background:#142d26!important;max-width:100vw;overflow-x:auto}.top{position:sticky;top:0;z-index:80;background:#f9f8f4f5;padding:10px;backdrop-filter:blur(12px)}}
#portal .drawer{z-index:9999!important;pointer-events:auto!important}#portal .panel{overscroll-behavior:contain;scrollbar-width:thin}#portal .panel button,#portal .panel input,#portal .panel select,#portal .panel textarea{pointer-events:auto}#portal .panel .sectionhead{position:sticky;top:-1px;z-index:9;background:#fff;display:flex;align-items:center;justify-content:space-between}
.product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:20px;margin:20px 0}.product-card{width:100%;padding:0;text-align:left;background:#fff;border:1px solid #e5e7df;border-radius:22px;overflow:hidden;box-shadow:0 10px 28px #1c403010;transition:transform .2s,box-shadow .2s}.product-card:hover,.product-card:focus-visible{transform:translateY(-4px);box-shadow:0 18px 38px #21472a24}.product-image{height:190px;background:linear-gradient(135deg,#ece8db,#f8f5ee);display:flex;align-items:center;justify-content:center;font-size:48px}.product-image img{width:100%;height:100%;object-fit:cover}.product-info{padding:16px;display:flex;gap:7px;flex-direction:column}.product-category{color:#927039;font-size:11px;font-weight:700;text-transform:uppercase}.product-info strong{font-size:16px;color:#203b2d}.product-info small{color:#68796f}.product-info .price{font-size:16px;color:#24583d}.product-action{color:#1d6247;font-weight:700;font-size:12px}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}.detail-pair,.detail-photo{border:1px solid #e8eadd;background:#fafbf8;border-radius:12px;padding:13px;display:flex;flex-direction:column;gap:7px;min-width:0;overflow-wrap:anywhere}.detail-pair strong{font-size:14px}.detail-photo{grid-column:1/-1}.detail-photo img{max-height:280px;max-width:100%;object-fit:contain;border-radius:12px}.line-table input,.line-table select{min-width:90px;width:100%;border:1px solid #d7dfd1;border-radius:9px;padding:9px}.line-table .line-barcode{display:block;color:#788373;margin-top:6px}.line-table .line-stock{font-weight:700}.field[hidden]{display:none!important}
@media(max-width:650px){.product-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.product-image{height:138px}.product-info{padding:11px}.product-info strong{font-size:13px}.detail-grid{grid-template-columns:1fr}}

/* V26 : navigation immobile, hauteur continue et consultation lisible */
@media(min-width:801px){body:has(.layout){height:100%;overflow:hidden}.layout{height:100dvh!important;min-height:0!important;overflow:hidden;grid-template-columns:260px minmax(0,1fr)}.side{position:relative!important;top:auto!important;height:100dvh!important;min-height:0!important;overflow-y:auto!important;background:#142d26!important}.main{height:100dvh!important;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.top{top:0!important}}
.movement-summary{display:flex;flex-wrap:wrap;gap:12px;margin:8px 0 18px}.movement-summary span{padding:11px 14px;border-radius:12px;background:#f2f7f2}.product-history{margin-top:20px}.product-history h3{font-size:17px}.product-history .tablewrap{max-height:280px;overflow:auto}

/* MALYA V27 — mise en page unifiée, sans blocage des formulaires */
@media(min-width:801px){
  html:has(.layout),body:has(.layout){height:100%;overflow:hidden!important}
  body:has(.layout) #app{height:100dvh;overflow:hidden}
  .layout{display:grid!important;grid-template-columns:260px minmax(0,1fr)!important;height:100dvh!important;min-height:0!important;overflow:hidden!important}
  .side{position:relative!important;top:auto!important;height:100dvh!important;max-height:100dvh!important;overflow-y:auto!important;overflow-x:hidden!important;background:#142d26!important}
  .main{height:100dvh!important;min-height:0!important;overflow-y:auto!important;overflow-x:hidden!important;scrollbar-gutter:stable!important}
  .top{position:sticky!important;top:-30px!important;z-index:20;background:#f9f8f4f5;backdrop-filter:blur(12px)}
}
@media(max-width:800px){
  html,body{overflow-x:hidden!important;overflow-y:auto!important}
  .layout{display:block!important;height:auto!important;min-height:100dvh!important;overflow:visible!important}
  .side{position:sticky!important;top:0!important;height:auto!important;max-height:78px!important;overflow-x:auto!important;overflow-y:hidden!important;z-index:120!important;background:#142d26!important}
  .main{height:auto!important;min-height:0!important;overflow:visible!important;padding:16px!important}
  .top{position:sticky!important;top:78px!important;z-index:30!important;background:#f9f8f4f5}
}
#portal{position:relative;z-index:9000}
body.modal-open{overflow:hidden!important}
body.modal-open #app{pointer-events:none!important}
#portal,#portal *{pointer-events:auto}
#portal .drawer{position:fixed!important;inset:0!important;height:100dvh!important;display:flex!important;align-items:center!important;justify-content:center!important;overflow-y:auto!important;padding:16px!important;z-index:9000!important}
#portal .panel{width:min(780px,100%)!important;max-width:780px!important;max-height:calc(100dvh - 32px)!important;min-height:0!important;overflow-y:auto!important;overflow-x:hidden!important;margin:auto!important;border-radius:20px!important;touch-action:pan-y!important}
#portal .panel .sectionhead{position:sticky!important;top:0!important;z-index:3!important;background:#fff!important;padding:14px 0!important}
#portal input,#portal select,#portal textarea,#portal button{pointer-events:auto!important;opacity:1!important}
#portal .tablewrap{overflow-x:auto!important}
.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible,button:focus-visible{outline:3px solid #c29a52!important;outline-offset:2px}
@media(prefers-reduced-motion:reduce){.button,.card,.navbtn{transition:none!important;animation:none!important}}

/* V28 — présentation des journées, sessions et promotions */
.side{position:sticky;top:0;height:100dvh;overflow-y:auto;overscroll-behavior:contain;background:#112f27!important}.layout{align-items:start}.main{min-height:100dvh}.panel{overflow-y:auto;max-height:calc(100dvh - 30px)}.tablewrap{max-width:100%;overflow-x:auto}.stat-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0}.promotion-product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;max-height:300px;overflow:auto;margin-bottom:20px}.promotion-choice{display:flex;align-items:flex-start;gap:9px;border:1px solid #dce5dc;border-radius:12px;padding:12px;background:#fff;cursor:pointer}.promotion-choice input{margin-top:3px}.promotion-choice small{display:block;color:#6a766d}.promotion-card{text-align:left;padding:0;border:1px solid #dce5dc}.promotion-card .product-info{padding:20px}.promo-value[hidden]{display:none!important}@media(max-width:800px){.stat-row{grid-template-columns:1fr}.side{max-height:42vh;height:auto;position:relative}.main{min-height:100dvh}}


/* MALYA V28 · Étape 2 — améliorations légères non destructives. */
:where(button,input,textarea,select,a,[tabindex]):focus-visible {
  outline:3px solid var(--color-focus);
  outline-offset:3px;
}
:where(.button,.navbtn){transition:background-color .16s ease, box-shadow .16s ease,transform .16s ease}
:where(.button,.navbtn):focus-visible{box-shadow:0 0 0 3px var(--color-surface),0 0 0 6px var(--color-focus)}
:where(.field input,.field select,.field textarea,.filter):focus-visible{
  border-color:var(--color-brand);outline:2px solid var(--color-focus);outline-offset:1px;
}
:where(.field label){line-height:1.45}
:where(.field input,.field select,.field textarea){min-height:44px}
:where(.button){min-height:44px}
:where(.card,.panel,.stat){box-shadow:var(--shadow-1)}
:where(.muted){color:var(--color-text-muted)}
:where(.notice){line-height:1.5}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:0.01ms!important;animation-duration:0.01ms!important;scroll-behavior:auto!important}
}


/* MALYA V28 — Étape 3 : composants visuels, non destructif sur API et logique */
#portal .malya-dialog{display:flex!important;flex-direction:column!important;overflow-x:hidden!important;overflow-y:auto!important;isolation:isolate;max-width:780px;overscroll-behavior:contain;scrollbar-gutter:stable}
#portal .malya-dialog .malya-dialog-head{position:sticky!important;top:0!important;z-index:10!important;margin:0 0 16px!important;padding:12px 0 16px!important;background:#fff!important;border-bottom:1px solid var(--color-border,#dde6dd);gap:16px}
#portal .malya-dialog-head h2{margin:0;min-width:0;overflow-wrap:anywhere;color:#183a30;line-height:1.25;font-size:clamp(19px,2.2vw,25px)}
#portal .malya-dialog-close{flex:0 0 auto;min-width:88px;min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:8px}
#portal .malya-dialog form{min-width:0;display:flex;flex-direction:column;gap:12px;flex:1 0 auto}
#portal .malya-dialog form>.row:last-child{position:sticky;bottom:-1px;z-index:8;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:16px -4px -4px!important;padding:15px 4px 6px;background:linear-gradient(#ffffffec,#ffffff);border-top:1px solid #dfe8df;backdrop-filter:blur(9px)}
#portal .malya-dialog form>.row:last-child>.button{min-height:48px;flex:1 1 150px}
#portal .malya-dialog form>.row:last-child>.button:first-child:not(.alt){order:2}
#portal .malya-dialog form>.row:last-child>.button.alt{order:1}
#portal .malya-dialog .field{gap:7px;margin:8px 0}
#portal .malya-dialog .field label{font-size:13px;font-weight:750;color:#244a39;line-height:1.45}
#portal .malya-dialog .field input,#portal .malya-dialog .field select,#portal .malya-dialog .field textarea{min-height:48px;background-color:#fff;color:#20342b;border-radius:12px;border:1px solid #cddbd0}
#portal .malya-dialog .field input:focus-visible,#portal .malya-dialog .field select:focus-visible,#portal .malya-dialog .field textarea:focus-visible{border-color:#1d694e;outline:3px solid #c1dfd0;outline-offset:1px}
#portal .malya-dialog .field input:invalid:not(:placeholder-shown){border-color:#ae4940}
#portal .malya-dialog .field small{font-size:12px;line-height:1.35}
#portal .malya-dialog .formgrid{align-items:start;column-gap:18px;row-gap:4px}
#portal .malya-dialog .notice{line-height:1.55}
#portal .malya-dialog .tablewrap{max-width:100%}
#portal .malya-dialog .button:disabled{opacity:.65;cursor:wait}
#toast{line-height:1.45;box-shadow:0 10px 35px #081f1850;max-width:min(450px,calc(100vw - 28px))}
@media(max-width:650px){#portal .malya-dialog{width:100%!important;max-height:calc(100dvh - 16px)!important;padding:17px!important}#portal .malya-dialog .formgrid{grid-template-columns:1fr}#portal .malya-dialog form>.row:last-child{padding-bottom:calc(8px + env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){#portal .malya-dialog *,#toast{scroll-behavior:auto!important;transition:none!important}}


/* MALYA Prestige — étape 4 : présentation des pages.
   Adaptations purement visuelles, aucun sélecteur fonctionnel supprimé. */
:where(.main,.admin-wrap){color:var(--color-text)}
.main{background:linear-gradient(155deg,#fbfcf9 0%,#f5f6f0 100%)}
.main .top{border-bottom:1px solid #dee7df;padding:13px 0 17px;margin-bottom:18px;gap:12px}
.main .top h1{font-family:var(--font-display);font-weight:800;line-height:1.2;letter-spacing:-.025em;font-size:clamp(20px,2.2vw,28px)}
.main .top .row{gap:9px;align-items:center;flex-wrap:wrap}
.main .sectionhead{align-items:center;gap:12px;margin-bottom:15px;flex-wrap:wrap}
.main .sectionhead h2,.admin-wrap h2{font-family:var(--font-display);color:#183a30;font-weight:800;line-height:1.3;letter-spacing:-.02em}
.main .sectionhead .row{gap:8px;flex-wrap:wrap}
.main .stat,.main .card,.main .tablewrap,.admin-wrap .card{background:#fff;border:1px solid #e0e8dd;border-radius:18px;box-shadow:0 2px 12px #112e1e0b}
.main .stat{position:relative;overflow:hidden;padding:20px;min-width:0}
.main .stat::before{content:'';position:absolute;left:0;top:0;width:4px;height:100%;background:linear-gradient(#bc9650,#1c7057)}
.main .stat strong{font-family:var(--font-display);color:#173e30;font-size:clamp(23px,3vw,30px);line-height:1.25}
.main .card{padding:clamp(14px,2vw,22px)}
.main .toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;background:#fff;border:1px solid #e1e9df;border-radius:16px;padding:12px;margin-bottom:14px}
.main .toolbar .filter{min-height:44px;min-width:min(155px,100%);background:#fff;color:#1e3b31}
.main .button,.admin-wrap .button{min-height:46px;border-radius:12px;font-weight:750;letter-spacing:0}
.main .button.alt,.admin-wrap .button.alt{border:1px solid #d9e2d6;background:#f7f8f3;color:#264936}
.main .tablewrap{overflow-x:auto;max-width:100%;scrollbar-color:#b8c7b7 #f8faf7}
.main table{width:100%;border-collapse:separate;border-spacing:0}
.main th{position:sticky;top:0;z-index:1;background:#edf2ec;color:#274436;text-align:left;font-weight:800;font-size:12px;letter-spacing:.015em}
.main th,.main td{padding:13px 14px;border-bottom:1px solid #e6ebe4;vertical-align:middle}
.main tbody tr:last-child td{border-bottom:0}
.main tbody tr:hover{background:#f5faf5}
.main .empty{border:1px dashed #c5d4c6;background:#f9fbf8;border-radius:18px;padding:clamp(24px,4vw,42px);text-align:center;color:#4d695a;line-height:1.6}
.main .notice{border-radius:14px;padding:13px 16px;line-height:1.6}
.main .product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(210px,100%),1fr));gap:16px;align-items:stretch}
.main .product-card{display:flex;flex-direction:column;text-align:left;width:100%;min-width:0;overflow:hidden;border-radius:19px;border:1px solid #e0e7de;background:#fff;color:#1b392d;box-shadow:0 2px 12px #183e2510;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;padding:0}
.main .product-card:hover{transform:translateY(-3px);border-color:#9abcaa;box-shadow:0 12px 27px #21472a1d}
.main .product-card:focus-visible{outline:3px solid #c49b54;outline-offset:2px}
.main .product-image{aspect-ratio:5/4;width:100%;overflow:hidden;background:#edf2e9;display:grid;place-items:center}
.main .product-image img{width:100%;height:100%;object-fit:cover;display:block}
.main .product-info{padding:15px;display:flex;flex-direction:column;align-items:flex-start;gap:7px;flex:1}
.main .product-info strong{font:800 16px/1.35 var(--font-display);color:#173b2d;overflow-wrap:anywhere}
.main .product-info small{color:#526b5e;font-size:12px;overflow-wrap:anywhere}
.main .product-info .price{font-family:var(--font-display);font-size:18px;color:#165b40;margin-top:auto}
.main .product-category{font-size:11px;font-weight:800;letter-spacing:.02em;background:#edf5ed;border-radius:100px;color:#2a6848;padding:5px 10px}
#portal .malya-dialog{border:1px solid #e5ebe3;background:#fff;color:#20342b;box-shadow:0 27px 80px #07190d66}
#portal .malya-dialog .sectionhead h2{font-family:var(--font-display);letter-spacing:-.02em}
#portal .malya-dialog .formgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px}
#portal .malya-dialog .field{min-width:0}
#portal .malya-dialog input,#portal .malya-dialog textarea,#portal .malya-dialog select{max-width:100%}
#portal .malya-dialog .preview-img{border-radius:14px;max-height:245px;object-fit:cover}
.side{background:#142d26;overscroll-behavior:contain}
.side .navbtn{min-height:43px;text-align:left;line-height:1.3;border-radius:11px;color:#edf6ee}
.side .navbtn.active{background:#2c5e4a;color:#fff;box-shadow:inset 3px 0 0 #e0b67b}
.side .navbtn:focus-visible{outline:2px solid #e0b67b;outline-offset:1px}
.admin-header{gap:12px;flex-wrap:wrap}
.admin-wrap .admin-stats{gap:14px}
.admin-wrap .admin-stats>div{border-radius:16px;border:1px solid #dce6dc;background:#fff;padding:17px}
@media(min-width:801px){.layout{align-items:stretch!important}.side{position:relative!important;top:auto!important;height:100dvh!important;min-height:0;overflow-y:auto!important}.main{overflow-y:auto!important;height:100dvh!important;min-height:0;scrollbar-gutter:stable}}
@media(max-width:800px){.main .top{top:78px!important}.main .toolbar{align-items:stretch}.main .toolbar .filter{flex:1 1 165px}.main .stat{padding:15px}.main .product-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.main .product-info{padding:12px}.main .product-info strong{font-size:14px}}
@media(max-width:530px){.main{padding:14px!important}.main .top .row{width:100%}.main .top .row .button{flex:1 1 auto}.main .product-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#portal .malya-dialog .formgrid{grid-template-columns:1fr}.main .sectionhead .row{width:100%}.main .sectionhead .row .button{flex:1}}
@media(max-width:360px){.main .product-grid{grid-template-columns:1fr}.main .toolbar .filter{flex-basis:100%}}
@media(prefers-reduced-motion:reduce){.main .product-card{transition:none}.main .product-card:hover{transform:none}}

/* Étape 4B — fermeture accessible, fiches et historique produit. */
#portal .malya-dialog-footer{position:sticky;bottom:-1px;z-index:9;margin-top:20px;padding:14px 0 2px;display:flex;justify-content:flex-end;background:var(--color-surface,#fff);border-top:1px solid var(--color-border,#dde6da)}
#portal .malya-dialog-footer .button{min-width:135px;min-height:48px}
#portal .malya-movements{border-radius:14px;border:1px solid #dde6da;overflow-x:auto;max-width:100%}
#portal .malya-movements table{width:100%;min-width:650px;border-collapse:collapse}
#portal .malya-movements thead th{background:#f0f5ef;color:#183a30;white-space:normal;font-size:12px;line-height:1.4;padding:13px 12px;text-align:left}
#portal .malya-movements td{padding:12px;border-top:1px solid #e7ece6;font-size:13px;color:#263b30}
#portal .malya-movements .qty-in{font-weight:800;color:#147a48}
#portal .malya-movements .qty-out{font-weight:800;color:#b04438}
#portal .malya-dialog-close{position:relative;z-index:15;pointer-events:auto}
@media(max-width:600px){#portal .malya-dialog-footer .button{width:100%}#portal .malya-movements table{min-width:610px}}

/* Notifications : compteur visuel sans superposition des autres actions. */
.malya-notif-button{position:relative;overflow:visible!important;padding-right:30px!important}
.malya-notif-count{position:absolute;right:5px;top:2px;min-width:20px;height:20px;border-radius:999px;background:#aa2929;color:#fff;font-weight:800;font-size:11px;line-height:20px;text-align:center;padding:0 4px;box-shadow:0 1px 5px #0003;pointer-events:none}
.malya-notif-count[hidden]{display:none!important}

/* MALYA V30 : réglages ciblés, sans changement de thème */
.admin-header{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.admin-header>button{flex:0 0 auto;white-space:nowrap}.admin-header>div{margin-right:auto}.subscription-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:15px}.subscription-item{display:flex;align-items:flex-start;gap:16px}.subscription-logo{height:78px;width:78px;border-radius:14px;object-fit:cover}.subscription-item>div{min-width:0}.subscription-item h3{margin:0 0 6px}.promotion-card .button{margin-top:12px}.malya-dialog{max-width:min(980px,96vw)}.malya-dialog .formgrid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
/* V36 : fiches de consultation lisibles, sans champs de saisie */
.malya-detail-table table{width:100%;border-collapse:collapse;table-layout:fixed}
.malya-detail-table th,.malya-detail-table td{padding:12px 16px;vertical-align:top;text-align:left;border-bottom:1px solid rgba(120,135,126,.22);overflow-wrap:anywhere}
.malya-detail-table th{width:39%;color:var(--muted,#59645c);font-weight:600;background:rgba(120,135,126,.07)}
.malya-detail-table td{font-weight:600}
.malya-detail-image{max-width:120px;max-height:95px;object-fit:cover;border-radius:10px}
.malya-load-error{margin:22px;padding:22px;line-height:1.5}

/* V37 — consultation lisible des fiches et fermeture persistante */
#portal .malya-dialog-content{min-width:0;flex:1 1 auto}
#portal .malya-dialog-footer{position:sticky!important;bottom:0!important;z-index:25!important;background:#fff!important;justify-content:flex-end!important}
#portal .malya-dialog [data-malya-close]{cursor:pointer!important;pointer-events:auto!important}
#portal .malya-detail-table{width:100%;overflow-x:auto;border:1px solid #dfe8e1;border-radius:14px}
#portal .malya-detail-table table{border-collapse:collapse;width:100%;table-layout:auto}
#portal .malya-detail-table th,#portal .malya-detail-table td{padding:12px 16px;text-align:left;vertical-align:top;border-bottom:1px solid #e3eae5;overflow-wrap:anywhere}
#portal .malya-detail-table th{width:37%;min-width:140px;color:#214936;background:#f3f8f4;font-weight:700}
#portal .malya-detail-table td{color:#23382f;background:#fff}
#portal .malya-detail-table tr:last-child>th,#portal .malya-detail-table tr:last-child>td{border-bottom:0}
@media(max-width:600px){#portal .malya-detail-table th{width:43%;min-width:110px}#portal .malya-detail-table th,#portal .malya-detail-table td{padding:10px}}

/* V39 — compteur numérique : empêcher l'héritage de styles de pastille sans texte. */
button.malya-notif-button{position:relative!important;overflow:visible!important;flex-shrink:0}
button.malya-notif-button .malya-notif-count{
 box-sizing:border-box!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;
 position:absolute!important;right:3px!important;top:-9px!important;z-index:20!important;
 width:auto!important;min-width:23px!important;height:23px!important;min-height:23px!important;max-width:none!important;
 padding:0 5px!important;border-radius:12px!important;border:2px solid #fff!important;
 background:#b4232e!important;color:#fff!important;-webkit-text-fill-color:#fff!important;
 font-family:Arial,sans-serif!important;font-size:12px!important;font-weight:800!important;
 line-height:1!important;letter-spacing:0!important;text-indent:0!important;white-space:nowrap!important;
 visibility:visible!important;opacity:1!important;transform:none!important;pointer-events:none!important;
}
button.malya-notif-button .malya-notif-count[hidden]{display:none!important}
.admin-header button{margin-left:0}
.admin-header #notifAdmin{margin-left:auto}

/* V68 : une seule fermeture par fenêtre, en haut à droite */
#portal .malya-dialog .malya-dialog-footer{display:none!important}
#portal .malya-dialog #cancel,#portal .malya-dialog #cancelEdit,#portal .malya-dialog #cancelSettings,#portal .malya-dialog #closeImport,#portal .malya-dialog #draftBack,#portal .malya-dialog #cancelBookingNext,#portal .malya-dialog [data-dismiss]{display:none!important}
#portal .malya-dialog-head{position:sticky;top:0;z-index:30;background:#fff;padding:12px 4px;border-bottom:1px solid #e1e9e1;gap:18px}
#portal .malya-dialog-close{width:44px;height:44px;min-width:44px;min-height:44px;border-radius:50%!important;display:inline-flex;align-items:center;justify-content:center;font-size:24px!important;line-height:1}
#portal .malya-dialog-content{padding:18px 3px 12px}
#portal .malya-dialog .detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}
#portal .malya-dialog .detail-grid>div{background:#f6f8f5;border:1px solid #e1e9e1;border-radius:12px;padding:12px;min-width:0;overflow-wrap:anywhere}
#portal .malya-dialog .row{flex-wrap:wrap;gap:10px}
@media(max-width:600px){#portal .malya-dialog .detail-grid{grid-template-columns:1fr}}

/* V69 — Retours d'enregistrement visibles dans la fenêtre active */
#shade .malya-dialog-head{position:sticky;top:0;z-index:12;background:#fff;padding-bottom:12px;}
#shade .malya-modal-message{position:sticky;top:54px;z-index:11;padding:13px 15px;margin:8px 0 16px;border-radius:12px;border:1px solid #b8dccb;background:#e9f5ee;color:#165e3e;font-weight:600;line-height:1.55;box-shadow:0 5px 15px #082b2712;}
#shade .malya-modal-message.err{background:#fff0ee;color:#9c2828;border-color:#ebbbb7;}
#shade .malya-modal-message.success{background:#e9f5ee;color:#165e3e;border-color:#b8dccb;}
