@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');

/* Urnéo components — every value comes from tokens.css */
body { font-family: var(--font-sans); color: var(--text); background: var(--bg); -webkit-font-smoothing: antialiased; }
.ur-icon { flex: none; }
.metric, .metric-sm { font-variant-numeric: tabular-nums; }

/* Logo */
.ur-logo { display: inline-flex; align-items: center; gap: 8px; color: var(--text); }
.ur-logo-reversed { color: var(--on-ink); }
.ur-logo-word { font-family: var(--font-sans); font-weight: 800; letter-spacing: -0.02em; line-height: 1; }
.ur-logo-accent { color: var(--accent-text); }
.ur-logo-reversed .ur-logo-accent { color: var(--accent); }

/* Button */
.ur-btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); font: 600 15px/22px var(--font-sans); border-radius: var(--radius-md); border: 1px solid transparent; padding: 9px 16px; cursor: pointer; transition: background-color .15s ease, border-color .15s ease; white-space: nowrap; }
.ur-btn:focus-visible, .ur-input:focus-visible, .ur-phase-btn:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.ur-btn-sm { font-size: 13px; line-height: 18px; padding: 7px 12px; border-radius: var(--radius-sm); }
.ur-btn-lg { font-size: 16px; line-height: 24px; padding: 12px 22px; }
.ur-btn-block { width: 100%; }
.ur-btn-primary { background: var(--primary); color: var(--on-primary); }
.ur-btn-primary:hover { background: var(--primary-hover); }
.ur-btn-accent { background: var(--accent); color: var(--on-accent); }
.ur-btn-accent:hover { background: var(--accent-hover); }
.ur-btn-secondary { background: var(--surface); color: var(--text); border-color: var(--border-strong); }
.ur-btn-secondary:hover { background: var(--surface-sunken); }
.ur-btn-ghost { background: transparent; color: var(--text); }
.ur-btn-ghost:hover { background: var(--surface-sunken); }
.ur-btn-danger { background: var(--surface); color: var(--danger); border-color: var(--danger); }
.ur-btn-danger:hover { background: var(--danger-soft); }
.ur-btn:disabled { opacity: .45; cursor: not-allowed; }

/* Badge */
.ur-badge { display: inline-flex; align-items: center; gap: 6px; font: 600 12px/16px var(--font-sans); padding: 3px 8px; border-radius: var(--radius-sm); white-space: nowrap; }
.ur-badge-neutral { background: var(--surface-sunken); color: var(--text-muted); }
.ur-badge-success { background: var(--success-soft); color: var(--success); }
.ur-badge-warning { background: var(--warning-soft); color: var(--warning); }
.ur-badge-danger { background: var(--danger-soft); color: var(--danger); }
.ur-badge-info { background: var(--info-soft); color: var(--info); }
.ur-badge-accent { background: var(--accent-soft); color: var(--accent-text); }
.ur-badge-dot { width: 7px; height: 7px; border-radius: var(--radius-full); background: currentColor; }
.ur-badge-dot-live { animation: ur-pulse 1.6s ease-in-out infinite; }
@keyframes ur-pulse { 50% { opacity: .35; } }
@media (prefers-reduced-motion: reduce) { .ur-badge-dot-live, .ur-live-dot { animation: none; } }

