body{font-family:Arial,sans-serif;margin:0;background:#f4f6f9;color:#172033}
.nav-toggle{position:absolute;opacity:0;pointer-events:none}
.topbar{height:56px;background:#fff;border-bottom:1px solid #dce3eb;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 22px;position:sticky;top:0;z-index:40}
.top-left,.top-user{display:flex;align-items:center;gap:10px;min-width:0}
.brand{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.menu-toggle{display:none;width:40px;height:40px;border:1px solid #cbd5df;border-radius:8px;align-items:center;justify-content:center;background:#fff;cursor:pointer;flex:0 0 auto}
.menu-toggle span{display:block;width:20px;height:2px;background:#172033;margin:3px 0;border-radius:2px}
.muted{color:#66758a}
body.font-lg{font-size:18px}
body.font-xl{font-size:20px}
.font-tools{display:flex;gap:5px;align-items:center}
.font-tools button{width:auto;padding:7px 9px;background:#fff;color:#172033;border:1px solid #cbd5df}
.layout{display:flex;min-height:calc(100vh - 56px)}
.sidebar{width:248px;background:#1f2d3d;color:#cbd5e1;padding:18px 12px;flex:0 0 248px}
.sidebar h3{color:#fff;font-size:14px;margin:0 10px 14px}
.sidebar a{display:block;color:#d9e2ef;text-decoration:none;padding:10px 12px;border-radius:7px;margin:3px 0}
.sidebar a:hover,.sidebar a.active{background:#138a5b;color:#fff}
.content{flex:1;padding:22px;min-width:0}
.page-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.page-title h1{font-size:24px;margin:0}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.card{background:#fff;border:1px solid #dce3eb;border-radius:8px;padding:16px;margin-bottom:14px}
.stat{font-size:30px;font-weight:700;margin:6px 0}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.alert{padding:12px;border-radius:8px;margin:12px 0}
.alert.ok{background:#e9f8ef;border:1px solid #bde8ce}
.alert.danger{background:#fff1f1;border:1px solid #f2c4c4}
/* 🔵 25IF/İ3 — DOKUNMA HEDEFİ EN AZ 44px.
   Ölçüm (2026-08-27, gerçek 375x812 viewport): giriş düğmesi 82x35, alanlar
   327x37 idi — WCAG 2.5.5 / Apple HIG asgarisi 44px'in altında. Tanıtım
   sitesinin vaadi "telefon ekranına uygun sade kullanım"; ölçü onu tutmalı.
   ⚠ `font-size:16px` MOBİLDE ZORUNLU: iOS Safari 16px'ten küçük yazılı bir
     alana odaklanınca sayfayı KENDİLİĞİNDEN yakınlaştırır ve düzen bozulur. */
input,select,textarea{padding:11px 12px;border:1px solid #cbd5df;border-radius:7px;background:#fff;font-size:16px;min-height:44px;max-width:100%;box-sizing:border-box}
input[type=checkbox],input[type=radio]{min-height:0;width:20px;height:20px}
button,.btn{display:inline-block;background:#198754;color:#fff;border:0;border-radius:7px;padding:12px 16px;min-height:44px;text-decoration:none;cursor:pointer;font-weight:700;font-size:15px;line-height:1.25}
.btn.secondary,button.secondary{background:#697586}
.btn.danger,button.danger{background:#be3144}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{border-bottom:1px solid #edf0f3;padding:10px;text-align:left;vertical-align:top}
th{background:#f9fafb;font-weight:700}
.table-wrap{overflow:auto;-webkit-overflow-scrolling:touch}
.table-tools{display:flex;gap:8px;align-items:center;justify-content:space-between;margin:6px 0 8px;flex-wrap:wrap}
.table-search{max-width:320px;width:100%}
.table-wrap th{resize:horizontal;overflow:auto;min-width:56px;cursor:pointer}
.badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:12px;background:#eef2f6;color:#465569}
.badge.ok{background:#dcfce7;color:#166534}
.badge.warn{background:#fef3c7;color:#92400e}
.badge.danger{background:#fee2e2;color:#991b1b}
.pill{display:inline-block;padding:4px 9px;border-radius:999px;background:#edf0f3;margin:2px}
.attendance-page{font-size:1em}
.attendance-page input,.attendance-page select,.attendance-page button,.attendance-page .btn{font-size:1em}
.attendance-tools-toggle{position:absolute;opacity:0;pointer-events:none}
.attendance-tools-label{display:none;align-items:center;justify-content:space-between;gap:10px;background:#fff;border:1px solid #dce3eb;border-radius:8px;padding:11px 12px;margin:10px 0;font-weight:700;cursor:pointer}
.attendance-tools-label:after{content:"Göster";font-weight:700;color:#198754}
.attendance-tools-toggle:checked+.attendance-tools-label:after{content:"Gizle";color:#697586}
.attendance-tools-body{display:block}
.bulk-actions{display:grid;grid-template-columns:minmax(180px,1fr) minmax(360px,auto);gap:12px;align-items:center;background:#f9fafb;border:1px solid #edf0f3;border-radius:8px;padding:10px 12px;margin:12px 0}
.bulk-actions .status-options{min-width:360px}
.mark-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(270px,auto);gap:12px;align-items:center;border:1px solid #bbf7d0;background:#f0fdf4;border-radius:8px;padding:9px 10px;margin:6px 0}
.mark-row.marked{border-color:#fecaca;background:#fff1f1}
.mark-row.readonly{background:#fff;border-color:#edf0f3}
.student-name{font-weight:800}
.student-no{color:#506175;margin-top:3px}
.status-options{display:grid;grid-template-columns:repeat(3,minmax(74px,1fr));gap:8px}
.status-option{border:0;background:transparent;color:inherit;padding:0;cursor:pointer;text-align:initial}
.status-option input{position:absolute;opacity:0;pointer-events:none}
.status-option span{display:block;text-align:center;border:1px solid #cbd5df;border-radius:8px;padding:11px 8px;background:#fff;color:#172033;font-weight:700}
.status-option.selected span{background:#138a5b;border-color:#138a5b;color:#fff}
.status-option.absent.selected span{background:#be3144;border-color:#be3144}
.status-option.late.selected span{background:#b7791f;border-color:#b7791f}
.status-option.duty.selected span{background:#2563eb;border-color:#2563eb}
.bulk-btn{border:1px solid #cbd5df;background:#fff;color:#172033}
.bulk-btn.absent{color:#991b1b}
.bulk-btn.late{color:#92400e}
.bulk-btn.duty{color:#1d4ed8}
.action-bar{position:sticky;bottom:0;background:rgba(255,255,255,.96);border-top:1px solid #dce3eb;padding:12px 0;margin:0}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.tabs a{padding:8px 12px;border:1px solid #d5dde7;border-radius:7px;text-decoration:none;color:#172033;background:#fff}
.tabs a.active{border-color:#138a5b;color:#138a5b;font-weight:700}
@media(max-width:900px){
  .topbar{height:54px;padding:0 10px}
  .menu-toggle{display:inline-flex;flex-direction:column}
  .brand{font-size:14px}
  .top-user .username{display:none}
  .font-tools button{padding:7px 8px}
  .top-user .btn{padding:9px 12px;width:auto}
  .layout{display:block;min-height:calc(100vh - 54px)}
  .sidebar{display:none;position:fixed;left:0;right:0;top:54px;width:auto;max-height:calc(100vh - 54px);overflow:auto;padding:10px;background:#1f2d3d;z-index:35;box-shadow:0 10px 22px rgba(15,23,42,.22)}
  .nav-toggle:checked~.layout .sidebar{display:block}
  .sidebar h3{display:none}
  .sidebar a{font-size:16px;padding:13px 14px;margin:4px 0}
  .content{padding:12px}
  .page-title h1{font-size:21px}
  .row>label,.row>select,.row>input{width:100%}
  .attendance-tools-label{display:flex}
  .attendance-tools-body{display:none}
  .attendance-tools-toggle:checked+.attendance-tools-label+.attendance-tools-body{display:block}
  .bulk-actions{grid-template-columns:1fr;gap:8px;padding:9px}
  .bulk-actions .status-options{min-width:0}
  .mark-row{grid-template-columns:minmax(112px,1fr) minmax(180px,204px);gap:8px;padding:7px 8px;margin:4px 0}
  .status-options{grid-template-columns:repeat(3,minmax(54px,1fr));gap:5px}
  .status-option span{padding:8px 4px;font-size:.92em}
  .action-bar{position:static}
}
@media(max-width:520px){
  .content{padding:10px}
  .card{padding:12px;border-radius:8px}
  .grid{grid-template-columns:1fr}
  .page-title h1,.attendance-page h2{font-size:21px}
  .student-name{font-size:.95em;line-height:1.15}
  .student-no{font-size:.88em}
  button,.btn{width:100%;text-align:center}
  .top-user .btn,.font-tools button{width:auto}
  .action-bar{display:grid;grid-template-columns:1fr;gap:8px}
}
@media(max-width:380px){
  .mark-row{grid-template-columns:1fr}
}

/* ─────────────────────────────────────────────────────────────────────────
   25IF/İ4 — Oturumsuz sayfalar (giriş, ilk şifre, şifre belirleme, yönetici
   girişi). Eskiden `page()` içinde AYRI bir CSS bloğu vardı; iki tasarım
   demekti ve 44px dokunma hedefi yalnız birinde uygulanıyordu.
   ───────────────────────────────────────────────────────────────────────── */
.public-main{max-width:640px;margin:24px auto;padding:0 14px}
.public-head{background:#fff;border-bottom:1px solid #dce3eb;padding:14px 18px;display:flex;justify-content:space-between;gap:14px;align-items:center;flex-wrap:wrap}
.public-head .nav a{margin-left:12px;color:#176b4d;text-decoration:none;font-weight:700}
.public-foot{max-width:640px;margin:8px auto 28px;padding:0 14px;font-size:13px}
.public-foot a{color:#176b4d}
