/* Safora — app layer on the Ownware UI kit (assets/ui/ownware-ui.css). Accent + app-specific rules only; generic rules come from the kit. */
:root{--accent:#0d9488;--accent-dark:#0f766e;--accent-soft:#e6faf7;--on-accent:#ffffff;--accent-ink:var(--on-accent)}
html[data-theme="dark"]{--accent:#2dd4bf;--accent-dark:#5eead4;--accent-soft:#123f3b;--on-accent:#04211e;--accent-ink:var(--on-accent)}

/* This app's nav is long enough to overflow a 900px viewport, and .side is a flex column:
   without an explicit no-shrink the brand row collapses to zero height and the product's own
   name disappears. Kit-level gap (logged in ownware-ui/KIT-REQUESTS.md); held here for now. */
.side .brand{flex:0 0 auto}

/* ── the compliance traffic light: this app's whole vocabulary ─────────── */
.pill.green,.pill.ok{background:var(--okbg);color:var(--ok)}
.pill.amber{background:var(--warnbg);color:var(--warn)}
.pill.red,.pill.bad{background:var(--badbg);color:var(--bad)}
.pill.none,.pill.off{background:var(--chip);color:var(--sub)}
/* A day the business was CLOSED: deliberately quiet — it is neither a pass nor a problem,
   it is an explained absence, and it must not read as a green day anyone worked. */
.pill.closed{background:var(--chip);color:var(--sub);border:1px dashed var(--line)}

.statusbig{border-radius:var(--radius);padding:18px 22px;display:flex;align-items:center;gap:16px;margin-bottom:20px;border:1px solid var(--line);background:var(--card)}
.statusbig .dotbig{width:22px;height:22px;border-radius:50%;flex:none;background:var(--faint)}
.statusbig.green{background:var(--okbg);border-color:color-mix(in srgb,var(--ok) 30%,transparent);color:var(--ok)}
.statusbig.green .dotbig{background:var(--ok)}
.statusbig.amber{background:var(--warnbg);border-color:color-mix(in srgb,var(--warn) 35%,transparent);color:var(--warn)}
.statusbig.amber .dotbig{background:var(--warn)}
.statusbig.red{background:var(--badbg);border-color:color-mix(in srgb,var(--bad) 35%,transparent);color:var(--bad)}
.statusbig.red .dotbig{background:var(--bad)}
.statusbig.none{background:var(--bg)}
.statusbig .st-title{font-family:var(--display);font-weight:800;font-size:1.15rem}
.statusbig .st-sub{font-size:.9rem;opacity:.9;color:var(--sub)}
.statusbig.green .st-sub,.statusbig.amber .st-sub,.statusbig.red .st-sub{color:inherit}

/* ── the hero: the day board — every scheduled check, recordable in place ─ */
.stations{display:grid;gap:12px}
.station{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow);overflow:hidden}
.station > h3{display:flex;gap:10px;align-items:center;margin:0;padding:11px 14px;border-bottom:1px solid var(--line);background:var(--bg);font-size:.95rem}
.station > h3 .n{margin-left:auto;font-size:.76rem;color:var(--sub);font-variant-numeric:tabular-nums;font-weight:600}
.chk{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,2fr);gap:10px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line2)}
.chk:last-child{border-bottom:0}
.chk.done{background:color-mix(in srgb,var(--ok) 6%,var(--card))}
.chk.out{background:color-mix(in srgb,var(--bad) 7%,var(--card))}
.chk .what{min-width:0}
.chk .what b{display:block;font-size:.94rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chk .what span{display:block;font-size:.8rem;color:var(--faint)}
.chk .reading{font-variant-numeric:tabular-nums;font-weight:700;font-size:1.05rem}
.chk .reading small{display:block;font-size:.74rem;font-weight:500;color:var(--faint);font-variant-numeric:normal}
/* Grid, not widths: the kit's input rule is more specific than any width I could set here, so
   the TRACK decides the size and the inputs fill it — no specificity fight, no !important. */
.chk form{display:grid;grid-template-columns:88px minmax(0,1fr) auto;gap:6px;align-items:center}
.chk form input{min-height:36px;padding:6px 9px;font-size:.9rem}
.chk form input.temp{text-align:right;font-variant-numeric:tabular-nums}
.chk .fix{grid-column:1/-1;display:none;gap:6px;align-items:center}
.chk.needs-fix .fix{display:flex}
.chk .fix input{flex:1;min-width:0}
.chk .limit{font-size:.76rem;color:var(--faint);white-space:nowrap}

/* month calendar of compliance days */
.cal{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}
.cal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.cal-dow{text-align:center;font-size:.72rem;font-weight:700;color:var(--sub);text-transform:uppercase;padding-bottom:2px}
.cal-cell{aspect-ratio:1/1;border-radius:8px;border:1px solid var(--line);display:flex;flex-direction:column;
  align-items:flex-start;justify-content:space-between;padding:6px 7px;font-size:.8rem;position:relative;color:var(--ink);background:var(--card);min-width:0}
.cal-cell.empty{border:none;background:transparent}
.cal-cell:hover{text-decoration:none;box-shadow:0 0 0 2px var(--accent-soft)}
.cal-cell .d{font-weight:600}
.cal-cell.green{background:var(--okbg);border-color:color-mix(in srgb,var(--ok) 30%,transparent)}
.cal-cell.amber{background:var(--warnbg);border-color:color-mix(in srgb,var(--warn) 35%,transparent)}
.cal-cell.red{background:var(--badbg);border-color:color-mix(in srgb,var(--bad) 35%,transparent)}
.cal-cell.closed{background:repeating-linear-gradient(135deg,var(--chip),var(--chip) 5px,transparent 5px,transparent 10px);color:var(--sub);border-style:dashed}
.cal-cell.future{background:var(--bg);color:var(--faint)}
.cal-cell.today{outline:2px solid var(--accent);outline-offset:0}
.cal-cell .sdot{width:9px;height:9px;border-radius:50%;background:transparent}
.cal-cell.green .sdot{background:var(--ok)}
.cal-cell.amber .sdot{background:var(--warn)}
.cal-cell.red .sdot{background:var(--bad)}
.cal-cell.closed .sdot{background:var(--faint)}

.legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;font-size:.82rem;color:var(--sub)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:11px;height:11px;border-radius:3px;display:inline-block;background:var(--faint)}
.legend i.green{background:var(--ok)}
.legend i.amber{background:var(--warn)}
.legend i.red{background:var(--bad)}

