/* ============================================================
   LEDGER&CO · assets/css/modules/odoo.css · CR-02
   ============================================================ */
.odo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(max-width:920px){.odo-grid{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.odo-grid{grid-template-columns:1fr}}
.odo-badge{font-family:var(--mono);font-size:.58rem;font-weight:700;letter-spacing:.08em;padding:3px 9px;border-radius:99px;text-transform:uppercase;margin-left:8px}
.odo-badge.mock{background:color-mix(in oklab,#e8a020 22%,var(--surface));color:var(--warn)}
.odo-badge.live{background:color-mix(in oklab,var(--ok) 16%,var(--surface));color:var(--ok)}
.odo-mod{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:11px 0;border-bottom:1px dashed var(--line);font-size:.82rem}
.odo-mod:last-child{border-bottom:0}
.odo-dir{font-family:var(--mono);font-size:.62rem;background:var(--surface2);padding:3px 8px;border-radius:5px}
.odo-status{font-family:var(--mono);font-size:.6rem;padding:3px 8px;border-radius:5px;text-transform:uppercase}
.odo-status.idle{background:var(--surface2);color:var(--muted)}
.odo-status.syncing{background:color-mix(in oklab,var(--accent) 16%,var(--surface));color:var(--accent)}
.odo-status.ok{background:color-mix(in oklab,var(--ok) 15%,var(--surface));color:var(--ok)}
.odo-status.error{background:color-mix(in oklab,var(--bad) 14%,var(--surface));color:var(--bad)}
.odo-status.off{background:var(--surface2);color:var(--muted)}
.odo-lvl{font-family:var(--mono);font-size:.58rem;padding:2px 8px;border-radius:5px;text-transform:uppercase}
.odo-lvl.ok{background:color-mix(in oklab,var(--ok) 15%,var(--surface));color:var(--ok)}
.odo-lvl.info{background:var(--surface2);color:var(--muted)}
.odo-lvl.error{background:color-mix(in oklab,var(--bad) 14%,var(--surface));color:var(--bad)}
.odo-switch{position:relative;display:inline-block;width:38px;height:21px;flex-shrink:0}
.odo-switch input{opacity:0;width:0;height:0}
.odo-switch span{position:absolute;inset:0;background:var(--surface2);border:1.5px solid var(--line);border-radius:99px;transition:.25s;cursor:pointer}
.odo-switch span::after{content:"";position:absolute;top:2px;left:3px;width:14px;height:14px;border-radius:50%;background:var(--surface);box-shadow:var(--shadow);transition:.25s cubic-bezier(.4,1.6,.5,1)}
.odo-switch input:checked+span{background:var(--accent);border-color:var(--accent)}
.odo-switch input:checked+span::after{left:18px;background:#fff}