/* Feuille du simulateur 3D, scopée sous .gib3d-app — générée, ne pas éditer à la main. */
.gib3d-app{
  position:relative;
  display:grid;
  grid-template-columns:1fr var(--panel-w);
  height:var(--gib3d-height,86vh);
  min-height:520px;
  background:var(--bg);
  color:var(--txt);
  font-family:"Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,Roboto,"Helvetica Neue",Arial,sans-serif;
  font-size:15px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  overflow:hidden;
}
/* ============================================================
   Simulateur 3D — Gholami International Bois
   Charte : orange #EB6028 · vert #8BBA34 · anthracite
   ============================================================ */
.gib3d-app{
  --orange:#EB6028;
  --orange-soft:rgba(235,96,40,.14);
  --green:#8BBA34;

  --bg:#0E1113;
  --bg-2:#14181B;
  --panel:#171B1F;
  --panel-2:#1E242A;
  --line:rgba(255,255,255,.09);
  --line-strong:rgba(255,255,255,.16);

  --txt:#EEF1F3;
  --txt-2:#A5B0B8;
  --txt-3:#6E7A83;

  --r-s:8px; --r-m:12px; --r-l:18px; --r-xl:26px;
  --shadow:0 18px 50px -18px rgba(0,0,0,.75);
  --ease:cubic-bezier(.22,.61,.36,1);
  --panel-w:392px;
}
.gib3d-app *,
.gib3d-app *::before,
.gib3d-app *::after{box-sizing:border-box}
/* les règles display: du fichier écrasent le `display:none` que l'UA applique à
   [hidden] ; sans ce !important, les éléments masqués en JS restent visibles */
.gib3d-app [hidden]{display:none !important}
.gib3d-app h1,
.gib3d-app h2,
.gib3d-app h3{margin:0;font-weight:650;letter-spacing:-.015em}
.gib3d-app button,
.gib3d-app input,
.gib3d-app select,
.gib3d-app textarea{font:inherit;color:inherit}
.gib3d-app button{cursor:pointer;border:0;background:none}
.gib3d-app svg{display:block}
.gib3d-app :focus-visible{outline:2px solid var(--orange);outline-offset:2px;border-radius:4px}
/* ---------- Trame générale ---------- */
.gib3d-app{
  background:var(--bg);
}
.gib3d-app #stage{position:relative;overflow:hidden;background:radial-gradient(120% 100% at 50% 0%,#1A2025 0%,#0B0E10 70%)}
.gib3d-app #scene{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}
/* ---------- Chargement ---------- */
.gib3d-app #loader{
  position:absolute;inset:0;z-index:40;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;
  background:var(--bg);
  transition:opacity .5s var(--ease),visibility .5s;
}
.gib3d-app #loader.done{opacity:0;visibility:hidden}
.gib3d-app .loader-mark{width:56px;height:56px;color:var(--orange);animation:pulse 1.9s var(--ease) infinite}
.gib3d-app .loader-mark svg{width:100%;height:100%}

@keyframes pulse{0%,100%{opacity:.45;transform:scale(.94)}50%{opacity:1;transform:scale(1)}}
.gib3d-app .loader-text{margin:0;color:var(--txt-3);font-size:13px;letter-spacing:.12em;text-transform:uppercase}
.gib3d-app .loader-bar{width:180px;height:2px;background:rgba(255,255,255,.09);border-radius:2px;overflow:hidden}
.gib3d-app .loader-bar span{display:block;height:100%;width:35%;background:var(--orange);border-radius:2px;animation:slide 1.3s var(--ease) infinite}

