/**
 * 2010-2026 SwissGeek | Web Developer Freelance
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Academic Free License (AFL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available worldwide at this URL:
 * https://opensource.org/licenses/AFL-3.0
 * If you did not receive a copy of the license and are unable to obtain it
 * online, please send an email to license@swissgeek.dev so we can send you
 * a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade PrestaShop or PhenixSuite to newer
 * versions in the future. If you wish to customize PrestaShop or PhenixSuite for your
 * needs please refer to https://www.prestashop.com or https://www.phenixsuite.com for more information.
 *
 * @Module       sgkorderretract
 * @Description  Complete management of the 14-day legal right of withdrawal (Directive 2011/83/EU): customer flow, partial withdrawal, guest orders, GDPR compliance, notifications and dashboard.
 * @Version      1.0.4
 * @Copyright    Copyright (c) 2010-2026 - SwissGeek | Web Developer Freelance <https://swissgeek.dev/> All rights reserved.
 * @Support      Support Requests <https://admin.swissgeek.dev/forms/ticket?styled=1&with_logo=1>
 * @Blog         Breaking News <https://news.swissgeek.dev/> <https://news.prestageek.ch/>
 * @Addons       Developments <https://prestageek.ch/> <https://add.swissgeek.dev/>
 *
 * @License      Academic Free License (AFL 3.0) <https://opensource.org/licenses/AFL-3.0>
 */

/* SwissGeek — polices auto-hébergées (woff2 local, @font-face). Aucune dépendance CDN.
   Archivo (titres) · IBM Plex Sans (corps) · JetBrains Mono (mono). Licence OFL-1.1. */
