:root{--bg:#f5f6f8;--card:#fff;--ink:#1c2430;--muted:#6b7686;--line:#e3e7ee;--brand:#1f6f5c;--brand-d:#175546;--danger:#b4372c;--warn:#b7791f;--ok:#1f7a45;--r:12px}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
main{max-width:1100px;margin:0 auto;padding:1rem}
h1{font-size:1.5rem;margin:.5rem 0 1rem}h2{font-size:1.15rem;margin:1.5rem 0 .6rem}h3{margin:.2rem 0 .6rem;font-size:1.05rem}h4{margin:.8rem 0 0;font-size:.95rem;color:var(--brand-d)}
a{color:var(--brand)}
.muted{color:var(--muted)}.small{font-size:.85rem}.ok-text{color:var(--ok);font-weight:600;font-size:1.1rem;margin:.2rem 0}
code{background:#eef1f5;padding:.1rem .35rem;border-radius:4px}

.top{background:var(--brand);color:#fff;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.25rem;padding:.6rem 1rem}
.brand{font-weight:700;font-size:1.05rem}.brand small{display:block;font-weight:400;font-size:.7rem;opacity:.8;margin-top:-3px}
.top nav{display:flex;flex-wrap:wrap;gap:.2rem .3rem;flex:1}
.top nav a{color:#fff;text-decoration:none;padding:.35rem .7rem;border-radius:8px;opacity:.9}
.top nav a:hover,.top nav a.on{background:rgba(255,255,255,.18);opacity:1}
.top nav a.out{margin-left:auto;opacity:.8;font-size:.9rem}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1rem;margin:.8rem 0}
.hero{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:center}
.hero h1{margin:.1rem 0}.checkbox{text-align:center;min-width:220px}
.row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.row.between{justify-content:space-between}
.stack{display:flex;flex-direction:column;gap:.7rem}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.7rem 1rem}
.filters{display:flex;flex-wrap:wrap;gap:.6rem .9rem;align-items:flex-end}
.filters label{min-width:140px}
.perkrow{padding:.6rem 0;border-bottom:1px solid var(--line)}.addrow{margin-top:.8rem;padding-top:.8rem;border-top:2px dashed var(--line)}
.dim{opacity:.55}

label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:var(--muted);font-weight:500}
label.inline{flex-direction:row;align-items:center;gap:.4rem;color:var(--ink);font-size:.9rem}
.lbl{font-size:.85rem;color:var(--muted);font-weight:500}
input,select{font:inherit;color:var(--ink);padding:.5rem .6rem;border:1px solid #cdd4de;border-radius:8px;background:#fff;min-height:40px;max-width:100%}
input[type=checkbox]{min-height:0;width:18px;height:18px}
input:focus,select:focus{outline:2px solid #9fd3c4;border-color:var(--brand)}

.btn{display:inline-block;font:inherit;font-weight:600;padding:.5rem .9rem;border:1px solid #cdd4de;background:#fff;color:var(--ink);border-radius:8px;cursor:pointer;text-decoration:none;min-height:40px}
.btn:hover{background:#f0f3f7}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-d)}
.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}
.btn.big{padding:.9rem 2rem;font-size:1.15rem;border-radius:12px;min-width:200px}
.x{border:0;background:none;color:var(--danger);font-size:1.2rem;cursor:pointer;padding:0 .3rem}
form.inl{display:inline}

.flash{padding:.7rem 1rem;border-radius:10px;margin:.6rem 0;font-weight:500}
.flash.ok{background:#e4f4ea;color:#14532d}.flash.err{background:#fde8e6;color:#7f1d1d}

.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.6rem}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:.7rem .9rem}
.stat b{display:block;font-size:1.35rem}.stat span{color:var(--muted);font-size:.8rem}

.table-wrap{overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--r)}
.tbl{width:100%;border-collapse:collapse;font-size:.9rem}
.tbl th{background:#f0f3f7;text-align:left;font-weight:600;padding:.55rem .7rem;white-space:nowrap;position:sticky;top:0}
.tbl td{padding:.5rem .7rem;border-top:1px solid var(--line);vertical-align:top}
.tbl tr.tot td{font-weight:700;background:#f7f9fb}
.tbl.small td{padding:.35rem .5rem}
.num{text-align:right;white-space:nowrap}
.perkcell{min-width:190px;font-size:.82rem}
.mark td{vertical-align:middle}.mark input[type=text]{width:100%;min-width:120px}

.badge{display:inline-block;padding:.1rem .55rem;border-radius:999px;font-size:.78rem;font-weight:600;background:#e8ecf2;text-transform:capitalize;white-space:nowrap}
.badge.present{background:#dcf2e4;color:#14532d}.badge.absent,.badge.no_record{background:#fde0dc;color:#7f1d1d}
.badge.half_day{background:#fdf0cf;color:#7a4b00}.badge.leave{background:#dfe9fb;color:#1e3a8a}
.tag{display:inline-block;background:#e8ecf2;border-radius:6px;padding:0 .4rem;font-size:.75rem}.tag.warn{background:#fdf0cf;color:#7a4b00}

.tabs{display:flex;gap:.3rem;margin-bottom:.4rem}
.tabs a{padding:.5rem 1rem;border-radius:8px;text-decoration:none;color:var(--ink);background:#e8ecf2;font-weight:600}
.tabs a.on{background:var(--brand);color:#fff}

.login{max-width:380px;margin:8vh auto 0;padding:0 1rem}.login h1{text-align:center;margin-bottom:.1rem}.login p{text-align:center}

@media (max-width:640px){main{padding:.6rem}.top nav a.out{margin-left:0}.btn.big{width:100%}.hero{flex-direction:column;align-items:stretch}}
@media print{.top,.filters,.tabs,.no-print,.btn,.x{display:none!important}body{background:#fff}.card,.table-wrap{border:0}.tbl{font-size:.75rem}}
