  :root{
    --paper:#F6F4EE;
    --paper-raised:#FFFFFF;
    --ink:#26302B;
    --ink-soft:#5B655E;
    --line:#D8D2C2;
    --line-soft:#E7E2D4;
    --teal:#2C5F5A;
    --teal-deep:#1E4642;
    --gold:#B4863A;
    --off:#B4483C;
    --off-bg:#F6E7E4;
    --holiday-bg:#F2E6D0;
  }
  :root:not([data-theme="light"]){
    /* keep light paper look even under system dark mode by default */
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
  body{
    background:var(--paper);
    color:var(--ink);
    font-family:'Inter',system-ui,sans-serif;
    line-height:1.45;
    padding-bottom:64px;
  }
  h1,h2,h3{
    font-family:'Source Serif 4',Georgia,serif;
    font-weight:600;
    margin:0;
    color:var(--teal-deep);
  }
  .wrap{max-width:1180px;margin:0 auto;padding:0 20px;}

  /* ---------- header ---------- */
  header.top{
    background:var(--teal-deep);
    color:#F2EFE5;
    padding:22px 0 46px;
    border-bottom:4px solid var(--gold);
  }
  header.top h1{color:#F2EFE5;font-size:1.5rem;letter-spacing:.2px;}
  header.top .sub{color:#C9D8D2;font-size:.88rem;margin-top:4px;}

  /* ---------- control bar ---------- */
  .controlbar{
    background:var(--paper-raised);
    border:1px solid var(--line);
    border-radius:10px;
    margin-top:-28px;
    padding:16px 18px;
    display:flex;
    flex-wrap:wrap;
    gap:14px;
    align-items:center;
    justify-content:space-between;
    box-shadow:0 2px 10px rgba(30,70,66,.07);
    position:relative;
    z-index:5;
  }
  .weeknav{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
  .weeknav .label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);}
  .weeknav .range{font-family:'Source Serif 4',serif;font-weight:600;font-size:1.08rem;color:var(--teal-deep);white-space:nowrap;}
  button, select, input[type=text], input[type=date]{
    font-family:'Inter',sans-serif;
    font-size:.86rem;
  }
  .btn{
    border:1px solid var(--teal);
    background:var(--teal);
    color:#fff;
    padding:8px 14px;
    border-radius:7px;
    cursor:pointer;
    font-weight:600;
    transition:background .15s, transform .1s;
  }
  .btn:hover{background:var(--teal-deep);}
  .btn:active{transform:translateY(1px);}
  .btn.ghost{
    background:transparent;
    color:var(--teal-deep);
    border:1px solid var(--line);
  }
  .btn.ghost:hover{background:var(--line-soft);}
  .btn.small{padding:5px 10px;font-size:.78rem;}
  .btn.gold{background:var(--gold);border-color:var(--gold);}
  .btn.gold:hover{background:#98702E;}

  .personbar{display:flex;align-items:center;gap:8px;}
  select{
    padding:7px 10px;
    border-radius:7px;
    border:1px solid var(--line);
    background:#fff;
    color:var(--ink);
    max-width:220px;
  }

  /* ---------- filter tabs ---------- */
  .tabs{
    display:flex;
    gap:8px;
    flex-wrap:wrap;
    margin:18px 0 6px;
  }
  .tab{
    padding:7px 13px;
    border-radius:999px;
    border:1px solid var(--line);
    background:var(--paper-raised);
    color:var(--ink-soft);
    font-size:.82rem;
    font-weight:600;
    cursor:pointer;
  }
  .tab.active{background:var(--teal-deep);border-color:var(--teal-deep);color:#fff;}

  main{margin-top:14px;}

  .kurum-block{margin-top:30px;}
  .kurum-head{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    gap:10px;
    border-bottom:2px solid var(--teal-deep);
    padding-bottom:6px;
    margin-bottom:14px;
  }
  .kurum-head h2{font-size:1.22rem;}
  .kurum-actions{display:flex;gap:8px;}

  .grup-card{
    background:var(--paper-raised);
    border:1px solid var(--line);
    border-radius:10px;
    margin-bottom:18px;
    overflow:hidden;
    page-break-inside:avoid;
    break-inside:avoid;
  }
  .grup-bar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    padding:11px 16px;
    background:#EFEADA;
    border-bottom:1px solid var(--line);
    flex-wrap:wrap;
  }
  .grup-title{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;}
  .grup-title h3{font-size:1.02rem;}
  .grup-btns{display:flex;gap:6px;}

  .toplu-atama-bar{
    display:flex;align-items:center;gap:8px;flex-wrap:wrap;
    padding:8px 16px;
    background:#F6F2E4;
    border-bottom:1px solid var(--line);
  }
  .toplu-atama-bar input.toplu-kisi-input{
    padding:6px 9px;border:1px solid var(--line);border-radius:6px;
    width:200px;font-size:.82rem;
  }
  .toplu-hint{font-size:.74rem;color:var(--ink-soft);}
  th.sec-col, td.sec-col{width:34px;text-align:center;padding:6px 4px;}
  td.sec-col input, th.sec-col input{width:16px;height:16px;cursor:pointer;}

  table.cizelge{
    width:100%;
    border-collapse:collapse;
    font-size:.82rem;
  }
  table.cizelge th, table.cizelge td{
    border:1px solid var(--line-soft);
    padding:7px 8px;
    text-align:left;
    vertical-align:middle;
  }
  table.cizelge thead th{
    background:#F9F7F0;
    font-weight:600;
    text-align:center;
    color:var(--ink-soft);
  }
  table.cizelge thead th .gun{display:block;font-size:.86rem;color:var(--ink);font-weight:700;}
  table.cizelge thead th .tarih{display:block;font-size:.7rem;font-weight:500;margin-top:1px;}
  table.cizelge td.bolge-col{width:20%;font-weight:500;}
  table.cizelge td.bolge-col .sil-satir{
    float:right;
    opacity:0;
    color:var(--off);
    cursor:pointer;
    font-size:.72rem;
    border:none;background:none;
  }
  table.cizelge tr:hover td.bolge-col .sil-satir{opacity:1;}
  table.cizelge td.sorumlu-col{width:14%;}
  table.cizelge td.sorumlu-col input{
    width:100%;
    border:1px solid transparent;
    background:transparent;
    font-weight:600;
    color:var(--teal-deep);
    padding:3px 5px;
    border-radius:4px;
    font-size:.8rem;
  }
  table.cizelge td.sorumlu-col input:hover, table.cizelge td.sorumlu-col input:focus{border-color:var(--line);background:#fff;}
  td.check-cell{text-align:center;width:9%;}
  .box{
    display:block;
    width:22px;height:22px;margin:0 auto;
    border:1.3px solid #B9B2A0;
    border-radius:4px;
    background:#fff;
  }
  th.off-col, td.off-col{
    background:var(--off-bg);
    color:var(--off);
    font-size:.72rem;
    font-weight:700;
  }
  td.off-col{text-align:center;}
  th.tatil-col, td.tatil-col{
    background:var(--holiday-bg);
  }
  td.tatil-col{text-align:center;color:#7A5A20;font-size:.72rem;font-weight:700;line-height:1.25;}

  .add-row-line{padding:8px 16px;border-top:1px dashed var(--line);display:flex;gap:8px;flex-wrap:wrap;}
  .add-row-line input{
    border:1px solid var(--line);
    border-radius:6px;
    padding:5px 8px;
    width:260px;
  }
  .add-row-line input.yeni-bolge-sorumlu{width:180px;}

  .empty-note{
    padding:30px;
    text-align:center;
    color:var(--ink-soft);
    font-size:.9rem;
  }

  /* ---------- admin / holiday panel ---------- */
  .panel{
    background:var(--paper-raised);
    border:1px solid var(--line);
    border-radius:10px;
    margin-top:26px;
    padding:16px 18px;
  }
  .panel h3{font-size:1rem;margin-bottom:8px;}
  .panel p.hint{color:var(--ink-soft);font-size:.8rem;margin:2px 0 12px;}
  .tatil-list{display:flex;flex-direction:column;gap:6px;max-width:520px;}
  .tatil-item{display:flex;align-items:center;gap:8px;font-size:.85rem;}
  .tatil-item input[type=date]{padding:5px 6px;border:1px solid var(--line);border-radius:5px;}
  .tatil-item input[type=text]{flex:1;padding:5px 8px;border:1px solid var(--line);border-radius:5px;}
  .tatil-item .sil{color:var(--off);background:none;border:none;cursor:pointer;font-size:.9rem;}
  .add-tatil{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;}
  .personel-list{display:flex;flex-direction:column;gap:6px;max-width:520px;}
  .personel-item{display:flex;align-items:center;gap:8px;font-size:.85rem;}
  .personel-item input[type=text]{flex:1;padding:5px 8px;border:1px solid var(--line);border-radius:5px;font-weight:600;color:var(--teal-deep);}
  .personel-sayac{min-width:92px;text-align:right;font-size:.76rem;color:var(--ink-soft);font-variant-numeric:tabular-nums;}
  .personel-sayac.bos{color:var(--off);}
  .personel-item .sil{color:var(--off);background:none;border:none;cursor:pointer;font-size:.9rem;padding:4px 6px;border-radius:5px;}
  .personel-item .sil:hover{background:var(--off-bg);}
  .personel-bos{font-size:.82rem;color:var(--ink-soft);padding:4px 0;}

  footer.note{
    max-width:1180px;margin:34px auto 0;padding:0 20px;
    color:var(--ink-soft);font-size:.78rem;
  }

  /* ---------- tür (Sınıf / Oda / WC) ---------- */
  .btn svg{width:14px;height:14px;vertical-align:-2px;margin-right:6px;}
  .btn:disabled{opacity:.45;cursor:not-allowed;}
  .btn:focus-visible, .tab:focus-visible, select:focus-visible, input:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
  .indir-grup{display:flex;gap:8px;flex-wrap:wrap;}
  .grup-sayac{font-size:.76rem;color:var(--ink-soft);font-variant-numeric:tabular-nums;}
  .tablo-kaydir{overflow-x:auto;}
  table.cizelge{min-width:920px;}
  table.cizelge td.tur-col{width:108px;}
  table.cizelge td.tur-col select{
    width:100%;min-width:98px;max-width:none;padding:3px 4px;font-size:.76rem;font-weight:600;
    border-radius:5px;border-color:transparent;background:transparent;cursor:pointer;
  }
  table.cizelge td.tur-col select:hover, table.cizelge td.tur-col select:focus{border-color:var(--line);background:#fff;}
  table.cizelge td.tur-col select.tur-sinif{color:var(--teal-deep);}
  table.cizelge td.tur-col select.tur-oda{color:#6B5423;}
  table.cizelge td.tur-col select.tur-wc{color:#2F5E86;}
  table.cizelge tr.satir-wc td.check-cell:not(.off-col):not(.tatil-col){background:#F3F6F9;}
  table.cizelge tr.satir-wc td.check-cell .box{border-style:dashed;opacity:.55;}
  .wc-not{font-size:.72rem;color:var(--ink-soft);margin-top:2px;}
  ::selection{background:#D8E6E2;color:var(--ink);}
  table.cizelge thead th .tarih{font-variant-numeric:tabular-nums;}

  /* ---------- imza ---------- */
  .imza-band{max-width:1180px;margin:28px auto 0;padding:6px 20px 0;display:flex;justify-content:center;}
  .imza{
    display:inline-flex;align-items:center;gap:8px;padding:4px 10px;border-radius:999px;
    color:var(--ink);text-decoration:none;border:1px solid transparent;background:transparent;
    transition:background .2s cubic-bezier(.23,1,.32,1), border-color .2s cubic-bezier(.23,1,.32,1);
  }
  .imza__mark{width:20px;height:20px;border-radius:50%;transition:transform .2s cubic-bezier(.23,1,.32,1);}
  .imza__ust{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);}
  .imza__ad{font-size:.8rem;font-weight:600;color:var(--ink);}
  .imza__tld{color:var(--ink-soft);font-weight:500;transition:color .2s;}
  .imza:hover, .imza:focus-visible{background:var(--paper-raised);border-color:var(--line);}
  .imza:hover .imza__mark, .imza:focus-visible .imza__mark{transform:scale(1.08);}
  .imza:hover .imza__tld, .imza:focus-visible .imza__tld{color:var(--ink);}
  @media (prefers-reduced-motion: reduce){ .imza, .imza__mark{transition:none;} }
  @media print{ .imza-band{display:none;} }

/* ---------- giriş, kayıt durumu, bildirim ---------- */
.giris-ekrani{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;
  background:var(--paper);padding:16px;}
.giris-ekrani[hidden]{display:none;}
.giris-kart{width:100%;max-width:360px;background:var(--paper-raised);border:1px solid var(--line);
  border-radius:12px;padding:26px 24px;box-shadow:0 8px 28px rgba(30,70,66,.10);display:flex;flex-direction:column;gap:8px;}
.giris-kart h1{font-size:1.35rem;}
.giris-kart p{margin:0 0 6px;color:var(--ink-soft);font-size:.86rem;}
.giris-kart label{font-size:.78rem;font-weight:600;color:var(--ink-soft);}
.giris-kart input{padding:9px 11px;border:1px solid var(--line);border-radius:7px;font-size:.95rem;}
.giris-hata{color:var(--off) !important;min-height:1.2em;}
.kayit-durum{font-size:.76rem;color:var(--ink-soft);font-variant-numeric:tabular-nums;min-width:120px;}
.kayit-durum.uyari{color:var(--off);font-weight:600;}
.bildirim{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:40;max-width:min(560px,calc(100% - 32px));
  background:var(--teal-deep);color:#F2EFE5;padding:11px 16px;border-radius:9px;font-size:.86rem;
  box-shadow:0 6px 22px rgba(0,0,0,.18);}
.bildirim[hidden]{display:none;}
.yukleniyor{padding:60px 0;text-align:center;color:var(--ink-soft);}

.gecmis-liste{list-style:none;margin:12px 0 0;padding:0;max-width:520px;max-height:320px;overflow:auto;
  border:1px solid var(--line);border-radius:8px;}
.gecmis-liste li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 12px;
  border-bottom:1px solid var(--line-soft);font-size:.82rem;font-variant-numeric:tabular-nums;}
.gecmis-liste li:last-child{border-bottom:none;}
