/* 土台は Pico.css。ここではタイムカード用の大きなボタンなどを足すだけ */
:root {
  --tc-in: #1a7f37;
  --tc-out: #8250df;
  --tc-miss: #cf222e;
  --tc-bar: #1f5fa8;
  --tc-bar-text: #fff;
  --tc-text: #1d2433;
  --tc-card: #ffffff;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) { --tc-in: #3fb950; --tc-out: #a371f7; --tc-miss: #ff7b72; --tc-bar: #163f6e; --tc-text: #e6edf3; --tc-card: #1b2230; }
}
body { background: var(--pico-background-color); }
.narrow { max-width: 560px; padding-top: 2rem; }
.small { font-size: .85rem; color: var(--pico-muted-color); }
.err { color: var(--tc-miss); }
.small-btn { padding: .25rem .6rem; font-size: .85rem; width: auto; margin: 0; }
.tag { margin-left: .6rem; font-size: .8rem; padding: .1rem .5rem; border-radius: 1rem; background: rgba(255,255,255,.2); }

/* ---- 打刻画面 ---- */
.bar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .6rem 1rem; background: var(--tc-bar); color: var(--tc-bar-text); font-weight: 600; }
.bar .clock { font-size: clamp(1.8rem, 6vw, 3rem); font-variant-numeric: tabular-nums; letter-spacing: .05em; }
.bar .bar-right button { color: var(--tc-bar-text); border-color: rgba(255,255,255,.6); }
.today { text-align: center; font-size: 1.1rem; padding: .5rem 1rem 0; }
.names { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 210px), 1fr)); gap: .8rem; padding: 1rem; }
.names .name { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 5rem; margin: 0; font-size: 1.15rem; line-height: 1.3;
  background: var(--tc-card); color: var(--tc-text); border: 2px solid var(--pico-muted-border-color); }
.names .name small { font-size: .8rem; color: var(--pico-muted-color); min-height: 1em; }
.names .name.in { border-color: var(--tc-in); }
.names .name.in small { color: var(--tc-in); font-weight: 600; }
.names .name.out small { color: var(--tc-out); }
.panel { max-width: 760px; margin: 0 auto; padding: 1rem; }
.panel h2 { text-align: center; margin-bottom: .3rem; }
.state { text-align: center; color: var(--pico-muted-color); }
.main-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 1rem 0; }
.big { min-height: 8rem; font-size: clamp(1.8rem, 6vw, 2.6rem); font-weight: 700; margin: 0; }
.big.start { background: var(--tc-in); border-color: var(--tc-in); }
.big.finish { background: var(--tc-out); border-color: var(--tc-out); }
.big:disabled { opacity: .35; }
.sub-btns { display: grid; grid-template-columns: repeat(4, 1fr); gap: .6rem; }
.sub-btns button { margin: 0; min-height: 3.5rem; }
@media (max-width: 480px) {
  .bar { padding: .5rem .7rem; gap: .5rem; font-size: .9rem; }
  .bar > div:first-child { display: flex; flex-direction: column; align-items: flex-start; white-space: nowrap; }
  .tag { margin-left: 0; }
  .bar .bar-right button { white-space: nowrap; padding: .2rem .4rem; }
  .sub-btns { grid-template-columns: repeat(2, 1fr); } .big { min-height: 6rem; } }
.back { width: 100%; margin-top: 1.2rem; }
.done { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(26,127,55,.92); color: #fff; z-index: 50; }
.done div { font-size: clamp(1.6rem, 5vw, 2.6rem); font-weight: 700; text-align: center; padding: 1rem; }
.toast { position: fixed; left: 50%; bottom: 1.5rem; transform: translateX(-50%); max-width: min(92vw, 640px); padding: .8rem 1.2rem; border-radius: .5rem; color: #fff; z-index: 60; box-shadow: 0 4px 16px rgba(0,0,0,.25); }
.toast.err { background: var(--tc-miss); }
.toast.ok { background: var(--tc-in); }
.table-wrap { overflow-x: auto; }

/* ---- 管理画面 ---- */
.admin-head { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1.2rem; padding: .6rem 1rem; border-bottom: 1px solid var(--pico-muted-border-color); }
.admin-head .site-pick { display: flex; align-items: center; gap: .4rem; margin: 0; }
.admin-head .site-pick select { margin: 0; width: auto; padding-top: .3rem; padding-bottom: .3rem; }
.tabs { display: flex; flex-wrap: wrap; gap: .3rem; flex: 1; }
.tabs button { margin: 0; width: auto; padding: .35rem .8rem; background: transparent; color: var(--tc-text); border: 1px solid var(--pico-muted-border-color); }
.tabs button.active { background: var(--pico-primary-background); color: var(--pico-primary-inverse); border-color: var(--pico-primary-background); }
main.container-fluid { padding: 1rem; }
.filters { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .5rem 1rem; margin-bottom: .8rem; }
.filters label { margin: 0; }
.filters input, .filters select, .filters button { margin: 0; width: auto; }
.filters > span { padding-bottom: .7rem; }
.chk { display: inline-flex; align-items: center; gap: .3rem; }
table.compact th, table.compact td { padding: .3rem .5rem; font-size: .9rem; white-space: nowrap; }
td.miss { background: color-mix(in srgb, var(--tc-miss) 15%, transparent); }
.qr-card #qrBox { width: min(70vw, 280px); margin: 0 auto; }
.qr-card #qrBox svg { width: 100%; height: auto; background: #fff; }
@media print {
  body > *:not(dialog[open]) { display: none !important; }
  dialog[open] { position: static; background: none; }
  .no-print { display: none !important; }
}
.filters input[type="checkbox"] { width: 1.25em; height: 1.25em; margin: 0; }
