/* Décroche — espace client. Mêmes couleurs que le site : nuit émeraude, or, crème ; Bricolage pour les titres. */
@font-face { font-family: 'Bricolage'; src: url('/site/fonts/bricolage-latin.woff2') format('woff2'); font-weight: 200 800; font-display: swap; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF, U+FFFD; }
@font-face { font-family: 'Bricolage'; src: url('/site/fonts/bricolage-latin-ext.woff2') format('woff2'); font-weight: 200 800; font-display: swap; unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1E00-1EFF, U+20A0-20AB, U+20AD-20C0; }
@font-face { font-family: 'Inter'; src: url('/site/fonts/inter-latin.woff2') format('woff2'); font-weight: 100 900; font-display: swap; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF, U+FFFD; }
@font-face { font-family: 'Inter'; src: url('/site/fonts/inter-latin-ext.woff2') format('woff2'); font-weight: 100 900; font-display: swap; unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1E00-1EFF, U+20A0-20AB, U+20AD-20C0; }

:root {
  --nuit: #061A18; --nuit-2: #0A2724; --emeraude: #0B4F4A; --emeraude-2: #14706A; --ombre: #063632;
  --or: #D99A1E; --or-clair: #F2BE4A; --creme: #F6EFE3; --creme-2: #EFE5D3; --papier: #FBF8F2;
  --encre: #0F1F1D; --gris: #55655F; --gris-2: #8A9893; --ligne: rgba(15, 31, 29, .1); --rouge: #B0402A; --vert: #1E7F5C;
  --titre: 'Bricolage', 'Inter', system-ui, sans-serif; --texte: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --carte: 0 1px 2px rgba(6, 26, 24, .05), 0 12px 32px -18px rgba(6, 26, 24, .22);
}
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; }
body { background: var(--papier); color: var(--encre); font: 400 15.5px/1.55 var(--texte); -webkit-font-smoothing: antialiased; }
a { color: var(--emeraude); }
h1, h2, h3 { font-family: var(--titre); letter-spacing: -.02em; line-height: 1.15; margin: 0 0 .5em; }
h1 { font-size: clamp(1.6rem, 3vw, 2.1rem); font-weight: 750; }
h2 { font-size: 1.2rem; font-weight: 700; }
h3 { font-size: 1.02rem; font-weight: 650; }
p { margin: 0 0 .8em; }
:focus-visible { outline: 3px solid var(--or-clair); outline-offset: 2px; border-radius: 6px; }
svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; flex: none; }
[hidden] { display: none !important; }