@font-face{font-family:'Archivo';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/archivo-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Archivo';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/archivo-500-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Archivo';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/archivo-600-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Archivo';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/archivo-600-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Archivo';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/archivo-700-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Archivo';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/archivo-700-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Archivo';font-style:normal;font-weight:800;font-display:swap;src:url('../fonts/archivo-800-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Archivo';font-style:normal;font-weight:800;font-display:swap;src:url('../fonts/archivo-800-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/ibm-plex-sans-400-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/ibm-plex-sans-400-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/ibm-plex-sans-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/ibm-plex-sans-500-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/ibm-plex-sans-600-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/ibm-plex-sans-600-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/jetbrains-mono-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/jetbrains-mono-500-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/jetbrains-mono-600-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/jetbrains-mono-600-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
.sgk-fo .sgk-ic{display:inline-block;width:1em;height:1em;font-size:18px;line-height:1;vertical-align:middle;fill:currentColor;flex:none;}


/* Charte SwissGeek (front-office). --sgk-accent conservé : les éléments
   existants (jauges, pills, liens, dots…) héritent du rouge de marque. */
.sgk-fo {
  --sgk-accent: #D41414;
  --sgk-accent-600: #B30E0E;
  --sgk-accent-700: #930909;
  --sgk-accent-soft: #FCEAEA;
  --sgk-accent-grad: linear-gradient(135deg, #E11616 0%, #A80D0D 100%);
  --sgk-ink: #1E1E26;
  --sgk-ink-grad: linear-gradient(135deg, #2E2E3A 0%, #15151D 100%);
  --sgk-surface: #ffffff;
  --sgk-bg: #F5F6F8;
  --sgk-border: #E6E6EC;
  --sgk-text: #1E1E26;
  --sgk-muted: #6B6B78;
  --sgk-warning: #C9810A;
  --sgk-success: #1E9E5A;
  --sgk-danger: #D41414;
  --sgk-info: #2563C9;
  --sgk-radius: 10px;
  --sgk-font-display: 'Archivo', system-ui, sans-serif;
  --sgk-font-body: 'IBM Plex Sans', system-ui, sans-serif;
  --sgk-font-mono: 'JetBrains Mono', ui-monospace, monospace;
  color: var(--sgk-text);
  font-family: var(--sgk-font-body);
}
.sgk-fo * { box-sizing: border-box; }
/* .sgk-fo .sgk-ic : fusionné dans la règle de base ci-dessus (v1.2.7). */
.sgk-mt { margin-top: 16px; }
.sgk-muted { color: var(--sgk-muted); }
.sgk-empty-text { color: var(--sgk-muted); font-size: .9rem; text-align: center; margin: 16px 0; }
.sgk-req { color: var(--sgk-danger); }

/* ── Statistiques client ────────────────────────────────────────────── */
.sgk-fo-stats {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-bottom: 20px;
}
.sgk-fo-stat {
  background: var(--sgk-surface); border: 1px solid var(--sgk-border);
  border-radius: var(--sgk-radius); padding: 18px; text-align: center;
}
.sgk-fo-stat-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: 50%;
  background: #eef0f4; color: var(--sgk-accent); margin-bottom: 8px;
}
.sgk-fo-stat-icon .sgk-ic { font-size: 22px; }
.sgk-fo-stat-value { display: block; font-size: 28px; font-weight: 700; line-height: 1.1; }
.sgk-fo-stat-label { font-size: .8rem; color: var(--sgk-muted); }

/* ── Bandeau d'information ──────────────────────────────────────────── */
.sgk-fo-notice {
  display: flex; gap: 12px; align-items: flex-start;
  background: #E8F0FD; border: 1px solid #C5DAFA; border-radius: var(--sgk-radius);
  padding: 14px 16px; margin-bottom: 20px;
}
.sgk-fo-notice .sgk-ic { color: var(--sgk-info); flex-shrink: 0; }
.sgk-fo-notice p { margin: 0; font-size: .88rem; line-height: 1.5; }

/* ── Sections ───────────────────────────────────────────────────────── */
.sgk-fo-section { margin-bottom: 24px; }
.sgk-fo-section-title {
  display: flex; align-items: center; gap: 8px; font-size: 1.05rem;
  margin: 0 0 14px; font-weight: 700;
}
.sgk-fo-pill {
  background: var(--sgk-accent); color: #fff; font-size: .72rem;
  border-radius: 20px; padding: 2px 9px; font-weight: 600;
}

/* ── Cartes de commande ─────────────────────────────────────────────── */
.sgk-fo-cards {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px;
}
.sgk-fo-card {
  background: var(--sgk-surface); border: 1px solid var(--sgk-border);
  border-radius: var(--sgk-radius); overflow: hidden;
  display: flex; flex-direction: column;
}
.sgk-fo-card--high   { border-left: 3px solid var(--sgk-danger); }
.sgk-fo-card--medium { border-left: 3px solid var(--sgk-warning); }
.sgk-fo-card--ok     { border-left: 3px solid var(--sgk-success); }
.sgk-fo-card-head {
  display: flex; justify-content: space-between; align-items: center;
  padding: 12px 16px; border-bottom: 1px solid var(--sgk-border); background: var(--sgk-bg);
}
.sgk-fo-card-ref { font-weight: 700; font-size: .9rem; }
.sgk-fo-card-date { font-size: .78rem; color: var(--sgk-muted); }
.sgk-fo-card-body { padding: 14px 16px; flex: 1; }
.sgk-fo-line {
  display: flex; justify-content: space-between; align-items: center;
  font-size: .85rem; padding: 5px 0;
}
.sgk-fo-line span:first-child { color: var(--sgk-muted); }
.sgk-fo-countdown { display: inline-flex; align-items: center; gap: 4px; font-weight: 600; }
.sgk-fo-countdown .sgk-ic { font-size: 15px; }
.sgk-fo-countdown--high   { color: var(--sgk-danger); }
.sgk-fo-countdown--medium { color: var(--sgk-warning); }
.sgk-fo-countdown--ok     { color: var(--sgk-success); }
.sgk-fo-card-foot { padding: 12px 16px; border-top: 1px solid var(--sgk-border); }
.sgk-fo-card-foot .btn { width: 100%; }

/* ── Boutons (repli si le thème n'en fournit pas) ──────────────────── */
.sgk-fo .btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  padding: 9px 16px; border-radius: 6px; font-size: .85rem; font-weight: 600;
  text-decoration: none; cursor: pointer; border: 1px solid transparent;
}
.sgk-fo .btn-primary { background: var(--sgk-accent); color: #fff; }
.sgk-fo .btn-primary:hover { filter: brightness(1.1); color: #fff; }
.sgk-fo .btn-secondary {
  background: var(--sgk-surface); color: var(--sgk-text); border-color: var(--sgk-border);
}
.sgk-fo .btn-secondary:hover { background: var(--sgk-bg); }

/* ── État vide ──────────────────────────────────────────────────────── */
.sgk-fo-empty {
  text-align: center; padding: 36px 20px; color: var(--sgk-muted);
  background: var(--sgk-surface); border: 1px dashed var(--sgk-border);
  border-radius: var(--sgk-radius); margin-bottom: 24px;
}
.sgk-fo-empty .sgk-ic { font-size: 42px; color: var(--sgk-success); }
.sgk-fo-empty p { margin: 10px 0 0; }

/* ── Historique ─────────────────────────────────────────────────────── */
.sgk-fo-history { display: flex; flex-direction: column; gap: 8px; }
.sgk-fo-history-row {
  display: flex; justify-content: space-between; align-items: center;
  background: var(--sgk-surface); border: 1px solid var(--sgk-border);
  border-radius: var(--sgk-radius); padding: 12px 16px; text-decoration: none; color: inherit;
}
.sgk-fo-history-row:hover { border-color: var(--sgk-accent); }
.sgk-fo-history-main { display: flex; flex-direction: column; gap: 2px; }
.sgk-fo-history-ref { font-weight: 700; font-size: .88rem; }
.sgk-fo-history-reason { font-size: .78rem; color: var(--sgk-muted); }
.sgk-fo-history-side { display: flex; align-items: center; gap: 10px; }
.sgk-fo-history-date { font-size: .78rem; color: var(--sgk-muted); }

/* ── Alertes ────────────────────────────────────────────────────────── */
.sgk-fo-alert {
  display: flex; gap: 12px; align-items: flex-start;
  border-radius: var(--sgk-radius); padding: 14px 16px; margin-bottom: 18px;
  border: 1px solid;
}
.sgk-fo-alert .sgk-ic { flex-shrink: 0; }
.sgk-fo-alert strong { display: block; }
.sgk-fo-alert p { margin: 4px 0 0; font-size: .85rem; }
.sgk-fo-alert ul { margin: 0; padding-left: 18px; font-size: .85rem; }
.sgk-fo-alert--success { background: #e7f5ee; border-color: #bfe3cf; color: #146c3c; }
.sgk-fo-alert--info    { background: #E8F0FD; border-color: #C5DAFA; color: #1c3f80; }
.sgk-fo-alert--danger  { background: #fbeaea; border-color: #eccaca; color: #962a2a; }

/* ── Progression ────────────────────────────────────────────────────── */
.sgk-fo-progress { margin-bottom: 22px; }
.sgk-fo-progress-track { height: 8px; border-radius: 4px; background: #eef0f4; overflow: hidden; }
.sgk-fo-progress-fill {
  display: block; height: 100%; background: var(--sgk-accent);
  border-radius: 4px; transition: width .5s ease;
}
.sgk-fo-progress-steps {
  display: flex; justify-content: space-between;
  font-size: .72rem; color: var(--sgk-muted); margin-top: 6px;
}

/* ── Grille formulaire / suivi ─────────────────────────────────────── */
.sgk-fo-grid { display: grid; grid-template-columns: 1.6fr 1fr; gap: 18px; align-items: start; }
.sgk-fo-card-form {
  background: var(--sgk-surface); border: 1px solid var(--sgk-border);
  border-radius: var(--sgk-radius); padding: 20px;
}
.sgk-fo-card-form h3 { margin: 0 0 16px; font-size: 1rem; }
.sgk-fo-summary {
  background: var(--sgk-bg); border: 1px solid var(--sgk-border);
  border-radius: var(--sgk-radius); padding: 18px;
}
.sgk-fo-summary h3 { margin: 0 0 14px; font-size: .95rem; }
.sgk-fo-summary-list { list-style: none; margin: 0 0 12px; padding: 0; }
.sgk-fo-summary-list li {
  display: flex; gap: 8px; align-items: baseline;
  font-size: .82rem; padding: 6px 0; border-bottom: 1px solid var(--sgk-border);
}
.sgk-fo-summary-name { flex: 1; }
.sgk-fo-summary-qty { color: var(--sgk-muted); }
.sgk-fo-summary-price { font-weight: 600; }
.sgk-fo-summary-foot { font-size: .85rem; }
.sgk-fo-summary-foot > div { display: flex; justify-content: space-between; padding: 4px 0; }
.sgk-fo-summary-total { font-weight: 700; font-size: .95rem; border-top: 1px solid var(--sgk-border);
  margin-top: 4px; padding-top: 8px !important; }

/* ── Champs de formulaire ──────────────────────────────────────────── */
.sgk-fo-field { margin-bottom: 16px; }
.sgk-fo-field > label { display: block; font-weight: 600; font-size: .85rem; margin-bottom: 6px; }
.sgk-fo-field small { display: block; color: var(--sgk-muted); font-size: .76rem; margin-top: 4px; }
.sgk-fo .form-control {
  width: 100%; border: 1px solid var(--sgk-border); border-radius: 6px;
  padding: 9px 11px; font-size: .85rem; color: var(--sgk-text); background: #fff;
}
.sgk-fo .form-control:focus { outline: none; border-color: var(--sgk-accent); }
.sgk-checkbox { display: flex; gap: 10px; align-items: flex-start; cursor: pointer; }
.sgk-checkbox input { margin-top: 3px; }
.sgk-checkbox span { font-size: .84rem; line-height: 1.45; }
.sgk-fo-confirm {
  background: var(--sgk-bg); border: 1px solid var(--sgk-border);
  border-radius: 8px; padding: 12px 14px;
}
.sgk-fo-actions {
  display: flex; justify-content: flex-end; gap: 10px;
  border-top: 1px solid var(--sgk-border); padding-top: 16px; margin-top: 4px;
}

/* ── Tableau de suivi ──────────────────────────────────────────────── */
.sgk-fo-detail-table { width: 100%; border-collapse: collapse; }
.sgk-fo-detail-table th, .sgk-fo-detail-table td {
  text-align: left; padding: 8px 4px; font-size: .84rem;
  border-bottom: 1px solid var(--sgk-border); vertical-align: top;
}
.sgk-fo-detail-table th { color: var(--sgk-muted); font-weight: 500; width: 42%; }
.sgk-fo-attachments { margin-top: 14px; }
.sgk-fo-attachments-list { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.sgk-fo-contact {
  margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--sgk-border);
  font-size: .82rem; color: var(--sgk-muted);
}
.sgk-fo-contact .sgk-ic { font-size: 15px; color: var(--sgk-accent); }

/* ── Timeline (partagée) ───────────────────────────────────────────── */
.sgk-timeline { list-style: none; margin: 0; padding: 0; }
.sgk-timeline-item { position: relative; padding: 0 0 16px 22px; }
.sgk-timeline-item:before {
  content: ''; position: absolute; left: 5px; top: 14px; bottom: 0;
  width: 2px; background: var(--sgk-border);
}
.sgk-timeline-item:last-child { padding-bottom: 0; }
.sgk-timeline-item:last-child:before { display: none; }
.sgk-timeline-dot {
  position: absolute; left: 0; top: 3px; width: 12px; height: 12px;
  border-radius: 50%; background: #fff; border: 3px solid var(--sgk-accent);
}
.sgk-timeline-date { font-size: .72rem; color: var(--sgk-muted); margin-bottom: 4px; }
.sgk-timeline-comment { font-size: .82rem; margin-top: 4px; }

/* ── Badges (partagés) ─────────────────────────────────────────────── */
.sgk-badge {
  display: inline-block; padding: 3px 10px; border-radius: 20px;
  font-size: .68rem; font-weight: 700; line-height: 1.6; white-space: nowrap;
}
.sgk-badge-warning   { background: #fbf0dc; color: #95610f; }
.sgk-badge-info      { background: #E8F0FD; color: #2563C9; }
.sgk-badge-primary   { background: #e6e5f7; color: #3b34a8; }
.sgk-badge-secondary { background: #eef0f3; color: #475569; }
.sgk-badge-success   { background: #e3f4ea; color: #146c3c; }
.sgk-badge-danger    { background: #f8e3e3; color: #962a2a; }
.sgk-badge-dark      { background: #e5e7eb; color: #374151; }

/* ── Bloc compte / détail commande ─────────────────────────────────── */
.sgk-account-link .sgk-ic { margin-right: 6px; width: 1.15em; height: 1.15em; vertical-align: -.18em; fill: currentColor; }
.sgk-order-detail {
  background: var(--sgk-surface); border: 1px solid var(--sgk-border);
  border-radius: var(--sgk-radius); padding: 16px; margin-top: 16px;
}
.sgk-order-detail-title {
  display: flex; align-items: center; gap: 6px;
  font-size: .95rem; font-weight: 700; margin: 0 0 10px;
}
.sgk-order-detail-title .sgk-ic { color: var(--sgk-accent); }
.sgk-order-detail-text { font-size: .85rem; margin-bottom: 12px; }

.sgk-fo-back { margin-top: 20px; }

/* ── Responsive ─────────────────────────────────────────────────────── */
@media (max-width: 768px) {
  .sgk-fo-grid { grid-template-columns: 1fr; }
  .sgk-fo-stats { grid-template-columns: 1fr; }
  .sgk-fo-cards { grid-template-columns: 1fr; }
  .sgk-fo-actions { flex-direction: column-reverse; }
  .sgk-fo-actions .btn { width: 100%; }
  .sgk-fo-history-row { flex-direction: column; align-items: flex-start; gap: 8px; }
}

/* =====================================================================
 * SGK Rétractation 1.1.7 — Rétractation partielle, parcours invité,
 * instructions de retour, formulaire imprimable.
 * ===================================================================== */

/* ── Sélecteur d'articles ───────────────────────────────────────────── */
.sgk-item-list {
  border: 1px solid var(--sgk-border); border-radius: 8px;
  overflow: hidden; margin: 8px 0 4px;
}
.sgk-item {
  display: grid;
  grid-template-columns: 1fr auto auto auto;
  gap: 12px; align-items: center;
  padding: 10px 14px; border-bottom: 1px solid var(--sgk-border);
  background: var(--sgk-surface);
}
.sgk-item:last-child { border-bottom: 0; }
.sgk-item--off { background: var(--sgk-bg); opacity: .6; }
.sgk-item-pick { display: flex; align-items: center; gap: 9px; margin: 0; cursor: pointer; }
.sgk-item-pick input { margin: 0; }
.sgk-item-name { font-size: .86rem; font-weight: 600; }
.sgk-item-unit { font-size: .8rem; color: var(--sgk-muted); white-space: nowrap; }
.sgk-item-qty { display: inline-flex; align-items: center; gap: 6px; }
.sgk-item-qty-label { font-size: .74rem; color: var(--sgk-muted); margin: 0; }
.sgk-item-qty-input {
  width: 58px; border: 1px solid var(--sgk-border); border-radius: 6px;
  padding: 5px 7px; font-size: .82rem; text-align: center;
}
.sgk-item-qty-input:disabled { background: var(--sgk-bg); color: var(--sgk-muted); }
.sgk-item-qty-max { font-size: .74rem; color: var(--sgk-muted); }
.sgk-item-qty-static { font-size: .82rem; color: var(--sgk-muted); }
.sgk-item-total { font-size: .86rem; font-weight: 700; white-space: nowrap; text-align: right; }
.sgk-item-foot {
  display: flex; justify-content: space-between; align-items: center;
  font-size: .84rem; padding: 8px 14px 0;
}
.sgk-item-foot--total {
  font-size: .95rem; border-top: 1px solid var(--sgk-border);
  margin-top: 6px; padding-top: 8px;
}
.sgk-item-note {
  display: flex !important; align-items: center; gap: 6px;
  margin-top: 8px; color: var(--sgk-warning) !important;
}
.sgk-item-note .sgk-ic { font-size: 15px; }

/* ── Champ facultatif ───────────────────────────────────────────────── */
.sgk-optional { color: var(--sgk-muted); font-weight: 400; font-size: .8rem; }

/* ── Conditions de retour (formulaire) ──────────────────────────────── */
.sgk-conditions {
  background: #E8F0FD; border: 1px solid #C5DAFA; border-radius: 8px;
  padding: 14px 16px; margin-bottom: 16px;
}
.sgk-conditions-head {
  display: flex; align-items: center; gap: 8px;
  font-size: .9rem; font-weight: 700; color: #1c3f80; margin-bottom: 8px;
}
.sgk-conditions-head .sgk-ic { font-size: 19px; }
.sgk-conditions-text {
  margin: 0; font-size: .85rem; line-height: 1.6; color: var(--sgk-text);
  white-space: pre-line;
}

/* ── Prochaine étape : retour du colis (suivi) ──────────────────────── */
.sgk-next-step {
  border: 1px solid #C5DAFA; border-radius: 10px; overflow: hidden;
  background: var(--sgk-surface); margin-bottom: 18px;
}
.sgk-next-step-head {
  display: flex; align-items: center; gap: 9px;
  background: var(--sgk-ink-grad); color: #fff; padding: 12px 16px;
  font-size: .92rem; font-weight: 700;
}
.sgk-next-step-head .sgk-ic { font-size: 20px; }
.sgk-next-step-intro {
  margin: 0; padding: 12px 16px 4px; font-size: .85rem;
  line-height: 1.6; color: var(--sgk-text);
}
.sgk-next-step-box { padding: 8px 16px 14px; }
.sgk-next-step-label {
  display: block; font-size: .72rem; text-transform: uppercase;
  letter-spacing: .05em; color: var(--sgk-muted); margin-bottom: 4px;
}
.sgk-next-step-addr {
  display: block; font-style: normal; font-weight: 600;
  font-size: .9rem; line-height: 1.6; color: var(--sgk-text);
  background: #E8F0FD; border-radius: 6px; padding: 10px 12px;
  white-space: pre-line;
}
.sgk-next-step-text {
  margin: 0; font-size: .85rem; line-height: 1.6; color: var(--sgk-text);
  background: var(--sgk-bg); border-radius: 6px; padding: 10px 12px;
  white-space: pre-line;
}

/* ── Articles retournés (suivi) ─────────────────────────────────────── */
.sgk-fo-items { margin-top: 14px; }
.sgk-fo-items-list { list-style: none; margin: 8px 0 0; padding: 0; }
.sgk-fo-items-list li {
  display: flex; justify-content: space-between;
  font-size: .83rem; padding: 6px 0; border-bottom: 1px solid var(--sgk-border);
}
.sgk-fo-items-qty { color: var(--sgk-muted); }
.sgk-fo-doc-actions { display: flex; flex-wrap: wrap; gap: 8px; }

/* ── Responsive complémentaire ──────────────────────────────────────── */
@media (max-width: 768px) {
  .sgk-item {
    grid-template-columns: 1fr auto;
    grid-template-areas: "name total" "unit qty";
    gap: 6px 12px;
  }
  .sgk-item-pick { grid-area: name; }
  .sgk-item-total { grid-area: total; }
  .sgk-item-unit { grid-area: unit; }
  .sgk-item-qty { grid-area: qty; justify-content: flex-end; }
  .sgk-item-qty-static { grid-area: qty; text-align: right; }
}

/* =====================================================================
 * SGK Rétractation 1.2.1 — Calque d'identité SwissGeek (front-office).
 * Restreint : le tunnel client vit dans le thème marchand. On signe
 * la marque par l'accent rouge, les polices et l'anneau de focus,
 * sans imposer de surfaces lourdes. Tout est scopé sous .sgk-fo.
 * ===================================================================== */

/* ── Titres en Archivo ──────────────────────────────────────────────── */
.sgk-fo-section-title,
.sgk-fo-card-form h3,
.sgk-fo-summary h3,
.sgk-fo-stat-value,
.sgk-order-detail-title,
.sgk-fo-card-ref {
  font-family: var(--sgk-font-display);
  letter-spacing: -.01em;
}
.sgk-fo-stat-value { font-weight: 800; }

/* ── Étiquettes / pas de progression en JetBrains Mono ──────────────── */
.sgk-fo-progress-steps,
.sgk-fo-next-step-label,
.sgk-next-step-label,
.sgk-fo-detail-table th { font-family: var(--sgk-font-mono); }

/* ── Statistiques : pastille d'icône aux couleurs de marque ─────────── */
.sgk-fo-stat-icon { background: var(--sgk-accent-soft); color: var(--sgk-accent); }
.sgk-fo-stat { position: relative; overflow: hidden; }
.sgk-fo-stat::before {
  content: ""; position: absolute; left: 0; top: 0; right: 0; height: 3px;
  background: var(--sgk-accent-grad);
}

/* ── Bouton primaire : rouge de marque (repli si le thème n'en a pas) ─ */
.sgk-fo .btn-primary { background: var(--sgk-accent); }
.sgk-fo .btn-primary:hover { background: var(--sgk-accent-600); filter: none; }

/* ── Anneau de focus rouge sur les champs ───────────────────────────── */
.sgk-fo .form-control:focus,
.sgk-fo .sgk-item-qty-input:focus {
  outline: none;
  border-color: var(--sgk-accent);
  box-shadow: 0 0 0 3px var(--sgk-accent-soft);
}

/* ── Pastille de section : dégradé de marque ────────────────────────── */
.sgk-fo-pill { background: var(--sgk-accent-grad); }

/* Anti-abus : champ pot de miel (honeypot) — masqué visuellement et hors flux. */
.sgk-fo .sgk-hp,
.sgk-hp{position:absolute!important;left:-9999px!important;top:auto;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none}

/* ── Lien de rétractation permanent (pied de page) ──────────────────────────
   Exigé depuis le 19/06/2026 : fonctionnalité gratuite, clairement libellée et
   visible en permanence pendant toute la durée du délai de rétractation.
   ───────────────────────────────────────────────────────────────────────── */
/* ------------------------------------------------------------------
   Appel à l'action « Droit de rétractation »
   L'emplacement, l'habillage (bouton ou lien) et la couleur d'accent
   sont pilotés depuis le back-office ; --sgk-cta-color est injectée
   en style en ligne sur le conteneur.
   ------------------------------------------------------------------ */
.sgk-fo-cta{margin:10px 0;font-size:.9375rem;line-height:1.4;
  display:flex;flex-wrap:wrap;align-items:center;gap:.75em}
.sgk-fo-cta__link{display:inline-flex;align-items:center;gap:.45em;
  color:inherit;text-decoration:none}
.sgk-fo-cta__link:hover,
.sgk-fo-cta__link:focus{text-decoration:underline}
.sgk-fo-cta__link:focus-visible{outline:2px solid currentColor;outline-offset:3px}
.sgk-fo-cta .sgk-ic{width:1.05em;height:1.05em;flex:0 0 auto}
.sgk-fo-cta__policy{font-size:.8125rem;color:inherit;opacity:.75;text-decoration:underline}

.sgk-fo-cta--button .sgk-fo-cta__link{
  background:var(--sgk-cta-color,#CC0B0D);color:#fff;
  padding:.6em 1.15em;border-radius:var(--sgk-radius,10px);
  font-weight:600;text-decoration:none;
  transition:filter .15s ease,transform .15s ease}
.sgk-fo-cta--button .sgk-fo-cta__link:hover,
.sgk-fo-cta--button .sgk-fo-cta__link:focus{filter:brightness(.92);text-decoration:none}
.sgk-fo-cta--button .sgk-fo-cta__link:active{transform:translateY(1px)}
.sgk-fo-cta--link .sgk-fo-cta__link{color:var(--sgk-cta-color,inherit)}

/* Mention légale injectée sur la page CMS reliée au module. */
.sgk-fo-cms-notice{margin:1.5rem 0 0;padding:1rem 1.15rem;
  border-left:4px solid var(--sgk-cta-color,#CC0B0D);
  background:var(--sgk-bg,#F5F6F8);border-radius:0 var(--sgk-radius,10px) var(--sgk-radius,10px) 0}
.sgk-fo-cms-notice__text{margin:0 0 .75rem;font-size:.9375rem;line-height:1.6}
.sgk-fo-cms-notice__action{margin:0}

/* ------------------------------------------------------------------
   Fil de discussion client <-> boutique
   ------------------------------------------------------------------ */
.sgk-fo-thread{margin:2rem 0 0;padding:1.25rem;background:var(--sgk-surface,#fff);
  border:1px solid var(--sgk-border,#E6E6EC);border-radius:var(--sgk-radius,10px)}
.sgk-fo-thread__title{display:flex;align-items:center;gap:.5em;
  margin:0 0 1rem;font-size:1.05rem;font-weight:700;
  font-family:var(--sgk-font-display,inherit)}
.sgk-fo-thread__title .sgk-ic{width:1.1em;height:1.1em}
.sgk-fo-thread__list{list-style:none;margin:0 0 1.25rem;padding:0;
  display:flex;flex-direction:column;gap:.75rem}
.sgk-fo-msg{padding:.75rem .95rem;border-radius:var(--sgk-radius,10px);
  max-width:88%;border:1px solid var(--sgk-border,#E6E6EC)}
.sgk-fo-msg--mine{margin-left:auto;background:var(--sgk-accent-soft,#FCEAEA);
  border-color:transparent}
.sgk-fo-msg--shop{margin-right:auto;background:var(--sgk-bg,#F5F6F8)}
.sgk-fo-msg__meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:.6em;
  margin:0 0 .35rem;font-size:.75rem;color:var(--sgk-muted,#6B6B78)}
.sgk-fo-msg__author{font-size:.8125rem;color:var(--sgk-text,#1E1E26)}
.sgk-fo-msg__body{font-size:.9375rem;line-height:1.55;word-break:break-word}
.sgk-fo-thread__form{display:flex;flex-direction:column;gap:.6rem}
.sgk-fo-thread__send{align-self:flex-start}

/* Pot de miel : retiré du flux sans display:none, que certains robots
   savent détecter, et masqué aux lecteurs d'écran par aria-hidden. */
.sgk-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

@media (max-width:575px){
  .sgk-fo-msg{max-width:100%}
  .sgk-fo-cta--button .sgk-fo-cta__link{width:100%;justify-content:center}
  .sgk-fo-thread__send{width:100%}
}

/* =============================================================================
   CORRECTIFS 1.0.2 — règles manquantes pour des classes déjà présentes dans les
   gabarits. Sans elles, le formulaire de message du fil de discussion, les cases
   de sélection d'articles et l'enveloppe de secours s'affichaient sans habillage.
   ============================================================================= */

/* Formulaire de dépôt de message (front/status.tpl) */
.sgk-fo-label{display:block;margin:0 0 .35rem;font-size:.8125rem;font-weight:600;
  letter-spacing:.01em;color:var(--sgk-text,#1E1E26)}
.sgk-fo-textarea{display:block;width:100%;min-height:6.5rem;padding:.7rem .85rem;
  font:inherit;font-size:.9375rem;line-height:1.55;color:var(--sgk-text,#1E1E26);
  background:#fff;border:1px solid var(--sgk-border,#E6E6EC);
  border-radius:var(--sgk-radius,10px);resize:vertical;
  transition:border-color .15s ease,box-shadow .15s ease}
.sgk-fo-textarea:focus{outline:none;border-color:var(--sgk-accent,#CC0B0D);
  box-shadow:0 0 0 3px var(--sgk-accent-soft,#FCEAEA)}
.sgk-fo-textarea::placeholder{color:var(--sgk-muted,#6B7280);opacity:1}

/* Horodatage d'un message du fil */
.sgk-fo-msg__date{font-size:.75rem;color:var(--sgk-muted,#6B7280);white-space:nowrap}

/* Case de sélection d'un article (front/form.tpl, rétractation partielle) */
.sgk-item-check{flex:0 0 auto;width:1.05rem;height:1.05rem;margin:0 .6rem 0 0;
  accent-color:var(--sgk-accent,#CC0B0D);cursor:pointer}
.sgk-item-check:focus-visible{outline:2px solid var(--sgk-accent,#CC0B0D);outline-offset:2px}

/* Enveloppe de secours, utilisée quand le thème ne fournit aucun gabarit de page */
.sgk-fo-fallback{max-width:1140px;margin:0 auto;padding:1.5rem 1rem}
.sgk-fo-fallback > h1{margin:0 0 1.25rem;font-size:1.5rem;line-height:1.25}

/* =============================================================================
   CORRECTIFS 1.0.3 — repli d'affichage de l'appel à l'action, injecté par
   ensureCta() lorsque le thème actif n'exécute pas les hooks d'emplacement.
   ============================================================================= */
.sgk-fo-cta-fallback{margin:1rem auto;padding:0 1rem;max-width:1140px}
.sgk-fo-cta-fallback--account{margin:0 0 1.25rem;padding:0;max-width:none}
.sgk-fo-cta--account{margin-top:0}
