/* =========================================================
   Toquea · composants d'interface (v1.0)
   À charger après toquea-tokens.css. Toutes les classes commencent par .tq-
   ========================================================= */
.tq-app,.tq-app *,.tq-app *::before,.tq-app *::after{box-sizing:border-box}
.tq-app{font-family:var(--tq-font-ui);font-size:var(--tq-text-base);line-height:var(--tq-leading-normal);color:var(--tq-text);background:var(--tq-bg);-webkit-font-smoothing:antialiased}
.tq-h1,.tq-h2,.tq-h3{font-family:var(--tq-font-display);color:var(--tq-text);line-height:var(--tq-leading-tight);letter-spacing:-.02em;margin:0}
.tq-h1{font-size:var(--tq-text-2xl);font-weight:800}
.tq-h2{font-size:var(--tq-text-xl);font-weight:800}
.tq-h3{font-size:var(--tq-text-lg);font-weight:700}
.tq-muted{color:var(--tq-text-2)}
.tq-num{font-variant-numeric:tabular-nums}

/* Boutons */
.tq-btn{--h:40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:var(--h);padding:0 16px;border-radius:var(--tq-radius-md);border:1px solid transparent;font:600 14px/1 var(--tq-font-ui);cursor:pointer;text-decoration:none;white-space:nowrap;transition:background var(--tq-dur-fast) var(--tq-ease),border-color var(--tq-dur-fast),color var(--tq-dur-fast),box-shadow var(--tq-dur-fast)}
.tq-btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--tq-bg),0 0 0 5px var(--tq-focus)}
.tq-btn[disabled],.tq-btn[aria-disabled="true"]{opacity:.45;cursor:not-allowed}
.tq-btn--primary{background:var(--tq-brand);color:var(--tq-on-brand)}
.tq-btn--primary:hover{background:var(--tq-brand-hover)} .tq-btn--primary:active{background:var(--tq-brand-active)}
.tq-btn--secondary{background:var(--tq-surface);color:var(--tq-text);border-color:var(--tq-border-strong)}
.tq-btn--secondary:hover{background:var(--tq-surface-2)}
.tq-btn--ghost{background:transparent;color:var(--tq-brand-text)} .tq-btn--ghost:hover{background:var(--tq-brand-soft)}
.tq-btn--accent{background:var(--tq-accent);color:var(--tq-on-accent)} .tq-btn--accent:hover{filter:brightness(.95)}
.tq-btn--danger{background:var(--tq-danger);color:#fff} .tq-btn--danger:hover{filter:brightness(.92)}
.tq-btn--sm{--h:32px;padding:0 12px;font-size:13px;border-radius:var(--tq-radius-sm)}
.tq-btn--lg{--h:48px;padding:0 22px;font-size:15.5px}
.tq-btn--block{width:100%}

/* Champs */
.tq-field{display:grid;gap:6px}
.tq-label{font:600 13px var(--tq-font-ui);color:var(--tq-text)}
.tq-help{font-size:12.5px;color:var(--tq-text-3)}
.tq-error{font-size:12.5px;color:var(--tq-danger-text);font-weight:500}
.tq-input,.tq-select,.tq-textarea{width:100%;height:40px;padding:0 12px;border-radius:var(--tq-radius-md);border:1px solid var(--tq-border-strong);background:var(--tq-surface);color:var(--tq-text);font:400 15px var(--tq-font-ui);transition:border-color var(--tq-dur-fast),box-shadow var(--tq-dur-fast)}
.tq-textarea{height:auto;min-height:96px;padding:10px 12px;line-height:1.5;resize:vertical}
.tq-input::placeholder,.tq-textarea::placeholder{color:var(--tq-text-3)}
.tq-input:hover,.tq-select:hover,.tq-textarea:hover{border-color:var(--tq-text-3)}
.tq-input:focus,.tq-select:focus,.tq-textarea:focus{outline:none;border-color:var(--tq-brand);box-shadow:0 0 0 3px var(--tq-brand-soft-2)}
.tq-input[aria-invalid="true"]{border-color:var(--tq-danger);box-shadow:0 0 0 3px var(--tq-danger-soft)}
.tq-app input[type=checkbox],.tq-app input[type=radio]{accent-color:var(--tq-brand);width:18px;height:18px}

/* Pastilles de statut */
.tq-badge{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:var(--tq-radius-full);font:600 12px/1 var(--tq-font-ui);white-space:nowrap}
.tq-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.tq-badge--nouvelle{background:var(--tq-info-soft);color:var(--tq-info-text)}
.tq-badge--confirmee{background:var(--tq-brand-soft);color:var(--tq-brand-text)}
.tq-badge--preparation{background:var(--tq-warning-soft);color:var(--tq-warning-text)}
.tq-badge--prete{background:var(--tq-success-soft);color:var(--tq-success-text)}
.tq-badge--retiree{background:var(--tq-surface-3);color:var(--tq-text-2)}
.tq-badge--annulee{background:var(--tq-danger-soft);color:var(--tq-danger-text)}
.tq-badge--signe{background:var(--tq-success-soft);color:var(--tq-success-text)}
.tq-badge--attente{background:var(--tq-warning-soft);color:var(--tq-warning-text)}

/* Cartes, indicateurs */
.tq-card{background:var(--tq-surface);border:1px solid var(--tq-border);border-radius:var(--tq-radius-lg);box-shadow:var(--tq-shadow-sm);padding:var(--tq-space-5)}
.tq-kpi{display:grid;gap:4px}
.tq-kpi__label{font:600 12px var(--tq-font-ui);letter-spacing:.06em;text-transform:uppercase;color:var(--tq-text-2)}
.tq-kpi__value{font:800 30px/1.1 var(--tq-font-display);color:var(--tq-text);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.tq-kpi__trend{font:600 12.5px var(--tq-font-ui);color:var(--tq-success-text)}
.tq-kpi__trend--down{color:var(--tq-danger-text)}

/* Tableau */
.tq-table{width:100%;border-collapse:collapse;font-size:14px}
.tq-table th{font:600 12px var(--tq-font-ui);letter-spacing:.05em;text-transform:uppercase;color:var(--tq-text-2);text-align:left;padding:10px 12px;border-bottom:1px solid var(--tq-border);background:var(--tq-surface-2)}
.tq-table td{padding:12px;border-bottom:1px solid var(--tq-border);color:var(--tq-text)}
.tq-table tbody tr:hover td{background:var(--tq-surface-2)}
.tq-table td.tq-num,.tq-table th.tq-num{text-align:right}

/* Navigation latérale */
.tq-nav{display:grid;gap:2px;padding:12px;background:var(--tq-surface);border-right:1px solid var(--tq-border)}
.tq-nav__item{display:flex;align-items:center;gap:10px;height:38px;padding:0 12px;border-radius:var(--tq-radius-md);color:var(--tq-text-2);font:500 14px var(--tq-font-ui);text-decoration:none}
.tq-nav__item:hover{background:var(--tq-surface-2);color:var(--tq-text)}
.tq-nav__item[aria-current="page"]{background:var(--tq-brand-soft);color:var(--tq-brand-text);font-weight:600}
.tq-nav__item svg{width:18px;height:18px;flex:none}

/* Onglets */
.tq-tabs{display:flex;gap:4px;border-bottom:1px solid var(--tq-border)}
.tq-tab{padding:10px 14px;font:600 14px var(--tq-font-ui);color:var(--tq-text-2);border:0;background:none;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer}
.tq-tab[aria-selected="true"]{color:var(--tq-brand-text);border-bottom-color:var(--tq-brand)}

/* Messages */
.tq-toast{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:var(--tq-radius-lg);background:var(--tq-text);color:var(--tq-text-inverse);box-shadow:var(--tq-shadow-lg);font-size:14px;max-width:420px}
.tq-alert{display:flex;gap:10px;padding:12px 14px;border-radius:var(--tq-radius-md);font-size:14px;border:1px solid transparent}
.tq-alert--info{background:var(--tq-info-soft);color:var(--tq-info-text)}
.tq-alert--success{background:var(--tq-success-soft);color:var(--tq-success-text)}
.tq-alert--warning{background:var(--tq-warning-soft);color:var(--tq-warning-text)}
.tq-alert--danger{background:var(--tq-danger-soft);color:var(--tq-danger-text)}

/* Divers */
.tq-avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--tq-brand-soft-2);color:var(--tq-brand-text);font:700 13px var(--tq-font-ui)}
.tq-stripe{height:8px;background:var(--tq-stripe)}
.tq-empty{display:grid;justify-items:center;gap:10px;text-align:center;padding:40px 20px;color:var(--tq-text-2)}
@media (prefers-reduced-motion:reduce){.tq-btn,.tq-input,.tq-select,.tq-textarea{transition:none}}