/* ── Structure ── */
.app { display: flex; min-height: 100vh; }
.side { position: sticky; top: 0; height: 100vh; width: 268px; flex: none; display: flex; flex-direction: column; gap: 1.1rem; padding: 1.4rem 1rem 1rem; color: var(--creme); background: radial-gradient(500px 300px at 0 0, rgba(20, 112, 106, .45), transparent 70%), var(--nuit); overflow-y: auto; }
.side__brand { padding: 0 .5rem; }
.side__brand img { height: 30px; width: auto; }
.side__org { margin: 0 .2rem; padding: .85rem .9rem; border-radius: 16px; background: rgba(246, 239, 227, .06); border: 1px solid rgba(246, 239, 227, .1); display: grid; gap: .15rem; }
.side__label { font-size: .7rem; text-transform: uppercase; letter-spacing: .14em; color: var(--or-clair); font-weight: 600; }
.side__org strong { font: 650 1.02rem/1.25 var(--titre); }
.side__org select { margin-top: .4rem; width: 100%; background: var(--nuit-2); color: var(--creme); border: 1px solid rgba(246, 239, 227, .2); border-radius: 10px; padding: .4rem; font: inherit; font-size: .88rem; }
.side__nav { display: grid; gap: .15rem; }
.side__nav a { display: flex; align-items: center; gap: .7rem; padding: .58rem .8rem; border-radius: 12px; color: rgba(246, 239, 227, .76); text-decoration: none; font-weight: 500; font-size: .94rem; transition: background .15s, color .15s; }
.side__nav a:hover { background: rgba(246, 239, 227, .07); color: #fff; }
.side__nav a[aria-current=page] { background: linear-gradient(90deg, rgba(242, 190, 74, .18), rgba(242, 190, 74, .04)); color: #fff; box-shadow: inset 2px 0 0 var(--or-clair); }
.side__nav a[aria-current=page] svg { color: var(--or-clair); }
.side__sep { margin: .9rem .8rem .25rem; font-size: .7rem; text-transform: uppercase; letter-spacing: .14em; color: rgba(246, 239, 227, .45); font-weight: 600; }
.pill-count { margin-left: auto; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 99px; background: var(--or-clair); color: #1C1405; font-size: .75rem; display: grid; place-items: center; }
.side__me { margin-top: auto; padding: .8rem; border-top: 1px solid rgba(246, 239, 227, .1); display: grid; gap: .2rem; font-size: .84rem; color: rgba(246, 239, 227, .7); word-break: break-all; }
.link { background: none; border: 0; padding: 0; color: var(--or-clair); font: inherit; cursor: pointer; text-align: left; }
.main { flex: 1; min-width: 0; }
.view { max-width: 1100px; margin: 0 auto; padding: 2.2rem clamp(1rem, 3vw, 2.4rem) 4rem; }
.bar { display: none; }
.head { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.6rem; }
.head p { color: var(--gris); margin: 0; max-width: 62ch; }
.eyebrow { display: inline-block; font-size: .72rem; text-transform: uppercase; letter-spacing: .16em; font-weight: 600; color: var(--emeraude-2); margin-bottom: .45rem; }

/* ── Cartes, grilles ── */
.card { background: #fff; border: 1px solid var(--ligne); border-radius: 20px; padding: 1.4rem 1.5rem; box-shadow: var(--carte); margin-bottom: 1.1rem; }
.card--dark { background: linear-gradient(140deg, var(--nuit), var(--emeraude)); color: var(--creme); border: 0; }
.card--dark h2, .card--dark strong { color: #fff; }
.card--gold { background: linear-gradient(180deg, #fff, var(--creme)); border-color: rgba(217, 154, 30, .35); }
.card > :last-child { margin-bottom: 0; }
.grid { display: grid; gap: 1.1rem; margin-bottom: 1.1rem; }
.grid:last-child { margin-bottom: 0; }
.grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid > .card { margin: 0; }
.kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin-bottom: 1.1rem; }
.kpi { background: #fff; border: 1px solid var(--ligne); border-radius: 18px; padding: 1.1rem 1.2rem; box-shadow: var(--carte); }
.kpi strong { display: block; font: 750 2rem/1.1 var(--titre); color: var(--emeraude); font-variant-numeric: tabular-nums; }
.kpi span { color: var(--gris); font-size: .88rem; }
.kpi--gold strong { color: var(--or); }
.muted { color: var(--gris); }
.small { font-size: .86rem; }
.meter { height: 10px; border-radius: 99px; background: var(--creme-2); overflow: hidden; margin: .6rem 0 .4rem; }
.meter i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--emeraude-2), var(--or-clair)); }
.meter.is-over i { background: linear-gradient(90deg, var(--or), var(--rouge)); }

/* ── Boutons et champs ── */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .45rem; padding: .62rem 1.05rem; border-radius: 999px; border: 1.5px solid var(--ligne); background: #fff; color: var(--encre); font: 600 .92rem/1.1 var(--texte); text-decoration: none; cursor: pointer; transition: transform .15s, background .15s, border-color .15s, box-shadow .15s; white-space: nowrap; }
.btn:hover { border-color: var(--emeraude-2); }
.btn:disabled { opacity: .55; cursor: default; }
.btn--primary { background: var(--emeraude); color: var(--creme); border-color: var(--emeraude); }
.btn--primary:hover { background: var(--emeraude-2); }
.btn--gold { background: linear-gradient(180deg, var(--or-clair), var(--or)); color: #1C1405; border-color: transparent; box-shadow: 0 8px 22px -10px rgba(217, 154, 30, .7); }
.btn--danger { color: var(--rouge); }
.btn--sm { padding: .42rem .8rem; font-size: .84rem; }
.btn svg { width: 17px; height: 17px; }
.actions { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; margin-top: 1rem; }
label.field { display: grid; gap: .35rem; margin-bottom: .9rem; font-weight: 550; font-size: .9rem; }
label.field small { font-weight: 400; color: var(--gris); }
input, select, textarea { width: 100%; font: inherit; font-size: .95rem; padding: .66rem .85rem; border-radius: 12px; border: 1.5px solid rgba(15, 31, 29, .15); background: var(--papier); color: var(--encre); transition: border-color .15s, box-shadow .15s; }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--emeraude-2); box-shadow: 0 0 0 4px rgba(20, 112, 106, .13); }
input:disabled, select:disabled, textarea:disabled { opacity: .7; }
textarea { resize: vertical; min-height: 6rem; line-height: 1.5; }
.knowledge { min-height: 22rem; font-size: .92rem; }
.check { display: flex; gap: .6rem; align-items: flex-start; margin: .5rem 0; font-weight: 500; }
.check input { width: 18px; height: 18px; margin-top: .15rem; accent-color: var(--emeraude); }
.week { display: grid; grid-template-columns: 110px 1fr; gap: .5rem 1rem; align-items: center; margin-bottom: 1rem; }
.week label { font-weight: 550; }

/* ── Choix (situation, voix) ── */
.choices { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: .7rem; margin-bottom: 1rem; }
.choice { position: relative; display: grid; gap: .2rem; padding: .95rem 1rem; border-radius: 16px; border: 1.5px solid var(--ligne); background: var(--papier); cursor: pointer; transition: border-color .15s, background .15s; }
.choice input { position: absolute; opacity: 0; pointer-events: none; }
.choice strong { font-family: var(--titre); font-size: 1rem; }
.choice span { font-size: .84rem; color: var(--gris); }
.choice em { font-style: normal; font-size: .8rem; font-weight: 650; color: var(--or); }
.choice:has(input:checked) { border-color: var(--emeraude); background: rgba(11, 79, 74, .05); box-shadow: inset 0 0 0 1px var(--emeraude); }
.choice:has(input:disabled) { cursor: default; }

/* ── Listes d'appels et demandes ── */
.filters { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.chip { padding: .45rem .9rem; border-radius: 99px; border: 1.5px solid var(--ligne); background: #fff; font: 600 .85rem/1 var(--texte); cursor: pointer; color: var(--encre); }
.chip[aria-pressed=true] { background: var(--nuit); color: var(--creme); border-color: var(--nuit); }
.call { padding: 1.1rem 1.25rem; }
.call.is-todo { box-shadow: inset 3px 0 0 var(--or-clair), var(--carte); }
.call header { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; }
.call__who { font: 650 1.02rem/1.3 var(--titre); }
.call__meta { font-size: .84rem; color: var(--gris); }
.call p { margin: .6rem 0 0; }
.tag { display: inline-flex; align-items: center; gap: .3rem; padding: .18rem .55rem; border-radius: 99px; font-size: .74rem; font-weight: 650; background: var(--creme); color: var(--emeraude); }
.tag--haute { background: #FCEBD0; color: #8A5A00; }
.tag--urgente { background: #F9DED7; color: var(--rouge); }
.tag--ok { background: #DDF1E8; color: var(--vert); }
audio { width: 100%; margin-top: .7rem; height: 38px; }
details summary { cursor: pointer; font-size: .86rem; color: var(--emeraude); font-weight: 600; margin-top: .7rem; }
.chat { display: grid; gap: .5rem; margin-top: .7rem; }
.msg { max-width: 85%; padding: .6rem .85rem; border-radius: 14px; font-size: .9rem; }
.msg--in { background: var(--creme); justify-self: start; border-bottom-left-radius: 4px; }
.msg--out { background: var(--emeraude); color: var(--creme); justify-self: end; border-bottom-right-radius: 4px; }
.list { list-style: none; margin: 0; padding: 0; }
.list > li { display: flex; gap: 1rem; justify-content: space-between; align-items: center; padding: .85rem 0; border-bottom: 1px solid var(--ligne); }
.list > li:last-child { border-bottom: 0; }
.list small { display: block; color: var(--gris); }
.when { font: 700 .95rem/1.2 var(--titre); color: var(--emeraude); min-width: 120px; }
.empty { text-align: center; padding: 2.4rem 1rem; color: var(--gris); }
.empty strong { display: block; font: 650 1.1rem/1.3 var(--titre); color: var(--encre); margin-bottom: .3rem; }

/* ── Essai ── */
.tester { display: grid; grid-template-rows: auto 1fr auto; height: min(70vh, 640px); padding: 0; overflow: hidden; }
.tester__top { display: flex; gap: .6rem; align-items: center; padding: .9rem 1.1rem; border-bottom: 1px solid var(--ligne); }
.tester__top select { width: auto; }
.tester__log { overflow-y: auto; padding: 1.1rem; display: flex; flex-direction: column; gap: .6rem; background: var(--papier); }
.tester__log .msg { max-width: 75%; }
.tester__note { align-self: center; font-size: .8rem; color: var(--gris); background: var(--creme); padding: .3rem .7rem; border-radius: 99px; }
.tester form { display: flex; gap: .6rem; padding: .8rem; border-top: 1px solid var(--ligne); }

/* ── Code, documentation ── */
pre, code { font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace; font-size: .84rem; }
pre { background: var(--nuit); color: #E6F2EF; padding: 1rem 1.1rem; border-radius: 14px; overflow-x: auto; line-height: 1.5; margin: .6rem 0 1rem; }
:not(pre) > code { background: var(--creme); padding: .1rem .35rem; border-radius: 6px; }
.secret { display: flex; gap: .5rem; align-items: center; }
.secret code { flex: 1; padding: .6rem .8rem; background: var(--creme); border-radius: 10px; overflow-x: auto; white-space: nowrap; }
.tabs { display: flex; gap: .3rem; margin: .6rem 0 0; }
.tabs button { padding: .35rem .7rem; border-radius: 8px 8px 0 0; border: 0; background: var(--creme-2); font: 600 .8rem var(--texte); cursor: pointer; }
.tabs button[aria-selected=true] { background: var(--nuit); color: #fff; }
.tabs + pre { margin-top: 0; border-top-left-radius: 0; }
.banner { display: flex; gap: .8rem; align-items: center; padding: .9rem 1.1rem; border-radius: 16px; background: #FCEBD0; color: #6E4800; margin-bottom: 1.1rem; font-weight: 500; }
.banner--ok { background: #DDF1E8; color: var(--vert); }
.banner--err { background: #F9DED7; color: var(--rouge); }
.number { font: 750 2rem/1.1 var(--titre); letter-spacing: .01em; color: var(--emeraude); }

/* ── Tableaux ── */
.table { width: 100%; border-collapse: collapse; font-size: .9rem; }
.table th, .table td { text-align: left; padding: .7rem .5rem; border-bottom: 1px solid var(--ligne); }
.table th { color: var(--gris); font-weight: 600; font-size: .8rem; text-transform: uppercase; letter-spacing: .05em; }
.table td.num { text-align: right; font-variant-numeric: tabular-nums; }

/* ── Connexion ── */
.login { min-height: 100vh; display: grid; grid-template-columns: 1.05fr .95fr; }
.login__art { position: relative; overflow: hidden; display: flex; flex-direction: column; justify-content: space-between; padding: 2.4rem; color: var(--creme); background: radial-gradient(700px 400px at 80% 0%, rgba(20, 112, 106, .55), transparent 60%), linear-gradient(180deg, var(--nuit), var(--nuit-2)); }
.login__art::before { content: ''; position: absolute; inset: 0; background-image: linear-gradient(rgba(246, 239, 227, .045) 1px, transparent 1px), linear-gradient(90deg, rgba(246, 239, 227, .045) 1px, transparent 1px); background-size: 46px 46px; mask-image: radial-gradient(ellipse 80% 60% at 50% 40%, #000 30%, transparent 80%); }
.login__art > * { position: relative; }
.login__art img { height: 34px; width: auto; align-self: flex-start; }
.login__art h1 { color: #fff; font-size: clamp(2rem, 3.5vw, 2.8rem); max-width: 16ch; }
.login__art h1 span { color: var(--or-clair); }
.login__art p { color: rgba(246, 239, 227, .75); max-width: 42ch; }
.login__form { display: grid; place-items: center; padding: 2rem; }
.login__form form { width: min(400px, 100%); }
.code-input { font: 700 1.6rem/1 var(--titre); letter-spacing: .5em; text-align: center; }

/* ── Messages ── */
.toasts { position: fixed; z-index: 100; right: 1rem; bottom: 1rem; display: grid; gap: .5rem; }
.toast { padding: .8rem 1.1rem; border-radius: 14px; background: var(--nuit); color: var(--creme); box-shadow: 0 16px 40px -14px rgba(0, 0, 0, .5); font-weight: 500; max-width: 380px; animation: up .25s ease; }
.toast--success { box-shadow: inset 3px 0 0 var(--or-clair), 0 16px 40px -14px rgba(0, 0, 0, .5); }
.toast--error { background: var(--rouge); }
@keyframes up { from { transform: translateY(8px); opacity: 0; } }
.skeleton { height: 14rem; border-radius: 20px; background: linear-gradient(90deg, var(--creme-2), var(--creme), var(--creme-2)); background-size: 200% 100%; animation: shimmer 1.2s infinite; }
@keyframes shimmer { to { background-position: -200% 0; } }

/* ── Mobile ── */
@media (max-width: 1180px) {
  .grid--2 { grid-template-columns: 1fr; }
}
@media (max-width: 980px) {
  .kpis { grid-template-columns: repeat(2, 1fr); }
  .grid--3 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 820px) {
  .side { position: fixed; z-index: 60; left: 0; top: 0; transform: translateX(-102%); transition: transform .22s ease; }
  .side.is-open { transform: none; box-shadow: 20px 0 50px rgba(0, 0, 0, .35); }
  .bar { position: sticky; top: 0; z-index: 50; display: flex; align-items: center; justify-content: space-between; padding: .7rem 1rem; background: var(--nuit); }
  .bar img { height: 24px; }
  .bar__menu { width: 40px; height: 40px; display: grid; place-content: center; gap: 5px; background: none; border: 0; cursor: pointer; }
  .bar__menu span { display: block; width: 22px; height: 2px; border-radius: 2px; background: var(--creme); }
  .grid--2, .grid--3, .login { grid-template-columns: 1fr; }
  .login__art { min-height: 260px; }
  .view { padding-top: 1.4rem; }
  .week { grid-template-columns: 1fr; gap: .2rem; }
}
@media (max-width: 520px) {
  .kpis { grid-template-columns: 1fr 1fr; }
  .kpi strong { font-size: 1.6rem; }
  .call header, .list > li { flex-direction: column; align-items: stretch; }
}