/* the record-a-check hub */
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
.tile{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);transition:border-color .12s,transform .12s,box-shadow .12s;color:var(--ink);min-width:0}
.tile:hover{border-color:var(--accent);box-shadow:var(--shadow-md);text-decoration:none;transform:translateY(-1px)}
.tile .ic{font-size:1.7rem;margin-bottom:8px}
.tile .t{font-family:var(--display);font-weight:700;margin-bottom:3px}
.tile .s{font-size:.85rem;color:var(--sub)}

.checkitem{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px dashed var(--line)}
.checkitem:last-child{border-bottom:none}
.checkitem label{margin:0;font-weight:500;font-size:.95rem;color:var(--ink)}

.grid-side{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start}
.reqbox{background:var(--warnbg);border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:14px;font-size:.9rem;color:var(--warn)}
.disclaimer{font-size:.82rem;color:var(--sub);border-top:1px solid var(--line);margin-top:22px;padding-top:12px}
.topbar .t .sub{max-width:78ch}

/* ── phone (app layer loads after the kit) ─────────────────────────────── */
@media(max-width:900px){.grid-side{grid-template-columns:minmax(0,1fr)}}
@media(max-width:700px){
  .chk{grid-template-columns:minmax(0,1fr);row-gap:6px}
  .chk form{justify-content:flex-start}
  .chk form{grid-template-columns:88px minmax(0,1fr);row-gap:6px}
  .chk form button{grid-column:1/-1}
  .topbar .t h1{white-space:normal!important;max-width:100%!important}
}

@media print{
  /* The diary IS the audit document — an EHO prints it. Paper is always light, so reset the
     tokens or a dark-theme kitchen prints pale grey ink on white. */
  html[data-theme="dark"]{
    --ink:#0f172a; --sub:#5b6470; --faint:#7b8794; --line:#e5e7eb; --line2:#eef0f4; --bg:#fff; --card:#fff;
    --field-bg:#fff; --hover-bg:#fff; --chip:#f1f5f9;
    --accent:#0d9488; --accent-dark:#0f766e; --accent-soft:#e6faf7;
    --ok:#15803d; --okbg:#dcfce7; --warn:#b45309; --warnbg:#fef3c7; --bad:#b91c1c; --badbg:#fee2e2;
  }
  .chk form,.station > h3 .n{display:none}
}

/* audit-2: emoji icons size to their glyph */
.tile .ic{width:auto;height:auto;line-height:1}

/* audit-2 final: emoji icon boxes fit their glyph everywhere */
.ico{width:auto;height:auto;line-height:1}
