/* ============================================================
   Molino Attendance — Kiosk
   Corporate and calm, but built for a shared touch terminal:
   large targets, high contrast, nothing that needs a second look.
   ============================================================ */
:root {
    --kk-bg1: #f6f8fa;
    --kk-bg2: #eceff3;
    --kk-card: #ffffff;
    --kk-ink: #0f172a;
    --kk-ink-2: #1e293b;
    --kk-muted: #64748b;
    --kk-faint: #94a3b8;
    --kk-line: #e2e8f0;
    --kk-line-soft: #eef2f6;

    --kk-teal: #0e7490;
    --kk-teal-dark: #0b5566;
    --kk-teal-600: #0891b2;
    --kk-teal-soft: #ecfeff;
    --kk-teal-border: #a5f3fc;

    --kk-amber: #d97706;
    --kk-amber-dark: #b45309;
    --kk-amber-soft: #fffbeb;

    --kk-green: #16a34a;
    --kk-red: #dc2626;

    /* Restrained geometry — corporate reads square, not pill-shaped. */
    --kk-radius: 12px;
    --kk-radius-sm: 8px;
    --kk-shadow: 0 18px 40px -20px rgba(15, 23, 42, .28);
    --kk-shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);
    --kk-font: "Inter", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif;
}

* { box-sizing: border-box; }

.kk-body {
    margin: 0;
    min-height: 100vh;
    font-family: var(--kk-font);
    font-size: 14px;
    line-height: 1.45;
    color: var(--kk-ink);
    /* One quiet wash instead of two coloured spotlights. */
    background: linear-gradient(180deg, var(--kk-bg1), var(--kk-bg2));
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.kk-shell { width: 100%; max-width: 440px; }

/* ---------- Card ---------- */
.kk-card {
    background: var(--kk-card);
    border: 1px solid var(--kk-line);
    border-radius: var(--kk-radius);
    box-shadow: var(--kk-shadow);
    overflow: hidden;
}
.kk-card-pad { padding: 18px; }

/* ---------- Header / clock ---------- */
.kk-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 11px 18px;
    border-bottom: 1px solid var(--kk-line);
    background: #fff;
}
.kk-brand {
    display: flex; align-items: center; gap: 9px;
    font-weight: 650; font-size: .88rem; letter-spacing: -.01em;
    color: var(--kk-ink);
}
.kk-brand .logo {
    width: 28px; height: 28px; border-radius: var(--kk-radius-sm);
    display: grid; place-items: center; font-size: .9rem;
    background: var(--kk-teal-soft); border: 1px solid var(--kk-teal-border);
}
.kk-brand .logo-img {
    width: 30px; height: 30px; border-radius: var(--kk-radius-sm);
    object-fit: cover; border: 1px solid var(--kk-line);
}
.kk-clockwrap { text-align: right; }
.kk-clock {
    font-variant-numeric: tabular-nums;
    font-weight: 650; font-size: 1.15rem; line-height: 1.1;
    color: var(--kk-ink); letter-spacing: -.02em;
}
.kk-date { font-size: .7rem; color: var(--kk-muted); margin-top: 2px; }

.kk-title { font-size: 1.05rem; font-weight: 650; margin: 0 0 2px; letter-spacing: -.015em; }
.kk-sub { color: var(--kk-muted); font-size: .8rem; margin-bottom: 14px; }

.kk-label {
    display: block; font-size: .66rem; font-weight: 700; letter-spacing: .06em;
    text-transform: uppercase; color: var(--kk-faint); margin-bottom: 6px;
}

