:root{
  --bg:#f5f6f4; --surface:#fff; --fg:#1d2522; --muted:#5d6b66; --line:#dde3e0;
  --accent:#1f5c58; --accent-ink:#fff; --accent-soft:#e2eeec;
  --warn:#9a5b00; --warn-soft:#fbefd9; --ok:#1e6b3a; --ok-soft:#dff1e5;
  --bad:#a12d2d; --bad-soft:#f7e1e1; --info:#33508f; --info-soft:#e3e9f6; --idle:#5d6b66; --idle-soft:#eceeed;
  --f-body:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif; --f-mono:ui-monospace,"SF Mono",Menlo,monospace;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#111816; --surface:#18211e; --fg:#e4ebe8; --muted:#9aaba5; --line:#2a3632;
  --accent:#6fb8b0; --accent-ink:#0d1513; --accent-soft:#1d3532;
  --warn:#f0b65a; --warn-soft:#3a2c14; --ok:#72cc92; --ok-soft:#173222; --bad:#f08b8b; --bad-soft:#3a1c1c;
  --info:#9db4ea; --info-soft:#1d2840; --idle:#9aaba5; --idle-soft:#232d2a; color-scheme:dark}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--f-body);font-size:15px;line-height:1.45}
a{color:var(--accent)}
.wrap{max-width:860px;margin:0 auto;padding-inline:16px;padding-block:16px 48px;display:flex;flex-direction:column;gap:16px}
.top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.top h1{font-size:1.25rem;margin:0}
.top small{color:var(--muted)}
nav.tabs{display:flex;gap:18px;border-bottom:1px solid var(--line);flex-wrap:wrap}
nav.tabs a{color:var(--muted);text-decoration:none;font-weight:500;padding:8px 0;border-bottom:2px solid transparent;margin-bottom:-1px}
nav.tabs a.on{color:var(--fg);border-color:var(--accent)}
.count{display:inline-block;min-width:20px;text-align:center;font-size:.75rem;background:var(--warn-soft);color:var(--warn);border-radius:10px;padding:0 6px;margin-left:4px}
.msg{padding:8px 12px;border-radius:8px;background:var(--ok-soft);color:var(--ok)}
.msg.error{background:var(--bad-soft);color:var(--bad)} .msg.info{background:var(--info-soft);color:var(--info)}
.summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.stat b{display:block;font-family:var(--f-mono);font-size:1.3rem}
.stat span{color:var(--muted);font-size:.8rem}
.session{background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.session-h{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;padding:12px 14px;border-bottom:1px solid var(--line)}
.session-h h3{margin:0;font-size:1rem}
.session-h small{color:var(--muted)}
a.row{display:grid;grid-template-columns:62px 1fr auto;gap:12px;align-items:center;padding:10px 14px;border-top:1px solid var(--line);color:inherit;text-decoration:none}
a.row:first-of-type{border-top:0}
a.row:hover{background:var(--accent-soft)}
.time{font-family:var(--f-mono);color:var(--accent)}
.who{min-width:0}
.who p{margin:0;color:var(--muted);font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.empty{padding:14px;color:var(--muted)}
.pill{font-size:.75rem;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap}
.s-nueva{background:var(--info-soft);color:var(--info)}
.s-propuesta{background:var(--warn-soft);color:var(--warn)}
.s-cambio{background:var(--bad-soft);color:var(--bad)}
.s-confirmada{background:var(--ok-soft);color:var(--ok)}
.s-atendida,.s-novino,.s-noprocede,.s-cancelada{background:var(--idle-soft);color:var(--idle)}
.tag{font-size:.72rem;font-weight:600;color:var(--info);background:var(--info-soft);padding:2px 7px;border-radius:999px;margin-left:6px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:10px}
.card-h{display:flex;justify-content:space-between;gap:8px;align-items:start;flex-wrap:wrap}
.meta{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:.9rem}
.meta dt{color:var(--muted)} .meta dd{margin:0;min-width:0}
.note{font-size:.88rem;background:var(--warn-soft);color:var(--warn);padding:6px 10px;border-radius:6px}
form.inline,.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0}
.btn,button{font:inherit;font-weight:500;border-radius:8px;padding:8px 14px;cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--fg);text-decoration:none;display:inline-block}
.btn.primary,button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
button.danger{color:var(--bad)}
input,select,textarea{font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:7px 10px;max-width:100%}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.form-grid p,.field{display:flex;flex-direction:column;gap:4px;margin:0}
.form-grid label,.field label{font-size:.85rem;color:var(--muted)}
.helptext{font-size:.78rem;color:var(--muted)}
.errorlist{color:var(--bad);margin:0;padding-left:18px;font-size:.85rem}
.hint{color:var(--muted);font-size:.88rem;margin:0}
.log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:.86rem}
.log li{display:grid;grid-template-columns:110px 1fr;gap:8px}
.log time{font-family:var(--f-mono);color:var(--muted);font-size:.78rem}
.login{max-width:380px;margin:10vh auto 0}
.qr svg{width:220px;height:220px;background:#fff;padding:8px;border-radius:8px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
table{border-collapse:collapse;width:100%} td,th{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left}
.tablewrap{overflow-x:auto}
