/* Composants Material 3 communs aux espaces (fiche, statuts, suivi, boutons, devis) et personnalité Asceli. */
/* Détail */
.hero{padding:8px 16px 16px;display:grid;gap:12px}
.status{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px 0 8px;border-radius:8px;font-size:.8125em;font-weight:600;justify-self:start}
.status .ms{font-size:18px}
.s-err{background:var(--error-container);color:var(--on-error-container)}
.s-warn{background:var(--warn-container);color:var(--on-warn-container)}
.s-info{background:var(--primary-container);color:var(--on-primary-container)}
.s-ok{background:var(--success-container);color:var(--on-success-container)}
.hero h2{margin:0;font-size:1.5em;font-weight:500;line-height:1.25}
.hero .addr{color:var(--on-surface-variant);font-size:.9375em;line-height:1.45}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.tonal{height:40px;border-radius:20px;border:0;padding:0 16px 0 12px;background:var(--secondary-container);color:var(--on-secondary-container);font:inherit;font-size:.875em;font-weight:600;display:inline-flex;align-items:center;gap:8px;cursor:pointer;text-decoration:none}
.tonal .ms{font-size:18px}
.section{padding:8px 0}
.section h3{margin:0;padding:12px 16px 4px;font-size:.875em;font-weight:600;color:var(--primary)}
.kv{display:flex;justify-content:space-between;gap:16px;padding:10px 16px;font-size:.9375em}
.kv span:first-child{color:var(--on-surface-variant)}
.kv span:last-child{text-align:right;font-variant-numeric:tabular-nums}
.note-warn{margin:4px 16px 0;padding:10px 12px;border-radius:12px;background:var(--warn-container);color:var(--on-warn-container);font-size:.875em;display:flex;gap:8px;align-items:center}
.secret{letter-spacing:.2em;font-weight:600}
.textbtn{border:0;background:none;color:var(--primary);font:inherit;font-weight:600;font-size:.875em;height:40px;padding:0 12px;border-radius:20px;cursor:pointer}
.textbtn:hover{background:color-mix(in srgb,var(--primary) 8%,transparent)}
.opts{display:flex;flex-wrap:wrap;gap:8px;padding:4px 16px 8px}
.photos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:4px 16px 8px}
.ph{aspect-ratio:1;max-width:100%;border-radius:12px;position:relative;overflow:hidden;color:#fff;display:flex;align-items:flex-end;padding:8px;font-size:.75em;font-weight:500}
.ph .badge{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:rgba(0,0,0,.45)}
.ph .badge .ms{font-size:16px}
.addph{aspect-ratio:1;border-radius:12px;border:1px dashed var(--outline);background:none;color:var(--primary);display:grid;place-items:center;align-content:center;gap:4px;font:inherit;font-size:.75em;font-weight:600;cursor:pointer}
.switchrow{display:flex;align-items:center;gap:16px;padding:12px 16px;min-height:72px}
.switchrow .txt{flex:1;display:grid;gap:2px}
.switchrow .txt span{font-size:.875em;color:var(--on-surface-variant)}
.switch{width:52px;height:32px;border-radius:16px;border:2px solid var(--outline);background:var(--surface-highest);position:relative;cursor:pointer;flex:none;padding:0}
.switch::after{content:"";position:absolute;top:6px;left:6px;width:16px;height:16px;border-radius:50%;background:var(--outline);transition:all .2s}
.switch[aria-checked="true"]{background:var(--primary);border-color:var(--primary)}
.switch[aria-checked="true"]::after{left:24px;top:2px;width:24px;height:24px;background:var(--on-primary)}
.quote{margin:4px 16px 8px;border-radius:16px;background:var(--surface-c);padding:16px;display:grid;gap:8px}
.quote .ln{display:flex;justify-content:space-between;gap:12px;font-size:.875em;font-variant-numeric:tabular-nums}
.quote .tot{border-top:1px solid var(--outline-variant);padding-top:8px;font-weight:600;font-size:1em}
.quote .src{font-size:.75em;color:var(--on-surface-variant);display:flex;gap:6px;align-items:center}
.steps{list-style:none;margin:0;padding:4px 16px 8px;display:grid}
.steps li{display:grid;grid-template-columns:24px 1fr auto;gap:12px;padding:8px 0;align-items:start}
.steps .dot{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--surface-high);color:var(--on-surface-variant)}
.steps .dot .ms{font-size:16px}
.steps li.on .dot{background:var(--primary);color:var(--on-primary)}
.steps .lbl{display:grid;gap:2px;font-size:.9375em}
.steps .lbl small{font-size:.8125em;color:var(--on-surface-variant)}
.steps .lbl small.ok{color:var(--success);font-weight:600}
.steps .lbl small.wait{color:var(--on-surface-variant);font-style:italic}
.steps .t{font-size:.8125em;color:var(--on-surface-variant);font-variant-numeric:tabular-nums}
.checkrow{display:flex;align-items:center;gap:12px;padding:8px 16px;min-height:56px}
.checkrow .lab{flex:1;font-size:.9375em}
.seg{display:flex;border:1px solid var(--outline);border-radius:20px;overflow:hidden;flex:none}
.seg button{height:40px;min-width:64px;border:0;background:none;color:var(--on-surface);font:inherit;font-size:.8125em;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:4px;justify-content:center;padding:0 10px}
.seg button+button{border-left:1px solid var(--outline)}
.seg button[aria-pressed="true"].ok{background:var(--success-container);color:var(--on-success-container)}
.seg button[aria-pressed="true"].ko{background:var(--warn-container);color:var(--on-warn-container)}
.progress{height:4px;margin:4px 16px 8px;border-radius:2px;background:var(--surface-highest);overflow:hidden}
.progress i{display:block;height:100%;background:var(--primary);transition:width .3s}