/* ---------- Name picker ---------- */
.kk-search { position: relative; }
.kk-search .icon {
    position: absolute; left: 13px; top: 50%; transform: translateY(-50%);
    color: var(--kk-faint); font-size: .95rem;
}
.kk-input {
    width: 100%; height: 46px; border-radius: var(--kk-radius-sm);
    border: 1px solid var(--kk-line); background: #fff;
    padding: 0 14px 0 38px; font-size: .92rem; color: var(--kk-ink);
    font-family: inherit;
    transition: border-color .15s, box-shadow .15s;
}
.kk-input::placeholder { color: var(--kk-faint); }
.kk-input:focus {
    outline: none; border-color: var(--kk-teal-600);
    box-shadow: 0 0 0 3px rgba(8, 145, 178, .12);
}
.kk-list {
    margin: 10px 0 0; padding: 4px; list-style: none;
    max-height: 292px; overflow-y: auto;
    border: 1px solid var(--kk-line); border-radius: var(--kk-radius-sm); background: #fff;
}
.kk-list::-webkit-scrollbar { width: 8px; }
.kk-list::-webkit-scrollbar-thumb { background: #d7dee6; border-radius: 8px; border: 2px solid #fff; }
.kk-person {
    display: flex; align-items: center; gap: 11px; width: 100%;
    padding: 9px 11px; border: none; background: transparent; border-radius: var(--kk-radius-sm);
    cursor: pointer; text-align: left; font-family: inherit;
    transition: background .12s;
}
.kk-person + .kk-person { border-top: 1px solid var(--kk-line-soft); border-radius: 0; }
.kk-person:hover, .kk-person:focus-visible { background: var(--kk-teal-soft); outline: none; }
.kk-person .who { font-weight: 650; font-size: .9rem; color: var(--kk-ink); }
.kk-person .role { font-size: .74rem; color: var(--kk-muted); }
.kk-person .chev { margin-left: auto; color: #cbd5e1; }
.kk-empty { text-align: center; color: var(--kk-muted); padding: 20px 0; font-size: .84rem; }

/* ---------- Avatar ---------- */
.kk-avatar {
    width: 36px; height: 36px; border-radius: var(--kk-radius-sm); flex: none;
    display: grid; place-items: center; font-weight: 700; font-size: .8rem;
    color: #fff; background: var(--kk-teal);
}
.kk-avatar.lg { width: 44px; height: 44px; font-size: .95rem; border-radius: 10px; }

/* ---------- Selected employee ---------- */
.kk-emp {
    display: flex; align-items: center; gap: 12px;
    padding: 0 0 14px; margin-bottom: 14px;
    border-bottom: 1px solid var(--kk-line-soft);
}
.kk-emp .name { font-weight: 650; font-size: 1rem; line-height: 1.2; letter-spacing: -.01em; }
.kk-emp .pos { font-size: .78rem; color: var(--kk-muted); }
.kk-change {
    margin-left: auto; font-size: .74rem; font-weight: 650; color: var(--kk-teal);
    background: #fff; border: 1px solid var(--kk-line);
    padding: 7px 11px; border-radius: var(--kk-radius-sm); cursor: pointer;
    font-family: inherit;
}
.kk-change:hover { background: var(--kk-teal-soft); border-color: var(--kk-teal-border); }

/* ---------- Today's shift ---------- */
.kk-sched {
    border: 1px solid var(--kk-line); border-radius: var(--kk-radius-sm); padding: 12px 14px;
    background: #f8fafc;
    margin-bottom: 14px;
}
.kk-sched-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.kk-sched-row + .kk-sched-row { margin-top: 9px; padding-top: 9px; border-top: 1px solid var(--kk-line); }
.kk-sched .k { font-size: .66rem; text-transform: uppercase; letter-spacing: .06em; color: var(--kk-faint); font-weight: 700; }
.kk-sched .v { font-weight: 650; font-size: .88rem; font-variant-numeric: tabular-nums; }
.kk-sched .v.big { font-size: .98rem; }

.kk-chip {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: .73rem; font-weight: 650; padding: 4px 9px; border-radius: 6px;
    border: 1px solid transparent;
}
.kk-chip .dot { width: 6px; height: 6px; border-radius: 50%; }
.chip-in { background: #ecfdf5; color: #047857; border-color: #a7f3d0; }
.chip-in .dot { background: var(--kk-green); }
.chip-out { background: var(--kk-amber-soft); color: var(--kk-amber-dark); border-color: #fde68a; }
.chip-out .dot { background: var(--kk-amber); }
.chip-rest { background: #f1f5f9; color: #475569; border-color: var(--kk-line); }
.chip-rest .dot { background: #94a3b8; }
.chip-done { background: #eef2ff; color: #4338ca; border-color: #c7d2fe; }
.chip-done .dot { background: #6366f1; }

/* ---------- PIN ---------- */
.kk-dots { display: flex; gap: 9px; justify-content: center; margin: 2px 0 12px; }
.kk-dot {
    width: 10px; height: 10px; border-radius: 50%;
    background: #dbe3ea; transition: transform .12s, background .12s;
}
.kk-dot.on { background: var(--kk-teal); transform: scale(1.15); }

.kk-keypad { display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; }
.kk-key {
    height: 44px; border-radius: var(--kk-radius-sm); border: 1px solid var(--kk-line);
    background: #fff; font-size: 1.05rem; font-weight: 650; color: var(--kk-ink);
    font-family: inherit; font-variant-numeric: tabular-nums;
    cursor: pointer; transition: transform .06s, background .12s, border-color .12s;
    display: grid; place-items: center;
    -webkit-tap-highlight-color: transparent;
}
.kk-key:hover { background: #f8fafc; }
.kk-key:active { transform: scale(.97); background: var(--kk-teal-soft); border-color: var(--kk-teal-border); }
.kk-key.ghost { background: #f8fafc; color: var(--kk-muted); font-size: .95rem; }

/* ---------- Buttons ---------- */
.kk-btn {
    width: 100%; height: 46px; border: 1px solid transparent; border-radius: var(--kk-radius-sm);
    font-size: .92rem; font-weight: 650; cursor: pointer; font-family: inherit;
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    transition: background .12s, opacity .12s; color: #fff;
    -webkit-tap-highlight-color: transparent;
}
.kk-btn:active { transform: translateY(1px); }
.kk-btn:disabled { opacity: .4; cursor: not-allowed; }
.kk-btn-in { background: var(--kk-teal); }
.kk-btn-in:hover:not(:disabled) { background: var(--kk-teal-dark); }
.kk-btn-out { background: var(--kk-amber); }
.kk-btn-out:hover:not(:disabled) { background: var(--kk-amber-dark); }
.kk-btn-ghost { background: #fff; color: var(--kk-ink-2); border-color: var(--kk-line); }
.kk-btn-ghost:hover { background: #f8fafc; }

.kk-btn-row { display: flex; gap: 8px; }
.kk-btn-row .kk-btn { margin-top: 0; }
.kk-btn-sm { height: 40px; font-size: .8rem; border-radius: var(--kk-radius-sm); }

.kk-mt { margin-top: 10px; }
.kk-foot { text-align: center; margin-top: 11px; }
.kk-foot a { color: var(--kk-faint); text-decoration: none; font-size: .76rem; }
.kk-foot a:hover { color: var(--kk-muted); }

/* Notice board under the card, written by managers in Settings. */
.kk-announce {
    margin-top: 12px; display: flex; gap: 10px; align-items: flex-start;
    padding: 11px 14px; border-radius: var(--kk-radius-sm);
    background: #fff; border: 1px solid var(--kk-line);
    border-left: 3px solid var(--kk-teal);
    color: var(--kk-ink-2); font-size: .82rem; line-height: 1.5;
}
.kk-announce i { color: var(--kk-teal); font-size: .9rem; line-height: 1.5; flex: 0 0 auto; }

.kk-alert {
    border-radius: var(--kk-radius-sm); padding: 10px 13px; font-weight: 600; font-size: .84rem;
    margin-bottom: 14px; display: flex; align-items: center; gap: 9px;
}
.kk-alert-err { background: #fef2f2; color: #b91c1c; border: 1px solid #fecaca; }
.kk-alert-ok { background: #ecfdf5; color: #047857; border: 1px solid #a7f3d0; }

/* ---------- Confirmation ----------
   Colour and icon carry the meaning: nobody should have to read the dialog to
   know which action they are about to commit. */
.kk-modal {
    position: fixed; inset: 0; z-index: 2000;
    background: rgba(15, 23, 42, .55);
    display: flex; align-items: center; justify-content: center;
    padding: 18px;
    animation: kkfade .12s ease-out;
}
@keyframes kkfade { from { opacity: 0; } to { opacity: 1; } }

.kk-modal-card {
    background: #fff; border-radius: var(--kk-radius); overflow: hidden;
    width: 100%; max-width: 380px;
    box-shadow: 0 30px 70px -20px rgba(15, 23, 42, .5);
    animation: kkrise .16s cubic-bezier(.2,.9,.3,1.05);
}
@keyframes kkrise { from { transform: translateY(10px); opacity: 0; } to { transform: none; opacity: 1; } }

/* The band is the first thing seen and differs completely between the two. */
.kk-modal-band {
    display: flex; align-items: center; justify-content: center; gap: 10px;
    padding: 14px; color: #fff;
    font-size: 1.05rem; font-weight: 700; letter-spacing: .08em;
}
.kk-modal-band i { font-size: 1.3rem; }
.kk-modal-card.is-in  .kk-modal-band { background: var(--kk-teal); }
.kk-modal-card.is-out .kk-modal-band { background: var(--kk-amber); }

.kk-modal-body { padding: 18px 18px 4px; text-align: center; }
.kk-modal-body .q { font-size: 1.15rem; font-weight: 650; letter-spacing: -.015em; }
.kk-modal-body .q-fil { font-size: .88rem; color: var(--kk-muted); margin-top: 2px; }
.kk-modal-body .who {
    margin-top: 12px; font-size: .88rem; font-weight: 600; color: var(--kk-ink-2);
    font-variant-numeric: tabular-nums;
}
.kk-modal-body .who .sep { color: var(--kk-faint); margin: 0 4px; }
.kk-modal-body .note {
    margin-top: 12px; padding: 10px 12px; border-radius: var(--kk-radius-sm);
    font-size: .8rem; line-height: 1.45; text-align: left;
}
.kk-modal-body .note .fil { display: block; margin-top: 3px; opacity: .85; }
.kk-modal-card.is-in  .note { background: var(--kk-teal-soft); color: var(--kk-teal-dark); border: 1px solid var(--kk-teal-border); }
.kk-modal-card.is-out .note { background: var(--kk-amber-soft); color: #78350f; border: 1px solid #fcd34d; }

.kk-modal-actions { display: flex; gap: 8px; padding: 16px 18px 6px; }
.kk-modal-actions .kk-btn { margin-top: 0; }
/* Cancel stays deliberately smaller than the action it guards. */
.kk-modal-actions .kk-btn-ghost { flex: 0 0 34%; }

.kk-modal-timer {
    text-align: center; padding: 0 18px 14px;
    font-size: .72rem; color: var(--kk-faint); font-variant-numeric: tabular-nums;
}
/* ---------- Result screen ---------- */
.kk-result { text-align: center; padding: 30px 22px 24px; }
.kk-badge {
    width: 68px; height: 68px; border-radius: 50%; margin: 0 auto 14px;
    display: grid; place-items: center; font-size: 2rem;
    animation: kkpop .3s cubic-bezier(.2,.9,.3,1.3);
}
.kk-badge.in { background: var(--kk-teal-soft); color: var(--kk-teal); border: 2px solid var(--kk-teal-border); }
.kk-badge.out { background: var(--kk-amber-soft); color: var(--kk-amber); border: 2px solid #fcd34d; }
/* Word the action in the brand colour so the result is legible at a glance. */
.kk-result .headline.in { color: var(--kk-teal-dark); }
.kk-result .headline.out { color: var(--kk-amber-dark); }
@keyframes kkpop { from { transform: scale(.5); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.kk-result .hello { font-size: .88rem; color: var(--kk-muted); }
.kk-result .headline { font-size: 1.2rem; font-weight: 650; margin: 2px 0 12px; letter-spacing: -.015em; }
.kk-result .bigtime { font-size: 1.9rem; font-weight: 680; font-variant-numeric: tabular-nums; line-height: 1; letter-spacing: -.02em; }
.kk-result .bigdate { color: var(--kk-muted); margin-top: 6px; font-size: .82rem; }
.kk-result .metrics { display: flex; gap: 7px; justify-content: center; flex-wrap: wrap; margin: 14px 0; }
.kk-count { color: var(--kk-faint); font-size: .76rem; margin-top: 12px; }

@media (max-width: 420px) {
    .kk-body { padding: 12px; }
    .kk-card-pad, .kk-head { padding: 14px; }
}

/* The punch card has to clear the fold on whatever the store mounts it on.
   Keys stay at 40px+ so they remain comfortable touch targets. */
@media (max-height: 820px) {
    .kk-body { padding: 12px; }
    .kk-card-pad { padding: 14px; }
    .kk-head { padding: 9px 14px; }
    .kk-key { height: 40px; font-size: 1rem; }
    .kk-keypad { gap: 6px; }
    .kk-btn { height: 42px; font-size: .88rem; }
    .kk-btn-sm { height: 36px; }
    .kk-dots { margin: 0 0 9px; }
    .kk-sched { padding: 10px 12px; margin-bottom: 12px; }
    .kk-emp { padding-bottom: 11px; margin-bottom: 11px; }
    .kk-mt { margin-top: 8px; }
    .kk-list { max-height: 240px; }
}
