:root{ --rodice:#ED7D31; --rodice-l:#FCE4D6; --stat:#7030A0; --stat-l:#E4DFEC; --bb:#548235; --bb-l:#E2EFDA; --bh:#2E6DB4; --bh-l:#DDEBF7; }
body{ margin:0; }
.app{ display:grid; grid-template-columns:230px 1fr; min-height:100vh; }
.side{ background:#1f2733; color:#cfd8e3; padding:18px 14px; display:flex; flex-direction:column; }
.brand{ font-weight:700; font-size:1.15rem; color:#fff; margin-bottom:22px; letter-spacing:.5px; }
.brand span{ display:block; font-size:.7rem; font-weight:400; color:#8ea0b5; letter-spacing:2px; text-transform:uppercase; }
.brand.center{ text-align:center; color:#1f2733; }
.brand.center span{ color:#7a8aa0; }
.side nav{ display:flex; flex-direction:column; gap:2px; }
.side nav a{ color:#cfd8e3; text-decoration:none; padding:9px 12px; border-radius:8px; font-size:.92rem; }
.side nav a:hover{ background:#2b3542; }
.side nav a.on{ background:#3b82f6; color:#fff; font-weight:600; }
.side nav a.muted{ color:#5f6f83; cursor:default; }
.side nav a.muted:hover{ background:transparent; }
.side-foot{ margin-top:auto; font-size:.82rem; color:#8ea0b5; padding-top:16px; }
.side-foot a{ color:#8ea0b5; }
.main{ padding:26px 34px; max-width:1000px; }
.head-row{ display:flex; align-items:center; justify-content:space-between; gap:16px; }
.head-row h1{ margin:0; }
.cards{ display:flex; gap:16px; flex-wrap:wrap; margin:18px 0; }
.card{ flex:1; min-width:180px; padding:18px; border-radius:12px; border:1px solid #e5e9ef; }
.card h3{ margin:0 0 8px; font-size:.95rem; color:#555; }
.card .big{ font-size:2rem; font-weight:700; }
.card small{ color:#8a94a4; }
.card.bb{ background:var(--bb-l); border-color:#bcd6a3; } .card.bh{ background:var(--bh-l); border-color:#a9c9ea; }
.sec{ margin:22px 0; }
.sec h2{ display:inline-block; padding:6px 14px; border-radius:8px 8px 0 0; color:#fff; margin:0 0 0; font-size:1rem; }
.sec.rodice h2{ background:var(--rodice); } .sec.stat h2{ background:var(--stat); }
.sec.bb h2{ background:var(--bb); } .sec.bh h2{ background:var(--bh); }
.sec.rodice{ border-top:3px solid var(--rodice); } .sec.stat{ border-top:3px solid var(--stat); }
.sec.bb{ border-top:3px solid var(--bb); } .sec.bh{ border-top:3px solid var(--bh); }
details.yr{ border:1px solid #e5e9ef; border-radius:8px; margin:8px 0; padding:4px 12px; }
details.yr.cur{ background:#fff; }
details.yr.old{ background:#f4f4f4; color:#8a94a4; }
details.yr.rodice.cur, .sec.rodice details.yr.cur{ background:var(--rodice-l); }
.sec.stat details.yr.cur{ background:var(--stat-l); }
details.yr summary{ font-weight:600; cursor:pointer; padding:6px 0; }
table{ margin:8px 0; } th,td{ padding:6px 10px; }
.right{ text-align:right; } .center{ text-align:center; }
input.num{ width:110px; text-align:right; display:inline-block; margin:0; padding:4px 8px; }
.tag{ padding:2px 9px; border-radius:20px; font-size:.8rem; font-weight:600; }
.tag.ml{ background:var(--bb-l); color:var(--bb); } .tag.st{ background:#fde8cf; color:#b5651d; }
.tag.bb-t{ background:var(--bb-l); color:var(--bb); } .tag.bh-t{ background:var(--bh-l); color:var(--bh); }
.flat{ margin-top:14px; } .flat h4,.sec h4{ margin:12px 0 6px; }
.flat-row{ display:flex; align-items:center; gap:12px; max-width:420px; margin:4px 0; }
.flat-row span{ flex:1; }
.actions{ display:flex; gap:12px; margin:22px 0; }
.form{ max-width:560px; } .row2{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.inline{ display:inline; margin:0; }
button.link{ background:none; border:none; color:#3b82f6; padding:0; width:auto; cursor:pointer; font-size:inherit; }
button.link.danger{ color:#c0392b; }
.login-wrap{ display:flex; min-height:100vh; align-items:center; justify-content:center; background:#eef1f5; }
.login-card{ width:340px; padding:28px; }
.login-card .err{ background:#fdecea; color:#c0392b; padding:8px 12px; border-radius:8px; }
.login-card .hint{ font-size:.82rem; color:#8a94a4; text-align:center; }
.muted{ color:#8a94a4; }

.mrow{ display:flex; gap:10px; align-items:center; margin:14px 0; }
.mrow select,.mrow input{ margin:0; width:auto; }
.chips{ display:flex; gap:10px; }
.chip{ padding:6px 12px; border-radius:20px; font-size:.9rem; }
.chip.rodice{ background:var(--rodice-l); color:#8a3b12; } .chip.stat{ background:var(--stat-l); color:#4b1f6e; }
.mwrap{ overflow-x:auto; border:1px solid #e5e9ef; border-radius:8px; }
.mgrid{ border-collapse:collapse; font-size:12px; margin:0; width:max-content; }
.mgrid th,.mgrid td{ border:0.5px solid #e5e9ef; padding:2px 4px; text-align:center; white-space:nowrap; }
.mgrid th{ font-weight:500; color:#667; font-size:11px; line-height:1.1; }
.mgrid td.nm,.mgrid th.nm{ text-align:left; min-width:130px; }
.mgrid .wknd{ background:#f4f4f4; }
.mgrid select.cell{ width:46px; font-size:12px; padding:1px 2px; margin:0; border:0.5px solid #dfe3ea; border-radius:5px; text-align:center; }
.mgrid .ctr{ text-align:center; } .mgrid .right{ text-align:right; }
.mgrid tr.obsrow td{ background:#fafafa; font-weight:600; color:#555; }
.stick{ position:sticky; left:0; background:#fff; z-index:1; }
.mgrid th.stick{ background:#fff; }

.c-rodice{ color:var(--rodice); } .c-stat{ color:var(--stat); }

/* ---- Děti: rozvrh + kapacita ---- */
.grp-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; }
.grp-head h2{ margin:0; }
.kap{ font-size:.9rem; color:#555; }
.kap-num{ font-weight:700; font-size:1rem; padding:2px 10px; margin:0 2px; border:1px dashed #b9c0cc; border-radius:6px; background:#fff; cursor:pointer; }
.kap-num:hover{ background:#eef3ff; }
.deti-tbl th, .deti-tbl td{ padding:6px 8px; }
.deti-tbl td.nm{ font-weight:600; }
.kat-dot{ display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:7px; vertical-align:middle; }
.kat-dot.st{ background:#E6A700; } .kat-dot.ml{ background:#7FB069; }
.kat-badge{ font-size:.72rem; font-weight:600; padding:2px 8px; border-radius:12px; vertical-align:middle; }
.kat-badge.st{ background:#FFF2B2; color:#8a6d00; } .kat-badge.ml{ background:#E2F0D9; color:#3f6b25; }
.dcol, .dcell{ text-align:center; width:38px; }
.dcol.po, .dcell.po{ box-shadow:inset 2px 0 0 #cdd7e5; }
.dcol.pa, .dcell.pa{ box-shadow:inset -2px 0 0 #cdd7e5; }
.dcell{ font-weight:700; font-size:.85rem; }
.dcell.k-C{ background:#C0DD97; color:#27500A; }
.dcell.k-D{ background:#AECCEC; color:#1f3f66; }
.dcell.k-17{ background:#9FE1CB; color:#085041; }
.acts a{ margin-right:10px; }
.add-row td{ background:#fafbfc; }
.add-link{ display:inline-block; padding:6px 0; font-weight:600; }
.hidden{ display:none; }

/* ---- Rozvrh ve formuláři ---- */
fieldset.rozvrh{ border:1px solid #e5e9ef; border-radius:8px; padding:12px 16px; margin:10px 0; }
.rozvrh-grid{ display:flex; gap:10px; flex-wrap:wrap; }
.rozvrh-grid label{ flex:1; min-width:90px; }
.rozvrh-grid label span{ display:block; font-size:.8rem; color:#666; margin-bottom:4px; }
/* Pondělí a pátek stejnými barvami jako v měsíčních gridech — ať se to čte všude stejně. */
.rozvrh-grid label.po span{ color:#fff; font-weight:700; background:#C97F2C; border-radius:6px; padding:2px 8px; display:inline-block; }
.rozvrh-grid label.pa span{ color:#fff; font-weight:700; background:#2E8B87; border-radius:6px; padding:2px 8px; display:inline-block; }
.rozvrh-grid select{ margin:0; }

/* ---- Měsíc: přepínač Děti/Učitelé ---- */
.tabs{ display:flex; gap:6px; margin:0 0 6px; }
.tab{ padding:7px 16px; border-radius:8px 8px 0 0; background:#eef1f5; color:#556; font-weight:600; text-decoration:none; }
.tab.on{ background:#fff; border:1px solid #e5e9ef; border-bottom:none; color:#1f2d3d; }
.chip.mzda{ background:#D9E1F2; color:#274; } .chip.naklad{ background:#BDD7EE; color:#123; }

/* ---- Učitelský grid Od/Do ---- */
.ugrid td.ucell{ padding:2px; }
.ugrid select.uod, .ugrid select.udo{ width:58px; font-size:11px; padding:1px 2px; margin:1px 0; border:0.5px solid #dfe3ea; border-radius:4px; display:block; }
.ucell.filled{ background:#E2EFDA; } .ucell.abs{ background:#FCE4D6; }
.ucell .absopt{ font-weight:700; }
.ugrid .plus{ color:#0a7d3c; font-weight:700; } .ugrid .minus{ color:#b3261e; font-weight:700; }
.tag.sm{ font-size:.7rem; padding:1px 6px; }
.covrow .cov .ok{ color:#0a7d3c; font-weight:700; } .covrow .cov .bad{ color:#b3261e; font-weight:700; }

/* ---- Ceník (čistý, hustý – v duchu měsíčního listu) ---- */
.cenik{ max-width:920px; }
.muted.small{ font-size:.82rem; line-height:1.5; }
.cenik details.yr{ border:1px solid #e6e9ee; border-radius:9px; margin:7px 0; overflow:hidden; background:#fff; padding:0; }
.cenik details.yr > summary{ list-style:none; cursor:pointer; padding:7px 13px; font-size:.84rem; color:#2b3442; display:flex; align-items:center; gap:9px; }
/* světlé podbarvení roku (drží se i po rozbalení, pomáhá v orientaci) */
.cenik details.yr.y-2026{ background:#fff6ee; border-color:#f2ddc9; }
.cenik details.yr.y-2027{ background:#eef5ff; border-color:#d3e3f7; }
.cenik details.yr.y-2028{ background:#eefaf1; border-color:#cfe8d6; }
.cenik details.yr.y-2029{ background:#f7f0fb; border-color:#e3d3ee; }
.cenik details.yr.y-2030{ background:#fdf8ea; border-color:#eee0c2; }
.cenik details.yr > summary::-webkit-details-marker{ display:none; }
.cenik details.yr > summary::before{ content:"▸"; color:#9aa4b2; font-size:.8rem; transition:transform .15s ease; }
.cenik details.yr[open] > summary::before{ transform:rotate(90deg); }
.cenik details.yr.old > summary{ color:#8a94a4; }
.cenik .yr-badge{ font-size:.66rem; text-transform:uppercase; letter-spacing:.05em; background:#eef2f7; color:#5b6673; padding:2px 8px; border-radius:10px; font-weight:700; }
.cenik .yr-body{ display:flex; gap:14px; padding:2px 12px 11px; flex-wrap:wrap; }
.cenik .panel{ flex:1; min-width:300px; border:1px solid #edeff3; border-radius:8px; overflow:hidden; background:rgba(255,255,255,.7); }
.cenik .panel-h{ padding:5px 10px; font-size:.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; }
.cenik .panel.rodice .panel-h{ background:var(--rodice-l); color:#9a4a17; border-top:2px solid var(--rodice); }
.cenik .panel.stat .panel-h{ background:var(--stat-l); color:#5b2b86; border-top:2px solid var(--stat); }
.cenik table.price{ width:100%; border-collapse:collapse; margin:0; }
.cenik table.price th{ text-align:left; font-size:.58rem; text-transform:uppercase; letter-spacing:.04em; color:#98a2b0; font-weight:600; padding:5px 10px 2px; border:none; }
.cenik table.price td{ padding:2px 10px; border:none; border-top:1px solid #f1f3f6; font-size:.78rem; color:#3a424e; vertical-align:middle; }
.cenik td.dim{ color:#8a94a4; } .cenik td.lbl{ color:#4a5360; }
.cenik td.r, .cenik th.r{ text-align:right; white-space:nowrap; }
.cenik .sub-h{ padding:5px 10px 2px; font-size:.6rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:#98a2b0; border-top:1px solid #eef1f4; }
.cenik input.num{ width:76px; height:26px; line-height:1.1; box-sizing:border-box; text-align:right; padding:1px 7px; margin:0; font-size:.8rem; border:1px solid #dde1e7; border-radius:6px; background:#fff; font-variant-numeric:tabular-nums; --pico-form-element-spacing-vertical:0; }
.cenik table.price td{ line-height:1; }
.cenik input.num:focus{ border-color:var(--stat); outline:none; }
.cenik input.num.inh{ background:#fff; }
.cenik input.num.inh::placeholder{ color:#b7bfca; font-style:italic; }
.cenik .kc{ color:#9aa4b2; font-size:.68rem; margin-left:4px; }
.cenik .tag{ font-size:.64rem; padding:1px 7px; }
.cenik .actions{ margin:18px 0; }
.inh-legend{ color:#aab2bd; }

/* ---- Učitelé: seznam + formulář rozvrhu ---- */
.uc-tbl .tcell{ text-align:center; font-size:.78rem; color:#3a424e; white-space:nowrap; min-width:78px; }
.uc-tbl .tcell.has{ background:#E2EFDA; font-weight:600; }
.uc-tbl .tcell.po{ box-shadow:inset 2px 0 0 #cdd7e5; } .uc-tbl .tcell.pa{ box-shadow:inset -2px 0 0 #cdd7e5; }
.tag.sml-ps{ background:#D9E1F2; color:#1F4E79; } .tag.sml-dpp{ background:#FCE4D6; color:#833C00; } .tag.sml-ziv{ background:#E2EFDA; color:#375623; }
.rozvrh-grid.uc{ flex-direction:column; gap:6px; max-width:420px; }
.rozvrh-grid.uc .rday{ display:flex; align-items:center; gap:10px; padding:4px 8px; border:1px solid #eef1f4; border-radius:8px; }
.rozvrh-grid.uc .rday.po, .rozvrh-grid.uc .rday.pa{ background:#f6f9fc; }
.rozvrh-grid.uc .dl{ width:80px; font-weight:600; color:#4a5360; font-size:.85rem; }
.rozvrh-grid.uc .odo{ display:flex; align-items:center; gap:6px; }
.rozvrh-grid.uc .odo select{ width:auto; margin:0; padding:4px 6px; font-size:.85rem; }
.rozvrh-grid.uc .dash{ color:#8a94a4; }

/* ---- Formulář učitele: kompaktní + širší Od/Do + tint skupiny ---- */
.form.compact{ max-width:660px; }
.form.compact label{ font-size:.82rem; color:#3a424e; }
.form.compact > label > input, .form.compact select, .form.compact input[type=number], .form.compact input[type=date]{ font-size:.85rem; padding:5px 9px; height:32px; box-sizing:border-box; margin-top:3px; --pico-form-element-spacing-vertical:0; }
.row3{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px; }
.form.compact fieldset.rozvrh{ padding:10px 14px; border-radius:10px; transition:background .15s,border-color .15s; }
.form.compact fieldset.rozvrh legend{ font-size:.82rem; font-weight:600; }
.rozvrh-grid.uc .rday{ padding:3px 8px; }
.rozvrh-grid.uc .dl{ width:76px; font-size:.82rem; }
.rozvrh-grid.uc .odo select.tsel{ width:92px; height:30px; box-sizing:border-box; padding:3px 6px; font-size:.82rem; --pico-form-element-spacing-vertical:0; }
#rozvrhBox.tint-bb{ background:var(--bb-l); border-color:#bcd6a3; }
#rozvrhBox.tint-bh{ background:var(--bh-l); border-color:#a9c9ea; }
#rozvrhBox.tint-bb .rday, #rozvrhBox.tint-bh .rday{ background:rgba(255,255,255,.65); border-color:rgba(255,255,255,.9); }

/* ---- Formulář učitele: zarovnání řádků + rozvrh box (tint kryje i nadpis) ---- */
.form.compact .row2, .form.compact .row3{ align-items:end; }
.form.compact label{ display:flex; flex-direction:column; }
.form.compact label .lh{ display:block; }
.rozvrh-box{ border:1px solid #e5e9ef; border-radius:10px; padding:12px 14px; margin:12px 0; transition:background .15s,border-color .15s; }
.rozvrh-h{ font-size:.82rem; font-weight:700; color:#3a424e; margin-bottom:8px; }
#rozvrhBox.tint-bb{ background:var(--bb-l); border-color:#a9c78a; }
#rozvrhBox.tint-bh{ background:var(--bh-l); border-color:#9bc0e6; }
#rozvrhBox.tint-bb .rday, #rozvrhBox.tint-bh .rday{ background:rgba(255,255,255,.7); border-color:rgba(255,255,255,.9); }

/* ---- Obě skupiny: odznak + rozvrhy ---- */
.tag.obe-t{ background:#e7e0f5; color:#5b2b86; }
.form.compact .rozvrh-box + .rozvrh-box{ margin-top:8px; }

/* ---- Tint rozvrhu podle skupiny (dle třídy, ne ID – funguje i pro dva bloky u OBE) ---- */
.rozvrh-box.tint-bb{ background:var(--bb-l); border-color:#a9c78a; }
.rozvrh-box.tint-bh{ background:var(--bh-l); border-color:#9bc0e6; }
.rozvrh-box.tint-bb .rozvrh-h{ color:#2f5121; } .rozvrh-box.tint-bh .rozvrh-h{ color:#22456f; }
.rozvrh-box.tint-bb .rday, .rozvrh-box.tint-bh .rday{ background:rgba(255,255,255,.72); border-color:rgba(255,255,255,.9); }

/* ---- Rozvrhy vedle sebe (OBE) ---- */
.rozvrh-wrap{ display:flex; gap:14px; align-items:flex-start; flex-wrap:wrap; }
.rozvrh-wrap .rozvrh-box{ flex:1; min-width:280px; margin:0; }
.form.compact{ max-width:820px; }

/* ---- Přehled učitelů jako v sešitu ---- */
table.uc-sheet{ border-collapse:collapse; width:max-content; min-width:100%; font-size:.82rem; margin:0; }
table.uc-sheet th{ background:#305496; color:#fff; font-weight:600; padding:8px 10px; text-align:left; border:1px solid #2a4a86; white-space:nowrap; line-height:1.15; }
table.uc-sheet th.r{ text-align:right; }
table.uc-sheet td{ padding:5px 10px; border:1px solid #d6dde7; white-space:nowrap; color:#2b3442; }
table.uc-sheet td.r{ text-align:right; } table.uc-sheet td.ctr{ text-align:center; } table.uc-sheet td.dim{ color:#7a8494; }
table.uc-sheet td.nm{ font-weight:600; }
table.uc-sheet tr.band td{ font-weight:700; font-size:.86rem; padding:6px 10px; }
table.uc-sheet tr.band.bb td{ background:#A9D08E; color:#274016; border-color:#93bd77; }
table.uc-sheet tr.band.bh td{ background:#9DC3E6; color:#12314f; border-color:#83b0da; }
table.uc-sheet tr.r-bb td{ background:#EAF3E0; } table.uc-sheet tr.r-bh td{ background:#EAF1FA; }
table.uc-sheet td.day{ text-align:center; font-variant-numeric:tabular-nums; }
table.uc-sheet td.ok{ color:#2f7d32; font-weight:700; } table.uc-sheet td.warn{ color:#b3261e; font-weight:700; }
.acts-cell{ white-space:nowrap; }
.btn-ghost{ display:inline-block; padding:4px 12px; border:1px solid #d5dae1; border-radius:8px; background:#fff; color:#33415c; font-size:.78rem; font-weight:600; text-decoration:none; cursor:pointer; margin:0; line-height:1.4; }
.btn-ghost:hover{ background:#f3f6fa; }
.btn-ghost.danger{ color:#b3261e; border-color:#e6c2c2; }
.btn-ghost.danger:hover{ background:#fdf0f0; }
.acts-cell .inline{ margin-left:6px; }

/* ---- Přehled učitelů: vejít bez scrollu ---- */
table.uc-sheet{ table-layout:fixed; width:100%; font-size:.74rem; }
table.uc-sheet th{ white-space:normal; vertical-align:bottom; padding:6px 5px; font-size:.7rem; line-height:1.12; }
table.uc-sheet td{ padding:3px 5px; white-space:normal; overflow:hidden; text-overflow:ellipsis; }
table.uc-sheet td.day{ padding:2px 2px; font-size:.66rem; line-height:1.2; white-space:nowrap; }
table.uc-sheet td.nowrap{ white-space:nowrap; }
table.uc-sheet .unit{ display:block; color:#7a8494; font-size:.64rem; }
table.uc-sheet .tag.sml-ps{ background:#D9E1F2; color:#1F4E79; } table.uc-sheet .tag.sml-dpp{ background:#FCE4D6; color:#833C00; } table.uc-sheet .tag.sml-ziv{ background:#E2EFDA; color:#375623; }
table.uc-sheet .tag.sm{ font-size:.62rem; padding:1px 6px; }
.acts-cell{ text-align:center; }
.acts-cell .btn-ghost{ display:block; width:100%; margin:0 0 3px; padding:3px 4px; font-size:.7rem; box-sizing:border-box; }
.acts-cell .inline{ display:block; margin:0; }

/* ---- DPP na řádek, toast, modal ---- */
.uc-sheet .tag{ white-space:nowrap; }
.toast{ position:fixed; bottom:20px; left:50%; transform:translateX(-50%); background:#1f2733; color:#fff; padding:8px 14px; border-radius:10px; display:flex; align-items:center; gap:10px; font-size:.85rem; z-index:50; box-shadow:0 6px 20px rgba(0,0,0,.25); }
.toast .btn-ghost{ background:transparent; color:#fff; border-color:#5a6577; }
.toast .btn-ghost:hover{ background:#2b3542; }
.modal-overlay{ position:fixed; inset:0; background:rgba(20,25,33,.45); display:flex; align-items:center; justify-content:center; z-index:60; }
.modal-overlay.hidden{ display:none; }
.modal{ background:#fff; border-radius:12px; padding:20px 22px; max-width:440px; box-shadow:0 12px 40px rgba(0,0,0,.3); }
.modal p{ margin:0 0 14px; }
.modal-btns{ display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }

/* ---- Přehled učitelů: úpravy v3 (dny 2 řádky, Po/Pá barva, širší akce) ---- */
.uc-sheet td.day{ line-height:1.18; padding:3px 4px; }
.uc-sheet td.day.po, .uc-sheet th.dh.po{ box-shadow:inset 3px 0 0 #9fb3cc; }
.uc-sheet td.day.pa, .uc-sheet th.dh.pa{ box-shadow:inset -3px 0 0 #9fb3cc; }
.acts-cell .btn-ghost{ white-space:nowrap; }

/* ---- Po/Pá barva jen na hlavičkových buňkách ---- */
.uc-sheet td.day.po, .uc-sheet td.day.pa{ box-shadow:none; }
.uc-sheet th.dh.po, .uc-sheet th.dh.pa{ box-shadow:none; background:#5178a8; }

/* ---- Menší akční tlačítka (nižší řádky) ---- */
.acts-cell .btn-ghost{ padding:2px 6px; font-size:.62rem; margin:0 0 2px; border-radius:6px; line-height:1.25; }
.uc-sheet td{ padding-top:2px; padding-bottom:2px; }

/* ---- Po/Pá kontrastní hlavička + úvazek dle rozvrhu + shoda v přehledu ---- */
.uc-sheet th.dh.po{ background:#C97F2C; color:#fff; }  /* pondělí = oranžová */
.uc-sheet th.dh.pa{ background:#2E8B87; color:#fff; }  /* pátek = tyrkysová */
.uc-sheet td.roz-ok{ background:#cdeac5 !important; color:#215a1f; }
.uc-sheet td.roz-bad{ background:#f6cccc !important; color:#8a2020; }
.uvazek-calc{ margin:2px 0 8px; padding:6px 11px; border-radius:8px; font-size:.85rem; }
.uvazek-calc.neutral{ background:#f1f3f6; color:#556; }
.uvazek-calc.ok{ background:#d6efd0; color:#215a1f; }
.uvazek-calc.bad{ background:#f7d3d3; color:#8a2020; }
.uvazek-calc .muted{ color:inherit; opacity:.8; }
.uc-sheet .star{ color:#b5651d; font-weight:700; }

/* ---- Děti: kompaktní přehled (sdílí .uc-sheet) ---- */
.deti-sheet td.daycode{ text-align:center; font-weight:700; font-size:.82rem; }
.deti-sheet td.daycode.k-C{ background:#C0DD97; color:#27500A; }
.deti-sheet td.daycode.k-D{ background:#AECCEC; color:#1f3f66; }
.deti-sheet td.daycode.k-17{ background:#9FE1CB; color:#085041; }
.semafor{ width:15px; height:15px; border-radius:50%; border:1px solid rgba(0,0,0,.2); cursor:pointer; padding:0; display:inline-block; vertical-align:middle; }
.semafor.red{ background:#e05b5b; } .semafor.yellow{ background:#edc23a; } .semafor.green{ background:#57b357; }
.deti-sheet .acts-cell{ text-align:center; white-space:nowrap; }
.deti-sheet .acts-cell .btn-ghost{ display:inline-block; width:auto; margin:0 2px; }
.deti-sheet .acts-cell .inline{ display:inline; }
.band-row{ display:flex; align-items:center; justify-content:space-between; }
.band-row .kap{ font-weight:400; }
.doklady-grid{ display:flex; gap:18px; flex-wrap:wrap; }
.chk{ display:flex; align-items:center; gap:7px; font-size:.9rem; }
.chk input{ width:auto; margin:0; }
.modal .chk{ margin:7px 0; }
.btn-ghost.primary{ background:#3b82f6; color:#fff; border-color:#3b82f6; } .btn-ghost.primary:hover{ background:#2f6fd6; }

/* ---- Děti v2: užší řádky/dny, hlavička pod skupinou, kapacita, datum ---- */
.deti-sheet td{ padding:1px 8px; }
.deti-sheet td.daycode{ font-size:.76rem; padding:1px 2px; }
.deti-sheet td.dob{ font-size:.76rem; color:#5a6472; white-space:nowrap; }
.deti-sheet .kat-dot{ margin-right:6px; }
.deti-sheet tr.grp-hdr td{ background:#3f5a86; color:#fff; font-weight:600; font-size:.68rem; padding:3px 6px; white-space:nowrap; }
.deti-sheet tr.grp-hdr td.po{ background:#C97F2C; } .deti-sheet tr.grp-hdr td.pa{ background:#2E8B87; }
.deti-sheet .kap-num{ color:#1f2733; background:#fff; }
.deti-sheet .semafor{ width:14px; height:14px; }
/* datum jako tři rozbalovátka */
.datesel{ display:flex; gap:6px; margin-top:3px; }
.datesel select{ width:auto; padding:4px 6px; height:32px; box-sizing:border-box; margin:0; color:#1f2733; --pico-form-element-spacing-vertical:0; }
.datesel .d-day, .datesel .d-mon{ min-width:54px; } .datesel .d-year{ min-width:74px; }
/* skutečné čtverečky u dokladů */
.modal .chk input[type=checkbox], .doklady-grid input[type=checkbox]{ appearance:auto; -webkit-appearance:auto; width:18px; height:18px; margin:0; flex:none; }

/* ---- Děti v3: inline dny + inline datum + Adaptace/Nástup ---- */
.deti-sheet .daycell{ padding:1px 2px; }
.deti-sheet select.dsel{ width:100%; min-width:38px; font-size:.75rem; padding:1px 2px; margin:0; border:0.5px solid #dfe3ea; border-radius:5px; text-align:center; font-weight:700; height:24px; box-sizing:border-box; --pico-form-element-spacing-vertical:0; }
.deti-sheet select.dsel.k-C{ background:#C0DD97; color:#27500A; }
.deti-sheet select.dsel.k-D{ background:#AECCEC; color:#1f3f66; }
.deti-sheet select.dsel.k-17{ background:#9FE1CB; color:#085041; }
/* 30. 10. 2026: dny v přehledu dětí jen k nahlédnutí (rozvrh platný dnes) */
.deti-sheet .dkod{ display:block; width:100%; min-width:38px; font-size:.74rem; font-weight:700; text-align:center; line-height:20px; height:20px; border:0.5px solid #dfe3ea; border-radius:5px; color:#9aa3b1; box-sizing:border-box; cursor:default; }
.deti-sheet .dkod.k-C{ background:#C0DD97; color:#27500A; border-color:#C0DD97; }
.deti-sheet .dkod.k-D{ background:#AECCEC; color:#1f3f66; border-color:#AECCEC; }
.deti-sheet .dkod.k-17{ background:#9FE1CB; color:#085041; border-color:#9FE1CB; }
.deti-sheet td.datecell{ cursor:pointer; overflow:visible; }
.deti-sheet td.datecell:hover{ background:#eef3fb; }
.deti-sheet .inline-date{ gap:3px; justify-content:center; }
.deti-sheet .inline-date select{ padding:2px 3px; height:26px; font-size:.72rem; min-width:0; margin:0; }
.deti-sheet .inline-date .d-day, .deti-sheet .inline-date .d-mon{ width:40px; } .deti-sheet .inline-date .d-year{ width:52px; }
.deti-sheet .acts-cell{ overflow:visible; }

/* ---- Děti v4: bez šipky u dnů, nižší řádky, přesun skupiny, inline jméno ---- */
.deti-sheet td{ padding:0 6px; }
.deti-sheet tr.grp-hdr td{ padding:3px 6px; }
.deti-sheet select.dsel{ appearance:none; -webkit-appearance:none; background-image:none; height:20px; font-size:.74rem; padding:0 2px; }
.deti-sheet select.dsel:hover{ border-color:#9fb3cc; background-color:#f3f6fb; }
.deti-sheet .nm-edit{ cursor:text; } .deti-sheet .nm-edit:hover{ text-decoration:underline dotted; }
.deti-sheet input.nm-input{ width:100%; font-size:.85rem; padding:1px 4px; margin:0; height:22px; box-sizing:border-box; }
.deti-sheet select.grp-move{ width:auto; min-width:0; height:22px; font-size:.7rem; padding:0 2px; margin:0 4px 0 0; }
.deti-sheet .inline-date{ align-items:center; }
.deti-sheet .inline-date .d-x{ border:none; background:none; color:#b3261e; font-size:1rem; cursor:pointer; padding:0 3px; line-height:1; }
.deti-sheet .semafor{ width:13px; height:13px; }

/* ---- Datum jako dialog ---- */
.datesel.big{ display:flex; gap:14px; margin:8px 0 6px; }
.datesel.big label{ display:flex; flex-direction:column; gap:4px; font-size:.8rem; color:#3a424e; }
.datesel.big select{ width:auto; min-width:72px; height:34px; margin:0; }
.deti-sheet .nm-link{ color:#1f2d3d; text-decoration:none; font-weight:600; } .deti-sheet .nm-link:hover{ text-decoration:underline; }

/* ---- Učitelé: inline přehled (jako děti) ---- */
.ucitel-sheet td{ padding:1px 8px; }
.ucitel-sheet tr.grp-hdr td{ background:#3f5a86; color:#fff; font-weight:600; font-size:.68rem; padding:3px 6px; white-space:nowrap; }
.ucitel-sheet tr.grp-hdr td.po{ background:#C97F2C; } .ucitel-sheet tr.grp-hdr td.pa{ background:#2E8B87; }
.ucitel-sheet .nm-link{ color:#1f2d3d; text-decoration:none; font-weight:600; } .ucitel-sheet .nm-link:hover{ text-decoration:underline; }
.ucitel-sheet select.uc-druh{ width:auto; min-width:0; height:22px; font-size:.72rem; padding:0 2px; margin:0; }
.ucitel-sheet td.datecell, .ucitel-sheet td.numcell, .ucitel-sheet td.shiftcell{ cursor:pointer; }
.ucitel-sheet td.datecell:hover, .ucitel-sheet td.numcell:hover, .ucitel-sheet td.shiftcell:hover{ outline:1px solid #9fb3cc; }
.ucitel-sheet td.shiftcell{ text-align:center; font-size:.72rem; line-height:1.15; padding:2px 3px; white-space:nowrap; }
.ucitel-sheet input.num-inline{ width:66px; font-size:.8rem; padding:1px 4px; height:22px; margin:0; box-sizing:border-box; text-align:right; }
.ucitel-sheet .unit{ color:#7a8494; font-size:.66rem; }
.ucitel-sheet .star{ color:#b5651d; font-weight:700; }

/* ---- Učitelé v2: zalomená hlavička, pilulka smlouvy, dialog směny ---- */
.ucitel-sheet tr.grp-hdr td{ white-space:normal; vertical-align:bottom; line-height:1.12; }
.ucitel-sheet td.dim{ color:#8a94a4; }
.ucitel-sheet .druh-pill{ cursor:pointer; border:none; }
.ucitel-sheet .druh-pill:hover{ filter:brightness(0.95); }
.datesel.big select{ min-width:106px; font-size:.95rem; height:38px; padding:4px 10px; }
.modal .datesel.big label{ font-size:.85rem; }

/* ---- Měsíc dětí: vnořené barvy, souhrny, bez víkendů ---- */
.mwrap{ padding-bottom:14px; }
.childgrid td.daycell{ padding:2px; }
.childgrid td.daycell.po{ background:#F7E4CE; } .childgrid td.daycell.pa{ background:#CFE9E5; }
.childgrid th.dh.po{ background:#C97F2C; } .childgrid th.dh.pa{ background:#2E8B87; }
.childgrid select.cell{ appearance:none; -webkit-appearance:none; background-image:none; width:42px; height:24px; text-align:center; font-weight:700; font-size:.78rem; border:1px solid #dfe3ea; border-radius:6px; margin:0; padding:0; background:#fff; }
.childgrid select.cell.st{ border:2px solid #E6A700; }
.childgrid select.cell.k-C{ background:#C0DD97; color:#27500A; }
.childgrid select.cell.k-D{ background:#AECCEC; color:#1f3f66; }
.childgrid select.cell.k-17{ background:#9FE1CB; color:#085041; }
.childgrid select.cell.k-Ad{ background:#CECBF6; color:#3C3489; }
.childgrid th.grp2{ text-align:center; font-size:.66rem; padding:3px 4px; }
.childgrid th.grp2.rodice{ background:var(--rodice-l); color:#9a4a17; }
.childgrid th.grp2.stat{ background:var(--stat-l); color:#5b2b86; }
.childgrid th.sub{ font-size:.6rem; }
.childgrid td.r, .childgrid th.r{ text-align:right; white-space:nowrap; }
.childgrid td.dotace{ background:#f7f3fb; } .childgrid td.cel{ font-weight:700; }
.childgrid tr.totrow td{ background:#eef1f6; font-weight:700; }
.lgd-st{ border:2px solid #E6A700; border-radius:4px; padding:0 4px; }
.lgd-po{ background:#F7E4CE; padding:0 4px; border-radius:4px; } .lgd-pa{ background:#CFE9E5; padding:0 4px; border-radius:4px; }

/* ---- Měsíc dětí v2: menší bublina, viditelné okraje, ruční změna červeně ---- */
.childgrid td.daycell{ padding:4px; }
.childgrid select.cell{ width:30px; height:20px; font-size:.72rem; line-height:18px; text-align:center; text-align-last:center; padding:0; }
.childgrid td.daycell.po{ background:#F6E6D0; } .childgrid td.daycell.pa{ background:#D8ECE8; }
.childgrid th.dh.po, .childgrid th.dh.pa{ color:#fff; font-weight:700; }
.childgrid th.dh.po{ background:#C97F2C; } .childgrid th.dh.pa{ background:#2E8B87; }

/* ---- Měsíc dětí v3: ruční změna = červená bublina, barevné sloupce, ikony přenačtení ---- */
/* ruční změna: zčervená sama bublina kódu (ne pozadí buňky) */
.childgrid td.daycell.manual select.cell{ background:#EF9A9A !important; color:#7a1f1f !important; border-color:#d05a5a !important; }
/* celé sloupce Platba rodič / Dotace stát podbarvené */
.childgrid th.colR, .childgrid td.colR{ background:var(--rodice-l) !important; }
.childgrid th.colS, .childgrid td.colS{ background:var(--stat-l) !important; }
.childgrid td.colR, .childgrid td.colS{ color:#3a424e; }
/* ikony přenačtení */
.reload-one, .reload-all{ background:none; border:none; cursor:pointer; color:#8a94a4; padding:0; width:auto; font-size:.95rem; line-height:1; vertical-align:middle; }
.reload-one{ margin-right:5px; font-size:.85rem; }
.reload-one:hover, .reload-all:hover{ color:#3b82f6; transform:rotate(-90deg); transition:transform .15s; }
.reload-all{ margin-left:10px; font-size:1.1rem; }
.childgrid td.nm.avgobs{ text-align:left; font-weight:600; color:#555; }

/* ---- Svátky a prázdniny (styl jako Ceník) ---- */
.c-svatek{ color:#c0392b; } .c-praz{ color:#7A5AA6; }
.svatky .yr-badge{ margin-left:10px; font-size:.7rem; background:#3b82f6; color:#fff; padding:1px 8px; border-radius:20px; }
.svatky .yr-sum{ margin-left:12px; font-size:.8rem; color:#8a94a4; font-weight:400; }
.svatky .yr-body{ display:grid; grid-template-columns:1fr 1fr; gap:18px; padding:6px 2px 4px; }
.svatky .panel{ border:1px solid #e5e9ef; border-radius:10px; overflow:hidden; }
.svatky .panel-h{ font-weight:600; padding:8px 12px; color:#fff; }
.svatky .panel-h .mini{ font-weight:400; opacity:.85; font-size:.78rem; }
.svatky .panel.svatek .panel-h{ background:#c0392b; }
.svatky .panel.praz .panel-h{ background:#7A5AA6; }
.dot{ display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:8px; vertical-align:middle; }
.dot.svatek{ background:#c0392b; } .dot.praz{ background:#7A5AA6; }
/* svátky – tabulka */
.hol{ width:100%; border-collapse:collapse; margin:0; }
.hol td{ padding:5px 12px; border-bottom:0.5px solid #eef1f5; font-size:.86rem; }
.hol td.d{ white-space:nowrap; font-weight:600; color:#7a2018; width:1%; }
.hol td.wd{ color:#8a94a4; text-transform:uppercase; font-size:.72rem; width:1%; }
.hol td.nz{ color:#3a424e; }
.hol tr.wknd td.d{ color:#b06a63; } .hol tr.wknd{ background:#fbf4f3; }
.hol tr:last-child td{ border-bottom:none; }
/* prázdniny – mřížka bublin */
.praz-grid{ display:grid; grid-template-columns:1fr 1fr; gap:6px; padding:10px 12px; }
.praz-slot{ display:flex; align-items:center; gap:6px; background:#f6f3fb; border:1px solid #ded4ef; border-radius:8px; padding:4px 8px; }
.praz-slot.set{ background:#efe9f8; border-color:#c9b8e8; }
.praz-slot .pd{ width:132px; margin:0; padding:3px 6px; height:30px; font-size:.8rem; box-sizing:border-box; }
.praz-slot .pn{ flex:1; min-width:0; margin:0; padding:3px 6px; height:30px; font-size:.8rem; box-sizing:border-box; }
@media (max-width:900px){ .svatky .yr-body{ grid-template-columns:1fr; } .praz-grid{ grid-template-columns:1fr; } }

/* ---- Měsíc dětí v4: hlavička datum nahoře / den dole, svátky+prázdniny ---- */
.childgrid th.dh .dnum{ display:block; font-size:.82rem; font-weight:700; }
.childgrid th.dh .wl{ display:block; font-size:.62rem; opacity:.9; }
.childgrid th.dh.po .dnum, .childgrid th.dh.pa .dnum{ color:#fff; }
/* off = svátek (červená) / prázdniny (modrozelená) */
.childgrid th.dh.off.sv{ background:#c0392b !important; color:#fff; }
.childgrid th.dh.off.pr{ background:#7A5AA6 !important; color:#fff; }
.childgrid th.dh.off .dnum, .childgrid th.dh.off .wl{ color:#fff; }
.childgrid td.daycell.off.sv, .childgrid td.ctr.off.sv{ background:#f6dbd6; }
.childgrid td.daycell.off.pr, .childgrid td.ctr.off.pr{ background:#E7DEF4; }
.childgrid td.off{ color:#aab0b8; }

/* ---- Učitelský měsíc v2: dle vzoru dětského (datum/den, svátky, prázdniny) ---- */
.ugrid th.sml, .ugrid td.sml{ min-width:0; width:44px; text-align:center; }
.ugrid td.ucell{ padding:2px; vertical-align:middle; }
.ugrid select.uod, .ugrid select.udo{ width:56px; margin:1px auto; }
.ugrid td.r, .ugrid th.r{ text-align:right; white-space:nowrap; }
.ugrid td.ctr{ text-align:center; }
.ugrid td.ucell.off.sv, .ugrid td.ctr.off.sv{ background:#f6dbd6; color:#aab0b8; }
.ugrid td.ucell.off.pr, .ugrid td.ctr.off.pr{ background:#E7DEF4; color:#aab0b8; }
.ugrid .plus{ color:#c0392b; font-weight:700; } .ugrid .minus{ color:#2e6db4; font-weight:700; }
.ugrid .cov .ok{ color:#2f8a3f; font-weight:700; } .ugrid .cov .bad{ color:#c0392b; font-weight:700; }
.ugrid .tag.sm{ font-size:.62rem; padding:1px 6px; }
.ugrid .tag.obe-t{ background:#efe3fb; color:#5b2b86; }

/* ---- Měsíc dětí: součtový řádek – label vpravo, ať součty nezakryje sticky buňka ---- */
.childgrid tr.totrow td.totlbl{ text-align:right; color:#8a94a4; font-weight:600; }
.childgrid td.nm.avgobs{ min-width:150px; }

/* ---- Seznam měsíců: kompaktní řádky, horní generátor, zámek ---- */
.mrow.genrow{ align-items:center; }
.mrow .yr-in{ width:92px; text-align:center; }   /* .genrow si vzhled přebíjí níž (modrá pilulka) */
.mrow .gen-btn{ width:auto; margin:0; padding:9px 22px; white-space:nowrap; }
.mtbl{ width:100%; border-collapse:collapse; margin:6px 0; }
.mtbl th{ text-align:left; font-size:.72rem; color:#8a94a4; text-transform:uppercase; letter-spacing:.4px; padding:4px 8px; border-bottom:1px solid #e5e9ef; }
.mtbl td{ padding:3px 8px; border-bottom:1px solid #f0f2f5; vertical-align:middle; }
.mtbl td.mnm{ font-size:.92rem; }
.mtbl tr.lk{ background:#faf7f0; }
.mtbl .acts{ white-space:nowrap; }
.mtbl .acts .inline{ display:inline; }
.mtbl button.mini, .mtbl a.mini{ display:inline-block; width:auto; margin:0 0 0 6px; padding:3px 12px; font-size:.78rem; border-radius:6px; line-height:1.35; }
.mtbl button.mini.ghost{ background:#fff; color:#556; border:1px solid #cfd6e0; }
.mtbl button.mini.lock{ background:#8a6d00; border-color:#8a6d00; color:#fff; }
.mtbl button.mini.lock:hover{ filter:brightness(1.05); }
.tag.lock{ background:#f3e6c0; color:#7a5c00; }
/* Průběžné připomínky učitelek nad mřížkou docházky (19. 9. 2026). */
.pp-box{ background:#fff8e6; border:1px solid #f0dca8; border-radius:10px; padding:10px 12px; margin:0 0 12px; }
.pp-box.hotovo{ background:#f6f8fb; border-color:#e2e6ee; }
.pp-h{ font-weight:600; font-size:.9rem; margin-bottom:6px; }
.pp-sub{ font-size:.82rem; color:#8a6d1f; margin-bottom:6px; }
.pp-row{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; font-size:.85rem; padding:4px 0; }
.pp-row.hotovo{ color:#6b7686; }
.pp-kdo{ font-weight:600; min-width:90px; }
.pp-dat{ min-width:54px; color:#5a6272; }
.pp-navrh{ flex:1; min-width:200px; }
.pp-bylo{ color:#8b939f; }
.pp-f{ display:inline; margin:0; }
.pp-f button{ border:1px solid #cfd6e0; background:#fff; border-radius:8px; padding:2px 10px;
  font-size:.78rem; cursor:pointer; }
.pp-f button.ok{ color:#4a7a22; border-color:#bcd9a0; }
.pp-f button.no{ color:#a33; border-color:#e6bfbc; }
.pp-det{ margin-top:6px; font-size:.85rem; }
.pp-det summary{ cursor:pointer; color:#5a6272; }
.pp-st{ font-size:.76rem; font-weight:600; }
.pp-st.prijato{ color:#4a7a22; }
.pp-st.zamitnuto{ color:#a33; }
@media (max-width:640px){
  .pp-row{ gap:6px; font-size:.8rem; }
  .pp-kdo, .pp-dat{ min-width:0; }
  .pp-navrh{ min-width:100%; }
}

.lock-banner{ background:#fbf1cf; border:1px solid #e6cf7a; color:#6b5200; padding:8px 14px; border-radius:8px; margin:8px 0; font-size:.9rem; }
.lock-banner a{ color:#6b5200; font-weight:600; }

/* ---- Prázdniny: seznam chipů + dialog ---- */
.panel.praz .panel-h{ display:flex; align-items:center; justify-content:space-between; }
.panel.praz .add-praz{ width:auto; margin:0; padding:3px 12px; font-size:.78rem; background:#fff; color:#574a86; border:1px solid #c9b8e8; border-radius:6px; }
.panel.praz .add-praz:hover{ background:#efe9f8; }
.praz-list{ padding:10px 12px; display:flex; flex-direction:column; gap:5px; }
.praz-empty{ font-size:.85rem; padding:4px 0; }
.praz-chip{ display:flex; align-items:center; gap:8px; background:#efe9f8; border:1px solid #c9b8e8; border-radius:8px; padding:4px 10px; font-size:.86rem; }
.praz-chip .pc-date{ font-weight:600; color:#574a86; }
.praz-chip .pc-wd{ color:#8781a8; text-transform:uppercase; font-size:.7rem; }
.praz-chip .pc-nz{ color:#3a424e; }
.praz-chip .inline{ display:inline; margin:0 0 0 auto; }
.praz-chip .pc-x{ width:auto; margin:0; padding:0 7px; background:none; border:none; color:#b3261e; font-size:1.15rem; line-height:1; cursor:pointer; }
.praz-dialog{ border:none; border-radius:12px; padding:22px 24px; max-width:440px; box-shadow:0 12px 40px rgba(0,0,0,.25); }
.praz-dialog::backdrop{ background:rgba(20,28,40,.45); }
.praz-dialog h3{ margin:0 0 12px; }
.praz-dialog .chk{ display:flex; align-items:center; gap:8px; margin:6px 0 12px; font-size:.9rem; }
.praz-dialog .chk input{ appearance:auto; -webkit-appearance:auto; width:18px; height:18px; margin:0; }
.praz-dialog .pd-block{ margin:6px 0; }
.praz-dialog .drow{ display:flex; align-items:center; gap:6px; margin:6px 0; }
.praz-dialog .drow .dl{ width:34px; color:#556; font-weight:600; }
.praz-dialog .drow select{ margin:0; padding:5px 8px; height:36px; width:auto; }
.praz-dialog .drow .d-day{ min-width:64px; } .praz-dialog .drow .d-mon{ min-width:110px; } .praz-dialog .drow .d-year{ min-width:84px; }
.praz-dialog .pd-nz{ display:block; margin:12px 0 4px; font-size:.9rem; }
.praz-dialog .pd-nz input{ margin-top:4px; }
.praz-dialog .modal-btns{ display:flex; gap:8px; justify-content:flex-end; margin-top:16px; }
.praz-dialog .modal-btns .ghost{ background:#fff; color:#556; border:1px solid #cfd6e0; width:auto; margin:0; }
.praz-dialog .modal-btns button{ width:auto; margin:0; padding:8px 18px; }
.hidden{ display:none; }

/* ---- Děti list: vycentrovat kód a zmenšit barevnou bublinu (jako v měsíci) ---- */
.deti-sheet td.daycell{ text-align:center; }
.deti-sheet select.dsel{ width:32px; min-width:0; height:22px; margin:2px auto; display:inline-block; line-height:20px; text-align:center; text-align-last:center; padding:0; border-radius:6px; }

/* ---- Prázdniny: buňka jako tlačítko otevírající dialog ---- */
.panel.praz .panel-h{ display:flex; align-items:center; justify-content:space-between; }
.panel.praz .add-praz{ width:auto; margin:0; padding:3px 12px; font-size:.78rem; background:#fff; color:#574a86; border:1px solid #c9b8e8; border-radius:6px; }
.panel.praz .add-praz:hover{ background:#efe9f8; }
.praz-slot{ display:flex; align-items:center; gap:6px; background:#f6f3fb; border:1px solid #ded4ef; border-radius:8px; padding:4px 8px; }
.praz-slot.set{ background:#efe9f8; border-color:#c9b8e8; }
.praz-slot .praz-cell{ width:auto; min-width:96px; margin:0; padding:4px 8px; font-size:.82rem; text-align:left; background:#fff; color:#574a86; border:1px dashed #cdbdea; border-radius:6px; cursor:pointer; }
.praz-slot.set .praz-cell{ border-style:solid; font-weight:600; }
.praz-slot .praz-cell:hover{ background:#f2ecfb; }
.praz-slot .pn{ flex:1; min-width:0; margin:0; padding:3px 6px; height:30px; font-size:.8rem; box-sizing:border-box; }
.praz-slot .praz-x{ width:auto; margin:0; padding:0 7px; background:none; border:none; color:#b3261e; font-size:1.1rem; line-height:1; cursor:pointer; }
.praz-slot:not(.set) .praz-x{ visibility:hidden; }

/* ---- Prázdniny v3: bez popisu, kompaktní dialog ---- */
.praz-slot .praz-cell{ flex:1; min-width:0; }
.praz-dialog{ max-width:340px; padding:18px 20px; }
.praz-dialog h3{ margin:0 0 10px; font-size:1.05rem; }
.praz-dialog .drow{ gap:5px; margin:8px 0; }
.praz-dialog .drow select{ height:34px; padding:4px 6px; }
.praz-dialog .drow .d-day{ min-width:56px; } .praz-dialog .drow .d-mon{ min-width:96px; } .praz-dialog .drow .d-year{ min-width:76px; }
.praz-dialog .modal-btns{ margin-top:14px; }

/* ---- Učitelský měsíc v3: stejný princip jako děti (podbarvení sloupce + hodnota jako bublina) ---- */
/* Vrstvení buňky zevnitř ven: bublina(select) → střední vrstva .ubub (po/pá) → vnější barva lektora (inline bg na td) */
.ugrid td.ucell{ padding:2px; vertical-align:middle; }
.ugrid td.ucell .ubub{ background:#fff; border-radius:6px; padding:2px; }
.ugrid td.ucell.po .ubub{ background:#F6E6D0; }
.ugrid td.ucell.pa .ubub{ background:#D8ECE8; }
.ugrid td.ucell.off.sv .ubub, .ugrid td.ucell.off.pr .ubub{ background:transparent; padding:0; }
.ugrid select.uod, .ugrid select.udo{ width:52px; margin:1px auto; display:block; background:#fff; border-radius:5px; text-align:center; text-align-last:center; }
/* výchozí barva vyplněné směny (bez JS): BB zelená, BH modrá. JS ji přepíše škálovanou barvou dle času. */
.sec.bb td.ucell.filled select.uod, .sec.bb td.ucell.filled select.udo{ background:#DDF0CE; color:#27500A; border-color:#b6d79a; font-weight:600; }
.sec.bh td.ucell.filled select.uod, .sec.bh td.ucell.filled select.udo{ background:#D6E6F7; color:#12314a; border-color:#a9c5e6; font-weight:600; }
.ugrid td.ucell.abs select.uod{ background:#FAD9C0; color:#7a3b12; border-color:#e6b48a; font-weight:700; }
/* ruční změna času oproti rozvrhu = červená bublina */
.ugrid td.ucell.manual select.uod, .ugrid td.ucell.manual select.udo{ background:#EF9A9A !important; color:#7a1f1f !important; border-color:#d05a5a !important; }

/* ---- Dialog prázdnin: nechat Pico vycentrovat, karta jen nutná velikost ---- */
dialog.praz-dialog{ width:auto; min-width:0; max-width:none; padding:0; border:none; background:transparent; overflow:visible; }
dialog.praz-dialog::backdrop{ background:rgba(20,28,40,.45); }
.praz-dialog .praz-card{ width:330px; max-width:92vw; margin:0; padding:18px 20px; border-radius:12px; background:#fff; box-shadow:0 14px 44px rgba(0,0,0,.28); }
.praz-dialog .praz-card h3{ margin:0 0 10px; font-size:1.05rem; }
.praz-dialog .drow{ display:flex; align-items:center; gap:6px; margin:8px 0; }
.praz-dialog .drow .dl{ width:34px; color:#556; font-weight:600; }
.praz-dialog .drow select{ margin:0; height:34px; padding:4px 6px; width:auto; }
.praz-dialog .drow .d-day{ min-width:54px; } .praz-dialog .drow .d-mon{ min-width:92px; } .praz-dialog .drow .d-year{ min-width:74px; }
.praz-dialog .chk{ display:flex; align-items:center; gap:8px; margin:2px 0 10px; font-size:.9rem; }
.praz-dialog .chk input{ appearance:auto; -webkit-appearance:auto; width:18px; height:18px; margin:0; }
.praz-dialog .modal-btns{ display:flex; gap:8px; justify-content:flex-end; margin-top:14px; }
.praz-dialog .modal-btns button{ width:auto; margin:0; padding:8px 18px; }
.praz-dialog .modal-btns .ghost{ background:#fff; color:#556; border:1px solid #cfd6e0; }

/* ---- Učitelský měsíc v4: širší off sloupce, seskupený výkaz, přesčas ---- */
/* off sloupce (svátek/prázdniny) = cca 2/3 běžného dne */
.ugrid th.dh.off, .ugrid td.ucell.off, .ugrid td.ctr.off{ min-width:40px; width:40px; }
/* výkaz – seskupené hlavičky */
.ugrid th.rep{ font-size:.58rem; font-weight:600; color:#5b6472; white-space:normal; line-height:1.12; max-width:60px; vertical-align:middle; }
.ugrid th.repgrp{ font-size:.62rem; text-transform:uppercase; letter-spacing:.4px; font-weight:700; }
.ugrid th.repgrp.kiddum{ background:#E2EFDA; color:#375623; }
.ugrid th.repgrp.cssz{ background:#FCE4D6; color:#833C00; }
.ugrid th.sub.kiddum{ background:#eef6ea; color:#3d6128; }
.ugrid th.sub.cssz{ background:#fbeee4; color:#833C00; }
.ugrid td.rep{ font-size:11px; text-align:right; white-space:nowrap; }
.ugrid td.rep.ctr{ text-align:center; }
.ugrid td.rep.kd{ background:#f4f9f1; }
.ugrid td.rep.cs{ background:#fdf4ec; }
.ugrid td.rep.mzd{ font-weight:700; background:#eef6ea; }
.ugrid td.rep.nkl{ font-weight:700; background:#eef2f8; }
.ugrid td.rep.up{ color:#b6bcc7; text-align:center; }
.ugrid td.rep.plus{ color:#0a7d3c; font-weight:700; }
.ugrid td.rep.minus{ color:#c0392b; font-weight:700; }

/* ---- Učitelský výkaz v5: užší sloupce, zalamování hlavičky, barevné dvojice h+Kč ---- */
.ugrid th.rep{ width:58px; max-width:58px; white-space:normal; padding:3px 4px; }
.ugrid th.sub{ width:60px; max-width:60px; white-space:normal; vertical-align:middle; line-height:1.12; padding:3px 4px; }
.ugrid td.rep{ padding:2px 4px; }
/* barevné rozlišení dvojsloupců (hlavička sytější, tělo světlejší) */
.ugrid th.c-odp{ background:#D6E4F0 !important; } .ugrid td.c-odp{ background:#EEF4FA; }
.ugrid th.c-sv { background:#F3D9D7 !important; } .ugrid td.c-sv { background:#FBEEED; }
.ugrid th.c-dov{ background:#E4EFD3 !important; } .ugrid td.c-dov{ background:#F3F8EB; }
.ugrid th.c-dok{ background:#FDF0C7 !important; } .ugrid td.c-dok{ background:#FEF9E6; }
.ugrid th.c-nem{ background:#E1DAEC !important; } .ugrid td.c-nem{ background:#F2EEF7; }
.ugrid th.c-ose{ background:#FCE0CC !important; } .ugrid td.c-ose{ background:#FDF0E6; }
/* absence oranžově v obou buňkách dne */
.ugrid td.ucell.abs select.uod, .ugrid td.ucell.abs select.udo{ background:#FAD9C0; color:#7a3b12; border-color:#e6b48a; font-weight:700; }

/* ---- Učitelský výkaz v6: menší písmo hlavičky (max ~3 řádky), výraznější modrá Heroes ---- */
.ugrid th.rep, .ugrid th.sub{ font-size:.55rem; line-height:1.08; width:54px; max-width:54px; }
.ugrid th.repgrp{ font-size:.6rem; }
.sec.bh td.ucell.filled select.uod, .sec.bh td.ucell.filled select.udo{ background:#C7DEF6; color:#123252; border-color:#9dc0e6; }

/* ================= Fixní náklady ================= */
.fix-tbl{ border-collapse:collapse; width:max-content; min-width:760px; font-size:.9rem; }
.fix-tbl th,.fix-tbl td{ border:1px solid #e5e9ef; padding:7px 12px; text-align:left; vertical-align:middle; }
.fix-tbl th{ background:#2f3b52; color:#fff; font-weight:600; font-size:.82rem; }
.fix-tbl th.r,.fix-tbl td.r{ text-align:right; } .fix-tbl th.ctr,.fix-tbl td.ctr{ text-align:center; }
.fix-tbl td.nm{ min-width:210px; } .fix-tbl input.fx-name{ width:100%; border:1px solid transparent; background:transparent; padding:4px 6px; border-radius:6px; font-size:.9rem; margin:0; }
.fix-tbl input.fx-name:hover{ border-color:#dfe3ea; } .fix-tbl input.fx-name:focus{ border-color:#3b82f6; background:#fff; }
.fix-tbl td.r .fx-amount{ width:auto; margin:0; padding:4px 10px; background:#FFF7DC; border:1px solid #ecdca0; color:#5b4a00; border-radius:6px; font-weight:600; cursor:pointer; }
.fix-tbl td.r .fx-amount:hover{ background:#fdefc0; }
.fix-tbl td.od,.fix-tbl td.do{ color:#3a63a8; white-space:nowrap; } .fix-tbl td.prev{ color:#7a828f; }
.fix-tbl .btn-ghost.danger{ width:auto; margin:0; padding:2px 9px; color:#b3261e; border:1px solid #eccdc9; background:#fff; border-radius:6px; }
.fix-tbl .alok-cell{ width:auto; margin:0; padding:3px; background:none; border:1px solid transparent; border-radius:8px; cursor:pointer; }
.fix-tbl .alok-cell:hover{ border-color:#cfd6e0; background:#f7f9fc; }
.alok{ display:inline-block; padding:3px 10px; border-radius:20px; font-size:.78rem; font-weight:600; }
.alok-bb{ background:#E2EFDA; color:#375623; } .alok-bh{ background:#DDEBF7; color:#1F4E79; }
.alok-bar{ display:inline-flex; width:120px; height:22px; border-radius:6px; overflow:hidden; border:1px solid #cfd6e0; font-size:.72rem; font-weight:700; }
.alok-bar i{ display:flex; align-items:center; justify-content:center; font-style:normal; }
.alok-bar .sb-bb{ background:#A9D08E; color:#2f4d1e; } .alok-bar .sb-bh{ background:#9DC3E6; color:#173a5e; }
/* mini dialog (částka / rozdělení) */
dialog.mini-dialog{ border:none; background:transparent; padding:0; overflow:visible; }
dialog.mini-dialog::backdrop{ background:rgba(20,28,40,.45); }
.mini-card{ width:330px; max-width:92vw; background:#fff; border-radius:12px; padding:18px 20px; box-shadow:0 14px 44px rgba(0,0,0,.28); }
.mini-card h3{ margin:0 0 12px; font-size:1.05rem; }
.mini-card .fld{ display:block; font-size:.85rem; color:#556; margin:8px 0; }
.mini-card .fld input{ display:block; width:100%; margin-top:4px; padding:7px 9px; border:1px solid #cfd6e0; border-radius:8px; font-size:.95rem; }
.mini-btns{ display:flex; gap:8px; justify-content:flex-end; margin-top:16px; }
.mini-btns button{ width:auto; margin:0; padding:8px 18px; }
.mini-btns .ghost{ background:#fff; color:#556; border:1px solid #cfd6e0; }
.alok-opts{ display:flex; flex-direction:column; gap:6px; margin:4px 0 10px; }
.alok-opts .opt{ display:flex; align-items:center; gap:8px; padding:7px 10px; border:1px solid #e2e6ee; border-radius:8px; font-size:.9rem; cursor:pointer; }
.alok-opts .opt input{ appearance:auto; -webkit-appearance:auto; width:16px; height:16px; margin:0; }
.split-box{ border-top:1px solid #eef1f5; padding-top:10px; }
.split-bar{ display:flex; height:26px; border-radius:8px; overflow:hidden; border:1px solid #cfd6e0; }
.split-bar .sb-bb{ background:#A9D08E; } .split-bar .sb-bh{ background:#9DC3E6; }
.split-ctl{ display:flex; align-items:center; gap:6px; margin-top:8px; font-size:.85rem; color:#445; }
.split-ctl button{ width:26px; height:26px; padding:0; margin:0; border-radius:6px; border:1px solid #cfd6e0; background:#f4f6fa; color:#333; line-height:1; }
.split-ctl b{ min-width:22px; display:inline-block; text-align:center; }

/* ================= Hospodářský výsledek ================= */
.hv-tbl{ border-collapse:collapse; width:max-content; font-size:.84rem; }
.hv-tbl th,.hv-tbl td{ border:1px solid #e5e9ef; padding:6px 10px; white-space:nowrap; }
.hv-tbl th.r,.hv-tbl td.r{ text-align:right; } .hv-tbl th.ctr,.hv-tbl td.ctr{ text-align:center; }
.hv-tbl td.nm,.hv-tbl th.nm{ text-align:left; font-weight:600; position:sticky; left:0; background:#fff; z-index:2; min-width:120px; }
.hv-tbl th.blk{ text-align:center; color:#fff; font-size:.86rem; }
.hv-tbl th.blk.bb{ background:#4b8b3f; } .hv-tbl th.blk.bh{ background:#2f6db4; } .hv-tbl th.blk.cel{ background:#2f3b52; }
.hv-tbl th.sub{ background:#eef1f6; color:#5b6472; font-size:.72rem; font-weight:600; }
.hv-tbl td.celc{ background:#f4f6fb; }
.hv-tbl td.hv{ font-weight:700; } .hv-tbl td.hv.pos{ color:#0a7d3c; } .hv-tbl td.hv.neg{ color:#c0392b; }
.hv-tbl td.obs{ color:#5b6472; background:#fafbfd; }
.hv-tbl tfoot .sumrow td{ background:#eef2f8; font-weight:700; border-top:2px solid #cbd3e0; }
.hv-tbl tfoot .sumrow td.nm{ background:#eef2f8; }
.tag.sm{ font-size:.62rem; padding:1px 5px; }

/* ---- Fixní náklady v2: menší částky, nižší řádky, detail s historií ---- */
.fix-tbl{ font-size:.82rem; }
.fix-tbl th,.fix-tbl td{ padding:5px 12px; }
.fix-tbl td.amt{ font-weight:600; font-size:.82rem; color:#4a4033; background:#FFF9E6; }
.fix-tbl .fx-link{ width:auto; margin:0; padding:2px 2px; background:none; border:none; color:#1f5fae; font-weight:600; font-size:.85rem; cursor:pointer; text-align:left; }
.fix-tbl .fx-link:hover{ text-decoration:underline; }
.fix-tbl .alok-cell.fx-link{ padding:3px; }
.del-pill{ width:auto; margin:0; padding:3px 12px; font-size:.76rem; color:#b3261e; background:#fff; border:1px solid #e6b9b4; border-radius:20px; cursor:pointer; }
.del-pill:hover{ background:#fbecea; }
/* detail karta */
.mini-card.wide{ width:470px; max-width:94vw; }
.det-sec{ margin:14px 0 4px; padding-top:10px; border-top:1px solid #eef1f5; }
.det-lbl{ font-size:.78rem; font-weight:700; color:#5b6472; text-transform:uppercase; letter-spacing:.3px; margin-bottom:8px; }
.amt-row{ display:flex; align-items:flex-end; gap:10px; flex-wrap:wrap; margin-top:2px; }
.mini-card .fld.sm{ margin:0; flex:0 0 auto; }
.mini-card .fld.sm input{ width:100px; height:38px; box-sizing:border-box; }
.dmy{ display:flex; gap:5px; margin-top:4px; }
.dmy select{ margin:0; padding:6px 6px; height:38px; box-sizing:border-box; border:1px solid #cfd6e0; border-radius:8px; font-size:.85rem; }
.dmy select#dDay{ width:60px; } .dmy select#dMon{ width:96px; } .dmy select#dYear{ width:78px; }
.amt-row .primary.sm{ height:38px; margin:0; }
.det-sec .fld, .mini-card .fld{ margin:6px 0; }
.det-lbl{ margin-bottom:8px; }
.mini-btns button.primary.sm, button.primary.sm{ width:auto; margin:0; padding:8px 16px; height:38px; }
.hist-tbl{ width:100%; border-collapse:collapse; font-size:.84rem; }
.hist-tbl td{ padding:5px 8px; border-bottom:1px solid #eef1f5; }
.hist-tbl td.r{ text-align:right; } .hist-tbl td.ctr{ text-align:center; }
.hist-tbl tr.cur td{ background:#FFF9E6; font-weight:600; }
.hist-tbl .cur-tag{ font-size:.64rem; background:#e7c66b; color:#5b4a00; padding:1px 6px; border-radius:10px; margin-left:6px; font-weight:700; }
.hist-tbl .hist-x{ width:auto; margin:0; padding:0 7px; background:none; border:none; color:#b3261e; font-size:1rem; line-height:1; cursor:pointer; }

/* ---- Fixní náklady v3: rychlá editace z přehledu + kompletní historie ---- */
.fix-tbl .fx-amount{ width:auto; margin:0; padding:3px 10px; background:#FFF7DC; border:1px solid #ecdca0; color:#5b4a00; border-radius:6px; font-weight:600; font-size:.82rem; cursor:pointer; }
.fix-tbl .fx-amount:hover{ background:#fdefc0; }
.fix-tbl .fx-od{ width:auto; margin:0; padding:3px 8px; background:none; border:1px solid transparent; border-radius:6px; color:#1f5fae; font-size:.82rem; cursor:pointer; }
.fix-tbl .fx-od:hover{ border-color:#cfd6e0; background:#f7f9fc; }
.danger-btn{ width:auto; margin:0; padding:8px 18px; background:#c0392b; color:#fff; border:none; border-radius:8px; }
.danger-btn:hover{ filter:brightness(1.06); }
/* kompletní historie */
.hist-panel{ margin:16px 0 4px; }
.hist-toggle{ width:auto; margin:0; padding:8px 16px; background:#eef2f8; color:#2f3b52; border:1px solid #d5dce8; border-radius:22px; font-size:.9rem; font-weight:600; cursor:pointer; }
.hist-toggle:hover{ background:#e5ebf5; }
.hist-toggle .ht-caret{ font-size:.75rem; opacity:.7; margin-left:4px; }
.hist-full{ margin-top:12px; display:flex; flex-direction:column; gap:10px; max-width:720px; }
.hist-item{ border:1px solid #e5e9ef; border-radius:10px; padding:10px 14px; }
.hist-item.end{ background:#fbfbfc; border-style:dashed; }
.hi-head{ display:flex; align-items:center; gap:10px; margin-bottom:6px; }
.hi-name{ font-weight:700; font-size:.95rem; }
.hi-spacer{ flex:1; }
.hi-stat{ font-size:.72rem; padding:2px 9px; border-radius:12px; font-weight:600; }
.hi-stat.act{ background:#E2EFDA; color:#375623; } .hi-stat.end{ background:#eceff3; color:#6b7280; }
.hi-note{ font-size:.72rem; color:#9aa2af; font-style:italic; }
.hi-del{ width:auto; margin:0; padding:3px 12px; font-size:.76rem; color:#b3261e; background:#fff; border:1px solid #e6b9b4; border-radius:20px; cursor:pointer; }
.hi-del:hover{ background:#fbecea; }
.hist-item.end .hist-tbl tr td{ color:#6b7280; }

/* ---- Učitelé výkaz ---- */
.vyk-pick{ margin:6px 0 12px; } .vyk-pick label{ font-size:.9rem; color:#445; font-weight:600; }
.vyk-pick label{ display:inline-flex; align-items:center; gap:10px; }
.vyk-tbl td.r, .vyk-tbl th.r{ text-align:right; white-space:nowrap; }
.vyk-tbl td.ctr{ text-align:center; }
.vyk-tbl tr.totrow td{ background:#eef2f8; font-weight:700; border-top:2px solid #cbd3e0; }
.vyk-tbl tr.totrow td.totlbl{ text-align:right; color:#8a94a4; }
.vyk-tbl .plus{ color:#0a7d3c; font-weight:700; } .vyk-tbl .minus{ color:#c0392b; font-weight:700; }

/* ================= Hospodářský výsledek — vertikální přehled ================= */
.hv2{ border-collapse:collapse; width:100%; max-width:900px; font-size:.9rem; }
.hv2 th,.hv2 td{ border:1px solid #e5e9ef; padding:7px 12px; }
.hv2 th{ background:#2f3b52; color:#fff; font-weight:600; font-size:.82rem; }
.hv2 th.r,.hv2 td.r{ text-align:right; white-space:nowrap; } .hv2 th.ctr,.hv2 td.ctr{ text-align:center; }
.hv2 td.nm{ font-weight:600; vertical-align:middle; background:#fafbfd; min-width:120px; }
.hv2 td.nm .mlink{ font-weight:700; color:#1f5fae; }
.hv2 td.grp{ font-weight:600; width:90px; }
.hv2 td.grp.bb{ background:#E2EFDA; color:#375623; } .hv2 td.grp.bh{ background:#DDEBF7; color:#1F4E79; } .hv2 td.grp.cel{ background:#eef2f8; color:#2f3b52; }
.hv2 tr.r-cel td{ background:#f6f8fc; } .hv2 tr.r-cel td.grp.cel{ background:#e7ecf5; }
.hv2 td.hv.pos{ color:#0a7d3c; font-weight:700; } .hv2 td.hv.neg{ color:#c0392b; font-weight:700; }
.hv2 td.obs{ color:#5b6472; }
.hv2 tbody.mblk{ border-bottom:2px solid #dfe4ec; }
.hv2 tbody.sumblk td{ background:#eef2f8; border-top:3px solid #cbd3e0; }
.hv2 tbody.sumblk td.grp.bb{ background:#d7e8cc; } .hv2 tbody.sumblk td.grp.bh{ background:#cfe0f2; } .hv2 tbody.sumblk td.grp.cel{ background:#dbe3f0; }

/* HV detail — barevné karty pod sebou */
.hvd-wrap{ display:flex; flex-direction:column; gap:16px; max-width:760px; }
.hvd-card{ border:1px solid #e5e9ef; border-radius:12px; padding:14px 18px; border-left-width:6px; }
.hvd-card.bb{ border-left-color:#4b8b3f; background:#fbfdf9; } .hvd-card.bh{ border-left-color:#2f6db4; background:#fafcff; } .hvd-card.cel{ border-left-color:#2f3b52; background:#fafbfd; }
.hvd-card h2{ margin:0 0 10px; font-size:1.1rem; }
.hvd-card.bb h2{ color:#3d6128; } .hvd-card.bh h2{ color:#1F4E79; } .hvd-card.cel h2{ color:#2f3b52; }
.hvd-cols{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:640px){ .hvd-cols{ grid-template-columns:1fr; } }
.hvd-h{ font-size:.74rem; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:#5b6472; margin-bottom:4px; }
.hvd-col.vyn .hvd-h{ color:#3d6128; } .hvd-col.nakl .hvd-h{ color:#9a3b2b; }
.hvd-tbl{ width:100%; border-collapse:collapse; font-size:.86rem; }
.hvd-tbl td{ padding:4px 4px; border-bottom:1px solid #eef1f5; }
.hvd-tbl td.r{ text-align:right; white-space:nowrap; }
.hvd-tbl tfoot td{ border-top:1px solid #cfd6e0; border-bottom:none; font-weight:600; padding-top:6px; }
.hvd-col.vyn tfoot td{ color:#3d6128; } .hvd-col.nakl tfoot td{ color:#9a3b2b; }
.hvd-res{ margin-top:12px; padding:8px 12px; border-radius:8px; font-size:1rem; text-align:right; }
.hvd-res.pos{ background:#e7f4ea; color:#0a7d3c; } .hvd-res.neg{ background:#fbe9e7; color:#c0392b; }

.hist-toggle{ display:inline-block; text-decoration:none; }
.hist-toggle:hover{ text-decoration:none; }

/* ---- Karta dítě: větší datumová pole (šipka nekoliduje s číslem) + nápověda obsazenosti ---- */
.form.compact .datesel{ gap:8px; }
.form.compact .datesel select{ height:40px; font-size:.95rem; padding:6px 30px 6px 12px; background-position:right 10px center; }
.form.compact .datesel .d-day{ min-width:74px; } .form.compact .datesel .d-mon{ min-width:82px; } .form.compact .datesel .d-year{ min-width:96px; }
.rozvrh-grid label .occ-hint{ display:block; margin-top:5px; font-size:.72rem; font-weight:700; color:#2f6db4; text-align:center; background:#eef4fb; border:1px solid #dbe6f4; border-radius:10px; padding:2px 0; }
.rozvrh-grid label .occ-hint.full{ background:#fff0d6; border-color:#f0dcae; color:#8a5a00; }
.rozvrh-grid label .occ-hint.over{ background:#fbe3df; border-color:#eabcb5; color:#b3261e; }
.occ-cap{ margin:8px 2px 0; line-height:1.35; }
/* dvojí obsazenost – drobné popisky */
.muted.sm{ font-size:.72rem; font-weight:400; }
.hv2 .th-note{ font-weight:400; font-size:.66rem; opacity:.85; }
.hv2 td.obs{ white-space:nowrap; min-width:128px; }
.hvd-obs{ margin-top:10px; font-size:.86rem; color:#4a5360; }
.hvd-obs b{ color:#2f3b52; }

/* ---- Výkazy v3: 3řádková hlavička (kategorie přes 2 buňky + jednotky), barvy Mzda/Náklad, podkres skupin ---- */
.ugrid th.cat{ font-size:.66rem; font-weight:700; padding:3px 4px; line-height:1.12; }
.ugrid th.unit{ font-size:.58rem; font-weight:500; color:#5b6472; padding:2px 3px; line-height:1.05; white-space:nowrap; }
.ugrid th.mzhead{ background:#DCEBCF !important; color:#375623; font-weight:700; }
.ugrid th.nkhead{ background:#D8E2F3 !important; color:#2f3b6b; font-weight:700; }
/* podkres řádků dle skupiny (Buddies zeleně, Heroes modře, obě fialově) */
.vyk-tbl tr.row-bb td{ background:#f4f9ef; } .vyk-tbl tr.row-bb td.stick.nm{ background:#e6f0dd; }
.vyk-tbl tr.row-bh td{ background:#eff5fc; } .vyk-tbl tr.row-bh td.stick.nm{ background:#dde9f7; }
.vyk-tbl tr.row-obe td{ background:#f6f2fb; } .vyk-tbl tr.row-obe td.stick.nm{ background:#ece5f6; }
/* kategorie a Mzda/Náklad mají vlastní barvu i na tónovaném řádku (musí být za podkresem) */
.vyk-tbl tr td.c-sv{ background:#FBEEED; } .vyk-tbl tr td.c-dov{ background:#F3F8EB; } .vyk-tbl tr td.c-dok{ background:#FEF9E6; } .vyk-tbl tr td.c-nem{ background:#F2EEF7; } .vyk-tbl tr td.c-ose{ background:#FDF0E6; }
.vyk-tbl tr td.mzd{ background:#eef6ea; } .vyk-tbl tr td.nkl{ background:#eef2f8; }

/* ---- Generátor měsíců: větší pole roku ---- */
.mrow .yr-in{ width:128px; text-align:left; padding:10px 14px; font-size:1rem; }

/* ---- Absence obarvené dle typu (dle výkazu): Dovolená zelená, Doktor žlutá, Nemoc fialová, Ošetř oranžová ---- */
.ugrid td.ucell.abs.abs-d select.uod{ background:#CDE4B5; color:#3d5f23; border-color:#a9cd86; }
.ugrid td.ucell.abs.abs-dokt select.uod{ background:#F5E39B; color:#6b5600; border-color:#e3cd6f; }
.ugrid td.ucell.abs.abs-n select.uod{ background:#D6C9EC; color:#4a3c74; border-color:#b9a6dc; }
.ugrid td.ucell.abs.abs-osetr select.uod{ background:#F6C79A; color:#7a3b12; border-color:#e6b48a; }

/* ================= Rozvrh učitelů — veřejná mobilní stránka ================= */
.rozvrh-body{ margin:0; background:#eef1f6; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif; color:#2a2f3a; }
.rozvrh-wrap{ max-width:820px; margin:0 auto; padding:14px 12px 44px; }
.rz-title{ font-size:1.45rem; margin:6px 2px 2px; }
.rz-pub{ font-size:.74rem; color:#8a94a4; margin:0 2px 12px; }
.rz-empty{ padding:20px; color:#556; }
.rz-week{ background:#fff; border:1px solid #e3e7ee; border-radius:12px; padding:10px 10px 12px; margin-bottom:16px; box-shadow:0 1px 3px rgba(20,30,50,.05); }
.rz-week.akt{ border-top:4px solid #4b8b3f; } .rz-week.next{ border-top:4px solid #d9a441; }
.rz-wlabel{ font-size:1rem; margin:2px 2px 10px; color:#2f3b52; }
.rz-scroll{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
.rz-tbl{ border-collapse:collapse; width:100%; font-size:.82rem; }
.rz-tbl th,.rz-tbl td{ border:1px solid #e5e9ef; padding:6px 7px; text-align:center; white-space:nowrap; }
.rz-tbl th.rz-nm,.rz-tbl td.rz-nm{ text-align:left; position:sticky; left:0; background:#fff; z-index:1; min-width:104px; font-weight:600; }
.rz-dh .rz-date{ font-weight:700; } .rz-dh .rz-day{ font-size:.66rem; color:#7a828f; font-weight:400; }
.rz-dh.sv{ background:#c0392b; color:#fff; } .rz-dh.sv .rz-day{ color:#fff; }
.rz-dh.pr{ background:#7A5AA6; color:#fff; } .rz-dh.pr .rz-day{ color:#fff; }
.rz-sec td{ text-align:left; font-weight:700; font-size:.8rem; padding:5px 8px; }
.rz-sec.g-bb td{ background:#4b8b3f; color:#fff; } .rz-sec.g-bh td{ background:#2f6db4; color:#fff; } .rz-sec.g-obe td{ background:#6b5ca6; color:#fff; }
.rz-row.g-bb td.rz-nm{ background:#eef5e8; } .rz-row.g-bh td.rz-nm{ background:#eaf1fa; } .rz-row.g-obe td.rz-nm{ background:#f0ecf8; }
.rz-cell.work{ font-weight:600; }
.rz-cell.work.g-bb{ background:#DDF0CE; color:#27500A; } .rz-cell.work.g-bh{ background:#D6E6F7; color:#123252; } .rz-cell.work.g-obe{ background:#e7dff5; color:#3d3470; }
.rz-cell.empty{ color:#b6bcc7; }
.rz-cell.off.sv{ background:#f6dbd6; color:#8a3a30; } .rz-cell.off.pr{ background:#E7DEF4; color:#5a4a86; }
.rz-cell.abs{ font-weight:700; }
.rz-cell.abs.abs-d{ background:#CDE4B5; color:#3d5f23; } .rz-cell.abs.abs-dokt{ background:#F5E39B; color:#6b5600; } .rz-cell.abs.abs-n{ background:#D6C9EC; color:#4a3c74; } .rz-cell.abs.abs-osetr{ background:#F6C79A; color:#7a3b12; }
.rz-legend{ font-size:.72rem; color:#6b7280; margin:4px 2px; display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.rz-legend .lg{ padding:2px 8px; border-radius:10px; font-weight:600; }
.rz-legend .lg.abs-d{ background:#CDE4B5; color:#3d5f23; } .rz-legend .lg.abs-dokt{ background:#F5E39B; color:#6b5600; } .rz-legend .lg.abs-n{ background:#D6C9EC; color:#4a3c74; } .rz-legend .lg.abs-osetr{ background:#F6C79A; color:#7a3b12; }

/* publikační tlačítko v měsíci učitelů + admin sdílení */
.pub-bar{ margin:6px 0 10px; display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.pub-btn{ width:auto; margin:0; padding:9px 16px; background:#2f6db4; color:#fff; border:none; border-radius:8px; font-size:.86rem; font-weight:600; cursor:pointer; }
.pub-btn:hover{ filter:brightness(1.05); } .pub-btn:disabled{ opacity:.6; cursor:default; }
.pub-msg{ font-size:.82rem; color:#375623; }
.rz-admin{ max-width:640px; border:1px solid #e5e9ef; border-radius:12px; padding:16px 18px; }
.rz-admin .rz-lbl{ font-size:.82rem; color:#556; font-weight:600; }
.rz-link{ display:flex; gap:8px; margin:6px 0 10px; }
.rz-link input{ flex:1; padding:9px 12px; border:1px solid #cfd6e0; border-radius:8px; font-size:.85rem; background:#f7f9fc; }
.rz-link button{ width:auto; margin:0; padding:9px 16px; border:1px solid #cfd6e0; background:#fff; border-radius:8px; cursor:pointer; }

/* Fixní náklady – součtové řádky per skupina */
.fix-tbl tfoot .fx-sum td{ border-top:2px solid #cbd3e0; font-weight:600; padding:8px 12px; }
.fix-tbl tfoot .fx-sum.bb td{ background:#eef5e8; } .fix-tbl tfoot .fx-sum.bb td.nm{ color:#375623; }
.fix-tbl tfoot .fx-sum.bh td{ background:#eaf1fa; } .fix-tbl tfoot .fx-sum.bh td.nm{ color:#1F4E79; }

/* Seznam dětí – řádek obsazenosti k dnešku (per den, vč. adaptací / platící) */
.deti-sheet tr.occ-row td{ background:#f5f8f2; border-top:2px solid #d7e2cc; padding:5px 6px; }
.deti-sheet tr.occ-row.r-bh td{ background:#eef3fa; border-top-color:#cddbee; }
.deti-sheet tr.occ-row .occ-lbl{ font-weight:600; color:#4a5360; font-size:.82rem; }
.deti-sheet tr.occ-row .occ-note{ font-size:.66rem; color:#8a94a4; }
.deti-sheet tr.occ-row .occ2 .of{ display:block; font-weight:700; color:#2f5d23; font-size:.82rem; }
.deti-sheet tr.occ-row.r-bh .occ2 .of{ color:#1f4e79; }
.deti-sheet tr.occ-row .occ2 .op{ display:block; font-size:.7rem; color:#8a94a4; }

/* Data – záloha/obnova */
.data-cards{ display:grid; grid-template-columns:1fr 1fr; gap:16px; max-width:760px; }
@media (max-width:680px){ .data-cards{ grid-template-columns:1fr; } }
.data-card{ border:1px solid #e5e9ef; border-radius:12px; padding:16px 18px; }
.data-card h2{ margin:0 0 8px; font-size:1.05rem; }
.data-btn{ width:auto; margin:6px 0 0; padding:9px 16px; background:#2f6db4; color:#fff; border:none; border-radius:8px; font-size:.88rem; cursor:pointer; display:inline-block; }
.data-btn.warn{ background:#b06a00; }
.data-import{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:6px; }
.imp-msg{ font-size:.84rem; margin:8px 0 0; }
.imp-msg.ok{ color:#0a7d3c; } .imp-msg.err{ color:#c0392b; }
.side-foot .ver{ font-size:.68rem; color:#8a94a4; }

/* Rozvrh sdílení – link + QR + pokročilé nastavení */
.rz-share{ display:flex; gap:20px; align-items:flex-start; flex-wrap:wrap; }
.rz-share-left{ flex:1; min-width:280px; }
.rz-qr{ display:flex; flex-direction:column; align-items:center; gap:4px; }
.rz-qr img{ width:170px; height:170px; border:1px solid #e5e9ef; border-radius:10px; background:#fff; padding:6px; }
.rz-adv{ margin-top:22px; border-top:1px solid #eef1f5; padding-top:10px; }
.rz-adv summary{ cursor:pointer; font-weight:600; color:#556; font-size:.9rem; list-style:revert; }
.rz-adv summary:hover{ color:#2f3b52; }
.rz-adv-body{ margin-top:10px; max-width:520px; }

/* ---- HV v3: menší písmo (-20 %) + podbarvené řádky skupin ---- */
.hv2{ font-size:.72rem; }
.hv2 th,.hv2 td{ padding:5px 9px; }
.hv2 th{ font-size:.66rem; }
.hv2 th.blk{ font-size:.7rem; }
.hv2 th.sub{ font-size:.58rem; }
.hv2 .th-note{ font-size:.55rem; }
.hv2 tbody.mblk tr.r-bb td{ background:#f2f8ec; }
.hv2 tbody.mblk tr.r-bh td{ background:#ecf3fc; }
.hv2 tbody.mblk tr.r-bb td.grp.bb{ background:#dcecc9; }
.hv2 tbody.mblk tr.r-bh td.grp.bh{ background:#d5e6f7; }
.hv2 tbody.mblk tr td.nm{ background:#fafbfd; }

/* Učitelé list: nižší hlavička + menší vycentrované pilulky druhu smlouvy */
.ucitel-sheet tr.grp-hdr td{ padding:3px 6px; font-size:.68rem; line-height:1.08; vertical-align:middle; white-space:normal; }
.ucitel-sheet .druh-pill{ font-size:.66rem; padding:2px 8px; line-height:1.25; }
.ucitel-sheet td.ctr{ text-align:center; vertical-align:middle; }

/* Rozvrh sdílení – tlačítko kopírovat odkaz */
.rz-link{ align-items:center; }
.rz-link .copy-btn{ white-space:nowrap; padding:10px 14px; background:#eef2f8; border:1px solid #cfd6e0; border-radius:8px; cursor:pointer; font-size:.85rem; color:#2f3b52; font-weight:600; }
.rz-link .copy-btn:hover{ background:#e5ebf5; }

/* HV detail v2: podskupiny s mezisoučty a barvami */
.hvd-grp{ margin-bottom:12px; }
.hvd-glbl{ font-size:.64rem; font-weight:700; text-transform:uppercase; letter-spacing:.4px; padding:3px 7px; border-radius:6px 6px 0 0; }
.hvd-grp.rodice .hvd-glbl{ background:#FBEEE1; color:#9a4a17; }
.hvd-grp.stat .hvd-glbl{ background:#F1EAFB; color:#5b2b86; }
.hvd-grp.mzdy .hvd-glbl{ background:#E6F0DA; color:#2f5d23; }
.hvd-grp.fixni .hvd-glbl{ background:#FBF1CE; color:#6b5600; }
.hvd-grp .hvd-tbl tfoot td{ font-weight:600; border-top:1px solid #d3d9e2; }
.hvd-grp.rodice .hvd-tbl tfoot td{ background:#FBEEE1; color:#9a4a17; }
.hvd-grp.stat .hvd-tbl tfoot td{ background:#F1EAFB; color:#5b2b86; }
.hvd-grp.mzdy .hvd-tbl tfoot td{ background:#E6F0DA; color:#2f5d23; }
.hvd-grp.fixni .hvd-tbl tfoot td{ background:#FBF1CE; color:#6b5600; }
.hvd-total{ display:flex; justify-content:space-between; align-items:center; padding:7px 7px; border-top:2px solid #cbd3e0; margin-top:8px; font-size:.92rem; }
.hvd-total.vyn-total{ color:#3d6128; } .hvd-total.nakl-total{ color:#9a3b2b; }

/* Děti — historie (archiv ukončených) */
.deti-hist{ margin:18px 0 8px; border:1px solid #e2e6ee; border-radius:10px; padding:10px 14px; background:#fafbfd; }
.deti-hist summary{ cursor:pointer; font-weight:700; color:#3a4a63; font-size:.92rem; }
.hist-tbl{ width:100%; border-collapse:collapse; margin-top:8px; font-size:.86rem; }
.hist-tbl th{ text-align:left; color:#6b7686; font-weight:600; border-bottom:1px solid #e2e6ee; padding:5px 8px; }
.hist-tbl td{ padding:5px 8px; border-bottom:1px solid #eef1f6; }
.hist-tbl td.ctr, .hist-tbl th.ctr{ text-align:center; }
.hist-grp{ display:inline-block; padding:1px 8px; border-radius:10px; font-size:.72rem; font-weight:600; }
.hist-grp.bb{ background:#e7f2df; color:#3a6127; } .hist-grp.bh{ background:#e2ecfb; color:#274b7a; }

/* Fixní náklady — hvězdička budoucí změny ceny */
.fx-star{ color:#e0a400; cursor:help; font-size:1rem; margin-left:5px; vertical-align:middle; }

/* Fixní náklady — vlastní bublina u hvězdičky (spolehlivá, hned) */
.fx-star{ position:relative; display:inline-block; }
.fx-star .fx-tip{ display:none; position:absolute; left:50%; bottom:145%; transform:translateX(-50%); white-space:nowrap; background:#25303f; color:#fff; padding:6px 10px; border-radius:6px; font-size:.8rem; font-weight:400; line-height:1.3; box-shadow:0 4px 14px rgba(0,0,0,.22); z-index:60; }
.fx-star .fx-tip b{ color:#ffe08a; }
.fx-star .fx-tip::after{ content:''; position:absolute; top:100%; left:50%; transform:translateX(-50%); border:5px solid transparent; border-top-color:#25303f; }
.fx-star:hover .fx-tip, .fx-star:focus .fx-tip{ display:block; }

/* Karta dítěte — budoucí změna rozvrhu */
#budouciBox .budouci-add{ display:flex; flex-wrap:wrap; align-items:flex-end; gap:10px; }
#budouciBox .bd-date, #budouciBox .bd-day{ display:flex; flex-direction:column; gap:3px; font-size:.72rem; color:#4a5568; }
#budouciBox .bd-day span, #budouciBox .bd-date span{ font-weight:600; }
#budouciBox .bd-day select, #budouciBox .bd-date input{ padding:5px 7px; }
#budouciBox .bd-addbtn{ padding:7px 14px; background:#3d6f8e; color:#fff; border:none; border-radius:7px; cursor:pointer; font-weight:600; }
#budouciBox .bd-addbtn:hover{ background:#345f7a; }
#budouciBox .bd-list{ width:100%; border-collapse:collapse; margin-top:10px; font-size:.85rem; }
#budouciBox .bd-list td{ padding:5px 8px; border-bottom:1px solid #eef1f6; }
#budouciBox .bd-od{ font-weight:600; white-space:nowrap; }
#budouciBox .bd-actcell{ text-align:right; }
#budouciBox .bd-del{ border:1px solid #e0b4b4; background:#fff; color:#b23; border-radius:6px; cursor:pointer; padding:2px 8px; }
.sched-star{ color:#3d7fbf; }

/* Karta dítěte — větší ovládací prvky budoucího rozvrhu */
#budouciBox .budouci-add{ gap:14px; }
#budouciBox .bd-date span, #budouciBox .bd-day span{ font-size:.8rem; }
#budouciBox .bd-date input{ font-size:1rem; padding:10px 12px; min-width:170px; }
#budouciBox .bd-day select{ font-size:1rem; padding:10px 12px; min-width:64px; text-align:center; }
#budouciBox .bd-addbtn{ font-size:1rem; padding:11px 20px; align-self:flex-end; }

/* Budoucí rozvrh — den/měsíc/rok + čitelné výběry dnů (oprava ořezu) */
#budouciBox .bd-dmy{ display:flex; gap:6px; }
#budouciBox .bd-dmy select{ font-size:1rem; padding:8px 8px; line-height:1.3; }
#budouciBox .bd-day select{ font-size:1rem; padding:8px 10px; line-height:1.3; min-width:62px; text-align:center; text-align-last:center; }

/* Budoucí rozvrh — SROVNAT s ostatními daty (dateTrio) a týdenním rozvrhem */
#budouciBox .budouci-add{ display:flex; flex-wrap:wrap; align-items:flex-end; gap:18px; }
#budouciBox .bd-date{ display:flex; flex-direction:column; gap:3px; }
#budouciBox .bd-date > span{ font-weight:600; font-size:.8rem; color:#4a5568; }
#budouciBox .bd-date .datesel{ margin-top:0; }
#budouciBox .bd-day{ display:flex; flex-direction:column; gap:4px; font-size:.8rem; color:#4a5568; }
#budouciBox .bd-day > span{ font-weight:600; }
#budouciBox .bd-day select.sched{ height:40px; min-width:74px; margin:0; padding:6px 30px 6px 12px; font-size:.95rem; line-height:normal; text-align:left; text-align-last:left; }
#budouciBox .bd-addbtn{ height:40px; font-size:1rem; padding:0 20px; align-self:flex-end; }

/* Hvězdička v seznamu dětí — bublina nesmí být oříznutá buňkou */
.deti-sheet td.nm{ overflow:visible; }
.deti-sheet .fx-star .fx-tip{ white-space:normal; width:230px; text-align:left; }

/* Karta dítěte — odznak stavu změny rozvrhu */
/* Nabídka dodatku po uložení změny rozvrhu. Širší než běžný mini-dialog: tři tlačítka
   se do 330 px nevejdou a „Dodatek (PDF)" padal sám na druhý řádek. */
.mini-card.dod-card{ width:430px; }
.mini-btns.dod-btns{ align-items:center; }
.mini-btns.dod-btns .btn-ghost{ padding:8px 14px; font-size:.85rem; white-space:nowrap; }

/* POZOR NA JMÉNA TŘÍD U DROBNOSTÍ. Odznaky se jmenovaly `fut` a `app`. Jenže `.app` je
   třída celé stránky (`display:grid; min-height:100vh`, hned nahoře v tomhle souboru),
   takže odznak „platí / historie" zdědil výšku obrazovky a natáhl řádek tabulky přes
   celou stránku — zvenčí to vypadalo jako úplně rozbitá tabulka. Přišlo se na to až
   18. 9. 2026, kdy se do testovací instance dostala data se změnou rozvrhu s datem
   v minulosti; do té doby měl kdekdo jen odznak `fut`, se kterým se nic nesráželo.
   Odznaky mají proto předponu `bd-` a `min-height:0` jako pojistku. */
#budouciBox .bd-badge{ display:inline-block; margin-left:6px; padding:1px 8px; border-radius:10px; font-size:.7rem; font-weight:600; min-height:0; }
#budouciBox .bd-badge.bd-fut{ background:#e2ecfb; color:#274b7a; }
#budouciBox .bd-badge.bd-plat{ background:#eef1f6; color:#6b7686; }

/* Seznam učitelů/dětí — sloupec Ukončení (datum + malý červený křížek) */
.end-cell{ white-space:nowrap; }
.end-cell .end-date{ font-size:.8rem; color:#8a3b2f; margin-right:6px; }
.end-x{ border:1px solid #e6b0aa; background:#fff; color:#c0392b; border-radius:6px; cursor:pointer; padding:1px 7px; font-size:.9rem; line-height:1.2; }
.end-x:hover{ background:#fdecea; }

/* Učitelé — sloupec datum ukončení (klik = dialog) */
.uk-datecell{ cursor:pointer; font-size:.8rem; color:#8a3b2f; }
.uk-datecell:empty::before{ content:'—'; color:#b7c0cc; }

/* Historie — akce vrátit / smazat natrvalo */
.end-hist-acts{ white-space:nowrap; }
.end-hist-acts .inline{ display:inline; margin-left:6px; }
.btn-ghost.sm{ padding:2px 8px; font-size:.75rem; }

/* Tlačítko Zpět (undo) v hlavičce seznamu */
.kundo-btn{ background:#eef2f8; border:1px solid #cfd6e0; color:#2f3b52; border-radius:8px; padding:7px 14px; font-weight:600; cursor:pointer; font-size:.9rem; margin-right:auto; margin-left:14px; }
.kundo-btn:hover{ background:#e3ebf5; }

/* Bublina s rozpisem výpočtu částky (měsíc dětí) */
.tipcell{ cursor:help; }
.cell-tip{ position:absolute; z-index:9999; max-width:340px; background:#25303f; color:#fff; padding:9px 12px; border-radius:8px; font-size:.82rem; line-height:1.45; font-weight:400; box-shadow:0 6px 22px rgba(0,0,0,.28); pointer-events:none; }
.cell-tip b{ color:#ffe08a; }

/* Dovolené (admin) */
.dov-set{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin:6px 0 14px; padding:8px 12px; background:#f6f8fb; border:1px solid #e6eaf0; border-radius:8px; }
.dov-h{ font-size:1.05rem; margin:18px 0 8px; }
.dov-badge{ background:#e8613a; color:#fff; border-radius:10px; padding:1px 8px; font-size:.75rem; margin-left:6px; }
.dov-tbl td.nm{ font-weight:600; }
.dov-add{ margin:10px 0 4px; } .dov-add summary{ cursor:pointer; color:#3d6f8e; font-weight:600; font-size:.9rem; }
.dov-addform{ display:flex; gap:12px; align-items:flex-end; flex-wrap:wrap; margin-top:8px; }
.dov-addform label{ display:flex; flex-direction:column; font-size:.75rem; color:#556; gap:3px; }
.dov-legend{ display:flex; align-items:center; gap:8px; font-size:.8rem; color:#556; margin:6px 0 10px; }
.dov-legend .lg{ display:inline-block; width:14px; height:14px; border-radius:3px; border:1px solid rgba(0,0,0,.12); }
.lg.d-past,.dov-d.d-past{ background:#d3e3cc; } .lg.d-fut,.dov-d.d-fut{ background:#8ccf78; } .lg.d-req,.dov-d.d-req{ background:#ffd27a; }
.dov-card{ border:1px solid #e4e8ef; border-radius:10px; padding:12px 14px; margin-bottom:14px; background:#fff; }
.dov-card-h{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:8px; }
.dov-link{ margin-left:auto; }
.dov-vykaz{ display:flex; gap:16px; flex-wrap:wrap; font-size:.85rem; margin-bottom:10px; align-items:center; }
.dov-vykaz .dov-zbyva b{ color:#1f7a2e; }
.dov-year{ display:flex; flex-wrap:wrap; gap:10px; }
.dov-mon{ width:150px; }
.dov-mon-h{ font-size:.78rem; font-weight:700; color:#44506a; margin-bottom:3px; }
.dov-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:2px; }
.dov-dl{ font-size:.6rem; color:#9aa4b2; text-align:center; }
.dov-d{ font-size:.62rem; text-align:center; padding:2px 0; border-radius:3px; color:#2b3442; background:#f4f6f9; }
.dov-d.empty{ background:transparent; } .dov-d.we{ color:#b9c0cb; background:#fafbfc; }
.dov-stav.schvaleno{ color:#1f7a2e; font-weight:600; } .dov-stav.zamitnuto{ color:#b3261e; font-weight:600; }

/* Dovolené — větší číselná pole + datum trio v přidání žádosti */
.tydny-in{ width:72px; padding:5px 8px; font-size:.95rem; border:1px solid #cfd6e0; border-radius:8px; }
.tydny-in.sm2{ width:80px; padding:6px 8px; font-size:.95rem; }
.dov-addform .dtl{ display:flex; flex-direction:column; gap:3px; font-size:.75rem; color:#556; } .dov-addform .dtl>span{ font-weight:600; }
.dov-addform .datesel{ margin-top:0; }

/* Dovolené — tvary absencí v kalendáři (■ dovolená, ▲ lékař, ● ošetřovačka, ◆ nemoc), barva = stav */
.dov-d{ position:relative; }
.dov-d .dn{ position:absolute; top:0; right:2px; font-size:.48rem; line-height:1; font-style:normal; opacity:.5; } .dov-d .al{ font-weight:800; font-size:.8rem; color:#22303a; }
.dov-d.abs-past{ background:#e7ecf1; } .dov-d.abs-past .am{ color:#8a97a5; }
.dov-d.abs-fut{ background:#dcefd6; } .dov-d.abs-fut .am{ color:#2f8f3e; }
.dov-d.abs-req{ background:#fdeecb; } .dov-d.abs-req .am{ color:#c98618; }
.dov-legend .am{ font-style:normal; margin:0 2px 0 8px; color:#44506a; }
.dov-legend .lg.abs-past{ background:#e7ecf1; } .dov-legend .lg.abs-fut{ background:#dcefd6; } .dov-legend .lg.abs-req{ background:#fdeecb; }

/* Dovolené — výraznější stavové barvy (override) */
.dov-d.abs-past{ background:#f2a6a1; }
.dov-d.abs-fut{ background:#8ed680; }
.dov-d.abs-req{ background:#ffd873; }
.dov-legend .lg.abs-past{ background:#f2a6a1; } .dov-legend .lg.abs-fut{ background:#8ed680; } .dov-legend .lg.abs-req{ background:#ffd873; }
.dov-link .btn-ghost{ text-decoration:none; }

/* Dovolené — online (Cloudflare) blok */
.dov-online{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:4px 0 12px; }
.dov-online code{ background:#eef2f7; padding:1px 6px; border-radius:5px; font-size:.8rem; }
.dov-cf{ width:100%; } .dov-cf summary{ cursor:pointer; color:#3d6f8e; font-weight:600; font-size:.85rem; }
.dov-cf p{ margin:6px 0; }

/* Dovolené — jméno učitele jako odkaz */
.dov-name{ text-decoration:none; color:#25303f; } .dov-name:hover b{ text-decoration:underline; color:#2e5e8c; }

/* Učitelský grid — obě buňky dne (Od i Do) stejnou barvou dle typu absence */
.ugrid td.ucell.abs.abs-d select.uod, .ugrid td.ucell.abs.abs-d select.udo{ background:#CDE4B5; color:#3d5f23; border-color:#a9cd86; }
.ugrid td.ucell.abs.abs-dokt select.uod, .ugrid td.ucell.abs.abs-dokt select.udo{ background:#F5E39B; color:#6b5600; border-color:#e3cd6f; }
.ugrid td.ucell.abs.abs-n select.uod, .ugrid td.ucell.abs.abs-n select.udo{ background:#D6C9EC; color:#4a3c74; border-color:#b9a6dc; }
.ugrid td.ucell.abs.abs-osetr select.uod, .ugrid td.ucell.abs.abs-osetr select.udo{ background:#F6C79A; color:#7a3b12; border-color:#e6b48a; }

/* Dovolené — připojení k existujícímu online nasazení */
.dov-conn{ display:flex; flex-wrap:wrap; align-items:flex-end; gap:10px; margin-top:6px; }
.dov-conn label{ display:flex; flex-direction:column; font-size:.72rem; color:#556; gap:3px; }
.dov-conn input{ padding:6px 8px; border:1px solid #cfd6e0; border-radius:7px; font-size:.85rem; min-width:240px; }
/* Bublina "Přidat změnu směn" na kartě učitele */
.bubble-btn{ display:inline-block; margin-top:6px; padding:13px 22px; background:#3b82f6; color:#fff; border:none; border-radius:12px; font-weight:700; font-size:1.02rem; text-decoration:none; cursor:pointer; box-shadow:0 2px 8px rgba(59,130,246,.28); }
.bubble-btn:hover{ background:#2f6fd6; }


/* --- Testovací instance + automatická synchronizace dovolených --- */
.inst-test{ background:#fdf0d5; border:1px solid #e0b872; border-left:6px solid #C97F2C; color:#6b4a15;
  padding:8px 12px; border-radius:8px; margin:0 0 12px; font-size:.86rem; line-height:1.45; }
.inst-test code{ background:#fff6e4; padding:1px 5px; border-radius:4px; }
/* Hvězdička v měsíci učitelů: ten den má absenci v jiné skupině. Schválně nenápadná —
   nic neblokuje, jen upozorňuje. Kdyby byla červená, admin by ji četl jako zákaz. */
.abs-jinde{ display:inline-block; margin:0 0 2px; padding:0 6px; border-radius:8px;
  background:#f3f0e4; color:#8a7a3d; font-size:.66rem; font-weight:700; cursor:help; white-space:nowrap; }

/* Poškozená databáze — jediné hlášení, které má přebít všechno ostatní. */
.db-vada{ background:#fdecea; border:1px solid #e6b0aa; border-left:6px solid #b3261e; color:#7a1c14;
  padding:10px 12px; border-radius:8px; margin:0 0 12px; font-size:.9rem; line-height:1.45; }
.db-vada a{ color:#7a1c14; font-weight:600; }
.zdravi{ margin:0; padding:8px 12px; border-radius:8px; font-size:.9rem; line-height:1.45; }
.zdravi.ok{ background:#eaf6ec; border:1px solid #b7ddbf; color:#1e5b2c; }
.zdravi.vada{ background:#fdecea; border:1px solid #e6b0aa; color:#7a1c14; }
.dov-auto{ margin-top:10px; padding-top:10px; border-top:1px solid #e6eaf0; display:flex; flex-direction:column; gap:6px; }
.dov-auto label{ margin:0; font-size:.88rem; }
.dov-rezim select{ display:inline-block; width:auto; margin-left:6px; padding:2px 8px; font-size:.85rem; height:auto; }
.dov-auto-cb{ display:flex; align-items:center; gap:6px; }
.dov-auto-cb input{ margin:0; }
.dov-err{ color:#c0392b; }


/* --- Dovolené: kompaktní horní lišta (nárok + synchronizace + proklik na pokročilé) --- */
.dov-bar{ display:flex; align-items:center; justify-content:space-between; gap:12px 18px; flex-wrap:wrap;
  margin:6px 0 14px; padding:7px 12px; background:#f6f8fb; border:1px solid #e6eaf0; border-radius:8px; }
.dov-bar .dov-narok{ display:flex; align-items:center; gap:8px; margin:0; flex-wrap:wrap; }
.dov-bar .dov-narok label{ margin:0; font-size:.88rem; display:flex; align-items:center; gap:6px; }
.dov-bar .dov-narok .tydny-in{ margin:0; }
.dov-bar .dov-bar-r{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.dov-bar button{ margin:0; }
.dov-pokr{ font-size:.82rem; color:#3d6f8e; font-weight:600; text-decoration:none; white-space:nowrap; }
.dov-pokr:hover{ text-decoration:underline; }
.dov-bar .dov-err{ flex-basis:100%; }
/* --- Dovolené: pokročilá nastavení (samostatná stránka) --- */
.pokr-box{ padding:10px 14px; background:#f6f8fb; border:1px solid #e6eaf0; border-radius:8px; margin:0 0 16px;
  display:flex; flex-direction:column; gap:8px; align-items:flex-start; }
.pokr-box p{ margin:0; }
.pokr-box code{ background:#eef2f7; padding:1px 6px; border-radius:5px; font-size:.8rem; }


/* --- Druhá smlouva (DPP vedle pracovní smlouvy) na kartě učitele --- */
.dpp2-box{ margin:10px 0 4px; padding:10px 12px; background:#f6f8fb; border:1px solid #e6eaf0; border-radius:8px; }
.dpp2-cb{ display:flex; align-items:center; gap:8px; margin:0; font-size:.92rem; }
.dpp2-cb input{ margin:0; }
.dpp2-fields{ display:flex; flex-wrap:wrap; gap:12px; margin-top:10px; }
.dpp2-fields label{ display:flex; flex-direction:column; gap:3px; margin:0; font-size:.8rem; color:#556; }
.dpp2-fields input{ width:180px; padding:6px 8px; border:1px solid #cfd6e0; border-radius:7px; font-size:.95rem; }
.dpp2-fields p{ flex-basis:100%; margin:0; }
.dpp2-info{ flex-basis:100%; padding:7px 10px; border-radius:7px; font-size:.85rem; }
.dpp2-info.ok{ background:#e6f4ea; border:1px solid #b7ddc2; color:#245c33; }
.dpp2-info.neutral{ background:#eef2f7; border:1px solid #dbe2ea; color:#5a6472; }


/* --- Admin čas (administrativa uvnitř směny) --- */
.shiftcell{ position:relative; }
.adm-ico{ padding:1px 5px; line-height:1.25; font-size:.6rem; font-weight:700;
  border:1px solid #cfd6e0; background:#fff; color:#8a93a0; border-radius:5px; cursor:pointer; }
.adm-ico:hover{ border-color:#D9B94A; color:#6b5600; }
/* na kartě učitele: ikona a pod ní čas, ať to nevybíhá z rámečku */
.adm-wrap{ display:flex; flex-direction:column; align-items:center; gap:1px; margin-left:6px; min-width:0; }
.adm-wrap .adm-txt{ margin:0; font-size:.56rem; line-height:1.2; max-width:96px; white-space:normal; text-align:center; }
.rozvrh-grid.uc{ max-width:470px; }
.rozvrh-grid.uc .rday{ gap:8px; }
.adm-ico.on{ opacity:1; background:#F7E9B0; border-color:#D9B94A; color:#6b5600; }
.adm-txt{ display:block; font-size:.55rem; font-weight:700; color:#6b5600; background:#F7E9B0;
  border-radius:4px; margin:2px 0 0; padding:0 1px; line-height:1.25; letter-spacing:-.2px; }
.adm-txt.hidden{ display:none; }
.adm-row{ display:flex; align-items:flex-end; gap:8px; margin-top:6px; }
.adm-row label{ display:flex; flex-direction:column; gap:2px; margin:0; font-size:.72rem; color:#556; }
.adm-row select{ padding:4px 6px; font-size:.9rem; height:auto; margin:0; }
.adm-del{ border:1px solid #e3c3c0; background:#fdf2f1; color:#a33; border-radius:6px; padding:3px 7px; cursor:pointer; }
/* den s administrativou v měsíčním gridu */
.ucell.adm-day{ background:#FBF0C4 !important; }

.adm-leg{ background:#FBF0C4; border:1px solid #D9B94A; color:#6b5600; border-radius:4px; padding:0 5px; font-weight:600; }


/* --- Doladění vzhledu (14. 8. 2026) --- */
/* Měsíc učitelů: den s administrativou má i ŽLUTOU směnu, ať je nestandard vidět na první pohled.
   Ruční změna času (.manual) má přednost — ta musí zůstat červená. */
.ugrid td.ucell.adm-day .ubub{ background:#FBF0C4; }
.ugrid td.ucell.adm-day:not(.manual) select.uod, .ugrid td.ucell.adm-day:not(.manual) select.udo{
  background:#F7E9B0 !important; color:#6b5600 !important; border-color:#D9B94A !important; font-weight:700; }
/* Seznam učitelů: datum ukončení stejně velké jako datum nástupu */
.ucitel-sheet td.uk-datecell{ font-size:inherit; }
/* Poslední sloupec (křížek) — žádný text kolem tlačítka */
.ucitel-sheet tr > td:last-child{ font-size:0; }
.ucitel-sheet tr > td:last-child .end-x{ font-size:.85rem; }


/* --- Podrobný výkaz jednoho učitele (den po dni) --- */
/* Tabulka se roztahuje jen na potřebnou šířku. Sloupce s hodinami (za „Odprac.") jsou mírně
   užší než zbytek — levá část tabulky zůstává tak, jak byla. */
.det-tbl{ font-size:.86rem; width:auto; min-width:0; }
.det-tbl th{ font-size:.72rem; line-height:1.2; vertical-align:bottom; }
.det-tbl th.c-adm, .det-tbl th.c-dov, .det-tbl th.c-dok, .det-tbl th.c-nem, .det-tbl th.c-ose, .det-tbl th.c-sv{ padding-left:5px; padding-right:5px; }
.det-tbl td.c-adm, .det-tbl td.c-dov, .det-tbl td.c-dok, .det-tbl td.c-nem, .det-tbl td.c-ose, .det-tbl td.c-sv{ padding-left:5px; padding-right:5px; }
.det-tbl td.den{ white-space:nowrap; }
.det-tbl td.sm-cell{ white-space:nowrap; }
.det-tbl tr.d-po td{ background:#FCF6EF; } .det-tbl tr.d-pa td{ background:#F1F8F7; }
.det-tbl tr.d-sv td{ background:#f9e7e3; } .det-tbl tr.d-pr td{ background:#efe8f8; }
.det-tbl .c-adm{ background:#FBF0C4; } .det-tbl th.c-adm{ background:#F7E9B0; color:#2b2200; font-weight:700; }
.det-tbl .abs-p{ display:inline-block; min-width:20px; text-align:center; font-weight:700; background:#FAD9C0; color:#7a3b12; border-radius:5px; padding:0 5px; }
.det-tbl .adm-inline{ background:#F7E9B0; color:#6b5600; font-weight:700; border-radius:4px; padding:0 4px; font-size:.76rem; }
.det-tbl tr.sum td{ border-top:2px solid #cbd3e0; background:#eef2f7; font-size:.9rem; }
.det-tbl tr.sum2 td{ background:#f7f9fc; font-size:.78rem; }
.det-money{ max-width:640px; font-size:.9rem; }
.det-money tr.sum td{ border-top:2px solid #cbd3e0; background:#eef7ee; }
.det-money td.r{ text-align:right; }
.obe-bb{ background:#DDF0CE; color:#27500A; } .obe-bh{ background:#D6E6F7; color:#12314a; }

.det-money tr.minus td{ color:#8a3b2f; }
.det-money tr.muted-row td{ font-size:.78rem; padding-top:2px; padding-bottom:2px; }

/* Přesčas ve výkazu */
.uc-vykaz th.c-pre{ background:#3f5a86; }
.uc-vykaz td.c-pre{ background:#eaf0f9; }

/* Neplacené volno (prázdniny nepokryté absencí) */
.det-tbl .c-nep{ background:#f3eef8; } .det-tbl th.c-nep{ background:#E7DEF4; color:#3a2d55; }
.det-tbl .nep-p{ display:inline-block; font-weight:700; background:#E7DEF4; color:#3a2d55; border-radius:5px; padding:0 6px; }
.ugrid td.ucell.off.pr .ubub{ background:transparent; padding:2px; }
.ugrid td.ucell.off.pr select.uod{ width:60px; background:#fff; }
.ugrid td.ucell.off.pr.abs select.uod{ background:#FAD9C0; color:#7a3b12; border-color:#e6b48a; font-weight:700; }

/* ŠIPKA U ROZBALOVÁTEK — systémová oprava.
   Pico si na vlastní šipku rezervuje místo přes padding-inline-end. Jakmile někde napíšeme
   zkrácené `padding: 4px 10px`, tuhle rezervu to přemaže a šipka se položí na text.
   Proto: kdekoli se rozbalovátko používá samostatně (ne v hustém gridu), musí mít
   padding-right aspoň 2,2rem a šipku odsazenou od kraje. Držet se toho i u nových stránek. */
.det-mes select, .vyk-pick select, .dov-rezim select, .adm-row select,
.datesel.big select, .praz-dialog .drow select{
  padding-right:2.2rem; background-position:right .75rem center;
}

/* JEDNOTNÝ VZHLED VÝBĚRU MĚSÍCE — modrá pilulka. Používá se v Učitelé výkaz, v podrobném
   výkazu učitele i v generátoru v Měsíce (děti) / Měsíce (učitelé), ať to vypadá všude stejně. */
.det-mes select, .vyk-pick select, .mrow.genrow select{
  width:auto; min-width:170px; margin:0; height:auto;
  padding:7px 2.2rem 7px 14px; font-size:1rem; font-weight:600;
  color:#12314a; background-color:#E6F1FB; border:1px solid #85B7EB; border-radius:9px;
  background-position:right .75rem center;
}
.det-mes select:hover, .vyk-pick select:hover, .mrow.genrow select:hover{ background-color:#d9eaf9; border-color:#378ADD; }
.mrow.genrow .yr-in{ width:104px; text-align:center; margin:0; height:auto;
  padding:7px 10px; font-size:1rem; font-weight:600;
  color:#12314a; background-color:#E6F1FB; border:1px solid #85B7EB; border-radius:9px; }
.mrow.genrow .yr-in:hover{ background-color:#d9eaf9; border-color:#378ADD; }
.mrow.genrow{ gap:10px; }

/* Přepínač měsíce přímo v podrobném výkazu */
.det-mes{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; margin:4px 0 14px; font-size:.95rem; }
.det-mes label{ display:flex; align-items:center; gap:10px; margin:0; font-weight:600; color:#3a424e; }
.det-mes a{ color:#3d6f8e; font-weight:600; }


/* --- Dělený den: buňka se dvěma dvojicemi časů + dialog --- */
.ugrid td.ucell.delen{ cursor:pointer; }
.ugrid td.ucell.delen .ubub{ display:flex; flex-direction:column; gap:2px; padding:2px; background:transparent; }
.ugrid td.ucell.delen .usek{ display:block; font-size:.62rem; font-weight:700; line-height:1.35;
  border-radius:5px; padding:1px 3px; white-space:nowrap; }
.ugrid td.ucell.delen .usek b{ font-weight:800; }
.usek.u-prace{ background:#DDF0CE; color:#27500A; border:1px solid #b6d79a; }
.sec.bh .usek.u-prace{ background:#D6E6F7; color:#12314a; border-color:#a9c5e6; }
.usek.u-d{ background:#CDE4B5; color:#3d5f23; border:1px solid #a9c98c; }
.usek.u-dokt{ background:#F5E39B; color:#6b5600; border:1px solid #d9c25a; }
.usek.u-n{ background:#D6C9EC; color:#4a3c74; border:1px solid #b3a0d6; }
.usek.u-osetr{ background:#F6C79A; color:#7a3b12; border:1px solid #e0a469; }
.den-modal{ min-width:380px; max-width:520px; }
.den-radio{ display:flex; align-items:center; gap:8px; margin:0 0 6px; font-size:.92rem; }
.den-radio input{ margin:0; }
.den-cast{ margin:6px 0 0; padding:10px 12px; background:#f6f8fb; border:1px solid #e6eaf0; border-radius:8px; }
.den-row{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:8px; }
.den-row:last-child{ margin-bottom:0; }
.den-row .den-lbl{ min-width:132px; font-size:.82rem; font-weight:600; color:#4a5360; }
.den-row label{ display:flex; align-items:center; gap:6px; margin:0; font-size:.82rem; color:#556; }
.den-row select{ width:auto; margin:0; height:auto; padding:5px 2.2rem 5px 10px; background-position:right .7rem center; font-size:.9rem; }
.ugrid select.uod option.rozopt{ font-weight:700; color:#2e5e8c; }

.det-tbl .usek-inline{ display:inline-block; border-radius:5px; padding:0 5px; font-weight:600; }
.det-tbl .usek-inline.u-prace{ background:#e8f1e2; color:#27500A; }
.det-tbl .usek-inline.u-abs{ background:#FAD9C0; color:#7a3b12; }

.zal-cesta{ margin:8px 0 0; line-height:1.7; }
.zal-cesta code{ background:#eef2f7; padding:2px 7px; border-radius:5px; }
.zal-cesta .btn-ghost.sm{ margin-left:8px; }

/* ================= KALENDÁŘ (kdate.js) — nahrazuje rollery den/měsíc/rok =================
   Barvy schválně stejné jako v měsíčních gridech: Po oranžová, Pá tyrkysová,
   svátek červená, prázdniny fialová. Admin tak pozná pondělí/pátek na první pohled. */
.kdate{ position:relative; display:inline-block; }

/* tlačítko s hodnotou */
.kdate-btn{
  width:auto; margin:0; display:inline-flex; align-items:center; gap:8px;
  padding:7px 12px 7px 34px; min-width:132px; height:38px; box-sizing:border-box;
  background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235a6472' stroke-width='2' stroke-linecap='round'><rect x='3' y='5' width='18' height='16' rx='2'/><path d='M8 3v4M16 3v4M3 10h18'/></svg>") no-repeat 10px center / 16px 16px;
  border:1px solid #cfd6df; border-radius:8px; color:#1f2733; font-size:.95rem; font-weight:600;
  text-align:left; cursor:pointer;
}
.kdate-btn:hover{ border-color:#8fa3bb; background-color:#f7fafc; }
.kdate-btn:focus-visible{ outline:2px solid #2e6db4; outline-offset:1px; }
.kdate-btn.empty{ color:#98a2b0; font-weight:400; font-style:italic; }

/* panel */
.kdate-pop{
  z-index:120; width:328px; padding:12px; background:#fff;
  border:1px solid #d3dae3; border-radius:12px; box-shadow:0 14px 40px rgba(15,25,40,.22);
}
.kdate-pop.hidden{ display:none; }
.kdate-pop.inline{ position:static; box-shadow:none; margin-top:4px; }
/* obyčejný kalendář (data-styl="prosty") — menší, bez barev školky */
.kdate-pop.prosty{ width:292px; padding:10px; }
.kdate-pop.prosty .kdate-head{ gap:4px; }
.kdate-pop.prosty .kdate-head select{ height:32px; font-size:.85rem; min-width:0; padding-left:8px; }
.kdate-pop.prosty .kdate-head .kdate-y{ flex:0 0 90px; }
.kdate-pop.prosty .kdate-nav{ height:32px; width:30px; font-size:1.1rem; }
.kdate-pop.prosty .kdate-dow span{ font-size:.7rem; }
.kdate-pop.prosty .kdate-grid .kd{ height:32px; font-size:.85rem; font-weight:500; }
.kdate-pop.prosty .kdate-grid .kd.vik{ background:#fff; color:#a7aeb9; }

.kdate-head{ display:flex; align-items:center; gap:6px; margin-bottom:10px; }
.kdate-head select{
  width:auto; flex:1 1 auto; margin:0; height:36px; font-size:.95rem; font-weight:600;
  padding:4px 2rem 4px 10px; background-position:right .6rem center; color:#1f2733;
  --pico-form-element-spacing-vertical:0;
}
.kdate-head .kdate-y{ flex:0 0 92px; }
.kdate-nav{
  width:34px; height:36px; flex:none; margin:0; padding:0; font-size:1.3rem; line-height:1;
  background:#f1f5f9; color:#3a424e; border:1px solid #d3dae3; border-radius:8px; cursor:pointer;
}
.kdate-nav:hover{ background:#e2e9f1; }

.kdate-dow{ display:grid; grid-template-columns:repeat(7,1fr); gap:3px; margin-bottom:4px; }
.kdate-dow span{
  text-align:center; font-size:.72rem; font-weight:700; letter-spacing:.02em;
  color:#6b7583; padding:3px 0; border-radius:5px;
}
.kdate-dow span.po{ background:#C97F2C; color:#fff; }
.kdate-dow span.pa{ background:#2E8B87; color:#fff; }
.kdate-dow span.vik{ color:#aab2bd; }

.kdate-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:3px; }
.kdate-grid .kd{
  width:100%; height:40px; margin:0; padding:0; border:1px solid transparent; border-radius:8px;
  background:#fff; color:#1f2733; font-size:.95rem; font-weight:600; line-height:1; cursor:pointer;
}
.kdate-grid .kd:hover{ border-color:#2e6db4; }
.kdate-grid .kd:focus-visible{ outline:2px solid #2e6db4; outline-offset:1px; }
.kdate-grid .kd.po{ background:#F6E6D0; }            /* pondělí */
.kdate-grid .kd.pa{ background:#D8ECE8; }            /* pátek */
.kdate-grid .kd.vik{ background:#f4f6f9; color:#a7aeb9; font-weight:400; }
.kdate-grid .kd.sv{ background:#f6dbd6; color:#c0392b; }   /* státní svátek */
.kdate-grid .kd.pr{ background:#E7DEF4; color:#7A5AA6; }   /* prázdniny */
.kdate-grid .kd.out{ opacity:.38; }
.kdate-grid .kd.dnes{ box-shadow:inset 0 0 0 2px #2e6db4; }
.kdate-grid .kd.sel{ background:#2e6db4 !important; color:#fff !important; border-color:#25578f; }
.kdate-grid .kd.dis{ opacity:.28; cursor:not-allowed; }
.kdate-grid .kd.dis:hover{ border-color:transparent; }

.kdate-foot{ display:flex; align-items:center; gap:8px; margin-top:10px; padding-top:9px; border-top:1px solid #eef1f5; }
.kdate-foot button{
  width:auto; margin:0; padding:5px 12px; height:auto; font-size:.85rem; font-weight:600;
  background:#f1f5f9; color:#2e5e8c; border:1px solid #d3dae3; border-radius:7px; cursor:pointer;
}
.kdate-foot button:hover{ background:#e2e9f1; }
.kdate-foot .kdate-clear{ color:#8a6030; }
.kdate-legend{ margin-left:auto; font-size:.7rem; color:#8b939f; display:flex; align-items:center; gap:4px; }
.kdate-legend i{ width:10px; height:10px; border-radius:3px; display:inline-block; }
.kdate-legend i.sv{ background:#f6dbd6; border:1px solid #c0392b; }
.kdate-legend i.pr{ background:#E7DEF4; border:1px solid #7A5AA6; margin-left:6px; }

/* v dialogu je kalendář rovnou rozbalený a vycentrovaný */
.modal .kdate{ display:block; }
.modal .kdate-pop.inline{ width:auto; padding:10px 4px 4px; border:none; }
.modal .kdate-grid .kd{ height:42px; font-size:1rem; }

/* dvojice od–do vedle sebe (výpovědní lhůta, období) */
.kd-pair{ display:flex; gap:16px; flex-wrap:wrap; align-items:flex-end; }
.kd-pair > label{ display:flex; flex-direction:column; gap:5px; font-size:.8rem; color:#3a424e; margin:0; }

/* ================= VÝPOVĚDNÍ LHŮTA ================= */
.vyp-box{ background:#fff8ec; border:1px solid #f0dcb8; border-radius:10px; padding:12px 14px; margin:10px 0 0; }
.vyp-box legend, .vyp-box .vyp-h{ font-weight:700; color:#8a6030; }
.vyp-note{ margin:8px 0 0; font-size:.82rem; color:#7a6a52; line-height:1.55; }
.vyp-note b{ color:#5f4b2e; }
.vyp-star{ color:#c47f14; font-weight:700; cursor:help; margin-left:3px; }
td.datecell.vyp{ color:#8a6030; font-weight:700; }

/* dialog výpovědní lhůty — dva kalendáře vedle sebe */
.modal.vyp-modal{ max-width:760px; }
.modal .kd-pair{ gap:18px; }
.modal .kd-pair .kdate-pop.inline{ width:320px; padding:8px 2px 2px; }
.modal .kd-pair > label > span{ font-weight:600; color:#3a424e; }
.modal .chk + .muted.small{ margin-top:6px; }
.vyp-star{ color:#c47f14; }
td.datecell.vyp{ cursor:pointer; }

/* blok „Výpovědní lhůta" pod skupinou v měsíci dětí */
tr.vyp-hdr td{ background:#fff3e0; color:#8a6030; font-weight:700; font-size:.8rem; padding:5px 8px; }
tr.vyp-row td{ background:#fffaf1; }
tr.vyp-row td.nm{ color:#8a6030; font-style:italic; }

/* panel kalendáře plave nad stránkou (je v <body>, ne ve formuláři) */
.kdate-pop{ z-index:9999; }
.kdate-pop.inline{ z-index:auto; }

/* Popisek fieldsetu musí mít podbarvení přes celý text, ne jen kousek —
   <legend> jinak sedí na rámečku a prosvítá pod ním bílé pozadí stránky. */
.vyp-box{ position:relative; }
.form.compact fieldset.vyp-box legend, .vyp-box legend{
  background:#fff8ec; padding:2px 10px; margin-left:-4px; border-radius:8px; line-height:1.45;
}
.vyp-box .kd-pair{ margin-top:4px; }
.vyp-box .kd-pair .fld{ display:flex; flex-direction:column; gap:5px; }
.vyp-box .kd-pair .fld > span{ font-size:.8rem; font-weight:600; color:#8a6030; }

/* cedulka „neuložené změny" (kguard.js) */
.kguard-chip{
  position:fixed; right:18px; bottom:18px; z-index:9998;
  display:flex; flex-direction:column; gap:1px;
  background:#fff3e0; border:1px solid #e6c58f; border-left:5px solid #C97F2C;
  border-radius:10px; padding:9px 15px; box-shadow:0 8px 24px rgba(20,25,33,.18);
}
.kguard-chip b{ color:#8a5a00; font-size:.88rem; }
.kguard-chip span{ color:#a07a3c; font-size:.75rem; }
.kguard-chip.hidden{ display:none; }

/* Barvy pondělí/pátek platí i u budoucí změny rozvrhu dítěte a v rozvrhu učitele —
   ať se den v týdnu čte všude stejně (oranžová Po, tyrkysová Pá). */
#budouciBox .bd-day.po span{ color:#fff; background:#C97F2C; border-radius:6px; padding:2px 8px; display:inline-block; }
#budouciBox .bd-day.pa span{ color:#fff; background:#2E8B87; border-radius:6px; padding:2px 8px; display:inline-block; }
.rozvrh-grid.uc .rday.po{ background:#FBF1E4; border-color:#EBD7BC; }
.rozvrh-grid.uc .rday.pa{ background:#EAF4F2; border-color:#C6DFDB; }
.rozvrh-grid.uc .rday.po .dl{ color:#fff; background:#C97F2C; border-radius:6px; padding:2px 8px; width:auto; min-width:76px; text-align:center; }
.rozvrh-grid.uc .rday.pa .dl{ color:#fff; background:#2E8B87; border-radius:6px; padding:2px 8px; width:auto; min-width:76px; text-align:center; }

/* ===== dialog „neuložené změny" (kguard.js) ===== */
.kg-overlay{ position:fixed; inset:0; background:rgba(20,25,33,.5); display:flex; align-items:center; justify-content:center; z-index:10000; }
.kg-overlay.hidden{ display:none; }
.kg-box{
  background:#fff; border-radius:14px; padding:0; width:min(520px, calc(100vw - 32px));
  box-shadow:0 20px 60px rgba(10,15,25,.35); overflow:hidden;
}
.kg-head{ display:flex; align-items:center; gap:12px; padding:18px 22px 14px; border-bottom:1px solid #eef1f5; }
.kg-ico{ flex:none; width:38px; height:38px; border-radius:50%; background:#fff3e0; border:1px solid #e6c58f;
  display:flex; align-items:center; justify-content:center; font-size:1.15rem; color:#C97F2C; }
.kg-head h3{ margin:0; font-size:1.05rem; color:#1f2733; }
.kg-body{ padding:14px 22px 4px; }
.kg-body p{ margin:0 0 10px; color:#4a5360; font-size:.92rem; line-height:1.55; }
.kg-body .kg-kam{ color:#6b7583; font-size:.84rem; }
.kg-body .kg-kam b{ color:#2e5e8c; }
.kg-btns{ display:flex; gap:10px; flex-wrap:wrap; justify-content:flex-end; padding:14px 22px 20px; }
.kg-btns button{ width:auto; margin:0; padding:9px 18px; border-radius:9px; font-size:.92rem; font-weight:600; cursor:pointer; border:1px solid transparent; }
.kg-save{ background:#2e6db4; color:#fff; border-color:#25578f; }
.kg-save:hover{ background:#255c9c; }
.kg-save[disabled]{ opacity:.6; cursor:progress; }
.kg-discard{ background:#fff; color:#b3261e; border-color:#e8bdb8; }
.kg-discard:hover{ background:#fbeceb; }
.kg-cancel{ background:#f1f5f9; color:#3a424e; border-color:#d3dae3; margin-right:auto; }
.kg-cancel:hover{ background:#e2e9f1; }
.kg-err{ margin:0 22px 10px; padding:8px 12px; background:#fbe9e7; color:#b3261e; border-radius:8px; font-size:.85rem; }
.kg-err.hidden{ display:none; }

/* ===== dítě ve výpovědní lhůtě v měsíčním gridu =====
   Zůstává v gridu (admin chce vidět, že se za ně pořád platí), ale dny jsou jen k náhledu. */
.childgrid tr.vyp-row td.stick.nm{ background:#fffaf1; color:#8a6030; font-style:italic; }
.childgrid td.daycell.vypcell{ opacity:.85; }
.vyp-bub{
  display:inline-flex; align-items:center; gap:2px; justify-content:center;
  min-width:38px; padding:3px 7px; border-radius:11px;
  background:#F1E7DA; color:#8a6030; border:1px dashed #C9A87F;
  font-size:.82rem; font-weight:700; cursor:help;
}
.vyp-bub i{ font-style:normal; color:#c47f14; font-size:.72rem; }
.childgrid tr.vyp-row td.r{ background:#fffaf1; }

/* ===== rozpad částek v Hospodářském výsledku ===== */
.hvd-tbl tr.hvd-clik{ cursor:pointer; }
.hvd-tbl tr.hvd-clik:hover td{ background:#eef4fb; }
.hvd-tbl tr.hvd-clik:focus-visible{ outline:2px solid #2e6db4; outline-offset:-2px; }
.hvd-tbl tr.hvd-clik.open td{ background:#eef4fb; font-weight:600; }
.hvd-sip{ display:inline-block; width:14px; color:#2e6db4; font-size:.75rem; }
.hvd-detail.hidden{ display:none; }
.hvd-detail > td{ padding:0 !important; background:#fbfcfe; }
.hvd-kids{ width:100%; border-collapse:collapse; font-size:.84rem; }
.hvd-kids td{ padding:6px 10px; border-bottom:1px solid #eef1f5; vertical-align:top; }
.hvd-kids tr.vyp td{ background:#fffaf1; }
.hvd-kids .kd-nm{ font-weight:600; color:#2b3340; white-space:nowrap; }
.hvd-kids .kd-kat{ display:block; font-weight:400; font-size:.72rem; color:#98a2b0; }
.hvd-kids .kd-cast{ color:#4a5360; width:100%; }
.hvd-kids .hvd-cast{ line-height:1.5; }
.hvd-kids .hvd-cast.vyp{ color:#8a6030; }
.hvd-kids .hvd-cast.vyp::before{ content:'★ '; color:#c47f14; }
.hvd-kids .kd-kc{ white-space:nowrap; font-weight:700; color:#1f2733; }
.hvd-kids tfoot td{ background:#f1f5f9; font-weight:700; border-bottom:none; }

/* ================= DOTAZNÍKY PRO RODIČE ================= */
.dz-new{ width:auto; margin:0; padding:9px 16px; background:#3b82f6; color:#fff; border:none; border-radius:9px; font-weight:600; cursor:pointer; }
.dz-bar{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; background:#fff; border:1px solid #e5e9ef;
  border-radius:10px; padding:10px 14px; margin:10px 0 6px; }
.dz-bar .btn-ghost{ margin:0; }
.dz-ok{ color:#3d6b1f; font-weight:600; font-size:.86rem; }
.dz-ok code{ background:#eef2f7; padding:2px 7px; border-radius:5px; font-size:.8rem; }
.dz-warn{ color:#8a5a00; font-weight:600; font-size:.86rem; }
.dz-h2{ font-size:1.05rem; margin:22px 0 8px; }
.dz-tbl{ width:100%; border-collapse:collapse; font-size:.9rem; background:#fff; border:1px solid #e5e9ef; border-radius:10px; overflow:hidden; }
.dz-tbl th{ text-align:left; background:#f4f7fa; color:#5a6472; font-size:.78rem; font-weight:700; padding:8px 10px; border-bottom:1px solid #e5e9ef; }
.dz-tbl td{ padding:9px 10px; border-bottom:1px solid #f0f3f7; vertical-align:middle; }
.dz-tbl td.ctr{ text-align:center; }
.dz-tbl tr.dz-new-row td{ background:#f3f8ff; }
.dz-tbl tr.dz-cek td{ background:#fbfcfe; }
.dz-stav{ font-size:.76rem; font-weight:700; padding:3px 9px; border-radius:11px; white-space:nowrap; }
.dz-stav.nova{ background:#dceafd; color:#1c4f8f; }
.dz-stav.hotovo{ background:#e2efda; color:#3d6b1f; }
.dz-stav.ceka{ background:#fff3e0; color:#8a5a00; }
.dz-akce{ white-space:nowrap; } .dz-akce form{ display:inline; }
.dz-akce .btn-ghost{ margin-left:4px; }
/* pozvánky mají dlouhé popisky ("Kopírovat zprávu do mailu"), na jeden řádek se nevejdou —
   obě kopírovací tlačítka proto stojí pod sebou a Zrušit vedle nich */
.dz-akce{ display:flex; gap:7px; align-items:center; justify-content:flex-end; }
.dz-akce .btn-ghost{ margin:0; }
.dz-kop{ display:flex; flex-direction:column; gap:5px; align-items:stretch; }
.dz-kop .btn-ghost{ width:100%; justify-content:center; text-align:center; }
.f-lbl{ display:block; font-size:.82rem; font-weight:600; color:#44506a; margin-bottom:12px; }
.f-lbl input, .f-lbl select{ width:100%; margin-top:5px; }

/* údaje z dotazníku na kartě dítěte */
.dot-box{ background:#f7fbfd; border:1px solid #d9e6ef; border-radius:11px; padding:14px 16px; margin:10px 0; }
.dot-box > .dh{ display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.dot-box > .dh b{ font-size:.95rem; color:#1f4f6d; }
.dot-box > .dh .kdy{ margin-left:auto; font-size:.76rem; color:#7b8697; }
.dot-sek{ font-size:.74rem; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:#6b7583;
  background:#eef4f8; padding:4px 10px; border-radius:6px; margin:12px 0 4px; }
.dot-sek.zdrav{ background:#fbe9e7; color:#a03428; }
.dot-tbl{ width:100%; border-collapse:collapse; font-size:.87rem; }
.dot-tbl td{ padding:5px 10px; border-bottom:1px solid #eef2f6; vertical-align:top; }
.dot-tbl td:first-child{ color:#7b8697; width:38%; }
.dot-tbl td.v{ font-weight:600; color:#25303f; }
.dot-tbl td.v.prazdno{ font-weight:400; color:#b6bec9; font-style:italic; }
.dot-poz{ color:#b3261e; }

/* nástup a adaptace na kartě dítěte */
fieldset.nast-box{ background:#f3f8ff; border-color:#c9ddf5; }
fieldset.nast-box legend{ background:#f3f8ff; padding:2px 10px; border-radius:8px; color:#1c4f8f; }
.kd-pair .fld > span{ font-size:.8rem; font-weight:600; color:#44506a; }
label.pozdeji{ display:flex; align-items:center; gap:7px; margin:7px 0 0; font-size:.78rem;
  font-weight:400; color:#6b7583; cursor:pointer; }
label.pozdeji input{ width:16px; height:16px; margin:0; flex:none; accent-color:#3d6f8e; }
.kdate.vypnuto .kdate-btn{ opacity:.45; background:#f4f6f9; border-style:dashed; }
.hint-nast{ font-size:.78rem; color:#7b8697; margin:10px 0 0; line-height:1.5; }

/* varování o workers.dev + nastavení veřejné adresy */
.dz-varovani{ background:#fbe9e7; border:1px solid #f0c4bd; border-left:5px solid #b3261e;
  border-radius:11px; padding:13px 17px; margin:10px 0; font-size:.88rem; color:#8a2b21; line-height:1.55; }
.dz-varovani b{ color:#6d1e17; }
.dz-varovani ul{ margin:8px 0; padding-left:18px; } .dz-varovani li{ margin-bottom:4px; }
.dz-varovani p{ margin:8px 0 0; }
.dz-varovani code{ background:#fff; padding:1px 6px; border-radius:4px; }
.dz-adresa{ background:#fff; border:1px solid #e5e9ef; border-radius:10px; padding:10px 14px; margin:8px 0; }
.dz-adresa summary{ cursor:pointer; font-weight:600; font-size:.9rem; color:#2b3340; }
.dz-adr-radek{ display:flex; gap:8px; margin:8px 0 0; }
.dz-adr-radek input{ flex:1; margin:0; }
.dz-adr-radek button{ margin:0; width:auto; }
.mail-tip{ background:#fff8ec; border:1px solid #f0dcb8; border-left:4px solid #C97F2C; border-radius:9px;
  padding:10px 13px; margin:0 0 8px; font-size:.8rem; color:#7a6a52; line-height:1.5; }
.mail-tip b{ color:#5f4b2e; } .mail-tip code{ background:#fff; padding:1px 5px; border-radius:4px; }
.dz-kroky{ margin:10px 0 0; padding-left:20px; font-size:.87rem; line-height:1.7; }
.dz-kroky li{ margin-bottom:9px; }
.dz-kroky code{ background:#eef2f7; padding:1px 6px; border-radius:4px; font-size:.82rem; }
.dz-kroky .btn-ghost{ margin-left:6px; }

/* tlačítka na generování evidenčního listu a smlouvy (karta dítěte) */
fieldset.dok-box{ background:#fbf7f2; border-color:#ead9c4; }
fieldset.dok-box legend{ background:#fbf7f2; padding:2px 10px; border-radius:8px; color:#8a5a00; }
.dok-radek{ display:flex; gap:8px; flex-wrap:wrap; }
.dok-radek .btn-ghost{ margin:0; width:auto; text-decoration:none; }

/* bublina s počtem novinek v menu (dotazníky, dovolené) */
.side nav a{ display:flex; align-items:center; gap:8px; }
.nav-bad{ margin-left:auto; background:#e8613a; color:#fff; border-radius:10px;
  padding:1px 8px; font-size:.72rem; font-weight:700; line-height:1.5; }
.side nav a.on .nav-bad{ background:#fff; color:#2b6cb0; }

/* archiv zpracovaných dotazníků — sbalený pod hlavním seznamem */
.dz-archiv{ margin:16px 0 0; background:#fff; border:1px solid #e5e9ef; border-radius:10px; padding:10px 14px; }
.dz-archiv summary{ cursor:pointer; font-weight:600; font-size:.9rem; color:#2b3340; }
.dz-archiv[data-prazdny="1"] summary{ color:#8b939f; font-weight:500; }
.dov-badge.sedy{ background:#8b939f; }

/* technické nastavení dotazníků sbalené do jednoho bloku */
.dz-pokr{ background:#fff; border:1px solid #e5e9ef; border-radius:10px; padding:10px 14px; margin:10px 0 6px; }
.dz-pokr > summary{ cursor:pointer; font-weight:600; font-size:.9rem; color:#2b3340; }
.dz-pokr[open] > summary{ margin-bottom:10px; }
.dz-pokr .dz-bar{ margin-top:0; }

/* volba data na smlouvě (karta dítěte) */
.dok-datum{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:0 0 12px; }
.dok-datum .dl{ font-size:.82rem; font-weight:600; color:#44506a; }
.dok-datum.vypnuto .kdate{ opacity:.4; pointer-events:none; }

/* telefonní seznam pro učitele */
.tel-list{ display:flex; flex-direction:column; gap:6px; margin:0 0 18px; }
.tel-dite{ background:#fff; border:1px solid #e5e9ef; border-radius:10px; padding:10px 14px; }
.tel-dite summary{ cursor:pointer; display:flex; align-items:center; gap:10px; }
.tel-dite .tel-jm{ font-weight:600; font-size:.98rem; }
.tel-dite summary .muted{ margin-left:auto; }
.tel-dite.prazdne{ background:#fafbfc; }
.tel-dite.prazdne .tel-jm{ color:#7b8697; font-weight:500; }
.tel-kont{ list-style:none; margin:10px 0 2px; padding:0; display:flex; flex-direction:column; gap:10px; }
.tel-kont li{ border-top:1px solid #f0f3f7; padding-top:9px; }
.tel-kdo{ font-size:.92rem; margin-bottom:3px; }
.tel-cislo{ display:inline-block; font-size:1.02rem; font-weight:600; text-decoration:none;
  background:#eef6ff; color:#1c4f8f; border:1px solid #cfe2f7; border-radius:9px; padding:7px 13px; }
.tel-cislo:hover{ background:#e2eefc; }
.tel-mail{ display:inline-block; margin-left:10px; font-size:.85rem; color:#5a6472; }

/* hvězdička u učitele: nápověda se ukáže hned při najetí, ne po vteřině jako systémový popisek.
   Legenda pod tabulkou byla matoucí — vysvětlovala hvězdičku u úvazku, ale oko ji spojilo
   s výraznější ★ u jmen. Vysvětlení teď visí na tom konkrétním znaku. */
.uc-sheet .fx-star{ color:#b5651d; font-weight:700; margin-left:4px; }
.uc-sheet .fx-star .fx-tip{ white-space:normal; width:220px; text-align:left; font-weight:400; }
.uc-sheet .fx-star.hvezd-soucet{ margin-left:2px; }
/* Buňky mají `overflow:hidden` (ořez dlouhých jmen), což bublinu uřízlo — z tabulky
   koukal jen černý pruh. Těmto dvěma buňkám se ořez vypíná, stejně jako u seznamu dětí. */
table.uc-sheet td.nm, table.uc-sheet td.numcell{ overflow:visible; }
/* U prvního řádku by bublina nad hvězdičkou zalezla pod hlavičku tabulky — tam ji ukážeme pod. */
.uc-sheet tbody tr:first-child .fx-star .fx-tip,
.uc-sheet tr.band + tr .fx-star .fx-tip{ bottom:auto; top:145%; }
.uc-sheet tbody tr:first-child .fx-star .fx-tip::after,
.uc-sheet tr.band + tr .fx-star .fx-tip::after{ top:auto; bottom:100%; border-top-color:transparent; border-bottom-color:#25303f; }

/* ---- dialog fixního nákladu: čitelnější rozvržení ----
   Inline kalendář (v dialogu musí být inline, popover by zalezl pod <dialog>) je přes 300 px
   široký a v řádku s částkou rozbil celý dialog — částka i tlačítko odletěly mimo. Teď je
   schovaný pod rozbalovátkem, které v hlavičce ukazuje vybrané datum. */
.det-uvod{ margin:-4px 0 12px; line-height:1.55; }
.det-hint{ margin:0 0 10px; line-height:1.5; }
.amt-grid{ display:flex; flex-direction:column; gap:10px; }
.amt-grid .fld.sm{ width:100%; }
.amt-grid .fld.sm input{ width:100%; }
.dat-roz{ border:1px solid #cfd6e0; border-radius:8px; background:#fff; }
.dat-roz > summary{ display:flex; align-items:center; gap:8px; cursor:pointer; padding:9px 11px;
  font-size:.85rem; color:#556; list-style:none; }
.dat-roz > summary::-webkit-details-marker{ display:none; }
.dat-roz .dr-l{ flex:none; }
.dat-roz b{ color:#25303f; font-size:.95rem; }
.dat-roz b.nevybrano{ color:#98a2b0; font-weight:500; font-style:italic; }
.dat-roz .dr-a{ margin-left:auto; color:#3d6f8e; font-size:.8rem; text-decoration:underline; }
.dat-roz[open] > summary{ border-bottom:1px solid #eef1f5; }
.dat-roz .dmy{ padding:8px 6px 6px; display:flex; justify-content:center; }
/* Kalendář uvnitř rozbalovátka už má rámeček od něj — vlastní rámeček, stín a odsazení
   vypínáme, jinak to vypadá jako prázdné pole nad kalendářem. */
.dat-roz .kdate-pop.inline{ box-shadow:none; margin:0; border:none; padding:2px 0 0; width:auto; }
/* Skryté pole kalendáře nesmí zdědit `display:block` z .mini-card .fld input — vyrobilo by
   uprostřed dialogu prázdný orámovaný obdélník. */
.mini-card .fld input[type=hidden], .mini-card input[type=hidden]{ display:none !important; }
.amt-btn{ width:100%; margin:12px 0 0; }
/* Dialog bývá vyšší než okno — nadpis i úvodní věta pak ujedou mimo obrazovku.
   Posouvá se proto uvnitř sebe, ne celá stránka. */
.mini-card.wide{ width:500px; max-height:88vh; overflow-y:auto; }

/* ---- dialog fixního nákladu: zhutnění ----
   Dialog dědil velké formulářové prvky z Pico (vstupy ~48 px, volby jako velké boxy pod sebou),
   takže se nevešel na obrazovku a působil nepřehledně. Tady se zmenšuje jen uvnitř dialogu. */
.mini-card.wide{ padding:16px 18px; }
.mini-card.wide h3{ font-size:1rem; margin:0 0 6px; }
.mini-card.wide .det-uvod{ margin:0 0 12px; font-size:.8rem; line-height:1.45; }
.mini-card.wide .det-hint{ margin:0 0 8px; font-size:.78rem; line-height:1.45; }
.mini-card.wide .fld{ font-size:.78rem; margin:0 0 4px; }
.mini-card.wide .fld input{ margin-top:3px; padding:6px 9px; font-size:.9rem; height:34px; box-sizing:border-box; }
.mini-card.wide .det-sec{ margin:10px 0 0; padding-top:8px; }
.mini-card.wide .det-lbl{ font-size:.72rem; margin-bottom:6px; }

/* tři volby vedle sebe místo tří velkých boxů pod sebou */
.mini-card.wide .alok-opts{ flex-direction:row; gap:6px; margin:0 0 8px; }
.mini-card.wide .alok-opts .opt{ flex:1 1 0; min-width:0; justify-content:center; gap:6px;
  padding:6px 6px; font-size:.78rem; text-align:center; white-space:nowrap; }
/* vybraná volba je vidět na první pohled, ne jen podle tečky */
.mini-card.wide .alok-opts .opt:has(input:checked){ border-color:#3b82f6; background:#eef5ff; font-weight:600; }
.mini-card.wide .alok-opts .opt input{ width:14px; height:14px; }

.mini-card.wide .split-box{ padding-top:8px; }
.mini-card.wide .split-bar{ height:16px; border-radius:6px; }
.mini-card.wide .split-ctl{ margin-top:6px; font-size:.8rem; }
.mini-card.wide .split-ctl button{ width:22px; height:22px; }

.mini-card.wide .dat-roz > summary{ padding:7px 10px; font-size:.8rem; }
.mini-card.wide .dat-roz b{ font-size:.88rem; }
.mini-card.wide .amt-grid{ gap:8px; }
.mini-card.wide .amt-btn{ margin:10px 0 0; padding:9px 16px; font-size:.9rem; }
.mini-card.wide .hist-tbl{ font-size:.78rem; }
.mini-card.wide .mini-btns{ margin-top:12px; }
.mini-card.wide .mini-btns button{ padding:7px 14px; font-size:.85rem; }
/* kalendář v dialogu nemusí být tak rozmáchlý */
.mini-card.wide .kdate-pop.inline{ width:auto; }
.mini-card.wide .kdate-grid .kd{ height:30px; font-size:.82rem; }
.mini-card.wide .kdate-head select{ height:30px; font-size:.85rem; }
.mini-card.wide .kdate-dow span{ font-size:.7rem; }

/* detail fixního nákladu: aktuální cena + tlačítko na naplánování změny */
.cena-teď{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:8px; }
.cena-teď b{ font-size:1.05rem; color:#25303f; }
.cena-teď .muted{ margin-left:6px; }
.cena-teď .btn-ghost{ margin:0; width:auto; padding:6px 12px; font-size:.8rem; }
.cena-nyni{ background:#f4f7fa; border:1px solid #e2e8f0; border-radius:8px;
  padding:8px 11px; margin:0 0 12px; font-size:.85rem; color:#41566b; }
.cena-nyni b{ color:#25303f; }
.mini-card .cena-nyni + .amt-grid .fld{ margin-top:0; }

/* dialog změny ceny je o kus širší — v 330 px se „Platí od / vyber datum" lámalo na dva řádky */
#cenaDlg .mini-card{ width:390px; }
#cenaDlg .dat-roz > summary{ padding:8px 11px; font-size:.82rem; }
#cenaDlg .fld{ font-size:.8rem; }
#cenaDlg .fld input{ height:36px; padding:6px 9px; font-size:.92rem; }
#cenaDlg .mini-btns button{ padding:8px 16px; font-size:.88rem; }

/* fixní náklady: klikatelný je jen název, ostatní sloupce jsou jen ke čtení */
.fix-tbl .fx-castka{ font-weight:600; }
.fix-tbl tr.fx-konci td{ background:#fffaf1; }
.fx-star.konec{ color:#c0392b; }
.det-zrusit{ display:flex; align-items:center; gap:10px; }
.det-zrusit .btn-ghost{ margin:0; width:auto; padding:6px 12px; font-size:.8rem; }
.mini-card.wide .mini-btns{ border-top:1px solid #eef1f5; padding-top:10px; }

/* dialog zrušení nákladu — stejně kompaktní jako změna ceny */
#endDlg .mini-card{ width:390px; max-height:88vh; overflow-y:auto; }
#endDlg .det-uvod{ font-size:.8rem; line-height:1.45; margin:0 0 10px; }
#endDlg .dat-roz > summary{ padding:8px 11px; font-size:.82rem; }
#endDlg .kdate-pop.inline{ border:none; box-shadow:none; padding:2px 0 0; margin:0; width:auto; }
#endDlg .kdate-grid .kd{ height:30px; font-size:.82rem; }
#endDlg .kdate-head select{ height:30px; font-size:.85rem; }
.det-zrusit.zruseno{ background:#fff8ec; border:1px solid #f0dcb8; border-radius:8px; padding:8px 11px; font-size:.82rem; color:#7a6a52; }
.det-zrusit.zruseno b{ color:#5f4b2e; }
.det-zrusit.zruseno .btn-ghost{ margin-left:auto; }

/* změna hesla (obrazovka Data) */
.pwd-form{ display:flex; align-items:flex-end; gap:12px; flex-wrap:wrap; background:#fff;
  border:1px solid #e5e9ef; border-radius:10px; padding:12px 14px; }
.pwd-form .fld{ font-size:.8rem; color:#44506a; display:block; }
.pwd-form .fld input{ display:block; margin-top:4px; width:180px; height:36px; padding:6px 9px;
  border:1px solid #cfd6e0; border-radius:8px; }
.pwd-form .btn-ghost{ margin:0; width:auto; }
/* dítě, které ještě nenastoupilo (v seznamu je 14 dní předem) */
.tel-dite .tel-nast{ font-size:.76rem; font-weight:600; color:#8a5a00; background:#fff6e0;
  border:1px solid #f0dcae; border-radius:999px; padding:1px 8px; margin-left:6px; white-space:nowrap; }
/* odkazy na mzdový podklad ve výkazu učitelů */
.vyk-pick .vyk-dok{ margin-left:14px; display:inline-flex; gap:6px; }

/* rozbalovací skupina v levém menu (agenda učitelů) */
.side nav .nav-sk{ margin:0; }
.side nav .nav-sk > summary{ display:flex; align-items:center; gap:8px; cursor:pointer; list-style:none;
  padding:9px 14px; border-radius:8px; color:#c7cedb; font-weight:600; }
.side nav .nav-sk > summary::-webkit-details-marker{ display:none; }
.side nav .nav-sk > summary::after{ content:'▸'; margin-left:auto; opacity:.55; font-size:.8em; }
.side nav .nav-sk[open] > summary::after{ content:'▾'; }
.side nav .nav-sk > summary:hover{ background:rgba(255,255,255,.06); color:#fff; }
.side nav .nav-sk > summary.on{ color:#fff; }
.side nav .nav-sk > a{ padding-left:30px; font-size:.94rem; }
/* 30. 10. 2026 (Petr): skupiny v menu musí být na první pohled skupiny.
   Šipka vlevo (kreslená, ne znak — Pico do summary přidával vlastní ikonu a vznikal z toho
   nečitelný shluk), podpoložky odsazené na svislé lince pod nadpisem skupiny. */
.side nav .nav-sk > summary{ padding:9px 12px 9px 10px; gap:10px; }
.side nav .nav-sk > summary::after{ content:none !important; display:none !important; }
.side nav .nav-sk > summary::before{ content:''; flex:none; width:7px; height:7px; margin:0 1px 0 2px;
  border-right:2px solid #8ea0b5; border-bottom:2px solid #8ea0b5; transform:rotate(-45deg); transition:transform .15s; }
.side nav .nav-sk[open] > summary::before{ transform:rotate(45deg); margin-top:-3px; }
.side nav .nav-sk > summary.on::before{ border-color:#fff; }
.side nav .nav-sub{ display:flex; flex-direction:column; gap:1px; margin:0 0 6px 24px; padding-left:8px; border-left:2px solid #3a4658; }
/* samostatné položky mají text zarovnaný s nadpisy skupin (místo šipky je mezera) */
.side nav > a{ padding-left:30px; }
.side nav .nav-sub > a{ padding:7px 10px; font-size:.88rem; color:#b5c0ce; }
.side nav .nav-sub > a.on{ color:#fff; }
.uv-h2{ font-size:1.05rem; margin:26px 0 4px; }

/* legenda pod tabulkou — sbalená, ať nezabírá místo nad daty */
details.legenda{ margin:22px 0 8px; }
details.legenda > summary{ cursor:pointer; color:#6b7686; font-size:.9rem; padding:4px 0; list-style:none;
  display:inline-flex; align-items:center; gap:6px; }
details.legenda > summary::-webkit-details-marker{ display:none; }
details.legenda > summary::before{ content:'▸'; opacity:.6; }
details.legenda[open] > summary::before{ content:'▾'; }
details.legenda > summary:hover{ color:#25303f; }
details.legenda p{ margin-top:4px; }

/* odkaz na osobní stránku učitele v seznamu učitelů */
.stranka-x{ background:none; border:none; cursor:pointer; font-size:1rem; padding:0 2px; line-height:1;
  opacity:.55; transition:opacity .15s; }
.stranka-x:hover{ opacity:1; }

/* Seznam učitelů — šířky sloupců.
   Tabulka má `table-layout:fixed`, takže šířku sloupce určuje PRVNÍ řádek s buňkami
   (hlavička skupiny), ne buňky v těle. Proto se nastavuje tady a ne u .shiftcell.
   Dny se zúžily o ~3 %, aby se „Rozvrh h/týd" i datum ukončení vešly na jeden řádek. */
.ucitel-sheet tr.grp-hdr td:nth-child(n+6):nth-child(-n+10){ width:7%; }   /* Po–Pá */
.ucitel-sheet tr.grp-hdr td:nth-child(11){ width:52px; }                   /* h/týd */
.ucitel-sheet tr.grp-hdr td:nth-child(12){ width:70px; }                   /* Konec */
.ucitel-sheet tr.grp-hdr td:nth-child(13){ width:76px; }                   /* Stranka ucitele */
.ucitel-sheet tr.grp-hdr td:nth-child(14){ width:30px; }                   /* ✕ */
/* Ořezávání textu tečkami platilo i na hlavičku, takže se usekávaly samotné popisky
   („Roz… h/týd", „Ukon…", „w…"). V hlavičce se nic ořezávat nesmí. */
.ucitel-sheet tr.grp-hdr td{ overflow:visible; text-overflow:clip; font-size:.64rem; }
.ucitel-sheet td.shiftcell{ padding:2px 1px; font-size:.68rem; }
.ucitel-sheet td.uk-datecell, .ucitel-sheet td.ctr.uk-datecell{ white-space:nowrap; overflow:visible; }
/* `table.uc-sheet td` má overflow:hidden + ellipsis — proto se datum ukončení usekávalo
   na „31.8.…" místo aby se zobrazilo celé. */
.ucitel-sheet tr.grp-hdr td{ word-break:keep-all; overflow-wrap:normal; }
/* Popisek se láme na dva řádky (Stránka / učitele) — zalomení se tu nesmí bránit. */
.www-h{ white-space:normal; word-break:normal; line-height:1.1; padding-left:4px; padding-right:4px; }

/* nabídka u odkazu na stránku učitele */
.str-menu{ position:absolute; z-index:200; background:#fff; border:1px solid #dfe3ea; border-radius:10px;
  box-shadow:0 10px 28px rgba(20,32,55,.16); padding:5px; min-width:212px; }
.str-menu .str-pol{ display:block; width:100%; text-align:left; background:none; border:none; cursor:pointer;
  font:inherit; font-size:.84rem; color:#25303f; padding:8px 11px; border-radius:7px; margin:0; }
.str-menu .str-pol:hover{ background:#f2f6fb; }

/* dialog „Poslat výkaz hodin ke schválení" */
.vyk-modal{ max-width:560px; width:min(560px,94vw); max-height:86vh; display:flex; flex-direction:column; }
.vd-nadpis{ font-weight:600; font-size:1.05rem; margin:0 0 8px; }
.vd-pod{ margin:0 0 8px; }
.vd-telo{ overflow:auto; flex:1; }
.vd-hl{ display:flex; align-items:center; gap:8px; margin:0 0 8px; flex-wrap:wrap; }
.vd-seznam{ display:flex; flex-direction:column; gap:2px; }
.vd-u{ display:flex; align-items:center; gap:8px; padding:5px 8px; border-radius:8px; font-size:.9rem; }
.vd-u:hover{ background:#f4f7fb; }
.vd-u input{ width:auto; margin:0; flex:none; appearance:auto; -webkit-appearance:auto; }
.vd-jm{ font-weight:600; flex:1; }
.vd-znak{ font-size:.72rem; font-weight:600; border-radius:999px; padding:1px 8px; background:#eef1f6; color:#5a6272; }
.vd-znak.ceka{ background:#fff6e0; color:#8a5a00; }
.vd-znak.ok{ background:#eaf6e2; color:#4a7a22; }
.vd-znak.pripo{ background:#fdeceb; color:#a33; }
.vk-stav.bez{ color:#8b939f; font-style:italic; }
.vk-stahnout{ margin-left:auto; }

/* dotaz s třemi volbami (Ano / Ne / Storno) u přijetí připomínky */
.vd-overlay{ position:fixed; inset:0; background:rgba(20,30,45,.42); display:flex;
  align-items:center; justify-content:center; z-index:300; }
.vd-box{ background:#fff; border-radius:14px; padding:20px 22px; max-width:440px; width:92vw;
  box-shadow:0 20px 60px rgba(20,32,55,.28); }
.vd-otazka{ font-weight:600; font-size:1.05rem; margin:0 0 8px; }
.vd-vysvetleni{ color:#5a6272; font-size:.9rem; margin:0 0 16px; line-height:1.5; }
.vd-btny{ display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap; }
.vd-btny button{ margin:0; }

/* Testovací instance napojená na cizí Worker — smí se jen dívat. */
.dov-jenctu{ background:#fff6e0; border:1px solid #f0dca8; border-radius:10px;
  padding:9px 13px; margin:8px 0 0; color:#6b5a2a; }

/* Odkud se žádost vzala — z webu (od učitelky) nebo ji zadal admin ručně. */
.dov-puvod{ font-size:.7rem; font-weight:600; border-radius:999px; padding:1px 7px;
  background:#e7f0fb; color:#2c5f9e; margin-left:5px; vertical-align:middle; }
.dov-puvod.rucne{ background:#eef1f6; color:#5a6272; }

/* Žádosti o volno: poznámka může být dlouhá věta (třeba „Požádala přes web…"), a protože
   .fix-tbl roste s obsahem (width:max-content), utekla tabulka mimo obrazovku i s tlačítky
   Schválit/Zamítnout. Poznámka se teď zalamuje a tabulka se vejde; úzké okno ji odscrolluje. */
.tbl-scroll{ overflow-x:auto; max-width:100%; }
.dov-tbl{ width:100%; min-width:600px; table-layout:auto; }
.dov-tbl td.pozn{ max-width:340px; white-space:normal; overflow-wrap:anywhere; }
.dov-tbl td.ctr{ white-space:nowrap; }

/* Plánované změny směn: sloupec s rozvrhem je dlouhý text, takže tabulka přerůstala obrazovku. */
.zm-tbl{ width:100%; min-width:640px; table-layout:auto; }
.zm-tbl td.muted.small{ max-width:320px; white-space:normal; overflow-wrap:anywhere; }
.zm-tbl td.zm-akce{ white-space:nowrap; }
.zm-tbl td.zm-akce form.inline{ display:inline; margin:0; }
.zm-tbl .zm-open{ color:#1f5fae; text-decoration:none; border-bottom:1px dotted #9bb6d8; }
.zm-tbl .zm-open:hover{ border-bottom-style:solid; }

/* Náhled ostré verze — pruh je vidět na každé obrazovce, ať se z něj dá vždycky vystoupit. */
.nahled-pas{ background:#e7f0fb; border:1px solid #c6dcf5; border-radius:10px;
  padding:9px 14px; margin:0 0 14px; color:#23527f; font-size:.9rem; }
.nahled-pas a{ margin-left:6px; font-weight:600; }

/* Prodloužený provoz do 17:00 — štítek u jména v docházce a přepínač na kartě dítěte.
   Přibylo 6. 9. 2026 spolu s paušálem: rodič si může sjednat měsíční paušál místo
   doplatku za každý den a admin musí na první pohled vidět, jak to které dítě má. */
.z17-badge{ margin-left:8px; border:none; border-radius:999px; padding:1px 8px; font-size:.68rem;
  font-weight:600; cursor:pointer; background:#eef1f6; color:#41506b; vertical-align:1px; }
.z17-badge:hover{ filter:brightness(.96); }
.z17-badge.pausal{ background:#DDF0CE; color:#27500A; }
.z17-box{ margin:10px 0 0; }
.z17-lbl{ display:block; font-size:.82rem; color:#5f5e5a; margin:0 0 4px; }
.bd-z17 select{ min-width:132px; }
.cenik-nesed{ background:#fff6e0; border:1px solid #f0dca8; border-radius:10px;
  padding:10px 13px; margin:0 0 12px; font-size:.86rem; color:#6b5a2a; }
/* Dítě má v rozvrhu 17, ale způsob úhrady nikdo nezvolil — u dětí zavedených před 6. 9. 2026
   to tak je u všech. Účtuje se po dnech (jako dřív), ale admin to musí vidět a moct doplnit. */
.z17-badge.chybi{ background:#FAEEDA; color:#854F0B; }
/* Den, ke kterému admin nic nezanesl. Ve výkazu se ukazuje schválně, aby ho učitelka mohla
   doplnit (nahlásil admin 6. 9. 2026) — ztlumeně, ať se neplete s odpracovanými dny. */
.vt-prazdny td{ color:#9aa1ab; background:#fbfcfd; }
.vt-prazdny .vt-btn{ opacity:.85; }
/* Volba druhu času mimo děti uvnitř dialogu (administrativa / hospodyně). */
.adm-druh{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin:2px 0 10px; font-size:.88rem; }
.adm-druh label{ display:flex; align-items:center; gap:6px; cursor:pointer; }
/* Tlačítko času mimo děti nese od 7. 9. 2026 delší popisek („adm/h" místo „adm") a vylézalo
   z rozvrhového boxu. Nesmí tlačit do šířky ani se zalamovat. */
.rozvrh-grid.uc .odo{ min-width:0; }
.rozvrh-grid.uc .odo select.tsel{ flex:0 1 auto; min-width:0; }
.adm-wrap{ flex:0 0 auto; }
.adm-ico{ white-space:nowrap; }
/* Štítek času mimo děti přímo v buňce měsíční docházky. Doplněno 7. 9. 2026: samotné žluté
   podbarvení se pletlo s lékařem a bublina s vysvětlením naskakovala pomalu. */
.adm-znak{ display:block; font-size:.56rem; line-height:1.25; font-weight:700; letter-spacing:.02em;
  color:#6b5600; background:#F7E9B0; border:1px solid #E0C766; border-radius:4px;
  padding:0 3px; margin:0 0 2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.adm-leg + .adm-znak, p .adm-znak{ display:inline-block; margin:0 2px; }
/* Tlačítko času mimo děti zůstává vedle časů směny; delší popisek se láme na dva řádky
   („adm" a pod ním „hosp"), aby netlačil do šířky a nevylézal z boxu. */
.adm-ico{ line-height:1.05; padding:1px 4px; text-align:center; }
/* Úsek času mimo děti v děleném dni (administrativa / hospodyně). Odlišený od absencí —
   je to odpracovaný čas, ne volno. */
.usek.u-adm{ background:#F7E9B0; color:#6b5600; border-color:#E0C766; }
.ugrid select.uod option.mimoopt{ background:#F7E9B0; color:#6b5600; font-weight:700; }

/* Zpět (Cmd+Z) ve formulářích: vrácené pole na okamžik blikne (kundo.js, 30. 10. 2026) */
.ku-vraceno{ outline:2px solid #f0b429 !important; outline-offset:2px; transition:outline-color .6s; }