@keyframes slide{0%{transform:translateX(-110%)}100%{transform:translateX(320%)}}
/* ---------- Barre supérieure ---------- */
.gib3d-app #topbar{
  position:absolute;top:0;left:0;right:0;z-index:20;
  display:flex;align-items:center;gap:16px;
  padding:16px 20px;
  background:linear-gradient(180deg,rgba(8,10,12,.82) 0%,rgba(8,10,12,0) 100%);
  pointer-events:none;
}
.gib3d-app #topbar>*{pointer-events:auto}
.gib3d-app .brand{display:flex;align-items:center;gap:11px;padding:4px 6px;border-radius:var(--r-m);transition:background .2s}
.gib3d-app .brand:hover{background:rgba(255,255,255,.05)}
.gib3d-app .brand-mark{width:30px;height:30px;color:var(--orange);flex:none}
.gib3d-app .brand-text{display:flex;flex-direction:column;line-height:1.1;text-align:left}
.gib3d-app .brand-text strong{font-size:14px;letter-spacing:.16em;font-weight:700}
.gib3d-app .brand-text small{font-size:9px;letter-spacing:.16em;color:var(--txt-3);font-weight:600;white-space:nowrap}
.gib3d-app .seg{display:flex;gap:4px;padding:4px;margin-left:auto;background:rgba(20,24,27,.72);backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:999px}
.gib3d-app .seg button{
  padding:7px 15px;border-radius:999px;font-size:12.5px;font-weight:600;
  color:var(--txt-2);white-space:nowrap;transition:color .2s,background .2s;
}
.gib3d-app .seg button:hover{color:var(--txt)}
.gib3d-app .seg button.on{background:var(--orange);color:#fff}
.gib3d-app .topbar-actions{display:flex;gap:6px}
.gib3d-app .icon-btn{
  width:38px;height:38px;display:grid;place-items:center;
  background:rgba(20,24,27,.72);backdrop-filter:blur(14px);
  border:1px solid var(--line);border-radius:11px;
  color:var(--txt-2);transition:color .2s,border-color .2s,background .2s;
}
.gib3d-app .icon-btn:hover{color:var(--txt);border-color:var(--line-strong);background:rgba(30,36,42,.9)}
.gib3d-app .icon-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.gib3d-app .icon-btn.sm{width:30px;height:30px;border-radius:8px}
.gib3d-app .icon-btn.sm svg{width:15px;height:15px}
.gib3d-app .only-mobile{display:none}
/* ---------- Étiquettes 3D ---------- */
.gib3d-app #hotspots{position:absolute;inset:0;z-index:15;pointer-events:none}
.gib3d-app .hotspot{
  position:absolute;transform:translate(-50%,-50%);
  display:flex;align-items:center;gap:9px;
  padding:7px 12px 7px 7px;
  background:rgba(14,17,19,.86);backdrop-filter:blur(12px);
  border:1px solid var(--line);border-radius:999px;
  box-shadow:0 8px 24px -10px rgba(0,0,0,.9);
  opacity:0;transition:opacity .35s var(--ease),transform .35s var(--ease);
  white-space:nowrap;
}
.gib3d-app .hotspot.show{opacity:1}
.gib3d-app .hotspot-sw{width:26px;height:26px;border-radius:50%;flex:none;border:1px solid rgba(255,255,255,.18);background-size:cover;background-position:center}
.gib3d-app .hotspot-txt{display:flex;flex-direction:column;line-height:1.15}
.gib3d-app .hotspot-txt b{font-size:12px;font-weight:650}
.gib3d-app .hotspot-txt span{font-size:10px;color:var(--txt-3);letter-spacing:.06em;text-transform:uppercase}
/* ---------- Récapitulatif bas ---------- */
.gib3d-app #summary{
  position:absolute;left:0;right:0;bottom:0;z-index:20;
  display:flex;align-items:center;gap:14px;
  padding:18px 20px 20px;
  background:linear-gradient(0deg,rgba(8,10,12,.9) 10%,rgba(8,10,12,0) 100%);
}
.gib3d-app .summary-scroll{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;flex:1}
.gib3d-app .summary-scroll::-webkit-scrollbar{display:none}
.gib3d-app .chip{
  display:flex;align-items:center;gap:8px;flex:none;
  padding:6px 13px 6px 6px;
  background:rgba(23,27,31,.85);backdrop-filter:blur(12px);
  border:1px solid var(--line);border-radius:999px;
  transition:border-color .2s,background .2s;
}
.gib3d-app .chip:hover{border-color:var(--orange);background:rgba(30,36,42,.95)}
.gib3d-app .chip i{width:22px;height:22px;border-radius:50%;flex:none;border:1px solid rgba(255,255,255,.16);background-size:cover;background-position:center}
.gib3d-app .chip span{font-size:11.5px;color:var(--txt-2);letter-spacing:.02em}
.gib3d-app .chip span b{color:var(--txt);font-weight:600}
.gib3d-app .cta{
  display:inline-flex;align-items:center;gap:9px;flex:none;
  padding:12px 20px;border-radius:12px;
  background:var(--orange);color:#fff;font-size:13.5px;font-weight:650;
  text-decoration:none;box-shadow:0 10px 26px -12px rgba(235,96,40,.9);
  transition:transform .18s var(--ease),box-shadow .2s,background .2s;
}
.gib3d-app .cta:hover{background:#f36c33;transform:translateY(-1px);box-shadow:0 14px 30px -12px rgba(235,96,40,1)}
.gib3d-app .cta:active{transform:translateY(0)}
.gib3d-app .cta svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.gib3d-app #hint{
  position:absolute;left:50%;bottom:86px;transform:translateX(-50%);z-index:16;
  margin:0;font-size:11px;color:var(--txt-3);letter-spacing:.05em;
  pointer-events:none;transition:opacity .6s var(--ease);
}
.gib3d-app #hint.hide{opacity:0}
/* ---------- Panneau latéral ---------- */
.gib3d-app #panel{
  display:flex;flex-direction:column;
  background:var(--panel);
  border-left:1px solid var(--line);
  min-height:0;
}
.gib3d-app .panel-head{padding:26px 26px 20px;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:flex-start}
.gib3d-app .panel-head h1{font-size:20px;letter-spacing:-.02em}
.gib3d-app .panel-head p{margin:7px 0 0;font-size:12.5px;color:var(--txt-3);line-height:1.55}
.gib3d-app .panel-body{flex:1;overflow-y:auto;padding:8px 0;min-height:0}
.gib3d-app .panel-body::-webkit-scrollbar{width:9px}
.gib3d-app .panel-body::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);border-radius:9px;border:3px solid var(--panel)}
.gib3d-app .panel-body::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.18)}
.gib3d-app .panel-foot{padding:14px 20px;border-top:1px solid var(--line)}
/* Catégorie (accordéon) */
.gib3d-app .cat{border-bottom:1px solid var(--line)}
.gib3d-app .cat:last-child{border-bottom:0}
.gib3d-app .cat-head{
  width:100%;display:flex;align-items:center;gap:13px;
  padding:15px 22px;text-align:left;transition:background .2s;
}
.gib3d-app .cat-head:hover{background:rgba(255,255,255,.03)}
.gib3d-app .cat-sw{
  width:34px;height:34px;border-radius:9px;flex:none;
  border:1px solid var(--line-strong);background-size:cover;background-position:center;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.25);
}
.gib3d-app .cat-txt{flex:1;min-width:0}
.gib3d-app .cat-txt b{display:block;font-size:13.5px;font-weight:620;letter-spacing:-.005em}
.gib3d-app .cat-txt span{display:block;font-size:11.5px;color:var(--txt-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.gib3d-app .cat-arrow{width:16px;height:16px;flex:none;color:var(--txt-3);transition:transform .3s var(--ease)}
.gib3d-app .cat-arrow svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.gib3d-app .cat.open .cat-arrow{transform:rotate(180deg)}
.gib3d-app .cat-body{display:none;padding:2px 22px 20px}
.gib3d-app .cat.open .cat-body{display:block;animation:fade .32s var(--ease)}

@keyframes fade{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}
.gib3d-app .swatches{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.gib3d-app .sw{
  position:relative;aspect-ratio:1;border-radius:11px;overflow:hidden;
  border:1px solid var(--line-strong);background-size:cover;background-position:center;
  transition:transform .18s var(--ease),box-shadow .2s;
}
.gib3d-app .sw:hover{transform:translateY(-2px);box-shadow:0 8px 18px -8px rgba(0,0,0,.9)}
.gib3d-app .sw::after{
  content:"";position:absolute;inset:0;border-radius:10px;
  box-shadow:inset 0 0 0 0 var(--orange);transition:box-shadow .18s var(--ease);
}
.gib3d-app .sw.on::after{box-shadow:inset 0 0 0 3px var(--orange)}
.gib3d-app .sw.on{transform:translateY(-2px)}
.gib3d-app .sw-tick{
  position:absolute;right:5px;top:5px;width:17px;height:17px;border-radius:50%;
  background:var(--orange);display:none;place-items:center;
}
.gib3d-app .sw.on .sw-tick{display:grid}
.gib3d-app .sw-tick svg{width:10px;height:10px;fill:none;stroke:#fff;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.gib3d-app .sw-name{
  position:absolute;left:0;right:0;bottom:0;padding:16px 6px 5px;
  font-size:9.5px;font-weight:600;text-align:center;color:#fff;
  background:linear-gradient(0deg,rgba(0,0,0,.82),transparent);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
/* Zone reliée aux produits du site : la gamme d'où viennent les articles,
   l'intertitre de chaque catégorie, et le rappel de l'article retenu avec le
   lien vers sa fiche. Rien de tout cela n'existe tant que le catalogue reste
   celui d'usine. */
.gib3d-app .cat-src{
  margin:0 0 10px;font-size:10.5px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--txt-3);
}
.gib3d-app .sw-group{
  grid-column:1/-1;margin:6px 0 -2px;font-size:10.5px;font-weight:650;
  letter-spacing:.04em;color:var(--txt-2);
}
.gib3d-app .sw-group:first-child{margin-top:0}
.gib3d-app .cat-pick{
  margin:12px 0 0;font-size:11.5px;line-height:1.5;color:var(--txt-3);
}
.gib3d-app .cat-pick a{color:var(--orange);text-decoration:none;font-weight:600;white-space:nowrap}
.gib3d-app .cat-pick a:hover{text-decoration:underline}
.gib3d-app .ghost-btn{
  width:100%;display:inline-flex;align-items:center;justify-content:center;gap:9px;
  padding:11px 16px;border:1px solid var(--line-strong);border-radius:11px;
  background:transparent;color:var(--txt-2);font-size:12.5px;font-weight:600;
  transition:color .2s,border-color .2s,background .2s;
}
.gib3d-app .ghost-btn:hover{color:var(--txt);border-color:var(--orange);background:var(--orange-soft)}
.gib3d-app .ghost-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.gib3d-app .ghost-btn.sm{width:auto;padding:7px 13px;font-size:11.5px;border-radius:9px}
.gib3d-app .danger-btn{
  padding:11px 16px;border:1px solid rgba(226,74,74,.4);border-radius:11px;
  background:transparent;color:#E86A6A;font-size:12.5px;font-weight:600;transition:background .2s,border-color .2s;
}
.gib3d-app .danger-btn:hover{background:rgba(226,74,74,.12);border-color:rgba(226,74,74,.7)}
/* ---------- Modales ---------- */
.gib3d-app .modal{
  position:fixed;inset:0;z-index:80;
  display:flex;align-items:center;justify-content:center;padding:24px;
  background:rgba(6,8,9,.72);backdrop-filter:blur(6px);
  animation:fade .25s var(--ease);
}
.gib3d-app .modal[hidden]{display:none}
.gib3d-app .modal-card{
  width:min(560px,100%);max-height:88dvh;display:flex;flex-direction:column;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r-xl);
  box-shadow:var(--shadow);overflow:hidden;
  animation:pop .3s var(--ease);
}
.gib3d-app .modal-card.wide{width:min(1080px,100%)}

@keyframes pop{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
.gib3d-app .modal-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;border-bottom:1px solid var(--line)}
.gib3d-app .modal-head h2,
.gib3d-app .modal-head h3{font-size:16.5px;color:var(--txt)}
.gib3d-app .modal-head p{font-size:12.5px;line-height:1.5;color:var(--txt-3);margin-top:4px;max-width:52ch}
.gib3d-app .modal-body{padding:22px 24px;overflow-y:auto;min-height:0}
.gib3d-app .modal-foot{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:16px 24px;border-top:1px solid var(--line)}
.gib3d-app .modal-foot .ghost-btn{width:auto}
.gib3d-app .quote-shot{
  width:100%;aspect-ratio:16/9;border-radius:var(--r-m);overflow:hidden;
  background:var(--bg-2) center/cover no-repeat;border:1px solid var(--line);margin-bottom:18px;
}
.gib3d-app .quote-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.gib3d-app .quote-list li{display:flex;align-items:center;gap:12px;padding:10px 2px;border-bottom:1px solid var(--line)}
.gib3d-app .quote-list li:last-child{border-bottom:0}
.gib3d-app .quote-list i{width:30px;height:30px;border-radius:8px;flex:none;border:1px solid var(--line-strong);background-size:cover;background-position:center}
.gib3d-app .quote-list .q-cat{flex:1;font-size:12px;color:var(--txt-3);letter-spacing:.04em;text-transform:uppercase}
.gib3d-app .quote-list .q-val{font-size:13px;font-weight:600;text-align:right}
.gib3d-app .quote-list .q-val small{display:block;font-size:11px;font-weight:500;color:var(--txt-3);letter-spacing:.04em}
/* ---------- Formulaires ---------- */
.gib3d-app .field{margin-bottom:15px}
.gib3d-app .field label{display:block;font-size:11.5px;font-weight:600;color:var(--txt-2);letter-spacing:.04em;text-transform:uppercase;margin-bottom:6px}
.gib3d-app .field small{display:block;margin-top:5px;font-size:11px;color:var(--txt-3);line-height:1.45}
.gib3d-app .field.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.gib3d-app .field input[type=text],
.gib3d-app .field input[type=url],
.gib3d-app .field input[type=password],
.gib3d-app .field select{
  width:100%;padding:10px 13px;border-radius:10px;
  background:var(--panel-2);border:1px solid var(--line);color:var(--txt);
  transition:border-color .2s,background .2s;font-size:13.5px;
}
.gib3d-app .field input:focus,
.gib3d-app .field select:focus{outline:none;border-color:var(--orange);background:#232A30}
.gib3d-app .field input[type=color]{width:100%;height:40px;padding:3px;border-radius:10px;background:var(--panel-2);border:1px solid var(--line);cursor:pointer}
.gib3d-app .field input[type=range]{width:100%;accent-color:var(--orange);margin-top:4px}
.gib3d-app .field output{float:right;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;color:var(--txt-3);text-transform:none;letter-spacing:0}
.gib3d-app .form-error{margin:0 0 14px;font-size:12.5px;color:#E86A6A}
.gib3d-app .form-actions{display:flex;gap:10px;margin-top:20px}
.gib3d-app .form-actions .cta{flex:1;justify-content:center}
/* ---------- Administration ---------- */
.gib3d-app .admin-note{margin:0 0 18px;font-size:13px;color:var(--txt-2);line-height:1.6}
.gib3d-app .admin-panel{display:flex;flex-direction:column;gap:18px;padding:0}
.gib3d-app .admin-cols{display:grid;grid-template-columns:212px 1fr;gap:0;min-height:400px}
.gib3d-app .admin-cols.editing{grid-template-columns:212px 1fr 320px}
.gib3d-app .admin-col{padding:20px 22px;border-right:1px solid var(--line);min-width:0;display:flex;flex-direction:column}
.gib3d-app .admin-col:last-child{border-right:0}
.gib3d-app .admin-col.form{background:var(--panel-2);overflow-y:auto}
.gib3d-app .admin-col-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;min-height:30px}
.gib3d-app .admin-col-head h3{font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--txt-2)}
.gib3d-app .admin-col-head h3 span{color:var(--orange);text-transform:none;letter-spacing:0}
.gib3d-app .admin-hint{margin:14px 0 0;font-size:11px;color:var(--txt-3);line-height:1.55}
.gib3d-app .admin-cats{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}
.gib3d-app .admin-cats button{
  width:100%;display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:9px;
  text-align:left;font-size:12.5px;color:var(--txt-2);transition:background .18s,color .18s;
}
.gib3d-app .admin-cats button:hover{background:rgba(255,255,255,.045);color:var(--txt)}
.gib3d-app .admin-cats button.on{background:var(--orange-soft);color:var(--orange)}
.gib3d-app .admin-cats .n{margin-left:auto;font-size:10.5px;color:var(--txt-3);font-variant-numeric:tabular-nums}
.gib3d-app .admin-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:12px;overflow-y:auto;align-content:start;flex:1}
.gib3d-app .admin-item{
  position:relative;border-radius:11px;overflow:hidden;border:1px solid var(--line-strong);
  background:var(--panel-2);text-align:left;transition:border-color .18s,transform .18s var(--ease);
}
.gib3d-app .admin-item:hover{border-color:var(--orange);transform:translateY(-2px)}
.gib3d-app .admin-item.on{border-color:var(--orange);box-shadow:0 0 0 1px var(--orange)}
.gib3d-app .admin-item .thumb{aspect-ratio:1;background-size:cover;background-position:center}
.gib3d-app .admin-item .meta{padding:7px 8px 8px}
.gib3d-app .admin-item .meta b{display:block;font-size:11px;font-weight:620;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gib3d-app .admin-item .meta span{display:block;font-size:10px;color:var(--txt-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gib3d-app .admin-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:16px 22px;border-top:1px solid var(--line)}
.gib3d-app .admin-foot .ghost-btn{width:auto}
.gib3d-app .admin-saved{margin-left:auto;font-size:12px;color:var(--green);font-weight:600}
/* ---------- Toast ---------- */
.gib3d-app #toast{
  position:fixed;left:50%;bottom:34px;transform:translate(-50%,20px);z-index:120;
  padding:12px 20px;border-radius:12px;
  background:var(--panel-2);border:1px solid var(--line-strong);
  font-size:13px;box-shadow:var(--shadow);
  opacity:0;pointer-events:none;transition:opacity .28s var(--ease),transform .28s var(--ease);
}
.gib3d-app #toast.show{opacity:1;transform:translate(-50%,0)}
/* ---------- Responsive ---------- */
@media (max-width:1180px){
.gib3d-app{--panel-w:340px}
.gib3d-app .swatches{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:900px){
.gib3d-app{grid-template-columns:1fr}
.gib3d-app .only-mobile{display:grid}
.gib3d-app #panel{
    position:fixed;top:0;right:0;bottom:0;width:min(400px,88vw);z-index:60;
    transform:translateX(101%);transition:transform .38s var(--ease);
    box-shadow:-24px 0 60px -30px #000;
  }
.gib3d-app #panel.open{transform:none}
.gib3d-app .seg{display:none}
.gib3d-app #hint{display:none}
.gib3d-app #summary{padding:14px 16px 16px}
.gib3d-app .cta span{display:none}
.gib3d-app .admin-cols,
.gib3d-app .admin-cols.editing{grid-template-columns:1fr;min-height:0}
.gib3d-app .admin-col{border-right:0;border-bottom:1px solid var(--line)}
.gib3d-app .modal{padding:0;align-items:flex-end}
.gib3d-app .modal-card,
.gib3d-app .modal-card.wide{width:100%;max-height:92dvh;border-radius:var(--r-xl) var(--r-xl) 0 0}
}
@media (max-width:520px){
.gib3d-app #topbar{padding:12px 14px}
.gib3d-app .brand-text{display:none}
.gib3d-app .swatches{grid-template-columns:repeat(4,1fr)}
.gib3d-app .panel-head{padding:20px 18px 16px}
.gib3d-app .cat-head{padding:13px 18px}
.gib3d-app .cat-body{padding:2px 18px 18px}
}
@media (prefers-reduced-motion:reduce){
.gib3d-app *{animation-duration:.01ms !important;transition-duration:.01ms !important}
}
/* ============================================================
   Mon plan : type d'amenagement, dimensions, contenu
   ============================================================ */
.gib3d-app .plan-btn{
  display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px;
  border:1px solid var(--line-strong);border-radius:999px;background:rgba(30,36,42,.86);
  color:var(--txt-2);font-size:12.5px;font-weight:600;
  transition:color .2s,border-color .2s,background .2s;
}
.gib3d-app .plan-btn:hover{color:var(--txt);border-color:var(--orange);background:var(--orange-soft)}
.gib3d-app .plan-btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.gib3d-app .plan-titre{
  margin:0 0 10px;font-size:11px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--txt-3);
}
.gib3d-app .plan-titre:not(:first-child){margin-top:22px}
.gib3d-app .plan-types{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.gib3d-app .plan-type{
  display:block;padding:12px 14px;text-align:left;
  border:1px solid var(--line-strong);border-radius:var(--r-m);background:transparent;
  transition:border-color .2s,background .2s,transform .18s var(--ease);
}
.gib3d-app .plan-type:hover{border-color:var(--orange);transform:translateY(-1px)}
.gib3d-app .plan-type.on{border-color:var(--orange);background:var(--orange-soft)}
.gib3d-app .plan-type strong{display:block;font-size:13.5px;font-weight:650;color:var(--txt);margin-bottom:3px}
.gib3d-app .plan-type span{display:block;font-size:11.5px;line-height:1.45;color:var(--txt-3)}
.gib3d-app .plan-dim{display:grid;grid-template-columns:132px 1fr 64px;align-items:center;gap:12px;margin-bottom:10px}
.gib3d-app .plan-dim__label{font-size:12.5px;color:var(--txt-2)}
.gib3d-app .plan-dim__val{font-size:12.5px;font-weight:650;color:var(--txt);text-align:right;font-variant-numeric:tabular-nums}
.gib3d-app .plan-dim input[type=range]{width:100%;accent-color:var(--orange)}
.gib3d-app .plan-options{display:flex;flex-wrap:wrap;gap:10px 18px}
.gib3d-app .plan-option{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--txt-2);cursor:pointer}
.gib3d-app .plan-option input{accent-color:var(--orange);width:16px;height:16px}
.gib3d-app .plan-note{margin:18px 0 0;font-size:11.5px;line-height:1.5;color:var(--txt-3)}
.gib3d-app .plan-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
.gib3d-app .plan-actions .ghost-btn,
.gib3d-app .plan-actions .cta{width:auto}
.gib3d-app .q-plan{font-weight:600}
.gib3d-app .q-plan .q-val span{color:var(--orange)}
@media (max-width:620px){
.gib3d-app .plan-btn span{display:none}
.gib3d-app .plan-btn{padding:0 10px}
.gib3d-app .plan-dim{grid-template-columns:1fr 60px;grid-template-areas:"label val" "range range"}
.gib3d-app .plan-dim__label{grid-area:label}
.gib3d-app .plan-dim__val{grid-area:val}
.gib3d-app .plan-dim input[type=range]{grid-area:range}
}

/* ==========================================================================
   Compléments propres à l'intégration WordPress.
   Ce fichier est concaténé à la fin de la feuille générée par scope-css.js.
   ========================================================================== */

/* Conteneur du shortcode : pleine largeur, hors de la grille du thème. */
.gib3d-wrap{
  width:100%;
  margin:0;
  padding:0;
}

/* Le balisage WordPress utilise <h2> là où l'application autonome avait <h1>. */
.gib3d-app .panel-head h2{font-size:20px;letter-spacing:-.02em;font-weight:650;margin:0;color:var(--txt)}

/* Champs supplémentaires du formulaire de devis. */
.gib3d-app .field input[type=email],
.gib3d-app .field input[type=tel],
.gib3d-app .field textarea{
  width:100%;
  padding:10px 12px;
  border-radius:10px;
  background:var(--panel-2);
  border:1px solid var(--line);
  color:var(--txt);
  font-size:14px;
  font-family:inherit;
}
.gib3d-app .field textarea{resize:vertical;min-height:72px;line-height:1.5}
.gib3d-app .field input[type=email]:focus,
.gib3d-app .field input[type=tel]:focus,
.gib3d-app .field textarea:focus{outline:none;border-color:var(--orange);background:#232A30}

.gib3d-app .quote-form{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}
.gib3d-app .form-ok{margin:0 0 14px;font-size:12.5px;color:var(--green)}

/* Piège à robots. */
.gib3d-app .gib3d-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* Bouton d'envoi pendant la requête. */
.gib3d-app .cta[disabled]{opacity:.6;cursor:progress;transform:none}
.gib3d-app .cta[disabled]:hover{background:var(--orange);transform:none;box-shadow:none}

/* Repli lorsque WebGL est indisponible. */
.gib3d-app #gib3d-fallback{
  position:absolute;inset:0;z-index:50;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:18px;padding:32px;text-align:center;background:var(--bg);
}
.gib3d-app #gib3d-fallback p{max-width:460px;color:var(--txt-2);font-size:15px;line-height:1.6;margin:0}

/* Le lien « Gérer le catalogue » reprend l'aspect du bouton fantôme. */
.gib3d-app .panel-foot a.ghost-btn{text-decoration:none;display:flex;align-items:center;justify-content:center;gap:8px}

/* Aucune animation d'entrée si l'utilisateur la refuse. */
@media (prefers-reduced-motion:reduce){
  .gib3d-app #loader{transition:none}
}