/* ---------- Personnalité Asceli ---------- */
.cabin{display:flex;gap:14px;align-items:center;background:var(--nuit-deep);border:1px solid #22305C;border-radius:20px;padding:14px 16px;color:var(--givre);width:100%;text-align:left;font:inherit;cursor:pointer}
.cabin .led{display:grid;place-items:center;min-width:64px;height:64px;border-radius:14px;background:#0A1022;color:var(--signal);font-family:var(--f-brand);font-weight:900;font-stretch:112%;font-size:1.6em;flex:none;font-variant-numeric:tabular-nums}
.cabin .led small{font-size:.45em;letter-spacing:.08em;margin-top:-4px;font-weight:700}
.cabin .what{flex:1;min-width:0;display:grid;gap:2px}
.cabin .what .k{font-size:.75em;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--signal)}
.cabin .what b{font-weight:600;font-size:1.0625em;line-height:1.3}
.cabin .what span{font-size:.875em;color:var(--brume)}
.cabin .go{width:44px;height:44px;border-radius:50%;background:var(--signal);color:var(--on-signal);display:grid;place-items:center;flex:none}
.avatar{position:relative}
.avatar::after{content:"";position:absolute;inset:5px;border-radius:50%;border:2px solid currentColor;opacity:.55}
.hero h2,.done h2{font-family:var(--f-brand);font-weight:800;font-stretch:112%;letter-spacing:-.01em}
.filled.signal{background:var(--signal);color:var(--on-signal)}
.filled.signal:disabled{background:color-mix(in srgb,var(--on-surface) 12%,transparent);color:color-mix(in srgb,var(--on-surface) 38%,transparent)}
.steps{position:relative}
.steps li{position:relative}
.steps li:not(:last-child)::before{content:"";position:absolute;left:11px;top:32px;bottom:-8px;width:2px;background:var(--outline-variant)}
.steps li.on:not(:last-child)::before{background:var(--primary)}
.steps li.cur .dot{background:var(--signal);color:var(--on-signal);border-radius:7px;box-shadow:0 0 0 4px color-mix(in srgb,var(--signal) 30%,transparent)}
.done .big{background:var(--nuit);color:var(--signal);position:relative;overflow:hidden}
.done .big .ms{animation:rise 1.4s ease-out infinite}
@keyframes rise{0%{transform:translateY(18px);opacity:0}40%{opacity:1}100%{transform:translateY(-18px);opacity:0}}
.outlined{height:40px;border-radius:20px;border:1px solid var(--outline);background:none;color:var(--primary);font:inherit;font-weight:600;font-size:14px;padding:0 16px;cursor:pointer}