/* Input */
.ur-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.ur-label { font: 600 13px/18px var(--font-sans); color: var(--text); }
.ur-control { position: relative; display: flex; align-items: center; }
.ur-input { width: 100%; font: 400 15px/22px var(--font-sans); color: var(--text); background: var(--surface); border: 1px solid var(--border-strong); border-radius: var(--radius-md); padding: 9px 12px; }
.ur-input::placeholder { color: var(--text-muted); }
/* Champs date/heure : Safari (iPhone) leur donne une largeur native plus grande que les autres champs. */
.ur-input[type="date"], .ur-input[type="time"], .ur-input[type="datetime-local"] { -webkit-appearance: none; appearance: none; display: block; min-width: 0; max-width: 100%; height: 42px; box-sizing: border-box; }
.ur-input::-webkit-date-and-time-value { text-align: left; margin: 0; }
.ur-suffix { position: absolute; right: 12px; color: var(--text-muted); font: 500 14px/20px var(--font-sans); pointer-events: none; }
.ur-control:has(.ur-suffix) .ur-input { padding-right: 40px; }
.ur-help { margin: 0; font: 500 13px/18px var(--font-sans); color: var(--text-muted); }
.ur-error { margin: 0; display: flex; align-items: center; gap: 4px; font: 600 13px/18px var(--font-sans); color: var(--danger); }
.ur-field-error .ur-input { border-color: var(--danger); }

/* StatCard */
.ur-stat { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 18px 20px; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.ur-stat-label { font: 600 13px/18px var(--font-sans); color: var(--text-muted); }
.ur-stat-value { color: var(--text); }
.ur-stat-delta { display: inline-flex; align-items: center; gap: 4px; font: 600 13px/18px var(--font-sans); }
.ur-up { color: var(--success); }
.ur-down { color: var(--danger); }
.ur-down .ur-icon { transform: scaleY(-1); }
.ur-stat-foot { font: 500 13px/18px var(--font-sans); color: var(--text-muted); }

/* Alert */
.ur-alert { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; border-radius: var(--radius-lg); border: 1px solid transparent; }
.ur-alert-icon { margin-top: 1px; }
.ur-alert-body { flex: 1; min-width: 0; }
.ur-alert-title { font: 700 15px/22px var(--font-sans); color: var(--text); }
.ur-alert-text { font: 400 14px/20px var(--font-sans); color: var(--text); }
.ur-alert-action { flex: none; align-self: center; }
.ur-alert-info { background: var(--info-soft); }
.ur-alert-info .ur-alert-icon { color: var(--info); }
.ur-alert-success { background: var(--success-soft); }
.ur-alert-success .ur-alert-icon { color: var(--success); }
.ur-alert-warning { background: var(--warning-soft); }
.ur-alert-warning .ur-alert-icon { color: var(--warning); }
.ur-alert-danger { background: var(--danger-soft); }
.ur-alert-danger .ur-alert-icon { color: var(--danger); }

/* PhaseStepper */
.ur-phases ol { list-style: none; margin: 0; padding: 4px; display: flex; gap: 4px; background: var(--surface-sunken); border-radius: var(--radius-lg); }
.ur-phase { flex: 1; min-width: 0; }
.ur-phase-btn { width: 100%; display: flex; align-items: center; gap: 10px; background: transparent; border: 0; border-radius: var(--radius-md); padding: 10px 12px; cursor: pointer; color: var(--text-muted); font: 600 14px/20px var(--font-sans); text-align: left; }
.ur-phase-btn:hover { color: var(--text); }
.ur-phase-current .ur-phase-btn { background: var(--surface); color: var(--text); box-shadow: 0 0 0 1px var(--border); }
.ur-phase-num { width: 24px; height: 24px; flex: none; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--radius-full); border: 1.5px solid var(--border-strong); font: 700 12px/1 var(--font-sans); }
.ur-phase-current .ur-phase-num { background: var(--primary); border-color: var(--primary); color: var(--on-primary); }
.ur-phase-done .ur-phase-num { background: var(--success-soft); border-color: var(--success); color: var(--success); }
.ur-phase-meta { margin-left: auto; font: 500 12px/16px var(--font-sans); color: var(--text-muted); white-space: nowrap; }
.ur-live-dot { width: 8px; height: 8px; border-radius: var(--radius-full); background: var(--accent); animation: ur-pulse 1.6s ease-in-out infinite; }
@media (max-width: 560px) { .ur-phase-meta { display: none; } .ur-phase-btn { justify-content: center; padding: 10px 8px; } }
